Guida di automazione domestica con Raspberry Pi e Arduino

Il mercato domotico è invaso da costosi sistemi di consumo, incompatibili tra loro e costosi da installare. Se hai un Raspberry Pi e un Arduino, puoi sostanzialmente ottenere la stessa cosa ad una frazione del prezzo, assumendo che tu sia disposto a dedicare tempo e sforzi.

Il mercato domotico è invaso da costosi sistemi di consumo, incompatibili tra loro e costosi da installare.  Se hai un Raspberry Pi e un Arduino, puoi sostanzialmente ottenere la stessa cosa ad una frazione del prezzo, assumendo che tu sia disposto a dedicare tempo e sforzi.
Annuncio pubblicitario

Abbiamo già parlato dei meriti relativi di Arduino e Raspberry Pi - ognuno di loro ha i suoi punti di forza. Non devono necessariamente essere né una scelta né una scelta: combinarli per ottenere il meglio da entrambi i mondi. La domotica è il candidato perfetto per questo. Il mercato domotico è invaso da costosi sistemi di consumo, incompatibili tra loro e costosi da installare. Se hai un Raspberry Pi Raspberry Pi: The Unofficial Tutorial Raspberry Pi: The Unofficial Tutorial Se sei un attuale proprietario di Pi che vuole saperne di più o un potenziale proprietario di questo dispositivo di dimensioni carta di credito, questa non è una guida voglio perdere. Leggi di più e un Arduino, puoi sostanzialmente ottenere la stessa cosa ad una frazione del prezzo, assumendo che tu sia disposto a dedicare tempo e sforzi.

Aggiornamento: da quando questo articolo è stato scritto, ho scoperto OpenHAB, una piattaforma domotica gratuita e open source che funziona su Raspberry Pi e può essere integrata con una vasta gamma di kit di case intelligenti e Arduino. Guarda il video qui sotto per un'anteprima, poi vai al nostro Getting Started con OpenHAB su Raspberry Pi Introduzione a OpenHAB Home Automation su Raspberry Pi Introduzione a OpenHAB Home Automation su Raspberry Pi OpenHAB è una domotica open source matura piattaforma che funziona su una varietà di hardware ed è indipendente dal protocollo, il che significa che può connettersi a quasi tutti gli hardware di automazione domestica sul mercato oggi. Leggi di più guida per saperne di più.

Heimcontrol.js è un'app Node.js creata per funzionare su Raspberry Pi. Combinato con un Arduino e alcune prese remote pronte all'uso, rende facile il controllo degli apparecchi CA. È possibile aggiungere sensori di temperatura e persino controllare la TV, ma terremo le cose semplici oggi ed estendere il progetto in un tutorial successivo.

Ecco una ripartizione del progetto:

  • Il Raspberry Pi agirà come il cervello e il gateway delle operazioni: eseguirà un'app Node, legata a un database Mongo e servirà l'interfaccia front-end a qualsiasi browser web.
  • Un Arduino, alimentato dal Pi, si interfaccia tra l'elettronica e gli interruttori di alimentazione del controllo radio, per ora.

Per fare questo, avrai bisogno di:

  • Arduino e un Raspberry Pi
  • Alcune prese e controller controllati a distanza (li ho usati)
  • Hub USB alimentato

RC-sockets

Prima di iniziare, ecco un video dimostrativo del creatore del progetto stesso.

Inizia Afresh

Utilizzeremo Raspian per questo progetto 10 Sistemi operativi eseguibili con Raspberry Pi 10 Sistemi operativi eseguibili con Raspberry Pi L'hardware del solo Raspberry Pi è solo un lato della storia: oggi esploro 10 diversi sistemi operativi puoi installare Per saperne di più, ti suggerisco caldamente di iniziare da una nuova installazione se hai precedentemente eseguito altri hack e simili. Scarica l'ultima immagine Raspian, copialo sulla tua scheda SD, e assicurati di espandere il filesystem e abilitare SSH. Il resto di questa guida presumerà che tu l'abbia fatto e che si stia connettendo su SSH utilizzando l'utente predefinito.

