靈動(dòng)微MM32W系列低功耗MCU智能鎖解決方案

發(fā)布時(shí)間:2020-6-24 15:45    發(fā)布者:英尚微電子
關(guān)鍵詞: 低功耗MCU , MCU , 靈動(dòng)微 , 智能鎖MCU
智能鎖方案中使用到靈動(dòng)微MM32W系列低功耗MCU,配合手機通過(guò)APP讀取智能鎖藍牙信息,嘗試配對,配對成功即可正常通訊,手機APP通過(guò)藍牙把指令發(fā)送給智能鎖進(jìn)行解鎖,整個(gè)流程簡(jiǎn)單可靠,該方案將徹底告別傳統鑰匙開(kāi)鎖。藍牙智能鎖安全便捷,符合用戶(hù)的需求,可應用的日常場(chǎng)景廣泛,例如:門(mén)鎖(家門(mén)、倉庫門(mén)、貨車(chē)門(mén)等);車(chē)鎖(電動(dòng)車(chē)鎖、自行車(chē)鎖、摩托車(chē)鎖等);私人箱柜鎖(抽屜鎖、更衣柜、旅行箱、工具箱等)。接下來(lái)靈動(dòng)微總代理英尚微給大家介紹一個(gè)使用場(chǎng)景非常豐富的藍牙應用方案——基于MM32W系列開(kāi)發(fā)的藍牙智能鎖方案。


圖1方案場(chǎng)景



硬件資源如下:
本方案基于MM32BLE_TestBoard進(jìn)行測試驗證,搭配上一顆微型的雙向直流馬達作為開(kāi)鎖方式的載體,這里只用馬達驅動(dòng)開(kāi)鎖,關(guān)鎖默認為手動(dòng)操作,用戶(hù)可以通過(guò)手機APP來(lái)操作開(kāi)鎖。在硬件原理上,本方案使用到的DC馬達是通過(guò)一顆專(zhuān)用的IC芯片來(lái)驅動(dòng),其控制引腳連接到MCU的PD2和PD3,通過(guò)控制兩個(gè)IO的電平可以對馬達進(jìn)行不同運動(dòng)狀態(tài)的操作;使用PB1連接到綠色LED指示燈,可作為藍牙連接狀態(tài)的指示;模擬鎖體狀態(tài)功能引腳PA1配置為上拉輸入,低功耗喚醒引腳選擇PA0配置為上拉輸入;藍牙相關(guān)的功能引腳與前面介紹的方案一致,此處不做過(guò)多展開(kāi)。以下為DC馬達驅動(dòng)原理圖:

圖2 方案應用圖


軟件資源如下:
結合上述使用到的硬件資源,下面我們著(zhù)重介紹軟件實(shí)現流程以及相關(guān)配置代碼。由于本應用方案ble藍牙芯片與APP建立連接過(guò)程中需要應用到配對的功能,利用藍牙庫的接口函數可以實(shí)現,這里將配對秘鑰設置為“123456”,在連接時(shí)候需要設置正確才能配對成功并且連接上;控制DC馬達的功能引腳全都配成推挽輸出模式,直接連到驅動(dòng)IC上去,通過(guò)改變高低電平組合來(lái)控制電機的正反轉和啟停;另外再對測試和模擬功能的引腳進(jìn)行配置,從而更為直觀(guān)地對應用效果的觀(guān)測和驗證,且使能看門(mén)狗復位功能來(lái)保證藍牙服務(wù)的穩定性能;由于方案應用電池供電對低功耗的需要,本方案低功耗采用STOP模式。

以下為主函數初始化配置內容,主要將所有的外設資源和藍牙協(xié)議棧初始化,并且以中斷服務(wù)程序的方式運行藍牙,主函數的循環(huán)中主要實(shí)現的功能為判斷是否進(jìn)入低功耗模式,并且喚醒后根據接收到的藍牙數據對DC馬達進(jìn)行不同的操作,代碼如下:




下面簡(jiǎn)單介紹一下藍牙低功耗和DC馬達操作相關(guān)的幾個(gè)函數:

//初始化DC馬達控制引腳PD2、PD3,并且全部置為低電平
void MOTOR_Init(void);//停止DC馬達的轉動(dòng)
static void MOTOR_Stop(void);//根據不同方向參數去控制DC馬達運轉
static void MOTOR_Run(unsigned char direction);


在MOTOR_Proc()處理函數中針對藍牙接收到的密碼數據進(jìn)行解析,如果與默認設置的4位0-9數字密碼完全匹配上則操作解鎖,將DC馬達按照設定方向控制運轉,為了簡(jiǎn)易驗證,模擬一個(gè)信號表示解鎖成功,這里是通過(guò)采集指定IO引腳PA1的輸入來(lái)實(shí)現,采集到輸入為高電平那么停止DC馬達轉動(dòng),且清零鎖定標志位。以下為代碼實(shí)現內容:



