| In
questa pagina troverai programmi per alcune periferiche, che
non trovano spazio in una categoria specifica, ma che
comunque meritano di essere sperimentati, quali un sensore
LDR (fotoresistenza, che misura la luminosità ambientale,
oppure una serie di sensori che usano tutti la stessa
scheda, ed hanno uscite sia analogiche che digitali. |
![]() |
![]() I sette sensorianalogico/digitali che condividono la stessa scheda e la medesima programmazione. Ecco
una breve descrizione sintetica dei sette sensori.
Sulla scheda di ognuno è presente un trimmer multigiro, che serve a settare il livello di soglia; il led appena sotto il trimmer si accende quando si è superato questo livello. C'è un altro led sul lato opposto che certifica la presenza dell'alimentazione. Ogni scheda ha un'uscita digitale (DO, valori: 0 o 1) e una analogica (AO, valori da 0 a 1023).
|
| |
Il.modulo
LDR che ho assemblato su un vecchio modulo a 3 pin, tipo
KY-004
|
Il sensore LDR (luminosità) usato abitualmente con i microcontroller, quali Arduino, ESP01, ESP8266, ESP32 è conosciuto con la sigla di KY-018, ed un modulo a tre pin, con una fotoresistenza, una resistenza,ed eventualmente un led a indicarne il funzionamento. Purtroppo il modulo in questa configurazione non funziona con il Raspberry, dando dei risultati inconsistenti. Documentandomi, mi sono reso conto che deve utilizzare diversi componenti. Infatti è necessario usare la solita fotoresistenza, un terminale verso la tensione di 3,3v, l'altro andrà al GPIO di segnale del Raspberry. Su questo lato deve essere connesso il connettore positivo di un condensatore elettrolitico da 1/3.3 mF e dall'altra al GND (massa). Questa semplice configurazione permette di funzionare correttamente. |
![]() |
|
| |
|
|
| |
| Come inserire il modulo LDR e schede di sensori vari sulla BDS |
| |
![]() |
Il sensore LDR verrà installato sul connettore DG1 |
|
I sette sensori su scheda vanno inseriti sullo zoccolo AD1A. Funzionano perfettamente a 3,3v. Per cui non utilizzare la tensione a 5v. Potrebbe danneggiare il Raspberry! | ![]() |
| |
| |
|
|
| |
| La creazione dell'ambiente virtuale e l'inserimento delle librerie necessarie |
| Ipotizziamo che sul desktop del proprio Raspberry si crei una cartella "Projects" e all'interno una sottocartella "encjoy" in cui creeremo l'ambiente virtuale (che chiameremo "yoy "), le librerie necessarie e i programmi. Nota: naturalmente i nomi dati alle sottocartelle possono essere variati a piacere. Postulando che si siano create le cartelle indicate, si può iniziare con la programmazione. Aprire un terminale (la quarta icona in alto a destra) e digitare quanto segue:cd Desktop/Projects/vari per spostarsi nella cartella "vari"; python3 -m venv var per creare l'ambiente virtuale "var "; source var/bin/activate per attivare l'ambiente virtuale: apparirà joy) all'inizio della nuova riga; A questo punto, si possono salvare all'interno dell'ampbiente virtuale le due librerie necessario, con i comandi: "pip3 install RPi.GPIO" e "pip3 install GPIOZERO". Ma c'è anche una via alternativa, che vale per tutti gli ambienti virtuali: eseguire il seguente comando per utilizzare le librerie già presenti con l'installazione di Python: digitando il comando "python -m venv --system-site-packages var" (al posto di "env" si può inserire il nome dell'ambiente virtuale preferito. In questo caso sarà poi sufficiente installare solo le librerie specifiche per i vari sensori, guadagnando in semplicità e risparmio di occupazione di scheda SD o di disco. Nota: nel caso siano richieste librerie specifiche, è necessario creare l'ambiente virtuale. |
| |
|
|
| Altri
progammi che usano il sensore KY-28 |
Clicca qui per altri programmi che usano KY-028 (temperatura digitale) |
|
|
| Programmi
per il modulo LDR |
Il modulo LDR può essere utile per verificare, per esempio, la mancanza della tensione elettrica, accendere una lampada di emergenza, attivare un allarme; ridurre o aumentare la potenza delle luci di una sala, ecc. |
| Il primo programma: rilevamento dati,
accensione di un led |
Il primo programma per il modulo LDR misura l'inensità della luce e la mostra sul monitor del Raspberry. Se il valore è superiore a una certa soglia (300) le luci sono accese, e non intraprende alcuna attività; altrimenti segnala che le luci sono spente e accende un led. Il sensore è inserito su DG1 (GPIO19) e il led su LED5 (GPIO5). Se lo si desidera, in parallelo al led, su DG5 si può collegare un relè, che può pilotare una luce (o serie di luci) collegate alla rete elettrica. |
![]() |
Clicca qui per scaricare il programma in formato ".zip" Clicca qui per visualizzare il programma in formato testo. Se stai eseguendo queste operazioni direttamente dal Raspberry, puoi scaricare e scompattare direttamente il programma nella cartella "Desktop/Projects/vari/" e lanciarlo con il seguente comando: "python ldr1.py" Controllare di aver attivato l'ambiente virtuale e scaricato le librerie necessarie. |
|
|
| Il secondo programma: rilevamento dati, accensione di due led |
Questo programma è semplicemente un'evoluzione del programma precedente: non ha solo una scelta luci accese/luci spente, ma introduce una terza scelta, "luci basse", in questo modo si può intervenire sulla luce ambientale con maggiore gradualità. Posizione dei componenti:
Naturalmente
in parallelo a LEDe si può connettere un relè su DG2; |
![]() |
Clicca qui per scaricare il programma in formato ".zip" Clicca qui per visualizzare il programma in formato testo. Se stai eseguendo queste operazioni direttamente dal Raspberry, puoi scaricare e scompattare direttamente il programma nella cartella "Desktop/Projects/ssd280" e lanciarlo con il seguente comando: "python bme280ssd.py" Controllare di aver attivato l'ambiente virtuale e scaricato le librerie necessarie. |
|
|
| Programmi per i moduli analogico/digitali |
Come già anticipato, queste sette schedine sono interessanti, sia perché coprono divers esigenze (sensori acistici, magnetici, di fiamma, di temperatura, di contatto; sia perchè possiedono due tipi di uscita, sia digitali che analogiche. Raspberry nativamente non ha ingressi analogici, ma sulla nostra BDS è presente un ICC MCP3008, che offre ben 8 ingressi analogici. Poichè le schede hanno tutti la stessa struttura, i programmi proposti possono essere utilizzate indifferentemente per tutti i moduli, modificando semplicemente le scritte all'interno degli sketch. L'unico sensore che è un po' particoloare è il sensore di temperatura digitale KY-028, per cui sono stati scritti anche programmi personalizzati. |
|
![]() Come si vede, in questo caso il programma è settato per il sensore sul campo magnetico (riquadro verde). Mettendo il simbolo "#" davanti a questa print e togliendolo su un altra linea, avremo un altra risposta, adeguata al sensore usato. |
| Il primo programma: rilevamento del segnale digitale |
Questo primo programma legge i dati del sensore digitale; se il segnale è sopra il livello di soglia, sul monitor del Raspberry apparirà il messaggio: "Rilevato suono/contatto, ecc" e si accnderà il led LED1 (GPIO21); se il segnale è sotto il livello di soglia, apparirà il messaggio "Nessun rilevamento" e si accenderà in alternativa il led LED3 (GPIO19). Il sensore è posto sullo zoccolo AD1/a, che ha un ingresso digitale (GPIO16) e uno analogico (A5), non utilizzato in questo primo programma. MNaturalmente in parallelo ai led è possibile inserire un relè, in modo attivare una luce, un allarme, un condizionatore, ecc. |
![]() |
Clicca qui per scaricare il programma in formato ".zip" Clicca qui per visualizzare il programma in formato testo. Se stai eseguendo queste operazioni direttamente dal Raspberry, puoi scaricare e scompattare direttamente il programma nella cartella "Desktop/Projects/ssd280" e lanciarlo con il seguente comando: "python bme280ssd.py" Controllare di aver attivato l'ambiente virtuale e scaricato le librerie necessarie. |
|
|
| Il secondo programma: rilevamento del segnale digitale e analogico |
Il secondo programma differisce dal primo semplicemente perché legge alche il valore digitale, che stampa sul monitor del Raspberry. Tutte le altre caratteristiche (posizioni del sensore, dei led, ecc.) sono esattamente identici al programma precedente. ![]() Le
righe necessarie per stampare i valori analogici e
digitali sullo schermo.
|
![]() |
Clicca qui per scaricare il programma in formato ".zip" Clicca qui per visualizzare il programma in formato testo. Se stai eseguendo queste operazioni direttamente dal Raspberry, puoi scaricare e scompattare direttamente il programma nella cartella "Desktop/Projects/vari" e lanciarlo con il seguente comando: "python vari1a.py" Controllare di aver attivato l'ambiente virtuale e scaricato le librerie necessarie. |
|
|
| Il terzo programma: rilevamento del segnale digitale con allarme |
![]() |
![]() Le righe di programma che verificano i vari casi gestiti dal programma. Nell'immagine sulla sinistra si vede il momento di passaggio dal superamento della soglia al ritorno al livello inferiore |
|
|
| Il quarto programma: ---- |
![]() |
![]() |
|
|
| Il
quinto programma: temperatura digitale con KY-028 |
Questo
programma è stato sviluppato espressamente per il sensore di
temperatura digitale KY-028, perché è interssante sapere non
solo che si è superata una soglia, ma anche di sapere a che
temperatura ciò avviene! Non credo che ci sia per Raspberry
una libreria specifica per questo sensore, per cui
trasformare il "grezzo" dato analogico in temperatura
richiede un certo numero di passaggi, e
l'ho ottenuto trasportando e adattando il codice reperito
per Arduino Uno al linguaggio Python del Raspberry. Ecco sulla
destra le righe indicate, che trasformano i dati rilevati
dal sensore nella misurazione di temperatura.
|
![]() Le
righe di codice relative al programma
![]() I
dati che appaiono sul monitor del Raspberry
|
|
|
|
Clicca qui per scaricare il programma in formato ".zip" Clicca qui per visualizzare il programma in formato testo. Se stai eseguendo queste operazioni direttamente dal Raspberry, puoi scaricare e scompattare direttamente il programma nella cartella "Desktop/Projects/vari" e lanciarlo con il seguente comando: "python digital_temp.py" Controllare di aver attivato l'ambiente virtuale e scaricato le librerie necessarie. |
| |
| Il sesto programma: temperatura digitale con KY-028 con allarme |
| Il sesto programma è semplicemente un'evoluzione del precedente: è stato inserito un allarme che si attiva al superamento della soglia di temeratura e si disabilita solamente quando si preme il tasto touch "BT1". I moduli necessari: LED3 (GPIO21): si accende in caso di un rilevamento; LED1 (GPIO19): resta acceso se non ci sono rilevamenti; LED2 (GPIO18): è un allarme, si accende in caso di rilevamento. BT1 (GPIO24) annulla l'allarme. KY-028 sullo zoccolo AD1/A (GPIO16 - A5) Naturalmente a LED1/2/3 può essere abbinato un relè per attivare qualche ulteriore periferica. |
![]() I
dati che appaiono sul terminale del Raspberry
|
| Clicca qui per scaricare il programma in formato ".zip" Clicca qui per visualizzare il programma in formato testo. Se stai eseguendo queste operazioni direttamente dal Raspberry, puoi scaricare e scompattare direttamente il programma nella cartella "Desktop/Projects/vari" e lanciarlo con il seguente comando: "python digital_temp.py" Controllare di aver attivato l'ambiente virtuale e scaricato le librerie necessarie. |
| |
|
|
| |