結(jié)合樹莓派和Javascript的家庭自動設(shè)計(jì)
鏈接到視頻
https://youtu.be/wh0OoLUTeM8 墻內(nèi)的同學(xué)看不了
介紹
自從我還是個一個孩子以來贮竟,就一直熱衷于電子化和不同種類的電子DIY较剃。以前我用arduino做了一些其他的小型項(xiàng)目,像我的游戲方向盤惰拱,還有我給我的車定制的LED轉(zhuǎn)速表啊送,語音控制LED等馋没。最近我買了Raspberry PI 3和一些物聯(lián)網(wǎng)開發(fā)的套件,于是我決定開始自動化我的家勾怒。
技術(shù)棧
由于我非常熟悉javascript及其生態(tài)系統(tǒng)声旺,所以決定通過自己的手機(jī)應(yīng)用程序創(chuàng)建自己的手機(jī)應(yīng)用程序react native腮猖,并將其連接websockets到NodeJS后臺。我使用ImmutableJS的記錄來保持?jǐn)?shù)據(jù)結(jié)構(gòu)的一致性和應(yīng)用程序的性能坪创。數(shù)據(jù)通過JSON字符串在客戶端和服務(wù)器之間發(fā)送姐赡,當(dāng)雙方收到時(shí),它們將被轉(zhuǎn)換回到不可變記錄雏吭。我將共享模塊(客戶端和服務(wù)器之間)分離到單獨(dú)的本地npm軟件包 - home記錄和home-config锁施。對于GPIO的控制(樹莓派的引腳),我結(jié)合pi-blaster并一起使用了wiringPi的庫。由于我找不到我的AC代碼悉抵,于是我自己記錄之后肩狂,并將它們添加到lirc配置文件中。Duckdnscron被用作動態(tài)dns姥饰,因?yàn)槲业腎P地址定期更改傻谁,我不需要每次重新編譯整個應(yīng)用程序或更改配置。服務(wù)器實(shí)時(shí)向所有連接的用戶廣播(應(yīng)當(dāng)譯為發(fā)送)更改列粪。手機(jī)應(yīng)用程序位于/ phone-app文件夾中审磁,服務(wù)器位于/ server中。
https://github.com/deepsyx/home-automation
這里是項(xiàng)目地址
硬件
Raspberry Pi 3
是控制單元岂座。大功率器件(如LED條)通過外部12V 5A power supply(與PI共享接地)供電。AC通過950nm紅外LED控制费什。加熱系統(tǒng)通過繼電器(開和關(guān))連接钾恢,舵機(jī)用于恒溫器。兩個白色LED和所述RGB經(jīng)由連接IRLZ34N邏輯晶體管的PI鸳址。還有IR接收器瘩蚪,以防萬一我想記錄任何其他東西。溫度通過DS18B20溫度傳感器測量稿黍。布線如下:
新想法
我開放了關(guān)于不同模塊的各種想法疹瘦。如果您有一些想法,如果您將其添加到問題跟蹤器并將其標(biāo)記為巡球,我將非常欣賞
你的Idea言沐。
軟件依賴
Node&Npm
Pi-Blaster
WiringPi庫
LIRC