{"id":1635,"date":"2019-03-22T10:19:09","date_gmt":"2019-03-22T15:19:09","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/edelros\/?p=1635"},"modified":"2019-03-22T10:19:09","modified_gmt":"2019-03-22T15:19:09","slug":"esp32-smartconfig-app","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/girni\/esp32-smartconfig-app\/","title":{"rendered":"ESP32 SmartConfig-App"},"content":{"rendered":"<p>Para la configuraci\u00f3n inicial de los dispositivos requiere una aplicaci\u00f3n en un dispositivo tablet o m\u00f3vil para configurar la conexi\u00f3n a la red WiFi con los datos de SSID y Password.<\/p>\n<p>El concepto presentado por espressif con documentaci\u00f3n actualizada al\u00a02018.06.08 se encuentra en:<\/p>\n<p><a href=\"https:\/\/www.espressif.com\/en\/products\/software\/esp-touch\/overview\">https:\/\/www.espressif.com\/en\/products\/software\/esp-touch\/overview<\/a><\/p>\n<figure style=\"width: 739px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.espressif.com\/sites\/default\/files\/faq\/screen_shot_2016-04-27_at_1.30.27_pm_0.png\" alt=\"https:\/\/www.espressif.com\/sites\/default\/files\/faq\/screen_shot_2016-04-27_at_1.30.27_pm_0.png\" width=\"739\" height=\"800\" \/><figcaption class=\"wp-caption-text\">Figura: Espressif https:\/\/www.espressif.com\/sites\/default\/files\/faq\/screen_shot_2016-04-27_at_1.30.27_pm_0.png<\/figcaption><\/figure>\n<p>La implementaci\u00f3n de la aplicaci\u00f3n que se us\u00f3 para probar el ejercicio se encuentra en Google Play. Revisar el desarro de la aplicaci\u00f3n realizar\u00e1 como otro tema.<\/p>\n<p><a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.cmmakerclub.iot.esptouch\">https:\/\/play.google.com\/store\/apps\/details?id=com.cmmakerclub.iot.esptouch<\/a><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full aligncenter\" src=\"https:\/\/lh3.googleusercontent.com\/QBiuZBzQshTTxpg9PhB0FrbpGFeasGwFIWkty8OQkKy82xQtEOESsOKqsYGOxkdnOnw=w1301-h694\" width=\"390\" height=\"694\" \/><\/p>\n<p>El procedimiento de conexi\u00f3n tiene dos partes:<\/p>\n<ol>\n<li><strong><em>Modo configuraci\u00f3n de WiFi<\/em><\/strong>, usando la aplici\u00f3n SmartConfig<\/li>\n<li><strong><em>Modo normal de conexi\u00f3n WiFi<\/em><\/strong>, con los datos WiFi ya configurados<\/li>\n<\/ol>\n<p>Para seleccionar los modos se usa una botonera \"Configuraci\u00f3n\"\u00a0 en un pin digital disponible con funcion y circuito semejante a RESET, en el ejemplo se usa GPIO14.<\/p>\n<h4><strong>Modo configuraci\u00f3n de WiFi<\/strong><\/h4>\n<p>Para iniciar el modo configuraci\u00f3n de la red se deben usar las botoneras \"Configuraci\u00f3n\" y \"RESET\" con la secuencia:<\/p>\n<p>1. pulsar Botonena GPIO14 y mantener pulsada<br \/>\n2. Luego pulsar y soltar reset<br \/>\n3. Mantener pulsado GPIO14 por 5 segundos despu\u00e9s y soltar<br \/>\n4. Usar el m\u00f3vil\/tableta con la aplicaci\u00f3n SmartConfig para configurar<br \/>\n5. Escribir SSID y password en m\u00f3vil\/tablet y \"confirmar\"<br \/>\n6. Esperar confirmaci\u00f3n y estar\u00e1 conectado.<\/p>\n<p><strong>Modo normal de conexi\u00f3n WiFi<\/strong><\/p>\n<p>Es el modo predeterminado de operaci\u00f3n, no requiere presionar el bot\u00f3n de \"Configuraci\u00f3n\". Arranca con los valores almacenados de SSID y PASSWORD.<\/p>\n<h4>Monitor Serial<\/h4>\n<p>Los resultados del proceso de configuraci\u00f3n y conexi\u00f3n a WiFi se muestran a continuaci\u00f3n. Para fines de muestra, se ha demorado la activaci\u00f3n con el m\u00f3vil\/tablet, note que la conexi\u00f3n a WiFI se realiza casi inmediatamente (tres puntos ...)<\/p>\n<pre>....ets Jun  8 2016 00:22:57\n\nrst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)\nets Jun  8 2016 00:22:57\n\nrst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)\nconfigsip: 0, SPIWP:0xee\nclk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00\nmode:DIO, clock div:1\nload:0x3fff0018,len:4\nload:0x3fff001c,len:1100\nload:0x40078000,len:10088\nload:0x40080400,len:6380\nentry 0x400806a4\nconfigurando WiFi\nEsperando conexi\u00f3n SmartConfig m\u00f3vil\/tablet\n........................................\n Esperando conexi\u00f3n SmartConfig m\u00f3vil\/tablet\n...............\n Finalizado SmartConfig.\n\n Conectando a WiFi\n...\n WiFi conectado , Direcci\u00f3n IP: iotirni19 , 192.168.10.102\nconectado a:\niotirni19 , 192.168.10.102 , -56\nconectado a:\niotirni19 , 192.168.10.102 , -53\nconectado a:\niotirni19 , 192.168.10.102 , -54\nconectado a:\niotirni19 , 192.168.10.102 , -55\nconectado a:\niotirni19 , 192.168.10.102 , -55\nconectado a:\niotirni19 , 192.168.10.102 , -55\n<\/pre>\n<h4>Instrucciones Arduino<\/h4>\n<p>Las instrucciones se han dividido por bloques: configura_wifi() y conecta_wifi(). En ambas funciones se presentan mensajes y parpadeos de led.<\/p>\n<p>Configura_wifi() espera a que se obtenga un valor afirmativo para WiFi.smartConfigDone() y finalizar.<\/p>\n<p>Conecta_wifi() es muy semejante a la funci\u00f3n inicia_wifi() usada en los primeros ejemplos que usaba variables para SSID y Password()<\/p>\n<pre>\/* ESP32 Smart Config de Espressif\nmodificado a partir de:\nhttps:\/\/www.espressif.com\/en\/products\/software\/esp-touch\/overview\nUsa el GPIO14 en estado LOW para entrar en modo configuraci\u00f3n.\nUsar BOTONERA \"CONFIGURACION\" en pin14, con pullup (HIGH)\nPara configurar:\n1. pulsar Botonena GPIO14 y mantener pulsada\n2. Luego pulsar y soltar reset\n3. Mantener pulsado GPIO14 por 5 segundos despu\u00e9s y soltar\n4. Usar el m\u00f3vil\/tableta con la aplicaci\u00f3n SmartConfig para configurar\n5. Escribir SSID y password en m\u00f3vil\/tablet y \"confirmar\"\n6. Esperar confirmaci\u00f3n y estar\u00e1 conectado.\n*\/\n#include &lt;WiFi.h&gt;\n\n\/\/ PIN configuraci\u00f3n\nconst PROGMEM uint8_t CONFIG_pin = 14; \n\n\/\/ LED monitor interno\n\/\/ESP01-pin=1, ESP07-pin=2; ESP32-pin=5\nconst PROGMEM uint8_t LED_pin = 5; \n\nvoid setup() {\n    Serial.begin(115200);\n\n    \/\/ PIN configuraci\u00f3n\n    pinMode(CONFIG_pin, INPUT);\n    \n    \/\/ LED monitor\n    pinMode(LED_pin, OUTPUT);\n    \n    \/\/ Revisa si entra a modo configuraci\u00f3n\n    if (digitalRead(CONFIG_pin)==LOW){\n        Serial.println(\"configurando WiFi\");\n        \/\/ configura con SmartConfig\n        configura_wifi();\n    }\n    \/\/ Modo conexi\u00f3n a Router\n    conecta_wifi();\n\n}\nvoid loop() {\n    \/\/ Ejemplo de tarea a realizar.\n    Serial.println(\"conectado a:\");\n    Serial.print(WiFi.SSID());\n    Serial.print(\" , \");\n    Serial.print(WiFi.localIP());\n    Serial.print(\" , \");\n    Serial.println(WiFi.RSSI());\n    \/\/ LED interno enciende en LOW\n    digitalWrite(LED_pin, HIGH);\n    delay(100);\n    digitalWrite(LED_pin, LOW);\n    delay(100);\n    digitalWrite(LED_pin, HIGH);\n    delay(100);\n    digitalWrite(LED_pin, LOW);\n    delay(250);\n    \/\/ termina ejemplo\n    delay(1000);\n}\n\nvoid configura_wifi(){\n    \/\/ inicia en modo estaci\u00f3n\n    WiFi.mode(WIFI_AP_STA);\n    WiFi.beginSmartConfig();\n    int cuenta = 0;\n    \/\/ Espera por un paquete Smartconfig del m\u00f3vil\/tablet\n    Serial.println(\"Esperando conexi\u00f3n SmartConfig m\u00f3vil\/tablet\");\n    while (!WiFi.smartConfigDone()) {\n        delay(500);\n        Serial.print(\".\");\n        cuenta = cuenta+1;\n        if (cuenta&gt;=40){\n            Serial.println(\"\\n Esperando conexi\u00f3n SmartConfig m\u00f3vil\/tablet\");\n            cuenta = 0;}\n        \/\/ LED interno enciende en LOW\n        digitalWrite(LED_pin, HIGH);\n        delay(50);\n        digitalWrite(LED_pin, LOW);\n        delay(50);\n        }\n    Serial.println(\"\\n Finalizado SmartConfig.\");\n    }\n\nvoid conecta_wifi() {\n    \/\/ conexion WiFi\n    Serial.println(\"\\n Conectando a WiFi\");\n    \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 , Direcci\u00f3n IP: \");\n    Serial.print(WiFi.SSID());\n    Serial.print(\" , \");\n    Serial.println(WiFi.localIP());\n    delay(10);\n}\n<\/pre>\n<p><strong><em>Por desarrollar<\/em><\/strong>:<br \/>\nPersonalizar la aplicaci\u00f3n del m\u00f3vil\/tableta a partir del c\u00f3digo b\u00e1sico de espressif.<\/p>\n<p><strong>Referencias<\/strong>:<br \/>\n<a href=\"https:\/\/www.espressif.com\/en\/products\/software\/esp-touch\/overview\">https:\/\/www.espressif.com\/en\/products\/software\/esp-touch\/overview<\/a><\/p>\n<p><a href=\"https:\/\/www.espressif.com\/sites\/default\/files\/documentation\/esp-touch_user_guide_en.pdf\">https:\/\/www.espressif.com\/sites\/default\/files\/documentation\/esp-touch_user_guide_en.pdf<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Para la configuraci\u00f3n inicial de los dispositivos requiere una aplicaci\u00f3n en un dispositivo tablet o m\u00f3vil para configurar la conexi\u00f3n a la red WiFi con los datos de SSID y Password. El concepto presentado por espressif con documentaci\u00f3n actualizada al\u00a02018.06.08 se encuentra en: https:\/\/www.espressif.com\/en\/products\/software\/esp-touch\/overview La implementaci\u00f3n de la aplicaci\u00f3n que se us\u00f3 para probar el &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/blog.espol.edu.ec\/girni\/esp32-smartconfig-app\/\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \"ESP32 SmartConfig-App\"<\/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":[1429787],"tags":[],"class_list":["post-1635","post","type-post","status-publish","format-standard","hentry","category-modulos-ejemplos"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/1635","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=1635"}],"version-history":[{"count":0,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/1635\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/media?parent=1635"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/categories?post=1635"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/tags?post=1635"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}