目录
1.效果展示
可实现的功能:
- 温湿度测量+OLED显示+手机显示
- 检测火焰+OLED提醒+手机显示+蜂鸣器报警提示
- 手机控制开启小风扇(模拟空调),也可根据需求设置成温度过高过低时开启
- 一个为了凑数的控制开灯功能
2.前置准备
2.1 购买清单
硬件:
- ESP8266开发板
- 杜邦线若干
- 火焰传感器
- 继电器
- Dht11温湿度传感器
- OLED(不必须)
- 蜂鸣器
- 小风扇
- 面包板
- 数据线一条(是数据线!不是普通用的那种安卓充电线!)
软件:
- Arduino(电脑)
- Blinker(手机)
2.2 驱动安装+Arduino的配置
Arduino IDE基础配置具体内容可参考以下文章,写的很详细
https://blog.csdn.net/weixin_36193839/article/details/113070306
基础配置完毕后我们还需要在Arudino中添加一些要用到的库文件,在工具→管理库弹出的框中输入blinker并安装
同理,分别搜索dht(温湿度检测所用库)和u8g2(OLED模块所用库,如果不需要此功能的可以不添加)
2.3 Blinker的配置
在软件商城或百度搜索Blinker并下载
下载完成后打开Blinker,点击右上角的+新建设备
选择独立设备
选择右下角的网络接入
会自动生成密钥,这串数字很重要以后会用到
点击返回设备后一个新设备就创建完成了,如果上面的密钥没记住可以在右上角圆圈中随时查看
点击右上角可以开启编辑模式,在编辑模式中可以自定义一些需要的组件
注意:组件名称接下来会用,建议起一些自己能看懂的名称
还可以自定义界面的背景之类的,自定义完成后如下图所示:
不想自己做界面的同学可以直接用我定义的界面,在设置→界面设计中可以直接粘贴代码
已经定义好的同学直接忽略此步骤
配置代码如下:
{¨version¨¨2.0.0¨¨config¨{¨headerColor¨¨transparent¨¨headerStyle¨¨dark¨¨background¨{¨img¨¨assets/img/bg/f1.jpg¨¨isFull¨»}}¨dashboard¨|{¨type¨¨btn¨¨ico¨¨fal fa-power-off¨¨mode¨Ê¨t0¨¨空调已关闭¨¨t1¨¨文本2¨¨bg¨Ì¨cols¨Í¨rows¨Í¨key¨¨btn-door¨´x´Í´y´É¨lstyle¨Ë}{ßCßDßEßFßGÊßH¨灯已关闭¨ßJßKßLÌßMÍßNÍßO¨btn-light¨´x´É´y´ÉßQË}{ßC¨num¨ßH¨温度¨ßE¨fal fa-question¨¨clr¨¨#389BEE¨¨min¨É¨max¨¢1c¨uni¨´℃´ßLÉßMÍßNÍßO¨num-temp¨´x´É´y´ÎßQÎ}{ßCßTßH¨湿度¨ßEßVßWßXßYÉßZº0ßa´%´ßLÉßMÍßNÍßO¨num-humi¨´x´Í´y´ÎßQÎ}{ßC¨deb¨ßGÉßLÉßMÑßNÌßO¨debug¨´x´É´y´¤D}{ßC¨tex¨ßH¨没有明火出现¨ßJ´´¨size¨¤EßLÉßE¨fad fa-fire-alt¨ßMÑßNËßO¨tex-fire¨´x´É´y´¤AßQÏßW¨#00A90C¨}÷¨actions¨|÷¨triggers¨|÷¨rt¨|÷}
以上,基础配置就完成了,可以正式开始硬件设计部分了。
3. 硬件连线
ESP8266引脚说明如下图
因为要接的东西比较多,建议配块面包板一起食用~
面包板主要分为两种孔,一种是纵向孔,一种是横向孔。
如图所示,红色区域圈起来的五个孔就是一组纵向孔,他们内部是联通的,也就是他们五个之间是有导体相连的,可以导电。
绿色区域圈住的孔。整个一横排孔(一横排的蓝或一横排的红)的内部,都是联通的。通常我们用蓝线的孔连接地线(电压为0),用红线连接电源(电压为5V或3.3V)。
仪器 | 管脚 |
---|---|
继电器-IN | D0 |
温湿度传感器-DATA | D5 |
蜂鸣器-I/O | D6 |
火焰传感器-AO | A0 |
火焰传感器-DO | D7 |
OLED-SCL | D1 |
OLED-SDA | D2 |
GND | GND |
VCC | 3V |
风扇的接法如图:
4. 代码部分
4.1 绑定Blinker
char auth[] = "xxxxxxxx";
char ssid[] = "111";//WiFi用户名
char pswd[] = "123456789";//WiFi密码
注意,如果用手机热点记得在设置里将AP频段调成2.4Ghz
下面是组件的绑定
括号里的名称是之前在blinker里定义的组件名称
/***************************** Blinker组件 **************************************/
BlinkerButton Button1("btn-door");
BlinkerButton Button2("btn-light");
BlinkerNumber HUMI("num-humi"); //定义湿度数据键名
BlinkerNumber TEMP("num-temp"); //定义温度数据键名
BlinkerText Fire("tex-fire"); //定义火焰检测键名
/**********************************************************************************/
4.2 代码
直接附上源码,按照代码里的注释操作即可。
#include <Arduino.h>
#include