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