2

Imposta sequenza di colori per strip led RGB da Arduino connesso a database MySQL con ESP8266

In questa pagina vediamo come sfruttare la potenza del modulo ESP8266 per permettere ad Arduino di connettersi ad un database MySQL dal quale verrà selezionata e successivamente impostata una sequenza di colori per una (o più) strip led RGB. I colori saranno impostati dall’utente tramite interfaccia web (disponibile in quasi tutti i dispositivi mobili e non). Queste sequenze di colori potranno essere infine salvate per essere utilizzate nuovamente in futuro.

Questo può essere usato in acquari, mobili, negozi, e molto altro.

 

Prima di cominciare vediamo come sarà l’effetto finale (io l’ho adattato al mio acquario, ho aggiunto anche un termometro così da poter salvare anche la temperatura dell’acqua e da poter attivare automaticamente una ventola di raffreddamento in caso di bisogno).

 

Risultato finale nel mio acquario

Risultato finale nel mio acquario

 

Visto come sarà il risultato finale iniziamo.

Il progetto è stato realizzato con un Arduino Nano per ridurre gli spazi e, a far ciò, ho incontrato alcune difficoltà. Proprio per questo illustrerò il progetto per questa scheda, se userete altre schede dovrete far solo pochi passaggi in meno.
Iniziamo dicendo che per questo progetto non è richiesta una grande spesa, anzi, facendo scelte oculate, si può spender davvero poco.

Per questo mio progetto ho usato:

  1. 1 Arduino Nano Compatible;
  2. Strip led RGB (io ho usato quelle IKEA e ne ho usate solo due delle 4);
  3. 3 transistor C547B;
  4. 1 trasformatore 12V (se prendete i led dell’IKEA lo avrete già);
  5. 1 modulo ESP8266;
  6. 1 regolatore di potenza 3.3V (ad es LD33V) – Questo serve solo per Arduino Nano e solo se riscontrate i problemi dei quali vi parlerò dopo;
  7. 1 database MySQL;
  8. 1 pagina web su un sito al quale potete accedere e del quale avete i dati di accesso;
  9. 1 timer esterno (tipo questi);
  10. 1 altro Arduino per debugging (facoltativo).

Prima di tutto vediamo il circuito, poi ne discuteremo.

schema circuito

schema circuito

 

Strip led RGB

Come già detto, io ho usato quelle IKEA e ne ho usate solo due delle 4. Ho collegato le due strip led in modo tale da formarne una sola.

Vanno bene qualsiasi strip led rgb da 12V però.

Una volta prese, vedrete che saranno segnati (in più o meno piccolo) i vari collegamenti (R,G,B e +12V).

Teoricamente si possono usare tutte le strip e in numero che si vuole ma attenzione a non esagerare perchè potrebbero non avere una luminosità fissa o, addirittura, potrebbero non accendersi.

 

3 transistor C547B

Uno per ciascun colore (vedete nello schema come collegarli, altrimenti guardate le note del produttore).

 

Trasformatore 12V

Se prendete i led dell’IKEA lo avrete già incluso, in ogni caso questo ci servirà per alimentare tutto il progetto. State attenti però a NON collegarlo al pin da 5V di Arduino. Dovrete collegarlo solo al pin Vin. Gli altri pin non sopportano questa tensione. Attenzione anche a NON invertire la polarità.

 

Modulo ESP8266

Questo è un modulo davvero interessante. Si può dotare praticamente ogni nostro progetto di una connessione ad internet WiFi. E il tutto si può ottenere a prezzi davvero bassi.

Questo si interfaccia ad Arduino tramite RX e TX e può essere comandato con i comandi AT. Se vuoi avere una panoramica dei comandi che si possono usare ti rimando a questo link.

Una cosa che ho notato è che però (almeno nel mio caso) il modulo non riusciva a connettersi oppure non riceveva tutti i dati.

Per questo nello sketch che poi vi illustrerò e che potrete scaricare ho pensato di inserire una funzione che rileva questi errori e fa riavviare Arduino, in questo modo potrà ripartire e ricevere tutti i dati.

Funziona a 3.3V, non a 5V!

Acquista il modulo.

 

A cosa serve il regolatore di potenza (ad es LD33V)?

Usando un Arduino Nano, specie se non originale, il Pin 3.3V non è costante e non vi sarebbe la tensione necessaria a far funzionare il modulo.

In questo caso possiamo usare un regolatore di tensione che abbassa la tensione a 3.3V. E quindi possiamo usare il pin 5V oppure più semplicemente possiamo usare la tensione a 12V che già alimenta il nostro circuito.

 

Database MySQL

Ci occorre un database MySQL sul quale caricheremo e dal quale Arduino preleverà le varie sequenze di colori.

Per fare questo creiamo una tabella dal nome tabella_colori con questa struttura:

tabellaRGBesp

 

