OBJETIVO
No Arduino UNO, envie comandos AT para o ESP8266 por uma porta SoftwareSerial e receba resultados.
STATUS ATUAL
Eu envio comandos AT e não recebo nada de volta ( esquema de fiação 1 ) ou eu envio comandos AT e recebo lixo de volta ( esquema de fiação 2 ).
Usando o Arduino como passagem (conforme explicado no tutorial listado na seção de recursos), posso enviar comandos AT. Descobri que posso me comunicar com o ESP8266 em 115200 baud.
Estes são os resultados da execução AT+GMR
:
AT version:0.40.0.0(Aug 8 2015 14:45:58)
SDK version:1.3.0
Ai-Thinker Technology Co.,Ltd.
Build:1.3.0.2 Sep 11 2015 11:48:04
ESQUEMA DE FIAÇÃO 1
!! Eu tenho o fio verde conectado ao pino 3 no Arduino Uno e o fio amarelo conectado ao pino 2; não 1 e 0 como a imagem sugere !!
ESQUEMA DE FIAÇÃO 2
A mesma fiação como acima, mas tenho RX e TX invertidos. O fio verde está conectado ao pino 2 e o fio amarelo está conectado ao pino 3.
CÓDIGO
Isso está sendo executado no Arduino Uno
#include <SoftwareSerial.h>
SoftwareSerial esp8266(2, 3);
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(115200);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial.println("Started");
// set the data rate for the SoftwareSerial port
esp8266.begin(115200);
esp8266.write("AT\r\n");
}
void loop() {
if (esp8266.available()) {
Serial.write(esp8266.read());
}
if (Serial.available()) {
esp8266.write(Serial.read());
}
}
RESULTADOS DO SKETCH EM EXECUÇÃO
Esquema de fiação 1
Started
Esquema de cablagem 2
Started
�����
Testei o ESP8266 através das instruções listadas no tutorial na seção Recursos que usei abaixo. O ESP8266 funciona bem ao enviar instruções por meio do prompt serial.
RECURSOS QUE EU USEI http://rancidbacon.com/files/kiwicon8/ESP8266_WiFi_Module_Quick_Start_Guide_v_1.0.4.pdf
QUESTÃO
Alguém sabe se o que estou tentando fazer é possível? E se for, o que estou fazendo de errado?
Respostas:
Absolutamente possível :)
SoftwareSerial não é capaz de taxa de transmissão de 115200 (apesar de "permitir" isso como uma configuração). Alguns relatórios sugerem que 57600 é viável, embora, na minha experiência, 9600 seja melhor em termos de confiabilidade. Como alterar a taxa de transmissão no ESP8266 dependerá da versão do firmware. Eu tive sucesso com
AT+IPR=9600
. Você só precisa executar este comando uma vez (é uma configuração persistente). Eu sugeriria, com base na sua descrição, que este é o culpado mais provável que está causando a saída "lixo" que você descreve.Algumas outras notas:
AT
mas quando você tenta se conectar a uma rede, etc., isso pode causar redefinições inesperadas do dispositivo.fonte
Bem, você pode tentar o seguinte:
Comece fazendo o upload do esboço intermitente no seu Arduino e conecte-o ao seu ESP8266 assim: TX-TX e RX-RX.
Agora abra o Serial Monitor e envie o comando AT e veja se ele responde. Nesse caso, você pode controlá-lo usando o seu Arduino conectando-o novamente ao TX-RX e RX-TX.
PS: Não se esqueça de definir a linha que termina no Monitor serial como Nova linha ou Retorno de carro.
Use este código para conectar-se ao ESP8266:
Como a interface serial do hardware ficará ocupada quando conectada ao computador, você precisará usar outra interface serial para se comunicar com o ESP8266. Nesse caso, o Software Serial é útil.
fonte
Alguém sabe se o que estou tentando fazer é possível? É possível, eu fiz isso com 2 arduinos onde um estava simulando o ESP8266 (aguardando o pedido do ebay).
E se for, o que estou fazendo de errado?
O que você está fazendo está errado na maioria dos níveis, mas acho que você ficou mais acertado.
Uma idéia é implementar este pequeno companheiro: o deslocador de nível lógico salvará muitos problemas mais tarde.
No seu "WIRING SCHEME 1", você está usando a porta serial de hardware do arduino para conversar diretamente com o dispositivo como se estivesse conectado através de um cabo TTL ou FTDI.
Isso significa que, em teoria, o dispositivo arduino leria do hardware ao falar também do ESP8266; se você tiver outro arduino ou um cabo TTL, tente conectá-lo às portas 2 e 3 no arduino "principal" e você deverá obter um código semelhante. resultado, como no seu exemplo de resultado 2. Como você faria o proxy através do arduino. Caso contrário, seria um local para começar a depuração.
Além disso, eu só poderia recomendar você investir em um TTL 3,3v ou um conversor de nível lógico. Quando peguei meu cabo, tudo funcionou imediatamente.
fonte
Eu também tive muitos problemas. No meu caso, os problemas são quase resolvidos com a mudança do SoftwareSerial para o AltSoftSerial . Parecia que no Uno a biblioteca serial de software padrão não estava funcionando para mim. Depois de mudar, comecei a obter resultados pela primeira vez. (Eu também usei mudança de nível e fonte de alimentação externa para 3.3V)
E, por quase resolvido, quero dizer - ainda fico de vez em quando sem palavras no terminal. Portanto, mesmo o AltSoftSerial não é uma solução perfeita. Eu estava usando o ESP-07 com uma taxa de dados de 115200 bps.
fonte
Descobrimos que muitos dos problemas com a integração do software serial ESP - Arduino Uno estavam relacionados à taxa de transmissão incompatível. Criamos este breve tutorial (incluindo uma biblioteca do Github), que você pode testar e ver se ele resolve esses problemas. http://www.instructables.com/id/Simple-ESP8266-Arduino-Uno-Software-Serial-Integra/
fonte
Aqui estão algumas dicas ao usar o módulo ESP8266.
Não use serial de software, pois não é confiável, especialmente em taxas de transmissão mais altas.
Sempre conecte o módulo ESP ao computador e teste todos os comandos AT antes de interagir com o Arduino para garantir que você esteja trabalhando na direção certa
Faça uma placa adaptadora de energia para tornar o módulo ESP compatível com a fonte Arduino 5v
Verifique também este link para obter mais detalhes
fonte