DIY語音控制家庭自動化與Arduino和藍牙
智能家居因其便利性和節(jié)能性而受到歡迎。一個正在實施的項目使用語音命令無線控制家用電器和燈光。Android應(yīng)用程序執(zhí)行語音到文本的轉(zhuǎn)換,藍牙與微控制器通信以執(zhí)行命令。這消除了與設(shè)備進行物理交互的需要。智能家居可以通過自動化任務(wù)和跟蹤能源使用情況來節(jié)省能源并減少碳足跡。家庭中的智能技術(shù)是一種使日常工作更容易的有效方式。智能家居設(shè)備還可以跟蹤能源使用情況,并提供提高效率的見解。
在此之前,我們已經(jīng)建立了一些物聯(lián)網(wǎng)家庭自動化項目,以下是一些示例:
?基于物聯(lián)網(wǎng)的人孔監(jiān)控系統(tǒng)
?用Android Studio創(chuàng)建一個Android應(yīng)用程序,使用NodeMCU通過WiFi控制LED
?家庭自動化與Node-RED和樹莓派:控制燈和讀取DHT11數(shù)據(jù)
組件的要求
?Arduino UNO
?HC-05藍牙模塊
?2路繼電器模塊(5v)
?2人
?2個燈泡
?帶2針公插座的220v電線
?太陽板
?跳線
?螺母和螺栓
?還有智能手機
藍牙模塊HC-05
它是電子工程中廣泛使用的無線通信模塊。它使用串行UART通信進行數(shù)據(jù)傳輸。
模塊可以在兩種模式下工作:
1.主模式:可以與所有從機共享數(shù)據(jù)。
2.從模式:從主藍牙接收數(shù)據(jù)。
在這里,我們的藍牙模塊是一個奴隸,而智能手機是一個主人。
hc05引腳
它由6個引腳組成,分別是STATE, RXD, TXD, GND, VCC和EN,如模塊背面所述。
?STATE引腳:該引腳定義模塊的狀態(tài),無論它是否與另一個設(shè)備配對。
?RxD引腳:該引腳使用串行UART通信。當(dāng)模塊處于命令模式時,該引腳用于發(fā)送AT命令。
?TxD引腳:該引腳使用串行UART通信。該引腳用于在模塊處于命令模式時推出對AT命令的響應(yīng)。
?Vcc引腳:該引腳用于為模塊供電,使其工作。它通常連接到Arduino板上的5V引腳。其電壓范圍在3.6v到5v之間。
?GND引腳:該引腳用于將模塊連接到Arduino板的接地。
?EN引腳:該引腳用于命令模式和數(shù)據(jù)模式之間的切換。如果此引腳設(shè)置為HIGH,則模塊將處于命令模式。同樣,如果該引腳設(shè)置為LOW,則模塊將處于數(shù)據(jù)模式。
繼電器
它是一種開關(guān)機電裝置,可以切換高安培的交流-直流電源。
繼電器引出線
該模塊通常有四個引腳:
?Vcc引腳:用于上電繼電器模塊。它通常連接到5v。
?GND引腳:用于為繼電器模塊提供接地。
?IN1:用于控制模塊內(nèi)第一個繼電器的輸出。
?IN2:用于控制模塊內(nèi)第二繼電器的輸出。
此外,在每個繼電器的高壓端子側(cè)還有三個引腳。它們是NC(常閉),COM(普通)和NO(常開)。
線路圖
聯(lián)系很簡單,讓我們開始吧。
藍牙HC-05:為了建立Arduino與藍牙HC-05模塊之間的通信,Arduino的引腳3(代碼中定義的Tx)連接到藍牙模塊的接收引腳(RxD)上,引腳2 (Rx)連接到發(fā)送引腳(TxD)上。藍牙模塊通過將其Vcc和GND引腳連接到Arduino各自的電源和接地引腳來供電。
繼電器模塊:Arduino引腳5連接到繼電器模塊的IN1,而引腳6連接到IN2。這些輸入引腳是低電平,這意味著邏輯低電平激活繼電器,邏輯高電平使繼電器失活。
繼電器模塊有兩個指示繼電器狀態(tài)的led。當(dāng)繼電器被激活時,相應(yīng)的LED亮起。繼電器模塊通過將其Vcc和GND引腳連接到Arduino各自的電源和接地引腳來供電。
在繼電器模塊的高壓側(cè),兩個繼電器的COM口都連接到交流電源上。每個繼電器的NO端子分別連接到每個單獨的燈泡上,中性線直接連接到兩個燈泡上,如圖所示。
設(shè)置語音命令A(yù)ndroid應(yīng)用程序
要使用該項目,首先需要從Playstore安裝一個名為Arduino Bluetooth的應(yīng)用程序。
?下載并安裝應(yīng)用程序。
?允許使用麥克風(fēng)并啟用藍牙。
?啟動您的項目并將您的設(shè)備與HC-05配對。
?在應(yīng)用程序中切換到語音模式。
?點擊麥克風(fēng)圖標(biāo)開始發(fā)出語音命令。
?根據(jù)您的代碼說出正確的命令。
?享受用語音提示控制你的設(shè)備。
Arduino代碼說明
該程序通過串行通信讀取藍牙模塊數(shù)據(jù),并將其與定義的條件進行比較。如果任何條件為真,則該任務(wù)將執(zhí)行。如果不滿足任何條件,它將不做任何事情。
首先,我們必須包含成功執(zhí)行代碼所需的所有庫。庫只包括SoftwareSerial。此外,我們還定義了進一步編程所需的變量和對象。
?我們使用軟件串行庫定義到Arduino的Rx和Tx串行通信引腳。除此之外,我們可以直接使用Arduino引腳(0,1)用于Rx和Tx,但每當(dāng)我們上傳新代碼時,它就會創(chuàng)建一個刪除連接的喧囂。
?這里我們將pin2定義為Rx, pin3定義為Tx,請記住藍牙的RxD連接到Arduino的Tx,而TxD連接到Arduino的Rx。
在setup()函數(shù)中,啟動串行通信。
?藍牙模塊只能以9600的波特率進行通信。因此,我們初始化BT模塊。
?同樣,我們定義了所有的Pinmodes。
在上面的循環(huán)部分,我們已經(jīng)完成了所有的處理任務(wù),如讀取串行端口、比較文本和執(zhí)行任務(wù)。
?串行端口上的可用數(shù)據(jù)被讀取并存儲在字符串變量“data”中。此外,將存儲的數(shù)據(jù)與我們使用IF-Else條件實現(xiàn)的不同條件進行比較。
?您可以根據(jù)自己的喜好更改比較文本。此外,您還可以通過智能手機通過語音命令發(fā)送串行監(jiān)視器,查看接收到的數(shù)據(jù)。
這都是關(guān)于代碼的,只要上傳代碼。注意Rx和Tx引腳,不要忘記在串行監(jiān)視器上將波特率設(shè)置為9600。
完整的代碼將在下面的代碼部分中找到。
項目運作
?使用上傳的代碼啟動項目。
?打開應(yīng)用程序并配對您的BT模塊。
?開始發(fā)送代碼中使用的語音命令來控制設(shè)備。
本文編譯自iotdesignpro