日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2024/2/28 编程问答 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 程序员黑科技 | 用13块钱DIY微信小程序浇花神器 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

作者:iotzheng,騰訊TEG平臺(tái)開發(fā)工程師(江湖人稱IoT小能手)

前言

去年7月的時(shí)候,公司辦了一場(chǎng)王者榮耀大賽,我和同事們也報(bào)名參加了。首局比賽就給我們潑了冷水,“深圳灣一號(hào)業(yè)主”無情摧殘了“祖國的花朵”。

作為“祖國的花朵”隊(duì)的替補(bǔ)射手,我心如刀割。

“為什么這樣對(duì)祖國的花朵?你們平常不種花的嗎?”?

“沒辦法啊,你知道深圳灣一號(hào)這種房子很大的,每天澆花得走好久。”?

“哼!總有一天我會(huì)讓你們明白!”

小能手當(dāng)時(shí)就下了決心,必須要讓“深圳灣一號(hào)業(yè)主”明白,要讓他們明白,房子再大也是可以輕松澆花的!

沒過幾天,小能手就基于騰訊云物聯(lián)網(wǎng)開發(fā)平臺(tái)做出來一個(gè)澆花器,隨時(shí)隨地打開微信小程序就可以查看盆栽的土壤情況,并且進(jìn)行遠(yuǎn)程澆花。這樣,長(zhǎng)期出差的朋友,以及陽臺(tái)路程達(dá)10分鐘的業(yè)主們,都得以輕松呵護(hù)自己的花花草草。

這篇文章梳理了當(dāng)時(shí)的方案設(shè)計(jì)和實(shí)現(xiàn),給朋友們做個(gè)參考。

1 方案簡(jiǎn)介

1.1 總體方案

端側(cè)通過 TencentOS tiny 定制 EVB_MX 開發(fā)板外掛一個(gè)濕度傳感器和水泵,通過 LoRaWAN 模組及網(wǎng)關(guān)與騰訊云物聯(lián)網(wǎng)開發(fā)平臺(tái)進(jìn)行通信,應(yīng)用層使用微信小程序來查看濕度和控制水泵澆水。

總體系統(tǒng)架構(gòu)先放這邊,接下來具體說說。

1.2 關(guān)于節(jié)點(diǎn)功能的考慮

小米曾經(jīng)出了一款“花花草草檢測(cè)儀”,可以檢測(cè)光照、酸堿度、溫濕度,采集數(shù)據(jù)指導(dǎo)小白用戶如何更好地種花。這個(gè)產(chǎn)品是很好,但是它終于是單向的,只能檢測(cè),不能輸出,就是說你看到小花快渴死了,但仍做不了什么。

所以小能手希望做一個(gè)能遠(yuǎn)程澆花的設(shè)備,不如就叫它“花花草草守護(hù)儀”。

另外結(jié)合網(wǎng)上熱心網(wǎng)友的反饋,我決定砍掉光照、酸堿度、溫度這幾個(gè)非剛需的傳感器,采用濕度傳感器長(zhǎng)期監(jiān)控土壤的情況。

1.3 關(guān)于聯(lián)網(wǎng)方式的考慮

深圳灣一號(hào)的套均建筑面積得有三四百平了吧,這要是用普通的 WiFi,業(yè)主們肯定還是會(huì)受到覆蓋不足的困擾。貼心的小能手使用了目前物聯(lián)網(wǎng)領(lǐng)域最火的技術(shù) LoRa,低功耗遠(yuǎn)距離,真是別墅物聯(lián)網(wǎng)應(yīng)用的不二之選。

2 詳細(xì)設(shè)計(jì)方案及實(shí)現(xiàn)

有了上面的構(gòu)思之后,接下來描述詳細(xì)設(shè)計(jì)方案及相應(yīng)的實(shí)現(xiàn)。

2.1 澆花器硬件設(shè)計(jì)

