Arduino篇(一)esp8266实现温控和语音控制风扇

您所在的位置:网站首页 玩转esp32电风扇 Arduino篇(一)esp8266实现温控和语音控制风扇

Arduino篇(一)esp8266实现温控和语音控制风扇

2024-07-16 21:24| 来源: 网络整理| 查看: 265

一、温湿度控制风扇

1、功能说明 通过改变外界温湿度,由于条件限制,采用口哈气的方法。传感器接收数据,当测量的湿度(h)大于40.00%,温度大于30度时,电机正转,转速200,此时绿灯亮;当测量湿度低于这个数值时,电机反转,转速125,此时红灯亮。 2、实验结果图 在这里插入图片描述 3、程序

#define BLINKER_WIFI //#define BLINKER_WITHOUT_SSL //blinker默认使用加密方式进行远程通信,但通信加密会消耗大量的RAM,如果您对通信安全性无要求, //可以添加宏BLINKER_WITHOUT_SSL用以获得更多可用RAM,BLINKER_WITHOUT_SSL目前仅可用于ESP8266,其他设备的RAM足以进行加密通信 #include #include char auth[] = "90173a01b9ac"; char ssid[] = "xiaoju"; char pswd[] = "123123123"; // 新建组件对象 BlinkerButton Button1("btn-lfg");//组件对象,要和APP组件中的“数据键名”一致 ///读取DHTXX传感器相关定义和变量// BlinkerNumber HUMI("humi"); BlinkerNumber TEMP("temp"); #define DHTPIN D7 //定义单总线协议传输的数据引脚 //传感器类型选择 #define DHTTYPE DHT11 // DHT 11 //#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 //#define DHTTYPE DHT21 // DHT 21 (AM2301) DHT dht(DHTPIN, DHTTYPE); float humi_read = 0, temp_read = 0; // 心跳包函数 用于数据同步、状态查询。 void heartbeat() { //将设备端采集的温湿度数据,通过心跳包同步数据的方式,显示到APP上 HUMI.print(humi_read); TEMP.print(temp_read); } // 按下按键即会执行该函数 void button1_callback(const String & state) { BLINKER_LOG("get button state: ", state);//APP中的Monitor控件打印的信息 if (state=="on") { digitalWrite(LED_BUILTIN, LOW);//打开LED灯 digitalWrite(D2, LOW);//打开LED灯 // 反馈开关状态 Button1.print("on"); } else if(state=="off"){ digitalWrite(LED_BUILTIN, HIGH);//关闭LED灯 digitalWrite(D2, HIGH);//打开LED灯 // 反馈开关状态 Button1.print("off"); } } const int IA=D1; const int IB=D3; void setup() { Serial.begin(115200); BLINKER_DEBUG.stream(Serial); BLINKER_DEBUG.debugAll(); pinMode(LED_BUILTIN, OUTPUT); pinMode(D2, OUTPUT); pinMode(D7,OUTPUT); pinMode(IA,OUTPUT); pinMode(IB,OUTPUT); pinMode(D4,OUTPUT); digitalWrite(LED_BUILTIN, HIGH);//默认熄灭LED digitalWrite(D2, HIGH); Blinker.begin(auth, ssid, pswd); Button1.attach(button1_callback);//绑定按键回调 //注册一个心跳包 Blinker.attachHeartbeat(heartbeat); dht.begin();//DTHXX传感器初始化 } void loop() { Blinker.run(); float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) || isnan(t)) { BLINKER_LOG("Failed to read from DHT sensor!"); } else { BLINKER_LOG("Humidity: ", h, " %"); BLINKER_LOG("Temperature: ", t, " *C"); humi_read = h; temp_read = t; } if (h>40.00||t>30) { digitalWrite(D2, LOW); //绿灯亮 digitalWrite(D4, HIGH); //红灯灭 forward(); //执行前进(正转)函数 delay(2000); } else { digitalWrite(D2, HIGH); //绿灯灭 digitalWrite(D4, LOW); //红灯亮 backward(); //执行后退(反转)函数 delay(2000); } Blinker.delay(2000); } void forward() //前进函数 { byte speed=200; analogWrite(IA,speed); analogWrite(IB,0); } void backward() //后退函数 { byte speed=125; analogWrite(IA,0); analogWrite(IB,speed); }

