{"id":2160,"date":"2020-02-10T15:21:06","date_gmt":"2020-02-10T20:21:06","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/edelros\/?p=2160"},"modified":"2022-12-08T08:29:38","modified_gmt":"2022-12-08T13:29:38","slug":"lora-multipunto-heltec-esp32lora-dispositivo-ino","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/girni\/lora-multipunto-heltec-esp32lora-dispositivo-ino\/","title":{"rendered":"2.2 LoRa Multipunto - HELTEC ESP32+LoRa Dispositivo.ino"},"content":{"rendered":"<p><em><strong>Referencia<\/strong><\/em>: <a href=\"https:\/\/github.com\/Heltec-Aaron-Lee\/WiFi_Kit_series\">https:\/\/github.com\/Heltec-Aaron-Lee\/WiFi_Kit_series<\/a><\/p>\n<p>Para prueba del concepto, se implementa un dispositivo simplificado, un dispositivo que emite un \"parpadeo\" binario como estado de sensor.<\/p>\n<h2>Estado del sensor<\/h2>\n<p>El estado del sensor se indica con los valores <code>\"ON\"<\/code> encendido y <code>\"OFF\"<\/code> para apagado. El parpadeo se realiza a intervalos de tiempo de duraci\u00f3n aleatoria entre 1 a 3 segundos.<\/p>\n<h2>Direccionamiento<\/h2>\n<p>El direccionamiento se realiza usando un numero hexadecimal almacenado en un byte. Por facilidad de identificaci\u00f3n, se usa como direcci\u00f3n :<\/p>\n<ul>\n<li><strong>D<\/strong>ispositivo usa <code>\"<strong>D<\/strong>1\"<\/code> por la inicial, los otros dispositivos ser\u00e1n <code>\"D2\"<\/code>,<code>\"D3\"<\/code>, etc.<\/li>\n<li>gateway usa la direcci\u00f3n <code>\"<strong>C<\/strong>1\"<\/code> cuya inicial es de <strong>C<\/strong>oncentrador o coordinador, nombre tambi\u00e9n usado en otras tecnolog\u00edas.<\/li>\n<\/ul>\n<p>El algoritmo esta realizado para una placa de desarrollo LoRa, la disponible es de marca Heltec LoRa ESP32 que ofrece librer\u00edas simplificadas. Un siguiente paso de desarrollo consiste en usar un m\u00f3dulo LoRa y un Arduino Uno por ejemplo, realizado con librer\u00edas m\u00e1s generales.<\/p>\n<h2>Instrucciones<\/h2>\n<p>Las instrucciones de dividen en el bloque principal, el procedimiento de sensor, y los procedimientos LoRa para env\u00edo y recepcion, separados en cada pesta\u00f1a.<\/p>\n<h3>Bloque principal<\/h3>\n<p>Declara las librerias para el m\u00f3dulo o placa de desarrollo Heltec, se indica los par\u00e1metros LoRa como la Banda ISM que para Ecuador es US915, tambi\u00e9n se establecen las variables para el manejo de los mensajes de <strong>env\u00edo<\/strong> y <strong>recepci\u00f3n<\/strong>, tiempo de lecturas del sensor \"simulado\" para la prueba.<\/p>\n<p>El bucle de configuraci\u00f3n <code>setup()<\/code> inicializa el m\u00f3dulo y el de operaci\u00f3n <code>loop()<\/code> revisa los tiempos en los que se debe realizar la lectura del sensor y el env\u00edo del mensaje LoRa. Luego revisa si se ha recibido un mensaje LoRa para mostrarlo en la ventana del \"<em>monitor serie\"<\/em>.<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/LoRaMultipuntoDispositivo_01.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3687 size-full\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/LoRaMultipuntoDispositivo_01.png\" alt=\"\" width=\"616\" height=\"131\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/LoRaMultipuntoDispositivo_01.png 616w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/LoRaMultipuntoDispositivo_01-300x64.png 300w\" sizes=\"auto, (max-width: 616px) 100vw, 616px\" \/><\/a><\/p>\n<pre><span style=\"color: #95a5a6\">\/* Dispositivo Sensor Blink Parpadeo ON\/OFF<\/span>\r\n<span style=\"color: #95a5a6\"> * <\/span><u><span style=\"color: #95a5a6\">http:\/\/blog.espol.edu.ec\/girni\/lora-multipunto-esquema\/<\/span><\/u>\r\n<span style=\"color: #95a5a6\"> * Referencia: Ejemplos de Aaron.Lee <\/span><u><span style=\"color: #95a5a6\">www.heltec.cn<\/span><\/u>\r\n<span style=\"color: #95a5a6\">*\/<\/span>\r\n<span style=\"color: #5e6d03\">#include<\/span> <span style=\"color: #005c5f\">\"heltec.h\"<\/span>\r\n\r\n<span style=\"color: #434f54\">\/\/ LoRa Banda ISM en Regi\u00f3n 915Mhz<\/span>\r\n<span style=\"color: #5e6d03\">#define<\/span> <span style=\"color: #000000\">BAND<\/span> \u00a0<span style=\"color: #000000\">915E6<\/span> \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #434f54\">\/\/ 433E6,868E6,915E6<\/span>\r\n<span style=\"color: #00979c\">byte<\/span> <span style=\"color: #000000\">spread_factor<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">8<\/span><span style=\"color: #000000\">;<\/span> \u00a0<span style=\"color: #434f54\">\/\/ rango 6-12,default 7<\/span>\r\n\r\n<span style=\"color: #434f54\">\/\/ Mensaje LoRa a enviar por direcciones<\/span>\r\n<span style=\"color: #00979c\">byte<\/span> <span style=\"color: #000000\">dir_local<\/span> \u00a0\u00a0<span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0xD1<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/ Dispositivo 1<\/span>\r\n<span style=\"color: #00979c\">byte<\/span> <span style=\"color: #000000\">dir_destino<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0xC1<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/ Dispositivo 2<\/span>\r\n<span style=\"color: #00979c\">byte<\/span> <span style=\"color: #000000\">id_msjLoRa<\/span> \u00a0<span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0<\/span><span style=\"color: #000000\">;<\/span> \u00a0\u00a0\u00a0<span style=\"color: #434f54\">\/\/ cuenta mensaje<\/span>\r\n<span style=\"color: #00979c\">String<\/span> <span style=\"color: #000000\">paqueteEnv<\/span>= \"\";   \/\/ mensaje\r\n\r\n<span style=\"color: #434f54\">\/\/ Mensaje LoRa recibido<\/span>\r\n<span style=\"color: #00979c\">byte<\/span> <span style=\"color: #000000\">dir_envio<\/span> \u00a0<span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0xD1<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/ receptor<\/span>\r\n<span style=\"color: #00979c\">byte<\/span> <span style=\"color: #000000\">dir_remite<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0xC1<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/ emisor<\/span>\r\n<span style=\"color: #00979c\">String<\/span> <span style=\"color: #000000\">paqueteRcb<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"\"<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/ mensaje LoRa<\/span>\r\n<span style=\"color: #00979c\">byte<\/span> \u00a0\u00a0<span style=\"color: #000000\">paqRcb_ID<\/span> \u00a0<span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #00979c\">byte<\/span> \u00a0\u00a0<span style=\"color: #000000\">paqRcb_Estado<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #434f54\">\/\/ 0:vacio, 1: nuevo, 2:incompleto<\/span>\r\n \u00a0<span style=\"color: #434f54\">\/\/ 3:otro destinatario, 4:Broadcast<\/span>\r\n\r\n<span style=\"color: #434f54\">\/\/ Mensajes por Puerto Serial activa<\/span>\r\n<span style=\"color: #00979c\">boolean<\/span> <span style=\"color: #000000\">serial_msj<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">;<\/span>\r\n\r\n<span style=\"color: #434f54\">\/\/ SENSOR Parpadeo<\/span>\r\n<span style=\"color: #00979c\">String<\/span> <span style=\"color: #000000\">sensorEstado<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"ON\"<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/ ON\/OFF: 1\/0<\/span>\r\n<span style=\"color: #434f54\">\/\/ tiempo entre lecturas<\/span>\r\n<span style=\"color: #00979c\">long<\/span> <span style=\"color: #000000\">tiempo_antes<\/span> \u00a0\u00a0\u00a0\u00a0<span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #00979c\">long<\/span> <span style=\"color: #000000\">tiempo_intervalo<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">6000<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #00979c\">long<\/span> <span style=\"color: #000000\">tiempo_espera<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">tiempo_intervalo<\/span> <span style=\"color: #434f54\">+<\/span> <span style=\"color: #d35400\">random<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">3000<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n\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: #d35400\">Heltec<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">begin<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #00979c\">false<\/span> <span style=\"color: #95a5a6\">\/*DisplayEnable Enable*\/<\/span><span style=\"color: #434f54\">,<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #00979c\">true<\/span> <span style=\"color: #95a5a6\">\/*Heltec.Heltec.Heltec.LoRa Disable*\/<\/span><span style=\"color: #434f54\">,<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">serial_msj<\/span> <span style=\"color: #95a5a6\">\/*Serial Enable*\/<\/span><span style=\"color: #434f54\">,<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #00979c\">true<\/span> <span style=\"color: #95a5a6\">\/*PABOOST Enable*\/<\/span><span style=\"color: #434f54\">,<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">BAND<\/span> <span style=\"color: #95a5a6\">\/*long BAND*\/<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<b><span style=\"color: #d35400\">LoRa<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">setSpreadingFactor<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">spread_factor<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n\r\n \u00a0<span style=\"color: #434f54\">\/\/LoRa.onReceive(cbk);<\/span>\r\n \u00a0<b><span style=\"color: #d35400\">LoRa<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">receive<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\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: #00979c\">int<\/span> <span style=\"color: #000000\">rssi_lora<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/ nivel de se\u00f1al<\/span>\r\n \u00a0<span style=\"color: #00979c\">int<\/span> <span style=\"color: #000000\">snr_lora<\/span> \u00a0<span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\r\n \u00a0<span style=\"color: #434f54\">\/\/ Enviar mensajes entre intervalos<\/span>\r\n \u00a0<span style=\"color: #00979c\">long<\/span> <span style=\"color: #000000\">tiempo_ahora<\/span> \u00a0\u00a0<span style=\"color: #434f54\">=<\/span> <span style=\"color: #d35400\">millis<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #00979c\">long<\/span> <span style=\"color: #000000\">t_transcurrido<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">tiempo_ahora<\/span> <span style=\"color: #434f54\">-<\/span> <span style=\"color: #000000\">tiempo_antes<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\r\n \u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">t_transcurrido<\/span> <span style=\"color: #434f54\">&gt;=<\/span> <span style=\"color: #000000\">tiempo_espera<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\r\n\r\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">sensor_revisa<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/actualiza sensor<\/span>\r\n \u00a0\u00a0\u00a0\r\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">paqueteEnv<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">String<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">sensorEstado<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #000000\">c_str<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">envia_lora<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">dir_destino<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">dir_local<\/span><span style=\"color: #434f54\">,<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">id_msjLoRa<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">paqueteEnv<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">id_msjLoRa<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">id_msjLoRa<\/span> <span style=\"color: #434f54\">+<\/span> <span style=\"color: #000000\">1<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\r\n \u00a0\u00a0\u00a0<span style=\"color: #434f54\">\/\/ mensaje a serial monitor<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">serial_msj<\/span> <span style=\"color: #434f54\">==<\/span> <span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\"Enviado: \u00a0\"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #00979c\">String<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">dir_local<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #00979c\">HEX<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\",\"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #00979c\">String<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">dir_destino<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #00979c\">HEX<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\",\"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">id_msjLoRa<\/span><span style=\"color: #434f54\">-<\/span><span style=\"color: #000000\">1<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span> \r\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\",\"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">paqueteEnv<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\r\n \u00a0\u00a0\u00a0\r\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">tiempo_antes<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #d35400\">millis<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">tiempo_espera<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">tiempo_intervalo<\/span> <span style=\"color: #434f54\">+<\/span> <span style=\"color: #d35400\">random<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">3000<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0\r\n \u00a0\u00a0\u00a0<span style=\"color: #434f54\">\/\/ LED parpadea. Envio LoRa<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #d35400\">digitalWrite<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LED<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">HIGH<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #d35400\">delay<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">100<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #d35400\">digitalWrite<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LED<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">LOW<\/span> <span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #d35400\">delay<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">100<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #000000\">}<\/span>\r\n\r\n \u00a0<span style=\"color: #434f54\">\/\/ Revisar mensajes LoRa entrantes<\/span>\r\n \u00a0<span style=\"color: #00979c\">int<\/span> <span style=\"color: #000000\">msjRcbLoRa<\/span> <span style=\"color: #434f54\">=<\/span> <b><span style=\"color: #d35400\">LoRa<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">parsePacket<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">msjRcbLoRa<\/span> <span style=\"color: #434f54\">!=<\/span><span style=\"color: #000000\">0<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">recibe_lora<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">msjRcbLoRa<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">rssi_lora<\/span> <span style=\"color: #434f54\">=<\/span> <b><span style=\"color: #d35400\">LoRa<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">packetRssi<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">snr_lora<\/span> \u00a0<span style=\"color: #434f54\">=<\/span> <b><span style=\"color: #d35400\">LoRa<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">packetSnr<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0\r\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">serial_msj<\/span> <span style=\"color: #434f54\">==<\/span> <span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">paqRcb_Estado<\/span> <span style=\"color: #434f54\">==<\/span> <span style=\"color: #000000\">1<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\"Recibido: \"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #00979c\">String<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">dir_remite<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #00979c\">HEX<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span> \r\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\",\"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #00979c\">String<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">dir_envio<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #00979c\">HEX<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\",\"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">paqRcb_ID<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span> \u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\",\"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">paqueteRcb<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span> <b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\",\"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">rssi_lora<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span> \u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\",\"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">snr_lora<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span> \u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\",\"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span><span style=\"color: #5e6d03\">else<\/span><span style=\"color: #000000\">{<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\"Paquete recibido Estado: \"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">paqRcb_Estado<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\r\n \u00a0\u00a0\u00a0\r\n \u00a0\u00a0\u00a0<span style=\"color: #434f54\">\/\/ LED parpadea Rebibido Lora<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #d35400\">digitalWrite<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LED<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">HIGH<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #d35400\">delay<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">50<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #d35400\">digitalWrite<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LED<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">LOW<\/span> <span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #d35400\">delay<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">50<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #d35400\">digitalWrite<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LED<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">HIGH<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #d35400\">delay<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">50<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #d35400\">digitalWrite<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LED<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">LOW<\/span> <span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #000000\">}<\/span>\r\n \u00a0<span style=\"color: #d35400\">delay<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">100<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #000000\">}<\/span>\r\n<\/pre>\n<h3>Procedimiento de env\u00edo de paquete LoRa<\/h3>\n<p>Se toman los valores para destino, remitente, identificador de paquete y el mensaje o paquete a enviar, para realizar el paso de envio del mensaje con la instrucci\u00f3n <code>LoRa.write()<\/code>.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/LoRaMultipuntoDispositivo_02.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3688 size-full\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/LoRaMultipuntoDispositivo_02.png\" alt=\"\" width=\"613\" height=\"128\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/LoRaMultipuntoDispositivo_02.png 613w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/LoRaMultipuntoDispositivo_02-300x63.png 300w\" sizes=\"auto, (max-width: 613px) 100vw, 613px\" \/><\/a><\/p>\n<pre><span style=\"color: #00979c\">void<\/span> <span style=\"color: #000000\">envia_lora<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #00979c\">byte<\/span> <span style=\"color: #000000\">destino<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">byte<\/span> <span style=\"color: #000000\">remite<\/span><span style=\"color: #434f54\">,<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #00979c\">byte<\/span> <span style=\"color: #000000\">paqueteID<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">String<\/span> <span style=\"color: #000000\">paquete<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n \u00a0<span style=\"color: #434f54\">\/\/ espera radio para enviar un paquete<\/span>\r\n \u00a0<span style=\"color: #5e6d03\">while<\/span><span style=\"color: #000000\">(<\/span><b><span style=\"color: #d35400\">LoRa<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">beginPacket<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #434f54\">==<\/span> <span style=\"color: #000000\">0<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">serial_msj<\/span><span style=\"color: #434f54\">==<\/span><span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\"Esperando radio disponible...\"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #d35400\">delay<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">100<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #000000\">}<\/span>\r\n \u00a0\r\n \u00a0<span style=\"color: #434f54\">\/\/ envio del mensaje LoRa<\/span>\r\n \u00a0<b><span style=\"color: #d35400\">LoRa<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">beginPacket<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<b><span style=\"color: #d35400\">LoRa<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">write<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">destino<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<b><span style=\"color: #d35400\">LoRa<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">write<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">remite<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<b><span style=\"color: #d35400\">LoRa<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">write<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">paqueteID<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<b><span style=\"color: #d35400\">LoRa<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">write<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">paquete<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">length<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<b><span style=\"color: #d35400\">LoRa<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">paquete<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<b><span style=\"color: #d35400\">LoRa<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">endPacket<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #000000\">}<\/span>\r\n<\/pre>\n<h3>Procedimiento de recepci\u00f3n de paquete LoRa<\/h3>\n<p>Para recibir un paquete LoRa se procede en el mismo orden realizado para el env\u00edo, es decir primero se recibe la direcci\u00f3n de env\u00edo, la direcci\u00f3n del remitente, el identificador del mensaje, tama\u00f1o del mensaje en bytes, todo lo que viene luego es el mensaje transmitido.<\/p>\n<p>Luego se revisa el tama\u00f1o del paquete recibido y se compara con el valor de la variable de tama\u00f1o del mensaje. Esto permite validar si el mensaje se ha recibido completo o requiere alguna retransmisi\u00f3n.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/LoRaMultipuntoDispositivo_03.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3689 size-full\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/LoRaMultipuntoDispositivo_03.png\" alt=\"\" width=\"615\" height=\"126\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/LoRaMultipuntoDispositivo_03.png 615w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/LoRaMultipuntoDispositivo_03-300x61.png 300w\" sizes=\"auto, (max-width: 615px) 100vw, 615px\" \/><\/a><\/p>\n<pre><span style=\"color: #00979c\">void<\/span> <span style=\"color: #000000\">recibe_lora<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #00979c\">int<\/span> <span style=\"color: #000000\">tamano<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\r\n \u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">tamano<\/span> <span style=\"color: #434f54\">==<\/span> <span style=\"color: #000000\">0<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span> \r\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">paqRcb_Estado<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/vacio<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">return<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\r\n \u00a0\u00a0\u00a0\r\n \u00a0<span style=\"color: #434f54\">\/\/ lectura de paquete<\/span>\r\n \u00a0<span style=\"color: #000000\">paqueteRcb<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"\"<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #000000\">dir_envio<\/span> \u00a0<span style=\"color: #434f54\">=<\/span> <b><span style=\"color: #d35400\">LoRa<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">read<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #000000\">dir_remite<\/span> <span style=\"color: #434f54\">=<\/span> <b><span style=\"color: #d35400\">LoRa<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">read<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #000000\">paqRcb_ID<\/span> \u00a0<span style=\"color: #434f54\">=<\/span> <b><span style=\"color: #d35400\">LoRa<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">read<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\r\n \u00a0<span style=\"color: #00979c\">byte<\/span> <span style=\"color: #000000\">paqRcb_Tamano<\/span> <span style=\"color: #434f54\">=<\/span> <b><span style=\"color: #d35400\">LoRa<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">read<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #5e6d03\">while<\/span><span style=\"color: #000000\">(<\/span><b><span style=\"color: #d35400\">LoRa<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">available<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">paqueteRcb<\/span> <span style=\"color: #434f54\">+=<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #00979c\">char<\/span><span style=\"color: #000000\">)<\/span><b><span style=\"color: #d35400\">LoRa<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">read<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #000000\">}<\/span>\r\n \u00a0\r\n \u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">paqRcb_Tamano<\/span> <span style=\"color: #434f54\">!=<\/span> <span style=\"color: #000000\">paqueteRcb<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">length<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">paqRcb_Estado<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">2<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/ Tama\u00f1o incompleto<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">return<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #000000\">}<\/span>\r\n \u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">dir_envio<\/span> <span style=\"color: #434f54\">!=<\/span> <span style=\"color: #000000\">dir_local<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">paqRcb_Estado<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">3<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/ otro destino<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">return<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #000000\">}<\/span>\r\n \u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">dir_envio<\/span> <span style=\"color: #434f54\">==<\/span> <span style=\"color: #000000\">0xFF<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">paqRcb_Estado<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">4<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/Broadcast, difusion<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">return<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #000000\">}<\/span>\r\n \u00a0<span style=\"color: #000000\">paqRcb_Estado<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">1<\/span><span style=\"color: #000000\">;<\/span> \u00a0\u00a0<span style=\"color: #434f54\">\/\/ mensaje Nuevo<\/span>\r\n<span style=\"color: #000000\">}<\/span>\r\n<\/pre>\n<h3>Procedimiento para el sensor<\/h3>\n<p>En el ejercicio el procedimiento para el sensor consiste en altenar los valores entre encendido y apagado, el valor cambia cada vez que se use el procedimiento sensor_revisa()<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/LoRaMultipuntoDispositivo_04.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3690 size-full\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/LoRaMultipuntoDispositivo_04.png\" alt=\"\" width=\"613\" height=\"129\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/LoRaMultipuntoDispositivo_04.png 613w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/LoRaMultipuntoDispositivo_04-300x63.png 300w\" sizes=\"auto, (max-width: 613px) 100vw, 613px\" \/><\/a><\/p>\n<pre><span style=\"color: #434f54\">\/\/ Sensor Simulado<\/span>\r\n<span style=\"color: #00979c\">void<\/span> <span style=\"color: #000000\">sensor_revisa<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">sensorEstado<\/span> <span style=\"color: #434f54\">==<\/span> <span style=\"color: #005c5f\">\"ON\"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">sensorEstado<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"OFF\"<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span><span style=\"color: #5e6d03\">else<\/span><span style=\"color: #000000\">{<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">sensorEstado<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"ON\"<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\r\n<span style=\"color: #000000\">}<\/span>\r\n<\/pre>\n<p>Para subir todas las instrucciones recuerde primero seleccionar la placa de desarrollo correspondiente y verificar el <code>puerto com<\/code> al que se conecta<\/p>\n<h3>Resultados en monitor serie<\/h3>\n<p>El resultado observable en monitor serie es semejante al mostrado:<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/Mqtt_inicia07.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3561\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/Mqtt_inicia07.png\" alt=\"\" width=\"680\" height=\"64\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/Mqtt_inicia07.png 680w, https:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/Mqtt_inicia07-300x28.png 300w\" sizes=\"auto, (max-width: 680px) 100vw, 680px\" \/><\/a><\/p>\n<pre>Serial initial done\r\nLoRa Initial success!\r\nEnviado:  d1,c1,0,OFF\r\nEnviado:  d1,c1,1,ON\r\nEnviado:  d1,c1,2,OFF\r\nEnviado:  d1,c1,3,ON\r\n<\/pre>\n<hr \/>\n<h2>Pruebas punto a punto<\/h2>\n<p>Para realizar pruebas punto a punto, es necesario usar todas las instrucciones anteriores y cambiar solamente la direcci\u00f3n local y destino del mensaje y\u00a0 en el bloque principal siguiendo el esquema:<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/Lora_PuntoAPunto01.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2153\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/Lora_PuntoAPunto01.png\" alt=\"\" width=\"1045\" height=\"295\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/Lora_PuntoAPunto01.png 1045w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/Lora_PuntoAPunto01-300x85.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/Lora_PuntoAPunto01-768x217.png 768w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/Lora_PuntoAPunto01-1024x289.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<pre><span style=\"color: #434f54\">\/\/ LoRa envia paquete, direccion, contador<\/span>\r\n<span style=\"color: #00979c\">byte<\/span> <span style=\"color: #000000\">dir_local<\/span> \u00a0\u00a0\u00a0<span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0xC1<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/ Dispositivo 1<\/span>\r\n<span style=\"color: #00979c\">byte<\/span> <span style=\"color: #000000\">dir_destino<\/span> \u00a0<span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0xD1<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/ Dispositivo 2<\/span>\r\n<\/pre>\n<p>En el caso de recepci\u00f3n, los valores se actualizan en el procedimiento, dado que las direcciones son parte de la trama de datos, por lo que los valores declarados son solo referenciales.<\/p>\n<pre><span style=\"color: #434f54\">\/\/ LoRa recibe paquete<\/span>\r\n<span style=\"color: #00979c\">byte<\/span> <span style=\"color: #000000\">dir_envio<\/span> \u00a0<span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0xC1<\/span><span style=\"color: #000000\">;<\/span> \u00a0<span style=\"color: #434f54\">\/\/ receptor<\/span>\r\n<span style=\"color: #00979c\">byte<\/span> <span style=\"color: #000000\">dir_remite<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0xD1<\/span><span style=\"color: #000000\">;<\/span> \u00a0<span style=\"color: #434f54\">\/\/ emisor<\/span>\r\n<\/pre>\n<p>Con lo que se pueden intercambiar mensajes entre dispositivos, modalidad punto a punto, obteniendo el siguiente resultado si est\u00e1n conectados las dos placas de desarrollo.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/LoRaMultipuntoDispositivo_05.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3700 size-full\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/LoRaMultipuntoDispositivo_05.png\" alt=\"\" width=\"1305\" height=\"543\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/LoRaMultipuntoDispositivo_05.png 1305w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/LoRaMultipuntoDispositivo_05-300x125.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/LoRaMultipuntoDispositivo_05-768x320.png 768w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/02\/LoRaMultipuntoDispositivo_05-1024x426.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Referencia: https:\/\/github.com\/Heltec-Aaron-Lee\/WiFi_Kit_series Para prueba del concepto, se implementa un dispositivo simplificado, un dispositivo que emite un \"parpadeo\" binario como estado de sensor. Estado del sensor El estado del sensor se indica con los valores \"ON\" encendido y \"OFF\" para apagado. El parpadeo se realiza a intervalos de tiempo de duraci\u00f3n aleatoria entre 1 a 3 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/blog.espol.edu.ec\/girni\/lora-multipunto-heltec-esp32lora-dispositivo-ino\/\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \"2.2 LoRa Multipunto - HELTEC ESP32+LoRa Dispositivo.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":[1436897],"tags":[602214,1457738],"class_list":["post-2160","post","type-post","status-publish","format-standard","hentry","category-lora-multipunto","tag-iot","tag-lora"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/2160","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=2160"}],"version-history":[{"count":22,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/2160\/revisions"}],"predecessor-version":[{"id":4029,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/2160\/revisions\/4029"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/media?parent=2160"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/categories?post=2160"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/tags?post=2160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}