admin 管理员组

文章数量: 887021


原合集地址:Arduino中文社区https://arduino.me/s/35

CSDN作为备份,不一定最新

郑重提示:物联网开发,需要较好的编程基础,如果你没有C语言编程基础(51/STM 32)或Arduino开发基础,请不要购买下面推荐的硬件,不要阅读本教程,甚至不要用blinker。

——摘自点灯官方教程Arduino中文社区

本系列纯小白教程截图丰富,新手照做也能成功,大量群友返图,有基础的话可以直接复制代码放自己项目,或者把自己代码加入教程代码。

打开方式

本系列教程建议在电脑端打开更便捷

本系列教程合集地址:Arduino中文社区备份地址http://t.csdnimg/4qKDT

手机端切换方式:

切换文章请点击左下角专题目录

切换章节请点击左下角文章大纲

资料下载、教程持续更新:

点灯开源分享群2:QQ 913319679

目录

时间戳

全套资料下载(下载后查看图片更清晰)

说明书预览

一、软件资料、硬件材料说明

二、软件开发环境搭建

三、设备端程序概述

四、程序必须修改1:天气接口密钥、地区码

五、程序必须修改2:WiFi名称密码、点灯设备授权码

六、程序必须修改3:开发板引脚定义

七、烧录

八、其它

九、烧录后接线

十、更新记录、其他项目

Blinker进阶-按组件讲解的视频教程

时间戳

时间戳主要是防止用到太旧的教程

本文更新时间:

2024年3月14日:添加第九章,更新资料下载链接,更新界面配置、添加图片

2024年7月24日:修改图片与链接

代码资源更新时间:

2023年12月17日:升级纯小白入门级详细教程,完全照做即可编译上传一遍过,任何问题进下方QQ群问群主

下一期更新预计:

2024年8月20日前

全套资料下载(下载后Word档说明书查看图片更清晰,文字看网页版最新)

资料内容:

全套开发环境(Arduino IDE、软硬件代码库)、代码有注释版、无注释版、使用说明书、常见问题大全。

大小约500MB,其中约300MB是硬件代码库,防止新手下载错版本或者将来下载不可用。

下载方法1:从QQ 群的群文件下载更快

点灯开源分享群2:QQ 913319679

点灯开源分享群2:QQ 913319679

此群只提供各类开源分享,为避免打扰,不聊天。为避免广告,禁止临时会话

教程等任何问题都可找群主,看见就回,因考研需要,可能漏回或延迟

群文件里下载Blinker-DHT11-继电器-纯小白入门超详细版全套教程资料.rar

先把群文件转发好友或小号,再下载更快!

下载方法2:

(不推荐,后台数据3k多浏览,下载完的就500人,为防止环境搭建失败,全套资料500MB+,下载时间长)

百度网盘链接 提取码:21sv

开启百度网盘带宽资源共享可免费提速几MB/s

资料注意:

文本部分以网页为准,图片看不清可以看压缩包的word/pdf文件更清晰。

调试出现任何问题先查【新手必看】[Blinker]2024最新-常见问题大全

不行就找群主问(就是我)

或者用AI助手Aily - 从容不迫,AI生活(点灯官方建站,对接chatGPT)或百度搜“通义千问”(阿里大模型)