我們在gatt_user_send_notify_data_callback函數中給手機發(fā)送數據,該函數屬于回調函數,協(xié)議棧會(huì )在系統允許的時(shí)候(異步)回調本函數,該函數被用于藍牙模塊端主動(dòng)發(fā)送是否解鎖狀態(tài)信息給手機APP,函數內部不得增加阻塞代碼。詳細實(shí)現代碼如下:

//藍牙連接成功后協(xié)議在空閑的時(shí)候會(huì )調用本回調函數
void gatt_user_send_notify_data_callback(void)
{
static u8 LockFlagBak = 1;
if (LockFlagBak != LockFlag)
{
LockFlagBak = LockFlag;//LockFlag標志位會(huì )在MOTOR_Proc()中清零和置位      
sconn_notifydata(&LockFlagBak,1);
}
}

藍牙協(xié)議會(huì )周期性回調本UsrProcCallback()函數,無(wú)論是在廣播狀態(tài)還是連接狀態(tài),在該函數中可以做運行和低功耗模式切換的超時(shí)計數,給IrqMcuGotoSleepAndWakeup()來(lái)處理是否進(jìn)入低功耗模式,并且針對獲取到的是否連接信息用LED指示燈做不同的狀態(tài)顯示。詳細實(shí)現代碼如下:

//藍牙協(xié)議會(huì )周期性回調本函數
void UsrProcCallback(void)
{
static unsigned char led_flash = 0;   
IWDG_ReloadCounter();
StandbyTimeout ++;
if(gConnectedFlag){  //連接成功
StandbyTimeout = 0;
LED_ONOFF(1);
}else{
led_flash ++;
LED_ONOFF(!(led_flash%10)); //藍牙未連接,指示燈快閃
}
}

除了上述關(guān)鍵的藍牙數據發(fā)送函數外,下面再簡(jiǎn)單介紹一些與藍牙相關(guān)的特征值定義,在const BLE_CHAR AttCharList[] 中定義了本案中的兩個(gè)特征值:

{TYPE_CHAR,0x0011,{ATT_CHAR_PROP_W_NORSP,0x12,0,0xf1,0xff}, UUID16_FORMAT},//解鎖命令
{TYPE_CHAR,0x0013,{ATT_CHAR_PROP_RD|ATT_CHAR_PROP_NTF,0x14,0,0xf2,0xff}, UUID16_FORMAT},//鎖體狀態(tài)
在void att_server_rdByGrType( u8 pdu_type, u8 attOpcode, u16 st_hd, u16 end_hd, u16 att_type )中實(shí)現了自定義特征值服務(wù)聲明;
在void ser_write_rsp()中實(shí)現對手機APP發(fā)送的藍牙數據接收和存儲:
if (StartEncryption)
{
    if (valueLen_w < 9)//對藍牙數據進(jìn)行解析和存儲
    {
     Password_wr[0] = valueLen_w;
     memcpy(&Password_wr[1], attValue, valueLen_w);
     }
     }else{ //無(wú)效數據,不保存
     Password_wr[0] = 0;
}

在void server_rd_rsp(u8 attOpcode, u16 attHandle, u8 pdu_type)中實(shí)現把鎖體狀態(tài)回復給手機APP:
att_server_rd( pdu_type, attOpcode, attHandle, &LockFlag, 1); //將LockFlag 標志位返回給手機APP


手機操作流程如下:
使用手機原生藍牙界面查找設備,找到MM32_Lock后點(diǎn)擊進(jìn)行配對。默認配對密碼為123456,配對成功后MM32_LOCK設備自動(dòng)保存到配對設備列表,以后不需要該步驟;

手機打開(kāi)App,開(kāi)始搜索BLE設備,選擇對應名稱(chēng)(MM32_LOCK)的藍牙設備并進(jìn)行配對,等待連接成功。連接成功后會(huì )有相應提示,按鈕Connect名字會(huì )變成Disconnect;

連接成功后,對UUID為fff1的特征值寫(xiě)0x31323334(模擬用戶(hù)輸入密碼”1234”),測試板上連接的馬達開(kāi)始轉動(dòng),執行開(kāi)鎖動(dòng)作;

給PA1輸入低電平模擬鎖開(kāi)啟完成,UUID為fff2的特征值結果為0表示鎖體開(kāi)啟,給PA1輸入高電平模擬鎖體鎖上,UUID為fff2的特征值結果為1表示鎖體鎖上。這里只用馬達驅動(dòng)開(kāi)鎖,關(guān)鎖默認為手動(dòng)操作。
  

圖3 手機APP圖


MM32W3xxB.pdf (1.88 MB)




本文地址:http://selenalain.com/thread-594344-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页