终于到 deadline 了草
0x00.前言
还记得推上的那张曲线图嘛,越临近deadline
效率越高(雾
2020-4-23 23:35:25
:
点击此处 ← 查看折叠
本来想着直接在社区修改,结果预览的图片都403
了……于是又转回来修改了
又想起来Coding Pages
今晚突然莫名炸了博客也进不来了……
0x01.简介
其实这阵子一直盯着专栏看投稿文章的方向性,印象里上周直至昨天还只有4
篇,今天突然就多了数十篇,看完大佬们已经提交的文章,感觉好多都是LoRa
相关的
虽然当初比赛申请的时候并不知道RoLa
是什么,但是看完大佬们的文章也算是明白了它的基本使用方法吧,传输距离比WiFi
远多了可是印象里最深刻的一点了
最后说回自己申请的32
板子,虽然是个半内行人但是拿到手也能看出这是一块好板子,拿到手之后真是爱不释手hhh
而且还能脱离数据线仅使用锂电池供电(毕竟主打的低功耗MCU
),不过某天晚上测试过一次不到8h
就没电了(推测主要原因是即使关闭OLED
的耗电量巨大……OLED
显示再等到早上起来同样会没电)
0x02.EVB_MX_Plus
配套的联网模块使用ESP8266
模组,这个用的再熟悉不过了,也赠送了RoLa
模组,但是在公开的覆盖图上并没有看到市内有覆盖,因此暂时仍旧使用前者
另外的拓展E51
模块足够使用,也没有额外购买其他型号的(
板子拿到手的那个周末就照着例程成功对接上了,见EVB_MX_Plus 对接腾讯云物联网开发平台,不得不说物联网开发平台
是真的方便(除了因自己没看好烧错例程无法对接之外),demo
程序可以实现云端控制灯的开关(顺便吐槽下这个灯真是巨亮无比)然后去看板子上的其他传感器:另外在例程里也看到了温、湿、光
应有尽有,DHT11
的适配,估计已经找个PIN
给接上就也能使用了2020-4-23 23:42:42
:
看到DHT11_BUS.c
库还是忍不住把之前放在NodeMCU
上的DHT11
拔下来插到板子上了hhh
作为个人业余开发者,并没有接触过工业(商业)产品的经验。所以觉得应该致力于解决贴近自己现实生活中的需求
对于老生常谈的温湿度监控
已经基于NodeMCU
+DHT11
实现,这里就围绕着另一个「课题」进行方案落地
去年
tb
上买了一盆文竹,但是因为种种原因(懒)要么是好几天没浇水,要么是一浇就浇多了……
本来刚拿到手的时候是绿绿的,到了现在已经变黄了,惨……
因此决定监测植物的湿度,于是立即去tb
购买传感器等相关配件
虽然确实是用了红包省钱卡
的5
元无门槛红包,但是其实也不是很贵的样子
拿到手后首先来看土壤湿度传感器
,这个传感器说到底还是国内的厂子自己生产的,引出的两根线接到另外一块比较器板子上
型号选的是4 PIN
的,即除了输入的电源和地之外,输出既有A
也有D
,数字量D
其实是依赖于LM358
来比较电压大小,因此可以手动调节板子上的滑动变阻器来改变开始输出的阈值
同时板子上除了电源有LED
指示之外,另一个LED
正是和D
口状态同步的,这里毕竟要看数值,因此选择A
口怼到开发板的ADC1
上来测量其实际电压
电压拿到手之后还需要映射到湿度范围上,虽然实际关系可能不是近似于线性,但是这里还是当做线性处理了
相对湿度的计算方法很简单,放空气中是4V
(0%
)左右,插水里面是1V
(100%
)左右
即:soil_humi = (4000 - adValue) / 30;
(请无视混用了下划线
和驼峰
命名法
然后就是小水泵了,这玩楞直接插5V
流速实在是太快了(主要还是花盆太小了),而且不清楚能不能加上负反馈调节(学过的《自动控制原理》还略有印象)1m
长的水管拿到手发现巨长,于是拿小刀割出20cm
,足够使用了
回头去翻商品详情发现了这么一段话,没错绝对湿度值
并不适用于土壤
这水泵电流120mA
,直接拿单片机GPIO
口是驱动不了的,可以选择外接一个三极管搞定,并且不能长时间工作因为会影响到板子的供电?实测不大一会mqtt
通信就报错断开了,串口输出还能看到路径乱码???
目前的解决方法是,每次只接通3s
之后就断开,这个水量也足够一次短暂的补充了(花盆小
2020-4-22 21:30:23
:
点击此处 ← 查看折叠
晚上挖掘E53_IA1.pdf
E53_SC1.pdf
原理图
首先要引入E51
的概念,从原理图提供的信息可以得知这是国内自定的一个接口标准
正面左侧SHT30
中间LED
右侧PT4211E23E
,BH1750
D2
橙色?的二极管还是可以辨识出来的,光照传感器仔细看也能看见上面的采集框
背面ERRPROM
,但是目前存储足够并没有需求使用
然后就发现了有电机(水泵)预留位……因为图中标出了结果看错图草motor sw
和motor
,这不明显的拿前者控制后者嘛,并且猜测是拉低motor sw
导致motor
接地(实物中D2
那么大的二极管搁那放着的呢……
另,之前的基于TencentOS tiny开源项目的实践--从零开始快速打造IoT小应用.pdf
介绍中拓展板E53_IA1
是实装有电机和DHT11
的,这也解释了为什么源码中有DHT11_BUS.c
但是并没有SHT30
的设备驱动
顺便吐槽下DHT11
的湿度百分比竟然是个浮点数???之前一直都是只有整数位的……
最后的水位传感器,是准备放在储水容器之中来测量剩余可用水量,目前并未实装(原因不仅在于需要寻找空余的GPIO
口,更在于又需要找5V
供电……
虽然买了一堆传感器可以直接把状态数据推到云上,但是每多一个传感器就需要多一处供电啊(
当然了,这个同样是输出模拟值,需要从GPIO
口进行ADC
采集来读取其电压值来判定水位线,基本思路是一样的
0x03.代码
gh
说到底还是C51
的基础不够,搞一个编译pass
都得排半天的错
0x04.腾讯云物联网开发平台
来上云吧,进入控制台,印象里早在公测的时候就申请到了名额
这里有两个项目:智能灯
那个是板子的示例项目,flower
是自己新建的项目
比较实用的还有数据开发
功能,可以实现自己的逻辑
输出
部分的APP 推送
暂时还用不上,因此选择公众号推送
方式,即报警消息通过微信服务号推送给自己处理
部分的数据过滤
其实就是判定条件,比如湿度低于70%
触发等等输入
部分的设备数据
即传感器读取的湿度数据,设备事件
即通过event
上报的事件
,同理设备状态
也是类似的(都是在读传感器嘛
EVB_MX_Plus
出厂的开关位置控制了USB
接口插到PC
上为串口使用由CH340
驱动,烧录是用了另外的接口因此互不影响(这板子设计的真是妙啊
另外,如果接上ST-Link
的话,就无法使用物理开关控制断电了,它会强制供电,烧录完成之后可以按下板子上的复位键来重启,就不需要拔插ST-Link
了
而只接USB
线就可以使用物理开关,并且会给板子上的锂电池充电
0x05.连线图
0x06.小程序
源码自带小程序端,照着模板不到半小时就能预览出来(顺便发现代码里明文SECRET_ID
和SECRET_KEY
……这个还是得拿CAM
单独建个只读API
密钥
也可以使用腾讯连连
,从官方控制台配好UI
之后直接扫码就可以使用了,非常方便
0x07.实验室站
这里的构想是通过数据同步
将数据存储至私有库中,并使用Grafana
之类的可视化工具查看数据同步
即将设备通过MQTT
上报的数据以HTTP
形式发送至自己的云主机上,通过Flask
开一个接口接收并存储至MySQL
就搞定了
此构想其他项目已实现,暂未此处已实装
示例Flask
代码,上传接口未做来源验证,后期可以自行加个token
做双方校验
1 |
|
即可用https://lab.yuangezhizao.cn/api/v0.0.1/IOT/flower?devicename=dev001
接口进行访问
Grafana
里选好数据源就也可以进行可视化了
0x08.HomeAssistant
这里的构想是接入HomeAssistant
,可使用其进行查看,并配置HomeKit
对接IOS
家庭,即可用Siri
语音控制
方案一:结合上面的数据同步
,数据就触手可及了,自有源也不必担心消耗过多的请求量HomeAssistant
里有一种sensor
平台是command_line
,即把执行shell
获取到的数据为数据来源,直接写个读MySQL
的shell
就ok
了
有这个command_line
就可以任意对接了,爽到(方案二:连接到云上MQTT
……
此构想其他项目已实现,暂未此处已实装
1 | sensor: |
0x09.HomeKit
打开家庭可以同步看到传感器的状态,这里有个坑就是温度
传感器可以显示,但是湿度
不行,解决方法是自定义属性
1 | sensor.soil_humi: |
也可以召唤Siri
0x09.后记
总的来说收获还是巨大的(wx
群里都是巨佬,瑟瑟发抖……
未完待续……