程序员黑科技 | 用13块钱DIY微信小程序浇花神器

栏目: IT技术 · 发布时间: 4年前

内容简介:作者:iotzheng,腾讯TEG平台开发工程师去年7月的时候,公司办了一场王者荣耀大赛,我和同事们也报名参加了。首局比赛就给我们泼了冷水,“深圳湾一号业主”无情摧残了“祖国的花朵”。

程序员黑科技 | 用13块钱DIY微信小程序浇花神器

作者:iotzheng,腾讯TEG平台开发工程师 (江湖人称IoT小能手)

前言

去年7月的时候,公司办了一场王者荣耀大赛,我和同事们也报名参加了。首局比赛就给我们泼了冷水,“深圳湾一号业主”无情摧残了“祖国的花朵”。

程序员黑科技 | 用13块钱DIY微信小程序浇花神器

作为“祖国的花朵”队的替补射手,我心如刀割。

“为什么这样对祖国的花朵?你们平常不种花的吗?” 

“没办法啊,你知道深圳湾一号这种房子很大的,每天浇花得走好久。” 

“哼!总有一天我会让你们明白!”

小能手当时就下了决心,必须要让“深圳湾一号业主”明白,要让他们明白,房子再大也是可以轻松浇花的!

没过几天,小能手就基于腾讯云物联网开发平台做出来一个浇花器,随时随地打开微信小程序就可以查看盆栽的土壤情况,并且进行远程浇花。这样,长期出差的朋友,以及阳台路程达10分钟的业主们,都得以轻松呵护自己的花花草草。

这篇文章梳理了当时的方案设计和实现,给朋友们做个参考。

1 方案简介

1.1 总体方案

端侧通过 TencentOS tiny 定制 EVB_MX 开发板外挂一个湿度传感器和水泵,通过 LoRaWAN 模组及网关与腾讯云物联网开发平台进行通信,应用层使用微信小程序来查看湿度和控制水泵浇水。

程序员黑科技 | 用13块钱DIY微信小程序浇花神器

总体系统架构先放这边,接下来具体说说。

1.2 关于节点功能的考虑

小米曾经出了一款“花花草草检测仪”,可以检测光照、酸碱度、温湿度,采集数据指导小白用户如何更好地种花。这个产品是很好,但是它终于是单向的,只能检测,不能输出,就是说你看到小花快渴死了,但仍做不了什么。

程序员黑科技 | 用13块钱DIY微信小程序浇花神器

所以小能手希望做一个能远程浇花的设备,不如就叫它“花花草草守护仪”。

另外结合网上热心网友的反馈,我决定砍掉光照、酸碱度、温度这几个非刚需的传感器,采用湿度传感器长期监控土壤的情况。

1.3 关于联网方式的考虑

深圳湾一号的套均建筑面积得有三四百平了吧,这要是用普通的 WiFi,业主们肯定还是会受到覆盖不足的困扰。贴心的小能手使用了目前物联网领域最火的技术 LoRa,低功耗远距离,真是别墅物联网应用的不二之选。

2 详细设计方案及实现

有了上面的构思之后,接下来描述详细设计方案及相应的实现。

2.1 浇花器硬件设计

硬件直接采用腾讯云物联网 TencentOS tiny EVB_MX 开发板,自带瑞兴恒方的 LoRa 模组。外设部分,从网上花了 13 块钱购买了水泵和土壤湿度采集器。其中水泵只需要一个IO操作即可,湿度采集器可使用AD采集。

程序员黑科技 | 用13块钱DIY微信小程序浇花神器

硬件连接部分有个要 注意的,在电源部 分,水泵这种大功率设备如果直接接到开发板会引起电源波动,会影响 LoRa 射频的信号接收,因此我是单独给水泵再供电5V。

程序员黑科技 | 用13块钱DIY微信小程序浇花神器

2.2 浇花器软件设计

浇花器业务上采用 LoRaWAN Class C 模式,这样可以实时获取到开关水泵的指令。同时周期性地上报相对湿度。

软件协议设计比较简单,且LoRa应用也建议使用精简的应用数据,我在发送时使用一个字节,采集土壤湿度的百分比;接收时也使用一个字节,0表示关泵,1表示开泵。

static void McpsIndication(uint8_t* data, uint8_t len)

{

printf("McpsIndication len=%d data[0]=%d\n", len, data[0]);

if (data[0] == 1) {

Flower_SetPump(ON);

} else {

Flower_SetPump(OFF);

}

}

void lorawan_demo(void)

{

int count = 1;

extern int rhf76_lora_init(hal_uart_port_t uart_port);

uint8_t humi;

rhf76_lora_init(HAL_UART_PORT_0);

tos_lora_module_recv_register(McpsIndication);

tos_lora_module_join();

while (1) {

if (count % 20 == 0) {

humi = Flower_ReadHumi();

printf("## Flower_ReadHumit is %d \r\n", humi);

tos_lora_module_send(&humi, 1);

}

count++;

osDelay(500);

}

}

