打印
[uCOS/RTOS]

利用M1传感器DIY空气检测仪(一)

[复制链接]
1394|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 Fillmore 于 2019-6-12 11:41 编辑

之前手里有一个悟空 m1,想将其连接到 HA,利用官方 APP 配网,一直失败。在论坛看到有大神出了 M1 的固件,按照教程,拆开,刷机,进入 bootloader 后一直有 error 打印,无法完成升级流程,索性将 M1 的传感器拆下来,自己开发,将传感器的数据利用 mqtt 发往 HA。

自己开发的固件,希望实现以下功能:
- 可以利用控制台配网
- 可以利用微信配网
- 可以利用控制台设置数据更新时间
- 实现设备的自动发现
- 实现 OTA 升级

手上有一块空闲的 RTL8710 的开发板,正好拿来废物利用。操作系统使用 rt-thread,使用操作系统的好处是操作系统自带了控制台,调试和配置很方便,再者,rt-thread 拥有数量众多的软件包,本次开发中需要用到的 mqtt,rt-thread 也已经提供了,省去了开发的时间。

RTL8710的照片如下图所示,是个类似 ESP8266 的 wifi soc


ZE08 模块预留了 7 个 IO 出来,我们只要用到其中的 4 个,我已经在图中标了出来


M1 使用的甲醛传感器型号是 ZE08,这个传感器,5V 供电,使用串口发送数据,读取数据比较简单。ZE08 有两种模式,一种是主动上报模式,一直是问答模式。我用的是问答模式,也就是要读取数据,要先发读取数据的命令,ZE08 才会把数据返回过来。这里列出需要用到的命令和数据结构体:[color=white !important]
[color=white !important]?





const char ze08_cmd_initiative_upload_mode[] = {0xFF, 0x01, 0x78, 0x40, 0x00, 0x00, 0x00, 0x00, 0x47};
const char ze08_cmd_question_answer_mode[]   = {0xFF, 0x01, 0x78, 0x41, 0x00, 0x00, 0x00, 0x00, 0x46};
const char ze08_cmd_read_data[]              = {0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79};

struct ze08_data_fromat
{
    volatile uint8_t start;
    volatile uint8_t cmd;
    volatile uint8_t ug_h;
    volatile uint8_t ug_l;
    volatile uint8_t retain1;
    volatile uint8_t retain2;
    volatile uint8_t ppb_h;
    volatile uint8_t ppb_l;
    volatile uint8_t verify;
};


现在的读取数据是 5s 读取一次,数据读取成功,结果如下:

mqtt 服务器使用 HA 自带的 HBMQTT,需要在 HA 的 mqtt 里设置登陆用密码,用户名为默认的 homeassistant

mqtt:
  password: your_password


在 sensor 里添加 mqtt 传感器的相关配置

sensor:
  ...
  - platform: mqtt
    state_topic: 'home/bedroom/methanal/state'
    name: ze08
    unit_of_measurement: ug/m3


然后利用 mqtt 将数据发往 topic:home/bedroom/methanal/state 即可,最终效果如下所示:
[size=0.83em]VBEY5WJIOFF73PW]OZ%{H`L.png (82 KB, 下载次数: 0)
下载附件
[color=rgb(153, 153, 153) !important]2019-5-27 10:57 上传




ze08 已经连接上了 HA,现在的数据是直接发往 state topic的,看教程,M1 的 3 个传感器可以通过 json 一起发送过去,等将 3 个传感器都对接上后再改改,第一篇就这样吧。



使用特权

评论回复
评论
21ic小喇叭 2019-6-13 10:16 回复TA
楼主自己做的吗,好厉害 

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

64

主题

144

帖子

0

粉丝