硬件直接采用騰訊云物聯(lián)網(wǎng) TencentOS tiny EVB_MX 開發(fā)板,自帶瑞興恒方的 LoRa 模組。外設(shè)部分,從網(wǎng)上花了 13 塊錢購買了水泵和土壤濕度采集器。其中水泵只需要一個(gè)IO操作即可,濕度采集器可使用AD采集。

硬件連接部分有個(gè)要注意的,在電源部分,水泵這種大功率設(shè)備如果直接接到開發(fā)板會(huì)引起電源波動(dòng),會(huì)影響 LoRa 射頻的信號(hào)接收,因此我是單獨(dú)給水泵再供電5V。

2.2 澆花器軟件設(shè)計(jì)

澆花器業(yè)務(wù)上采用 LoRaWAN Class C 模式,這樣可以實(shí)時(shí)獲取到開關(guān)水泵的指令。同時(shí)周期性地上報(bào)相對(duì)濕度。

軟件協(xié)議設(shè)計(jì)比較簡(jiǎn)單,且LoRa應(yīng)用也建議使用精簡(jiǎn)的應(yīng)用數(shù)據(jù),我在發(fā)送時(shí)使用一個(gè)字節(jié),采集土壤濕度的百分比;接收時(shí)也使用一個(gè)字節(jié),0表示關(guān)泵,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); } }

外設(shè)部分,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; }

對(duì)函數(shù)中的 AD 換算公式做個(gè)簡(jiǎn)單的說明,本能手在網(wǎng)上買了十來塊錢的土壤濕度傳感器。這玩意不能探測(cè)絕對(duì)濕度,于是本能手做了一些實(shí)測(cè),根據(jù)干燥空氣以及浸沒水中的 AD 數(shù)值情況,得到了一個(gè)簡(jiǎn)易的公式,來測(cè)量土壤的含水量 0% ~ 100%。

燒寫固件后,“花花草草守護(hù)儀”就開始周期性上報(bào)土壤濕度數(shù)據(jù)。

[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 產(chǎn)品及設(shè)備處理

端側(cè)處理完畢后,接下來在云平臺(tái)上創(chuàng)建產(chǎn)品和設(shè)備。

云平臺(tái)服務(wù)采用?騰訊云物聯(lián)網(wǎng)開發(fā)平臺(tái)(IoT Explorer)?,創(chuàng)建了一個(gè) LoRaWAN 通信方式的產(chǎn)品,在設(shè)備參數(shù)部分選擇 Class C 模式。

同時(shí)給“花花草草守護(hù)儀”定義了自己的數(shù)據(jù)模板,包含兩個(gè)屬性,一個(gè)水泵開關(guān) pump_switch,一個(gè)土壤相對(duì)濕度 soil_moisture。

相應(yīng)的設(shè)備數(shù)據(jù)解析腳本如下,簡(jiǎn)單處理下兩個(gè)屬性:

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=5data[1] = 0;// unconfirmed modedata[2] = obj.params.pump_switch;return data; }

2.4 微信小程序

TencentOS tiny 的倉庫中已經(jīng)幫助大家做好了幾個(gè)現(xiàn)成的小程序 DEMO,目錄為 TencentOStiny/tools/MiniProgram/,因此我就偷個(gè)懶在上面修改下,主要功能是實(shí)現(xiàn)開泵澆水以及土壤濕度的查看。

3 成果展示

再添加一個(gè)動(dòng)圖。

至此,相應(yīng)深圳灣一號(hào)的伙伴們應(yīng)該明白了,房子太大也是可以輕松澆花的。

怎么,只看文章覺得不過癮?掃描下方二維碼,看程序員的澆花小視頻

騰訊技術(shù)課直播預(yù)告:

4月30日(今天)晚上8點(diǎn)-9點(diǎn)

總結(jié)

以上是生活随笔為你收集整理的程序员黑科技 | 用13块钱DIY微信小程序浇花神器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。