{"id":3022,"date":"2019-07-11T17:13:08","date_gmt":"2019-07-11T20:13:08","guid":{"rendered":"https:\/\/blog.usinainfo.com.br\/?p=3022"},"modified":"2019-08-07T15:55:06","modified_gmt":"2019-08-07T18:55:06","slug":"esp32-lora-wifi-sx1278","status":"publish","type":"post","link":"https:\/\/www.usinainfo.com.br\/blog\/esp32-lora-wifi-sx1278\/","title":{"rendered":"ESP32 LoRa WiFi SX1278"},"content":{"rendered":"<p>O <strong>ESP32 LoRa WiFi<\/strong> \u00e9 uma pequena placa de desenvolvimento que integra tr\u00eas formas distintas de comunica\u00e7\u00e3o: Wifi, Bluetooth e a rede de comunica\u00e7\u00e3o de longo alcance &#8211; LoRa (que \u00e9 o grande destaque dessa placa). Na figura abaixo est\u00e1 ilustrado o diagrama <em>pinout<\/em>.<\/p>\n<p><a href=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/05\/pinout.jpg\" data-rel=\"lightbox-image-0\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3034\" title=\"\" src=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/05\/pinout-1024x516.jpg\" alt=\"\" width=\"644\" height=\"324\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Ela possui o microprocessador Xtensa 32-Bits LX6 que apresenta baixo consumo de energia, al\u00e9m de se destacar\u00a0 por ser um processador dual core. Est\u00e1 integrada com uma tela funcional OLED de 0,96\u201d com resolu\u00e7\u00e3o de 128&#215;64. Tamb\u00e9m conta com um controlador de carga e conector JST na parte inferior para uma bateria (Li-Ion ou Li-Po) de 3.7V e at\u00e9 1000mAh para alimenta\u00e7\u00e3o remota, sem a necessidade de fios. Demais caracter\u00edsticas podem ser encontradas em <a href=\"https:\/\/www.usinainfo.com.br\/lora\/esp32-lora-wifi-sx1278-433mhz-de-longo-alcance-com-display-oled-e-bluetooth-5517.html\">ESP32 LoRa WiFi<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h2>Configura\u00e7\u00e3o na IDE do Arduino<\/h2>\n<p>Para programar o m\u00f3dulo ESP32 LoRa WiFi, devemos instalar uma sele\u00e7\u00e3o de placas fornecidas pela Heltec. De forma a fazer essas configura\u00e7\u00f5es de maneira mais r\u00e1pida, iremos usar o Git. Caso voc\u00ea n\u00e3o tenha ele instalado, poder\u00e1 <a href=\"https:\/\/git-scm.com\/downloads\" target=\"_blank\" rel=\"noopener noreferrer\">baix\u00e1-lo<\/a> para instalar em seu sistema.<\/p>\n<p>Obs 1: Observe que alguns comandos podem variar de acordo com o idioma do seu sistema. No exemplo abaixo a pasta de documentos \u00e9 descrita como &#8220;Documents&#8221;, em ingl\u00eas.<\/p>\n<p>Obs 2: Caso voc\u00ea tenha seguido nosso tutorial de instala\u00e7\u00e3o da placa ESP32, pode ser que apare\u00e7am alguns problemas de conflito entre as bibliotecas. Caso isso aconte\u00e7a com voc\u00ea, a solu\u00e7\u00e3o mais r\u00e1pida e efetiva \u00e9 apagar os arquivos da pastas &#8220;Documents\/Arduino\/hardware&#8221; e seguir esse tutorial normalmente.<\/p>\n<p>Caso n\u00e3o tenha a Arduino IDE instalada, <a href=\"https:\/\/www.arduino.cc\/en\/main\/software\" target=\"_blank\" rel=\"noopener noreferrer\">baixe aqui<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h3>Primeira etapa<\/h3>\n<p>Primeiramente iremos instalar o suporte as placas da Heltec. Para isso, siga os passos abaixo.<\/p>\n<ul>\n<li>No menu iniciar, acesse o Git Bash.<\/li>\n<li>Navegue at\u00e9 a pasta Documents\/Arduino\/hardware\n<ul>\n<li>Use o comando &#8220;cd Documents\/Arduino\/hardware&#8221;<\/li>\n<li>Caso o mesmo falhe, verifique se existe a pasta hardware dentro da pasta Arduino. Caso n\u00e3o exista, voc\u00ea pode criar.<\/li>\n<\/ul>\n<\/li>\n<li>Em seguida, copie, cole e execute o comando abaixo, no Git Bash:\n<ul>\n<li><span style=\"vertical-align: inherit\"><span style=\"vertical-align: inherit\">&#8220;git clone https:\/\/github.com\/Heltec-Aaron-Lee\/WiFi_Kit_series.git heltec&#8221;<\/span><\/span><\/li>\n<\/ul>\n<\/li>\n<li>O terminal ficar\u00e1 mais ou menos como o mostrado abaixo.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/05\/git1.jpg\" data-rel=\"lightbox-image-1\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3024\" title=\"\" src=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/05\/git1.jpg\" alt=\"\" width=\"612\" height=\"194\" \/><\/a><\/p>\n<ul>\n<li>Feito isso, v\u00e1 at\u00e9 a pasta \/Documents\/Arduino\/hardware\/heltec\/esp32\/tools no seu windows explorer e d\u00ea um clique duplo no arquivo &#8220;get.exe&#8221;. Deixe ele ser executado e, quando ele acabar, fechar\u00e1 automaticamente.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/05\/get.exe_.jpg\" data-rel=\"lightbox-image-2\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3026\" title=\"\" src=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/05\/get.exe_.jpg\" alt=\"\" width=\"592\" height=\"290\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li>Finalmente, os modelos de placa da Heltec poder\u00e3o ser acessados atrav\u00e9s do menu de sele\u00e7\u00e3o de placa do Arduino, conforme a figura abaixo. Nesse tutorial, usaremos o modelo WiFi LoRa 32.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/05\/board.jpg\" data-rel=\"lightbox-image-3\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3027\" title=\"\" src=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/05\/board.jpg\" alt=\"\" width=\"226\" height=\"173\" \/><\/a><\/p>\n<h3>Segunda etapa<\/h3>\n<p>Nessa etapa, instalaremos a biblioteca Heltec. Para isso, siga os passos abaixo.<\/p>\n<ul>\n<li>No menu iniciar, acesse o Git Bash.<\/li>\n<li>Navegue at\u00e9 a pasta Documents\/Arduino\/libraries\n<ul>\n<li>Use o comando &#8220;cd Documents\/Arduino\/libraries&#8221;<\/li>\n<\/ul>\n<\/li>\n<li><span style=\"vertical-align: inherit\"><span style=\"vertical-align: inherit\">Em seguida, copie, cole e execute o comando abaixo, no Git Bash:<\/span><\/span>\n<ul>\n<li><span style=\"vertical-align: inherit\"><span style=\"vertical-align: inherit\">&#8220;git clone https:\/\/github.com\/HelTecAutomation\/Heltec_ESP32.git&#8221;<\/span><\/span><\/li>\n<li>Dever\u00e1 fica uma janela parecida com a figura abaixo.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><a href=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/05\/git2-1.jpg\" data-rel=\"lightbox-image-4\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3030\" title=\"\" src=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/05\/git2-1.jpg\" alt=\"\" width=\"579\" height=\"175\" \/><\/a><\/p>\n<ul>\n<li>Feito isso, a biblioteca estar\u00e1 instalada e poder\u00e1 ser vista no meu de exemplos da IDE do Arduino, conforme figura abaixo:<\/li>\n<\/ul>\n<p><a href=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/05\/heltec_library.jpg\" data-rel=\"lightbox-image-5\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3029\" src=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/05\/heltec_library.jpg\" alt=\"\" width=\"376\" height=\"137\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h3>Testando a configura\u00e7\u00e3o<\/h3>\n<p>Para testarmos o funcionamento da ESP32 LoRa WiFi SX1278, copie e cole o c\u00f3digo abaixo na IDE do Arduino. Conecte a placa e ent\u00e3o selecione a porta. Fa\u00e7a o upload do c\u00f3digo. Talvez seja necess\u00e1rio que voc\u00ea aperte o bot\u00e3o PRG ao passar o c\u00f3digo (na maioria das vezes o c\u00f3digo passou direto quando eu testei).<\/p>\n<pre class=\"lang:csharp decode:1 \" >\r\n#include &quot;Arduino.h&quot;\r\n#include &quot;heltec.h&quot;\r\n \r\nvoid setup () {\r\n Heltec.begin(true, false, true);\r\n \r\n Heltec.display-&gt;setContrast(255);\r\n Heltec.display-&gt;clear();\r\n  \r\n Heltec.display-&gt;setFont(ArialMT_Plain_24);\r\n Heltec.display-&gt;drawString(0, 0, &quot;LoRa WiFi&quot;);\r\n  \r\n Heltec.display-&gt;setFont(ArialMT_Plain_16);\r\n Heltec.display-&gt;drawString(0, 25, &quot;Usinainfo&quot;);\r\n  \r\n Heltec.display-&gt;setFont(ArialMT_Plain_10);\r\n Heltec.display-&gt;drawString(0, 45, &quot;www.usinainfo.com.br\/blog\/&quot;);\r\n \r\n Heltec.display-&gt;display();\r\n}\r\n \r\nvoid loop () {}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Com isso, um texto ser\u00e1 exibido no display, conforme a figura abaixo.<\/p>\n<p><a href=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/05\/IMG_20190529_043801.jpg\" data-rel=\"lightbox-image-6\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3033\" title=\"\" src=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/05\/IMG_20190529_043801-1024x552.jpg\" alt=\"\" width=\"590\" height=\"318\" srcset=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/05\/IMG_20190529_043801-1024x552.jpg 1024w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/05\/IMG_20190529_043801-300x162.jpg 300w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/05\/IMG_20190529_043801-768x414.jpg 768w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/05\/IMG_20190529_043801.jpg 1920w\" sizes=\"auto, (max-width: 590px) 100vw, 590px\" \/><\/a><\/p>\n<p>Voc\u00ea pode ter percebido que para escrever no display usamos uma estrutura um pouco diferente. Isso acontece por que a Heltec reutiliza as fun\u00e7\u00f5es da biblioteca original da SSD1306 e faz as adapta\u00e7\u00f5es necess\u00e1rias para que ela funcione perfeitamente nesse m\u00f3dulo. Para utilizar as fun\u00e7\u00f5es, basta adicionar &#8220;Heltec.&#8221; antes do objeto display e tamb\u00e9m adicionar a seta &#8220;-&gt;&#8221;.<\/p>\n<p>Isso acontece por que umas das linguagens base do Arduino &#8211; C &#8211; prov\u00e9m estruturas chamadas <em>struct<\/em>, que seriam uma esp\u00e9cie de classe em um formato primitivo. O operador -&gt; indica um ponteiro para uma das vari\u00e1veis da <em>struct<\/em> Heltec, display. Para compreender melhor essa parte de programa\u00e7\u00e3o \u00e9 necess\u00e1rio um estudo mais aprofundado em algoritmos e estruturas de dados, mais especificamente sobre ponteiros.<\/p>\n<p>&nbsp;<\/p>\n<h2>Projeto de leitura e sa\u00edda anal\u00f3gica (PWM)<\/h2>\n<p>Nesse projeto com ESP32 LoRa WiFi SX1278, faremos o controle do brilho de uma LED atrav\u00e9s de um potenci\u00f4metro. Para isso, conectamos uma LED \u00e0 um resistor de 150 ohmsna porta 12. O potenci\u00f4metro est\u00e1 conectado na porta 13. Os fios de cor preta indicam o GND e a de cor vermelha indica a tens\u00e3o de 3.3V.<\/p>\n<p><a href=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/05\/proj-1.jpg\" data-rel=\"lightbox-image-7\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3037\" title=\"\" src=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/05\/proj-1-1024x511.jpg\" alt=\"\" width=\"618\" height=\"308\" \/><\/a><\/p>\n<p>Ap\u00f3s montar o circuito, copie e cole o c\u00f3digo abaixo na IDE do Arduino.<\/p>\n<pre class=\"lang:csharp decode:1 \" >\r\nint pinoLED = 12;\r\nint pinoPOT = 13;\r\nint brilho;\r\n\r\nconst int freq = 5000;\r\nconst int ledChannel = 0;\r\nconst int resolution = 8;\r\n\r\nvoid setup () {\r\npinMode(pinoPOT, INPUT);\r\nledcSetup(ledChannel, freq, resolution);\r\nledcAttachPin(pinoLED, ledChannel);\r\n}\r\n\r\nvoid loop () {\r\nbrilho = analogRead(pinoPOT);\r\nbrilho = map(brilho, 0, 4095, 0, 255);\r\nledcWrite(ledChannel, brilho);\r\ndelay(100);\r\n}\r\n<\/pre>\n<p>Ap\u00f3s o upload do c\u00f3digo ser feito, voc\u00ea poder\u00e1 controlar a LED conforme o gif abaixo.<\/p>\n<p><a href=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/lora1.gif\" data-rel=\"lightbox-image-8\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3049\" title=\"\" src=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/lora1.gif\" alt=\"\" width=\"479\" height=\"269\" \/><\/a><\/p>\n<p>Nesse c\u00f3digo, controlamos a LED com o aux\u00edlio de uma fun\u00e7\u00e3o diferente do usual. Utilizamos as fun\u00e7\u00f5es &#8220;ledc&#8221;.<\/p>\n<p>Primeiramente, definimos tr\u00eas vari\u00e1veis (ledChannel, freq, resolution) para delimitar o canal de acionamento da LED, a frequ\u00eancia e a resolu\u00e7\u00e3o (relacionados \u00e0 modula\u00e7\u00e3o por largura de pulso &#8211; PWM). Esses valores s\u00e3o utilizados na fun\u00e7\u00e3o ledcSetup.<\/p>\n<p>Em seguida, vinculamos uma das GPIO a essa configura\u00e7\u00e3o da ledcSetup com a fun\u00e7\u00e3o ledcAttachPin &#8211; informando o canal e o GPIO da LED.<\/p>\n<p>Para acion\u00e1-la, usamos a fun\u00e7\u00e3o ledcWrite, que recebe como par\u00e2metros o canal da LED e o brilho, vari\u00e1vel entre 0 e 255. Por isso que usamos a fun\u00e7\u00e3o <em>map<\/em> &#8211; logo na linha anterior \u00e0 ledcWrite &#8211; para diminuir a resolu\u00e7\u00e3o do potenci\u00f4metro de 4095 para no m\u00e1ximo 255.<\/p>\n<p>Note que isso \u00e9 o equivalente ao analogWrite que usamos com uma placa Arduino. Por\u00e9m, essa fun\u00e7\u00e3o ainda n\u00e3o est\u00e1 implementada na biblioteca fornecida pela Espressif. J\u00e1 a fun\u00e7\u00e3o analogRead est\u00e1. Dessa maneira vimos como fazer leitura e escrita anal\u00f3gica.<\/p>\n<p>&nbsp;<\/p>\n<h2>Comunica\u00e7\u00e3o LoRa<\/h2>\n<p>LoRa \u00e9 um protocolo de comunica\u00e7\u00e3o sem fio de longo alcance &#8211; abrevia\u00e7\u00e3o de <strong>Lo<\/strong>ng <strong>Ra<\/strong>nge (longo alcance). Ela \u00e9 mantida pela Semtech.<\/p>\n<p>Dentre as caracter\u00edsticas desse protocolo, encontra-se o baixo consumo de energia requerido pela rede, a criptografia AES128 <em>end-to-end<\/em>, autentica\u00e7\u00e3o m\u00fatua, prote\u00e7\u00e3o de integridade e confidencialidade. Tudo isso com o poder se comunica\u00e7\u00e3o de at\u00e9 1000 metros em \u00e1reas urbanas e mais de 1000 metros em \u00e1reas rurais [Ref. 1].<\/p>\n<p>O funcionamento do protocolo n\u00e3o est\u00e1 no escopo desse artigo-tutorial, visto que conhecimentos em redes &#8211; como o modelo TCP\/IP e tipos de topologia de rede &#8211; s\u00e3o necess\u00e1rios para o entendimento. Iremos, por\u00e9m, implementar de modo pr\u00e1tico uma rede entre dois m\u00f3dulos SX1278. Essa ser\u00e1 uma comunica\u00e7\u00e3o do tipo <em>Sender<\/em>\/<em>Receiver<\/em>, ou seja, um dos m\u00f3dulos ir\u00e1 enviar informa\u00e7\u00f5es para o outro m\u00f3dulo.<\/p>\n<p>&nbsp;<\/p>\n<h3>Esquema<\/h3>\n<p>Um dos m\u00f3dulos, denominado &#8220;<em>Sender<\/em>&#8220;, est\u00e1 conectado com um <em>push button<\/em> e um resistor de 10k ohms. O fio amarelo amarelo ilustra a conex\u00e3o com a GPIO 12. O outro m\u00f3dulo, denominado &#8220;Receiver&#8221;, est\u00e1 conectado a uma LED na GPIO 12 (ilustrada pelo fio amarelo) e um resistor de 150 ohms.<\/p>\n<p><a href=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/esquemaLoRa.jpg\" data-rel=\"lightbox-image-9\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3051\" title=\"\" src=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/esquemaLoRa-1024x326.jpg\" alt=\"\" width=\"779\" height=\"248\" \/><\/a><\/p>\n<p>Ap\u00f3s a montagem do circuito, iremos usar dois c\u00f3digos diferentes. Um deles \u00e9 espec\u00edfico para o <em>Sender<\/em> e outro \u00e9 espec\u00edfico para o <em>Receiver<\/em>.<\/p>\n<p>&nbsp;<\/p>\n<h4>C\u00f3digo &#8220;<em>Sender<\/em>&#8220;<\/h4>\n<p>Nesse c\u00f3digo executamos uma fun\u00e7\u00e3o que inicializa um objeto a ser transmitido &#8211; .beginPacket(). Em seguida, adicionamos algo ao pacote com o comando .print(). Note que voc\u00ea pode executar mais de um print no mesmo pacote. No c\u00f3digo abaixo, enviamos o estado da GPIO 12. Em seguida, para enviar o pacote, usamos o comando endPacket(). Por fim, h\u00e1 o acionamento da LED interna \u00e0 placa juntamente com um delay, apenas para indicar visualmente o funcionamento do c\u00f3digo..<\/p>\n<pre class=\"lang:csharp decode:1 \" >\r\n#include &quot;heltec.h&quot;\r\n#define BAND 433E6\r\n\r\nvoid setup () {\r\nHeltec.begin(true, true, true, true, BAND);\r\n}\r\n\r\nvoid loop () {\r\nSerial.print(&quot;Envio de pacote:&quot;);\r\nSerial.println(contador);\r\n\r\nLoRa.beginPacket();\r\nLoRa.print(digitalRead(12));\r\nLoRa.endPacket();\r\n\r\ndigitalWrite(25, HIGH);\r\ndelay(400);\r\ndigitalWrite(25, LOW);\r\ndelay(400);\r\n}\r\n<\/pre>\n<h4><\/h4>\n<p>&nbsp;<\/p>\n<h4>C\u00f3digo &#8220;<em>Receiver<\/em>&#8220;<\/h4>\n<p>Nesse c\u00f3digo, criamos uma vari\u00e1vel st que recebe o que foi recebido pela rede. No loop, criamos uma vari\u00e1vel de escopo que recebe o status da rede. Quando verifica-se que h\u00e1 algo sendo transmitido (na estrutura if)\u00a0 inicializamos um while para armazenar o que foi recebido. Em seguida, se foi recebido o valor 1 (correspondente a pressionar o <em>push button<\/em>), acionamos a LED. Caso contr\u00e1rio, deixamos ela desligada.<\/p>\n<pre class=\"lang:csharp decode:1 \" >\r\n#include &quot;heltec.h&quot;\r\n\r\n#define BAND 433E6\r\nchar st;\r\nvoid setup () {\r\nHeltec.begin(true, true, true, true, BAND);\r\npinMode(12, OUTPUT);\r\n}\r\n\r\nvoid loop () {\r\nint packetSize = LoRa.parsePacket();\r\n\r\nif(packetSize) {\r\nSerial.print(&quot;Pacote recebido '&quot;);\r\n\r\nwhile(LoRa.available ()) {\r\nst = (char)LoRa.read ();\r\nSerial.println(st);\r\n}\r\n\r\nif (st == '1')\r\ndigitalWrite(12,HIGH);\r\ndelay(1000);\r\ndigitalWrite(12,LOW);\r\n\r\nSerial.print(&quot;'com RSSI&quot;);\r\nSerial.println(LoRa.packetRssi());\r\n}\r\n}\r\n<\/pre>\n<p>Com o upload dos c\u00f3digos feitos, teremos o resultado ilustrado no gif abaixo.<\/p>\n<p><a href=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/lora2.gif\" data-rel=\"lightbox-image-10\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3050\" src=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/lora2.gif\" alt=\"\" width=\"640\" height=\"360\" \/><\/a><\/p>\n<p>O funcionamento da rede LoRa \u00e9 bem complexo e, portanto, caso voc\u00ea queira se aprofundar, recomendo que antes de estud\u00e1-lo, voc\u00ea tenha s\u00f3lidos conhecimentos dos modelos e topologias de redes.<\/p>\n<p>&nbsp;<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>Nesse tutorial exploramos a placa ESP32 LoRa WiFi SX1278, capaz de realizar comunica\u00e7\u00e3o LoRa. Vimos como fazer leituras e escritas tanto digitais quanto anal\u00f3gicas. Por fim, implementamos um projeto de comunica\u00e7\u00e3o com duas placas, enviando dados em uma e recebendo na outra. H\u00e1 muito mais o que ser explorado no \u00e2mbito da Internet das Coisas com essa poderosa placa.<\/p>\n<p>&nbsp;<\/p>\n<h5>Refer\u00eancias<\/h5>\n<p><span style=\"vertical-align: inherit\"><span style=\"vertical-align: inherit\">[1] Augustin, A., Yi, J., Clausen, T. e Townsley, W. (2016). <\/span><span style=\"vertical-align: inherit\">Um estudo de LoRa: Redes de longo alcance e baixo consumo de energia para a Internet das coisas. <\/span><\/span><i><span style=\"vertical-align: inherit\"><span style=\"vertical-align: inherit\">Sensors<\/span><\/span><\/i><span style=\"vertical-align: inherit\"><span style=\"vertical-align: inherit\"> ,\u00a0 <\/span><\/span><i><span style=\"vertical-align: inherit\"><span style=\"vertical-align: inherit\">16<\/span><\/span><\/i><span style=\"vertical-align: inherit\"><span style=\"vertical-align: inherit\"> (9), 1466.<\/span><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>O ESP32 LoRa WiFi \u00e9 uma pequena placa de desenvolvimento que integra tr\u00eas formas distintas de comunica\u00e7\u00e3o: Wifi, Bluetooth e a rede de comunica\u00e7\u00e3o de longo alcance &#8211; LoRa (que \u00e9 o grande destaque dessa placa). Na figura abaixo est\u00e1 ilustrado o diagrama pinout. &nbsp; Ela possui o microprocessador Xtensa 32-Bits LX6 que apresenta baixo consumo de energia, al\u00e9m de se destacar\u00a0 por ser um processador dual core. Est\u00e1 integrada com uma tela funcional OLED de 0,96\u201d com resolu\u00e7\u00e3o de 128&#215;64. Tamb\u00e9m conta com um controlador de carga e conector JST na parte inferior para uma bateria (Li-Ion ou Li-Po) de 3.7V e at\u00e9 1000mAh para alimenta\u00e7\u00e3o remota, sem a necessidade de fios. Demais caracter\u00edsticas podem ser encontradas em ESP32 [&hellip;]<\/p>\n","protected":false},"author":14,"featured_media":3288,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18],"tags":[],"class_list":["post-3022","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-esp32"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>ESP32 LoRa WiFi SX1278 Projeto Pr\u00e1tico - Blog Usinainfo<\/title>\n<meta name=\"description\" content=\"Encontre Projeto ESP32 LoRa WiFi SX1278 no Blog UsinaInfo. S\u00e3o Diversos Projetos com Biblioteca, Esquema de Liga\u00e7\u00e3o e C\u00f3digos para Download. Confira.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.usinainfo.com.br\/blog\/esp32-lora-wifi-sx1278\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ESP32 LoRa WiFi SX1278 Projeto Pr\u00e1tico - Blog Usinainfo\" \/>\n<meta property=\"og:description\" content=\"Encontre Projeto ESP32 LoRa WiFi SX1278 no Blog UsinaInfo. S\u00e3o Diversos Projetos com Biblioteca, Esquema de Liga\u00e7\u00e3o e C\u00f3digos para Download. Confira.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.usinainfo.com.br\/blog\/esp32-lora-wifi-sx1278\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog Usinainfo\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/pt-br.facebook.com\/faceusinainfo\/\" \/>\n<meta property=\"article:published_time\" content=\"2019-07-11T20:13:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-08-07T18:55:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/07\/esp32-lora-wifi-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1620\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Gustavo Teixeira\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Gustavo Teixeira\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutos\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ESP32 LoRa WiFi SX1278 Projeto Pr\u00e1tico - Blog Usinainfo","description":"Encontre Projeto ESP32 LoRa WiFi SX1278 no Blog UsinaInfo. S\u00e3o Diversos Projetos com Biblioteca, Esquema de Liga\u00e7\u00e3o e C\u00f3digos para Download. Confira.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.usinainfo.com.br\/blog\/esp32-lora-wifi-sx1278\/","og_locale":"pt_BR","og_type":"article","og_title":"ESP32 LoRa WiFi SX1278 Projeto Pr\u00e1tico - Blog Usinainfo","og_description":"Encontre Projeto ESP32 LoRa WiFi SX1278 no Blog UsinaInfo. S\u00e3o Diversos Projetos com Biblioteca, Esquema de Liga\u00e7\u00e3o e C\u00f3digos para Download. Confira.","og_url":"https:\/\/www.usinainfo.com.br\/blog\/esp32-lora-wifi-sx1278\/","og_site_name":"Blog Usinainfo","article_publisher":"https:\/\/pt-br.facebook.com\/faceusinainfo\/","article_published_time":"2019-07-11T20:13:08+00:00","article_modified_time":"2019-08-07T18:55:06+00:00","og_image":[{"width":1620,"height":1080,"url":"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/07\/esp32-lora-wifi-1.jpg","type":"image\/jpeg"}],"author":"Gustavo Teixeira","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Gustavo Teixeira","Est. tempo de leitura":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.usinainfo.com.br\/blog\/esp32-lora-wifi-sx1278\/#article","isPartOf":{"@id":"https:\/\/www.usinainfo.com.br\/blog\/esp32-lora-wifi-sx1278\/"},"author":{"name":"Gustavo Teixeira","@id":"https:\/\/www.usinainfo.com.br\/blog\/#\/schema\/person\/e562b515fae72a8e6663629d55466c6b"},"headline":"ESP32 LoRa WiFi SX1278","datePublished":"2019-07-11T20:13:08+00:00","dateModified":"2019-08-07T18:55:06+00:00","mainEntityOfPage":{"@id":"https:\/\/www.usinainfo.com.br\/blog\/esp32-lora-wifi-sx1278\/"},"wordCount":1559,"commentCount":8,"image":{"@id":"https:\/\/www.usinainfo.com.br\/blog\/esp32-lora-wifi-sx1278\/#primaryimage"},"thumbnailUrl":"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/07\/esp32-lora-wifi-1.jpg","articleSection":["ESP32"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.usinainfo.com.br\/blog\/esp32-lora-wifi-sx1278\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.usinainfo.com.br\/blog\/esp32-lora-wifi-sx1278\/","url":"https:\/\/www.usinainfo.com.br\/blog\/esp32-lora-wifi-sx1278\/","name":"ESP32 LoRa WiFi SX1278 Projeto Pr\u00e1tico - Blog Usinainfo","isPartOf":{"@id":"https:\/\/www.usinainfo.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.usinainfo.com.br\/blog\/esp32-lora-wifi-sx1278\/#primaryimage"},"image":{"@id":"https:\/\/www.usinainfo.com.br\/blog\/esp32-lora-wifi-sx1278\/#primaryimage"},"thumbnailUrl":"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/07\/esp32-lora-wifi-1.jpg","datePublished":"2019-07-11T20:13:08+00:00","dateModified":"2019-08-07T18:55:06+00:00","author":{"@id":"https:\/\/www.usinainfo.com.br\/blog\/#\/schema\/person\/e562b515fae72a8e6663629d55466c6b"},"description":"Encontre Projeto ESP32 LoRa WiFi SX1278 no Blog UsinaInfo. S\u00e3o Diversos Projetos com Biblioteca, Esquema de Liga\u00e7\u00e3o e C\u00f3digos para Download. Confira.","breadcrumb":{"@id":"https:\/\/www.usinainfo.com.br\/blog\/esp32-lora-wifi-sx1278\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.usinainfo.com.br\/blog\/esp32-lora-wifi-sx1278\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.usinainfo.com.br\/blog\/esp32-lora-wifi-sx1278\/#primaryimage","url":"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/07\/esp32-lora-wifi-1.jpg","contentUrl":"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/07\/esp32-lora-wifi-1.jpg","width":1620,"height":1080,"caption":"Esp32 Lora WiFi"},{"@type":"BreadcrumbList","@id":"https:\/\/www.usinainfo.com.br\/blog\/esp32-lora-wifi-sx1278\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/www.usinainfo.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"ESP32 LoRa WiFi SX1278"}]},{"@type":"WebSite","@id":"https:\/\/www.usinainfo.com.br\/blog\/#website","url":"https:\/\/www.usinainfo.com.br\/blog\/","name":"Blog Usinainfo","description":"Usinainfo","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.usinainfo.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/www.usinainfo.com.br\/blog\/#\/schema\/person\/e562b515fae72a8e6663629d55466c6b","name":"Gustavo Teixeira","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/d3d23c5cd03ce9d8ef47bc68b083dc7e5f94b7b022f5059e668bf9439c9d4709?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d3d23c5cd03ce9d8ef47bc68b083dc7e5f94b7b022f5059e668bf9439c9d4709?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d3d23c5cd03ce9d8ef47bc68b083dc7e5f94b7b022f5059e668bf9439c9d4709?s=96&d=mm&r=g","caption":"Gustavo Teixeira"},"description":"Bacharel em Ci\u00eancia da Computa\u00e7\u00e3o pela URI \u2013 Campus de Santo \u00c2ngelo, com experi\u00eancia no desenvolvimento de pesquisas em Rob\u00f3tica e prototipa\u00e7\u00e3o de Sistemas Rob\u00f3ticos.","url":"https:\/\/www.usinainfo.com.br\/blog\/author\/gustavo-teixeira\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/posts\/3022","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/comments?post=3022"}],"version-history":[{"count":29,"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/posts\/3022\/revisions"}],"predecessor-version":[{"id":3605,"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/posts\/3022\/revisions\/3605"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/media\/3288"}],"wp:attachment":[{"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/media?parent=3022"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/categories?post=3022"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/tags?post=3022"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}