上一篇文章已經介紹了 利用 ArduinoIDE開發ESP8266模塊,這篇文章介紹一下arduino怎麼經過ESP8266模塊聯網web
如下程序的主要功能是: 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;
}
}
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
#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());
}
}
至此你的arduino已經能夠進行網絡通訊了,接下來就能夠利用這些加上一個雲服務器就能夠作些有趣的東西了。 eg. 1. arduino接個繼電器能夠實現遠程控制的燈,風扇,電飯鍋。。。。 2. arduino接個l298n直流電機驅動,就能夠控制電機正反轉,電動窗簾,遙控車。。。
作這些東西的過程當中 又 發現了一款 ESP-12E的模塊,已經集成了wifi模塊而且有10個io引腳能夠控制,一樣能夠用ArduinoIDE開發,價格只要15塊左右,打算買個玩玩。服務器
還有一個MQTT協議算是一個比較成熟的作物聯網的比較好的協議網絡