如何使 AT 命令以编程方式在 arduino 中为 ESP8266 wifi 模块工作
How to make AT commands work programatically in arduino for ESP8266 wifi module
我正在使用 arduino 上的 ESP8266 wifi 模块从 arduino 到 raspberry-pi 无线进行简单的 tcp 通信 uno.The tcp 服务器是 运行 在 raspberry-pi.I am能够以 9600 的波特率在 arduino 串行监视器中使用以下 AT 命令进行 TCP 通信。
AT+CIPMUX=1
AT+CIPSTART=4,"TCP","192.168.43.150",7777
AT+CIPSEND=4,5
>hai
如何在 arduino 中以编程方式执行此操作 sketch.I 在我的 arduino uno 上使用了以下代码,但仍然没有任何 success.The 波特率仅为 9600,因为它直接在串行监视器中工作。
#include <SoftwareSerial.h>
SoftwareSerial esp8266(2,3);
void setup()
{
Serial.begin(9600);
esp8266.begin(9600); // your esp's baud rate might be different
}
void loop()
{
esp8266.println("AT");
if(esp8266.available()) // check if the esp is sending a message
{
while(esp8266.available())
{
// The esp has data so display its output to the serial window
char c = esp8266.read(); // read the next character.
Serial.write(c);
}
}
}
连接如下
ESP8266 Arduino Uno
Vcc 3.3V
CH_PD 3.3V
RX RX(PIN 2)
TX TX(PIN 3)
GND GND
我遇到了同样的问题,但还没有找到解决办法。
但是您的连接有点,您必须将 ESP8266 模块的 TX 引脚连接到 arduino 的 RX 引脚,并将 ESP8266 模块的 RX 引脚连接到 TX 引脚。
希望这对你有所帮助
这可能有点晚了,但我最近遇到了类似的问题。如果已排序,请随时忽略它。
根据您的 ESP8266 模块的固件版本,9600 的波特率可能不起作用,试试 115200 - 它可能被证明更可靠?
我认为上面的代码不起作用的主要原因是 ESP 在 AT 命令末尾需要换行符和回车符 returns。串行监视器为您添加这些。与其发送 AT
,不如尝试发送 AT\r\n
。这应该鼓励 ESP 使用 OK
回复,或者如果回显打开 AT\r\nOK
.
Serial.available()
还检查接收缓冲区中是否有内容 - 不幸的是这需要时间,所以我不得不在其中放置一个 delay(10)
以使其在缓冲区中注册一个字符。
#include <SoftwareSerial.h>
//i find that putting them here makes it easier to
//edit it when trying out new things
#define RX_PIN 2
#define TX_PIN 3
#define ESP_BRATE 115200
SoftwareSerial esp8266(RX_PIN, TX_PIN);
void setup()
{
Serial.begin(9600);
esp8266.begin(ESP_BRATE); // I changed this
}
void loop()
{
esp8266.println("AT\r\n"); //the newline and CR added
delay(10); //arbitrary value
if(esp8266.available()) // check if the esp is sending a message
{
while(esp8266.available())
{
// The esp has data so display its output to the serial window
char c = esp8266.read(); // read the next character.
Serial.write(c);
}
}
}
我的下一个问题是我的 ESP 的 0 个回复是不可靠的 - 有时它们被读取为正常但有时它们是垃圾值。我怀疑是模块功率不够的问题。
我正在使用 arduino 上的 ESP8266 wifi 模块从 arduino 到 raspberry-pi 无线进行简单的 tcp 通信 uno.The tcp 服务器是 运行 在 raspberry-pi.I am能够以 9600 的波特率在 arduino 串行监视器中使用以下 AT 命令进行 TCP 通信。
AT+CIPMUX=1
AT+CIPSTART=4,"TCP","192.168.43.150",7777
AT+CIPSEND=4,5
>hai
如何在 arduino 中以编程方式执行此操作 sketch.I 在我的 arduino uno 上使用了以下代码,但仍然没有任何 success.The 波特率仅为 9600,因为它直接在串行监视器中工作。
#include <SoftwareSerial.h>
SoftwareSerial esp8266(2,3);
void setup()
{
Serial.begin(9600);
esp8266.begin(9600); // your esp's baud rate might be different
}
void loop()
{
esp8266.println("AT");
if(esp8266.available()) // check if the esp is sending a message
{
while(esp8266.available())
{
// The esp has data so display its output to the serial window
char c = esp8266.read(); // read the next character.
Serial.write(c);
}
}
}
连接如下
ESP8266 Arduino Uno
Vcc 3.3V
CH_PD 3.3V
RX RX(PIN 2)
TX TX(PIN 3)
GND GND
我遇到了同样的问题,但还没有找到解决办法。 但是您的连接有点,您必须将 ESP8266 模块的 TX 引脚连接到 arduino 的 RX 引脚,并将 ESP8266 模块的 RX 引脚连接到 TX 引脚。 希望这对你有所帮助
这可能有点晚了,但我最近遇到了类似的问题。如果已排序,请随时忽略它。
根据您的 ESP8266 模块的固件版本,9600 的波特率可能不起作用,试试 115200 - 它可能被证明更可靠?
我认为上面的代码不起作用的主要原因是 ESP 在 AT 命令末尾需要换行符和回车符 returns。串行监视器为您添加这些。与其发送 AT
,不如尝试发送 AT\r\n
。这应该鼓励 ESP 使用 OK
回复,或者如果回显打开 AT\r\nOK
.
Serial.available()
还检查接收缓冲区中是否有内容 - 不幸的是这需要时间,所以我不得不在其中放置一个 delay(10)
以使其在缓冲区中注册一个字符。
#include <SoftwareSerial.h>
//i find that putting them here makes it easier to
//edit it when trying out new things
#define RX_PIN 2
#define TX_PIN 3
#define ESP_BRATE 115200
SoftwareSerial esp8266(RX_PIN, TX_PIN);
void setup()
{
Serial.begin(9600);
esp8266.begin(ESP_BRATE); // I changed this
}
void loop()
{
esp8266.println("AT\r\n"); //the newline and CR added
delay(10); //arbitrary value
if(esp8266.available()) // check if the esp is sending a message
{
while(esp8266.available())
{
// The esp has data so display its output to the serial window
char c = esp8266.read(); // read the next character.
Serial.write(c);
}
}
}
我的下一个问题是我的 ESP 的 0 个回复是不可靠的 - 有时它们被读取为正常但有时它们是垃圾值。我怀疑是模块功率不够的问题。