0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于RT-Thread的智慧路燈案例實驗分享

RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 來源:RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 2020-07-01 14:43 ? 次閱讀

前言

之前在網(wǎng)上看到了很多類似的實踐,都蠻受大家歡迎的。那咱們就再來一個類似的實驗:基于RT-Thread的智慧路燈案例實驗。

實驗框圖

實驗說明:設(shè)備終端不斷采集光強(qiáng)數(shù)據(jù)并上傳至云端進(jìn)行監(jiān)控,同時也會把當(dāng)前LED(路燈)的狀態(tài)上傳。LED的狀態(tài)會根據(jù)光照值進(jìn)行打開、關(guān)閉。

比如當(dāng)光照值低于(夜晚)我們設(shè)置的光照閾值時就會打開LED,當(dāng)光照高于(白天)光照閾值時就會熄滅LED燈。除此之外,云端可以遠(yuǎn)程控制LED的亮滅,達(dá)到一個遠(yuǎn)程控制的作用。

創(chuàng)建RTT工程

硬件:小熊派開發(fā)板。

軟件:基于RT-Thread操作系統(tǒng)的應(yīng)用開發(fā)。

開發(fā)工具:RT-Thread Studio V1.1.0。

本實驗我們需要用到RT-Thread的BH1750軟件包、OneNet軟件包及at_device軟件包等。這些軟件包的使用已經(jīng)在前兩篇筆記中有寫到:

【RT-Thread筆記】BH1750軟件包的使用

【RT-Thread筆記】OneNet軟件包的使用

本次實驗也只是把它們?nèi)诤显谝黄饋硎褂谩?/p>

1、添加相關(guān)軟件包、配置:

添加完之后的RT-Thread Settings文件如:

添加軟件包及軟件包的一些詳細(xì)配置可查閱上兩篇筆記。這里也大概提一下要點:

(1)設(shè)置WiFi信息

(2)設(shè)置OneNET信息

(3)配置I2C對接BH1750

這里我用的是RT-Thread Studio V1.1.0,這里的I2C的范例配置有點問題,其它版本的RT-Thread Studio應(yīng)該可以按范例配置那么配,如果按范例配置編譯不通過的話可以按照I2C2那樣配置。

2、應(yīng)用代碼

(1)測試函數(shù)

左右滑動查看全部代碼>>>

intonenet_upload_example(void) { rt_thread_ttid; /*onenet初始化*/ onenet_mqtt_init(); /*綁定led命令響應(yīng)回調(diào)函數(shù)*/ onenet_set_cmd_rsp_cb(onenet_ledcmd_rsp_cb); /*創(chuàng)建onenet數(shù)據(jù)上傳任務(wù)*/ tid=rt_thread_create("onenet_upload", onenet_upload_entry, RT_NULL, 2048, 10, 5); if(tid) rt_thread_startup(tid); return0; } MSH_CMD_EXPORT(onenet_upload_example,senddatatoOneNETcloudcycle);

首先進(jìn)行一個onenet初始化,這個初始化接口時onenet軟件包提供的。

接著進(jìn)行一個led命令響應(yīng)回調(diào)函數(shù)的綁定,回調(diào)函數(shù)onenet_ledcmd_rsp_cb里進(jìn)行的就是接收到onenet下發(fā)的led命令之后進(jìn)行地一些操作。最后就是創(chuàng)建一個onenet數(shù)據(jù)上傳的線程。

最后把這個函數(shù)以命令的形式導(dǎo)出,以便我們可以在命令行輸入onenet_upload_example命令進(jìn)行測試。

(2)led命令響應(yīng)回調(diào)函數(shù)

左右滑動查看全部代碼>>>

