{"id":2196,"date":"2020-02-17T15:44:13","date_gmt":"2020-02-17T20:44:13","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/edelros\/?p=2196"},"modified":"2020-12-29T20:28:30","modified_gmt":"2020-12-30T01:28:30","slug":"lora-multipunto-errores-de-recepcion-en-gateway","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/girni\/lora-multipunto-errores-de-recepcion-en-gateway\/","title":{"rendered":"2.5 LoRa Multipunto - errores de recepci\u00f3n en Gateway"},"content":{"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].<\/p>\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<p><a href=\"https:\/\/cdn-learn.adafruit.com\/downloads\/pdf\/dht.pdf\">https:\/\/cdn-learn.adafruit.com\/downloads\/pdf\/dht.pdf<\/a><\/p>\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<p>Ejemplo de mensaje obtenido por puerto serial desde el \"gateway simple\"<\/p>\n<pre>remite,msjID,mensaje,estado,Rssi,Snr\r\nd2,173,ON,1,-75,12\r\n<\/pre>\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<p>Ejemplo de resultados obtenidos.<\/p>\n<pre>ID\t [1 2]\r\ncuenta\t [1879 1871]\r\nerrores\t [254 312]\r\nincrem\t [1 1]\r\nantes\t [190 173]\r\n%error \t [0.14 0.17]\r\n<\/pre>\n<h4>Instrucciones en Python<\/h4>\n<pre># prueba de recepci\u00f3n de mensajes\r\n# en Gateway LoRa mutipunto\r\n# edelros<span class=\"atwho-query\">@espol.edu.ec<\/span>\r\n\r\nimport numpy as np\r\nimport serial, time\r\n\r\n# INGRESO\r\npuerto = 'com8'\r\nbaudios = 115200\r\nn = 2\r\nencabezado =['ID','cuenta',\r\n             'errores','increm',\r\n             'antes']\r\nm = len(encabezado)\r\ntabla = np.zeros(shape=(n+1,m),dtype=int)\r\nd_error = np.zeros(n+1,dtype=float)\r\n\r\nfor f in range(1,n+1,1):\r\n    tabla[f,0]=f\r\n\r\n# PROCEDIMIENTO\r\narduino = serial.Serial(puerto, baudios)\r\narduino.setDTR(False)\r\ntime.sleep(0.3)\r\n\r\n# limpia buffer de datos anteriores\r\narduino.flushInput()  \r\narduino.setDTR()  \r\ntime.sleep(0.3)\r\nprint('\\nEstado del puerto: ',arduino.isOpen())\r\nprint('Nombre del dispositivo conectado: ', arduino.name)\r\nprint('Dump de la configuraci\u00f3n:\\n ',arduino)\r\nprint('\\n###############################################\\n')\r\n\r\nnp.set_printoptions(precision=2)\r\n# Lectura de datos\r\nwhile True:\r\n    # espera hasta recibir un dato\r\n    while (arduino.inWaiting()==0):\r\n        pass\r\n    \r\n    # lee binario del puerto serial\r\n    lectura = arduino.readline()\r\n    # binario a texto, elimina \/r\/n\r\n    texto = lectura.decode().strip()\r\n    print(texto)\r\n    tamano = len(texto)\r\n    if tamano&gt;=3:\r\n        if (texto[0]=='d' and texto[2]==','):\r\n            partes = texto.split(',')\r\n            msjID = int(partes[0][1])\r\n            \r\n            # incremento\r\n            antes = tabla[msjID,4]\r\n            ahora = int(partes[1])\r\n            tabla[msjID,4] = ahora\r\n            incremento = ahora - antes\r\n            tabla[msjID,3] = incremento\r\n            # cuenta\r\n            if antes&gt;0 and incremento&gt;0:\r\n                tabla[msjID,1]=tabla[msjID,1] + incremento\r\n            # error\r\n            if (tabla[msjID,1]&gt;1 and incremento&gt;1):\r\n                tabla[msjID,2] = tabla[msjID,2]+incremento-1\r\n            if (tabla[msjID,1]&gt;0):\r\n                d_error[msjID]=float(tabla[msjID,2])\/tabla[msjID,1]\r\n            for i in range(0,m,1):\r\n                print(encabezado[i]+\"\\t\",tabla[1:,i])\r\n            print(\"%error \\t\",d_error[1:])\r\n    \r\n# Cerrar el puerto serial.\r\nserial.Serial.close\r\n<\/pre>\n","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<p class=\"link-more\"><a href=\"https:\/\/blog.espol.edu.ec\/girni\/lora-multipunto-errores-de-recepcion-en-gateway\/\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \"2.5 LoRa Multipunto - errores de recepci\u00f3n en Gateway\"<\/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-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":3,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/2196\/revisions"}],"predecessor-version":[{"id":2883,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/2196\/revisions\/2883"}],"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}]}}