68精品久久久久久欧美,最近中文字幕完整在线看一,久久亚洲男人天堂,最近中文字幕完整视频高清1

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當(dāng)前位置:首頁 >> MM32/靈動微電子 >> MM32W無線MCU系列產(chǎn)品應(yīng)用筆記 —— 溫濕度監(jiān)測儀方案

MM32W無線MCU系列產(chǎn)品應(yīng)用筆記 —— 溫濕度監(jiān)測儀方案

關(guān)鍵字:靈動微電子 MM32W系列MCU 溫濕度監(jiān)測儀方案 作者: 來源: 發(fā)布時間:2022-06-14  瀏覽:22
在本章節(jié)我們將繼續(xù)給大家介紹一個使用場景較為豐富的藍(lán)牙應(yīng)用方案——基于MM32W系列開發(fā)的溫濕度監(jiān)測儀。

方案應(yīng)用圖              

圖1 方案應(yīng)用圖
 
溫度、濕度與我們的生活息息相關(guān),科研實驗室、農(nóng)業(yè)大棚、食品儲存室、疫苗存儲及配送、貯藏室等對環(huán)境的溫度、濕度有著嚴(yán)格的控制標(biāo)準(zhǔn),溫度、濕度的異常變化都可能會給其造成嚴(yán)重的影響。傳統(tǒng)的人工巡查和記錄環(huán)境溫濕度變化并非易事,隨著時代的發(fā)展,可實現(xiàn)智能化監(jiān)測環(huán)境溫濕度的溫濕度傳感器出現(xiàn)了。如今,科研、農(nóng)業(yè)、暖通、機(jī)房、航天航空、電力等工業(yè)部門都開始采用智能化的溫濕度傳感器監(jiān)測環(huán)境的溫濕度。利用溫濕度傳感器對環(huán)境的溫濕度進(jìn)行實時監(jiān)測,不僅能夠及時發(fā)現(xiàn)環(huán)境溫濕度的異常,進(jìn)而做出應(yīng)對措施,避免或減少損失,還能夠減少員工工作量,降低人力成本。


硬件資源如下:
本方案基于MM32 BLE_Test Board進(jìn)行測試驗證,搭配上溫濕度傳感器DHT11作為采集環(huán)境中溫濕度數(shù)據(jù),再加上一款小型的OLED屏幕作為本地式數(shù)據(jù)輸出顯示窗口,另外可以通過手機(jī)APP獲取溫濕度變化情況。在硬件原理上,本方案的DHT11模塊的單線數(shù)據(jù)傳輸引腳連接到MCU的PA7,為了解析模塊的數(shù)據(jù)時序,該引腳復(fù)用為TIM3_CH2輸入捕獲功能;使用硬件IIC接口連接到OLED屏上去,引腳為PB6(SCL)、PB7(SDA),可以將溫濕度數(shù)據(jù)顯示在OLED;藍(lán)牙相關(guān)的功能引腳與前面介紹的方案一致,此處不做過多展開。
 
軟件資源如下:
結(jié)合上述使用到的硬件資源,下面我們著重介紹軟件實現(xiàn)流程以及相關(guān)配置代碼。使用MCU的引腳復(fù)用為TIM3_CH2輸入捕獲功能DHT11模塊,在開啟捕獲時將PA7配置為浮空輸入模式,復(fù)用功能選擇AF1配置為TIM3的CH2輸入捕獲通道,并且將TIM3開啟;在停止捕獲時將PA7配置為推挽輸出模式,并且將TIM3關(guān)閉。由于DHT11模塊限制,溫濕度采樣周期間隔必須大于1S,本方案采樣和顯示周期為2S。
 
在使用OLED屏幕需要用到硬件IIC外設(shè)接口,需要將對應(yīng)的PB6 PB7配置為復(fù)用開漏輸出模式,初始化時還需要根據(jù)不同的OLED模塊在函數(shù)IIC_Init()中修改slave設(shè)備地址,使能IIC接口后即可以開始傳輸工作了。由于數(shù)據(jù)采集和定時顯示需要,本方案的低功耗模式采用STOP模式。
 
以下為主函數(shù)初始化配置內(nèi)容,主要將所有的外設(shè)資源和藍(lán)牙協(xié)議棧初始化,并且以中斷服務(wù)程序的方式運行藍(lán)牙,代碼如下:
 
代碼

主函數(shù)的循環(huán)中主要實現(xiàn)的功能為定時采集和顯示當(dāng)前環(huán)境的溫濕度數(shù)據(jù),而該數(shù)據(jù)也將在藍(lán)牙服務(wù)中發(fā)送到APP端顯示,代碼如下:

代碼


下面簡單介紹一下OLED操作相關(guān)的幾個函數(shù):


//初始化IIC


void IIC_Init(I2C_TypeDef* I2Cx);


//發(fā)送命令函數(shù)


static void Write_Command(unsigned char Command);


//發(fā)送數(shù)據(jù)顯示在屏幕


static void Write_DataBuff(unsigned char *Data, unsigned char Len);


//OLED屏初始化


void OLED_Init(void);


//設(shè)置坐標(biāo)