Se non lo hai fatto prima, questo video spiega come preparare la tua scheda SD in OS X:

E questo per gli utenti di Windows:

Preparazione

Il processo di installazione è piuttosto laborioso e deriva dalle istruzioni qui. Sfortunatamente, questi erano obsoleti o non progettati per Raspian, quindi li ho regolati molto sotto. I seguenti codici possono essere incollati principalmente in blocchi: non è necessario incollarli uno per uno. Dal momento che stiamo compilando alcune cose sul Pi stesso, tieni presente che l'intero processo richiederà molto tempo. Direi di farti una tazza di tè - ma quando dico "molto tempo", intendo la parte migliore di un giorno - quindi 178 tazze sarebbero più appropriate.

Tutti i comandi devono essere digitati nel terminale e potrebbe essere necessario premere Invio in alcuni punti. Questi primi comandi aggiorneranno il sistema e installeranno i prerequisiti:

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 

Quindi dobbiamo installare il nodo:

 sudo mkdir /opt/node wget http://nodejs.org/dist/v0.10.2/node-v0.10.2-linux-arm-pi.tar.gz tar xvzf 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 

Aggiungi una variabile PATH al tuo profilo in modo che il sistema operativo sappia dove si trova il nodo. Utilizza l'editor di testo nano come segue:

 sudo nano /etc/profile 

Individua la riga che dice PATH di esportazione e sostituiscila con:

 NODE_JS_HOME="/opt/node" PATH="$PATH:$NODE_JS_HOME/bin" export PATH 

Premi Ctrl-X per uscire e Y per salvare.

Potrebbe essere necessario disconnettersi e inserirli nuovamente affinché le modifiche al percorso abbiano effetto, ma è possibile verificare con il comando:

 which node 

Se non si ottiene alcun output che punta al binario del nodo, qualcosa è andato storto.

Mongo

Il prossimo lavoro è installare Mongo. Mongo è un database No-SQL basato su documenti sempre più utilizzato dalle app Web. Sfortunatamente, ci vorrà un'eternità per installarlo, visto che dobbiamo compilarlo. Durante l'esecuzione dei seguenti comandi otterrai molti errori come:

 {standard input}:13085: Warning: swp{b} use is deprecated for this architecture 

Non preoccuparti di questi. Quindi, esegui questi comandi per installare Mongo:

 git clone git://github.com/RickP/mongopi.git cd mongopi scons sudo scons --prefix=/opt/mongo install scons -c 

Al termine, abbiamo bisogno di un po 'più di installazione prima di risolvere i problemi di autorizzazione e assicurarsi che sia in esecuzione all'avvio.

 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 

Quest'ultimo comando avvierà il server Mongo e sarà necessario aprire un nuovo Terminale per continuare con gli altri comandi. Non sono del tutto sicuro di questo passaggio, quindi se qualcuno può correggere questo nei commenti su come avviare automaticamente Mongod all'avvio, sarebbe molto apprezzato. Per ora funziona, solo non elegantemente.

 sudo shutdown -r now 

Infine, è il momento di installare l'applicazione Nodo Heimcontrol.js.

 cd ~pi git clone git://github.com/ni-c/heimcontrol.js.git cd heimcontrol.js npm install 

Puoi iniziare a eseguire l'app digitando

 node heimcontrol.js 

A questo punto, dovresti essere in grado di accedere all'interfaccia di controllo con http: // localhost: 8080 dal Pi, o sostituire localhost con l'indirizzo IP se stai accedendo da un altro computer (e potresti anche configurare la porta inoltro Che cos'è il port forwarding e come può aiutarmi? [MakeUseOf Explains] Cos'è il port forwarding e come può aiutarmi? [MakeUseOf Explains] Piangi un po 'dentro quando qualcuno ti dice che c'è un problema di port forwarding ed è per questo che il tuo la nuova app non funzionerà? La tua Xbox non ti consentirà di giocare, i tuoi download torrent rifiutano ... Leggi di più per accedervi da qualsiasi parte del mondo), quindi ti incoraggio a curiosare e controllare tutto lavorare con il database prima di collegare Arduino.

