Ultimamente mi sono concentrato sulla domotica e volevo simulare il comportamento di Alexa con luci smart su un Raspberry vero e proprio!
Andiamo subito al sodo:

Strumenti necessari:

  • Raspberry Pi
  • Scheda di memoria SD (per installare il sistema operativo)
  • Dispositivi connessi da controllare come lampadine e se volete termostati, sensori, ecc...
  • Relè per controllare i dispositivi connessi: possono essere necessari per interfacciare i dispositivi connessi con il Raspberry Pi.
  • Cavi e adattatori

Importante verificare la compatibilità dei dispositivi con il Raspberry Pi!

Rendere una lampadina smart?

Per cominciare bisogna collegare bene i terminali del relè ai pin di uscita del Raspberry Pi e i terminali della lampadina al relè, mi raccomando rispettando la polarità dei terminali e di utilizzando i cavi adatti.
Successivamente installate il pacchetto "RPi.GPIO" sul Raspberry, molto utile per utilizzare i pin di uscita del Raspberry Pi per controllare il relè.
Il prossimo passo sarà quello di scrivere un codice in Python usando la libreria RPi.GPIO per controllare un relè e accendere/spegnere una lampadina:

import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
relay_pin = 18
GPIO.setup(relay_pin, GPIO.OUT)
def turn_on_light():
    GPIO.output(relay_pin, GPIO.HIGH)
    print("Lampadina accesa")
def turn_off_light():
    GPIO.output(relay_pin, GPIO.LOW)
    print("Lampadina spenta")
turn_on_light()
time.sleep(1)
turn_off_light()
GPIO.cleanup()

Ovviamente se avete manualità potete modificare il codice e aggiungere un infinità di funzioni questo è solo un esempio!
Vorrei illustrare anche come impostare i COMANDI VOCALI, bene o male quello che fa Alexa!
In questo caso io ho utilizzato Google Speech Recognition ma ne esistono anche altri come PocketSphinx.
Ecco il codice in Python:

import RPi.GPIO as GPIO
import speech_recognition as sr
GPIO.setmode(GPIO.BCM)
relay_pin = 18
GPIO.setup(relay_pin, GPIO.OUT)
r = sr.Recognizer()
while True:
    with sr.Microphone() as source:
        print("Ascolto...")
        audio = r.listen(source)
    command = r.recognize_google(audio).lower()
    print("Hai detto: " + command)
    if "accendi" in command:
        turn_on_light()
    elif "spegni" in command:
        turn_off_light()
def turn_on_light():
    GPIO.output(relay_pin, GPIO.HIGH)
    print("Lampadina accesa")
def turn_off_light():
    GPIO.output(relay_pin, GPIO.LOW)
    print("Lampadina spenta")

Il codice utilizza un ciclo while per ascoltare continuamente i comandi vocali e controllare se sono "accendi" o "spegni".
Importante verificare sempre la connessione del relè e delle lampadine prima di eseguire il codice!
In seguito potete collegare il vostro script ad un interfaccia per controllare la lampadina!
Io ho preferito crearla con la libreria Tkinter:

import RPi.GPIO as GPIO
from tkinter import *
GPIO.setmode(GPIO.BCM)
relay_pin = 18
GPIO.setup(relay_pin, GPIO.OUT)
def turn_on_light():
    GPIO.output(relay_pin, GPIO.HIGH)
    print("Lampadina accesa")
def turn_off_light():
    GPIO.output(relay_pin, GPIO.LOW)
    print("Lampadina spenta")
root = Tk()
root.title("Interfaccia per la lampadina")
on_button = Button(root, text="Accendi", command=turn_on_light)
off_button = Button(root, text="Spegni", command=turn_off_light)
on_button.pack()
off_button.pack()
root.mainloop()

In questo esempio si vanno a creare due pulsanti per accendere/spegnere la lampadina!

In conclusione molti strumenti che possono essere considerati "semplici" come appunto lampadine si possono trasformare in veri e propri gadget "smart"!
Interessante il fatto che si potrebbero integrare anche sensori di temperatura, umidità, movimento, porte e finestre, pulsanti, prese intelligenti e così via.
La parte 2 con il controllo del termostato la trovate qui!
Spero di esservi stato utile, se avete domande non esitate a chiedere!

Consumi:

Consumo Raspberry Pi con lampada a LED: 3 W + 6 W = 9W
Consumo di una lampada a incandescenza: 60W

    Samueleex davvero interessante!! Di hardware in realtà non me ne intendo molto, ho sempre più lavorato a livello unicamente software, anche se devo dire che questo ambito... Mi affascina! In passato mi ero fatto prestare da un amico un vecchio modello di Raspberry con l'idea di programmare qualcosa in C/C++, avendo tutti i sensori (volevo fare qualcosa di analogo a quanto hai fatto tu in Python). Sta di fatto che, passando il tempo e non essendomi mai dedicato seriamente a ciò, l'ho restituito al mio amico senza aver combinato nulla! 😀

    Powered by: FreeFlarum.
    (remove this footer)