上一篇文章已经介绍了 利用 ArduinoIDE开发ESP8266模块,这篇文章介绍一下arduino怎么通过ESP8266模块联网
ESP8266模块准备
1. 透传程序烧写
以下程序的主要功能是:
1. 通电自动连接指定wifi
2. 通过tcp协议连接指定服务器的指定端口
3. tcp连接断线重连
4. 10s自动发送心跳包
#include <ESP8266WiFi.h>
const char *ssid = "你的wifi";
const char *password = "wifi密码";
WiFiClient client;
const char *host = "服务器";
const int port = 0;
void setupWifi() {
delay(10);
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 setup ( void ) {
Serial.begin(9600);
setupWifi();
}
int loopCount=0;
void loop ( void ) {
//断线重连
while (!client.connected()){
Serial.println("not connected");
if (!client.connect(host, port)){
Serial.println("connect server ....");
delay(500);
}
}
//透传
while (client.available()){
Serial.write(client.read());
}
while (Serial.available() > 0) {
client.write(Serial.read());
}
//10s发送一次心跳包
delay(500);
loopCount++;
if(loopCount == 20){
client.println("ping");
loopCount=0;
}
}
2. Arduino与ESP8266接线
arduino采用软串口方式与ESP8266模块通信,
1. ESP 3.3v接arduino的3.3v电源
2. ESP EN(CH_PD)接 arduino的3.3v电源
3. ESP 的 TXD 接 arduino的10号引脚
4. ESP 的 RXD 接 arduino的11号引脚
5. ESP 的GND 接 arduino的GND
Arduino模块程序
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
}
void loop() {
while(mySerial.available()){
Serial.write(mySerial.read());
}
while(Serial.available()) {
mySerial.write(Serial.read());
}
}
测试
- 下载个网络调试助手(USR-TCP232-Test-V1.3)
- 打开 tcp server设置号端口开始监听
- 现在 打开 arduino所在的串口,向串口发送数据 会被TCPServer收到,TCPServer发数据arduino的串口也会收到
总结
至此你的arduino已经可以进行网络通信了,接下来就可以利用这些加上一个云服务器就可以做些有趣的东西了。
eg. 1. arduino接个继电器可以实现远程控制的灯,风扇,电饭锅。。。。
2. arduino接个l298n直流电机驱动,就可以控制电机正反转,电动窗帘,遥控车。。。
做这些东西的过程中 又 发现了一款 ESP-12E的模块,已经集成了wifi模块并且有10个io引脚可以控制,同样可以用ArduinoIDE开发,价格只要15块左右,打算买个玩玩。
还有一个MQTT协议算是一个比较成熟的做物联网的比较好的协议