因為近兩年內(nèi)有家裝的需求,考察了市面上的智能家居方案,要么不靠譜看不上眼,要么價格高得離譜。想著自己原來也搞過一段時間單片機,Linux靠著 Google 和 StackOverflow 也能解決一些問題。于是開始嘗試 Arduino 和 RPi在家居控制方面的各種實踐。總結(jié)一些想法給大家作為參考:
RPi 和 Arduino兩個完全不同運算水平的平臺。畢竟 RPi 使用的是一顆運行在 700MHZ 的 ARM11 CPU;而常用的 Arduino UNO則是一顆在工業(yè)控制領(lǐng)域常見的 8-bit ATmega328,最高運行頻率僅 20MHz。
RPi 可以運行完整的操作系統(tǒng),如 Debian等常見 Linux 發(fā)行版 - RPi Distributions。這意味著你可以使用你熟練的語言(如Python、Java)和熟悉的庫來進行開發(fā),同時后臺運行多個進程也毫無壓力。而 Arduino作為一款真正傳統(tǒng)意義上的單片機系統(tǒng),一次只能運行一個你燒進去的程序,功能也相對單一。
RPi自帶的接口比較全面,USB-host、RJ45、HDMI、SD讀卡器等常用接口都有;而 Arduino比較單純,與外部設(shè)備打交道需要另外采購接口板。
RPi因為是一個相對完整的「電腦」,其成本肯定比 Arduino 高,目前 B 版在淘寶普遍 280 元左右;而常用的 ArduinoUNO 40 元搞定。
RPi擁有更完整的操作系統(tǒng),這也意味著每次復(fù)電后所需的啟動時間很長,而且還不能保證重啟后你寫的相關(guān)服務(wù)都能正常啟動(Linux大拿可能會覺得是我技術(shù)渣);但 Arduino 因為用途單一,重啟速度超快,而且重啟結(jié)束后立即就在運行你讓它做的事。
綜合考慮后,我的選擇是:
RPi作為家居中央控制服務(wù)器,負責與互聯(lián)網(wǎng)的通信、采樣存儲 Arduino上報的狀態(tài)數(shù)據(jù)、處理數(shù)據(jù)量大的工作(如音頻、視頻、圖片相關(guān))、提供 API 給 iOS 及 Android以方便用手機控制家居。RPi 與 Arduino 間通過以太網(wǎng)和 Zigbee 進行數(shù)據(jù)傳輸。
Arduino負責家居傳感器采樣,如光線強度、溫度、人體紅外感應(yīng)等。有的模塊比較獨立,比如人體感應(yīng)的夜間走廊燈,單個 Arduino可以自己實現(xiàn)監(jiān)控加控制,就不需要上報數(shù)據(jù)給 RPi 了。需要上報和接收數(shù)據(jù)的 Arduino ,通過 Zigbee 及以太網(wǎng)和 RPi進行通信。
這樣的好處就是投資小,而且把計算任務(wù)都放在了 RPi 上,算是物盡其用。