完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一、设计目标
前一阵子偶然接触到点灯科技平台,产生了制作一块ESP8266电路板,拥有以下功能:
三、存在的问题 电路板在制作的过程中比较匆忙,忽视了ESP8266 HSPI引脚难以复用的问题,错误地将其用于0.96寸OLED会导致该OLED无法显示,说明要驱动0.96寸OLED需通过普通IO口连接。同时这个设计也反应出ESP8266 IO口不足的问题。因此OLED显示和按键控制先搁置,目前仅实现物联网功能,通过点灯科技平台接入,以及通过小爱同学语音获取室内温湿度数据。 四、代码 #define BLINKER_PRINT Serial #define BLINKER_WIFI #define BLINKER_MIOT_OUTLET #include char auth[] = "*********";//设备号 char ssid[] = "*********";//无线账号 char pswd[] = "*********";//无线密码 // 新建组件对象 BlinkerButton Button1("HUM_Button"); int count = 0;//加湿器计数器 int count1 = 0;//led翻转计数器 int HUM_OPEN=0;//加湿器标志位 int HUM_State=0;//加湿器开关状态标志位,0关,1开 #define HUM_Button D1 #define LED1 16 #define LED2 14 // 按下按键即会执行该函数 void button1_callback(const String & state) { BLINKER_LOG("get button state: ", state); digitalWrite(LED2, !digitalRead(LED2)); HUM_OPEN=1;//标志位开启 if(digitalRead(LED2)==0) { Button1.print("off"); } else { Button1.print("on"); } } // 如果未绑定的组件被触发,则会执行其中内容 void dataRead(const String & data) { BLINKER_LOG("Blinker readString: ", data); } //小爱同学处理函数 void miotPowerState(const String & state) { BLINKER_LOG("need set power state: ", state); if (state == BLINKER_CMD_ON) { BlinkerMIOT.powerState("on"); BlinkerMIOT.print(); if(HUM_State==0)//处于关闭状态开启 { digitalWrite(LED2, HIGH); HUM_OPEN=1; HUM_State=1;//开启 } } else if (state == BLINKER_CMD_OFF) { BlinkerMIOT.powerState("off"); BlinkerMIOT.print(); if(HUM_State==1)//处于开启状态关闭 { digitalWrite(LED2, LOW); HUM_OPEN=1; HUM_State=0;//关闭 } } } void setup() { // 初始化串口 Serial.begin(115200); #if defined(BLINKER_PRINT) BLINKER_DEBUG.stream(BLINKER_PRINT); #endif // 初始化有LED的IO pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, HIGH); pinMode(LED1, OUTPUT); digitalWrite(LED1, HIGH); pinMode(LED2, OUTPUT); digitalWrite(LED2, LOW); //初始化加湿器引脚 pinMode(HUM_Button, OUTPUT); digitalWrite(HUM_Button, HIGH);//上电关闭 // 初始化blinker Blinker.begin(auth, ssid, pswd); Blinker.attachData(dataRead); Button1.attach(button1_callback);//按键 //小爱回调函数 BlinkerMIOT.attachPowerState(miotPowerState); } void loop() { Blinker.run(); count1++;//led翻转计数器 if(HUM_OPEN==1) { digitalWrite(HUM_Button, LOW); count++; if(count==30) { digitalWrite(HUM_Button, HIGH); count=0; HUM_OPEN=0; } } if(count1==100) { digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); digitalWrite(LED1, !digitalRead(LED1)); count1=0; } } 五、需要注意的问题 新的ESP8266芯片首次烧写代码时需串口连接后手动将GPIO0电平拉低,再按下RST键完成烧写。之后的烧写就无须手动拉低了,直接串口下载即可。本人第一次烧写代码一直烧写失败,一度怀疑是串口下载电路设计上出现问题。 ESP8266接收的命令需与云端(手机APP端)下发的命令一致,才能进行执行。所以在设置点灯APP时需注意代码中的接收命令与云端下发命令要一一对应。详细教程可根据点灯科技官方教程学习,本文提供的是温湿度计手机端控制和小爱童鞋语音控制的项目整合。 根据以上代码,上电后ESP8266接入无线,在手机上的点灯APP中可看到设备在线,可获得温湿度数据并对ESP8266板载LED进行开关灯操作,可通过小爱同学语音获得室内温湿度数据。 |
|
|
|
只有小组成员才能发言,加入小组>>
4274个成员聚集在这个小组
加入小组3275 浏览 0 评论
航顺(HK)联合电子发烧友推出“近距离体验高性能Cortex-M3,免费申请价值288元评估板
4216 浏览 1 评论
4221 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 23:01 , Processed in 0.728939 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号