第1步:功能
此板的主要特點是ESP32 FireBeetle開發板處理所有通信,傳感器讀數和輸出。有兩個步進電機驅動器,可控制兩個雙極步進電機。
I2C總線也已斷開,可用于APDS9960或LCD等組件。為了讀取溫度,需要斷開連接到DHT22傳感器的引腳以及用于讀取環境光水平的光敏電阻。
步驟2:PCB
我首先通過在Eagle中創建原理圖開始了PCB設計過程。由于找不到ESP32 FireBeetle庫,我只用了兩個pin 1x18 pin接針。然后,我創建了一個電源管理電路,該電路可以通過DC桶式插座接受12v電壓,并將其轉換為5v,為傳感器和ESP32供電。
原理圖完成后,我著手設計PCB本身。
我知道DC桶形插頭必須位于電路板的前端附近,并且100uF電源平滑電容器必須靠近步進電動機驅動器的電源輸入。一切布置好后,我開始布線。
雖然Oshpark生產高質量的PCB,但價格卻很高。值得慶幸的是,PCBGOGO.com還以合理的價格生產出了優質的PCB。我能夠以5美元的價格購買10塊PCB,而不是從Oshpark.com只需花52美元購買3塊板。
步驟3:組裝
總體來說,組裝電路板非常容易。首先,我焊接了表面安裝的組件,然后連接了桶形插孔連接器和調節器。接下來,我焊接了電機驅動器和FireBeetle等組件的排針。
焊接完成后,我通過將萬用表置于電阻測量模式并觀察了電路板是否短路來進行測試。如果電阻超過一定量。該板通過了,因此我可以插入每個組件。
步驟4:編程概述
我希望該板的代碼為模塊化且易于使用。這意味著有幾個處理特定功能的類,以及一個將較小的類組合在一起的較大的包裝器類。
步驟5:輸入
為處理輸入,我創建了一個名為“ Hub_Inputs”的類,該類可讓家用集線器與APDS9960進行通信,以及創建和管理按鈕以及電容式觸摸界面。它包含以下功能:
創建按鈕
獲取按鈕是否按下
獲取按鈕按下次數
獲取最新手勢
獲取電容式觸摸值
按鈕以結構形式存儲,具有三個屬性:is_pressed,numberPresses和pin。每個按鈕在創建后都會附加到中斷中。觸發該中斷時,將向該按鈕的指針(作為按鈕在數組中的內存地址)傳遞給中斷服務例程(ISR),并增加按鈕的按下次數,并更新is_pressed布爾值。
電容式觸摸值要簡單得多。通過將touch引腳傳遞給touchRead()函數來檢索它們。
通過輪詢APDS9960并檢查是否檢測到任何新手勢來更新最新手勢,如果已檢測到新手勢,則將專用手勢變量設置為該手勢。
第6步:輸出
智能家居中心具有幾種輸出信息和更換燈的方式。有一些引腳可以斷開I2C總線,使用戶可以連接LCD。到目前為止,僅支持一種LCD尺寸:20 x4。通過使用“ hub.display_message()”功能,用戶可以通過傳遞字符串對象在LCD上顯示消息。
有也是用于連接一串模擬LED的引腳接頭。調用函數“ hub.set_led_strip(r,g,b)”,設置條帶的顏色。
兩個步進電機使用一對DRV8825驅動器板驅動。我決定使用BasicStepper庫來處理電機控制。板子啟動時,將創建兩個步進對象,并且兩個電動機都將啟用。要步進每個電動機,請使用“ hub.step_motor(motor_id,steps)”功能,其中電動機id為0或1。
第7步:記錄
由于開發板上有多個傳感器,我希望能夠在本地收集和記錄數據。
開始記錄,將使用“ hub.create_log(filename,header)”創建一個新文件,其中header用于制作表示列的CSV文件行。第一列始終是“年月日小時:分鐘:秒”格式的時間戳。為了獲取時間,hub.log_to_file()函數通過basic_functions.get_time()函數獲取時間。然后,通過引用將tm時間結構以及數據和文件名傳遞給日志記錄函數。
步驟8:蜂鳴器
如果您不能播放音樂,IoT板有什么用?這就是為什么我包括一個具有聲音播放功能的蜂鳴器的原因。調用“ hub.play_sounds(旋律,持續時間,長度)”開始播放一首歌曲,旋律是音符頻率的數組,持續時間是音符持續時間的數組,長度是音符數量。
步驟9:外部IoT集成
該中心目前支持IFTTT Webhooks??梢酝ㄟ^調用Hub_IoT.publish_webhook(URL,數據,事件,鍵)或Hub_IoT.publish_webhook(URL,數據)函數來觸發它們。這會將帶有該數據的POST請求發送到給定URL,并在必要時發送事件名稱。要設置示例IFTTT集成,請首先創建一個新的applet。然后選擇在收到請求時觸發的webhook服務。
下一步,將事件稱為“ high_temp”并保存。然后,為“該”部分選擇Gmail服務,然后選擇“向自己發送電子郵件”選項。在該服務的設置中,將主題的溫度設置為“高溫!”,然后在“ {{OccurredAt}}”處輸入“ {{Value1}}的實測溫度”,其中顯示了實測溫度和觸發事件。
設置后,只需粘貼IFTTT生成的webhook URL,并將“ high_temp”放入事件部分。
步驟10 :用法
要使用Smart Home Hub,只需在setup()或loop()中調用任何需要的函數。我已經放置了示例函數調用,例如打印當前時間和調用IFTTT事件。
步驟11:未來計劃
智能家居中心該系統非常適合簡單的家庭自動化和數據收集任務。它幾乎可以用于任何事情,例如設置LED燈帶的顏色,監視房間的溫度,檢查燈是否亮著以及其他許多潛在項目。將來,我想進一步擴展功能。這可能包括添加更強大的Web服務器,本地文件托管,甚至是藍牙或mqtt。
-
集線器
+關注
關注
0文章
387瀏覽量
39479 -
智能家居
+關注
關注
1928文章
9553瀏覽量
184941 -
ESP32
+關注
關注
18文章
971瀏覽量
17203
發布評論請先 登錄
相關推薦
評論