nb-iot信息中心 转发墨水屏显示
一.功能:
1.远程记事留言:
手机输入文字,通过MQTT协议发送到墨水屏显示。
2.显示天气:
当通过MQTT协议收到 "weather" 关键字, nb-iot获取天气信息,并转发到墨水屏显示
触发器可以用树莓派, https://ifttt.com/ 等
通过触发器 https://ifttt.com/ 能扩展出其它相关功能,比如当出现异常天气,收到邮件等
特点:
1.网络选用nb-iot,没用wifi。因为有些地方无wifi(例如车里) /场地更换重新配置wifi账号繁琐 /有些wifi验证复杂,单片机无法连接使用
2.墨水屏系统分成2套设备.
3.第1套设备: nbiot版本的MQTT转蓝牙透传器
4.第2套设备: 墨水屏
5.第1套设备通过nbiot技术连接到mqtt服务器,收到文字信息后蓝牙透传给墨水屏显示.
6.设计成2套设备是为了让墨水屏减少充电频率,使用这种设计,如果墨水屏记事留言频率不高的话,18650电池为墨水屏供电,1次充满电能使用2-6个月。MQTT转蓝牙透传器因为需要nbiot实时联网,不能休眠省电,用电相对较高。网上查到SIM7020可做到最大化优化省电,据传能做到用普通电池供电几年的能力,用于水表,科学测量仪上,我目前没掌握此技术,代码中没用到节能技术.
用法:
1.2套设备烧录相应程序,上电,第1套设备连接上MQTT服务约需要1分钟左右。
2.手机上安装IotMTQQPanel,配置界面,填入文字,发送出文字信息至MQTT云服务器。
3.约10几秒左右,墨水屏显示手机发出的文字.
二.硬件:
A.第1套设备:MQTT转蓝牙透传器
>组成:
esp32+sim7020
>硬件资料:
https://github.com/Xinyuan-LilyGO/LilyGo-T-PCIE
>功能:
通过NBIOT技术连接mqtt服务器,可随时待命接收MQTT客户端发来的的文字。当收到文字后,通过蓝牙将文字发给墨水屏
>样图:
B.第2套设备:墨水屏
>组成:
lilygo-epd47 墨水屏+hc08蓝牙硬件
>硬件资料:
https://github.com/Xinyuan-LilyGO/LilyGo-EPD47
https://github.com/Xinyuan-LilyGO/EPD47-HC08
>功能:
平时深度休眠,收到第1套设备的蓝牙信号后唤醒,同时接收文字信息,刷屏显示文字,进入休眠
>样图:
<b> hc08 </b> <br/>
hc-08是一块 BLE4.0蓝牙模块 (购买时要告诉卖方要双晶振版本,否则不支持一级节能模式)<br/>
hc-08需要配置成客户模式,一级节能模式,蓝牙名称用AT指令修改为edp47_ink,能防止被别的设备误连<br/>
引脚连接:<br/>
lilygo-epd47 ==> hc-08<br/>
VCC VCC<br/>
14 TX<br/>
15 RX<br/>
GND GND<br/>
hc08 AT命令预处理:
AT+MODE=1 //设置成一级节能模式(必须)
AT+NAME=INK_047 //修改蓝牙名称,用于客户端查找蓝牙用
AT+LED=0 //关闭led灯,省电
注: 也可以通过连接到lilygo-epd47后,自编程序用lilygo-epd47虚拟串口传入AT命令
注:可以一步到位,直接买lilygo 公司销售的专用于 lilygo-epd47 的hc-08模块,以上步骤可跳过。该模块将hc08模块套上了适合lilygo-epd47模块的外壳,集成度好, 已进行AT命令预处理.上手即用
如图, 蓝色小模块部分:
3.手机端可使用MQTT客户端软件IotMTQQPanel. 在此软件输入文字,直至文字显示到墨水屏,平均需要5-10秒左右.
三.代码说明:
1.nbiot_lilygo_epd47_mqtt_sim7020_pcie nbiot 信息转蓝牙代码
烧录到1套设备的ESP32芯片上
1.1 软件: arduino 1.8.13
1.2 用到的库文件:
arduino-esp32 版本 1.0.6
1.3开发板选择:ESP32 DEV Module
1.4选择端口,点击烧录
注:
nbiot_lilygo_epd47_mqtt_sim7020_pcie.ino 文件变量,共3处需要修改:
防止其它mqtt客户端用到同样名字互相干扰影响
另外,指向的MQTT服务器是网上免费的,很可能某天会失效,到时再换个免费或自建的mqtt服务器即可。
String mqtt_clientid = "client_you_7020";
String mqtt_topic = "/you_lily_mqtt";
String mqtt_topic_resp = "/you_lily_mqtt/resp";
代码里面还有一些未描述的功能,例如语音TTS等,可查看代码了解。
2.epd47_blue_waker_center_mqtt_weather_sim7020_pcie 信息转蓝牙代码
上面程序的升级版本.
需修改源码中的: config.h jisuapi_key变量
KEY 来源:极速数据 https://www.jisuapi.com/api/weather/
如果mqtt收到信息“weather” 则nbiot获取天气信息,并发送到墨水屏显示.
3.epd47_blue_waker_show_weather 墨水屏显示文字的代码
代码位置在 https://github.com/lixy123/nbiot_lilygo_epd47_weather/tree/main/epd47_blue_waker_show_weather
烧录到LilyGo-EPD47墨水屏
2.1 软件: arduino 1.8.13
2.2 用到的库文件:
https://github.com/espressif/arduino-esp32 版本:1.0.6
https://github.com/Xinyuan-LilyGO/TTGO_TWatch_Library 最新版本, 仅用到它的开发板定义
https://github.com/Xinyuan-LilyGO/LilyGo-EPD47 最新版本
https://github.com/bblanchon/ArduinoJson 版本: 6
https://github.com/ivanseidel/LinkedList 最新版本
2.3开发板选择:TTGO-T-WATCH / PSRAM ENABLED
2.4选择端口,点击烧录
注:代码内置显示天气,语音TTS的代码功能,是个增强的墨水屏套餐。用不着的代码可自行精简去掉.
四.技术指标:
第1套设备工作状态电流约40ma, 普通18650电池一般在2000mah, 估算支撑约2000/40/24=2天。电池供电较勉强
第2套设备休眠状态电流约0.2-0.8ma. 工作状态电流约60-100ma,工作状态一般10几秒,然后立即进入休眠,大部分时间是休眠状态,如按休眠状态0.5ma平均电流估算,普通18650电池能待机 2000/0.5/24/30=5个月,非常适合电池供电