Arduino leonardo+esp8266-01作服务端与APP进行数据通信
esp8266-01调试
一、硬件设备
1.USB转TTL
2.esp8266-01
3.杜邦线
4.电脑
二、接线
ESP8266 | TTL-USB |
VCC | VCC(最好选择3.3V) |
CH_PD | VCC(最好选择3.3V) |
GND | GND |
URXD | TXD |
UTXD | RXD |
按表格接好线如下
三、调试
把usb转ttl模块插入电脑,在 此电脑-管理-设备管理器 中查看该设备端口号
若是出现上图的黄色箭头警告,就卸载原usb转ttl驱动,重新下载ft232r,安装其中的
驱动下载:https://dl.pconline.com.cn/download/845836-1.html
正常后应该是这样的
打开串口调试软件,选择相应的串口号,esp8266波特率一般都是115200,所以这里设置为115200,勾选上发送新行,最后点击打开串口
串口调试软件下载:http://www.ouyaoxiazai.com/soft/yyrj/135/12447.html
测试一条esp8266的重启指令AT-RST,如果和下图一样说明设备工作正常
总结下大概会用到的指令:
详细指令见:https://www.cnblogs.com/lifan3a/articles/7070028.html
重启:AT+RST
设置模式:AT+CWMODE = <mode> //此设置需要重启生效
<mode>:1 Station模式 2 AP模式 3 AP+Station模式
/*AP可以理解为发出热点信息的路由器,而station则是连接热点的设备*/
设置是否多连接:AT+CIPMUX=<mode>
1 多连接模式 0 单连接模式
创建服务器:AT+CIPSERVER=<mode>[,port]
mode:0-关闭server模式,1-开启server模式 ,port:端口号,缺省值为333
查询IP:AT+CIFSR
在串口调试工具里依次执行
AT+CWMODE=3
AT+RST
AT+CIPMUX=1
AT+CIPSERVER=1,8080
AT+CIFSR
然后手机打开wifi,应该就能搜索到该esp8266发出的热点信息
esp8266-01与手机APP通信
手机上下载一个名为网络调试助手的软件
点击TCP Clien,然后点击右上角的+号,最后按照之前设定的端口,和esp8266的ip填写信息
若是正常,则可以在串口调试工具中看到esp8266反馈的信息
然后在app中的编辑框输入内容,点击发送,esp8266就能收到信息并通过串口通信显示在串口工具中
esp8266-01连接Arduino leonardo
一、硬件设备
1.esp8266
2.arduino leonardo
3.电脑
二、接线
ESP8266 | arduino leonardo |
VCC | 3.3v |
CH_PD | 3.3v |
GND | GND |
URXD | TX |
UTXD | RX |
三、测试
连接电脑, 在Arduino IDE中选择相应板子型号和端口
上传以下程序
(这段程序可以让arduino作为一个串口调试工具与esp8266交互,电脑上通过串口通信向arduino发送指令,arduino再发给esp8266,而反馈的信息也由esp8266发给arduino,再发送到电脑)
1 String string = ""; 2 3 void setup() { 4 Serial.begin(115200);//电脑与arduino间通信 5 Serial1.begin(115200);//arduino与esp8266间通信 6 } 7 8 void loop() { 9 while (Serial1.available() > 0) 10 { 11 char c = Serial1.read(); 12 string += c; 13 if (Serial1.available() == 0) 14 { 15 Serial.print(string);//打印esp8266反馈的信息 16 string = ""; 17 } 18 delay(10); 19 } 20 21 while (Serial.available() > 0) 22 { 23 char c = Serial.read(); 24 string += c; 25 if (Serial.available() == 0) 26 { 27 Serial1.print(string);//向esp8266发送指令 28 string = ""; 29 } 30 delay(10); 31 } 32 33 }
上传后打开右上角的串口监视器
测试AT指令
效果如图所示则为正常工作
然后就可以在此发送指令,让esp8266作服务端,手机APP作客户端连接实现APP与arduino的通信
APP通过esp8266控制Arduino
省去电脑手动设置指令,arduino通过串口通信直接发送指令到esp8266,上传以下程序,可实现arduino在上电启动时就自动设置,然后arduino在收到手机特定数据的时候会做出相应操作
1 String string = ""; 2 3 void setup() { 4 Serial.begin(115200);//电脑与arduino间通信 5 Serial1.begin(115200);//arduino与esp8266间通信 6 7 delay(1000); 8 Serial1.print("AT+CIPMUX=1\r\n"); 9 delay(1000); 10 Serial1.print("AT+CIPSERVER=1,8080\r\n"); 11 } 12 13 void loop() { 14 while (Serial1.available() > 0) 15 { 16 char c = Serial1.read(); 17 string += c; 18 if (Serial1.available() == 0) 19 { 20 21 22 if (string.indexOf("hello") >=0) 23 { 24 Serial.print("do something..."); 25 } 26 27 Serial.print(string);//打印esp8266反馈的信息 28 string = ""; 29 } 30 delay(10); 31 } 32 33 while (Serial.available() > 0) 34 { 35 char c = Serial.read(); 36 string += c; 37 if (Serial.available() == 0) 38 { 39 Serial1.print(string);//向esp8266发送指令 40 string = ""; 41 } 42 delay(10); 43 } 44 45 }
若是之前串口监视器没关,就能看到以下信息,说明自动设置完成,若是关了,则先打开串口监视器,然后重新拔插arduino,重新上电
接着手机照之前的步骤连接wifi,再作为 TCP Client 连接服务端,然后发送一句 hello 测试
可以看到esp8266显示已经有客户连接,而且Arduino接收到了hello并作出了相应的操作(这里只是打印了 do something)