其中部分代码可以不用参考,因为我还另外做了手机端app控制。 要调用blinker-library-master和DHT-sensor-library-master的库,提前将库在网上下载解压到libraries中,并加载使用。

二、小爱同学控制风扇转动

1、功能说明 小爱同学绑定点灯科技手机应用blinker账号,程序中设定好WIFI名称及密码,连接在线设备,当说出“小爱同学,打开风扇”,电机转动,灯亮;当说出“小爱同学,关掉风扇”,风扇停止转动,灯灭; 2、实验结果图 在这里插入图片描述 3、程序

#define BLINKER_WIFI //用于指定设备接入方式为WIFI,如果为蓝牙接入 BLINKER_BLE #define BLINKER_MIOT_LIGHT //小爱同学支持LED灯控制 #include //调用点灯科技Blinker库 char auth[] = "90173a01b9ac"; //设备密钥 char ssid[] = "xiaoju"; //wifi名称 char pswd[] = "123123123"; //wifi密码 // 新建组件对象 BlinkerButton Button1("btn-abc");//组件对象,要和APP组件中的“数据键名”一致 BlinkerNumber Number1("num-abc"); int counter = 0;//计数器 // 按下按键即会执行该函数 void button1_callback(const String & state) { BLINKER_LOG("get button state: ", state);//APP中的Monitor控件打印的信息 digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));//控制LED灯亮灭,低电平亮,高电平灭 } // 如果未绑定的组件被触发,则会执行其中内容 void dataRead(const String & data) { BLINKER_LOG("Blinker readString: ", data); counter++;//未绑定的组件被触发,就会进行计数 Number1.print(counter); } //小爱电源类回调,例如:开灯/关灯 void miotPowerState(const String & state) { BLINKER_LOG("need set power state: ", state); if (state == BLINKER_CMD_ON) { digitalWrite(D0, LOW);//电机风扇转动 digitalWrite(D1, HIGH); digitalWrite(D2, LOW);//风扇转动时绿灯亮 BlinkerMIOT.powerState("on"); BlinkerMIOT.print(); } else if (state == BLINKER_CMD_OFF) { digitalWrite(D0, HIGH);//电机风扇停止转动 digitalWrite(D1, HIGH); digitalWrite(D2, HIGH);//风扇不转绿灯灭 BlinkerMIOT.powerState("off"); BlinkerMIOT.print(); } } void setup() { // 初始化串口 Serial.begin(115200); BLINKER_DEBUG.stream(Serial); BLINKER_DEBUG.debugAll(); // 初始化有LED的IO pinMode(LED_BUILTIN, OUTPUT);//设置引脚为输出模式 pinMode(D2, OUTPUT); pinMode(D1, OUTPUT); pinMode(D0, OUTPUT); digitalWrite(LED_BUILTIN, LOW);//默认打开LED // 初始化blinker Blinker.begin(auth, ssid, pswd);//连接WiFi和设备上线 Blinker.attachData(dataRead);//如果没有被绑定的组件被触发就执行这个回调 Button1.attach(button1_callback);//绑定按键 //小爱同学注册回调 BlinkerMIOT.attachPowerState(miotPowerState);//注册小爱电源回调 //BlinkerMIOT.attachColor(miotColor);//注册小爱颜色回调 //BlinkerMIOT.attachBrightness(miotBright);//注册小爱亮度回调 //BlinkerMIOT.attachColorTemperature(miotColoTemp);//注册小爱色温回调 } void loop() { Blinker.run(); }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3