外设部分,ADC / GPIO 操作也不难,具体代码见下方:

void Flower_SetPump(PUMP_Status_ENUM onoff)

{

HAL_GPIO_WritePin(PUMP_GPIO_Port, PUMP_Pin, onoff == ON ? GPIO_PIN_RESET : GPIO_PIN_SET );

}

uint8_t Flower_ReadHumi(void)

{

uint16_t advalue;

uint8_t humi;

HAL_ADC_Start(&hadc1);

HAL_ADC_PollForConversion(&hadc1, 50);

advalue = (uint16_t)HAL_ADC_GetValue(&hadc1);

humi = (4000 - advalue)/15;

if (humi > 100) {

humi = 100;

}

return humi;

}

对函数中的 AD 换算公式做个简单的说明,本能手在网上买了十来块钱的土壤湿度传感器。 这玩意不能探测绝对湿度,于是本能手做了一些实测,根据干燥空气以及浸没水中的 AD 数值情况,得到了一个简易的公式,来测量土壤的含水量 0% ~ 100%。

烧写固件后,“花花草草守护仪”就开始周期性上报土壤湿度数据。

[10:36:59.591]收←◆## Flower_ReadHumit is 33

AT CMD:

AT+CMSGHEX="21"

[10:37:01.763]收←◆---------->+LOG: DEBUG 2112764 LORA RX, 500900000, SF12, 125KHz



[10:37:02.762]收←◆---------->+LOG: DEBUG 2113763 LORA RX, 505300000, SF12, 125KHz



[10:37:03.951]收←◆---------->+LOG: DEBUG 2114950 LORA RX, 60BB2509262083008DDE8D58, -32, 5

---------->+CMSGHEX: ACK Received

---------->+CMSGHEX: RXWIN2, RSSI -32, SNR 5.0

---------->+CMSGHEX: Done

2.3 腾讯云 IoT Explorer 产品及设备处理

端侧处理完毕后,接下来在云平台上创建产品和设备。

云平台服务采用 腾讯云物联网开发平台(IoT Explorer) ,创建了一个 LoRaWAN 通信方式的产品,在设备参数部分选择 Class C 模式。

同时给“花花草草守护仪”定义了自己的数据模板,包含两个属性,一个水泵开关 pump_switch,一个土壤相对湿度 soil_moisture。

程序员黑科技 | 用13块钱DIY微信小程序浇花神器

相应的设备数据解析脚本如下,简单处理下两个属性:

function RawToProtocol(fPort, bytes) {

var data = {

"method": "report",

"clientToken" : new Date(),

"params" : {}

};

data.params.soil_moisture = bytes[0];

return data;

}

function ProtocolToRaw(obj) {

var data = new Array();

data[0] = 5;// fport=5

data[1] = 0;// unconfirmed mode

data[2] = obj.params.pump_switch;

return data;

}

2.4 微信小程序

TencentOS tiny 的仓库中已经帮助大家做好了几个现成的小程序 DEMO,目录为 TencentOStiny/tools/MiniProgram/,因此我就偷个懒在上面修改下,主要功能是实现开泵浇水以及土壤湿度的查看。

程序员黑科技 | 用13块钱DIY微信小程序浇花神器

3 成果展示

程序员黑科技 | 用13块钱DIY微信小程序浇花神器

再添加一个动图。

程序员黑科技 | 用13块钱DIY微信小程序浇花神器

至此,相应深圳湾一号的伙伴们应该明白了,房子太大也是可以轻松浇花的。

怎么,只看文章觉得不过瘾?扫描下方二维码, 程序员 的浇花小视频

程序员黑科技 | 用13块钱DIY微信小程序浇花神器

腾讯技术课直播预告:

4月30日(今天)晚上8点-9点

程序员黑科技 | 用13块钱DIY微信小程序浇花神器

程序员黑科技 | 用13块钱DIY微信小程序浇花神器


以上所述就是小编给大家介绍的《程序员黑科技 | 用13块钱DIY微信小程序浇花神器》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

概率编程实战

概率编程实战

[美]艾维·费弗 (Avi Pfeffer) / 姚军 / 人民邮电出版社 / 2017-4 / 89

概率推理是不确定性条件下做出决策的重要方法,在许多领域都已经得到了广泛的应用。概率编程充分结合了概率推理模型和现代计算机编程语言,使这一方法的实施更加简便,现已在许多领域(包括炙手可热的机器学习)中崭露头角,各种概率编程系统也如雨后春笋般出现。本书的作者Avi Pfeffer正是主流概率编程系统Figaro的首席开发者,他以详尽的实例、清晰易懂的解说引领读者进入这一过去令人望而生畏的领域。通读本书......一起来看看 《概率编程实战》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码