电子设备和模块之间的无线通信非常重要,以使它们在物联网世界中变得“合适”。HTTP协议和HTML语言使在世界各地通过Web传输数据成为可能。我们已经介绍了一些将Wi-Fi与Arduino结合使用的项目,请参阅入门指南:
- 使用Arduino和ESP8266 WiFi模块发送电子邮件
- 使用Arduino的WiFi控制机器人
- 使用Arduino和Wi-Fi控制RGB LED
现在,在本教程中,我们正在构建一个使用Arduino和Wi-Fi模块将数据发送到Web的程序。为此,我们首先需要一个全局服务器或本地服务器的IP地址,为方便起见和演示目的,我们在这里使用本地服务器。
所需组件:
- Arduino UNO
- ESP8266 Wi-Fi模块
- USB电缆
- 连接线
- 笔记本电脑
- 电源供应
Wi-Fi模块ESP8266:
电路连接:
下面给出了“将数据从Arduino发布到Web”的电路图。我们主要需要一个 Arduino和ESP8266 Wi-Fi模块。ESP8266的Vcc和GND引脚直接连接到3.3V,Arduino的GND和CH_PD也连接到3.3V。ESP8266的Tx和Rx引脚直接连接到Arduino的引脚2和3。软件串行库用于允许在Arduino的引脚2和3上进行串行通信。我们已经详细介绍了ESP8266 Wi-Fi模块与Arduino的接口。
通过使用此处的软件串行库,我们允许在引脚2和3上进行串行通信,并将它们分别设置为Rx和Tx。默认情况下,Arduino的引脚0和1用于串行通信,但是通过使用SoftwareSerial库,我们可以允许在Arduino的其他数字引脚上进行串行通信。
注意:要在串行监视器上观看ESP8266的响应,请打开Arduino IDE的串行监视器。
工作说明:
首先,我们需要将Wi-Fi模块连接到Wi-Fi路由器以进行网络连接。然后,我们将配置本地服务器,将数据发送到Web,最后关闭连接。以下步骤已说明了此过程和命令:
1.首先,我们需要通过发送 AT 命令来测试Wi-Fi模块,它将回复包含 OK 的响应。
2.在此之后,我们需要使用命令 AT + CWMODE = mode_id 选择模式,我们已使用Mode id = 3。模式编号:
1 =站模式(客户端)
2 = AP模式(主机)
3 = AP +站模式(是,ESP8266具有双模式!)
3.现在,我们需要使用命令 AT + CWQAP 断开Wi-Fi模块与先前连接的Wi-Fi网络的连接 , 因为ESP8266默认自动与任何先前可用的Wi-Fi网络连接
4.之后,用户可以使用 AT + RST 命令重置模块。此步骤是可选的。
5.现在我们需要使用给定的命令将ESP8266连接到Wi-Fi路由器
6.现在,使用给定命令获取IP地址:
它将返回一个IP地址。
7.现在通过使用 AT + CIPMUX = 1 启用多路复用模式(1用于多路连接,0用于单路连接)
8.现在使用 AT + CIPSERVER = 1,port_no (端口可能为80)将ESP8266配置为服务器。现在您的Wi-Fi已准备就绪。这里的“ 1”用于创建服务器,“ 0”用于删除服务器。
9.现在,通过使用给定的命令,用户可以将数据发送到本地创建的服务器:
ID = ID号 传输连接数
长度=数据的最大长度为2 kb
10.将ID和Length发送到服务器后,我们需要发送如下数据: Serial.println(“ [email protected]”);
11.发送数据后,我们需要通过给定命令关闭连接:
现在,数据已传输到本地服务器。
12.现在,在Web浏览器的地址栏中输入IP地址,然后按Enter。现在,用户可以在网页上看到传输的数据。
查看下面的视频以了解完整的过程。
编程步骤:
1.包括SoftwareSerial库,以允许在PIN 2和3上进行串行通信,并声明一些变量和字符串。
#包括
2.在此之后,我们必须定义一些功能来执行所需的任务。
在 Setup() 函数中,我们初始化ESP8266的内置串行UART通信为 client.begin(9600); 波特率为9600。
void setup(){Serial.begin(9600); client.begin(9600); wifi_init(); Serial.println(“ System Ready..”); }
3.在 wifi_init() 函数中,我们通过发送一些命令(例如,重置,设置模式,连接到路由器,配置连接等 )来 初始化wifi模块。这些命令也在上面的描述部分中进行了说明。
void wifi_init(){connect_wifi(“ AT”,100); connect_wifi(“ AT + CWMODE = 3”,100); connect_wifi(“ AT + CWQAP”,100); connect_wifi(“ AT + RST”,5000);……………….
4.在 connect_wifi() 函数中,我们向ESP8266发送命令数据,然后从ESP8266 Wi-Fi模块读取响应。
无效connect_wifi(String cmd,int t){int temp = 0,i = 0; while(1){Serial.println(cmd);……………….
5. sendwebdata() 函数用于将数据发送到本地服务器或网页。
void sendwebdata(String webPage){int ii = 0; while(1){unsigned int l = webPage.length(); Serial.print(“ AT + CIPSEND = 0,”); client.print(“ AT + CIPSEND = 0,”);……………….
6. void send() 函数用于将数据字符串发送到 sendwebdata() 函数。这将进一步发送到网页。
无效的Send(){网页=“
欢迎来到电路文摘
“; sendwebdata(webpage); webpage = name; webpage + = dat;…………………7. get_ip() 函数用于获取本地创建的服务器的IP地址。
8.在 void loop() 函数中,我们向用户发送指令以刷新页面,并检查服务器是否已连接。当用户刷新或请求网页时,数据自动传输到相同的IP地址。
无效loop(){k = 0; Serial.println(“请刷新页面”); while(k <1000)………………
我们可以使用此过程显示从Arduino到网页的任何数据,例如室温和湿度,时钟时间,GPS坐标,心跳率等。