我們之前已經討論過Arduino和Raspberry Pi的相對優點–它們各有千秋。但是,它們不一定是一個選擇,而是將它們組合在一起,以充分利用兩者的優勢。家庭自動化是此的理想選擇。家庭自動化市場上充斥著昂貴的用戶系統,它們彼此不兼容且安裝成本很高。如果您有Raspberry Pi和Arduino,只要愿意花時間和精力,就可以以一小部分的價格實現相同的事情。
更新:自從撰寫本文以來,我發現了OpenHAB,這是一個在Raspberry Pi上運行的免費開源家庭自動化平臺,可以與大量現成的智能家居套件以及Arduino集成。觀看下面的視頻以了解更多信息,然后轉到Raspberry Pi上的《 OpenHAB入門指南》以了解更多信息。
Heimcontrol.js是一個Node.js應用程序,旨在在Raspberry Pi上運行。與Arduino和一些現成的遠程控制插座結合使用,可以輕松控制AC設備。您可以添加溫度傳感器,甚至可以控制電視,但今天我們將保持基本狀態,并在以后的教程中擴展該項目。
以下是該項目的細分:
Raspberry Pi將充當大腦和操作的網關–它將運行與Mongo數據庫綁定的Node應用程序,并為任何Web瀏覽器提供前端界面。
目前,由Pi供電的Arduino將在電子設備之間連接–無線電控制電源開關。
為此,您需要:
Arduino和Raspberry Pi
一些遠程控制的插座和控制器(我使用了它們)
有源USB集線器
在開始之前,這是項目創建者本人的演示視頻。
重新開始
我們將在該項目中使用Raspian,如果您以前曾進行過其他黑客活動,我強烈建議您從全新安裝開始。下載最新的Raspian映像,將其復制到SD卡,并確保擴展文件系統并啟用SSH。本指南的其余部分將假定您已完成此操作,并且正在使用默認用戶通過SSH連接。
如果您以前未進行過此操作,則此視頻介紹了在其中準備SD卡的過程OS X:
這是Windows用戶使用的:
準備工作
安裝過程非常繁瑣,并且從此處的說明中得出。不幸的是,它們已經過時或不是為Raspian設計的,因此我在下面進行了很大的調整。以下代碼大部分都可以粘貼在塊中,而無需一一粘貼。由于我們在Pi本身上進行了一些編譯,因此請注意,整個過程將花費很長時間。我會說自己去喝杯茶-但是當我說“很長時間”時,我的意思是一天中最好的時間-所以178杯會更合適。
所有命令都應該鍵入進入終端,您可能需要在某些時候按Enter鍵。這些最初的幾個命令將更新系統并安裝必備組件:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git-core git scons build-essential scons libpcre++-dev xulrunner-dev libboost-dev libboost-program-options-dev libboost-thread-dev libboost-filesystem-dev
接下來,我們需要安裝Node:
sudo mkdir /opt/node
wget http://nodejs.org/dist/v0.10.2/node-v0.10.2-linux-arm-pi.tar.gz
tar xv*** node-v0.10.2-linux-arm-pi.tar.gz
sudo cp -r node-v0.10.2-linux-arm-pi/* /opt/node
sudo ln -s /opt/node/bin/node /usr/local/bin/node
sudo ln -s /opt/node/bin/npm /usr/local/bin/npm
向您的配置文件添加PATH變量,以便操作系統知道Node的位置。使用nano文本編輯器,如下所示:
sudo nano /etc/profile
找到顯示 export PATH 的行,并將其替換為:
NODE_JS_HOME=“/opt/node”
PATH=“$PATH:$NODE_JS_HOME/bin”
export PATH
按Ctrl-X退出,然后按Y保存。
您可能需要注銷并再次登錄才能使路徑更改生效,但是您可以使用命令:
which node
如果沒有得到任何指向Node二進制文件的輸出,則出問題了。
Mongo
下一個工作是安裝Mongo。 Mongo是基于文檔的No-SQL數據庫,越來越多的Web應用程序使用它。不幸的是,這將永遠需要安裝,因為我們必須對其進行編譯。在運行以下命令時,您會遇到很多錯誤,例如:
{standard input}:13085: Warning: swp{b} use is deprecated for this architecture
不要擔心這些。因此,運行以下命令以安裝Mongo:
git clone git://github.com/RickP/mongopi.git
cd mongopi
scons
sudo scons --prefix=/opt/mongo install
scons -c
完成后,我們首先需要進行更多設置以修復權限問題并確保其在啟動時運行。
p》 sudo useradd mongodb
sudo mkdir /data/dbb
sudo chown $USER /data/db
cd /etc/init.d
sudo wget -O mongodb https://gist.github.com/ni-c/fd4df404bda6e87fb718/raw/36d45897cd943fbd6d071c096eb4b71b37d0fcbb/mongodb.sh
sudo chmod +x mongodb
sudo update-rc.d mongodb defaults
mongod
這最后一個命令將啟動Mongo服務器,您需要打開一個新的Terminal才能繼續執行其他命令。我對這一步驟并不完全有把握,因此,如果有人可以在有關如何使mongod在啟動時自動啟動的注釋中更正此錯誤,將不勝感激。
sudo shutdown -r now
最后,是時候安裝Heimcontrol.js Node應用程序了。
cd ~pi
git clone git://github.com/ni-c/heimcontrol.js.git
cd heimcontrol.js
npm install
您可以通過鍵入
node heimcontrol.js
開始運行應用程序。此時,您應該可以通過 http://訪問控制界面從Pi進行localhost:8080 ,如果要從另一臺計算機訪問localhost,則將其替換為IP地址(也可以設置端口轉發以從世界任何地方訪問它),因此我d鼓勵您在連接Arduino之前四處查看并檢查所有數據庫是否正常工作。
硬件
最終,我想要一個硬接線繼電器,但現在我會
我已經使用了Maplin的一些便宜的20英鎊套裝(帶有3個插座),打開了遙控器,這樣我就可以直接與433 MHz進行接口了。芯片內部。我在這里找到了相關說明。
您還可以購買單獨的433 MHz發射機,準備在eBay或業余電子供應商上使用。您需要做的就是將VCC連接到Arduino上的5 V,GND和一個控制引腳–記住您使用了哪個。 (Willi Thiel的示意圖)
該插件通過發送“三態代碼”來工作,但這些代碼因制造商而異。請參考RCSwitch文檔以找到您的確切代碼。該Wiki指南也可能會有所幫助。
與Arduino的通信是通過稱為duino的Node庫完成的。如果Heimcontrol應用程序正在運行,請停止它,然后使用以下命令安裝Arduino橋。
npm install duino
Arduino必須已上傳此代碼-我建議您復制并粘貼以從不同的計算機。它本質上是一個偵聽器程序,可以響應Pi的串行命令,但是沒有阻止您使用自己的功能對其進行擴展的功能。
應用程序啟動,請轉到設置菜單》 Arduino 。
從此處可以添加一個新項目,選擇RCSwitch方法,發送器的引腳和三態地址代碼。記住要保存,然后回到主屏幕屏幕查看新按鈕。
錯誤:
經過數小時的操作調試代碼后,我發現一位數字的引腳號不起作用–確保將發射器放在引腳 10 上。
我還發現Arduino插件在我的接收器所需的三態代碼的最終位不正確地進行了硬編碼。首先進行一些解釋:三態代碼由3個字節的信息組成。第一個確定我們的網絡號(1-4),第二個確定我們的收發器地址(同樣為1-4,最多產生16個可尋址套接字)。最后一個字節包含兩位填充位,外加2位用于開/關。不幸的是,最后一個字節被硬編碼到Arduino插件中–在我的情況下,開/關代碼不正確。
我不得不手動編輯 plugins/arduino/index.js 使用正確的代碼。如果您使用與我相同的遠程控制插座,則將第80行向前更改為:
// Send RC code
if (item.value) {
return that.pins[item.pin].triState(item.code + “FFFF”);//change from FF0F
} else {
return that.pins[item.pin].triState(item.code + “FFF0”);//change from FF00
}
責任編輯:wv
-
自動化
+關注
關注
29文章
5592瀏覽量
79387 -
Arduino
+關注
關注
188文章
6471瀏覽量
187293 -
樹莓派
+關注
關注
117文章
1708瀏覽量
105704
發布評論請先 登錄
相關推薦
評論