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

【新品】ESP32雙核藍(lán)牙Wi-Fi模塊,穩(wěn)定性、兼容性一網(wǎng)打盡

ESP32能取代STM32嗎?哪個(gè)更好?

ESP32-S3芯片賦能設(shè)備,打造智能交互新體驗(yàn)

樂鑫ESP32-H2方案Matter協(xié)議設(shè)備互聯(lián)

評(píng)論