void OLED_SetPos(unsigned char x, unsigned char y);


//字符串顯示


void OLED_DispStr(unsigned char x, unsigned char y, char *ch);


//顯示logo


void OLED_DispLogo(void);


//清屏操作


void OLED_Clear(void);


下面簡單介紹一下DHT11模塊操作相關(guān)的幾個函數(shù):


// TIM3_CH2輸入捕獲初始化


void CaptureInit(void);   //用TIM3_CH2  PB5  AF3


//啟動捕獲


void CaptureStart(void);


//停止捕獲


void CaptureStop(void);


在TIM3_IRQHandler()中針對捕獲的數(shù)據(jù)進(jìn)行解析和處理。
 
我們在gatt_user_send_notify_data_callback函數(shù)中給手機(jī)發(fā)送數(shù)據(jù),該函數(shù)屬于回調(diào)函數(shù),協(xié)議棧會在系統(tǒng)允許的時候(異步)回調(diào)本函數(shù),該函數(shù)可用于藍(lán)牙模塊端主動發(fā)送數(shù)據(jù)之用,函數(shù)內(nèi)部不得增加阻塞代碼。該應(yīng)用中我們在此函數(shù)中實現(xiàn)將采集轉(zhuǎn)換好的溫濕度數(shù)據(jù)傳輸給手機(jī)APP。詳細(xì)實現(xiàn)代碼如下:
 
//藍(lán)牙連接成功后協(xié)議在空閑的時候會調(diào)用本回調(diào)函數(shù)


void gatt_user_send_notify_data_callback(void){ 


static u8 notiCnt = 0;//回調(diào)次數(shù)計數(shù)器


u16 humiBat ,tempBpm = 0;


unsigned char DHTData[3]={0x00,0x00,0x01};


notiCnt++; //每進(jìn)一次該函數(shù)回調(diào)次數(shù)計數(shù)器+1


if(CaptureDataMon(&humiBat, &tempBpm) == 0) return;//未成功采集到溫濕度數(shù)據(jù)立即返回


tempBpm %= 512;//初步判斷溫度數(shù)據(jù)大小


humiBat /= 10;//初步判斷濕度數(shù)據(jù)大小


if (notiCnt >= 20) {//每進(jìn)入該回調(diào)函數(shù)20次才發(fā)送一次溫度數(shù)據(jù)


notiCnt = 0;       


cur_notifyhandle = 0x12;//溫度數(shù)據(jù)回復(fù)句柄值


if (tempBpm < 0x100){


DHTData[0] = 0; //1Byte


DHTData[1] = tempBpm;


sconn_notifydata(DHTData,2);//換算處理好溫度數(shù)據(jù)后通過藍(lán)牙發(fā)出


}


else {


DHTData[0] = 1; //2Byte


DHTData[1] = tempBpm;


DHTData[2] = tempBpm>>8;


sconn_notifydata(DHTData,3);//換算處理好溫度數(shù)據(jù)后通過藍(lán)牙發(fā)出


}


}


else if (10 == notiCnt) {//每進(jìn)入該回調(diào)函數(shù)10次才發(fā)送一次濕度數(shù)據(jù)


SimBatt = humiBat; //0~100


cur_notifyhandle = 0x18;//濕度數(shù)據(jù)回復(fù)句柄值


sconn_notifydata(&SimBatt,1);//換算處理好濕度數(shù)據(jù)后通過藍(lán)牙發(fā)出


}


}




除了上述關(guān)鍵的藍(lán)牙數(shù)據(jù)發(fā)送函數(shù)外,下面再簡單介紹一些與藍(lán)牙相關(guān)的特征值定義:
 
代碼


手機(jī)操作流程如下:


打開手機(jī)藍(lán)牙并打開App,選擇HRM進(jìn)入,點擊Connect按鈕開始搜索溫濕度藍(lán)牙設(shè)備。


選擇對應(yīng)名稱(MM32W0_DHT)的藍(lán)牙設(shè)備并進(jìn)行配對,等待連接成功。連接成功后會有相應(yīng)提示,按鈕Connect名字會變成Disconnect。


連接成功后,在App界面上電池圖標(biāo)會顯示從DHT11傳感器獲取的濕度信息(百分比)Finger和圖表會顯示從DHT11傳感器獲取的溫度信息(原始數(shù)據(jù),溫度值x10)。


代碼


圖2 手機(jī)APP圖

編輯:ls  最后修改時間:2022-06-14

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

Copyright © 2014-2023 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號-4

长阳| 全椒县| 邵东县| 屯留县| 淄博市| 孟村| 仁布县| 隆林| 大同县| 永济市| 陵川县| 弥勒县| 高阳县| 宁晋县| 石楼县| 阆中市| 平陆县| 合川市| 蚌埠市| 宾阳县| 东乡族自治县| 聂拉木县| 扬中市| 巧家县| 庆阳市| 醴陵市| 准格尔旗| 洪泽县| 桑植县| 开阳县| 略阳县| 泗阳县| 芮城县| 江城| 武山县| 兴业县| 婺源县| 嘉善县| 东乡| 宜都市| 宝应县|