Il pin più lungo del LED è il common, che sarà un anodo o un catodo a seconda della tipologia del LED.
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
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)
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
Dividere la differenza tra VCC e Vf per l'amperaggio stabilito, ottenendo la minima resistenza necessaria.
Formula:
R = (VCC - Vf) / I
Calcolo:
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
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
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