staticvoidonenet_ledcmd_rsp_cb(uint8_t*recv_data,size_trecv_size,uint8_t**resp_data,size_t*resp_size) { charres_buf[20]={0}; charrecv_buf[5]={0}; LOG_D("recvdatais%.*s ",recv_size,recv_data); if(!strncmp((char*)recv_data,"ledon",5)) { rt_pin_write(SC1_LED_PIN,SC1_LED_ON); rt_snprintf(res_buf,sizeof(res_buf),"ledison"); rt_kprintf("ledison "); } elseif(!strcmp((char*)recv_data,"ledoff",5)) { rt_pin_write(SC1_LED_PIN,SC1_LED_OFF); rt_snprintf(res_buf,sizeof(res_buf),"ledisoff"); rt_kprintf("ledisoff "); } else { rt_kprintf("ledcmdERROR! "); } /*userhavetomallocmemoryforresponsedata*/ *resp_data=(uint8_t*)rt_malloc(strlen(res_buf)); strncpy((char*)*resp_data,res_buf,strlen(res_buf)); *resp_size=strlen(res_buf); }

我們收到onenet下發(fā)的命令之后,所需要做的操作放在這里面。比如當(dāng)我們的設(shè)備接收到ledon字符串時,打開led,并打印提示信息。最后再把led is on信息應(yīng)答給onenet。

(3)上傳數(shù)據(jù)的任務(wù)

左右滑動查看全部代碼>>>

