乐鑫技术交流
直播中

发生的方式

8年用户 1226经验值
擅长:处理器/DSP
私信 关注
[问答]

如何使用ESP8266模块实现与Arduino Uno和计算机的无线通信?

我正在尝试使用ESP8266模块实现与Arduino Uno和计算机的无线通信。尽管我在使 ESP8266 正常工作方面遇到了初步问题。
起初我只尝试了一个简单的程序来用AT命令测试模块。
代码是:
代码:全选#include
SoftwareSerial ESP8266(2, 3); // RX, TX
void setup()
{
Serial.begin(9600);
Serial.println("Begin"); //print on screen
ESP8266.begin(9600);
}
void loop()
{
//Communication (writing and reading data) with ESP8266 through Arduino IDE Serial Monitor
if (ESP8266.available())
Serial.write(ESP8266.read());
if (Serial.available()){
ESP8266.write(Serial.read());
}
}


但我只在打开 Arduino IDE 串行监视器时返回“开始”,有时返回“垃圾”(随机的无意义和不间断的字符)。通过发送 AT 命令,尽管 Arduino 和 ESP8266 的通信 LED 都亮着,但我没有收到任何回复。
我试图在上述程序中设置其他波特率但没有任何效果。
我读到了一些关于 ESP8266 padron 波特率的信息,通常是 115200(尝试过但也没有结果)并且这种在 Arduino UNO 中通信的高波特率不能很好地工作所以我得到了一个示例程序来改变波特率作为 AT 命令它不工作。
代码:
代码:全选// adapted by FILIPEFLOP
#include
//RX pin 2, TX pin 3
SoftwareSerial esp8266(2, 3);
#define DEBUG true
void setup()
{
  Serial.begin(9600);
  // Configure the initial speed of ESP8266
  esp8266.begin(115200);
  sendData("AT+RSTrn", 2000, DEBUG); //Reset the module
  delay(1000);
  Serial.println("Firmware version"); //print on serial monitor
  delay(3000);
  sendData("AT+GMRrn", 2000, DEBUG); // requires the //firmware version
  // Configure the wanted speed for ESP8266 communication
  sendData("AT+CIOBAUD=19200rn", 2000, DEBUG); // (also //tried other than 19200 but no results)
  Serial.println("** End**"); //print on screen
}
void loop() {}
String sendData(String command, const int timeout, boolean debug)
{
  // Send AT commands to ESP8266
  String response = "";
  esp8266.print(command);
  long int time = millis();
  while ( (time + timeout) > millis())
  {
    while (esp8266.available())
    {
      // The esp has data so display its output to the serial window
      char c = esp8266.read(); // read the next character.
      response += c;
    }
  }
  if (debug)
  {
    Serial.print(response);
  }
  return response;
}


这也在串行监视器上只显示我打印的“固件版本”和“***结束***”,仅此而已,实际上它应该显示这样的东西:(
来自 FILIPEFLOP 的照片,我从那里得到的网站代码,这是他们的经验中显示的内容)
一些补充:
物理连接方案:
另请阅读有关 ESP8266 可能消耗比 Arduino Uno 所能承受的更多电流的信息,因此也尝试过不将 ESP8226 的 Vcc 连接到 3V3 Arduino 引脚,而是连接到电源一个外部稳定源(是的,将源的 GND 与 Arduino、ESP8226 和分压器 GND 相连)但它再次不起作用。
* 我没有使用按钮部分。
有人可以帮我吗?
                                       
               

更多回帖

发帖
×
20
完善资料,
赚取积分