原合集地址:Arduino中文社区
CSDN作为备份,不一定最新
打开方式
本系列教程建议在电脑端打开更快
手机端切换文章请点击左下角专题目录
文章内切换章节请点击左下角文章大纲
资料下载、教程持续更新:
点灯开源项目分享群2:QQ 913319679
目录
时间戳
全套资料下载(下载后查看图片更清晰)
说明书预览
一、软件资料、硬件材料说明
二、软件开发环境搭建
三、设备端程序概述
四、程序必须修改1:天气接口密钥、地区码
五、程序必须修改2:WiFi名称密码、点灯设备授权码
六、程序必须修改3:开发板引脚定义
七、烧录
八、其它
九、烧录后接线
十、更新记录、其他项目
其他项目
时间戳
本文更新时间:
2024年6月21日:添加部分注释
2024年3月14日:添加第九章,更新资料下载链接,更新界面配置、添加图片
代码资源更新时间:2023年12月17日:升级纯小白入门级详细教程,完全照做即可编译上传一遍过,任何问题进下方QQ群问群主
下一期代码 更新预计:2024年8月20日前
全部合集Arduino中文社区
全套资料下载(下载后Word档说明书查看图片更清晰,网页版最新,所以文字看网页版)
资料内容:
全套开发环境(Arduino IDE、软硬件代码库)、说明书、常见问题大全。
大小约500MB,其中约300MB是硬件代码库,用于ESP芯片的底层驱动。
下载链接1:从QQ 群的群文件下载更快
点灯开源项目分享群2:QQ913319679
此群只提供各类开源分享,可向群主投稿,为避免打扰,不聊天
教程等任何问题都可找群主,看见就回,因考研需要,可能漏回或延迟
群文件里下载Blinker-DHT11-继电器-纯小白入门超详细版全套教程资料.rar
先把群文件转发好友或小号,再下载更快!
下载链接2:
(不推荐,后台数据3k多浏览,下载完的就500人,为防止搭建失败,全套资料500MB+)
百度网盘链接 提取码:21sv
开启百度网盘带宽资源共享可免费提速几MB/s
资料注意:
除了本文第九章接线外,其它章节均在资料包的说明书里有,本地文件查看更清晰。
调试出现任何问题先看【新手必看】[Blinker]2024最新-常见问题大全
如有咨询需要,也可前往点灯官网>开发文档>加点灯2000人官方群。
说明书预览(下载后Word档说明书查看图片更清晰,网页版最新,所以文字看网页版)
说明书预览(按上方方法下载资料后Word档说明书查看更清晰)
功能:
DHT11-数据存储与图表-心知天气-时间日期-运行时间-调试信息-华氏度-体感温度-继电器-引脚配置-信号强度-自动刷新-手动刷新-掉线重启-根据引脚#define来使能功能函数-Serial.print换BILNKER_LOG_ALL,便于关闭调试信息-DHT11不接,温度用随机数或APP赋值-物理开关与APP共同控制继电器
一、软件资料、硬件材料说明
1.资料使用流程:
此处顺带展示开发流程,具体用法见后文
为扩展阅读
2.可用于以下硬件(不是全买!有其中一个就行)
本程序通过修改引脚定义 可支持 以下芯片、开发板及其配件(见后文)
(1)支持的主控板:
基于ESP8266EX裸芯片制作的电路板
基于ESP8266的ESP-01、ESP01s模组
基于ESP8285的ESP-8285模组(外部特性与8266一样,可用8266固件烧录上去,区别仅仅是程序存储器flash闪存集成在单片机内部)
基于ESP8266的ESP12E模组的NodeMCU开发板
基于ESP8266的ESP12F模组的wemos/mini开发板
其它ESP系列开发板如ESP32等 请注意看电路图确定引脚定义,避免冲突!
硬件您可以在ESP8266系列模组专题 | 安信可科技查看选型表并下载规格书
也可以直接查看本文资料附带的
中的规格书或电路图
(2)支持的配件:
ESP-01、ESP-01s、ESP-8285模组适用配件:
搜索关键词:
DHT11温湿度传感器WIFI节点模块底座适用于ESP8266ESP-01/01S板
继电器底板智能插座WIFI模块适用于ESP8266ESP-01/01S板
DHT11底板、DHT20底板、DHT22底板 ESP01s单路继电器 ESP01s双路继电器
01s专用烧录器(省去接线麻烦)(不要反插)
NodeMCU/WEMOS/ESPmini开发板适用配件:
5V继电器
DHT11模块
DHT20、DHT22模块
接线图见第六章:修改引脚定义
购买推荐(自己测试的,价格便宜质量正常)
【DHT11 湿度传感器模块 温湿度模块 DHT11 温度传感器 模块 】https://qr.1688.com/s/OYSc5MXg
【ESP8266 ESP-01S Relay模块WIFI 继电器智能插座加多ESP-01S】https://qr.1688.com/s/e2i6OCyx
【ESP-01/ESP-01S 8266 串口转WIFI模块工业级低功耗 无线模块】https://qr.1688.com/s/tvv6u52T
这里建议选8285-01s,程序和8266完全通用的升级版,内置4MFlash更简洁
烧录器的话Nodemcu等板子自带烧录器
01s模组推荐买专用烧录器
【CH340C下载烧录器ESP8266 ESP-01 ESP-01S WIFI模块下载器 调试器】https://qr.1688.com/s/qjhWkiie
【CH340C下载烧录器ESP8266 ESP-01 ESP-01S WIFI模块下载器 调试器】https://qr.1688.com/s/ugJZHL46
群友制作效果
(DHT11+单路继电器)
第二节注意事项:不按本教程配置环境出现任何问题概不负责。
二、软件开发环境搭建
点灯开源项目分享群2:QQ913319679
群里下载Blinker-DHT11-继电器-纯小白入门超详细版全套教程资料.rar
解压,然后打开
可见
其中exe尽量管理员身份运行
1.安装Arduino
右键管理员身份运行
装过的忽略,Arduino2.0亦可,后面几步尽量一样
2.安装硬件库
Arduino开发板库添加有两种方式,推荐点灯官网资源下载栏的离线安装包(已经附带):
1.离线安装:右键管理员身份运行本教程附带的离线安装包
2.在线安装(很慢不推荐除非有VPN):Arduino>工具>开发板>开发板管理器,搜索ESP8266后点击安装
注:ESP8285直接用8266即可兼容,他俩区别仅在于硬件上8285自带flash,可用IO更多,不像8266多一个flash芯片,占用SPI了
注:ESP32不做人脸识别,做点灯运行2.0.7; 不做点灯,做人脸识别运行1.0.6
安装完硬件库后可以:
检查开发板库的位置C:\Users\用户名\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266
手动点击文件夹谢谢。
自动前往在地址栏粘贴**%LOCALAPPDATA%/Arduino15/packages**
注:用户名换成你自己的用户名!
注:不管Arduino装在哪,这个硬件库都装到了C盘的用户文件夹!
注:AppData是隐藏文件夹,要点击查看
开启隐藏的项目
才能查看
警告:安装过的请检查:版本不要低于2.7.4,不要高于3.0.2(3.1开始会与点灯库冲突)
如果安装过其他版本的esp32 package,请先删除或剪切走,再使用本安装包,
删除方法:文件管理器地址栏输入 %LOCALAPPDATA%/Arduino15/packages,回车进入,然后删除掉其中的esp32文件夹
3.安装软件库
1.手动复制(推荐):
把
复制或剪切到C:\Users\用户名\Documents\Arduino\libraries
注:不管Arduino装在哪,这个软件库都在C盘的用户文件夹!
2.自动添加(不推荐):Arduino>项目>加载库>添加.ZIP库
Blinker等第三方软件库文件位置C:\Users\用户名\Documents\Arduino\libraries
4.设置Arduino——管理网址、行号、折叠、编译信息
打开Arduino>文件>首选项>附加开发板管理器网址>
,粘贴:
https://arduino.esp8266.com/stable/package_esp8266com_index.json
http://x.iaoye.xin/package_esp8266com_index.json
http://wechat.doit.am/package_esp8266com_index.json
https://github.com/esp8266/Arduino/releases/download/2.5.0/package_esp8266com_index.json
https://raw.githubusercontent.com/DFRobot/FireBeetle-ESP8266/master/package_firebeetle8266_index.json
https://dl.espressif.com/dl/package_esp32_index.json
https://arduino.me/packages/esp32.json
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
用Ctrl+V粘贴!鼠标贴不了!
5. BlinkerAPP
安卓最新版本在官网下点灯科技-点灯物联网解决方案
iOS直接在APPStore搜Blinker(默认最新)
另外iOS最新版本号与安卓不同步
6. APP界面配置
先申请设备(设备数量已达上限,免费获取,见第五章第3节)
在Blinker APP右上角点击⊕>添加设备>独立设备>网络接入>复制授权码>QQ发电脑>贴至程序
设备密钥也可以在BlinkerAPP设备的右上角…按钮菜单里查看,点击眼睛图标查看,长按复制
界面配置见
或DHT11-note.ino的注释
(冒号后的文本完整复制粘贴至QQ发送到手机,贴到APP界面配置(清空原配置),并点击更新)
退回主页面后再进去就出现界面
最新版:
{¨version¨¨2.0.0¨¨config¨{¨headerColor¨¨transparent¨¨headerStyle¨¨light¨¨background¨{¨img¨´´}}¨dashboard¨|{¨type¨¨num¨¨t0¨¨室内相对湿度¨¨ico¨¨fad fa-humidity¨¨clr¨¨#00A90C¨¨min¨É¨max¨¤e¨uni¨´%´¨bg¨Ë¨cols¨Ë¨rows¨Ë¨key¨¨humi¨´x´É´y´Ï¨lstyle¨É¨rt¨«}{ßAßBßC¨室内摄氏度¨ßE¨fad fa-thermometer-three-quarters¨ßGßHßIÉßJ¢1cßK´℃´ßLËßMËßNËßO¨temp¨´x´É´y´ÑßQÉßR«}{ßA¨tex¨ßC´´¨t1¨´´¨size¨¨16¨ßLËßE´´ßMÍßNËßO¨info¨´x´Ë´y´ÏßGßHßQÌ}{ßA¨cha¨ßL˨sty¨¨line¨ßGßH¨sty1¨ßc¨clr1¨¨#076EEF¨¨sty2¨ßc¨clr2¨¨#FBA613¨ßMÑßNÍßOßa´x´É´y´¤CßQʨkey0¨¨temp_read¨ßC¨摄氏度¨¨key1¨¨humi_read¨ßW¨湿度¨¨key2¨¨temp_read_f¨¨t2¨¨华氏度¨}{ßAßVßC´´ßW´´ßXßYßLËßE´´ßMÑßNËßO¨runtime¨´x´É´y´ËßQÏßGßH}{ßAßVßC´´ßW´´ßXßYßLËßE´´ßMÑßNËßO¨calendar¨´x´É´y´ÉßQÏßGßH}{ßAßVßC´´ßW´´ßXßYßLËßE´´ßMÑßNËßO¨weather¨´x´É´y´ÍßQÏßGßH}{ßA¨btn¨ßE¨fad fa-sync¨¨mode¨ËßC¨刷新¨ßW¨文本2¨ßLËßMËßNËßO¨get¨´x´Ï´y´ÏßQÉßGßH¨cus¨¨state¨}{ßAßBßC¨室内华氏度¨ßEßTßGßHßIÉßJº0ßK´°F´ßLËßMËßNËßO¨tempf¨´x´É´y´¤A}{ßAßBßC¨室内摄氏体感温度¨ßE¨fal fa-question¨ßGßHßIÉßJ¤XßK´°C´ßLËßMÍßNËßO¨hic¨´x´Ë´y´ÑßQË}{ßAßwßE¨fad fa-toggle-on¨ßyÊßC¨继电器1¨ßWß10ßLËßMËßNËßO´b1´´x´Ï´y´ÑßGßHßQÊ}{ßAßBßC¨室内华氏体感温度¨ßEßTßGßHßIÉßJ¢1gßK´°F´ßLËßMÍßNËßO¨hif¨´x´Ë´y´¤AßQÌ}{ßA¨deb¨ßyÉßLÉßMÑßNÌßO¨debug¨´x´É´y´¤H}{ßAßwßE¨fad fa-toggle-off¨ßyÊßC¨继电器2¨ßWß10ßLËßMËßNËßO´b2´´x´Ï´y´¤AßQÊßGßH}÷¨actions¨|¦¨cmd¨¦´b1´‡¨text¨‡´on´¨打开继电器1¨¨off¨¨关闭继电器1¨—{ß1I{´b2´´on´}ß1J¨打开继电器2¨}{ß1I{´b2´ß1L}ß1J¨关闭继电器2¨}÷¨triggers¨|÷ßR|÷}
调试组件塞底下技巧:按钮靠边,选最大确定,把界面卡宽一截,然后拖调试框到最底下即可隐藏
7.打开程序
1.从文件管理器:打开项目文件夹 >打开设备端程序DHT11-note.ino
2.从已经开启的Arduino(比从文件管理器更快,且省运行内存):
三、设备端程序概述
(可以先跳过看第四)
点灯云原理可以查看我的毕业论文,就在913319679开源群的群文件的毕业设计文件夹里面。
点灯Arduino的设备sdk整体基于ESP Async TCP库进行Wi-Fi链接,上套MQTT协议层实现发布和订阅。上套B protocol实现点灯数据传输协议。上套adapter适配层实现切换设备类型,顶层blinker类作为API函数供用户调用。侧向通过类库封装组件数据解析方法。通过范型和宏定义切换Wi-Fi、AT固件、蓝牙类库。
esp32可触发局域网web socket通信其它内存不够不能触发。
1.执行架构
运行模式下8266上电后引导至flash(闪存)中的用户程序,先执行用户代码层的主函数初始化部分
,然后循环执行用户代码层的主函数循环部分
主函数中调用“功能函数”实现功能,并由全局变量等传递数据。
从架构角度看,用户代码调用软件代码库,软件代码库调用硬件代码库,硬件代码库操作硬件。
2.主要库函数作用
中的
用于开启WiFi连接并初始化组件对象实例。
中的
用于登陆http服务器并获取mqtt鉴权信息(mqtt动态账号密码),然后登录mqtt服务器(mqtt协议称服务器为broker),并持续接收处理APP数据(解析APP下发数据并送入回调,构造需上传数据并发送,检查连接状态等)。
3.数据收发
当APP用与设备同样方式:先鉴权,后登录broker,就会每30秒发送 {“get”:“state”} 来向设备请求心跳包,设备端Blinker.run()函数返回 {“state”:”online”} 表示在线,若存在用户自定义心跳包函数,则返回 {“state”:”online”} 加上自定义心跳包函数中组件.print()的数据——实现状态反馈(数据上传)。
当APP发送组件信息,则设备端Blinker.run()解析该消息,若消息中存在组件对象的数据键名,则将对应键值传入该组件实例注册过的回调函数,用户在回调函数中直接处理数据或将数据放入全局变量从而传出数据到自己的代码处理——实现状态更改(数据下发)。
可见一般收发由APP唤起,设备主动发出数据的库函数仅有图表的时序数值云存储(图表使用)或者微信、短信、APP内提示等报警函数。
4.数据格式
点灯协议使用Json格式文本进行通信,以便配合ArduinoJson库处理长度可变的字符串,基础格式为{“数据键名”:”数据键值”}
例如:{"data":[{"num":{"val":"111”},"else":{"time":"1702733731"}}]}
5.类库
点灯库使用类(class)编程,使得按钮、文本、数值等类型的组件的代码可以复用,您只需要将某个类实例化出一个实例,就相当于复制了一份代码,并以实例名区分。这样您就可以直接调用各个实例化过的组件的代码而无需复制并修改加以区分。
例如:实例名.函数名();就是调用该实例的某个函数。
按钮、滑块等接收APP操作的对象还需要注册回调函数处理APP发来的数据,方法有两种
注意:所有组件要改变icon、color等一定放print前,用法见 “点灯科技官网》开发文档》设备端开发与SDK》Arduino支持”
6.多设备
点灯库可以使用WiFI、串口蓝牙模块、串口4G模块等,所以需要先定义通信方式**
**,再包含点灯库
。
7.程序文件模块化解释
如下图(功能函数过长故全部折叠)
四、程序必须修改1:天气接口密钥、地区码
原因:私钥需要自己到心知天气官网注册获取,一人一私钥以避免多人请求,超过频率限制导致封号。
若不需要天气显示请用//将如下语句注释(变灰),防止程序崩溃,找不到用CTRL+F查找if(w
1.注册心知天气并在控制台添加免费版产品
地址心知天气 - 高精度气象数据 - 天气数据API接口 - 行业气象解决方案
然后点击免费版,查看私钥,填到程序中的key之后,覆盖ABCDEFG,并且不要去掉两边双引号
2.在心知开发文档城市列表中找到城市代码并填入程序中的location之后
最新城市代码列表下载地址开始使用 👋 · 心知科技
上述excel表已附带,不必重新下载
警告:免费版无法获取市级以下的天气信息,县级、区级都无法获取,必须填写地级市的代码或拼音
填入程序中的location之后,如图是苏州市的代码
一定要地级市啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
分不清看下图
3.原理(可以先跳过)
填写以上代码后,天气获取函数会拼接字符串,形成网址:
输入浏览器就会看到获取的json数据(返回的payload)
通过点灯库自带的arduinojson库解码payload
就获取了天气参数,并构造了字符串,在心跳包里发送到APP天气文本组件
五、程序必须修改2:WiFi名称密码、点灯设备授权码
1.填写Blinker联网三要素:名称、密码、授权码
ssid 为WiFi名称,服务集标识符service set identifier
pswd为WiFi密码,password
auth为设备授权码,authorize
2.申请授权码:
在Blinker APP右上角点击⊕>添加设备>独立设备>网络接入>复制授权码>QQ发电脑>贴至程序
3.若提示设备数量已达上限请阅读:
设备额度上限问题:
(1) 先确保已经申请过一个免费的
(2)免费增加5个额度:电脑端点灯官网,点击“登录”按钮,登录后进入“管理台”首页,点击“关联账户”的“微信”图标旁边的“GitHub”图标,进入GitHub,注册,输入邮箱,邮箱验证码,并绑定github
GitHub登录不流畅可更换网络,开启VPN或使用Chrome浏览器或反复重试
(3)6个免费额度还不够再前往官网服务购买,购买设备额度,
普通用户只能使用独立设备,
专业版用户可使用专属设备(带统一管理功能,具体看官网开发文档)
(4)2023年6月起,5个直接免费额度降低为1个,之前已经申请的可以继续超额使用,但无法再次添加(需购买或绑定GitHub补齐额度);按上方第2条可再获取5个,这样即能正常添加
(5)购买额度、专业版后如需退款联系群主823569290,以上总结自免费政策官方通知:Arduino中文社区
六、程序必须修改3:开发板引脚定义
1.不同硬件的引脚定义方法
根据硬件,取消对应预编译语句的注释(28行-50行),
下面列了很多硬件,选自己的修改即可,然后跳第七节
注:#define是预编译语句,可以定义常量(英文代号)为某一数值或字符串,
例如:
#define DHTPIN 2
则程序编译时会首先把DHTPIN这个常量原地替换为数字2,相当于DHT11接在单片机的GPIO2,程序操作DHTPIN就是操作GPIO2
(1) 单路继电器底板——只定义RELATYPIN_1为0
(2) 单路DHT11底板——只定义DHTPIN为2
(3)单路继电器板+焊接DHT11——定义RELATYPIN_1为0 、定义DHTPIN为2
(4)单路继电器板+ 焊接实体按钮——定义RELATYPIN_1为0 定义BUTTONPIN为2
功能:继电器1同时受APP和实体按钮控制,不掏手机也可使用。
实体按钮自复位还是自锁需要声明:
a.自复位按钮:按下切换一次状态,松手弹起不变状态;程序里不要#define SELF_LOCK
b.自锁按钮:按到下边开,按回上边关,程序里必须要#define SELF_LOCK
(5)双路继电器板——定义RELATYPIN_1为0 、定义RELATYPIN_2为2
(6) Node MCU开发板
若使用基于ESP8266的ESP-12E模组的Node MCU开发板
——定义RELATYPIN_1为0 、定义RELATYPIN_2为2 、定义DHTPIN为4
GPIO0对应开发板D3,GPIO2对应开发板D4,GPIO4对应开发板D2,详见后文
2.Node MCU开发板引脚对应
ESP-01s/ESP12E/NodeMCU的内置LED灯都在GPIO2!
NodeMCU开发板1.0-3.0的GPIO和板上引脚对应;
-
D0-GPIO16 (属于断电计时RTC模块,用于深度睡眠唤醒,但可以配置为GPIO,另外无法触发普通中断)
-
D1-GPIO5
-
D2-GPIO4
-
D3-GPIO0 (开机时输入高电平进入运行模式,开机时输入低电平进烧录模式,烧录模式不执行用户程序)
-
D4-GPIO2 (UART1TXD 只有发送功能,可作打印 log)
-
D5-GPIO14
-
D6-GPIO12
-
D7-GPIO13 (初始化Serial2后用于硬件串口2即UART0CTS)
-
D8-GPIO15 (初始化Serial2后用于硬件串口2即UART0RTS)(开机时必须输入低电平)
-
D9-GPIO3 (初始化Serial后用于硬件串口0即UART0)
-
D10-GPIO1 (初始化Serial后用于硬件串口0即UART0)(开机时必须输入高电平)
-
A0-ADC0 (整个开发板只有一个模拟输入引脚,且模拟电压值为0-1.0V)
注意:
-
(1)GPIO4,12,14,15支持14位高精度硬件PWM
-
(2)GPIO9、10在DUAL4线制式flash通信可用,QUAD6线制时不可用,嫌IO少可以选择内置flash 的8285或ESP32系列
-
(3)GPIO6-11基本不用来进行通用输入输出,一般用于连接开发板的闪存
-
(4) EN 任何时候:高电平有效,芯片正常工作;低电平芯片关闭,电流很小
原文链接:ESP8266-NodeMCU(一)-CSDN博客
引导模式,原理详解:esp8266~启动模式和烧写错误_mtdo-CSDN博客
烧录程序时您无需对GPIO0引脚进行操作(例如按Boot以拉低),因为NodeMCU的内置电路(CH340USB转TTL芯片,的DTR、RTS引脚)可以确保GPIO0引脚在工作时连接高电平,而在上传程序时连接低电平。
七、烧录
1.选串口端口、选开发板
端口选择后,打开工具>串口监视器, 按下烧录器RST
查看有无文字或乱码,没有就换一个端口
01s等选择Generic普通模组,NodeMCU选1.0。
2、上传
上传代码
即烧录(Arduino总是先编译后烧录,2分钟左右)
RTS pin 出现即成功
ESP32报错,修改即可:
//ESP.reset();//ESP8266 硬件重启
ESP.restart();//ESP32 freertos重启
烧录后观察串口监视器,看是否能连接WiFi,
可以则从烧录器拔下,插入继电器板。
出现卡住,
检查WiFi信息填写,必须2.4G,校园网那种要登陆的必须转接路由器。
连不上WiFi请注意:
无论路由器还是手机热点还是 电脑热点,都不可以使用5G Wi-Fi,路由器不可以开启5G优选,或者是双频合一,必须使用路由器2.4G信号,必须使用有密码的Wi-Fi,校园网那种要登陆的必须转接路由器或电脑热点。
ESP.reset();//ESP8266 硬件重启
ESP.restart();//ESP32 freertos重启
其它原因按下图检查:
八、其它
引脚定义区的以下DHT11语句四选一:
//#define DHTPIN 4 //定义DHT11 在8266芯片的引脚GPIO4,对应NodeMCU开发板D2
//#define DHTPIN 2 //定义DHT11 在8266芯片的引脚GPIO2,对应NodeMCU开发板D4
//#define APPTEMP //不接DHT11,从APP调试框或输入框赋值测试
//#define RANTEMP //不接DHT11,随机数测试
例如只接继电器,温度随机就只取消RANTEMP的注释,温湿度随机数测试
另外继电器类型不同需要修改初始化:
可能报错1:
ESP.reset();//ESP8266 硬件重启
ESP.restart();//ESP32 freertos重启
可能报错2:
变量转换
天气获取函数由于Arduino编译器老旧,必须用atof和atoi来将字符串转换为浮点、整形,新版编译器才支持用stof、stoi将字符串转换为浮点、整形
改法1:
改法2(目前采用):
最新变量转换推荐:借助ArduinoJson库的as函数们
int aa=0;
uint8_t bb=0;
uint16_t cc=0;
uint32_t dd=0;
uint64_t ee=0;
float ff = 0.0; // 用于存储浮点数转换结果
double gg = 0.0; // 用于存储双精度浮点数转换结果
bool hh = false; // 用于存储布尔转换结果
JsonObject ii; // 假设这是一个有效的JsonObject类型,用于存储JsonObject转换结果
void dataRead(const String & data)
{
BLINKER_LOG("Blinker readString: ", data);
aa = data.as<int>(); // 将字符串转换为int
bb = data.as<uint8_t>(); // 将字符串转换为uint8_t
cc = data.as<uint16_t>(); // 将字符串转换为uint16_t
dd = data.as<uint32_t>(); // 将字符串转换为uint32_t
ee = data.as<uint64_t>(); // 将字符串转换为uint64_t
ff = data.as<float>(); // 将字符串转换为浮点数
gg = data.as<double>(); // 将字符串转换为双精度浮点数
hh = data.as<bool>(); // 将字符串转换为布尔值
// 对于JsonObject的转换,你需要根据你使用的库的文档来进行,这里只是一个示例
ii = data.as<JsonObject>(); // 假设这样可以将字符串转换为JsonObject
}
//_t在uint8_t中表示这是一个类型定义(Type Definition),确保了变量的位大小和符号性在所有平台上的一致性。
//as关键字或方法不仅限于处理String类型,它还可以用于处理多种不同的类型,具体取决于它在哪个库中定义以及如何实现。
//在Arduino环境中,特别是在使用类似ArduinoJson这样的库时,as方法常用于将JSON值转换为多种C++基本数据类型,如int、float、bool等,以及库特定的复合类型。
扩展阅读——基本数据类型:
C++提供了一系列的基本数据类型,用于处理不同种类的数据。除了上面已经讨论过的整数类型和浮点数类型,还有以下几种常见的数据类型:
-
字符类型 (
char
): 用于存储单个字符,如'A'
或'3'
。char
类型通常占用1字节的内存空间。 -
双字符类型 (
wchar_t
): 用于存储宽字符或Unicode字符,比char
类型占用更多的内存空间,通常是2或4字节。 -
布尔类型 (
bool
): 用于存储真 (true
) 或假 (false
) 值。 -
双精度浮点类型 (
double
): 用于存储双精度浮点数,比float
类型有更大的范围和精度。通常占用8字节的内存空间。 -
长双精度浮点类型 (
long double
): 提供比double
更大的范围和精度的浮点数。其大小和精度依赖于编译器和平台,通常大于double
。 -
无符号字符类型 (
unsigned char
): 类似于char
,但只用于存储非负数,因此其范围是0到255。 -
有符号字符类型 (
signed char
): 明确表示字符是有符号的,其范围通常是-128到127。 -
整型 (
int
): 用于存储整数。int
类型的大小至少为16位,但在现代计算机上通常是32位。 -
短整型 (
short int
或short
): 用于存储较小的整数,至少16位。 -
长整型 (
long int
或long
): 用于存储较大的整数,至少32位,有些平台上为64位。 -
长长整型 (
long long int
或long long
): 用于存储非常大的整数,至少64位。 -
无符号整型 (
unsigned int
): 类似于int
,但只用于存储非负数。 -
无符号短整型 (
unsigned short int
或unsigned short
): 类似于short int
,但只用于存储非负数。 -
无符号长整型 (
unsigned long int
或unsigned long
): 类似于long int
,但只用于存储非负数。 -
无符号长长整型 (
unsigned long long int
或unsigned long long
): 类似于long long int
,但只用于存储非负数。
九、烧录后接线
ESP01S继电器连接
1.在灯上接(零火都有)
2.在开关盒接(开关盒无零线,只有到灯的控制线,需要从灯上拉一路零线、一路控制线下来)
3.在开关盒接+实体开关双控
NodeMCU等开发板继电器连接
高电平触发继电器
高/低电平触发继电器
无论用哪款继电器模组,记得:
高电平触发的模组平常是低电平0V,单片机输出3.3V高电平才吸合,使用推挽输出:
pinMode(RELAYPIN_1, OUTPUT);
低电平触发的模组平常是高电平5V,单片机输出0V高电平才吸合,避免5V灌入单片机3.3V回路,使用开漏输出:
pinMode(RELAYPIN_1, OUTPUT_OPEN_DRAIN);
参考资料:【NodeMcu-ESP8266】引脚使用参考指南http://t.csdnimg.cn/OtETF
十、更新记录、其他项目
2023-6 V1.0立项:
DHT11-数据存储与图表-心知天气-时间日期-运行时间-调试信息
2023-12 V2.0新增:
(1)华氏度;
(2)体感温度;
(3)继电器;
(4)引脚说明;
(5)信号强度;
(6)自动刷新;
(7)手动刷新;
(8)掉线重启;
(9)根据引脚#define来使能功能函数,注释掉则自动屏蔽该函数,不操作该引脚
(10)Serial.print换BILNKER_LOG_ALL,便于关闭调试信息,添加用户所需串口通信;
(11)DHT11不接,温度用随机数或APP赋值
(12)物理开关与APP共同控制继电器
2024 V3.0预计新增:
(1) 甲醛、TVOC串口传感器;
(2) 本地WiFi UDP通信实现一拖N;
(3) Iic协议OLED信息显示屏;
(4) EEPROM记录最长运行时间、总计天数;
分离个步骤,解离函数便于移植
新版函数写法等
其他项目
详见
【网址导航】Arduino中文社区
【系列前言】Arduino中文社区
智能宿舍2.0(即将迭代至3.0并开源) www.bilibili.com/video/BV1iU4y1A7EE
功能:
按组件讲解(第三方视频教程)
一、2024最新新手学习视频-疏风轻影
【合集入口】
Arduino 最新2.2.1版本 离线安装ESP8266开发板保姆级开发环境搭建教程,不使用梯子和百度网盘_哔哩哔哩_bilibili
【开发环境搭建】
1.安装ESP8266开发板和驱动
Arduino 最新2.2.1版本 离线安装ESP8266开发板保姆级开发环境搭建教程,不使用梯子和百度网盘_哔哩哔哩_bilibili
2.安装ESP32开发板安装
Arduino 最新2.2.1版 ESP32开发板的安装,以及卸载已安装开发板,更新开发板版本的方法_哔哩哔哩_bilibili
3.基本使用和操作技巧
arduino 2.2.1 基本使用和操作技巧 如代码自动补齐 一键整理代码 新建头文件_哔哩哔哩_bilibili
4.常见报错No such file or directory compilation terminated error: exit sta1
常见报错No such file or directory compilation terminated error: exit sta1_哔哩哔哩_bilibili
5.常见报错 无效的FQBN:开发板的构建属性:'exception'选项的'legacy'值无效
常见报错 无效的FQBN:开发板的构建属性:'exception'选项的'legacy'值无效_哔哩哔哩_bilibili
6.中文路径解决办法
中文路径解决办法。基于新建账户的中文用户文件夹路径报错解决办法,简单安全无风险_哔哩哔哩_bilibili
【点灯科技系列】
1.入门示例、最简支持代码 零基础简单代码知识讲解
点灯科技,入门必看!准备工作:安装库、添加设备并且运行入门示例、编写最简支持代码、以及零基础简单代码知识讲解_哔哩哔哩_bilibili
2.button Switch,以及回调函数的第二种写法
点灯科技,入门必看!准备工作:安装库、添加设备并且运行入门示例、编写最简支持代码、以及零基础简单代码知识讲解_哔哩哔哩_bilibili
3.调色盘,颜色组件,控制RGB灯变色
点灯科技调色盘颜色组件的使用,控制RGB灯变色_哔哩哔哩_bilibili
4.滑条滑块组件
点灯科技滑条滑块组件的使用,在文字组件上显示数值_哔哩哔哩_bilibili
5.数值组件
点灯科技数值组件教程,显示滑块的数值_哔哩哔哩_bilibili
6.文字组件
点灯科技文字组件教程,显示图标和双行文字_哔哩哔哩_bilibili
7.摇杆组件
8.图表和实数数据
点灯科技图表组件和实时数据功能,实时反馈数据和查看7天云端历史数据的折线图_哔哩哔哩_bilibili
9.心跳包组件 恢复设备状态及传感器数据上传
点灯科技图表组件和实时数据功能,实时反馈数据和查看7天云端历史数据的折线图_哔哩哔哩_bilibili
10.获取免费设备额度 专业版企业版的区别
点灯科技绑定github获取5个免费设备额度 专业版企业版的区别和购买_哔哩哔哩_bilibili
11.定时任务和倒计时组件
点灯科技定时任务 倒计时组件教程 每天定时执行任务_哔哩哔哩_bilibili
12.网络NTP时间和延时函数
通过点灯科技获取网络NTP时间 不掉线延时函数的使用_哔哩哔哩_bilibili
13.输入框组件
点灯科技输入框组件教程 向设备发送任意中英文信息 实现复杂的自定义功能_哔哩哔哩_bilibili
14.小爱同学单个插座