{"id":2196,"date":"2020-02-09T15:44:13","date_gmt":"2020-02-09T20:44:13","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/edelros\/?p=2196"},"modified":"2026-08-04T22:22:35","modified_gmt":"2026-08-05T03:22:35","slug":"lora-multipunto-gateway-error-recepcion","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/girni\/lora-multipunto-gateway-error-recepcion\/","title":{"rendered":"5. LoRa Multipunto - errores de recepci\u00f3n en Gateway"},"content":{"rendered":"\n<p>Usando el ejemplo de comunicaci\u00f3n multipunto, se revisa la secuencia de paquetes (msjID) enviada por cada uno de los nodos\/dispositivos con mensajes que se env\u00edan con intervalos aleatorios entre [2-4 segundos].<\/p>\n\n\n\n<p>La base de tiempo de 2 segundos se considera como tiempo que toma un sensor de temperatura DHT11 en dar una nueva lectura.<\/p>\n\n\n\n<p><a href=\"https:\/\/cdn-learn.adafruit.com\/downloads\/pdf\/dht.pdf\">https:\/\/cdn-learn.adafruit.com\/downloads\/pdf\/dht.pdf<\/a><\/p>\n\n\n\n<p>Para la lectura de los datos desde el gateway se usa la comunicaci\u00f3n por puerto serial (USB). de los datos de cada mensaje se usa el identificador de mensaje (msjID) que indica el orden del mensaje enviado.<\/p>\n\n\n\n<p>Ejemplo de mensaje obtenido por puerto serial desde el \"gateway simple\"<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>remite,msjID,mensaje,estado,Rssi,Snr\nd2,173,ON,1,-75,12<\/code><\/pre>\n\n\n\n<p>Usando como factor LoRa.setSpreadingFactor(8), se reduce la tasa de errores desde 0.36 en modo predeterminado de los dispositivos.<\/p>\n\n\n\n<p>Ejemplo de resultados obtenidos.<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>ID\t &#091;1 2]\ncuenta\t &#091;1879 1871]\nerrores\t &#091;254 312]\nincrem\t &#091;1 1]\nantes\t &#091;190 173]\n%error \t &#091;0.14 0.17]<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Instrucciones en Python<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# prueba de recepci\u00f3n de mensajes\n# en Gateway LoRa mutipunto\n# edelros@espol.edu.ec\n\nimport numpy as np\nimport serial, time\n\n# INGRESO\npuerto = 'com8'\nbaudios = 115200\nn = 2\nencabezado =&#x5B;'ID','cuenta',\n             'errores','increm',\n             'antes']\nm = len(encabezado)\ntabla = np.zeros(shape=(n+1,m),dtype=int)\nd_error = np.zeros(n+1,dtype=float)\n\nfor f in range(1,n+1,1):\n    tabla&#x5B;f,0]=f\n\n# PROCEDIMIENTO\narduino = serial.Serial(puerto, baudios)\narduino.setDTR(False)\ntime.sleep(0.3)\n\n# limpia buffer de datos anteriores\narduino.flushInput()  \narduino.setDTR()  \ntime.sleep(0.3)\nprint('\\nEstado del puerto: ',arduino.isOpen())\nprint('Nombre del dispositivo conectado: ', arduino.name)\nprint('Dump de la configuraci\u00f3n:\\n ',arduino)\nprint('\\n###############################################\\n')\n\nnp.set_printoptions(precision=2)\n# Lectura de datos\nwhile True:\n    # espera hasta recibir un dato\n    while (arduino.inWaiting()==0):\n        pass\n    \n    # lee binario del puerto serial\n    lectura = arduino.readline()\n    # binario a texto, elimina \/r\/n\n    texto = lectura.decode().strip()\n    print(texto)\n    tamano = len(texto)\n    if tamano&gt;=3:\n        if (texto&#x5B;0]=='d' and texto&#x5B;2]==','):\n            partes = texto.split(',')\n            msjID = int(partes&#x5B;0]&#x5B;1])\n            \n            # incremento\n            antes = tabla&#x5B;msjID,4]\n            ahora = int(partes&#x5B;1])\n            tabla&#x5B;msjID,4] = ahora\n            incremento = ahora - antes\n            tabla&#x5B;msjID,3] = incremento\n            # cuenta\n            if antes&gt;0 and incremento&gt;0:\n                tabla&#x5B;msjID,1]=tabla&#x5B;msjID,1] + incremento\n            # error\n            if (tabla&#x5B;msjID,1]&gt;1 and incremento&gt;1):\n                tabla&#x5B;msjID,2] = tabla&#x5B;msjID,2]+incremento-1\n            if (tabla&#x5B;msjID,1]&gt;0):\n                d_error&#x5B;msjID]=float(tabla&#x5B;msjID,2])\/tabla&#x5B;msjID,1]\n            for i in range(0,m,1):\n                print(encabezado&#x5B;i]+&quot;\\t&quot;,tabla&#x5B;1:,i])\n            print(&quot;%error \\t&quot;,d_error&#x5B;1:])\n    \n# Cerrar el puerto serial.\nserial.Serial.close\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>Usando el ejemplo de comunicaci\u00f3n multipunto, se revisa la secuencia de paquetes (msjID) enviada por cada uno de los nodos\/dispositivos con mensajes que se env\u00edan con intervalos aleatorios entre [2-4 segundos]. La base de tiempo de 2 segundos se considera como tiempo que toma un sensor de temperatura DHT11 en dar una nueva lectura. https:\/\/cdn-learn.adafruit.com\/downloads\/pdf\/dht.pdf [&hellip;]<\/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-2196","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\/2196","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=2196"}],"version-history":[{"count":8,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/2196\/revisions"}],"predecessor-version":[{"id":4892,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/2196\/revisions\/4892"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/media?parent=2196"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/categories?post=2196"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/tags?post=2196"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}