说明书预览(下载后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模块

接线图见第六章:修改引脚定义

上述硬件购买链接(测试过,价格便宜质量正常,如有失效直接搜商品名)

¥2.55【DHT11 湿度传感器模块  温湿度模块 DHT11 温度传感器 模块 】https://qr.1688/s/OYSc5MXg

¥2.68【ESP8266 ESP-01S Relay模块WIFI 继电器智能插座加多ESP-01S】https://qr.1688/s/e2i6OCyx

¥4【ESP-01/ESP-01S 8266 串口转WIFI模块工业级低功耗 无线模块】https://qr.1688/s/tvv6u52T 

这里建议选8285-01s,程序和8266完全通用的升级版,内置4MFlash更简洁

烧录器的话Nodemcu等板子自带烧录器,01s模组推荐买专用烧录器:

¥5【CH340C下载烧录器ESP8266 ESP-01 ESP-01S WIFI模块下载器 调试器】https://qr.1688/s/qjhWkiie

¥5【CH340C下载烧录器ESP8266 ESP-01 ESP-01S WIFI模块下载器 调试器】https://qr.1688/s/ugJZHL46

群友二合一制作方案效果

(DHT11+单路继电器二合一版)

第二节注意事项:不按本教程配置开发环境99%会出现问题。

二、软件开发环境搭建

点灯开源项目分享群2:QQ 913319679

群里下载Blinker-DHT11-继电器-纯小白入门超详细版全套教程资料.rar

解压,然后打开安装包文件夹:

可见

其中exe尽量管理员身份运行

1.安装Arduino

右键管理员身份运行

,弄完重启电脑。

装过的忽略,Arduino2.0亦可(库路径都是一样的不用重复安装),后面几步安装库尽量一样操作

推荐1.8.19的Arduino IDE,因为Arduino 2.0的串口监视器不支持全选复制,不便于调试过程的记录

理论上安装后会顺便安装USB转串口驱动,若烧录时找不到端口则运行CH340SER.EXE 装完重启电脑

另外Arduino 2.0等新软件几乎都不会测试win7兼容性了,毕竟win7已经是15年前的系统了

另外此安装包可以去arduino外国官网或本社区下载栏下载Arduino中文社区

2.安装硬件库

Arduino开发最容易报错的就是库环境错误,新手基本都卡在这里,请严格按照步骤操作!!!!!!!!!!!!!!!!!

Blinker目前支持ESP8266开发板库 v2.7.4-3.0.2,从 v3.1.1开始报错,别太高了,ESP32则是推荐V2.0.7,新版官方还没匹配容易报错

Arduino开发板库添加有两种方式,推荐离线安装(本教程压缩包已经附带,也可以去点灯官网资源下载栏点灯科技-点灯物联网解决方案或本社区下载栏下载Arduino中文社区)

1.离线安装:右键管理员身份运行本教程附带的离线安装包

,运行完就行他自己消失

2.在线安装:(很慢不推荐除非有VPN毕竟服务器在国外)Arduino>工具>开发板>开发板管理器,弹窗搜索ESP8266后点击安装

注:ESP8285直接用8266,完全兼容,他俩区别仅在于硬件上8285自带flash闪存(存程序),不像8266多一个flash芯片,占用SPI总线

注:ESP32不做人脸识别,做点灯运行2.0.7离线安装包; 不做点灯,做人脸识别运行1.0.6离线安装包

安装完硬件库后可以检查开发板库位置,此技巧也便于删除太新的版本(因为离线安装包不会删除新版,容易造成新版覆盖旧版)

1.手动点击文件夹:C:\Users\用户名\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266

注:用户名换成你自己的用户名!

注:不管Arduino装在哪,这个硬件库都装到了C盘的用户文件夹!

注:AppData是隐藏文件夹,要点击查看

开启隐藏的项目

才能查看

2.自动打开文件夹:在地址栏粘贴%LOCALAPPDATA%/Arduino15/packages

警告:安装过的请检查:8266版本不要低于2.7.4,不要高于3.0.2(3.1.1开始会与点灯库冲突),ESP32不要用3.0,退回2.0.7

如果安装过其他版本的package,请先删除或剪切走,再使用离线安装包

删除方法:文件管理器地址栏输入 %LOCALAPPDATA%/Arduino15/packages 回车进入,然后删除掉其中的esp文件夹

3.安装软件库

主要是传感器库、DHT库(基于传感器库)、Blinker库(教程自带0.3.100 221211,可以去官网下载最新版0.3.10 230510点灯科技-点灯物联网解决方案)

1.手动复制(推荐):

把3开头文件夹

复制粘贴到C:\Users\用户名\Documents\Arduino\libraries

也就是 此电脑>文档> Arduino > libraries

注:不管Arduino装在哪,这个软件库路径都在C盘的用户文件夹!

2.自动添加(不推荐):Arduino>项目>加载库>添加.ZIP库

Blinker等第三方软件库文件位置C:\Users\用户名\Documents\Arduino\libraries

4.设置Arduino——开发板管理网址、行号、折叠、编译信息

不弄这个开发板库加载不了

打开Arduino>文件>首选项>附加开发板管理器网址>

,用Ctrl+V快捷键粘贴:

https://arduino.esp8266/stable/package_esp8266com_index.json

http://x.iaoye.xin/package_esp8266com_index.json

http://wechat.doit.am/package_esp8266com_index.json

https://github/esp8266/Arduino/releases/download/2.5.0/package_esp8266com_index.json

https://raw.githubusercontent/DFRobot/FireBeetle-ESP8266/master/package_firebeetle8266_index.json

https://dl.espressif/dl/package_esp32_index.json

https://arduino.me/packages/esp32.json

https://raw.githubusercontent/espressif/arduino-esp32/gh-pages/package_esp32_index.json

用Ctrl+V粘贴!鼠标贴不了↓

弄完重启arduino

如果开启arduino后提示无法连接这些网址中的几个可以忽略,国内是这样的,工具栏里面能出现ESP开发板选项即可

5. BlinkerAPP

安卓最新版本在官网下点灯科技-点灯物联网解决方案

iOS直接在APP Store搜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(比从文件管理器更快,且省运行内存):

请注意打开DHT11-note.ino有注释版,不要开DHT11-none-note.ino无注释版

三、设备端程序概述

(可以先跳过看第四)

点灯云原理可以查看我的毕业论文,就在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中文社区

(6)冷知识:ESP32蓝牙连接不经过服务器,不占用额度,可以无限添加。ESP8266不带蓝牙要外接模块很麻烦不推荐。

六、程序必须修改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,详见后文

注意:引脚定义区的以下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的注释,温湿度随机数测试

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)

