LED
Collegare LED RGB a Raspberry Pi
Il pin più lungo del LED è il common, che sarà un anodo o un catodo a seconda della tipologia del LED.
Verificare la tipologia del LED
- Mettere il multimetro in modalità contatto
- Collegare il multimetro al common e a un altro pin qualsiasi
- Se il LED si illumina quando il pin common è collegato al cavo di ground, allora il common è un catodo.
- Se il LED si illumina quando il pin common è collegato al cavo positivo, allora il common è un anodo
Forward voltage
Il forward voltage è la quantità di volt che il led assorbe e determina quindi, a parità di resistenza, una corrente maggiore.
Metodo rapido: Calcolare la resistenza basandosi sul forward voltage minimo fornito dalle specifiche del led
Metodo esaustivo: Determinare manualmente il forward voltage
- Mettere il multimetro in modalità diodo
- Collegare il multimetro al common e a uno dei restanti pin RGB
- Il valore misurato è il forward voltage per quello specifico colore
Esempio
Red Vf = 1.8V
Green Vf = 2.8V
Blue Vf = 2.8V
Il voltaggio di alimentazione che dobbiamo fornire al LED deve essere maggiore di ogni forward voltage di un singolo colore.
Esempio: VCC = 3.3V (maggiore di 2.8V)
Verificare la corrente tipica sulle specifiche del LED.
Esempio: I = 25mA = 0.025A (per singolo colore)
Nota
Il raspberry pi 4 supporta ufficialmente massimo 16mA per pin e 50mA in totale.
Occorre quindi abbassare la corrente in modo che I < 16mA e 3xI < 50mA
Esempio: I = 10mA = 0.01A
Notare che dimezzando la corrente la differenza luminosa percepita è in realtà molto piccola
Calcolo della resistenza
Dividere la differenza tra VCC e Vf per l'amperaggio stabilito, ottenendo la minima resistenza necessaria.
Formula:
R = (VCC - Vf) / I
Calcolo:
- Red R = (3.3V - 1.8V) / 0.01A = 150ohm
- Green R = (3.3V - 2.8V) / 0.01A = 50ohm
- Blue R = (3.3V - 2.8V) / 0.01A = 50ohm
Collegamento al Raspberry
Collegare a ognuno dei tre pin RGB la relativa resistenza calcolata
Attaccare ogni resistenza a un pin GPIO
Se il common del LED è un anodo, collegarlo a 3v3
Se è un catodo, collegarlo a GND
Installazione software di controllo
Scaricate sul raspberry tutti gli script per led presenti sul git iotaiuto
cd $HOME
mkdir led_scripts
cd led_scripts
# posizionare qui i seguenti file:
# led_init.sh, led_lib.py, led.py, led_server.py
chmod +x led_init.sh
cd /etc/systemd/system
# posizionare qui i seguenti file:
# led.service, led-server.service
sudo systemctl daemon-reload
sudo systemctl enable led.service
sudo systemctl enable led-server.service
# riavviare il sistema
Spiegazione dei file:
led_lib.py è il controllore dei led
led_server.py è un listener di rischieste di controllo dei led
led.py è un handler per eseguire una richiesta di controllo del led manualmente o tramite home assistant
led_init.sh è uno script che monitora lo stato della vpn (e eventualmente di altri servizi) e regola il led di conseguenza
Home assistant script
Modificare il file ~/homeassistant/configuration.yaml aggiungendo:
shell_command: led_ok: python ~/led_scripts/led.py ok led_error: python ~/led_scripts/led.py error
Vedere il file led.py per ulteriori comandi
Restartare home assistant
Ora dalla GUI è possibile aggiungere due script che chiamano i servizi appena creati