/*上傳數(shù)據(jù)至onenet*/ staticvoidonenet_upload_entry(void*parameter) { rt_device_tdev=RT_NULL; structrt_sensor_datadata; rt_size_tres; charled_status=SC1_LED_OFF; charsend_buf[32]={0}; /*設(shè)置高亮LED的引腳為輸出模式*/ rt_pin_mode(SC1_LED_PIN,PIN_MODE_OUTPUT); /*查找bh1750傳感器*/ dev=rt_device_find("li_bh1750"); if(dev==RT_NULL) { rt_kprintf("Can'tfinddevice:li_bh1750 "); return; } /*以只讀模式打開bh1750*/ if(rt_device_open(dev,RT_DEVICE_FLAG_RDONLY)!=RT_EOK) { rt_kprintf("opendevicefailed!"); return; } while(1) { /*從傳感器讀取一個數(shù)據(jù)*/ res=rt_device_read(dev,0,&data,1); if(1!=res) { rt_kprintf("readdatafailed!sizeis%d",res); } else { rt_kprintf("light:%4d.%dlux ",data.data.light/10,data.data.light%10); rt_sprintf(send_buf,"%4d.%d",data.data.light/10,data.data.light%10); } /*高亮LED燈根據(jù)光照值自動打開、熄滅*/ if(data.data.light/10<=?40) ????????{ ????????????rt_pin_write(SC1_LED_PIN,?SC1_LED_ON); ????????????led_status?=?SC1_LED_ON; ????????????rt_kprintf("led_status?=?ON "); ????????} ????????else ????????{ ????????????rt_pin_write(SC1_LED_PIN,?SC1_LED_OFF); ????????????led_status?=?SC1_LED_OFF; ????????????rt_kprintf("led_status?=?OFF "); ????????} ????????/*?上傳光照數(shù)據(jù)至onenet?*/ ????????if?(onenet_mqtt_upload_string("light",?(const?char*)send_buf)?

這是我們的上傳任務(wù):讀取BH1750傳感器采集的光照值,通過onenet軟件包給我們提供的onenet_mqtt_upload_string接口上傳至onenet。

同時,led的狀態(tài)根據(jù)光照值的結(jié)果自動打開/關(guān)閉,led的狀態(tài)也是通過onenet_mqtt_upload_string接口傳至onenet。

3、OneNET云端web應(yīng)用

(1)創(chuàng)建一個web應(yīng)用

為了能更好地、更直觀的展示我們的數(shù)據(jù),我們創(chuàng)建一個web應(yīng)用來管理:

onenet構(gòu)建web應(yīng)用的方式與之前我們分享的《智慧農(nóng)業(yè)案例實驗分享》中華為云構(gòu)建web應(yīng)用的方式類似,都是通過拖控件的方式。我們創(chuàng)建好的應(yīng)用如下:

實驗結(jié)果

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1301

    瀏覽量

    40267
  • 智慧路燈
    +關(guān)注

    關(guān)注

    2

    文章

    756

    瀏覽量

    17169

原文標(biāo)題:基于RT-Thread的智慧路燈案例實驗分享

文章出處:【微信號:RTThread,微信公眾號:RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    RT-Thread上CAN實踐

    開箱測試RT-Thread官方已完成了對英飛凌XMC7200EVK的移植,通過shell可以看到做好了uart3的console。本文將介紹如何進(jìn)行RT-ThreadCan移植。接下來我們要完成CAN_FD的驅(qū)動移植,并正常啟動RT-T
    的頭像 發(fā)表于 11-13 01:03 ?1298次閱讀
    <b class='flag-5'>RT-Thread</b>上CAN實踐

    開源共生 商業(yè)共贏 | RT-Thread 2024開發(fā)者大會報名啟動!

    親愛的RT-Thread開發(fā)者我們很高興地宣布,一年一度的RDC(RT-ThreadDeveloperConference,RT-Thread開發(fā)者大會)正式啟動報名!2024RT-Threa
    的頭像 發(fā)表于 10-29 08:06 ?458次閱讀
    開源共生 商業(yè)共贏 | <b class='flag-5'>RT-Thread</b> 2024開發(fā)者大會報名啟動!

    【南京】9月21日RT-Thread巡回線下培訓(xùn)-智慧家居視頻監(jiān)測系統(tǒng)實戰(zhàn)

    親愛的RT-Thread社區(qū)成員們:RT-Thread24年全球巡回培訓(xùn)將覆蓋超10座城市及國家,為開發(fā)者提供一個深入學(xué)習(xí)RT-Thread嵌入式開發(fā)的絕佳機(jī)會。2024年RT-Thread
    的頭像 發(fā)表于 09-11 08:07 ?391次閱讀
    【南京】9月21日<b class='flag-5'>RT-Thread</b>巡回線下培訓(xùn)-<b class='flag-5'>智慧</b>家居視頻監(jiān)測系統(tǒng)實戰(zhàn)

    2024 RT-Thread全球巡回 線下培訓(xùn)火熱來襲!

    親愛的RT-Thread社區(qū)成員們:我們非常高興地宣布,2024年RT-Thread全球開發(fā)者線下培訓(xùn)即將拉開帷幕!24年全球巡回培訓(xùn)將覆蓋超10座城市及國家,為開發(fā)者提供一個深入學(xué)習(xí)RT-Thread嵌入式開發(fā)的絕佳機(jī)會。
    的頭像 發(fā)表于 08-07 08:35 ?1387次閱讀
    2024 <b class='flag-5'>RT-Thread</b>全球巡回 線下培訓(xùn)火熱來襲!

    【好書推薦】RT-Thread設(shè)備驅(qū)動開發(fā)指南

    近年來國內(nèi)芯片產(chǎn)業(yè)和物聯(lián)網(wǎng)產(chǎn)業(yè)的快速崛起,行業(yè)發(fā)展迫切需要更多人才,尤其需要掌握嵌入式操作系統(tǒng)等底層技術(shù)的人才。隨著RT-Thread被更廣泛地應(yīng)用于行業(yè)中,開發(fā)者對嵌入式驅(qū)動開發(fā)的需求越來越
    的頭像 發(fā)表于 08-01 08:35 ?682次閱讀
    【好書推薦】<b class='flag-5'>RT-Thread</b>設(shè)備驅(qū)動開發(fā)指南

    RT-Thread 新里程碑達(dá)成——GitHub Star 破萬!

    RT-Thread實時操作系統(tǒng)開源項目在GitHub上的star數(shù)量突破一萬!截止發(fā)文,RT-Thread作為實時操作系統(tǒng)在業(yè)界Star數(shù)量排名第一!倉庫地址:https://github.com
    的頭像 發(fā)表于 07-04 08:35 ?504次閱讀
    <b class='flag-5'>RT-Thread</b> 新里程碑達(dá)成——GitHub Star 破萬!

    6月6日杭州站RT-Thread線下workshop,探索RT-Thread混合部署新模式!

    6月6日下午我們將在杭州舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實現(xiàn)同時運(yùn)行RT-Thread和linux,本次workshop邀請到RT-Thread資深
    的頭像 發(fā)表于 05-28 08:35 ?465次閱讀
    6月6日杭州站<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    2024 RT-Thread 全球技術(shù)大會演講議程發(fā)布!

    RT-ThreadGlobalTechConference(RT-ThreadGTC,RT-Thread全球技術(shù)大會)致力于圍繞RT-Thread基礎(chǔ)軟件技術(shù)發(fā)展、實踐創(chuàng)新、開發(fā)者能力
    的頭像 發(fā)表于 05-16 08:34 ?582次閱讀
    2024 <b class='flag-5'>RT-Thread</b> 全球技術(shù)大會演講議程發(fā)布!

    5月16日南京站RT-Thread線下workshop,探索RT-Thread混合部署新模式!

    5月16日下午我們將在南京舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實現(xiàn)同時運(yùn)行RT-Thread和linux,本次workshop邀請到RT-Thread資深
    的頭像 發(fā)表于 05-01 08:35 ?396次閱讀
    5月16日南京站<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    RT-Thread混合部署Workshop北京站來啦!

    4月25日,下午我們將在北京舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實現(xiàn)同時運(yùn)行RT-Thread和linux,本次workshop邀請到RT-Thread資深
    的頭像 發(fā)表于 04-19 08:34 ?458次閱讀
    <b class='flag-5'>RT-Thread</b>混合部署Workshop北京站來啦!

    4月25日北京站RT-Thread線下workshop,探索RT-Thread混合部署新模式

    4月25日,下午我們將在北京舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實現(xiàn)同時運(yùn)行RT-Thread和linux,本次workshop邀請到RT-Thread資深
    的頭像 發(fā)表于 04-16 08:35 ?439次閱讀
    4月25日北京站<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式

    4月10日深圳場RT-Thread線下workshop,探索RT-Thread混合部署新模式!

    4月10日我們將在深圳福田舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實現(xiàn)同時運(yùn)行RT-Thread和linux,本次workshop邀請到RT-Thread資深嵌入式軟件工程師農(nóng)曉明老師為您講
    的頭像 發(fā)表于 03-27 11:36 ?855次閱讀
    4月10日深圳場<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    4月10日深圳場RT-Thread線下workshop,探索RT-Thread混合部署新模式!

    4月10日我們將在深圳福田舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實現(xiàn)同時運(yùn)行RT-Thread和linux,本次workshop邀請到RT-Thread資深
    的頭像 發(fā)表于 03-27 08:34 ?549次閱讀
    4月10日深圳場<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    RT-Thread成為恩智浦注冊合作伙伴,共同賦能工業(yè)與物聯(lián)網(wǎng)應(yīng)用開發(fā)!

    前不久,恩智浦半導(dǎo)體加入RT-Thread全球合作伙伴計劃,成為RT-Thread高級會員合作伙伴。同時,RT-Thread現(xiàn)已成為恩智浦注冊合作伙伴。
    的頭像 發(fā)表于 03-15 09:15 ?885次閱讀

    恩智浦半導(dǎo)體正式加入RT-Thread全球合作伙伴計劃!

    前不久,恩智浦半導(dǎo)體正式加入RT-Thread全球合作伙伴計劃,成為RT-Thread高級會員合作伙伴。同時,RT-Thread現(xiàn)已成為恩智浦注冊合作伙伴(RT-Thread| 簡介合
    的頭像 發(fā)表于 03-14 10:40 ?649次閱讀
    恩智浦半導(dǎo)體正式加入<b class='flag-5'>RT-Thread</b>全球合作伙伴計劃!