Recentemente, comecei a brincar com o Arduinos para conectar alguns sensores. Usei um Arduino Nano para medir temperatura, umidade, pressão do ar e nível de luz.
Para armazenar os dados em um banco de dados, usei outro Arduino que conectei a um Raspberry Pi e deixei os dois Arduinos falarem sem fio entre si via 433 MHz.
Tudo funciona muito bem, mas a comunicação de 433 MHz não é exatamente a mais confiável (muitas vezes perco uma transmissão). Quando me deparei com o módulo ESP8266, parecia ser a solução ideal para comunicação. Não seria legal se eu pudesse apenas obter as informações por meio de uma chamada HTTP do Raspberry Pi?
Depois de brincar por muitas horas, enviando muitos firmwares diferentes, ficando cada vez mais frustrado porque não conseguia conseguir fazer qualquer coisa, finalmente consegui fazê-lo funcionar por meio de um módulo FTDI conectado assim:
Eu uso um módulo de energia MB102 para fornecer os 3.3v exigidos pelo ESP8266. Acontece que você precisa conectar o aterramento do MB102 ao aterramento do módulo FTDI para obter uma resposta adequada. Depois de fazer isso, fui capaz de enviar comandos AT e obter as respostas adequadas. Eu poderia até conectá-lo ao meu Wi-Fi doméstico.
A próxima coisa que quero fazer é conectá-lo ao Arduino. Encontrei um esquema muito simples para isso ( http://blog.huntgang.com/2015/01/20/arduino-esp8266-tutorial-web-server-monitor-example/ ), onde você conecta RX a TX e TX a RX. Usando o MB102, conectei-o assim:
Aparentemente, agora devo ser capaz de fazer upload de um esboço em branco para o Arduino e, em seguida, usar o monitor serial novamente para detectar o comando AT, exatamente da mesma forma que fiz ao usar o módulo FTDI.
O problema é que não recebo absolutamente nada dessa forma. Eu nem mesmo vejo meus próprios comandos AT no console. Eu vejo o ESP8266 piscando toda vez que eu envio um comando (eu até vejo que ele ainda está conectado ao meu roteador, provavelmente ele se lembrou da informação que eu envio através do FTDI. .?)
A questão é: o que estou dando errado? Eu li alguns posts sobre o TX do Arduino também ser 5v e que você precisa fazer algo para trazê-lo de volta para 3.3v, mas havia também há muitos tutoriais que dizem que “não é necessário.
Resposta
A maneira mais fácil de trabalhar com esses desenvolvedores é conectar-se para um par sobressalente de pinos Arduino e use SoftwareSerial para comunicação (a menos que você esteja usando um dos Arduinos com mais de um UART). SoftwareSerial funciona até 9600 baud em dispositivos de 16 MHz, 4800 em dispositivos de 8 MHz, então você “precisará para definir o ESP8266 para acomodar isso. Eles atualmente são enviados a 115200 baud. Você pode usar o UART de hardware nos pinos (0, 1), mas reprogramar o Arduino significa desconectar & reconectar o ESP temporariamente a cada vez e envelhecer muito rapidamente.
Aqui está o que eu faço com os novos ESPs (se você atualizou seu ESP, precisará fazer o download do emulador de conjunto de instruções AT e atualizá-lo novamente com ele, primeiro):
# To configure a new ESP module: # Connect the ESP and the FTDI as in your top diagram, set your # terminal-emulator to 115200 baud, and enter the following: AT # ESP should respond "OK" AT+RST # Resets the ESP AT+UART_DEF=9600,8,1,0,0 # Sets ESP UART: 9600,N,8,1,no flow ctl # Now change the terminal emulator baud rate to 9600 AT+CWMODE=1 # Set ESP to station mode (client) ATE0 # Set ESP"s echo off AT+CWLAP # List access points - after a short pause # the ESP returns a list of WiFi access points
Para referência futura, aqui está um link para o Conjunto de instruções ESP8266 AT .
Atualização de junho de 2020: o link acima foi quebrado, agora corrigido. Você também pode encontrar a documentação na conta do github do Espressif “ (legível online, mas não pdf, a partir desta data).
Comentários
- Acabei de perceber que esta pergunta foi extraída do arquivo de perguntas não respondidas de 6 meses atrás . Bem – talvez esta resposta ajude alguém agora ou em breve.
Resposta
Pode haver um problema com a taxa de transmissão do chip Nano FTDI para o RX / TX e o ESP8266. Você se desconectou ao enviar o esboço?
Que tal tentar isso em vez disso?
Saúde!
Comentários
- Quando trabalho com o ESP8266, ele funciona em 115200 bauds, todo o resto dá lixo . Eu ‘ tentei o código do blog vinculado (apenas alterando a taxa de transmissão), vejo que ‘ está enviando o comando para o ESP8266 (luz azul piscando), mas falha ao tentar executar o Serial.find (” > “) comando. Também vejo saída nou do ESP8266 qualquer. Eu desconectei o ESP8266 durante o upload.
Resposta
Encontrei um bom tutorial aqui, tentei e ele funciona trabalho: https://blogs.msdn.microsoft.com/abhinaba/2016/01/23/esp8266-wifi-with-arduino-uno-and-nano/
Comentários
- Isso funcionará, exceto para o comando CIOBAUD que foi substituído.O comando atual para todas as funções UART é:
AT+UART_DEF=<baud>,<databits>,<stopbits>,<parity>,<flowcontrol>
ouAT+UART_DEF-9600,8,1,0,0
para ser compatível com SoftwareSerial. Substitua ” _DEF ” por ” _CUR ” se esta alteração for apenas para a sessão; o primeiro comando torna-o o padrão de inicialização. - Você pode expandir as informações desse blog para esta resposta se o link morrer, mas também para torná-la uma resposta melhor
Resposta
Sim, se você estiver usando fontes de energia diferentes, os aterramentos sempre devem estar conectados, caso contrário, as placas não sabem o que é zero volts.
O TX do Arduino é 5v, você precisa de um deslocador de nível para converter 5v para 3,3v, algo assim ( https://shop.pimoroni.com/products/adafruit-4-channel-i2c-safe-bi-directional-logic-level-converter?utm_medium=cpc&utm_source=googlepla&variant=302017581&gclid=CPqujsPxlc0CFcYcGwodb8YIoA )
O TX do ESP8266 é 3,3 V e o RX do Arduino é 5 V e você precisará de um deslocador de nível para lidar com isso. Você pode use o mesmo que listado acima, porque ele pode converter 4 sinais de alta (5v) em 4 sinais de baixa (3.3v).
As pessoas dizem que você pode fazer isso com resistores, mas eu também li que eles não funcionam bem o suficiente para lidar com sinais digitais de comutação rápida (então 300 Baud em sua série pode ser OK, mas não 115000 :))
Pessoas a Também diga que você não precisa de conversores de nível. É verdade que as coisas podem funcionar por um tempo sem eles, mas mais cedo ou mais tarde algo vai estourar. Aumentar a voltagem vai acelerar o processo, então você pode imaginar o que aconteceria se você conectasse uma fonte de 230v diretamente para um dispositivo USB.
Um último ponto, você sabia que o ESP8266 é um processador de 80/160 MHz com 256 KB de RAM, quando você compara isso com o Arduino, é como programar o seu PC através do seu telefone. você pode tentar conectar o ESP8266 por meio de um módulo FTDI e programá-lo por meio do IDE do Arduino no Arduino C. É muito mais fácil do que todas essas coisas de conexão.