Mi raccomando, usa gli stessi nomi (attenzione a maiuscole-minuscole), imposta come chiave primaria SOLO il campo ID e usa gli stessi tipi di campo.

 

Timer 24h esterno

Grazie a questo timer da 24 ore (tipo questo dell’ikea, per dare un’idea) potrai evitare di tener sempre acceso Arduino e potrai così risparmiare corrente.

Ho optato per un timer esterno poichè consuma poco ed era di semplice utilizzo.

Con questi timer si può impostare l’orario e si possono impostare le fasce orarie (solitamente multiple di mezz’ora) nelle quali Arduino sarà attivo. In questo modo potrai ad esempio impostare come fascia di funzionamento dalle 22 alle 24 e in questo arco temporale Arduino si attiverà e imposterà la sequenza di colori scelta.

 

Pagina PHP grazie alla quale Arduino riceverà i dati

Puoi scaricare sketch e varie pagine php cliccando qui sotto.

Imposta sequenza di colori per strip led rgb da arduino connesso a database MySQL con ESP8266
7.4 KiB
290 Downloads
Dettagli

 

Come vedremo poi quando parleremo dello sketch, Arduino userà il modulo ESP8266 per connettersi ad internet. Gli occorrerà quindi una pagina dalla quale potrà ottenere la sequenza di colori.

Per questo serve questa pagina get_rgb.php (che troverete nel file zip del progetto), che dovrete caricare sul vostro sito internet (dovrete ricordarvi il percorso del file). Grazie ad essa Arduino otterrà una stringa del tipo:

valori

 

nella quale sapremo quanti sono i valori e quali.

I valori sono uniti ma sarebbero vari blocchi da 9. Ciascun blocco rappresenta i 3 valori RGB. Ad esempio il primo che si vede nell’immagine: 19,128,217 equivale in esadecimale a #1380D9 e equivale ad un azzurro scuro.

La pagina infatti oltre a mostrare la sequenza di colori in formato RGB acquisisce i valori dal database (dovrete quindi modificare i dati che trovate nelle prime righe della pagina in questione con i dati del vostro database) che sono in formato esadecimale con il # davanti, elimina il # e converte in decimale le varie componenti RGB. Per come è impostato lo sketch di Arduino infine, fa in modo che tutte le componenti abbiano 3 cifre (aggiungendo gli zeri davanti) e, siccome Arduino è impostato per ricevere almeno 10 valori, se il numero di valori dovesse essere minore di 10 allora inserisce gli zeri rimanenti. In ogni caso gli zeri non saranno considerati da Arduino quando imposterà i colori.

 

Modifiche da fare nel file get_rgb.php:

//DATI DATABASE

$username="username";

$password="password";

$db="database";

$host="host";

 

N.B. Una piccola nota riguardo questo ultimo fatto

Abbiamo appena detto che devono esservi almeno 10 valori. In realtà ho notato che con più di 10 o 11 valori Arduino non riesce quasi mai a riceverli tutti, forse per un numero massimo di caratteri che esso può ricevere, o forse è un problema che ho solo io, quindi in tal caso potrete modificare lo sketch e il codice php per usare più di 10 valori. In ogni caso, per come è impostato lo sketch e siccome ciascun colore sarà fisso per 30 minuti, 10 valori equivalgono a 5 ore di funzionamento!

 

Dove caricare pagine PHP e come ottenere il database?

Se non vuoi pagare per avere un dominio personale oppure per avere un database MySQL puoi ottenere entrambi registrando un dominio gratuito con altervista (clicca qui). Registra un dominio (scegli un nome che non sia già esistente) e il gioco è fatto. Ti lascio questo link per avere un supporto di Altervista dove otterrai le risposte ad ogni tuo domanda (quali sono i paramentri di accesso al Database, ecc).

Una volta registrato il dominio dovrai caricare semplicemente le pagine PHP che trovi all’interno del file zip scaricabile da questa pagina. Caricale dove vuoi all’interno del tuo dominio, l’importante è che ti ricordi il percorso deli vari file. Poi vedremo come impostare lo sketch (nel capitolo sketch qui sotto).

 

1 altro Arduino per debugging (facoltativo)

Nello schema del circuito compare un secondo Arduino, esso è facoltativo. Serve solo per debuggare il tutto.

L’Arduino Nano è ciò che vi serve per far funzionare il progetto, il secondo Arduino vi serve in fase di test per vedere cosa effettivamente viene inviato/ricevuto.

Sketch per debug

Se volete effettuare il debug usando il secondo Arduino come indicato nello schema del circuito allora dovrete caricare nel secondo Arduino lo sketch presenze nello zip del progetto nella cartella “debugger_arduino”.

 

Sketch “principale”

Per quanto riguarda lo sketch abbiamo praticamente detto tutto.

Lo sketch da inserire è nella cartella “esp_mysql_luce_rgb_simone”.

