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
      • SSD1306 + DHT11
    • 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 per SSD1306 e DHT11/22

Per ulteriori informazioni sul sensore DHT11/DHT22, aprire la pagina dedicata.





Come inserire il sensore DHT11/DHT22 sulla BDS
In questo programma il sensore di temperatura e umidità è stato inserito sul connettore DG3 (GPIO21) della BDS. Fare attenzione a inserirlo con il giusto ordine di piedini. Il simbolo "-" del sensore deve essere connesso a "GND" della basetta; "S" invece a "P21". Un errato collegamento del sensore alla BDS potrebbe rapidamente danneggiarlo.

Nota 1: il "PWE Sel." permette di selezionare la tensione di alimentazione a 3,3v oppure a 5v per entrambi gli zoccoli DG2 e DG3. Selezionando la tensione +5v per questo sensore, potrebbe danneggiare gravemente il Rasberry. Portare molta attenzione a questa scelta.

Nota 2: il DHT11/DHT22 potrebbe essere anche collegato indifferentemente sugli zoccoli "DG1" o "DG2".  In questo caso però bisogna modificare il programma, inserendo "D19" per "DG1" e "D18" per "DG2" nella riga del programma in cui si determina il GPIO da usare.
In caso di necessità (come nel secondo programma) il sensore può essere inserito sul connettore ONE-WIRE (GPIO4)

d3
Come posizionare il sensore su DG3.



d7

Se si usa DG1, sostituire con "board.D19"; per DG2, digitare "board.D18"; con ONE-WIRE
, digitare "board.D4"





Come inserire il display SSD1306 sulla BDS
s3
La connsessione del
display sulla BDS

Il display SSD1306, che segue il protocollo I2C, può essere inserito sul connettore I2C1.





DHT11 o DHT22?

Spesso si acquista un "DHT11", ma quando lo si testa mostra dei dati sballati. Si può pensare che sia danneggiato. Ma quasi sempre se lo si dichiara come "DHT22", tutto funziona perfettamente! Sulla destra si vedono le righe di programma interessati: è sufficiente scommentare la riga di programma corretta.


dht

In questo caso si sta utilizzando un sensore DHT22





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 "ssddht" in cui creeremo l'ambiente virtuale (che chiameremo "ssd"), 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/ssddht  per spostarsi nella cartella "ssddht";
python3 -m venv ssd            per creare l'ambiente virtuale "ssd";
source  ssd/bin/activate         per attivare l'ambiente virtuale: apparirà (dht) all'inizio della nuova riga;

Sarà necessario inserire un certo numero di librerie per SSD1306:
- RPi.GPIO:  "pip3 install RPi.GPIO";
- adafruit_circuitpython_ssd1306:  "pip3 install adafruit_circuitpython_ssd1306";
- Pillow:
  "pip3 install pillow".

Ecco ciò che apparirà sul terminale:
sh
sd2
quando installato:
11

La seconda libreria:
12
se tutto ha funzionato:
13

e infine la terza, relativa all'uso dei font  truetype:
14
quando terminato:
15

Inoltre è necessario inserire anche una libreria per il sensore dht11:
- adafruit_circuitpython_dht:  "pip3 install adafruit_circuitpython_dht";
16
e al termine:
17

Con l'installazione di queste librerie potrremo utilizzare il primo programma, "dhtssd.py".
Lo potremo lanciare con il comando "python dhtssd.py".

Per il secondo programma, dovremmo installare una ulteriore libreria, "gpiozero":
17
Nel caso non avessimo ancora attivato l'ambiente virtuale, lo facciamo ora;
16
lanciamo il comando di installazione per la libreria;
17
la libreria è stata caricata correttamente.

Ora possiamo lanciare anche il secondo programma, "dht_temp1.py", con il comando: "python 
dht_temp1.py".

E' necessario scaricare anche questo file compresso "truetype.zip", inserirlo nella cartella del display ssd1306 (nel nostro caso /Desktop/Projects/ssd1306), e poi scompattarlo. Esso contiene una serie di fonts truetype necessari per visualizzare le informazioni sul display con maggiore chiarezza ed eleganza.



Altri programmi che usano il sensore DHT11:

Il sensore
DHT11/DHT22 puo essere presente in pagine di programmi che utilizzano anche altri moduli, come per esempio dei display.

Clicca qui per un primo programma con il display SSD1306 OLED.

Clicca qui per
un secondo programma con il display SSD1306 OLED.

