Wifi RGB iPhone è il primo di una serie di articoli in cui ho voluto esplorare la possibilità di controllare una striscia di led dal mio smartphone.
Se leggi il blog con continuità sai che la luce ed in particolare i led sono la mia passione nel campo dell’elettronica ed il controllo con arduino è un argomento che ritorna spesso tra i miei studi ed approfondimenti.
Ti riporto alcuni dei miei articoli sui led ed arduino se vuoi approfondire l’argomento:
- Lampadario in fibra ottica – elettronica
- Tutorial: Giochi di luce con Arduino
- Arduino, OSC e iPhone
- Rainbow Ring V3 sketch arduino
Il progetto Wifi RGB iPhone
Il progetto nasce da una mia esigenza personale: arredare un abbassamento in cartongesso che ho dovuto realizzare per canalizzare l’aria calda proveniente da una stufa a pellet.
Il cartongesso non è ancora pronto ma l’ordine per la striscia di led è già partito quindi in attesa del corriere mi sono premurato di ricercare una applicazione per iPhone ed Android che potessi utilizzare per il mio progetto.
Ne ho trovate molte dedicate al controllo di strisce RGB quasi tutte proprietarie o legate ad un prodotto specifico.
Cercando nell’applestore mi sono imbattuto in una applicazione “Wifi Controller 2” che sembra essere slegata da un produttore in particolare e che è utilizzata da molti produttori indipendentemente gli uni dagli altri:
essendo gratuita e con un layout gradevole ho provato ad installarla e verificare se potesse essere adeguata al mio progetto Wifi rgb iphone:
ho trovato l’app molto stabile e con alcune caratteristiche davvero interessanti.
Caratteristiche dell’App Wifi Controller 2
La prima caratteristica che mi ha colpito è la possibilità sia di utilizzare il classico controllo wifi rgb iphone con la “rondella arcobaleno” sia di controllare tre distinte funzioni sulle luci ciascuna con un + ed un –
mi riferisco ai tre pulsanti in basso “B”, “S”, “M” che ho inizialmente immaginato di utilizzare per controllare la luminosità del bianco caldo ( Warm White ).
Per avere anche la funzione di controllo del bianco caldo il progetto ha subito la sua prima variazione passando da rgb a rgbw o rgbww dove la w e la ww indicano il warm white, bianco caldo.
Successivamente mi sono accorto che l’app ha anche una seconda schermata che puoi utilizzare per controllare anche solo il bianco:
sono numerose le possibilità di controllo che sto immaginando di poter realizzare con questa app ed arduino.
Un’altra caratteristica interessante è la possibilità di creare delle stanze o ambienti della casa ciascuno con la propria configurazione di rete ( IP e porta ) in modo indipendente:
in questo modo puoi inserire più progetti Arduino nella tua abitazione e controllarli tutti dalla stesa App.
Il funzionamento dell’App wifi
Prima di poter realizzare il codice arduino ho dovuto comprendere come l’app è in grado di comunicare via wifi il primo passo è stato configurare l’app creando un dispositivo “test”, i nomi non sono il mio forte, e configurare al suo interno un IP ed una posta a cui connettersi:
ho scelto l’IP del mio portatile perché ho a disposizione tcpdump per analizzare la comunicazione di rete con l’app.
Compreso che il protocollo utilizzato dall’app è UDP ho realizzato una semplice pagina php che apre un socket udp sul mio portatile e scrive in output quello che gli arriva sulla porta su cui è in ascolto:
il risultato premendo i tasti dell’app è quello che ho riportato nelle figure seguenti:
sopra trovi le corrispondenze tra la corona rgb ed i valori passati al progetto wifi rgb iphone, partendo dall’alto il cerchio invia 255 valori mentre il tuo dito scorre in senso orario, la corrispondenza tra i colori ed i valori devi ricavartela. Nella figura sotto ho riportato la corrispondenza tra la pressione dei tasti presenti in questa schermata:
passa alla schermata successiva, quella in blu, e osserverai che la corrispondenza tra i numeri ed i pulsanti varia in modo che lato arduino, o altro microcontrollore, tu possa intepretare in modo chiaro se stai inviando comandi dalla prima o dalla seconda schermata:
anche il cerchio centrale invia comandi singoliper i 4 lati:
Come ho ricavato tutte queste informazioni ?
per recuperare queste informazioni ho in primo luogo utilizzato tcpdump, un tool fondamentale per le analisi di rete, da cui ho compreso che l’app dialoga in udp con il controllo luci wifi rgb iphone ed ho quindi utilizzato questo programma in php per scrivere a video il risultato della pressione di ciascun tasto:
<?php error_reporting(~E_WARNING); if(!($sock = socket_create(AF_INET, SOCK_DGRAM, 0))) { $errorcode = socket_last_error(); $errormsg = socket_strerror($errorcode); die("Couldn't create socket: [$errorcode] $errormsg \n"); } echo "Socket created \n"; if( !socket_bind($sock, "172.22.123.149" , 5001) ) { $errorcode = socket_last_error(); $errormsg = socket_strerror($errorcode); die("Could not bind socket : [$errorcode] $errormsg \n"); } echo "Socket bind OK \n"; while(1) { echo "Waiting for data ... \n"; $r = socket_recvfrom($sock, $buf, 65535, 0, $remote_ip, $remote_port); $stz = bin2hex($buf); for($i=0;$i<(strlen($stz)-1)/2;$i++) { $e = "00"; $e[0] = $stz[$i*2]; $e[1] = $stz[$i*2+1]; $f = hexdec($e); echo $remote_ip . " [" . $remote_port . "] -- ".$f." \n"; } socket_sendto($sock, "OK " . $buf , 100 , 0 , $remote_ip , $remote_port); } socket_close($sock); ?>
Nei prossimi articoli vedrai anche altre applicazioni che ho analizzato e le app che ho trovato fino ad arrivare alla realizzazione del codice arduino e dell’installazione delle luci nel cartongesso.
12 commenti
1 ping
Vai al modulo dei commenti
Ciao bellissimo blog e progetti volevo chiederti di considerare l’ idea di fare un progetto con ecoduino visto che conosci la maggior parte dell’ universo di arduino, lo apprezzerei molto
Autore
Ciao Michele,
se riesco a procurarmi un ecoduino ci provo, tutto il materiale per i miei tutorial lo acquisto o mi viene donato da appassionati che vorrebbero leggere articoli dedicati.
Purtroppo neanche io saprei dove procurarmelo, visto che sarebbe più comodo rispetto a riprogettare arduino uno
Autore
Ciao Michele, non è in vendita ?
So che c’è su robotdomestici.it
Autore
Bene puoi acquistarla da loro.
Ciao, ci sono novità riguardo lo sviluppo di uno sketch x arduino che utilizzi questo software?
Autore
Ciao Michael,
tra i mille impegni procede un po a rilento.
Se ti va di iniziare a sviluppare il progetto e poi condividerlo posso pubblicare quello che realizzi.
Salve Michele, complimenti per il tutorial, molto interessante, sono già riuscito a implementare il reader udp direttamente con Arduino, se può servire ti confivido il codice, mi chiedevo se fossi riuscito a capire come convertire da un singolo intero i 3 valori RGB
Autore
Ciao Marco,
capita a molti di confondersi con Michele, un professore eccellente che gestisce un suo blog su arduino, io sono Mauro 🙂 ma non preoccuparti, come dicevo, capita.
Purtroppo non penso ci sia una formula utilizzabile e dovremmo procedere con la decodifica empirica.
Ciao Mauro complimenti per il blog. io ho un controller rgb identico al tuo e ti volevo chiedere riesco a comandarlo tramite un programma che mandi comandi tcp udp ecc senza la sua app nativa ? ti spiego meglio io uso commandfusion per comandare (arduino -apple tv – xbmc- smart tv- ecc ) non so se conosci questo programma e mi piacerebbe integrare anche questo controller.
Autore
Ciao Marco,
non conosco il programma di cui mi scrivi, ho dato un occhio alla pagina di uno dei vendor ma non posso dire di conoscerlo.
Io sto lavorando all’uso dell’app “wifi controller 2” per usarla con Arduino potresti sfruttare lo stesso ragionamento per “insegnare” all’app commandfusion come interagire con il tuo controller.
[…] Wifi RGB iPhone […]