Interfacciare i propri piccoli progettti con l’interprete vocale Alexa è sorprendentemente semplice, ma di sicuro effetto! Vi proponiamo un progetto di Matteo che prova a pilotare un LED RGB con Alexa.
Matteo ha iniziato il suo percorso con i laboratori minimakers offerti alle scuole elementari (e medie) di Paderno D. e oggi, che oggi è in seconda media, di strada ed esperimenti ne ha fatti parecchi 🙂
Lampada Alexa
Occorrente
- Scheda esp8266 (Nodemcu)
- Led RGB
- Resistenze da 100 ohm
- Jumper (comunemente chiamati cavetti)
- Breadboard (Opzionale)
- Copri lampada (opzionale)
Hardware
L’ hardware di questo progetto è molto semplice. Si tratta di collegare il led RGB alla scheda esp8266 (il cervello del nostro progetto).
Collegate con molta attenzione il led senza fare contatto tra i vari “gambetti”
Ricordatevi di mettere tra il cavo e il pin del led una resistenza di circa 100 Ω (ohm)
Inserire immagine circuito
Software
Il software è leggermente più complesso, ma non spaventavi, in pochi passaggi capirete tutto.
Includere le schede nell’ IDE
Installate l’arduino IDE se non lo avete già fatto.
Dalla schermata principale andate su File>impostazioni.
Inserite la stringa http://arduino.esp8266.com/stable/package_esp8266com_index.json nel campo “URL aggiuntivo per il Gestore Schede“. Quindi, fate clic sul pulsante “OK“.
Ora vedrete che all’interno del percorso strumenti>scheda potrete selezionare Generic ESP8266 Module che prima non compariva in elenco. Selezionatelo e sarete pronti a programmare le schede con ESP8266
Includere ESPALEXA
Per installare espalexa vi basterà scaricare il codice in formato .zip da https://github.com/Aircoookie/Espalexa
Ed inserirlo nella cartella arduino/libraries.
Decomprimete il file .zip e riavvate l’arduino ide.
Siete pronti per caricare il codice.
Il codice + personalizzazioni
Il codice da inserire nell’editor è il seguente:
/*
_ _ _ _
| | | | | | | |
| | __ _ _ __ ___ _ __ __ _ __| | __ _ ___ _ __ ___ __ _ _ __| |_ ___ ___ _ __ __ _| | _____ ____ _
| | / _` | '_ ` _ | '_ / _` |/ _` |/ _` | / __| '_ ` _ / _` | '__| __| / __/ _ | '_ / _` | |/ _ / / _` |
| |___| (_| | | | | | | |_) | (_| | (_| | (_| | __ | | | | | (_| | | | |_ | (_| (_) | | | | | (_| | | __/> < (_| |
|________,_|_| |_| |_| .__/ __,_|__,_|__,_| |___/_| |_| |_|__,_|_| __| ______/|_| |_| __,_|_|___/_/___,_|
| |
|_| V1, 2022 by Matteo Mauri
*/
#ifdef ARDUINO_ARCH_ESP32
#include <WiFi.h>
#else
#include <ESP8266WiFi.h>
#endif
#define ESPALEXA_ASYNC
#include <Espalexa.h>
// *Lascia invariato*
boolean connectWifi();
// *Lascia incariato*
void colorLightChanged(uint8_t brightness, uint32_t rgb);
// Cambia con le tue credenziali
const char* ssid = "nome-wifi";
const char* password = "password-wifi";
boolean wifiConnected = false;
Espalexa espalexa;
void setup()
{
Serial.begin(115200);
// Initialise wifi connection
wifiConnected = connectWifi();
if (wifiConnected) {
espalexa.addDevice("Nome-Lampada", colorLightChanged);
espalexa.begin();
} else
{
while (1) {
Serial.println("Cannot connect to WiFi. Please check data and reset the ESP.");
delay(2500);
}
}
}
void loop()
{
espalexa.loop();
delay(1);
}
//the color device callback function has two parameters
void colorLightChanged(uint8_t brightness, uint32_t rgb) {
//do what you need to do here, for example control RGB LED strip
if (brightness) {
Serial.print(", Red: ");
Serial.print((rgb >> 16) & 0xFF);
analogWrite(0, (rgb >> 16) & 0xFF); // Led rosso
Serial.print(", Green: ");
Serial.print((rgb >> 8) & 0xFF); // Led verde
analogWrite(4, (rgb >> 8) & 0xFF);
Serial.print(", Blue: ");
Serial.println(rgb & 0xFF); // Led blu
analogWrite(5, (rgb & 0xFF));
}
else {
// spegnimento
digitalWrite(0,0);
digitalWrite(4,0);
digitalWrite(5,0);
}
}
// Funzione da non modificare
boolean connectWifi() {
boolean state = true;
int i = 0;
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.println("");
Serial.println("Connecting to WiFi");
// Wait for connection
Serial.print("Connecting...");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
if (i > 40) {
state = false; break;
}
i++;
}
Serial.println("");
if (state) {
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
else {
Serial.println("Connection failed.");
}
return state;
}
Per quanto riguarda le personalizzazioni dall’applicazione “Amazon Alexa” è possibile cambiare il nome del dispositivo o includerlo in un gruppo.
Inoltre se cercate dei copri lampada originali e avete una stampante 3D su siti come https://www.thingiverse.com/ trovate tanti modelli originali.
Io per esempio ho stampato questo: https://www.thingiverse.com/thing:2955930.
Come aggiungere il dispositivo sull’App Alexa
- Scaricare l’applicazione dall’ App store / Play store
- Creare un account Amazon o accedere
- Aprire la schermata dispositivi dal menù inferiore
- Cliccare su aggiungi dispositivi
- Scorrere in fondo alla lista e premere su “Altro”
- Cliccare su ricerca dispositivi
- Attendere 45 secondi circa
- Seguire la configurazione guidata