Clicca qui per un terzo programma, con il display Led 1602.

Clicca qui per i programmi che utilizzano Thingspeak



Primo programma: visualizzazione dei dati del sensore sul display
Il primo programma illustrato usa come informazioni di base quelle relative al primo programma presentato nella pagina relativa al sensore DHT11.
Semplicemente, rispetto a quello originale, permette la visualizzazione dei dati sul display, che quindi libera dalla necessità di consultare i dati sul monitor.

Nota: in questo programma il sensore DHT11 è inserito sul connettore DG3 (GPIO21)

41

Clicca qui
per scaricare il file in formato ".zip"
Clicca qui per visualizzare il file.

Dopo aver scaricato il programma nella cartella selezionata (nel nostro caso, /Desktop/Projects/dht11), scompattare il programma dht_1.py e lanciarlo con il seguente comando: "python dht_1.py"

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







Secondo programma: gestione di un condizionatore/pompa di calore con display
too


Il secondo  programma illustrato usa come informazioni di base quelle relative al terzo programma presentato nella pagina relativa al sensore DHT11.
Semplicemente, rispetto a quello originale, permette la visualizzazione dei dati sul display, che quindi libera dalla necessità di consultare i dati sul monitor.

Nota: in questo programma il sensore DHT11 è inserito sul connettore ONE-WIRE (GPIO4).
Questa scelta è stata necessaria per poter inserire i relè sugli zoccoli disponibili.

E' necessario inserire nel programma cinque variabili:
- tmin: temperatura minima. Nel programma è stata impostata a 18°.
- tmax:
temperatura massima. Nel programma è stata impostata a 28°.
- hmax:
umidità massima. Nel programma è stata impostata al 65%.
- gqual: qualità dell'aria. Nel programma è stata impostata a 80.000 Ohm.
- pmin: pressione atmosferica.
Nel programma è stata impostata a 1005 millibar.

5v

Per attuare le informazioni rilevate dal sensore, sono stati inseriti nel programma anche sei  variabili relative  all'accensione di sei led, e all'attivazione di quattro relè, per gestire il condizionatore e il purificatore d'aria:
ledg = LED(12) #led verde. Temperatura e umidità OK.
ledr = LED(19) #led rosso. Temperatura alta. Accendere il condizionatore.
ledb = LED(18) #led blu. Temperatura bassa. Accendere la pompa di calore
ledy = LED(21) #led giallo. Umidità troppo alta. Accedere il deumidificatore.
ledp = LED(5)  #led bianco. Pressione atmosferica bassa.
leda = LED(16) #led arancio. Cattiva qualità dell'aria. Accende il purificatore

6v

Se tutti i parametri sono buoni, si accende un led verde (Led4), ma non si attiva alcun relè.

Nel caso di pressione atmosferica bassa, si accende il led bianco (Led5), ma non si intraprende alcuna attività.
Perciò si possono attivare quattro relè:
- Condizionatore (DG1, GPIO19 - Led1, rosso). Si attiva se la temperauta è troppo alta.
- Pompa di calore (DG2, GPIO18 - Led2, blu).
Si attiva se la temperauta è troppo bassa.
- Deumidificatore (DG3, GPIO21 - Led3, giallo). Il deumidificatore si attiva solamente se non è attivo nè il condizionatore, nè la pompa di calore.
- Purificatore d'aria (AD1A, GPIO16 - led su AD1B, arancio). Si attiva se la qualità dell'aria è scarsa.

Nota 1: quando si utilizzano dei relè, per evitare danni al Raspberry, è necessario utilizzare l'alimentazione esterna, poccegando un alimentatore e cambiando la posizione dei ponticelli (jumper)V3_SEL e V5_SEL da "INT." a "EXT."
Nota 2: al posto di relè singoli, è possibile utilizzare dei relè in batteria, come questi (solo per illustrazione). In questo caso "VCC" andrà collegato a +3v; "GND" a "GND; "R1" a "GPIO19"; "R2" a "GPIO18"; R3 a "GPIO21". "R4" in questo programma non verrà utilizzato.


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!


Clicca qui
per scaricare il file in formato ".zip"
Clicca qui per visualizzare il file.

Dopo aver scaricato il programma nella cartella selezionata (nel nostro caso, /Desktop/Projects/ssd280), scompattare il programma bme280ssd.py e lanciarlo con il seguente comando: "python
bme280ssd.py"

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
















Per contatti: etdiy@centroanahata.it