esp8266基于blinker快速部署物联网
一、物联网任务描述
老师邀请我去给大二新生上课时展示一下单片机,但是只单单展示单片机过于简陋。所以准备快速部署一个物联网设备,展示一下单片机的一种应用场景,也能更好的吸引刚入门的萌新。
本任务基于开源库,部署极快。基于blinker示例库(DHT_WiFi、Button_WiFi),需要下载较新的blinker库、esp8266的包和arduino IDE。项目工程基于Arduino 1.8.19,esp8266-package-3.0.2,blinker-library-0.3.9(都已经打包到项目压缩包中)
环境配置参考:Arduino物联网开发实战0]开发准备-Arduino中文社区 - Powered by Discuz!
任务目标:
- 实现单片机必备入门功能:流水灯
- 实现温湿度读取
- 实现物联网控制
工程部署展示:
二、代码部分
-
首先需要再blinker上创建设备,获取密钥,这个可以参考[Arduino物联网开发实战1]控制开关灯-Arduino中文社区 - Powered by Discuz!
-
打开示例DHT_WiFi和Button_WiFi
-
新建一个新的工程,将DHT示例粘贴进去,也可以直接基于示例工程编写(当然基于的是esp8266开发板,在菜单栏工具中选择开发板)
-
示例DHT_WiFi中DHT的单总线是接在D4引脚(对应GPIO02)可根据需要自己修改,参考ESP8266 NodeMCU引脚说明 - 简书 (jianshu.com)
-
根据需要定义按键,我是参考Button示例,新建了两个按键用来控制流水灯
#define MY_BUTTON "my_button" //示例 #define BUTTON_1 "ButtonKey" //自建按键1 #define BTN_ABC "btn_abc" //自建按键2
-
申明blinker按键,括号内的就是define的按键名字,前面的可以自定义
BlinkerButton My_Button(MY_BUTTON); BlinkerButton Button1(BUTTON_1); BlinkerButton Btn_abc(BTN_ABC);
-
编写按键回调函数,函数名一般以调用的模块加callback,改函数会在模块被触发时调用(blinker按键功能很多,我没有用,可以参考button示例)
//按键按下,流水灯亮起 void my_button_callback(const String & state) { BLINKER_LOG("My Button tap!"); digitalWrite(LED1, LOW);//点亮 delay(200); digitalWrite(LED1, HIGH);//熄灭 digitalWrite(LED2, LOW); delay(200); digitalWrite(LED2, HIGH); digitalWrite(LED3, LOW); delay(200); digitalWrite(LED3, HIGH); digitalWrite(LED4, LOW); delay(200); digitalWrite(LED4, HIGH); }
-
在setup函数中绑定回调,当然也要初始化LED,直接加进去就行
void setup() { Serial.begin(115200); BLINKER_DEBUG.stream(Serial); pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, LOW); /**LED init begin**/ pinMode(LED1, OUTPUT); digitalWrite(LED1, HIGH); pinMode(LED2, OUTPUT); digitalWrite(LED2, HIGH); pinMode(LED3, OUTPUT); digitalWrite(LED3, HIGH); pinMode(LED4, OUTPUT); digitalWrite(LED4, HIGH); /**LED init end**/ Blinker.begin(auth, ssid, pswd); Blinker.attachData(dataRead); Blinker.attachHeartbeat(heartbeat); /**button callback attach**/ Button1.attach(button1_callback); My_Button.attach(my_button_callback); Btn_abc.attach(btn_abc_callback); /**end**/ dht.begin(); }
-
终端代码修改就结束了,可以编译并且烧录
-
Blinker App可以直接参考下图,或者自己排版,组件的数据键名必须对应代码中引号中,也就是宏定义部分
三、项目文件
整个项目包括安装文件已经打包上传,可以在资源或者公众号中获取。