Cherry Remote: il tuo telecomando universale con NodeMCU e RPI

Logo Cherry-Remote

Una delle semplici tecnologie con cui si ha a che fare ogni giorno è quella ad infrarossi per la comunicazione di semplici segnali tra un dispositivo client ed uno server: un telecomando.
E' ormai molto comune avere in casa un insieme di dispositivi controllati da remoto, il che implica il possesso di un numero alto di telecomandi ognuno adibiti alla comunicazione con il proprio dispositivo. Nasce dunque la necessità di possedere una modalità di controllo univoca su tutti questi dispositivi, veloce da configurare, sempre disponibile e facile all’uso. Cherry Remote è la soluzione a questo problema, a portata di smartphone!

A chi è rivolto questo dispositivo? Chiaramente ad un uso domestico ma si può applicare anche in altri contesti (e.g. ufficio).

Ora andremo a vedere cosa ci serve per la realizzazione di tale dispositivo e come funziona.

Componenti Hardware

Architettura dei componenti

Architettura dei componenti

  1. Il Raspberry pi occupa il ruolo centrale del progetto. E' il centro di connessione tra i dispositivi, hosta il database (punto 2) e le pagine web di interfaccia
  2. Il database mysql (con la nuova versione di raspbian: mariadb) serve a tenere traccia dei telecomandi, codici ir, modelli del design e controllori disponibili
  3. Lo smartphone personale che si dovrà collegare all'ip del raspberry per accedere alle pagine di controllo
  4. La connessione wifi di casa (o dell'ufficio) a cui tutti i componenti ai punti 1, 3 e 5 si devono collegare
  5. I controllori NodeMCU con sensore ed emettitore IR

Tecnologia IR

IR led

IR led

IR ricevitore XC4427

IR ricevitore XC4427

Nel codice del NodeMCU utilizzeremo la libreria IRremoteESP8266, una versione di IRemote modificata per essere usata da controllori con connessioni ESP8266. Gli oggetti IRrecv e IRsend possiedono metodi specifici per invio e ricezione dei segnali IR tramite il LED IR e il modulo di ricezione IR come in figura.

I dati sono di due formati. Per esempio il codice per mettere in standby un monitor di tipo LG è 20DF10EF (hex) chiamando il metodo sendNEC della libreria, mentre la maggior parte dei segnali IR sono di tipo RAW, quindi vettori di byte con lunghezza maggiore di 500. Cherry remote funziona con entrambi.

Come comunicano i componenti?

Nella fase di uso di un certo telecomando ogni click su un pulsante genera una richiesta HTTP POST verso l’indirizzo IP del controller (NodeMCU) sulla porta 80 nella scheda "channel_ir". Il pulsante stesso contiene il codice da inviare (hex oppure raw) che viene ricavato usando JQuery e inviato sotto formato JSON.

Schema collegamenti

Nella fase di registrazione di un comando si invia una richiesta HTTP POST verso l’indirizzo IP del controllore, porta 80 scheda "channel_ir" e viene dato un tempo massimo di 5 secondi per la risposta. In caso positivo il controller risponde con un file JSON avente il codice (hex o raw) del segnale IR appena letto. Quando bisogna chiamare il codice in PHP per comunicare con il Database si effettuano sempre richieste HTTP POST oppure GET inviando file JSON contenente i dati prestabiliti.

Database

Data Base

Per avere la persistenza dei dati nel nostro progetto creiamo le seguenti tabelle del database:

  • models: la tabella dei modelli grafici (vedi paragrafo design) con descrizione allegata che si possono scegliere per il proprio telecomando. Ogni modello ha un genere di appartenenza (o categoria)
  • controllers: la tabella dei controller, ovvero dei dispositivi NodeMCU connessi e funzionanti aventi il proprio indirizzo IP
  • remotes: la tabella dei telecomando. Ognuno di essi ha un modello (per la UI) e un controller (per inviare i segnali) di riferimento, oltre ad un nome proprio
  • commands: la tabella dei comandi. Per ogni telecomando si ha dai 5 ai 20 comandi (segnali IR, uno per pulsante) da inviare al controllore. Ogni comando ha un codice (hex o raw), la classe (per rintracciare il pulsante html di riferimento), il receiver type e il telecomando al quale fa riferimento

Realizzazione

Basta con le nozioni tecniche, passiamo alla pratica!

Cosa ci serve?

  • Raspberry pi con microSD ed alimentatore
  • NodeMCU v3 con cavo di connessione
  • Led IR
  • Modulo ricevitore IR XC4427
  • Cavi elettrici
  • Una connessione wifi disponibile
  • Il tuo smartphone

La libreria con tutti i codici è disponibile su github mentre la libreria IRemote8266 si trova qui.

Per l'inizializzazione del raspberry scaricare il sistema operativo dal sito ufficiale dove saranno disponibili anche le istruzioni.

Passo 1: configurazione del raspberry

Eseguiamo i comandi bash dal file "Configurare il RPI.txt" per installare i pacchetti necessari (mysql, php, apache...). Se il raspberry sarà collegato tramite cavo LAN non ci sono altre operazioni da effettuare. In caso contrario seguire queste istruzioni.

Copiare dunque il contenuto della cartella "Raspberry_webserver" dentro /var/www/htdocs nel raspberry. Se siete utenti windows si può usare WinSCP.

Prima di finire bisogna eseguire le query al database devices_commands. Eseguire il seguente codice da riga di comando essendo connessi al raspberry (con windows usare Putty)

A questo punto incollare le query sql dal file Create_tables.sql dentro la cartella Database modificando l'indirizzo ip nella query di inserimento dei controllori (vedi passo 3).

Passo 2: configurare il NodeMCU

Per costruire il circuito collegare i seguenti pin:

  • Trasmettitore IR Catodo -> NodeMCU GND
  • Trasmettitore IR Anodo -> NodeMCU D2 (gpio 4)
  • XC4427 GND -> NodeMCU GND
  • XC4427 Vcc -> NodeMCU 3V
  • XC4427 Signal -> NodeMCU D5 (gpio 14)
  • LED info Catodo -> NodeMCU GND
  • LED info Anodo -> NodeMCU D4 (gpio 2)

Schema collegamento

Adesso aprite l'ide di Arduino (downlaod disponibile qui)  ed aggiungere la libreria per ESP8266 (istruzioni). Dentro la cartella Server_NodeMCU aprire il file .ino e modificare le variabili ssid_hotspot e password_hotspot inserendo le credenziali di accesso alla propria connessione wifi.

A questo punto collegare il NodeMCU e caricare il codice.

Passo 3: indirizzi ip

Un consiglio importante è impostare gli indirizzi ip dei controllori (NodeMCU) e del raspberry in modo statico (se è consentito avere accesso al Modem). In questo modo I controllori rimarranno allo stesso indirizzo ogni volta che si collegheranno.

Statico oppure no, è necessario segnarsi gli indirizzi ip per effettuare le ultime query del Passo 1 e per collegarsi alla pagina web.

Passo 3: e ora?

Collegarsi con il proprio smartphone alla rete wifi  e immettere l'indirizzo ip del raspberry. Si aprirà la pagina di gestione dei telecomandi dalla quale si ha accesso a tutte le funzionalità.

Design ed uso

E' giunto il momento di definire il design per il nostro progetto!

I modelli dei telecomandi

Per la realizzazione visiva dell'interfaccia e dei telecomandi è stato utilizzata la versione HTML 5. Nel nostro caso sono stati progettati quattro diversi modelli di telecomando, ognuno con un background e style personalizzato, in modo da offrire non solo un design giovanile ed accattivante, ma anche dei dispositivi in grado di  soddisfare anche gli utenti più esigenti. Ogni telecomando è stato realizzato in una propria pagina html (che potete trovare qui), mentre i layout e gli styles sono stati implementati in un unico file CSS.

Modelli dei telecomandi

L'interfaccia Utente

Come si relaziona un possibile utente con Cherry Remote? Una volta digitato l’indirizzo Ip del Raspberry nella barra di ricerca del proprio browser, l’utente avrà a disposizione la pagina web che gli permetterà di visualizzare ed utilizzare i telecomandi. I colori che abbiamo applicato per caratterizzare i pulsanti e l'interfaccia userfriendly sono stati scelti tra le palettes studiate appositamente per i siti web. La pagina di apertura è la seguente e presenta queste funzionalità:

interfaccia

  • Pulsante ”Add Remote”: il pulsante con l'icona "+" serve ad aggiungere nuovi telecomandi. Nel punto successivo spiegheremo come si effettua questa operazione.
  • Barra di selezione: una volta aggiunti i singoli telecomandi, questi saranno salvati con l’apposito nome (Id) nel Database e resi quindi dispobinili nella listbox che si aprirà premendo sulla barra.
  • Pulsante "Delete remote": il bottone con l’icona del cestino offre l’opportunità di poter eliminare un telecomando qualora questo non sia più utile.

Aggiungere un nuovo telecomando

add remotePer aggiungere il nuovo telecomando è necessario seguire le seguenti istruzioni:

  1. Inserire un nome
  2. Scegliere uno tra i modelli presentati
  3. Scegliere il Controller (NodeMCU) a cui verrà associato il telecomando
  4. Registrare i pulsanti

aggiunta pulsanti

Per quanto riguarda l'ultimo punto, l'operazione da effettuare è molto semplice: una volta premuto sullo smartphone uno dei pulsanti che si desidera registrare viene messo a disposizione un periodo di tempo (circa 5 secondi) per premere il corrispettivo tasto sul proprio telecomando (fisico) puntandolo verso il controller, quest'ultimo ne salverà i dati. Una volta registrato, il pulsante si colorerà di verde in modo da aiutare l'utente nella memorizzazione. Terminata l'operazione basterà premere il tasto ”Confirm” , e finalmente il telecomando sarà pronto all'uso!

 

Aggiunta comando

Aggiunta comando

Abbiamo finito! Ora hai tutti gli strumenti necessari per realizzare il tuo Cherry Remote. Per saperne di più consulta la relazione.

 

Studentessa di ingegneria informatica, amo la musica e l’arte ma la mia più grande passione è l’animazione digitale e la produzione cinematografica in CGI. Sono sempre entusiasta di buttarmi in nuove esperienze costruttive e pronta a sperimentare!

Ingegnere informatico conosciuto (si spera) nel web con il nickname “fabian_57” (ma alcuni siti non me lo consentono, in quel caso fabian57fabian). Sempre pronto ad esplorare nuovi progetti con arduino, raspberry e molto altro.

Cherry Remote: il tuo telecomando universale con NodeMCU e RPI ultima modifica: 2018-07-27T14:03:44+00:00 da Silvia Raggi


Advertisment ad adsense adlogger