Hardware

Alla fine mi piacerebbe un relè cablato, ma per ora userò l'opzione più sicura degli interruttori radiocomandati.

Ho usato alcuni set di £ 20 ragionevolmente convenienti da Maplin che sono dotati di 3 socket, e ho aperto il telecomando in modo da poter interfacciare direttamente con il chip 433 MHz all'interno. Ho trovato le istruzioni per questo qui.

rc-Controller-hack

È inoltre possibile acquistare singoli trasmettitori 433 MHz pronti per l'uso su eBay o da fornitori di elettronica per hobby. Tutto ciò di cui hai bisogno è connettere il VCC a 5 V su Arduino, i GND e un singolo pin di controllo - ricorda quale hai usato. (Schema di Willi Thiel)

arduino-rcswitch

Il plugin funziona inviando "codici tristate", ma questi variano a seconda del produttore. Fare riferimento alla documentazione RCSwitch per trovare i codici esatti. Questa guida wiki può essere d'aiuto.

La comunicazione con Arduino viene eseguita utilizzando una libreria Node chiamata duino. Arresta l'app Heimcontrol se è in esecuzione e installa il bridge Arduino usando il seguente comando.

 npm install duino 

L'Arduino deve avere questo codice caricato - ti consiglio di copiare e incollare per installare questo da un altro computer. È essenzialmente un programma di ascolto che risponde ai comandi seriali del Pi, ma non c'è nulla che impedisca di estenderlo con le proprie funzionalità.

rc-settings

Con l'app Web avviata, vai al menu Impostazioni > Arduino .

heimcontrol-menu-impostazioni

Da lì è possibile aggiungere un nuovo elemento, scegliendo il metodo RCSwitch, il pin del trasmettitore e il codice di indirizzo di Tristate. Ricorda di salvare, quindi torna alla schermata principale del tuo nuovo pulsante.

rcswitch-impostazione

bugs:

Dopo molte ore di debug del codice, ho trovato che i numeri di pin di una sola cifra non funzionavano - assicurati che il tuo trasmettitore sia posizionato sul pin 10 per essere sicuro.

Ho anche scoperto che il plugin Arduino era hardcoded con bit finali non corretti per i codici tristate necessari ai miei ricevitori. Prima una piccola spiegazione: i codici tristate consistono in 3 byte di informazioni. Il primo ci determina il numero di rete (1-4), e il secondo fornisce l'indirizzo del ricetrasmettitore (sempre, 1-4, producendo un massimo di 16 prese indirizzabili). Il byte finale consiste di due bit di padding, più 2 bit per on / off. Sfortunatamente, il byte finale è codificato nel plug-in Arduino e nel mio caso il codice on / off non era corretto.

Ho dovuto modificare manualmente i plugin / arduino / index.js per utilizzare i codici corretti. Se stai usando le stesse prese remote del mio controllo, cambia le linee 80 in poi per:

 // 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 } 

Ecco un video dimostrativo di tutto ciò che funziona:

Ho intenzione di lasciarlo qui a questo punto, ma sono supportate anche letture del sensore e telecomandi IR. Probabilmente li rivisiterò in un secondo momento con ulteriori miglioramenti. Se tutto ciò è stato un po 'troppo complesso per te, forse dai un'occhiata a questi progetti Arduino per principianti 10 Grandi progetti Arduino per principianti 10 Grandi progetti Arduino per principianti Completando un progetto Arduino ti dà un senso di soddisfazione come nessun altro. La maggior parte dei principianti non è sicura da dove iniziare, e anche i progetti per principianti possono sembrare piuttosto scoraggianti. Leggi di più .

Crediti immagine: Door Bell Via Flickr

In this article