鄧中樺 李曉淵 李文杰 許澤華
(華南理工大學廣州學院智能車隊,廣東 廣州510800)
在當代處處是智能的時代,智能機器人都已成型來開始為人類服務,人們追求方便的程度不止于此!智能家居的發(fā)展迅速崛起,開關智能化在智能家居鄰域可謂是最簡單最基礎的配置了,而大多數(shù)的家庭其實還未普及利用手機遠程遙控電燈或多數(shù)電器,市面上大多數(shù)遙控電燈開關都是配套電燈一起安裝的,對于已經(jīng)安裝的普通手動開關房間,需要通過一次簡單的改造,在保留原開關的前提下,實現(xiàn)遠程控制開關。
針對上述問題,設計一款智能開關來對復雜的家居系統(tǒng)實現(xiàn)有效控制。為了實現(xiàn)此目標,我們通過STM32 使藍牙能對舵機的轉角進行控制,從而控制照明燈的開啟的關閉。因此,該設計對于目前家居智能開關控制的進一步優(yōu)化具有一定的實際意義,具備廣闊的發(fā)展前景。
此系統(tǒng)主要由藍牙模塊,舵機模塊和stm32 單片機三部分組成,藍牙模塊RX1 與TX1 分別連接在STM32 的PA10 與PA11,模塊成功連接時RX1 為高電平,TX1 為低電平。舵機模塊的PA8 與STM32 的PA8 相連。由手機App 發(fā)送信息再由藍牙模塊接收,接收到信息后向STM32 發(fā)送信息,STM32 對信息進行處理后對舵機的轉角進行控制,從而達到遠程操控開關燈的目的。
MCU 模塊相當于“黑匣子”的大腦,必須要有一個快速響應以及儲存信息量大的處理器,所以選擇STM32F103 為核心處理器。STM32F103 芯片有低功耗,高精度的優(yōu)勢特點以及6kB ROM和2kB RAM的存儲區(qū)供給程序和數(shù)據(jù)的使用。同時其具有雙通道串口通信接口,可以與計算機進行異步或同步串行通信。而在算法的運算方面也有較高的運算速度十分適合智能開關程序的運行。
由于該STM32 內(nèi)置的振蕩器沒有外部選用的晶體的精度高,無法實現(xiàn)晶振的高頻振蕩。因此使用外部晶振會更好的發(fā)揮芯片的性能。STM32 的PC14 PC15 與分別與12M 10pF 晶振的OSC IN 與OSC OUT 相連,12M外部振蕩器可為系統(tǒng)提供更為準確的主時鐘;STM32 的PD0 PD1 分別與32.768KHZ 的LES晶體的OSC32 IN OSC32 OUT 相連,為實時時鐘和定時功能提供一個低功耗且準確的時鐘源。
RSBRS02AA 藍牙模塊4.2 工作電壓3.3V 最大發(fā)射功率7bBm 默認的工作頻率為9 600 bps. 藍牙模塊的TX RX 與單片機的PA9 PA10 連接,串口協(xié)議當模塊BLE 連接間隔為20ms。
“黑匣子”的總電源供應來自7.2V 大容量鎳鎘電池,但是單片機STM32 是3.3V 的電源。故我們需要的是從電源7.2V 接入7.2V 轉3.3V 的降壓電路。采用AMS1117 系列穩(wěn)壓器,最小飽和壓降為1.1V~1.3V,最低工作電壓為4.4V~4.8V,與其他系列相比擁有在相同的輸出電壓下可以在更低的工作電壓下工作的優(yōu)勢。C11 是電源輸入濾波電容,主要用于在電源輸入處進行濾波,使輸出電壓波形輸出顯示更平滑和起伏??;C12 是電源輸出濾波電容,作用是減小輸出電壓汶波并抑制ASM1117 的自激振蕩。該模塊最終實現(xiàn)把7.2V 的電源直流電轉為3.3V 的直流電供給STM32 單片機使用。
由于電池容量是7.2V 2Ah,電壓高于各模塊電壓,因此采用壓差約為0.8V,額定電流為1A 的LM2940 系列穩(wěn)壓器。使用該系列穩(wěn)壓器為舵機模塊以及繼電器提供5.0V 直流電源。LM2940 硅片是一個塑封三角元件,PIN1 為輸入端,PIN2 為公共端,PIN3 為輸出端。蓄電池7.2V 經(jīng)過0.47uF 和0.1uF 電容濾波輸入到1 管腳,2 管腳接地,3 管腳經(jīng)過22uF 和0.1uF 濾波穩(wěn)定后輸出5.0V 直流電,給予繼電器以及舵機供電。
舵機中的伺服電機是服從信號的要求而動作。在信號來之前,轉子停止不動;信號來到之后,轉子立即運動。這樣我們就可以通過輸入不同的信號發(fā)給舵機, 來控制其旋轉到不同的角度。
舵機接收的信號是PWM,當PWM信號進入內(nèi)部電路產(chǎn)生一個偏置電壓,觸發(fā)電機通過減速齒輪帶動電位器移動,使電壓差為零時,電機停轉,從而達到伺服的效果。簡單來說就是給舵機一個特定的PWM信號,舵機就可以旋轉到指定的位置。
舵機上有三根線,分別是GND、VCC 和SIG,也就是地線、電源線和信號線,其中的PWM波就是從信號線輸入給舵機。
一般來說,舵機接收的PWM 信號頻率為50HZ,即周期為20ms。當高電平的脈寬在0.5ms-2.5ms 之間時舵機就可以對應旋轉到不同的角度。
采用信馳達的藍牙模塊和舵機實現(xiàn)遠程控制的基本流程:藍牙模塊和舵機數(shù)據(jù)進行初始化,將手機連上藍牙后,然后再通過手機端發(fā)送指令,藍牙模塊再把接收到的指令傳給STM32,STM32 根據(jù)指令控制舵機執(zhí)行相應的操作。
手機指令 執(zhí)行操作 0x01 舵機轉動到-45° 0x02 舵機轉動到-90° 0x11 舵機轉動到45° 0x12 舵機轉動到90° 0x00 舵機轉動到0°
通過舵機的轉角對電燈的開關進行控制。
控制系統(tǒng)軟件部分主要分為藍牙配置與通信、舵機控制兩大主要部分。系統(tǒng)接上電源后,藍牙模塊,舵機啟用,手機APP成功連接藍牙后傳送對應的控制指令,藍牙模塊接收指令后將指令后傳給STM32,STM32 控制舵機轉角進行開關的控制。
定義GPIO 結構體,打開GPIOB 時鐘,串口波特率為115200bps,具有最高理論轉發(fā)能力(12.4KB/S)。當EN 為高電平,藍牙模塊將處于完全睡眠狀態(tài),當EN 置低時,模塊會以200ms 的間隔開始廣播,直到和手機連接成功,EN 從低到高跳變,不論模塊狀態(tài),直接進入睡眠。
void Run model()//設置舵機三種運動模式,停止模式,待機模式以及工作模式。
void led()// 模塊成功連接后,高電平洪燈亮,低電平藍燈滅。
void key()//中斷函數(shù)的配置。
void main()// 主函數(shù)完成系統(tǒng)初始化,按鍵的掃描,開關的藍牙控制,以及舵機轉角的判斷。如圖1 所示。
圖1
voidusart1()//串口中斷函數(shù),單片機Pin9,Pin10 初始化。如圖2 所示。
圖2
圖3
通過測試本產(chǎn)品已經(jīng)能通過nRF Connect 手機APP 發(fā)送代碼后對舵機轉角進行控制,如圖3 所示,此刻為開燈的狀態(tài),當輸入代碼0x11 后,STM32 接收信息將其轉換傳給舵機,使舵機旋轉45°從而達到關燈的目的。再次開燈之需輸入0x01 即可。
在本文中,我們利用手機的藍牙通信功能設計實現(xiàn)了一種手機控制家用電燈的開關。在所設計的系統(tǒng)中,手機APP 用來輸入代碼信號,藍牙通信用來建立手機和STM32 單片機,控制舵機角轉角來控制電燈開關。這樣通過手機就可以控制電燈的開啟和關閉,使智能手機的作用得到增加,也為生活的智能化增添了新的體驗,具有一定的實用價值。