OBJETIVO
Desde Arduino UNO, envíe comandos AT a ESP8266 a través de un puerto SoftwareSerial y reciba resultados.
ESTADO ACTUAL
Envío comandos AT y no recibo nada ( esquema de cableado 1 ) o envío comandos AT y recupero basura ( esquema de cableado 2 ).
Usando el Arduino como un paso (como se explica en el tutorial que figura en la sección de recursos), puedo enviar comandos AT. He descubierto que puedo comunicarme con el ESP8266 a 115200 baudios.
Estos son los resultados de la ejecución 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 CABLEADO 1
!! Tengo el cable verde conectado al pin 3 en el Arduino Uno y el cable amarillo conectado al pin 2; ¡No 1 y 0 como sugiere la imagen!
ESQUEMA DE CABLEADO 2
El mismo cableado que el anterior, pero tengo RX y TX invertidos. El cable verde está conectado al pin 2 y el cable amarillo está conectado al pin 3.
CÓDIGO
Esto se está ejecutando en 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 DEL BOSQUEJO EN EJECUCIÓN
Esquema de cableado 1
Started
Esquema de cableado 2
Started
�����
He probado el ESP8266 a través de las instrucciones enumeradas en el tutorial en la sección Recursos que he usado a continuación. El ESP8266 funciona bien cuando se le envían instrucciones a través del indicador de serie.
RECURSOS QUE HE UTILIZADO http://rancidbacon.com/files/kiwicon8/ESP8266_WiFi_Module_Quick_Start_Guide_v_1.0.4.pdf
PREGUNTA
¿Alguien sabe si lo que estoy tratando de hacer es posible? Y si es así, ¿qué estoy haciendo mal?
Respuestas:
Absolutamente posible :)
SoftwareSerial no tiene capacidad para 115200 baudios (a pesar de "permitir" esto como configuración). Algunos informes sugieren que hasta 57600 es viable, aunque en mi experiencia 9600 es el mejor para la confiabilidad. Cómo cambiar la velocidad en baudios en el ESP8266 dependerá de la versión del firmware. He tenido éxito con
AT+IPR=9600
. Solo necesita ejecutar este comando una vez (es una configuración persistente). Sugeriría, según su descripción, que este es el culpable más probable que está causando la salida de "basura" que usted describe.Un par de otras notas:
AT
pero cuando intenta conectarse a una red, etc., puede provocar reinicios inesperados del dispositivo.fuente
Bueno, puedes probar esto:
Comience cargando un boceto parpadeante en su Arduino y luego conéctelo a su ESP8266 de esta manera: TX-TX y RX-RX.
Ahora abra Serial Monitor y envíe el comando AT y vea si responde. Si es así, puede controlarlo usando su Arduino conectándolo de nuevo a TX-RX y RX-TX.
PD: No olvide establecer la línea que termina en el Monitor de serie en Nueva línea o Retorno de carro.
Use este código para conectarse a ESP8266:
Dado que la interfaz serial de hardware estará ocupada cuando esté conectada a la computadora, entonces debe usar otra interfaz serial para comunicarse con su ESP8266. En este caso, Software Serial es útil.
fuente
¿Alguien sabe si lo que estoy tratando de hacer es posible? Es posible, lo hice con 2 arduinos donde uno simulaba ESP8266 (esperando el pedido de eBay).
Y si es así, ¿qué estoy haciendo mal?
Lo que estás haciendo está mal en la mayoría de los niveles, pero creo que te resolviste más.
Una idea es implementar a este pequeño amigo: el cambiador de nivel lógico te ahorrará muchos problemas más adelante.
En su "ESQUEMA DE CABLEADO 1" está utilizando el puerto serie de hardware de arduino para comunicarse directamente con el dispositivo como si estuviera conectado a través de un cable TTL o un cable FTDI.
Esto significa que, en teoría, el dispositivo arduino leería del hardware al hablar también del ESP8266, si tiene otro arduino o un cable TTL, intente conectarlo a las puertas 2 y 3 en el arduino "principal" y debería obtener un similar resultado como para su ejemplo resultado 2. Ya que de esa manera sería proxy a través del arduino. Si no, ese sería un lugar para comenzar a depurar.
Además de eso, solo podría recomendarle que invierta en un TTL 3,3v o un convertidor de nivel lógico. Cuando obtuve mi cable todo salió de la caja.
fuente
Tuve muchos problemas también. En mi caso, los problemas casi se resuelven cambiando de SoftwareSerial a AltSoftSerial . Parecía que en el Uno la biblioteca en serie de software estándar no funcionaba para mí. Después de cambiar, comencé a obtener resultados por primera vez. (También usé cambio de nivel y fuente de alimentación externa para 3.3V)
Y por casi resuelto, quiero decir, sigo teniendo, de vez en cuando, galimatías en la terminal. Entonces, incluso AltSoftSerial no es una solución perfecta. Estaba usando el ESP-07 con una velocidad de datos de 115200 bps.
fuente
Descubrimos que muchos de los problemas con la integración de software serie ESP - Arduino Uno tenían que ver con una velocidad de transmisión incompatible. Creamos este breve tutorial (que incluye una biblioteca de Github) que puede probar y ver si resuelve estos problemas. http://www.instructables.com/id/Simple-ESP8266-Arduino-Uno-Software-Serial-Integra/
fuente
Aquí hay algunos consejos al usar el módulo ESP8266.
No use el software en serie ya que no es confiable, especialmente a velocidades de transmisión más altas.
Siempre conecte el módulo ESP a la computadora y pruebe todos los comandos AT antes de interactuar con Arduino para asegurarse de que está trabajando en la dirección correcta
Haga una placa adaptadora de corriente para que el módulo ESP sea compatible con el suministro Arduino 5v
Consulte también este enlace para obtener más detalles.
fuente