数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 9981|回复: 17

[Arduino] 自制ESP8266的MQTT消息显示屏,基于Tasmota-display

[复制链接]
发表于 2021-6-9 21:29:22 | 显示全部楼层 |阅读模式
本帖最后由 mrmay 于 2021-6-9 21:31 编辑

本贴发在了瀚思彼岸论坛,毕竟那里玩HASS的人多,指导MQTT的人也多一些,但数码坛也是人才济济,独乐乐不如众乐乐,我自己搬运一下,始终在潜水,新站第一帖。正面:


侧面:


开孔开的着急,电磨切开后没怎么用锉刀细修而是用壁纸刀干的,近距离拍照把丑丑的开孔效果放大了,更丑了,实际不会这么近看,效果还可以,有条件的小伙伴可以3D打印。
侧面通过一个3.5耳机插座引出了一个IO口,方便后期加传感器。

功能:
通过240*320 TFT屏幕显示各传感器发送到MQTT服务器上的消息或者本地传感器的数值。
以上图片可见我家培正模块传给HASS的各种用电情况,以及另外的温度、湿度、光照强度、气压等。

玩HASS的怎么能没有各种传感器,都去网页查看还是挺麻烦的,本贴制作的显示屏可以显示各类传感器信息,算是对智能家居系统的一个小小补充。
正面两个按钮,一个复位,一个IO,右侧上方时开关,下方是人体感应,人来亮屏,人走30秒自动熄屏,延长屏幕寿命,减少碳排放。

材料:
塑料盒子以及各种开孔工具,锉刀等。
ILI9341  TFT屏幕,通过4线SPI与8266通信,这个最贵,花了接近40
esp8266  12F模块,NodeMCU最好,可以焊接前调试
3.3V LDO
人体传感器模块,这个可有可无,正好手里有就加上了
各种线若干,焊接工具等。

软件:
ESP8266刷Tasmota-Display,过程从略,论坛大把,文件附在下面
MQTT服务器以及各种能够发送MQTT信息的传感器。

过程:

屏幕正面


屏幕背面
背面右侧从上往下分别是
vcc  gnd  cs  res  D/C mosi   miso  sck  led  miso 另外的引脚是触摸用,本次不用到触摸。
其中cs  res  D/C  mosi  miso  SCK  六脚都需要接IO口,Led可以接vcc常亮,也可以通过一三极管接IO口,背光电流有50mA以上,不要直接接8266IO!
由于是硬件SPI  引脚对应不能错,GPIO14(CLK), GPIO13(MOSI) and GPIO12(MISO)

焊接或者是杜邦线先连接一下刷好display 的nodemcu


盒子前盖开孔


我焊的乱七八糟,这几个IO口不挨着,导致背面各种飞线,背面就不发了。

上电,找到tasmota开头的WIFI信号链接,浏览器会自动跳转192.168.4.1,配置一下网络热点重启。
访问8266的IP地址就可以看到tasmota界面了。
进入配置界面,配置MQTT服务器,重启
配置模块Configure Module
下图是我的配置,请按照自己的连接情况设置GPIO功能,SPI相关的IO口不要变更。


IO2 我给了人体传感器,设置成了switch,IO0 我给了屏幕背光,设置成继电器,设置成PWM应该可以调节背光亮度。
查看Console,如果有如下打印应该就是识别屏幕了。


  1. 00:00:00.001 HDW: ESP8266EX
  2. 00:00:00.050 CFG: Loaded from flash at F5, Count 23
  3. 00:00:00.055 QPC: Count 1
  4. 00:00:00.059 SPI: Hardware using GPIO14(CLK), GPIO13(MOSI) and GPIO12(MISO)
  5. 00:00:00.163 DSP: ILI9341
  6. 00:00:00.167 Project tasmota Tasmota Version 9.4.0(display)-2_7_4_9(2021-04-23T10:07:21)
  7. 00:00:01.564 WIF: Connecting to AP1  in mode 11n as display-2119...
  8. 00:00:02.789 WIF: Connected
  9. 00:00:03.041 HTP: Web server active on display-2119 with IP address 192.168.10.152
  10. 21:24:34.268 MQT: Attempting connection...
  11. 21:24:34.292 MQT: Connected
  12. 21:24:34.295 MQT: tele/display/LWT = Online (retained)
