ArduinoIDE开发ESP8266 远程控制继电器(物联网插座)之入门篇 | 您所在的位置:网站首页 › 串口控制继电器 › ArduinoIDE开发ESP8266 远程控制继电器(物联网插座)之入门篇 |
版权声明:本文为博主原创文章,若需转载请注明来源。 本文将针对初学者ArduinoIDE开发ESP8266做一个入门引导,让初学者快速实现自己的第一个HelloWord! 这篇文章在心中积攒了很久今天终于得以昭雪,心情无比的激动也十分的沉重,激动是因为我为期一年的ESP8266学习开发终于可以告一段落了,可以来这同大家分享我的学习成果,而“沉重”也是因为我这为期一年的学习,这个学期大四,就在此刻百感交集……打住!再写就变味了,从技术文档变成了情感宣泄了。学习总是痛苦的,刚刚开始学习一个东西要耐得住性子。 ##一、工欲善其事,必先利其器 欲练此功,必先自宫(哈哈!开个玩笑) 1、ESP8266(哪一款都行,我用的是ESP8266-01) 2、usb转串口ttl(要有3.3V电源的,ch340,cp2102这些都行) 3、继电器 4、ArduinoIDE 这是我之前收藏的集成开发环境,下载解压直接打开Arduino.exe就行 集成开发环境下载地址: https://pan.baidu.com/s/1slVw7hV (如果你之前也用arduinoIDE且不想两个切换、可以看看这篇文章http://www.arduino.cn/thread-17895-1-1.html我就有这个强迫症) ####我这里用的是物联网继电器模块,专门用于远程控制开关和物联网插座的板子有需要的可以到这个链接购买https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.25911debEcCQSr&ft=t&id=608005506282 1、TTL与ESP连接,详细教程请看http://www.arduino.cn/thread-18958-1-4.html 2、利用Doit.am远程信息转发服务实现远程控制(多个客户端连接服务器,一个客户端向服务器发送数据,服务器向其他客户端群发接受到的消息)到这个网站获取自己的IP和端口号http://tcp.doit.am/打开后你会看到这么一个页面,记下端口号和IP下面我们将需要它作为数据中转站,实现远程控制 3、不说了直接上代码,是时候展现真正的技术了 我用GPIO2控制继电器 #include #define JDQ 2 const char* ssid = "FxMan";//待连接WIFI const char* password = "115104234";//待连接WIFI密码 const char* serverIP = "115.29.109.104";//你再网站上得到的IP int serverPort = 6598;//你在网站上得到的端口号 WiFiClient client; bool bConnected = false; char buff[512]; int nm = 0; void setup() { delay(100); Serial.begin(115200); Serial.println("Startup"); pinMode(JDQ, OUTPUT); WiFi.mode(WIFI_STA);//设置模式为STA WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) {//等待WiFi连接成功 delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void loop() { ClientToServer(); } void ClientToServer() { if (bConnected == false)//如果从服务器断开或者连接失败,则重新连接 { if (!client.connect(serverIP, serverPort))//如果连接失败 { Serial.println("connection failed"); delay(5000); return; } bConnected = true; Serial.println("connection ok"); } else if (client.available())//如果有数据到达 { //Serial.println("Data is coming"); while (client.available())//接收数据 { buff[nm++] = client.read(); if (nm >= 511) break; } buff[nm] = 0x00; nm=0; Serial.print(buff);//打印数据到串口 if( buff[0]=='A') { digitalWrite(JDQ, HIGH);//收到数据'A'打开继电器 } else { digitalWrite(JDQ, LOW);//否则关闭 } //client.print(buff); client.flush();//丢弃已写入客户端但尚未读取的字节 } if (client.connected()==false ) { Serial.println(); Serial.println("disconnecting."); bConnected = false; } //检查UART端口数据 if(Serial.available()&&bConnected){ size_t len = Serial.available(); //Serial.println(len); uint8_t sbuf[len]; Serial.readBytes(sbuf, len); //将UART端口数据推送到服务器,实现双向通信 client.write(sbuf, len); } }把上面代码下到ESP8266里,再下载 安卓TCP网络调试助手http://pan.baidu.com/s/1dESMXXZ 更改IP和端口号连接服务器就可以和ESP8266通信了,我的代码是向8266发送A打开继电器,发送其他的关闭继电器,继电器是高电平触发的。 看完教程很多人估计仍有疑问,比如说上面那些函数说明意思在什么地方有相应的说明和例子,不要着急下面列出相关参考资料以便大家学习。 1、相关函数说明可参考https://www.arduino.cc/en/Reference/WiFi虽然是英文网页但在各种翻译工具会帮助你的2、对于没有安卓基础的同学,我推荐一个写安卓应用的软件叫E4A(也叫易安卓)我上面的软件就是用这个写的3、求学嘛,不耻下问。有什么问题实在解决不了可以发邮件到[email protected]我将第一时间回复你,毕竟我也是这么过来的。 |
CopyRight 2018-2019 实验室设备网 版权所有 |