{"id":7762,"date":"2018-05-06T23:56:43","date_gmt":"2018-05-06T22:56:43","guid":{"rendered":"http:\/\/blog.whatsbee.net\/?p=7762"},"modified":"2018-05-06T23:58:41","modified_gmt":"2018-05-06T22:58:41","slug":"quinto-paso-empezando-con-la-radofrecuencia","status":"publish","type":"post","link":"https:\/\/blog.whatsbee.net\/?p=7762","title":{"rendered":"Quinto paso: empezando con la radofrecuencia"},"content":{"rendered":"<p>En la definici\u00f3n de objetivos seleccionamos la comunicaci\u00f3n con Lora por ser la selecci\u00f3n m\u00e1s adecuada como red inal\u00e1mbrica de largo alcance y bajo consumo.\u00a0 Para las pruebas he comprado ujn par de transceivers de diferentes fabricantes, pero empezaremos las pruebas con el RF95W, en este enlace est\u00e1 el <a href=\"http:\/\/www.hoperf.com\/upload\/rf\/RFM95_96_97_98W.pdf\">datasheet<\/a>.<\/p>\n<p>Para poder utilizar el RFM95W he utilizado otra PCB\u00a0como la que he utilizado para el ESP8266 a la que le he quitado las resistencias. Como antena he utilizado u trozo de cable de 82 mil\u00edmetros y lo he soldado directamente en el pad correspondiente. El resto de pines lo he conectado inicialmente de la misma forma que se detalla en <a href=\"http:\/\/things4u.github.io\/HardwareGuide\/ESP8266\/ESP-Sensor\/esp-lora-sensor.html\">este art\u00edculo<\/a>.<\/p>\n<table width=\"494\">\n<tbody>\n<tr>\n<td width=\"80\"><strong>RFM95<\/strong><\/td>\n<td width=\"80\"><strong>LMIC<\/strong><\/td>\n<td width=\"117\"><strong>ESP8266 pins<\/strong><\/td>\n<td width=\"217\"><strong>Notes<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"80\">DIO5<\/td>\n<td width=\"80\"><\/td>\n<td width=\"117\"><\/td>\n<td width=\"217\">Leave open<\/td>\n<\/tr>\n<tr>\n<td width=\"80\">DIO4<\/td>\n<td width=\"80\"><\/td>\n<td width=\"117\"><\/td>\n<td width=\"217\">Leave open<\/td>\n<\/tr>\n<tr>\n<td width=\"80\">DIO3<\/td>\n<td width=\"80\"><\/td>\n<td width=\"117\"><\/td>\n<td width=\"217\">Leave open<\/td>\n<\/tr>\n<tr>\n<td rowspan=\"3\" width=\"80\">DIO2<\/td>\n<td rowspan=\"3\" width=\"80\">.dio[2]<\/td>\n<td rowspan=\"3\" width=\"117\">D3, GPIO3<\/td>\n<td width=\"217\">Does not work standalone as D3 is used to select boot=up. Only works with UART connected and flashing.<\/td>\n<\/tr>\n<tr>\n<td width=\"217\"><\/td>\n<\/tr>\n<tr>\n<td width=\"217\">Leave open!<\/td>\n<\/tr>\n<tr>\n<td width=\"80\">DIO1<\/td>\n<td width=\"80\">.dio[1]<\/td>\n<td width=\"117\">D2, GPIO4<\/td>\n<td width=\"217\">Must be connected<\/td>\n<\/tr>\n<tr>\n<td width=\"80\">DIO0<\/td>\n<td width=\"80\">.dio[0]<\/td>\n<td width=\"117\">D1, GPIO5<\/td>\n<td width=\"217\">Must be connected<\/td>\n<\/tr>\n<tr>\n<td width=\"80\">MISO<\/td>\n<td width=\"80\"><\/td>\n<td width=\"117\">D6, GPIO12<\/td>\n<td width=\"217\"><\/td>\n<\/tr>\n<tr>\n<td width=\"80\">MOSI<\/td>\n<td width=\"80\"><\/td>\n<td width=\"117\">D7, GPIO13<\/td>\n<td width=\"217\"><\/td>\n<\/tr>\n<tr>\n<td width=\"80\">SCK<\/td>\n<td width=\"80\"><\/td>\n<td width=\"117\">D5, GPIO14, CLK<\/td>\n<td width=\"217\"><\/td>\n<\/tr>\n<tr>\n<td width=\"80\">NSS<\/td>\n<td width=\"80\">.nss<\/td>\n<td width=\"117\">D8, GPIO15<\/td>\n<td width=\"217\"><\/td>\n<\/tr>\n<tr>\n<td width=\"80\">RESET<\/td>\n<td width=\"80\">.rst<\/td>\n<td width=\"117\">D0, GPIO16<\/td>\n<td width=\"217\">No interrupt support (which is OK)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Son un mont\u00f3n de pines, de\u00a0 hecho no nos solo nos quedan libres en el ESP8266\u00a0el GPIO2.\u00a0Nuestro dispositivo debe de llevar un sensor de ultrasonidos (dos pines), un rel\u00e9 reed para interactuar con el usuario y me gustar\u00eda poner un led y un sensor de temperatura para hacer la compensaci\u00f3n de temperatura del medidor de ultrasonidos.<\/p>\n<p>Es un problema tener solo un GPIO libre y necesitar cuatro, pero es un problema que vamos a dejar para m\u00e1s adelante.<\/p>\n<p>Una vez hecho el cableado vamos a por el software, la librer\u00eda que utilizaremos es la LMIC de IBM. hay un poco de l\u00edo, varias versiones, algunas funcionan en el entorno Arduino y otras noy algunas no funcionan con ESP8266, despues de la b\u00fasqueda <a href=\"https:\/\/github.com\/matthijskooijman\/arduino-lmic\">esta es la librer\u00eda que he utilizado<\/a>.<\/p>\n<p>Est\u00e1 muy bien documentada, en la carpeta de la librer\u00eda hay un fichero settings.h en el que le configuraremos la frecuencia en funci\u00f3n de la zona en la que lo utilizemos y alguna cosilla m\u00e1s. Otra cosa importante es el pin mapping, que lo configuraremos en nuestro programa:<\/p>\n<p><code><br \/>\nlmic_pinmap lmic_pins = {<br \/>\n.nss = 15,<br \/>\n.rxtx = LMIC_UNUSED_PIN,<br \/>\n.rst = LMIC_UNUSED_PIN,\u00a0 \/\/Porque lo hemos conectado al GPIO16 que est\u00e1 conectado al reset<br \/>\n.dio = {5, 4, LMIC_UNUSED_PIN},<br \/>\n};<br \/>\n<\/code><\/p>\n<p>Ya nos hemos ahorrado el primer pin (aunque el GPIO3 no es un gran ahorro al ser el pin RX del ESP8266), el motivo de que no usemos el DIO2 es porque solo se usa en la modulaci\u00f3n FSK y nosotros vamos a utilizar Lora.<\/p>\n<p>Generalmente si hay alg\u00fan problema en el cableado la librer\u00eda da un error, por lo que os sugiero que si el\u00a0programa os da un error repaseis el cableado.<\/p>\n<p>La librer\u00eda tiene dos ejemplos OTAA y ABP. En principio se recomienda OTAA, la diferencia entre una y otra es que en OTAA, a partir de los identificadores de red y de aplicaci\u00f3n de LoraWan el nodo har\u00e1 el Join en la red y recibir\u00e1 una respuesta para calcular las claves de encriptaci\u00f3n de la red y de la aplicaci\u00f3n, es mas segura que la segunda opci\u00f3n, ABP. Con ABP las claves se escriben directamente en el programa\u00a0lo cual lo convierte en un sistema menos seguro y menos flexible. Yo he empezado con ABP.<\/p>\n<h3>\u00bfPorqu\u00e9 ABP para empezar?<\/h3>\n<p>Mi primera prueba fu\u00e9 con OTAA , sin ning\u00fan problema (m\u00e1s adelante explico como hacerlo con TTN) pero siguiendo el ejemplo cada vez que duermo el circuito y lo despierto tengo que hacer un Join en la red. Esto es un problema, no necesariamente las respuestas son r\u00e1pidas y\u00a0no es una opci\u00f3n recomendada, de hecho es una mala pr\u00e1ctica. Hasta que no me familiarice voy a utilizar ABP, aunque ya tengo un plan para acabar pasando a OTAA.<\/p>\n<p>As\u00ed que lo que os recomiendo es que utilic\u00e9is inicialmente el ejemplo de ABP si ten\u00e9is pensado hacer un nodo que funcione\u00a0con deep sleep.\u00a0 El ejemplo de la librer\u00eda, como pasa habitualmente, es el mejor punto de partida.<\/p>\n<p>En este punto tenemos el ESP funcionando con el modo de deep sleep, la radio RFM95W conectada f\u00edsicamente y hemos probado la librer\u00eda LMIC con el ejemplo ABP. Ya estamos intercambiando informaci\u00f3n con la red.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En la definici\u00f3n de objetivos seleccionamos la comunicaci\u00f3n con Lora por ser la selecci\u00f3n m\u00e1s adecuada como red inal\u00e1mbrica de largo alcance y bajo consumo.\u00a0 Para las pruebas he comprado ujn par de transceivers de diferentes fabricantes, pero empezaremos las&hellip; <br \/><a class=\"read-more-button\" href=\"https:\/\/blog.whatsbee.net\/?p=7762\">Leer m\u00e1s<\/a><\/p>\n","protected":false},"author":1,"featured_media":7765,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0},"categories":[208],"tags":[213,220,219,209,216,217,218,214],"_links":{"self":[{"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/posts\/7762"}],"collection":[{"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7762"}],"version-history":[{"count":1,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/posts\/7762\/revisions"}],"predecessor-version":[{"id":7764,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/posts\/7762\/revisions\/7764"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/media\/7765"}],"wp:attachment":[{"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7762"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7762"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7762"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}