聚豐項目 > 智能家居控制器
本項目基于AB32VG1 BLE的SOC, 使用RT-Thread Rtos 完成智能家居燈\門鎖...通過藍牙BLE用手機等智能終端控制, 并有語音提示, 除了手機控制, 當然也可以用按鍵控制, 這只一個小案例, 除了燈\門鎖...還有其他的電器,比如插座\窗簾'....
fannifu
分享fannifu
團隊成員
大樹 電子工程師
本項目了 除了用執行元件, 都用AB32VG1開發板完成的, 得益于AB32VG1豐富的功能組件:
CPU: AB5301A;( LQFP48 封裝,主頻 120M,片上集成 RAM 192K, flash 8 Mbit, ADC, PWM, USB, UART, IIC 等資源)
AB5301A內置藍牙BLE SOC -- 本項目用此做手機遠程控制
AB5301A內置 FM 模塊 (本項目未使用)
一路 TF Card 接口 (本項目未使用)
一路 USB 接口 (本項目未使用)
一路 IIC 接口 (本項目未使用)
一路音頻接口(美標 CTIA) -- 本項目用此做操作語音揭示及反饋
六路 ADC 輸入引腳端子引出 (本項目未使用, 如需拓展溫度光照檢測應用, 可以用ADC)
六路 PWM 輸出引腳端子引出(本項目未使用, 如需拓展調光應用, 可以用PWM)
一個 IRDA(紅外接收端口) (本項目未使用)
一個 Reset 按鍵, 三個功能按鍵(通用版為兩個功能按鍵)
硬件架構
系統采用USB供電
USB轉UART 下載程序及軟件調試
DAC做音頻輸出到喇叭, 操作語音揭示及反饋
GPIO輸出控制LED燈和門鎖
軟件功能
手機通過BLE遠程控制LED燈亮滅, 開門鎖(鎖門驅動模塊會自動檢測關門并鎖門, 所以不考慮鎖門)
板載按鍵遠程控制LED燈亮滅, 開門鎖
軟件框圖
使用RT-Thread Studio, 創建工程, 配置好組件軟件包, 本項目應用組件或軟件包:
RT-Thread 標準最新版本
驅動:
Audio
串口
Pin(GPIO)
組件:
wavplayer播放器 播放器
ptparse --命令行參數解析器, wavplayer依賴它解析播放參數
DFS ---文件系統
Finsh命令
MultiButtion --- 按鍵框架
bluetrum SDK
以上都是通過RT-Thread Studio配置 獲得, 我需要寫的代碼, 非常少, 真的是低代碼開發
我需要開發的
1、BLE(Gatt Server) 收到手機發來的數據和按鍵事件處理, 調用GPIO執行控制LED燈亮滅, 開門鎖, 播放提示音
注: 提示音由mkromfs將音頻文件制作成C語言數組的虛擬文件系統, 詳細參閱:http://bbs.sunsili.com/thread-225776-1-1.html
2、BLE Gatt Service重寫
事件處理代碼
/* * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2021-12-07 LOJAM the first version */ #include
BLE相關代碼
/* * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2021-12-04 LOJAM the first version */ #include
Gatt Service代碼
/* * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2021-12-05 LOJAM the first version */ #include
在這上傳代碼不看到, 請移步:
https://gitee.com/lojam/ab32vg1-ble_-smrthm/tree/master
1、按鍵操作:
S2 按一下開鎖
S3 按一下開燈, 再關燈, 如此循環
注:每個操作,都播放提示音
2、BLE 遠程控制:
沒寫APP,用BLE調試助手
連接設備:Silicon_Smarthome
連接成功后, 選擇 Unkown Service (用戶自定義)
Unkown (用戶自定義) Charismatic 長度2Bytes Read / Write ( 可讀寫)
Byte0 Byte1
燈控制 lock
1:開燈 1: 開鎖(鎖驅動會自動檢測關鎖)
0:關燈 0: 關
Device Information Service 設備信息服務
Manufacturer Name String Charismatic read( 只讀) 讀設備制造商信息 字串類型
Model Number String Charismatic read( 只讀)獲取設備型號 字串類型
鳴謝
RT-Thread
電子發燒友
中科藍訊
RTT大賽開發者交流群的朋友們