====== 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