Arduino使用ESP8266模块联网

上一篇文章已经介绍了 利用 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设置号端口开始监听
    这里写图片描述
  3. 现在 打开 arduino所在的串口,向串口发送数据 会被TCPServer收到,TCPServer发数据arduino的串口也会收到

这里写图片描述

总结

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

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

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

  • 18
    点赞
  • 142
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
1. 准备材料 1)Arduino UNO板 2)ESP8266模块 3)杜邦线若干 2. 连接电路 1)将ESP8266模块的VCC引脚连接Arduino UNO板的5V引脚上。 2)将ESP8266模块的GND引脚连接Arduino UNO板的GND引脚上。 3)将ESP8266模块的TXD引脚连接Arduino UNO板的RX引脚上。 4)将ESP8266模块的RXD引脚连接Arduino UNO板的TX引脚上。 5)将ESP8266模块的CH_PD引脚连接Arduino UNO板的3.3V引脚上。 6)将ESP8266模块的GPIO0引脚连接Arduino UNO板的GND引脚上。 7)将ESP8266模块的RST引脚连接Arduino UNO板的3.3V引脚上。 3. 编写代码 以下是一个简单的连接WiFi并获取天气信息的Arduino代码示例: ``` #include <SoftwareSerial.h> // 引用SoftwareSerial库 SoftwareSerial esp8266(2, 3); // 设置软串口Rx和Tx引脚 void setup() { Serial.begin(9600); // 初始化串口 esp8266.begin(9600); // 初始化软串口 delay(1000); // 延时1秒 esp8266.println("AT+RST"); // 发送重启指令 delay(1000); // 延时1秒 esp8266.println("AT+CWMODE=1"); // 发送设置模式指令 delay(1000); // 延时1秒 esp8266.println("AT+CWJAP=\"WiFi名称\",\"WiFi密码\""); // 发送连接WiFi指令 delay(10000); // 延时10秒,等待连接完成 } void loop() { esp8266.println("AT+CIPSTART=\"TCP\",\"api.openweathermap.org\",80"); // 发送连接服务器指令 delay(1000); // 延时1秒 esp8266.println("AT+CIPSEND=47"); // 发送数据长度指令 delay(1000); // 延时1秒 esp8266.println("GET /data/2.5/weather?q=Shanghai,CN&APPID=YourAPIKey HTTP/1.1\r\n"); // 发送HTTP请求 esp8266.println("Host: api.openweathermap.org\r\n"); // 发送Host头部 esp8266.println("Connection: close\r\n"); // 发送Connection头部 esp8266.println(); // 发送空行 delay(1000); // 延时1秒 while (esp8266.available()) { // 当有数据可读时 Serial.write(esp8266.read()); // 输出数据到串口 } delay(5000); // 延时5秒 } ``` 4. 运行代码代码上传到Arduino UNO板上,打开串口监视器,看到输出结果即表示连接成功。可以根据自己的需要修改代码,实现更复杂的网络功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值