烧录程序时您无需对GPIO0引脚进行操作(例如按Boot以拉低),因为NodeMCU的内置电路(CH340USB转TTL芯片,的DTR、RTS引脚)可以确保GPIO0引脚在工作时连接高电平,而在上传程序时连接低电平。

3.ESP8266 GPIO风险汇总

(1)ESP8266的GPIO0(D3)、GPIO1(TX)、GPIO2(D4)开机时必须外部输入高电平。

开机不可高电平原因:开机瞬间Bootloader引导程序会检测:

IO0高电平为运行模式,低电平为烧录模式;

bootloader调用串口0和串口2打印调试信息,而串口0、2的TX就在GPIO1和2,推挽输出,直连电源,开机下拉马上触发短路保护,瞬间崩溃重启,所以开机必须高电平。

(2)GPIO15(D8)开机必须低电平或高阻态,否则进入SD卡读取程序模式(正常低电平是从板载flash读取)

(3)D9、10涉及程序存储器SPI总线使用后可能干扰flash程序读取导致卡死,根据板子不同而定(有的是四线flash有的是6线)

(4)只有GPIO16(D0)、5(D1)、14(D5)、12(D6)、13(D7)绝对安全。其中GPIO5和4完全没有复用功能。

(5)大部分模组内部已经上拉RST、EN、GPIO0、GPIO2、下拉GPIO15,外部不用重复加电阻。

以上风险是否触发还要看具体接什么外部设备,有的模块还内置了上拉电阻,就不能用,可以拆除后在程序里面改为上拉输入,实现开机瞬间bootloader加载时高阻态,之后执行程序时内部上拉。

其它冷知识:

