摘要:任務(wù)要求使用提供的未完成的工程進行開發(fā)。設(shè)備上電后,板上的亮,滅。
使用一個 LoRa 模塊、一個光照傳感器模塊完成一個光環(huán)境的監(jiān)控。
任務(wù)要求:
–> 使用提供的未完成的工程進行開發(fā)。
–> 設(shè)備上電后,板上的 LED1 亮,LED2 滅。
–> 液晶屏上實時顯示當(dāng)前光照值,效果如下:
–> 當(dāng)光照低于某一 設(shè)定值時(可用手遮住),板上的 LED2 燈亮起,高于
這一值(手拿開)時 LED2 滅
使用Visio畫出流程圖:
對液晶初始化OLED_Init(),串口1初始化USART1_Init(115200),清空液晶屏的內(nèi)容OLED_Clear(),顯示初始化信息OLED_InitView(),ADC初始化ADCS_Init(),串口答應(yīng)信息printf(),打開LED1,關(guān)閉LED2,然后不斷獲取關(guān)照強度,并對LED2進行控制
int main( void ){ Init(); //開發(fā)板設(shè)備初始化 OLED_Init(); //液晶初始化 USART1_Init(115200); //串口1初始化 OLED_Clear(); OLED_InitView(); //OLED屏幕顯示初始化信息 ADCS_Init(); //ADC初始化 printf("LoRa Light/r/n"); //串口輸出信息 HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_RESET); //打開LED1 HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET); //關(guān)閉LED2 while( 1 ) { LoRa_GetSensorDataProcess(); //獲取光照值 Light_up(); //設(shè)置閾值為80Lux,如果光照強度小于80Lux,打開LED2,否則關(guān)閉LED2 handlerPre10Ms(); }}
OLED顯示“光照值:”,具體oled顯示中文漢字的方法,在之前的文章有寫過,有不懂可以查閱之前的博文
void OLED_InitView(){ OLED_Clear(); OLED_ShowCHinese(0*16+10,3,29);//光 OLED_ShowCHinese(1*16+10,3,30);//照 OLED_ShowCHinese(2*16+10,3,52);//值 OLED_ShowChar(3*16+10,3,":");//: }
獲取ADC0的值,并將其轉(zhuǎn)化為光照值顯示
void LoRa_GetSensorDataProcess(void) { float voltage; AdcScanChannel(); //轉(zhuǎn)換ADC雙信道寄存器數(shù)據(jù)為電壓值 voltage = AdcReadCh0(); //獲得ADC0獲得電壓值 LightLux = (uint16_t)(5/2.0)*(voltage*100); //轉(zhuǎn)化為光照強度 printf("光照值:%d",LightLux); //把光照強度打印到串口 char StrBuf[64]={0}; memset(StrBuf, "/0", 64); sprintf(StrBuf, " %d Lx",LightLux); OLED_ShowString(4*16,3,(uint8_t *)StrBuf); //oled顯示光照值}
光照值小于80Lux時,打開LED2,否則關(guān)閉LED2
void Light_up(void){ if(LightLux <= 80) { HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_RESET); //光照值小于80Lux時,開啟LED2 } else { HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET); //光照值大于80Lux時,關(guān)閉LED2 }}
(1)使用某個GPIO或其它外設(shè)前,得初始化!
(2)注意光照傳感器的AD值靠ADC0獲取;
(3)獲取到的ADC值還需要進行轉(zhuǎn)化為傳感器電壓值,再轉(zhuǎn)化為光照值;
(1) 初始化ADC通道0 --> 轉(zhuǎn)換ADC雙信道寄存器數(shù)據(jù)為電壓值 --> 獲得ADC0獲得電壓值;
(2) (電壓值)voltage = (ADC0Value/4096.0) * 3300 , 單位為mV;
(3)(光照強度值)LightLux = (5/2.0) * (voltage /10.0) ,單位為Lux;
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/119229.html
摘要:本文分享幾種典型具有實際應(yīng)用過的智慧農(nóng)業(yè)物聯(lián)網(wǎng)解決方案,供大家參考。智慧農(nóng)業(yè)物聯(lián)網(wǎng)解決方案由三部分組成智慧農(nóng)業(yè)物聯(lián)網(wǎng)平臺智慧農(nóng)業(yè)物聯(lián)網(wǎng)網(wǎng)關(guān)無線節(jié)點。 智慧農(nóng)業(yè)是現(xiàn)代農(nóng)業(yè)發(fā)展的必然趨勢,也是科學(xué)技術(shù)發(fā)展的必然結(jié)果。本文分享幾種典型具有實際應(yīng)用過的智慧農(nóng)業(yè)物聯(lián)網(wǎng)解決方案,供大家參考。 結(jié)合多年與...
摘要:為了防止數(shù)據(jù)沖突采用輪詢的方式,輪詢發(fā)送數(shù)據(jù)。使用作為核心的開發(fā)板,需要的資源定時器中斷,外部中斷,串口接受中斷。定時器負(fù)責(zé)輪詢發(fā)送關(guān)鍵字給模塊,并由發(fā)送給各終端節(jié)點的模塊。 ...
摘要:此文章用于解決開發(fā)板的模塊中文字庫加載問題,也可用于其它關(guān)于中文字庫無法加載的問題。如下圖,已經(jīng)完成了中文字庫燒入,無需再掛載。 正點原子stm32mini板lor...
摘要:模塊簡介用戶手冊下載采用全新一代的擴頻技術(shù),基于芯片方案設(shè)計的無線串口模塊。具有多種傳輸方式,工作在頻段默認(rèn),電平輸出,兼容與的口電壓。 1.模塊簡介 用戶手...
摘要:設(shè)計簡介本設(shè)計是基于單片機的藍(lán)牙控制窗簾電路系統(tǒng),主要實現(xiàn)以下功能可通過顯示溫濕度光照強度窗簾狀態(tài)和模式可通過按鍵調(diào)整光照強度最小值可通過藍(lán)牙連接手機進行遠(yuǎn)程控制可通過獲取溫濕度可通過光敏電阻獲取光照強度。 設(shè)計簡介: 本設(shè)計是基于單片機的藍(lán)牙控制窗簾電路系統(tǒng),主要實現(xiàn)以下功能: 可通過LC...
閱讀 2007·2021-11-24 09:39
閱讀 1143·2021-09-10 11:25
閱讀 1769·2021-09-08 10:42
閱讀 3733·2021-09-06 15:00
閱讀 2498·2019-08-30 15:54
閱讀 3115·2019-08-29 17:08
閱讀 3270·2019-08-29 11:26
閱讀 2840·2019-08-28 18:27