Il Wemos Barometric Pressure Shield utilizza un sensore di pressione atmosferica digitale miniaturizzato HP303B che presenta una elevata precisione ed un basso consumo di corrente.
Il sensore è in grado di misurare sia la pressione che la temperatura.
Per informazioni vedere anche la specifica pagina del costruttore: Barometric pressure shield
Per altri shield specifici per Wemos D1 mini vedere l’articolo Wemos D1 mini – Raccolta Shield disponibili.
Indice
Descrizione del sensore HP303B
Il sensore HP303B utilizzato sul Wemos Barometric Pressure Shield è prodotto dalla Cinese HOPERF, È un sensore di pressione atmosferica barometrica digitale miniaturizzato con elevata precisione e basso consumo di corrente, in grado di misurare sia la pressione che la temperatura.
L’elemento sensore di pressione si basa su un principio di rilevamento capacitivo che garantisce un’elevata precisione durante le variazioni di temperatura. Il piccolo formato rende l’HP303B ideale per applicazioni mobili e dispositivi indossabili.
Il processore di segnale interno converte l’uscita dagli elementi del sensore di pressione e temperatura in risultati a 24 bit. Ogni unità viene calibrata individualmente, i coefficienti di calibrazione calcolati durante questo processo vengono memorizzati nei registri di calibrazione. I coefficienti vengono utilizzati nell’applicazione per convertire i risultati della misurazione in valori di pressione e temperatura ad alta precisione.
Il FIFO dei risultati può memorizzare fino a 32 risultati di misurazione, consentendo una velocità di polling ridotta del processore host.
Le misurazioni dei sensori e i coefficienti di calibrazione sono disponibili tramite l’interfaccia seriale I2C o SPI. Lo stato della misurazione è indicato da bit di stato o interruzioni sul pin SDO.
Schema a blocchi del sensore
Piedinatura del sensore e loro funzione
Caratteristiche del Wemos Barometric Pressure Shield
- Interfaccia I2C
- Due indirizzi I2C selezionabili: 0x77 (default) e 0x76
- Alimentazione a 3,3Vcc
- Gamma operativa: Pressione da 300hPa a 1200hPa, Temperatura da -40 °C a +85 °C
- Precisione: 0.005hPa
- Accuratezza temperatura: 0,5 °C
- Tempo impiegato per la misura: 27,6ms (alta precisione, 3,6ms bassa precisione)
- Possibilità di funzionamento in modalità Comando (manuale), Background (automatico) e Standby
- Registro FIFO per la memorizzazione di 32 misure
Altre tipologie di sensori di temperatura/umidità
Per altre tipologie di sensori vedere l’articolo Panoramica sensori di temperatura e umidità
Dove trovare il HP303B barometric pressure Shield
Il HP303B barometric pressure Shield, può essere acquistato online per esempio presso il sito Homotix codice articolo WEDBPS.
Ricordo che chi inserirà il mio codice “ADRIROBOT” riceverà uno sconto.
Nel blister antistatico sono presenti due pin strip che dovranno essere saldati a vostra cura
Circuito elettrico
Nella figura sottostante è visibile lo schema del Wemos Barometric Pressure Shield (schema in formato PDF) che è composto principalmente dal sensore HP303B (datasheet) U1, troviamo poi vari condensatori e resistenze.
Le due resistenze (R1 e R2 da 4,7 KΩ ) hanno la funzione di pull-up sulle linee SCL e SDA bus I2C.
J1 (PU) permette di collegarle o meno alla tensione di alimentazione, collegate di default.
Il sensore può essere impostato per due indirizzi a seconda di come è collegato il pin 8 (SDO). Di default l’indirizzo è 0x77, se si effettua un ponticello di stagno tra le due piazzole presenti sul PCB , questo sarà collegato a GND (LOW) tramite la resistenza R3 da 4,7 KΩ a per cui l’indirizzo sarà 0x76.
Collegamento alternativo del modulo sensore
Il BH1750 Shield D1 Mini può essere installato direttamente su modulo Wemos D1 mini
Esiste la possibilità di utilizzare solamente il piccolo PCB su cui è presente il sensore. infatti come potete vedere, esiste una fresatura sul modulo e se si applica una leggera forza in corrispondenza del piccolo connettore questo si stacca.
Le dimensioni del piccolo modulo sono a questo punto di 13x13mm circa. Il connettore presente è a 4 pin I2C.
Questo potrà essere collegato tramite apposito cavetto per esempio al modulo TFT I2C Connector Shield su cui sono presenti due connettori I2C utilizzabili per questo scopo.
N° | Pin Wemos D1 | |
---|---|---|
1 | 3V3 | |
2 | D4 (IO2) | |
3 | D3 (IO0) | |
4 | GND |
Si tratta di un cavo con due connettori 4 Pin, lunghezza 10 cm.
Cavo per I2C / IO
Modulo D1 MINI
Sotto le foto del modulo D1 Mini utilizzato per il test
Wemos D1 mini (V3.1.0) |
Wemos D1 mini Pro (V1.1.0) |
Per informazioni del modulo Wemos D1 mini vedere articolo Modulo WeMos – LOLIN D1 mini
Test base del HP303B barometric pressure Shield
Per la prova del HP303B barometric pressure Shield utilizzeremo oltre al Modulo Wemos D1 Mini, l’ OLED bicolor shield , le cui istruzioni per realizzarlo le potrete trovare nell’articolo OLED bicolor shield per Wemos D1 mini – Progetto completo.
Potrà comunque essere utilizzato il solo Display bicolore OLED 0.96″ 128×64 – SSD1306.
Per la sua conformazione, lo shield HP303B barometric pressure può essere montato direttamente sul modulo Wemos D1 mini.
Nel nostro caso si è utilizzata una base tripla, l’alimentazione potrà essere fornita da PC tramite il cavo USB a cui è collegato il modulo Wemos, oppure tramite una Power bank utilizzando sempre il cavo USB
Materiale occorrente
Wemos D1 Mini |
HP303B barometric pressure Shield |
OLED Shield |
Base tripla |
Schema dei collegamenti
Libreria di gestione del sensore HP303B
Per la gestione del sensore si può utilizzare l’apposita libreria disponibile sul sito del produttore
Link Libreria, oppure da questo link, questa contiene anche alcuni programmi di esempio:
- i2c_background
- i2c_command
- i2c_interrupt
Per il programma è anche utilizzata la libreria “SimpleTimer” , da caricare tramite i seguenti link
Per informazioni su come installare le librerie vedete l’articolo Arduino – Tutorial, come installare una libreria.
Sketch del programma
Prima di caricare il programma per testare il BH1750 Shield D1 Mini, occorre verificare di aver impostato nell’IDE correttamente la scheda Wemos Di mini e che questa sia correttamente riconosciuta, verificando a quale porta risulta collegata. Il test è stato fatto utilizzando l’IDE nella versione 2.2.1.
Se tutto funziona, sul display potrete leggere il valore della temperatura e della Pressione barometrica rilevata dal sensore. I valori saranno rilevati ogni 2 secondi.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
//Lettura Lolin HP303B sensor #include <LOLIN_HP303B.h> #include <Adafruit_SSD1306.h> #include <SimpleTimer.h> #define OLED_ADDR 0x3C //indirizzo oled #define SCREEN_WIDTH 128 // Larghezza del display OLED in pixels #define SCREEN_HEIGHT 64 // Altezza del display OLED in pixels // HP303B Opject LOLIN_HP303B HP303BPressureSensor; //Setup simple timer SimpleTimer timer; // Creiamo istanza del display connesso tramite I2C (SDA, SCL pins) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT); void setup() { HP303BPressureSensor.begin(); display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR); // Avviamo il display pronto a ricevere le informazioni da visualizzare delay(200); // Inposta il timer per lettura valori timer.setInterval(2000L, sendSensor); //Pulsice il display pulisci_display(); } void loop() { timer.run(); // Inizializza SimpleTimer } void pulisci_display() { display.clearDisplay(); //Pulisce il buffer display.drawRect(0, 0, 128, 16, 1); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(2, 5); // Imposta le coordinate di visualizzazione display.println("Lettura sensor HP303B"); display.setTextSize(2); display.setCursor(0, 20); display.print("Temp:"); display.setTextSize(1); display.setCursor(0, 40); display.print("Press.: "); display.setCursor(15, 55); display.println("www.adrirobot.it"); display.display(); } void sendSensor() { int32_t temperature; int32_t pressure; int16_t oversampling = 7; int16_t ret; pulisci_display(); //Lettura temperatura del sensore ret = HP303BPressureSensor.measureTempOnce(temperature, oversampling); if (ret != 0) { //Lettura errata. display.setTextSize(2); display.setCursor(0, 20); display.println("Temp Error "); display.display(); } else { display.setTextSize(2); display.setCursor(0, 20); display.print("Temp:"); display.print(temperature); display.print((char)247); display.print("C"); display.display(); } //Lettura pressione barometrica del sensore ret = HP303BPressureSensor.measurePressureOnce(pressure, oversampling); if (ret != 0) { //Lettura erraata. display.setTextSize(1); display.setCursor(0, 40); display.print("mBar Error "); display.display(); } else { display.setTextSize(1); display.setCursor(0, 40); display.print("Press.: "); display.print(pressure / 100); // 1 Bar = 100'000 Pascal display.print(" mBar"); display.display(); } } |
Wemos D1 mini – Raccolta Shield disponibili
Oltre al BH1750 Shield D1 Mini , per la scheda Wemos D1 mini, prodotta dalla WEMOS/LOLIN sono disponibili vari shield che appartengono a varie categorie: Display & Interactive Shield, Environment, Power, Control, Others.
Per l’elenco vedere articolo Wemos D1 mini – Raccolta Shield disponibili