Arduino UNO + esp8266 通信过程记录

想要利用wifi组件来控制led灯,于是开始研究硬件,屡屡碰壁,刚才终于收到了我的HelloWorld……记录一下过程。

没有完全完成,是个坑。第一部分可以信赖。


所需硬件: Arduino UNO, esp8266-01,面包板,10k电阻(可有可无),线。

软件:串口调试工具均可USR-TCP232、还有Arduino IDE自带的串口监测器也OK。

参考教程:http://www.arduino.cn/thread-18359-1-1.html 

点击打开链接

https://wenku.baidu.com/view/43ba33c048d7c1c709a14581.html

(其实内容都差不多,但是……探索的过程为何就如此艰辛呢)


关键点:波特率设置成115200,不是9600。9600收不到回应,115200可以。


接线图

ESP8266 ------UNO
VCC---------- - 3.3v
GND----------GND
CH_PD---10K电阻--3.3v (高电平工作状态) 如果开机8266蓝灯亮,说明电压还高,需要加大电阻。
RX---------- - - -TX PIN2 (Arduino IDE 软串口 示例:SoftWareSerialExample 中指定)
TX-------- - - ---RX PIN3 Arduino IDE 软串口 示例:SoftWareSerialExample 中指定)

电脑USB连接UNO


arduino UNO 烧程序啦

#include <SoftwareSerial.h> 
SoftwareSerial mySerial(3, 2); // RX, TX
void setup()  
{ 
   Serial.begin(115200);
   while (!Serial) {;} 
   Serial.println("hardware serial!"); 
   mySerial.begin(115200);
   mySerial.println("Hello,world!");
}

void loop() 
{
   if (mySerial.available()){
     Serial.write(mySerial.read());
   }
   if (Serial.available()){
     mySerial.write(Serial.read());
   }
}


打开串口监测器,右下角选择NL&CR,波特率115200

应该可以看到输出,不是乱码。

发送  AT+RST

可以收到回应。

===============================================================

以上为软串口调试部分,接下来调试wifi client的部分。

我以为只要有库就可以,然而不是,还需要esp8266的编译环境。

直接以Arduino UNO作为开发板来编译是无法通过的,即便有库文件,也会提示缺少queue.h之类的情况,因为编译环境不满足。

ESP8266/Arduino的Github官网:点击这里

上面这个链接,下载之后是整个环境,它的开发文档里提供了4种方法,第一种直接在编译器里下载,但是,速度巨慢,尝试了很多次都失败了。第二种是适用于Linux系统,我强行把文件复制到hardware,失败,编译的时候会一直提示找不到文件,我复制到library里,依然有无穷无尽的错误。

找到了一篇配置环境的文章,下载了整个环境,再在编译器安装,就不用在线下载了,能够快速安装。编译WifiClient例子,成功。(就是示例文件里的WiFiClient)

参考文章:点击这里

关键点:

  • 下载安装包(网盘链接    提取密码:hdh2 )
  • 将安装包内Arduino15文件夹中的文件全部复制放置到路径: C:\Users\Administrator\AppData\Local\Arduino15 中;注意:AppData文件夹一般都是隐藏的,Win10用户注意需要将路径中的Administrator更换为你的电脑用户名。(文件夹中的其他文件不用动,如果你之前没有安装过esp8266平台,应该不会出现冲突文件!)
  • 回到安装步骤(见上面的链接)从头操作,你会发现到步骤6时跳过了下载过程,直接解压安装,非常快。

=======================================================
以上为ESP8266编译环境配置部分。接下来是上传样例程序到板子。
这里又遇到了问题,我是USB连着UNO的板子,UNO板子接着esp8266模块。
IDE上选择开发板肯定得是ESP8266 MODULE,否则编译不通过。但是上传时,提示espcomm_open failed之类的,因为串口直接连接的是UNO 板,自然得不到esp8266模块的回应。

到这里,决定不采用ESP8266库,因为可能必须要开发板。
直接通过软串口发送AT指令来与服务器通信。

