{"id":1945,"date":"2018-12-16T08:16:26","date_gmt":"2018-12-16T13:16:26","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/edelros\/?p=1945"},"modified":"2022-06-28T10:17:25","modified_gmt":"2022-06-28T15:17:25","slug":"wifi-esquema-de-instrucciones-por-bloques","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/girni\/wifi-esquema-de-instrucciones-por-bloques\/","title":{"rendered":"2.1. WiFi - Esquema de instrucciones por Bloques"},"content":{"rendered":"<h2>Proceso de conexi\u00f3n a un Router WiFi<\/h2>\n<p>Se desarrolla el primer paso del proceso, que tiene como objetivo conectar el dispositivo a la red de datos WiFi.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/wifi_inicia03.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3266 aligncenter\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/wifi_inicia03.png\" alt=\"\" width=\"1233\" height=\"617\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/wifi_inicia03.png 1233w, https:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/wifi_inicia03-300x150.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/wifi_inicia03-768x384.png 768w, https:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/wifi_inicia03-1024x512.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><br \/>\nLas placas de desarrollo ESP8266\/ESP32 tienen un LED incorporado que puede ser usado para el prop\u00f3sito de disponer de un medio de observaci\u00f3n de estado de \"conectado\" o \"NO conectado\"en el ejercicio.<\/p>\n<h2>1.1 Estado - Conectado \/ NO conectado<\/h2>\n<p>El <strong>estado<\/strong> de<strong> <em>Conectado<\/em><\/strong> a Wifi\u00a0 se puede mostrar con un parpadeo LENTO del LED, <strong>encendido<\/strong> por <strong>un segundo<\/strong>\u00a0 y <strong>apagado<\/strong> en el siguiente <strong>segundo<\/strong>, es decir un periodo total de 2 segundos.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/LedParpadeo01NodeMCU.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3240 size-medium alignright\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/LedParpadeo01NodeMCU-300x232.jpg\" alt=\"\" width=\"300\" height=\"232\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/LedParpadeo01NodeMCU-300x232.jpg 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/LedParpadeo01NodeMCU.jpg 431w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a>Para el proceso de <strong><em>Inicio de conexi\u00f3n\u00a0<\/em><\/strong> a Wifi, el parpadeo del LED puede ser m\u00e1s RAPIDO y actua como indicador de estado del dispositivo.<\/p>\n<p>En un microcontrolador el tiempo se marca en milisegundos, por lo que los valores a usar en cada estado del proceso se indican en ms en la siguiente tabla.<\/p>\n<table border=\"1\">\n<tbody>\n<tr>\n<th>Estado<\/th>\n<th>Conectado<\/th>\n<th>No conectado<\/th>\n<\/tr>\n<tr>\n<td>LED encendido<\/td>\n<td>1000 ms<\/td>\n<td>300 ms<\/td>\n<\/tr>\n<tr>\n<td>LEd Apagado<\/td>\n<td>1000 ms<\/td>\n<td>200 ms<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>LENTO<\/td>\n<td>RAPIDO<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>El LED incorporado en la placa de desarrollo se direcciona o activa por medio de un PIN de la placa. El Pin predeterminado de la placa de desarrollo ESP8266 y ESP32 es el PIN 2, que como no requiere conexi\u00f3n adicional solamente se indica al inicio de las instrucciones.<\/p>\n<pre><span style=\"color: #00979c\">int<\/span> <span style=\"color: #000000\">LED_pin <\/span><span style=\"color: #434f54\">= <\/span><span style=\"color: #000000\">2<\/span><span style=\"color: #000000\">;<\/span><\/pre>\n<h3>1.2 Par\u00e1metros de la red WiFi<\/h3>\n<p>Como en toda conexi\u00f3n a WiFi realizada con el computador o el m\u00f3vil, se require dos par\u00e1metros:<\/p>\n<table border=\"1\">\n<tbody>\n<tr>\n<th>par\u00e1metro<\/th>\n<th>variable<\/th>\n<th>valor ejemplo<\/th>\n<\/tr>\n<tr>\n<td>identificador de router<\/td>\n<td><strong>ssid<\/strong><\/td>\n<td><code>\"miRouter\"<\/code><\/td>\n<\/tr>\n<tr>\n<td>contrase\u00f1a<\/td>\n<td><strong>password<\/strong><\/td>\n<td><code>\"miRouterClave\"<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Los valores mostrados son de ejemplo, en su caso particular debe sustituir con los valores de la red que requiera conectarse.<\/p>\n<h2>2. Esquema de Instrucciones para el dispositivo<\/h2>\n<p>Las intrucciones para un microcontrolador usan tres bloques principales: inicio, configuraci\u00f3n setup(), bucle o lazo de operaci\u00f3n loop().<\/p>\n<p>El <strong>bloque de inicio<\/strong> contiene las librerias de los procesos y funciones que se usaran en la operaci\u00f3n del dispositivo, establecen\u00a0 los par\u00e1metros de uso de los PINes de entrada y salida, par\u00e1metros de la red que se describieron en el numeral anterior. Adicionalmente contiene comentarios referentes al uso de las instrucciones, autor, etc.<\/p>\n<p>El <strong>bloque de configuraci\u00f3n<\/strong>, tambien conocido como <strong>setup<\/strong>(), usa los par\u00e1metros del <strong><em>bloque de inicio<\/em><\/strong> para configurar el dispositivo al arrancar, cuando se energiza o reinicia. Establece el tipo de uso de cada PIN, como entrada o salida, inicia los procesos de operaci\u00f3n que requieren ser llamados una sola vez.<\/p>\n<p>El <strong>bucle o lazo de operaci\u00f3n<\/strong>, tambi\u00e9n conocido como <strong>loop<\/strong>(), es un lazo infinito que se encarga del comportamiento del dispositivo de acuerdo a las instrucciones dadas. Lo de lazo infinito se usa en el contexto que mientras el dispositivo tenga energ\u00eda, est\u00e9 conectado o no se reinicie.<\/p>\n<pre><span style=\"color: #95a5a6\">\/* Bloque de inicio <\/span>\r\n<span style=\"color: #95a5a6\"> * \u00a0donde van las librerias, par\u00e1metros<\/span>\r\n<span style=\"color: #95a5a6\"> * \u00a0variables globales<\/span>\r\n<span style=\"color: #95a5a6\"> *\/<\/span>\r\n<span style=\"color: #00979c\">void<\/span> <span style=\"color: #5e6d03\">setup<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\r\n \u00a0<span style=\"color: #434f54\">\/\/ instrucciones de configuraci\u00f3n inicial<\/span>\r\n \u00a0<span style=\"color: #434f54\">\/\/ funcionan una sola vez al encender el dispositivo<\/span>\r\n\r\n<span style=\"color: #000000\">}<\/span>\r\n\r\n<span style=\"color: #00979c\">void<\/span> <span style=\"color: #5e6d03\">loop<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\r\n \u00a0<span style=\"color: #434f54\">\/\/ instrucciones de operaci\u00f3n del dispositivo<\/span>\r\n\r\n<span style=\"color: #000000\">}<\/span>\r\n\r\n<span style=\"color: #00979c\">void<\/span> <span style=\"color: #000000\">inicia_wifi<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\r\n \u00a0<span style=\"color: #434f54\">\/\/ procedimientos o funciones que se repiten<\/span>\r\n \u00a0<span style=\"color: #434f54\">\/\/ en los bloques anteriores ej: conectar\/reconectar<\/span>\r\n \u00a0<span style=\"color: #434f54\">\/\/ a WiFi, lectura de sensores, manejo de mensajes MQTT<\/span>\r\n \u00a0\r\n<span style=\"color: #000000\">}<\/span>\r\n<\/pre>\n<p>Dado que durante el proceso de operaci\u00f3n pueden ocurrir desconexiones a la red WiFI, podr\u00eda ser necesario reiniciar el proceso de conexi\u00f3n. Los procesos que se repiten o se dedican a un prop\u00f3sito particular se realizan aparte.<\/p>\n<p>Ante una situaci\u00f3n de desconexi\u00f3n, al inicio del bucle de operaci\u00f3n se realiza la revisi\u00f3n del estado de conexi\u00f3n para de no tener estado de \"conectado\" se realice el proceso nuevamente con varios intentos antes de proceder a atender las actividades normales de operaci\u00f3n como la lectura de sensores.<\/p>\n<p>La instrucci\u00f3n <code>yield()<\/code> cede tiempo de procesamiento del microcontrolador para procesar detalles de la parte inalambrica. Esta operaci\u00f3n se usa con ESP8266 pues se tiene un solo n\u00facleo y las operaciones trabajan en tiempo compartido.<\/p>\n<p>En el caso de ESP32 que tiene dos n\u00facleos, un n\u00facleo se dedica a la parte del manejo inal\u00e1mbrico, por lo que no es necesaria la instrucci\u00f3n <code>yield()<\/code>.<\/p>\n<h2>3. Instrucciones con uso de pesta\u00f1as en Arduino IDE<\/h2>\n<p>Cuando las instrucciones son numerosas, muchas l\u00edneas, existen varios bloques de procedimientos y funciones, se usan bloques que los agrupan en\u00a0 pesta\u00f1as. Esto simplifica la lectura de las instrucciones y permite enfocarse en sus partes en lugar de tener todas en una misma hoja.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/wifi_inicia01.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3238 size-full aligncenter\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/wifi_inicia01.png\" alt=\"\" width=\"485\" height=\"128\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/wifi_inicia01.png 485w, https:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/wifi_inicia01-300x79.png 300w\" sizes=\"auto, (max-width: 485px) 100vw, 485px\" \/><\/a><\/p>\n<p>La parte principal del algoritmo se escribe en la primera pesta\u00f1a, que tiene el mismo nombre que el archivo. Para a\u00f1adir pesta\u00f1as se dispone de un bot\u00f3n a la derecha de la barra, marcado en la figura con rojo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Proceso de conexi\u00f3n a un Router WiFi Se desarrolla el primer paso del proceso, que tiene como objetivo conectar el dispositivo a la red de datos WiFi. Las placas de desarrollo ESP8266\/ESP32 tienen un LED incorporado que puede ser usado para el prop\u00f3sito de disponer de un medio de observaci\u00f3n de estado de \"conectado\" o &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/blog.espol.edu.ec\/girni\/wifi-esquema-de-instrucciones-por-bloques\/\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \"2.1. WiFi - Esquema de instrucciones por Bloques\"<\/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":[1465114],"tags":[],"class_list":["post-1945","post","type-post","status-publish","format-standard","hentry","category-2-iot-wifi-conectando-a-router"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/1945","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=1945"}],"version-history":[{"count":24,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/1945\/revisions"}],"predecessor-version":[{"id":3989,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/1945\/revisions\/3989"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/media?parent=1945"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/categories?post=1945"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/tags?post=1945"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}