傳感網(wǎng)應(yīng)用開發(fā)(高級)課件75NBIoT通信應(yīng)用開發(fā)(代碼部分講解)_第1頁
傳感網(wǎng)應(yīng)用開發(fā)(高級)課件75NBIoT通信應(yīng)用開發(fā)(代碼部分講解)_第2頁
傳感網(wǎng)應(yīng)用開發(fā)(高級)課件75NBIoT通信應(yīng)用開發(fā)(代碼部分講解)_第3頁
傳感網(wǎng)應(yīng)用開發(fā)(高級)課件75NBIoT通信應(yīng)用開發(fā)(代碼部分講解)_第4頁
傳感網(wǎng)應(yīng)用開發(fā)(高級)課件75NBIoT通信應(yīng)用開發(fā)(代碼部分講解)_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、“1+X”傳感網(wǎng)應(yīng)用開發(fā) NB-IoT通信應(yīng)用開發(fā)01全局變量、自定義函數(shù)的聲明02自定義函數(shù)功能解析03主函數(shù)功能代碼目錄CONTENTS01掌握工程文件的添加02掌握變量定義及函數(shù)聲明方式03掌握NB模塊的基本配置步驟技能知識點CONTENTS04掌握光照控制燈及模式切換應(yīng)用開發(fā)1全局變量、自定義函數(shù)的聲明知識鏈接01STM32CubeMX生成工程介紹02函數(shù)聲明和頭文件添加STM32CubeMX生成工程介紹01 通過前次課程的學(xué)習(xí),大家已經(jīng)掌握了使用STM32CubeMX快速生成項目的方法。通過STM32CubeMX新建工程,快捷、方便,比使用keil5更加易于理解,不抽象。1、頭文件的

2、添加2、自定義變量的添加3、自定義函數(shù)的聲明02(1)、打開main.c 文件(2)、頭文件,變量及函數(shù)聲明處1、頭文件的添加2、自定義變量的添加3、自定義函數(shù)的聲明02(1)、添加新增的頭文件引用,內(nèi)容如下:#include user_cloud.h#include user_oled.h#include user_usart1.h#include user_usart2.h#include key.h#include oled.h(2)、添加變量聲明 uint8_t usart1RxBuf; /串口1接收緩存 uint8_t usart2RxBuf; /串口2接收緩存(3)、添加自定義函數(shù)

3、聲明 int fputc(int ch,FILE *f); /定向輸出函數(shù)float get_illumination_value(); /ADC采集并轉(zhuǎn)化為光照值void control_light(uint8_t status); /控制燈亮滅功能函數(shù)void automatic_mode(int value,int *light_flag); /根據(jù)光照強(qiáng)度自動控制燈亮滅的功能函數(shù)void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart); /串口中斷服務(wù)程序void HAL_UART_ErrorCallback(UART_Handle

4、TypeDef *huart); /串口錯誤處理程序2自定義函數(shù)功能解析任務(wù)要求 本任務(wù)要求用戶編寫功能函數(shù),實現(xiàn)以下函數(shù)功能(1)串口的定向輸出程序(2)光照強(qiáng)度采集及處理程序(3)燈的亮滅控制程序(4)根據(jù)光強(qiáng)自動控制程序(5)串口中斷服務(wù)程序(6)串口中斷錯誤處理程序功能函數(shù)01fputc02Floatget_illumination_value03control_light04automatic_modeHAL_UART_ErrorCallback06101此處調(diào)用了UART串口寫函數(shù),函數(shù)功能將字符通過串口1發(fā)出HAL_UART_Transmit函數(shù)原型如下在main.c文件添加函數(shù)

5、:(此處添加位置任意,前面已經(jīng)聲明)int fputc(int ch,FILE *f) HAL_UART_Transmit(&huart1,(uint8_t*)&ch,1,10); return ch;02Floatget_illumination_value函數(shù): 使用stm32 ADC功能,采集光照產(chǎn)生的模擬電壓信號值,利用相關(guān)公式計算,將電壓值轉(zhuǎn)化為光照強(qiáng)度,作為返回值輸出float get_illumination_value() float adcValue; float illumination_value; HAL_ADC_Start(&hadc); HAL_ADC_PollFo

