{"id":1904,"date":"2019-08-10T19:11:02","date_gmt":"2019-08-11T00:11:02","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/edelros\/?p=1904"},"modified":"2020-09-26T15:00:57","modified_gmt":"2020-09-26T20:00:57","slug":"sensor-a-bateria-temp-hum-archivo-ino","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/girni\/sensor-a-bateria-temp-hum-archivo-ino\/","title":{"rendered":"4.4 IoT WiFi Sensor a Bater\u00eda\/Temp-Hum: Archivo.ino"},"content":{"rendered":"<h4>1. Instrucciones en Arduino IDE<\/h4>\n<p>El modelo ESP-07 dispone de suficientes pines que permiten incorporar las funciones de programaci\u00f3n usando pines de una sola funci\u00f3n. Por lo que se facilita el dise\u00f1o.<\/p>\n<h5>Modo Ahorro de Energ\u00eda<\/h5>\n<p>Las instrucciones se desarrollan en la parte de configuraci\u00f3n Setup() en lugar del lazo, Loop(), debido a que se utiliza el modo de ahorro de energ\u00eda (deep-sleep).<\/p>\n<h4>2 Funciones para sensores y actuadores<\/h4>\n<p>Se han separado en funciones las instrucciones para el sensor de bater\u00eda y temperatura-humedad.<\/p>\n<pre>\/* Sensor de Temperatura y Humedad DHT11\nSensor de Estado de Bater\u00eda\nFuncionamiento con Bater\u00eda\nPara usar, se debe actualizar las secciones de:\n - WIFI datos para conexi\u00f3n a Router\n - MQTT: Servidor MQTT \n - MQTT: identificador de dispositivo y topics\nSe est\u00e1 usando ESP8266-07, pero para programar,\nusar Placa:ESP8285\n*\/\n#include &lt;ESP8266WiFi.h&gt;\n#include &lt;PubSubClient.h&gt;\n#include &lt;dht.h&gt;\n\n\/\/ WIFI datos para conexi\u00f3n a Router\nconst PROGMEM char* ssid = \"iotirni19\";\nconst PROGMEM char* password = \"anera2018\";\n\n\/\/ MQTT: Servidor MQTT \nconst PROGMEM char* MQTT_SERVER_IP = \"192.168.10.100\";\nconst PROGMEM uint16_t MQTT_SERVER_PORT = 1883;\nconst PROGMEM char* MQTT_USER = \"username\";\nconst PROGMEM char* MQTT_PASSWORD = \"password\";\n\n\/\/ MQTT: identificador de dispositivo y topics\nconst PROGMEM char* MQTT_CLIENT_ID = \"Temp_humedad01\";\nconst PROGMEM char* MQTT_SENSOR_TOPIC_T = \"oficina\/DHT_Temperatura\";\nconst PROGMEM char* MQTT_SENSOR_TOPIC_H = \"oficina\/DHT_Humedad\";\nconst PROGMEM char* MQTT_SENSOR_TOPIC_B = \"oficina\/DHT_Bateria\";\nconst PROGMEM char* MQTT_SENSOR_TOPIC_BS = \"oficina\/DHT_BatSistema\";\nchar MQTT_SENSOR_STATE_T[10] = \"0\"; \/\/ inicializa\nchar MQTT_SENSOR_STATE_H[10] = \"0\"; \/\/ inicializa\nchar MQTT_SENSOR_STATE_B[10] = \"0\"; \/\/ inicializa\nchar MQTT_SENSOR_STATE_BS[10] = \"0\"; \/\/ inicializa\n\n\/\/ LED monitor interno\n\/\/ESP01-pin=1, ESP07-pin=2\nconst PROGMEM uint8_t LED_pin = 2; \n\n\/\/ Sensor de Temperatura&amp;Humedad\ndht DHT;\n#define DHT11_PIN 12\n\n\/\/ Bateria\n#define bat_estado A0\nconst PROGMEM uint8_t bat_activa = 4;\n\n\/\/ tiempo de dormir\nint durmiendo = 5; \/\/segundos\n\nWiFiClient wifiClient;\nPubSubClient client(wifiClient);\n\nvoid setup() {\n    \/\/ Conexion serial\n    Serial.begin(9600);\/\/74880);\n    Serial.setTimeout(2000);\n\n    \/\/ SENSOR Temperatura&amp;Humedad\n    \/\/pinMode(DHT11_PIN, INPUT);\n\n    \/\/ SENSOR Bateria\n    pinMode(bat_activa, OUTPUT);\n    digitalWrite(bat_activa, LOW);\n\n    \/\/ LED monitor\n    pinMode(LED_pin, OUTPUT);\n    \/\/ LEDactivaestado();\n\n    \/\/ Inicia redes\n    if(WiFi.status() != WL_CONNECTED){\n        inicia_wifi();\n        }\n    if (!client.connected()){\n        inicia_mqtt();\n        }\n    client.loop();\n    \n    \/\/ espera inicializar serial\n    while(!Serial) { }\n    \/\/ actividad al despertar\n    Serial.println();\n    Serial.println(\"despertando\");\n    \n    \/\/ lectura de sensores\n    SensorTempHum();\n    SensorBateria();\n\n    \/\/ a dormir\n    Serial.println(\"A dormir por \" + String(durmiendo) + \" segundos\");\n    ESP.deepSleep(durmiendo*1e6); \/\/en microsegundos\n}\n\nvoid loop() {\n    \/\/ modo sleep usa funci\u00f3n setup\n}\n\nvoid SensorTempHum(){\n    int chk = DHT.read11(DHT11_PIN);\n    float temperatura = DHT.temperature;\n    float humedad = DHT.humidity;\n    Serial.println(\"Temperatura,Humedad: \");\n    Serial.print(temperatura);\n    Serial.print(\",\");\n    Serial.println(humedad);\n    client.publish(MQTT_SENSOR_TOPIC_T, \n                    String(temperatura).c_str(), \n                    true);\n    client.publish(MQTT_SENSOR_TOPIC_H, \n                    String(humedad).c_str(), \n                    true);\n    delay(1000);\n}\nvoid SensorBateria(){\n\n    \/\/ Activar, Leer, Desactivar, publicar\n    digitalWrite(bat_activa, HIGH);\n    \n    float bateria = analogRead(A0)*(57\/10)\/1024;\n    int bat_sistema = ESP.getVcc()*100\/65535;\n    \/\/delay(5000); \/\/ observar cambio\n    digitalWrite(bat_activa, LOW);\n    \n    Serial.println(\"Bateria (V), sistema (%):\");\n    Serial.print(bateria);\n    Serial.print(\",\");\n    Serial.println(bat_sistema);\n    \n    client.publish(MQTT_SENSOR_TOPIC_B,\n                    String(bateria).c_str(),\n                    true);\n    client.publish(MQTT_SENSOR_TOPIC_BS,\n                    String(bat_sistema).c_str(),\n                    true);\n    delay(10);\n}\n\nvoid inicia_wifi() {\n    \/\/ conexion WiFi\n    Serial.print(\"\\n Conectando a \");\n    Serial.println(ssid);\n    WiFi.begin(ssid, password);\n    int cuenta = 0;\n    while (WiFi.status() != WL_CONNECTED){\n        Serial.print(\".\");\n        cuenta = cuenta+1;\n        if (cuenta&gt;=40){\n            Serial.println();\n            cuenta = 0;}\n        \/\/ LED interno enciende en LOW\n        digitalWrite(LED_pin, LOW);\n        delay(250);\n        digitalWrite(LED_pin, HIGH);\n        delay(250);\n        }\n    Serial.print(\"\\n WiFi conectado \\n Direcci\u00f3n IP: \");\n    Serial.println(WiFi.localIP());\n    delay(10);\n}\n\nvoid inicia_mqtt(){\n    client.setServer(MQTT_SERVER_IP, MQTT_SERVER_PORT);\n    \/\/client.setCallback(callback);\n    while (!client.connected()) {\n        \/\/Serial.println(\"\\n Conectando a MQTT \");\n        if (client.connect(MQTT_CLIENT_ID, MQTT_USER, MQTT_PASSWORD)) {\n            Serial.println(\" MQTT conectado\");  \n        } else {\n            Serial.print(\"Fall\u00f3, estado: \");\n            Serial.print(client.state()); \n            Serial.print(\" , reintento en 5 segundos\");\n            \/\/ LED interno enciende en LOW\n            for (int i=0;i&lt;=5;i=i+1){\n                digitalWrite(LED_pin, LOW);\n                delay(600);\n                digitalWrite(LED_pin, HIGH);\n                delay(400);\n            }\n        }\n    }\n}\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>1. Instrucciones en Arduino IDE El modelo ESP-07 dispone de suficientes pines que permiten incorporar las funciones de programaci\u00f3n usando pines de una sola funci\u00f3n. Por lo que se facilita el dise\u00f1o. Modo Ahorro de Energ\u00eda Las instrucciones se desarrollan en la parte de configuraci\u00f3n Setup() en lugar del lazo, Loop(), debido a que se &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/blog.espol.edu.ec\/girni\/sensor-a-bateria-temp-hum-archivo-ino\/\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \"4.4 IoT WiFi Sensor a Bater\u00eda\/Temp-Hum: Archivo.ino\"<\/span><\/a><\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1430993],"tags":[],"class_list":["post-1904","post","type-post","status-publish","format-standard","hentry","category-4-sensor-temperatura-humedad"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/1904","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/comments?post=1904"}],"version-history":[{"count":2,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/1904\/revisions"}],"predecessor-version":[{"id":2656,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/1904\/revisions\/2656"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/media?parent=1904"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/categories?post=1904"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/tags?post=1904"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}