esp8266的简单尝试---远程控制电风扇

使用工具:esp8266 MCU模块,继电器,导线

制作思路:

1.定义开发板D5引脚为输出引脚,控制继电器的闭合与关闭

2.写入TCP客户端,连接运行于服务器上的控制端,当esp8266成功连接wifi后连接服务器,并保持与服务器的通信

3.服务器端发送“open”命令,执行调节D5引脚为低电平(继电器设置为通路),服务器发送“close”命令,执行调节D5引脚为高电平(继电器断开)

 

实现代码:

 

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
/*****************网络设置项 *****************/
const char *STAssid ="fan"; //需要连接路由器的名称
const char *STApassword="zxf834580866"; //路由器的密码
const char *host= "192.168.31.250"; //外网服务器ip
const int httpPort = 83458; //外网服务器端口
WiFiClient client; //声明客户端对象
bool is=0; //用来做连接到服务器后,仅发送一次问候语
int dfs=14; //电风扇,D5
void setup() {
Serial.begin(115200);
Serial.println("");
pinMode(14,OUTPUT);
digitalWrite(14,1);
WiFi.mode(WIFI_STA); //设置为STA模式
WiFi.begin(STAssid, STApassword); //配置连接信息,开始连接
//运行自定义函数,在未连接到路由器的过程中,打印输出......,直到连接成功
gotoWifi();
Serial.println("连接路由器成功");
//此时已经连接到路由器,可以开始连接远程服务器
lianjie();
}

void loop() {
/****************检测WiFi连接状态****************/
if (WiFi.status() != WL_CONNECTED) {
WiFi.disconnect();
WiFi.begin(STAssid, STApassword);
gotoWifi();
}
else{
if (!client.connected()) { //如果没有连接到服务器
is=0;
lianjie();
return;
}
else{ //否则,就是连接到服务器
if(is==0){
client.print("hello,server");
is=1;
}
}
}
Tcp_Handler(Read_Tcp()); //读取服务器信息,并处理
}
//读取服务器信息,返回String类型
String Read_Tcp(){
String data = "";
while (client.available() > 0){
data += char(client.read());
delay(2);
}
return data;
}
//处理服务器信息
void Tcp_Handler(String data){
if(data!=""){
Serial.print("收到服务器信息:");
Serial.println(data);
if(data=="open"){
digitalWrite(14,0);
client.print("open led");
}
else if(data=="close"){
digitalWrite(14,1);
client.print("close led");
}
}
}
//连接路由器
void gotoWifi(){
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
}
//连接服务器
void lianjie() {
Serial.println("开始连接服务器");
client.connect(host, httpPort);
delay(1000);
}

服务器端使用易语言

实现代码:

.版本 2
.支持库 ExuiKrnln

.子程序 _滑动按钮EX1_选中状态改变, 整数型
.参数 新状态, 整数型
.参数 附加参数1, 整数型
.参数 附加参数2, 整数型
.参数 附加参数3, 整数型

.如果真 (新状态 = 1)
服务器1.发送数据 (客户地址, 编码_gb2312到utf8 (“open”), )
标签_1.标题 = “开”
.如果真结束
.如果真 (新状态 = 0)
服务器1.发送数据 (客户地址, 编码_gb2312到utf8 (“close”), )
标签_1.标题 = “关”
.如果真结束

 

下个版本准备写服务器中继,可以通过网页端,手机端,电脑端控制,不局限于局域网。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注