项目目的
主要实现网络化测控电池输出功率。首先TENG(摩擦纳米发电机)为电池充电,然后电池为负载供能。为了检测TENG发电以及电池充电的效果,需要测量电池的输出功率。为了实现实时监测,故需要进行远程控制。同时因为模块数量可能较多,因此需要控制单个模块的成本
- 远程实时监测
- 成本控制
项目需求
-
可以实时监测每一个电池模块(发电阵列)的动态数据,包括电流、电压、功率、功率因数等数据
-
某一个发电模块发生故障时,及时报警,并上传故障数据
-
监测系统软件具有操作方便、可视化强等特点
-
系统能在较大范围内进行组网通信
-
功率因数:衡量电气设备效率高低的一个系数
-
组网通信:将多个计算机或设备连接和配置成一个网络,使它们能够相互通信和共享资源
系统设计
- 网络部分,每一个电池模块设置一个监测站点;另外设置一个中心站作为监测系统的核心
- 每个监测站点应该设置如下设备:电量传感器、数据采集器、无线装置
总结
-
使用ESP8266-NodeMCU实现无线功能
-
搭建Arduino IDE和VS Code+PlatformOI两种环境,并逐渐向后者靠拢
-
目前以实现功能为主,无论哪种环境。遇到可绕过的错误不要死磕
-
实现了串口通信【Arduino IDE+串口调试助手 & VS Code+PlatformOI】
-
配置好VS Code的环境,MinGW用的百度网盘别人的拷贝
-
bin文件夹设置环境变量的时候不应该单独设置,应该在原有的Path中新建
-
要注意launch.json、tasks.json、c_cpp_properties.json三个文件的编写【.vscode文件夹】
-
斜杠/和反斜杠\
-
斜杠/和反斜杠\: https://blog.csdn.net/weixin_43593330/article/details/89854744
ESP8266-NodeMCU笔记
开发板详解
主控芯片:ESP8266-12E
波特率:9600
-
GPIO:GPIO全拼叫General Purpose Input Output(通用输入输出)简称IO口也叫总线扩展器,GPIO口是由引脚,功能寄存器组成,不同的架构中的GPIO封装不同,所使用的引脚数与寄存器数不同,具体可以参考芯片手册里的GPIO篇。
NodeMCU接入点模式
- NodeMCU可以建立WiFi网络供其他设备连接。
1 | /* |
NodeMCU开发板的无线终端模式
- ESP8266可通过WiFi连接无线路由器。这与用您的手机通过WiFi连接无线路由器的模式相同
通过WiFi连接无线路由器
1 | /* |
自动连接最强WiFi
1 |
|
NodeMCU建立基本网络服务器
-
承担网络服务器工作的设备都是运算能力比较强大的电脑
-
ESP866-NodeMCU虽然也能实现网络服务器的一些功能
-
但是毕竟它的运算能力是无法与那些昂贵的服务器电脑相媲美的,因此ESP8266-NodeMCU只能实现一些基本的网络服务功能
-
不过这些基本的网络服务功能已经足够我们开发物联网项目了
-
让ESP8266-NodeMCU实现网络服务功能
NodeMCU网页服务功能
1 | /********************************************************************** |
1 | /********************************************************************** |
已经可以控制LED的亮灭以及闪烁的开始和停止
1 | /********************************************************************** |
MQTT
CONNECT报文——客户端发送给服务端的报文
-
cleanSession字段为true的时候,客户端不会保存信息,说明该信息不重要
-
cleanSession字段为false的时候,客户端会保存信息,并且在没有收到服务端的“确认收到”回执的时候,会不断发送该报文,以确保不会出现丢失。说明该信息重要
-
心跳机制 KeepAlive字段
-
为了确认服务端对客户端每一个设备的连接状态是可知的
-
往往用于检测不经常发送信息给服务端甚至不发送信息给服务端(只接受信息)的客户端是否保持连接
-
如果KeepAlive字段为60,则该客户端每隔60s会发送一个信息给服务端,确保该客户端已经连接;如果没有收到这个信息,则有可能该客户端已经断连
-