6、rConversion(&hadc,10); adcValue=HAL_ADC_GetValue(&hadc); adcValue=adcValue*3.3/4096.0; illumination_value=pow(10,(1.78-log10(33/adcValue-10)/0.6);/將電壓值轉(zhuǎn)換為光照強(qiáng)度 oled_display_illumination(illumination_value); HAL_ADC_Stop(&hadc); return illumination_value; 通過IO口輸出高低電平控制繼電器開關(guān),進(jìn)而控制燈的亮滅。此處使用的IO引腳為PA8,oled

7、_display_light_status為LED屏幕顯示函數(shù),顯示燈的亮滅狀態(tài)03void control_light(uint8_t status) if(status=LIGHT_OPEN) HAL_GPIO_WritePin(Light_GPIO_Port,Light_Pin,GPIO_PIN_SET); oled_display_light_status(LIGHT_OPEN); else HAL_GPIO_WritePin(Light_GPIO_Port,Light_Pin,GPIO_PIN_RESET); oled_display_light_status(LIGHT_CLOSE

8、); 04automatic_mode(int value,int *light_flag)Value 采集的光照強(qiáng)度值light_flag 當(dāng)前燈的狀態(tài)標(biāo)志0為滅,1為亮now_ill_value 存儲的用于比較的光照強(qiáng)度當(dāng)檢測到光照強(qiáng)度低于3時且燈滅時,打開燈,并記錄下當(dāng)前光照強(qiáng)度。當(dāng)檢測到燈的強(qiáng)度比之前存儲的強(qiáng)度值高于1以上(表示外界光照變強(qiáng)),且燈亮?xí)r,關(guān)閉燈。void automatic_mode(int value,int *light_flag) static int now_ill_value; if(value3)&(*light_flag=0) control_light(

9、LIGHT_OPEN); *light_flag=1; HAL_Delay(10); now_ill_value=(int)get_illumination_value(); else if(now_ill_value+1ErrorCode); huart-ErrorCode=HAL_UART_ERROR_NONE; if(huart=&huart1) HAL_UART_Receive_IT(&huart1,&usart1RxBuf,1); /重新打開串口1接收中斷 if(huart=&huart2) HAL_UART_Receive_IT(&huart2,&usart2RxBuf,1); /

10、重新打開串口2接收中斷3主函數(shù)功能代碼添加知識鏈接01參數(shù)介紹02初始化03主流程介紹04開發(fā)流程演示參數(shù)介紹ill_value:經(jīng)AD轉(zhuǎn)換后得到的光照強(qiáng)度值mod_flag:=1表示自動控制模式,=0表示手動按鍵模式mod_flag:=1表示當(dāng)前燈亮,=0表示當(dāng)前燈滅0102在main主函數(shù),硬件初始化部分添加相關(guān)外設(shè)初始化代碼。主要包含1、oled屏初始化2、按鍵初始化 3、初始屏顯信息4、開串口中斷5、nb模塊初始化6、nb模塊鏈接服務(wù)器7、相關(guān)變量的定義OLED_Init();keys_init();oled_display_information();oled_display_con

11、nection_status(LINKING);oled_display_light_status(LIGHT_CLOSE);oled_show_mode(MANUAL);HAL_UART_Receive_IT(&huart1,&usart1RxBuf,1);HAL_UART_Receive_IT(&huart2,&usart2RxBuf,1);wait_nbiot_start();nbiot_config();link_server();int i,ret,ill_value,lightStatus, int link_flag=0,send_count;uint8_t mod_flag=0,c=0;03在main.c主文件中添加右側(cè)代碼03代碼主要實現(xiàn)了,間隔1.5s(i+14)采集傳感器數(shù)據(jù)(get_illumination_value(),當(dāng)為自動模式時,調(diào)用automatic_mode()控制燈的亮滅,將數(shù)據(jù)上傳至云平臺send_data_to_cloud(),同時對云平臺返回的數(shù)據(jù)進(jìn)行接收和處理rcv_data_deal(),switch(ret);主

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論