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)

 

posted @ 2018-11-05 12:27  淚笑  阅读(4336)  评论(0编辑  收藏  举报