一、智慧路燈簡介
我們平時看到的傳統(tǒng)路燈基本是通過定時開啟、定時關(guān)閉來控制路燈亮滅,在夏天白晝時間長,路燈過早開啟,造成能源浪費;在冬天白晝時間短,往往經(jīng)常是天已經(jīng)黑了,路燈卻未開啟,給人們的出行帶來了諸多不便;也有的路燈通過專人手動開啟關(guān)閉,這種方式雖較定時方式靈活,但也存在需要人為操作的局限性。隨著社會的發(fā)展進步,智慧路燈應(yīng)運而生,智慧路燈通過自身攜帶的光線傳感器,通過傳感器采集的的光線數(shù)據(jù)判斷天黑情況,可以根據(jù)預(yù)置的閾值來實現(xiàn)路燈開啟關(guān)閉;同時智慧路燈的光線數(shù)據(jù)也可以同步上傳云端,通過云端可以查詢到智慧路燈的光線數(shù)據(jù)、路燈開啟關(guān)閉狀態(tài),同時也可以設(shè)置智慧路燈開啟關(guān)閉的閾值,實現(xiàn)云管理。
本文基于OpenHarmony系統(tǒng),使用小凌派RK2206開發(fā)板搭載智慧路燈模塊,模擬實現(xiàn)智慧路燈應(yīng)用,智慧路燈模塊本身自帶光線傳感器,通過傳感器采集的光線數(shù)據(jù)判斷天黑情況,根據(jù)預(yù)設(shè)的閾值來實現(xiàn)路燈的開關(guān);搭載OpenHarmony系統(tǒng)的小凌派RK2206開發(fā)板支持連接華為云服務(wù)器,后續(xù)文章將更新智慧路燈在華為云的應(yīng)用實現(xiàn)。
二、硬件電路設(shè)計
智慧路燈模塊硬件電路如圖1所示,電路中包含了E53接口連接器、EEPROM存儲器、光線傳感器BH1750、大功率LED燈驅(qū)動電路。本文主要使用光線傳感器BH1750和LED燈驅(qū)動電路,其中光線傳感器為數(shù)字接口芯片,使用I2C總線控制;LED燈驅(qū)動電路通過PWD_LED口控制LED燈開啟、關(guān)閉,PWD_LED輸出高電平點亮LED燈,PWD_LED輸出低電平熄滅LED燈。模塊硬件電路簡單,這里就不對此進行多余的說明。
![3235a07a-c68c-11ec-bce3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/95/42/wKgZomTm-vWAJ4nDAABrUByk_ZQ779.png)
圖1 智慧路燈模塊硬件電路圖
小凌派RK2206開發(fā)板與智慧路燈模塊均帶有防呆設(shè)計,能夠很容易區(qū)分安裝方向,直接將模塊插入到小凌派RK2206開發(fā)板的E53母座接口上即可,安裝如圖2所示。
![3259bcf8-c68c-11ec-bce3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/95/42/wKgZomTm-vWAHFITAAe86f2tQvc372.png)
圖2 硬件連接圖
三、軟件設(shè)計
1、主程序設(shè)計
小凌派RK2206開發(fā)板上電后,OpenHarmony系統(tǒng)開始運行,LiteOS系統(tǒng)初始化后,創(chuàng)建一個線程用于實現(xiàn)智慧路燈主程序。進入主程序先初始化智慧路燈模塊,程序進入主循環(huán),2秒獲取一次光線傳感器BH1750的光線強度值,當(dāng)光線強度值小于20時,打開LED路燈;當(dāng)光線強度值大于20時,關(guān)閉LED路燈。
void e53_isl_thread()
{
float lum = 0;
e53_isl_init();
while (1)
{
lum = e53_isl_read_data();
printf("luminance value is %.2f ", lum);
if (lum < 20)
{
isl_light_set_status(ON);
printf("light on ");
}
else
{
isl_light_set_status(OFF);
printf("light off ");
}
LOS_Msleep(2000);
}
(左右移動查看全部內(nèi)容)
2、智慧路燈初始化程序設(shè)計
智慧路燈初始化程序主要分為硬件IO初始化和BH1750傳感器的初始化兩部分。
{
e53_isl_io_init();
init_bh1750();
}
(左右移動查看全部內(nèi)容)
硬件IO初始化程序主要配置GPIO0_PA5為輸出模式,作為LED燈控制IO;初始化I2C0用于讀寫B(tài)H1750傳感器,配置I2C時鐘頻率400K。
{
LzGpioInit(GPIO0_PA5);
LzGpioSetDir(GPIO0_PA5, LZGPIO_DIR_OUT);
if (I2cIoInit(m_isl_i2c0m2) != LZ_HARDWARE_SUCCESS)
{
printf("init I2C I2C0 io failed ");
}
if (LzI2cInit(ISL_I2C0, 400000) != LZ_HARDWARE_SUCCESS)
{
printf("init I2C I2C0 failed ");
}
}
(左右移動查看全部內(nèi)容)
BH1750傳感器初始化程序通過I2C0向BH1750傳感器寫入通電命令0x1,開始等待測量命令,如圖3為BH1750傳感器的命令集。
![327e126a-c68c-11ec-bce3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/95/42/wKgZomTm-vaAN9Z8AAK7sxT8Jrs648.png)
圖3 BH1750指令
{
uint8_t send_data[1] = {0x01};
uint32_t send_len = 1;
LzI2cWrite(ISL_I2C0, BH1750_ADDR, send_data, send_len);
}
(左右移動查看全部內(nèi)容)
3、獲取傳感器數(shù)據(jù)程序設(shè)計
獲取傳感器數(shù)據(jù)程序通過I2C下發(fā)命令開始測量,延時一定時間后,開始讀取BH1750傳感器的寄存器值,讀取兩個字節(jié)數(shù)據(jù),其中第一個字節(jié)數(shù)據(jù)為高8位,第二字節(jié)數(shù)據(jù)為低8位數(shù)據(jù),亮度值為高8位和低8位數(shù)據(jù)合并為16字節(jié)數(shù)據(jù)除以1.2。
{
float lum = 0;
start_bh1750();
LOS_Msleep(180);
uint8_t recv_data[2] = {0};
uint32_t receive_len = 2;
LzI2cRead(ISL_I2C0, BH1750_ADDR, recv_data, receive_len);
lum = (float)(((recv_data[0]<<8) + recv_data[1])/1.2);
return lum;
}
(左右移動查看全部內(nèi)容)
程序通過I2C0向BH1750傳感器寫入連續(xù)H分辨率模式命令0x10,開始測量命令,測量時間一般為120ms。
{
uint8_t send_data[1] = {0x10};
uint32_t send_len = 1;
LzI2cWrite(ISL_I2C0, BH1750_ADDR, send_data, send_len);
}
(左右移動查看全部內(nèi)容)
四、測試結(jié)果
程序編譯燒寫到小凌派RK2206開發(fā)板后,按下開發(fā)板的RESET按鍵,通過串口軟件查看日志如下所示;通過遮擋智慧路燈模塊上的光線傳感器,從而來改變光線強度值,當(dāng)光線強度值小于20時,LED燈打開;當(dāng)光線強度值大于20時,LED燈關(guān)閉。
luminance value is 45.83
light off
luminance value is 4.17
light on
(左右移動查看全部內(nèi)容)
原文標(biāo)題:基于 OpenHarmony 的智慧路燈實現(xiàn)
文章出處:【微信公眾號:HarmonyOS官方合作社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
電路設(shè)計
+關(guān)注
關(guān)注
6678文章
2466瀏覽量
205468 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5131瀏覽量
98327 -
智慧路燈
+關(guān)注
關(guān)注
2文章
762瀏覽量
17256 -
OpenHarmony
+關(guān)注
關(guān)注
25文章
3753瀏覽量
16665
原文標(biāo)題:基于 OpenHarmony 的智慧路燈實現(xiàn)
文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發(fā)燒友開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
硬件工程師電路設(shè)計的九大模塊電路
![<b class='flag-5'>硬件</b>工程師<b class='flag-5'>電路設(shè)計</b>的九大<b class='flag-5'>模塊</b><b class='flag-5'>電路</b>](https://file1.elecfans.com/web2/M00/C1/5F/wKgaomXVnoGAC_gMAAAx-8X3XRo908.png)
燈光控制模塊的硬件電路設(shè)計
基于NB-IoT的智慧路燈監(jiān)控系統(tǒng)(NB-IoT專欄—實戰(zhàn)篇2:硬件開發(fā))精選資料分享
談?wù)?b class='flag-5'>智慧路燈的定義及其功能
基于OpenHarmony的智慧路燈實現(xiàn)
基于OpenHarmony的華為云IoT智慧路燈實現(xiàn)
基于OpenHarmony的華為云IoT智慧路燈
求一種基于RK2206開發(fā)板的智慧路燈設(shè)計案例
太陽能LED路燈硬件電路設(shè)計
![太陽能LED<b class='flag-5'>路燈</b><b class='flag-5'>硬件</b><b class='flag-5'>電路設(shè)計</b>](https://file.elecfans.com/web2/M00/4A/21/pYYBAGKhvJ6AKsxTAAA3lk5EMQo734.png)
太陽能路燈電路設(shè)計與仿真
![太陽能<b class='flag-5'>路燈</b><b class='flag-5'>電路設(shè)計</b>與仿真](https://file.elecfans.com/web1/M00/45/B3/o4YBAFp0B-mAHqjjAAB-er63gPU195.png)
WiFi模塊助力智慧路燈的無線覆蓋和視頻傳輸
硬件和軟件一起完成的集成電路設(shè)計
LoRa模塊在智慧路燈通信的應(yīng)用
基于LPC2131的的CAN接口模塊硬件電路設(shè)計
![基于LPC2131的的CAN接口<b class='flag-5'>模塊</b><b class='flag-5'>硬件</b><b class='flag-5'>電路設(shè)計</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
LED路燈驅(qū)動電路設(shè)計方案
![LED<b class='flag-5'>路燈</b>驅(qū)動<b class='flag-5'>電路設(shè)計</b>方案](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論