Annuncio pubblicitario

Abbiamo già parlato dei pregi relativi di Arduino e Raspberry Pi: ognuno ha i suoi punti di forza. Non devono essere né una scelta né una scelta: combinali per ottenere il meglio da entrambi i mondi. La domotica è il candidato perfetto per questo. Il mercato dell'automazione domestica è invaso da costosi sistemi di consumo, incompatibili tra loro e costosi da installare. Se hai un Raspberry Pi Raspberry Pi: The Unofficial TutorialChe tu sia un attuale proprietario Pi che desideri saperne di più o un potenziale proprietario di questo dispositivo di dimensioni di una carta di credito, questa non è una guida che vuoi perdere. Leggi di più e un Arduino, puoi praticamente ottenere la stessa cosa a una frazione del prezzo, supponendo che tu sia disposto a dedicare tempo e fatica.

Aggiornamento: da quando questo articolo è stato scritto, ho scoperto OpenHAB, una piattaforma di automazione domestica gratuita e open source che gira su Raspberry Pi e può essere integrato con una vasta gamma di kit per la casa intelligente già pronti Arduino. Guarda il video qui sotto per un'anteprima, quindi vai al nostro

Introduzione a OpenHAB su Raspberry Pi Introduzione a OpenHAB Home Automation su Raspberry PiOpenHAB è una piattaforma di automazione domestica open source matura che funziona su una varietà di hardware ed è protocollo agnostico, nel senso 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 essere eseguita su Raspberry Pi. Combinato con un Arduino e alcune prese del telecomando standardizzate, semplifica il controllo degli apparecchi CA. Puoi aggiungere sensori di temperatura e persino controllare la tua TV, ma oggi terremo le cose di base e estenderemo il progetto in un tutorial successivo.

Ecco una ripartizione del progetto:

  • Il Raspberry Pi fungerà da cervello e da gateway per le operazioni: eseguirà un'app Node, legata a un database Mongo e servirà l'interfaccia front-end per qualsiasi browser web.
  • Un Arduino, alimentato dal Pi, si interfaccia tra l'elettronica - interruttori di alimentazione del radiocomando, per ora.

Per fare questo, avrai bisogno di:

  • Arduino e un Raspberry Pi
  • Alcune prese e controller telecomandati (che ho usato questi)
  • Hub USB alimentato
RC-sockets

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

Inizia di nuovo

Utilizzeremo Raspian per questo progetto 11 Sistemi operativi in ​​esecuzione su Raspberry PiQualunque sia il tuo progetto Raspberry Pi, esiste un sistema operativo per esso. Ti aiutiamo a trovare il miglior sistema operativo Raspberry Pi per le tue esigenze. Leggi di più e suggerirei vivamente di iniziare da una nuova installazione se in precedenza hai eseguito altri hack e simili. Scarica l'ultima Immagine raspiana, copiarlo sulla scheda SD e assicurarsi di espandere il file system e abilitare SSH. Il resto di questa guida supporrà che tu l'abbia fatto e ti connetti tramite SSH usando l'utente predefinito.

Se non l'hai mai fatto prima, questo video spiega il processo di preparazione della scheda SD in OS X:

E questo per gli utenti Windows:

Preparazione

Il processo di installazione è piuttosto laborioso e derivato dal istruzioni qui. Sfortunatamente, questi erano obsoleti o non progettati per Raspian, quindi li ho adattati pesantemente di seguito. 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 prepararti una tazza di tè, ma quando dico un "lungo periodo" intendo la parte migliore di una giornata, 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-programma-opzioni-dev libboost-thread-dev libboost-filesystem-dev. 

Successivamente è necessario installare 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 Node. Utilizzare l'editor di testo nano come segue:

sudo nano / etc / profile. 

Individua la linea che dice esporta PERCORSO e sostituiscilo con:

NODE_JS_HOME = "/ opt / node" PATH = "$ PATH: $ NODE_JS_HOME / bin" esporta PERCORSO.

Premi Ctrl-X per uscire e Y per salvare.

Potrebbe essere necessario disconnettersi e riconnettersi per rendere effettive le modifiche al percorso, ma è possibile verificare con il comando:

quale nodo. 

