Ethical DIY

Progetti hardware & software etici


Menu orizzontale con sottomenu CSS






 




Pagina principale per Raspberry



Informazioni di base




La basetta sperimentale (BDS)


Applicazioni



Librerie e programmi
  • La gestione delle librerie

  • Programmi applicativi
    • Protocollo_I2C
    • I2C_BME280
    • I2C_BME680
    • I2C_ Display_LCD_1602
    • I2C_Display_SSD1306
    • I2C_SGP30-SGP40
    • SPI_RFID_RC522
    • One-wire_18B20
    • DHT11/DHT22
    • Motore_elettrico
    • Servomotore
    • Motore a passo
    • Encoder_Joystick
    • Pulsanti/piccoli_sensori
    • Led
    • Telecamera_OpenCV
    • Gestione_immagini
    • Ingressi_Analogici
    • Display: LCD1602
    • Display: SSD1306 Oled
    • Display: ST7735
    • Ingressi analogici
    • Programmi vari














 








 
















Raspberry PI 3/4/5
Programmi vari: LDR, piccoli sensori, ecc.

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.

018
vari
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).

  • KY-037 (HW485) e KY-038 (HW486): sono sensori acustici (KY-037 ha un microfono amplificato; KY-038 ha un microfono passivo). Non sono particolarmente sensibili.
  • KY-024 (HW404) e KY-025 HW509): sono sensori per campi magnetici.
  • KY-026 (HW491) è un sensore di fiamma. utile per piccoli sistemi antincendio.
  • KY-028 (HW503) è un sensore digitale di temperatura.
  • KY-036 (HW494) è un sensore di contatto. E' per metalli, ma reagisce anche al contatto di un dito.



lcdsIl.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.

lc
Nota valida per tutti i programmi seguenti:
- Se si usa un relè, collegare un alimentatore esterno, per non danneggiare il Raspberry, con una richiesta di corrente troppo elevata.
-
Attenzione: quando ai relè si collegano degli apparecchi da allacciare alla rete elettrica a 220v, si corrono gravi pericoli, anche mortali! In questi casi rivolgersi sempre a personale esperto e qualificato!







Come inserire il modulo LDR e schede di sensori vari sulla BDS



dg1r

 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! adi11










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) term 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.


l1

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:
  • il sensore è inserito su DG1 (GPIO19);
  • il led "luci basse" su LED2 (GPIO18);
  • il led "luci spente" su LED3 (GPIO21).

Naturalmente in parallelo a LEDe si può connettere un relè su DG2;
in parallelo a LED3 si può inserire un relè (tipo KY-019) su DG3.


l2

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.
 
v1

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.

vv

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.

v2
Le righe necessarie per stampare i valori analogici e digitali sullo schermo.

v1a


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



Il terzo programma è ancora un'evoluzione del primo: quando si supera un livello di soglia, si attiva anche un allarme, che rimane attivo fino a quando non si prema il pulsante touch BT1, che lo neutralizza. Questa funzione può essere utile quando i superamenti del livello di soglia sono brevi, e si desidera tenerne traccia.
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.
Naturalmente a LED1/2/3 può essere abbinato un relè per attivare qualche ulteriore periferica.

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 vari2.py"

Controllare di aver attivato l'ambiente virtuale e scaricato le librerie necessarie.

v2a


v3

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



Quest'ultimo programma per le sette schede è un'evoluzione del secondo mostrato ed è il più completo: gestisce sia il segnale digitale che analogico, mostra i valori e ha presente un allarme.
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.

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 vari2a.py"

Controllare di aver attivato l'ambiente virtuale e scaricato le librerie necessarie.

v22a
v4








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.

Il programma restituisce una nutrita serie di informazioni: i valori analogici e digitali;la resistenza del sensore NTC (che scende con il salire della temperatura); la temperatura in Fahrenhet (F) e in Clesius (C), oltre all'informazione se si sia o no superata la soglia di temperatura.

I moduli necessari:
LED3 (GPIO21): si accende in caso di un rilevamento;
LED1 (GPIO19): resta acceso se non ci sono rilevamenti;
KY-028 sullo zoccolo AD1/A (GPIO16 - A5)
Naturalmente a LED1/2/3 può essere abbinato un relè per attivare qualche ulteriore periferica.


d2

Le righe di  codice relative al programma


d1
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.


dg1

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.









Per contatti: etdiy@centroanahata.it