Arduino使用ESP8266模块联网

时间:2021-02-03 22:22:17

上一篇文章已经介绍了 利用 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());
  } 
}  

测试

  1. 下载个网络调试助手(USR-TCP232-Test-V1.3)
  2. 打开 tcp server设置号端口开始监听
    Arduino使用ESP8266模块联网
  3. 现在 打开 arduino所在的串口,向串口发送数据 会被TCPServer收到,TCPServer发数据arduino的串口也会收到

Arduino使用ESP8266模块联网

总结

至此你的arduino已经可以进行网络通信了,接下来就可以利用这些加上一个云服务器就可以做些有趣的东西了。
eg. 1. arduino接个继电器可以实现远程控制的灯,风扇,电饭锅。。。。
    2. arduino接个l298n直流电机驱动,就可以控制电机正反转,电动窗帘,遥控车。。。

做这些东西的过程中 又 发现了一款 ESP-12E的模块,已经集成了wifi模块并且有10个io引脚可以控制,同样可以用ArduinoIDE开发,价格只要15块左右,打算买个玩玩。

还有一个MQTT协议算是一个比较成熟的做物联网的比较好的协议