Home » Progetti » Lampada Alexa – miniprogetto di Matteo M.

Lampada Alexa – miniprogetto di Matteo M.

postato in: Progetti

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 🙂

Una lampada faidate con esp8266, un led rgb ed Alexa

Lampada Alexa

Occorrente

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

  1. Scaricare l’applicazione dall’ App store / Play store
  2. Creare un account Amazon o accedere
  3. Aprire la schermata dispositivi dal menù inferiore
  4. Cliccare su aggiungi dispositivi
  5. Scorrere in fondo alla lista e premere su “Altro”
  6. Cliccare su ricerca dispositivi
  7. Attendere 45 secondi circa
  8. Seguire la configurazione guidata