之后就是一系列发指令,连接wifi,连接服务器,发送GET请求,
然后就一直卡在GET请求这里了,自己的格式似乎总是不对。遂弃之。原理上来说,GET请求发给服务器之后,服务器会返回几个数据,这样UNO板子就可以进行计算了。

  • 3
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Arduino UnoESP8266都是常用的微控制器板,用于控制和通信等应用。 Arduino Uno是一款基于ATmega328P微控制器的开发板,具有丰富的输入输出引脚和通信接口,可用于控制各种传感器和执行器。它适合初学者和爱好者,易于学习和使用,有大量的文档和教程。 ESP8266是一款低成本、高性能的Wi-Fi模块,它可以作为单独的微控制器使用或与其他微控制器配合使用。ESP8266支持TCP/IP协议栈,可通过Wi-Fi连接到互联网和其他设备。它广泛应用于物联网和智能家居等领域。 因此,Arduino UnoESP8266都是非常有用的微控制器板,它们可以用于控制和通信等各种应用。具体选择哪一款,取决于应用场景和需求。 ### 回答2: arduino unoesp8266通信是通过串口通信实现的。由于arduino uno具备uart串口,而esp8266芯片具备wifi功能,故两者可通过串口连接进行通信。 首先需要在arduino ide中下载并安装esp8266开发库,同时确保将esp8266与arduino uno通过串口连接。一般来说,可以将esp8266的tx引脚连接到arduino uno的rx引脚,将esp8266的rx引脚连接到arduino uno的tx引脚,再通过共同的地线相连。 接着,在arduino ide中打开串口监视器,选择波特率为9600,通过AT指令测试esp8266的wifi连接。如果连接成功,即可通过串口向esp8266发送指令来控制其工作,如设置wifi连接方式、连接wifi、创建tcp连接等。 此外,可以在arduino uno上编写代码,通过esp8266与网络进行通信,如向远程服务器发送数据、从远程服务器获取数据等。需要注意的是,esp8266芯片的电压较低,可能不足以直接驱动一些外设,此时可以通过arduino uno提供的电源和信号放大器等组件来进行辅助。 总之,arduino unoesp8266通信过程需要先进行串口连接,然后通过AT指令测试并设置esp8266的wifi连接,最后可以在arduino uno上编写代码实现与网络的通信。这种通信方式在物联网应用中较为常见,具有一定的应用前景。 ### 回答3: Arduino UnoESP8266是两种常见的微控制器,在很多项目中常常需要它们之间进行通信。因此,本文将介绍如何实现Arduino UnoESP8266之间的通信。 第一步:连接 首先,我们需要将Arduino UnoESP8266连接起来。可以使用软串口或硬串口进行连接。如果您要使用软串口连接,请将ESP8266的RX连接到Arduino Uno的TX,将ESP8266的TX连接到Arduino Uno的RX。如果您要使用硬串口连接,则只需要将Arduino Uno的TX连接到ESP8266的RX,将Arduino Uno的RX连接到ESP8266的TX。 第二步:编程 接下来,我们需要编写程序来实现通信。您可以使用Arduino IDE来编写程序。首先,您需要安装ESP8266的库,然后在程序中包含ESP8266库。接下来,您需要设置ESP8266模块的波特率、SSID和密码等参数。然后,您可以在Arduino Uno上利用软串口或硬串口发送和接收数据。 例如,以下这段代码可以让ESP8266模块连接到WiFi,并向终端输出IP地址和连接状态: #include <ESP8266WiFi.h> const char* ssid = "WiFi SSID"; const char* password = "WiFi Password"; void setup() { Serial.begin(115200); delay(10); // Connect to WiFi network Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void loop() { // nothing to do here } 第三步:测试 现在,您可以上传并运行程序,然后使用终端监视器来查看ESP8266模块是否成功连接到WiFi并输出IP地址和连接状态。您还可以使用终端输入指令来向ESP8266发送数据,然后在Arduino Uno上接收和处理数据。 例如,以下这段代码可以在Arduino Uno上利用软串口接收来自ESP8266的数据,并打印到终端: #include <SoftwareSerial.h> SoftwareSerial ESPserial(2, 3); // RX | TX void setup() { Serial.begin(9600); ESPserial.begin(9600); } void loop() { if (ESPserial.available()) { Serial.write(ESPserial.read()); } if (Serial.available()) { ESPserial.write(Serial.read()); } } 通过这种方式,Arduino UnoESP8266之间可以轻松实现通信,并且您可以根据项目的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值