Troverete i commenti nelle righe di codice. In ogni caso una volta attivo, Arduino cercherà di connettersi al vostro sito web (dovrete inserire SSID, password wifi, server, percorso del file get_rgb.php) e, una volta connesso, acquisirà la sequenza di colori attuale (nel database è “marchiata” come eseguire=1) e, dopo aver suddiviso la stringa, accenderà i led del colore scelto. Dopo 30 minuti (c’è una funzione in sostituzione al delay che non era preciso e che, specialmente con tempi lunghi di attesa, si blocca) cambia il colore (se diverso da quello precedente). Una volta terminati i colori attende che il timer spenga Arduino. Se non si vuole usare il timer si può sostituire quest’attesa infinita del while(1) con altro.

Siccome a volte qualcosa fallisce e non va a buon fine ho predisposto una funzione che, se rileva qualche errore, riavvia Arduino.

Puoi scaricare sketch e varie pagine php cliccando qui sotto.

Imposta sequenza di colori per strip led rgb da arduino connesso a database MySQL con ESP8266
7.4 KiB
290 Downloads
Dettagli

 

Modifiche da fare nello sketch (righe 15-18):

#define SSID "tuo_ssid" //il nome del tuo SSID
#define PASS "password" //inserisci la password

#define SERVER "server" //inserisci il server (es. www.dallaf.it)
String path_page = "percorso_pagina"; //Inserisci il percorso della pagina get_rgb.php (es. /test/get_rgb.php)

 

Qui dovremo inserire rispettivamente:

  • il nome della rete;
  • la password della rete
  • il nome del server (ad esempio io ho inserito www.dallaf.it, questo dominio. Solo il dominio, mi raccomando!)
  • il percorso del file get_rgb.php. Ad esempio se hai inserito il file in una cartella chiamata test che si trova nella cartella principale (nella HOME, possiamo dire) del vostro dominio allora dovrai inserire /test/get_rgb.php compresi lo slash (/) iniziale e il nome del file (puoi anche cambiarlo, l’importante è che corrisponda al nome del file che hai inserito nel sito web).

 

Interfaccia web per gestire le proprie sequenze di colori

Coming soon

Per il momento è disponibile solo una semplice interfaccia (led_rgb_interfaccia.php) dalla quale è possibile caricare massimo 4 colori, si può scegliere il nome della sequenza ed è necessaria una password per caricare la sequenza sul database (password e parametri del database si devono impostare in led_rgb_carica.php). Entrambi i file vanno caricati sul sito web e si deve accedere a led_rgb_interfaccia.php per caricare i colori. Presto però sarà disponibile l’interfaccia web completa grazie alla quale sarà possibile visualizzare la sequenza di colori attiva, salvare nuove sequenze, modificare quelle passate, eliminarle, aggiungere un colore per volta e tanto altro. Tutto questo potrà essere fatto senza dover modificare lo sketch di Arduino oppure modificare i valori o il database. Dovrai semplicemente sostituire la pagina php che troverai adesso con quella che troverai in futuro. Tutto in un click quindi.

Puoi scaricare sketch e varie pagine php cliccando qui sotto.

Imposta sequenza di colori per strip led rgb da arduino connesso a database MySQL con ESP8266
7.4 KiB
290 Downloads
Dettagli

 

L’interfaccia attuale ha questo aspetto:

luci_interfaccia_simple

 

N.B. devi usare un browser che supporti l’HTML5 poichè solo con questi possono essere usati input type color e simili!

 

 

Modifiche da fare nel file led_rgb_carica.php:

 //DATI DATABASE
 $username="username";
 $password="password";
 $db="database";
 $host="host";
 
 //SCEGLI LA PASSWORD DA USARE PER CARICARE LE LUCI
 $pasw_carica = "password_da_usare_nel_form";

 

qui troviamo anche (l’ultima riga delle modifiche soprastanti) il modo di impostare una password per poter caricare sul database le sequenze di colori.

 

Per poi impostare i colori sarà sufficiente andare al percorso del file led_rgb_interfaccia.php.

Ad esempio:

www.tuosito.it/led_rgb_interfaccia.php

 

Se vuoi essere aggiornato quando sarà disponibile diventa fan della mia pagina Facebook oppure torna a visitare questo sito web. 

 

Share This:

Simone

Studente Data di nascita: 12/07/1990 - Parma, IT Hobbies: Informatica, acquariofilia, viaggi, tecnologia, aria aperta, sport, web.

2 Comments

  1. Salve , vorrei realizzare il tuo progetto “Imposta sequenza di colori per strip led RGB da Arduino connesso a database MySQL con ESP8266” e desideravo un chiarimento . Oltre il Modulo ESP8266 nello Schema Elettrico è presente un altro Modulo che se non sbaglio non è citato . Serve per programmare ESP8266 ?

    Grazie e Buon Lavoro. 🙂

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.