复制代码



此时屏幕应该有显示了,但是可能字很小,或者只有一个角显示,如果没有显示就需要检查各种连线和设置了。
设置屏幕:
Console里面使用命令
  1. DisplaySize        1..4  设置屏幕显示文字大小  参数1 2 3 4 从小到大
  2. DisplayRotate  设置屏幕旋转
  3. 0 = 0°
  4. 1 = 90°
  5. 2 = 180°
  6. 3 = 270°

  7. DisplayCols        1..44 设置屏幕显示列宽1-44
  8. DisplayRows        1..32 设置屏幕显示行款1-32
复制代码
屏幕显示设置好之后上方会出现如开篇图上最上方的红黄时间显示,
接下来就可以设置屏幕为MQTT显示了:
  1. displaymode 5
复制代码
稍等片刻等获取到MQTT信息就会在屏幕上显示了!恭喜
消息是滚动显示的,效果还不错!
  1. displaymode 4
复制代码
可以显示本地传感器和MQTT,即连接到此8266的传感器。



拍照片的时候这货当了背景,也出来露个脸吧,仿制老站的12864示波器,本贴就是根据前期制作的这个51加12864的玩具示波器的外壳得到的灵感。平时测个频率还比较准,波形什么的纯属好玩。
等有空了给他刷个万年历。


测一下电流

人体传感器有人亮屏的时候大概110ma电流,熄屏后8266活动时在80ma左右,动态睡眠时20ma左右


做好之后又发的贴子,过程难免有遗漏,好了,有问题请留言吧。





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x

打赏

参与人数 1家元 +20 收起 理由
听雨亭 + 20

查看全部打赏

 楼主| 发表于 2021-6-10 12:34:27 来自手机浏览器 | 显示全部楼层
kkstun 发表于 2021-6-10 11:07
问问大佬,Tasmota能不能接受串口数据,然后把收到的转发给mqtt呢

我刚看了一下文档,没有找到你说的这个功能,但是我觉得这可能是支持的。不知道你要用来做什么,如果有时间你可以自己翻翻文档https://tasmota.github.io/docs/
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-10 17:51:59 来自手机浏览器 | 显示全部楼层
yanzhaouuu 发表于 2021-6-10 16:58
这个可以连接ds18b20传感器吗

常用的传感器都支持,18b20肯定支持
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-10 18:10:31 来自手机浏览器 | 显示全部楼层
kkstun 发表于 2021-6-10 17:27
找了一圈也没看懂。似乎可以用命令,试了下不成功。

Serial Bridge~
Hardware Serial Bridge uses GPIO1 (Tx) and GPIO3 (Rx) or GPIO13 (Tx) and GPIO15 (Rx) pins of your device. Software Serial Bridge can use any other GPIO to be configured as components Serial Tx and Serial Rx (or SerBr Tx and SerBr Rx). If Tx and Rx components are not assigned in the Template or Module, GPIO1 and GPIO3 will be used. Note that changing serial logging (SerialLog 0) will disable the hardware Serial Bridge.

Information received by Tasmota over the serial bridge is captured automatically. Before data will be received, a properly formatted SerialSend<x> or SSerialSend<x> command must be executed. This must be done any time the device restarts (e.g., via a System#Boot triggered rule). This command is required in order to set how the expected serial data will be formatted and interpreted (i.e., which <x> option). A {"SSerialReceived":{"Data":"<string>"}} message will be posted. You can use a rule to process the string which will be contained in SSerialReceived#Data.

Expect possible communication errors when additional sensors are configured.

肯定是支持的,想要串口通信波特率啥的你肯定得设置一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-30 10:29:27 | 显示全部楼层
茶壹杯 发表于 2023-7-29 23:42
做消息屏的这个节点  是普通节点吗? 还是必须是建在broker上面的?

茶刚开始接触8266,目前搭个小环境   ...

普通节点,不特殊,7567屏我也有一大堆,貌似tasmota不支持
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-7-12 11:26 , Processed in 0.530401 second(s), 15 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表