Creare un dispositivo compatibile con Alexa
Indice
Ho realizzato una riproduzione artigianale del famoso reattore arc che si può comandare attraverso i comandi vocali. Usando una determinata libreria possiamo trasformare un ESP8266 in un dispositivo compatibile con Alexa!
Ogni appassionato di fumetti arriverà al punto di calarsi nei panni del suo eroe preferito, il mio è appunto IronMan. L’elettronica serve anche per il divertimento!
Veniamo al dunque e scopriamo i passi per poterlo ricreare:
- Realizzare il circuito elettrico.
- Software di gestione.
- Stampa del modello 3D.
- Assemblaggio.
Il cuore di tutto è l’anello a led WS2812 che viene controllato attraverso un Wemos D1 mini lite ESP8266 che comunica con Alexa utilizzando la rete wifi domestica .
Avevo già spiegato come rendere il Wemos Esp8266 un dispositivo compatibile con Alexa utilizzando la libreria fauxmoESP. Rispetto a quell’articolo bisogna solamente avere l’accortezza di usare l’ultima versione che ad oggi è la 3.4 del 03/04/2021.
la sicurezza che il dispositivo verrà riconosciuto poi da Alexa.
Lo sketch
Per lo sketch mi sono basato sui codici di esempio delle librerie:
- “fauxmoESP_External_Server” per la comunicazione tra Esp8266 e Alexa
- “Adafruit NeoPixel” per l’anello a led WS2812
Vi riporto sotto le parti che si devono e/o possono personalizzare:
- Dovete inserire i dati della vostra rete domestica in:
#define WIFI_SSID "NomeVostraReteWifi"
#define WIFI_PASS "PasswordVostraReteWifi"
- Qui potete cambiare il nome del device, questo verrà poi utilizzato per i comandi verso Alexa, nel codice l’ho semplicemente chiamato “reattore”
fauxmo.addDevice("reattore");
- Qui si possono impostare i parametri del colore con cui la striscia a led si dovrà illuminare (0,0,127 rappresenta il blu)
accendi(strip.Color( 0, 0, 127), 50);
- La funzione accendi si occupa di accendere tutti i led senza ritardo utilizzando una certa intensità
(brightness)
void accendi(uint32_t c, uint8_t wait)
{
if (brightness > 254) brightness = 254;
analogWrite(centralLed, brightness);
//Serial.println("Passo come brightness:");
//Serial.println(brightness);
strip.setBrightness(brightness);
for (uint16_t i = 0; i < strip.numPixels(); i++)
{
strip.setPixelColor(i, c);
strip.show();
//delay(wait);
}
- La funzione colorWipe accende i led in successione
void colorWipe(uint32_t c, uint8_t wait)
{
for (uint16_t i = 0; i < strip.numPixels(); i++)
{
strip.setPixelColor(i, c);
strip.show();
delay(wait);
}
}
Puoi trovare lo sketch completo nell’articolo pubblicato su www.lutritech.it
Qui sotto puoi vedere il risultato finale:
Spero che questo articolo ti sia piaciuto e ringrazio la redazione di Filoconnesso.it per averlo ospitato.
Grazie a tutti!
Ciao Giuseppe
ottimo articolo, da ispirazione per tanti. Solo una curiosità: sarebbe fattibile utilizzare il protocollo mqtt invece che una connessione a alexa/google ?
Marco
Ciao Marco,
ti direi proprio di si. Con Esp8266 ci sono già gli esempi per usarlo come client mqtt.
Nel caso del reattore usare i comandi vocali dava un certo tono in più 😉
Nel prossimo futuro cercherò di portare qualche progettino utilizzando questo protocollo.
Grazie dei complimenti!
Giuseppe