Il BMP180 Shield è progettato appositamente per essere compatibile con il modulo Wemos D1 mini.
Questo è simile per esempio con il modulo DHT Shield.
Il sensore BMP180 permette la misura della pressione barometrica e la temperatura. I dati sono trasmessi in formato digitale tramite un’interfaccia seriale I2C che richiede solo due pin D1-SCL e D2-SDA
Per altri shield specifici per Wemos D1 mini vedere l’articolo Wemos D1 mini – Raccolta Shield disponibili
Indice
Descrizione sensore BMP180
Il sensore BMP180 (datasheet) permette di misurare pressioni da 300 a 1100hPa (.da -500m a +9000m relativi al livello del mare), la tensione di alimentazione è compresa tra 1.8-3,6 (VDD) e 1.62-3.6V (VDDIO), il consumo è di soli 5uA con una lettura al secondo. Il sensore è contenuto in un package tipo LGA con una dimensione di 3,6×3,8 mm.
Oltre al valore di pressione, il sensore fornisce anche la misurazione della temperatura; i dati sono trasmessi tramite un’interfaccia I2C, con un indirizzo fisso 0x77.
La calibrazione è fatta durante la produzione e i valori sono salvati nella memoria del sensore.
![](https://www.adrirobot.it/wp-content/uploads/2021/03/bmp180_pin.jpg)
Schema del sensore
Lo schema del sensore è simile a quello del modulo BMP180 GY68-2, la differenza è la mancanza del regolatore di tensione in quanto ricava la sua alimentazione di 3,3V direttamente dal modulo Wemos D1 mini.
Lo shield non è progettato da Wemos ma è di costruzione robusta, di buona qualità e viene fornito con una selezione di diverse tipologie di pinstrip che è possibile saldare ad esso.
Il sensore dispone di un’interfaccia I2C, i cui pin sono collegati a quelli D1 e D2 del Wemos D1.
Lo schema e il PCB sono realizzati con EasyEDA e possono essere scaricati e modificati dal sito OSHWLab a questo link
Dove trovare il modulo
Il modulo potrà essere acquistato in rete , per esempio sul sito Aliexpress. Il suo costo al momento della redazione di questo articolo e di circa 2 €.
Nella confezione, oltre alla scheda, sono presenti 3 tipi diversi di pinstrip da saldare con l’utilizzo di un saldatore a stagno. In questo caso vedere l’articolo Come eseguire delle buone saldature
Installazione del modulo
Il BMP180 Shield è stato concepito per essere installato direttamente sopra (o sotto) il modulo Wemos D1 mini, per cui il suo PCB ha le stesse dimensioni.
Libreria di gestione del sensore
Per facilitare l’uso del sensore è disponibile un’apposita libreria; questa funzione in unione alla libreria Wire.h è già presente come libreria standard dell’IDE di Arduino che permette l’utilizzo del protocollo I2C.
Per il caricamento occorre aprire sotto il menù Sketch, #include libreria, “Gestione Librerie..”
Nel campo ricerca si inserirà “bmp180” trovata la libreria “Adafruit BMP085 Libray“, premendo su “More info..” apparirà il tasto “Installa” cliccare il tasto
Per altre informazioni vedere anche l’articolo Arduino – Tutorial, come installare una libreria
Materiale occorrente per il test base del sensore
Per la prova base del BMP180 Shield occorrono:
- Scheda Wemos D1 mini (la trovate sul sito Homotix codice WED1MINIV3)
- BMP180 shied
![]() |
![]() |
Lo shield BMP180 Shield dovrà essere istallato sopra il modulo Wemos d1 mini come visibile nella foto sotto
A questo punto si potrà trasferire il programma nella memoria del Wemos D1. Per come impostare l’IDE per gestire il Wemos D1 mini vedere l’articolo Modulo WeMos – LOLIN D1 mini
Programma base per il test
Più sotto è riportato lo sketch per i test del sensore. I valori potranno essere letti tramite il monitor seriale dell’IDE. In questo caso dovreste visualizzare una schermata simile a questa.
Se ci fossero dei problemi di collegamento, invece, potreste vedere la schermata sotto.. Provate a verificare se il modulo è correttamente posizionato.
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 |
#include <Wire.h> #include <Adafruit_BMP085.h> Adafruit_BMP085 bmp; void setup() { Serial.begin(9600); //Wire.begin (4, 5); if (!bmp.begin()) { Serial.println("Non trovo un sensore BMP180/BMP085 all'indirizzo 0x77"); while (1) {} } } void loop() { Serial.print("Temperatura = "); Serial.print(bmp.readTemperature()); Serial.println(" Celsius"); Serial.print("Pressione = "); Serial.print(bmp.readPressure()); Serial.println(" Pascal"); Serial.println(); delay(2000); } |
Materiale occorrente per il test con display OLED
Una versione più complessa per la lettura dei dati forniti dal BMP180 Shield è quello che prevede l’utilizzo dello speciale display OLED realizzato per il Wemos D1 mini, vedere l’articolo OLED Shield – WeMos D1 mini
Per questo test occorrono:
- Scheda Wemos D1 mini (la trovate sul sito Homotix codice WED1MINIV3)
- Wemos tripler base
- OLED Shield per Wemos D1 mini
- BMP180 Shield
![]() |
![]() |
![]() |
![]() |
Programma per il test con l’utilizzo del display OLED
Più sotto è riportato lo sketch per i test del sensore che mostra i valori letti dal sensore Temperatura e Pressione barometrica sul display OLED.
Per la gestione del display occorre caricare le relative librerie, oltre a quella relativa al sensore citata precedentemente
#include “Adafruit_GFX.h”
#include “Adafruit_SSD1306.h”
Per maggiori informazioni relative al display e come caricare le relative librerie, vedere l’articolo OLED Shield – WeMos D1 mini.
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 |
#include "Adafruit_GFX.h" #include "Adafruit_SSD1306.h" #include <Wire.h> #include <Adafruit_BMP085.h> Adafruit_BMP085 bmp; #define OLED_RESET 0 // GPIO0 Adafruit_SSD1306 display(OLED_RESET); void setup() { Serial.begin(9600); if (!bmp.begin()) { Serial.println("Impossibile trovare il sensore BMP180 a 0x77 "); while (1) {} } // Impostazione modulo display con indirizzo I2C addr 0x3C display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.display(); delay(2000); // Cancellazione schermo e buffer display.clearDisplay(); // Messaggio iniziale display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0, 0); display.println(" ADRIROBOT "); display.setTextColor(BLACK, WHITE); // Inverte il colore del testo display.setCursor(0, 10); display.println(" BMP 180 "); display.display(); } void loop() { Serial.print("Temperature = "); Serial.print(bmp.readTemperature()); Serial.println(" Celsius"); Serial.print("Pressure = "); Serial.print(bmp.readPressure()); Serial.println(" Pascal"); display.setTextColor(WHITE); display.fillRect(0, 30, 64, 30, BLACK); display.setCursor(0, 30); display.print(bmp.readTemperature()); display.print(" "); display.print((char)247); display.print("C"); display.fillRect(0, 40, 64, 30, BLACK); display.setCursor(0, 40); display.print(bmp.readPressure()); display.print(" Pa"); display.display(); delay (2000); } |
Video illustrativo
Segue un breve filmato che mostra il funzionamento della shield con il sensore BMP180.