Se non ottieni alcun output che punta al binario Node, qualcosa è andato storto.

Mongo

Il prossimo lavoro è installare Mongo. Mongo è un database No-SQL basato su documenti sempre più utilizzato dalle app Web. Sfortunatamente, l'installazione richiederà un'eternità poiché dobbiamo compilarla. Durante l'esecuzione dei seguenti comandi otterrai molti errori come:

{input standard}: 13085: avviso: swp {b} l'uso è obsoleto per questa architettura. 

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 configurazione per risolvere i problemi di autorizzazione e assicurarci 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. impostazioni predefinite sudo update-rc.d mongodb. mongod

Quest'ultimo comando avvierà il server Mongo e dovrai aprire un nuovo Terminale per continuare con gli altri comandi. Non sono del tutto sicuro di questo passaggio, quindi se qualcuno può correggerlo nei commenti su come fare in modo che mongod si avvii automaticamente all'avvio, sarebbe molto apprezzato. Per ora funziona, ma non elegantemente.

sudo shutdown -r ora

Infine, è tempo di installare l'applicazione del 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


nodo heimcontrol.js. 

A questo punto, dovresti essere in grado di accedere all'interfaccia di controllo con http://localhost: 8080 dal Pi o sostituisci localhost con l'indirizzo IP se accedi ad esso da un altro computer (e potresti anche impostare il port forwarding Che 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 la tua nuova brillante app non funzionerà? La tua Xbox non ti consente di giocare, i tuoi download torrent si rifiutano ... Leggi di più per accedervi da qualsiasi parte del mondo), quindi ti incoraggio a curiosare e verificare che tutto funzioni 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 da 20 £ ragionevolmente economici di Maplin, dotati di 3 prese, 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

Puoi anche acquistare singoli trasmettitori da 433 MHz pronti per l'uso su eBay o dai fornitori di elettronica per hobby. Tutto ciò che serve è collegare 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 varieranno a seconda del produttore. Fare riferimento al Documentazione RCSwitch per trovare i tuoi codici esatti. Questo guida wiki può aiutare anche.

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

npm installa duino. 

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

rc-settings

Con l'app Web avviata, vai su impostazioni menu> Arduino.

heimcontrol-menu-impostazioni

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

rcswitch-impostazione

bugs:

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

Ho anche scoperto che il plug-in Arduino era codificato con bit finali errati per i codici tristate necessari ai miei ricevitori. Prima una piccola spiegazione: i codici tristate sono composti da 3 byte di informazioni. Il primo ci determina il numero di rete (1-4) e il secondo fornisce l'indirizzo del ricetrasmettitore (di nuovo 1-4, producendo un massimo di 16 socket indirizzabili). Il byte finale è costituito da due bit di riempimento, più 2 bit per accensione / spegnimento. Sfortunatamente, il byte finale è inserito nel plug-in Arduino e, nel mio caso, il codice di attivazione / disattivazione non era corretto.

Ho dovuto modificare manualmente il plugins / Arduino / index.js per usare i codici corretti. Se stai utilizzando le stesse prese del mio telecomando, cambia le righe da 80 in poi in:

// Invia il codice RC. if (item.value) {return that.pins [item.pin] .triState (item.code + "FFFF"); // cambia da FF0F. } else {return that.pins [item.pin] .triState (item.code + "FFF0"); // cambia da FF00. }

Ecco un video dimostrativo di tutto ciò che funziona:

Lo lascerò qui a questo punto, ma le letture del sensore e i telecomandi IR lo sono anche supportato. Probabilmente li rivedremo in un secondo momento con altri miglioramenti. Se tutto questo è stato un po 'troppo complesso per te, forse dai un'occhiata a questi progetti Arduino per principianti 15 grandi progetti Arduino per principiantiInteressato ai progetti Arduino ma non sai da dove cominciare? Questi progetti per principianti ti insegneranno come iniziare. Leggi di più .

James ha una laurea in Intelligenza Artificiale ed è certificato CompTIA A + e Network +. È lo sviluppatore principale di MakeUseOf e trascorre il suo tempo libero giocando a paintball e giochi da tavolo VR. Costruisce PC da quando era un bambino.