(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博客

七、烧录

1.选串口端口、选开发板

端口选择后,打开工具>串口监视器, 按下烧录器RST

查看有无文字或乱码,没有就不对,换一个端口

选择开发板:

01s等选择Generic普通模组,NodeMCU选1.0。

端口出不来重装串口驱动:

cp210系列串口芯片驱动https://www.silabs/developers/usb-to-uart-bridge-vcp-drivers?tab=downloads

ch340系列串口芯片驱动http://download.openjumper/CH340-drivers%281%29.zip

开发板上矩形的是CH340,正方形很小的是CP210,两个都装也行

2、上传

上传代码

即烧录(Arduino总是先编译后烧录,2分钟左右)

Hard reseting via RTS pin … 出现即成功

3.编译失败解决方法(可跳过):

ESP32报错,修改即可:

//ESP.reset();//ESP8266 硬件重启
ESP.restart();//ESP32 freertos重启

变量转换报错:

天气获取函数由于部分Arduino编译器老旧,必须用atof和atoi来将字符串转换为浮点、整形,新版编译器才支持用stof、stoi将字符串转换为浮点、整形

改法1:

改法2(目前采用):

4.烧录失败解决方法(可跳过):

这个经典报错Timed out waiting for packet header就是烧录超时,arduino没有收到握手包无法开始烧录:

可能原因1:IO0没接低电平、GPIO2没接高电平、GPIO15没接低电平

解决方法:恢复悬空,或接对应电平0和15接低、2接高,然后Arduino点击上传

a.ESP-01S模组等:

使用专用烧录器。

b.自带烧录器的开发板(如Node MCU):

拔掉所有外部电路,只接USB线到电脑。

c.无板载烧录器、无专用烧录器、板载烧录器损坏等情况:

1.将GPIO0接地后插USB上电;

2.长按RST和Boot,先松开RST(开机)再松开Boot。

(有的板子Boot按钮标成IO0,一个意思;Boot用来给IO0引脚接地,RST用来给RST引脚接地)

可能原因2:外部电路

解决方法:拔掉所有其他电路

可能原因3:CH340系列串口驱动没装好或者型号不对或者串口没选对

解决方法:重装驱动CH340SER.EXE(Arduino安装时会自动附带,莫名其妙没了的用CH340SER.EXE重装、重启)

下载地址:Arduino中文社区

CH340驱动独立链接

http://download.openjumper/CH340-drivers%281%29.zip

CP2102等可以自行百度

可能原因4:烧录器没接好

解决方法:TX对RX,RX对TX交叉接,你收我发,你发我收(板载烧录器的不管这条)

可能原因5:电源接反过,或者3.3V电源接到5V导致模块烧毁

终极方法:涂flash(下载地址:工具 | 乐鑫科技)

设置一下速率为低速,选好串口,波特率最低,点击erase

可能原因6:电源接反过,或者3.3V电源接到5V导致模块烧毁

解决方法:重买

5.烧录后观察串口监视器,看是否能连接WiFi

可以则从烧录器拔下,插入继电器板。

出现卡住,说明连不上WiFi

7.连不上WiFi请注意:

检查WiFi信息填写

无论路由器还是手机热点还是 电脑热点,都不可以使用5G Wi-Fi,路由器不可以开启5G优选,或者是双频合一,必须使用路由器2.4G信号,

必须使用有密码的Wi-Fi;

校园网那种要登陆的必须转接路由器或电脑热点,宿舍路由配置:www.bilibili/video/BV1dt42147BY/

8.其它原因按下图检查:

出现MQTT Ping说明Ping通了

APP出不来在线就重启一下

天气API没修改可能会卡在天气,建议主函数loop里去除天气函数weather_read();

八、其它

最新变量转换推荐:借助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++提供了一系列的基本数据类型,用于处理不同种类的数据。除了上面已经讨论过的整数类型和浮点数类型,还有以下几种常见的数据类型:

  1. 字符类型 (char): 用于存储单个字符,如'A''3'char类型通常占用1字节的内存空间。

  2. 双字符类型 (wchar_t): 用于存储宽字符或Unicode字符,比char类型占用更多的内存空间,通常是2或4字节。

  3. 布尔类型 (bool): 用于存储真 (true) 或假 (false) 值。

  4. 双精度浮点类型 (double): 用于存储双精度浮点数,比float类型有更大的范围和精度。通常占用8字节的内存空间。

  5. 长双精度浮点类型 (long double): 提供比double更大的范围和精度的浮点数。其大小和精度依赖于编译器和平台,通常大于double

  6. 无符号字符类型 (unsigned char): 类似于char,但只用于存储非负数,因此其范围是0到255。

  7. 有符号字符类型 (signed char): 明确表示字符是有符号的,其范围通常是-128到127。

  8. 整型 (int): 用于存储整数。int类型的大小至少为16位,但在现代计算机上通常是32位。

  9. 短整型 (short intshort): 用于存储较小的整数,至少16位。

  10. 长整型 (long intlong): 用于存储较大的整数,至少32位,有些平台上为64位。

  11. 长长整型 (long long intlong long): 用于存储非常大的整数,至少64位。

  12. 无符号整型 (unsigned int): 类似于int,但只用于存储非负数。

  13. 无符号短整型 (unsigned short intunsigned short): 类似于short int,但只用于存储非负数。

  14. 无符号长整型 (unsigned long intunsigned long): 类似于long int,但只用于存储非负数。

  15. 无符号长长整型 (unsigned long long intunsigned 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/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记录最长运行时间、总计天数;

分离个步骤,解离函数便于移植

新版函数写法等

修复问题:

申请顺序颠倒

原理图不明确

没有简单版

%appdata%

芯片包双击运行

按钮事件标准处理

官方固件烧录方式以及没有IO零按钮

继电器消抖

授权码不要加空格

annotation(不防无注释

temp_read_f漏

按钮漏下划线

eeprom

温湿度预制

esp32舵机detech以及调用2定时器

cp2102驱动

继电器防抖动

RELATYPIN_1拼错

不可以使用5G Wi-Fi,路由器不可以开启5G优选,或者是双频合一,必须使用路由器2.4G信号,必须使用有密码的Wi-Fi

不得存在任何中文路径

按钮的非标逻辑

按这个开按那个关

互锁、总开、自复位

ESP8266用reset,ESP32用restartdefine

ctrl+v

地级市

烧录失败最终方法

波特率74880

心跳包那个实时数据和官方区别

室内外温差时间

多了个button1attach

说明书名字强调

波特率拉满、flash坏不了等

其他项目

详见

【网址导航】Arduino中文社区

【系列前言】Arduino中文社区

智能宿舍2.0(即将迭代至3.0并开源) www.bilibili/video/BV1iU4y1A7EE

功能:

Blinker进阶-按组件讲解

第三方视频教程,内容与本教程无关,但是组件用法分开讲解,适合进阶学习

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.摇杆组件

点灯科技摇杆组件教程_哔哩哔哩_bilibili

8.图表和实数数据

点灯科技图表组件和实时数据功能,实时反馈数据和查看7天云端历史数据的折线图_哔哩哔哩_bilibili

9.心跳包组件 恢复设备状态及传感器数据上传

点灯科技图表组件和实时数据功能,实时反馈数据和查看7天云端历史数据的折线图_哔哩哔哩_bilibili

10.获取免费设备额度 专业版企业版的区别

点灯科技绑定github获取5个免费设备额度 专业版企业版的区别和购买_哔哩哔哩_bilibili

11.定时任务和倒计时组件

点灯科技定时任务 倒计时组件教程 每天定时执行任务_哔哩哔哩_bilibili

12.网络NTP时间和延时函数

通过点灯科技获取网络NTP时间 不掉线延时函数的使用_哔哩哔哩_bilibili

13.输入框组件

点灯科技输入框组件教程 向设备发送任意中英文信息 实现复杂的自定义功能_哔哩哔哩_bilibili

14.小爱同学单个插座

点灯科技小爱同学控制继电器插座_哔哩哔哩_bilibili

Blinker库自带示例程序打开方法

注:此方法打开的所有例程均为Blinker库example文件夹下的本地文件,随时调用,比官网跳转GitHub更快

Arduino IDE>工具栏>文件>示例>鼠标滚轮往下翻>第三方库示例>Blinker>Blinker_widgets组件示例

如下图:

所有函数具体用法解释均在“点灯科技官网》开发文档》设备端开发与SDK》Arduino支持”一文中有说明,务必通读点灯科技-点灯物联网解决方案

点灯科技-点灯物联网解决方案

本文标签: 温湿度 额度 继电器 注释 中文