members
Basics: Project 070z ESP32 Development board with BMP180 sensor module
of Acoptex.com in ESP8266 ESP-32
Basics: Project 070z
Project name: ESP32 Development board with BMP180 sensor module
Tags: ESP32 Dev Module, ESP32 development board, ESP32 Development board with WiFi and Bluetooth, ESP32-DevKitC V4 development board, ESP-WROOM-32 module with ESP32‑D0WDQ6 chip, Espressif Systems, ESP32-based development board, ESP32 modules, ESP32-WROOM-32, ESP32-WROOM-32U, ESP32-WROOM-32D, ESP32-SOLO-1, USB-UART bridge, IOT, ESP-WROOM-32 Dev Module, ESP32 DEVKITV1, Installing the ESP32 Board in Arduino IDE, Uploading sketch, BMP180 sensor module, BMP180, GY-68
Attachments: library1 and library2 and sketch1; sparkfun library3 and sketch3; I2Cscannersketch; library4 and sketch4; No library sketch5; No library sketch6
In this project, you need these parts :
1. ESP32 development board with WiFi and Bluetooth and USB A / micro USB B cable 1 pc
2.Arduino IDE ( you can download it from here )
3.Jumper cables F-F
4. BMP180 sensor module 1 pc
General
We will learn how to use the BMP180 barometric sensor with the ESP32 development board to read pressure and temperature.
There are a lot of different development boards made. You can find more information about them here.
Understanding the BMP180 sensor module
The BMP180 is a sensor that can measure atmospheric pressure and temperature using your Arduino or Raspberry Pi very simply. BMP180 is the next generation Bosch BMP085 sensor. No changes have been made to the firmware level, which makes it possible to continue using existing libraries and examples. BMP180 returns the absolute atmospheric pressure in Pascal (Pa). It will take a small unit conversion to present the measured value or use the conversion functions available in some libraries.
BMP180 module specifications:
- Dimension of PCB: 10 x 12 x 2 mm (11mm height with straight connector welded)
- Power supply: 3 to 5 Volts
- Low power consumption: 5 μA for 1 measurement per second
- Measurement range of atmospheric pressure: from 300-1100 hPa (up to 9000m above sea level)
- Measurement accuracy: 0.03hPa – 0.25m altitude
- Operation: -40 ° C to + 85 ° C
You can find datasheet here.
Here are some important recommendations for making correct measurements and protecting the BMP180:
- The BMP180 must be in contact with the ambient air to carry out the measurements. If you need to integrate the sensor into a housing, do not forget to provide holes for air circulation.
- Do not expose the BMP180 excessively to the airflow of a fan, as this may result in erroneous or very fluctuating measurements.
- The measurement of the atmospheric pressure depends on the temperature. Avoid placing the BMP180 in front of a source of heat, still less in front of a source producing rapid changes (heating, window in full sun).
- The BMP180 is sensitive to moisture and is not intended for direct contact with water.
- It is also sensitive to light. It should be protected as much as possible from ambient light. Do not place the sensor in front of the ventilation hole of your case, for example.
- The BMP180 accepts a supply voltage between 1.8 and 3.6 Volts. The best way is to use the 3.3V output of your Arduino without ever exceeding 3.6V (according to Sparkfun).
Unit conversions:
1 hPa = 100 Pa = 1 mbar = 0.001 bar
1 hPa = 0.75006168 Torr
1 hPa = 0.01450377 psi (imperial measurement, pounds per square inch)
1 hPa = 0.75006375541921 mmHg (millimeters of mercury)
1 hpa = 0.00098692 atm (atmosphere)
Knowing the atmospheric pressure, it is possible to determine approximately the altitude thanks to this relation (some libraries integrate this function).
Understanding the ESP32 Development board with WiFi and Bluetooth
We will discuss here an Espressif Systems products. Our development board is using ESP-WROOM-32 module from Espressif Systems.
Espressif offers a wide range of fully-certified Wi-Fi & BT modules powered by their own advanced SoCs.
1. Dual-core Modules with Wi-Fi & Dual-mode Bluetooth
Features
- Two independently-controlled CPU cores with adjustable clock frequency, ranging from 80 MHz to 240 MHz
- +19.5 dBm output at the antenna ensures a good physical range
- Classic Bluetooth for legacy connections, also supporting L2CAP, SDP, GAP, SMP, AVDTP, AVCTP, A2DP (SNK) and AVRCP (CT)
- Support for Bluetooth Low Energy (BLE) profiles including L2CAP, GAP, GATT, SMP, and GATT-based profiles like BluFi, SPP-like, etc
- Bluetooth Low Energy (BLE) connects to smart phones, broadcasting low-energy beacons for easy detection
- Sleep current is less than 5 μA, making it suitable for battery-powered and wearable-electronics applications
- Integrates 4 MB flash
- Peripherals include capacitive touch sensors, Hall sensor, low-noise sense amplifiers, SD card interface, Ethernet, high-speed SPI, UART, I2S and I2C
- Fully certified with integrated antenna and software stacks
2. Single-core Modules with Wi-Fi & Dual-mode Bluetooth
Features
- High-performance 160 MHz single-core CPU
- +19.5 dBm output at the antenna ensures a good physical range
- Classic Bluetooth for legacy connections, also supporting L2CAP, SDP, GAP, SMP, AVDTP, AVCTP, A2DP (SNK) and AVRCP (CT)
- Support for Bluetooth Low Energy (BLE) profiles including L2CAP, GAP, GATT, SMP, and GATT-based profiles like BluFi, SPP-like, etc
- Bluetooth Low Energy (BLE) connects to smart phones, broadcasting low-energy beacons for easy detection
- Sleep current is less than 5 μA, making it suitable for battery-powered and wearable-electronics applications
- Peripherals include capacitive touch sensors, Hall sensor, low-noise sense amplifiers, SD card interface, Ethernet, high-speed SPI, UART, I2S and I2C
- Fully certified with integrated antenna and software stacks
3. Single-core Modules with 802.11b/g/n 2.4 GHz Wi-Fi
Features
- High-performance 160 MHz single-core CPU
- +19.5 dBm output at the antenna ensures a good physical range
- Sleep current is less than 20 μA, making it suitable for battery-powered and wearable-electronics applications
- Peripherals include UART, GPIO, I2C, I2S, SDIO, PWM, ADC and SPI
- Fully certified with integrated antenna and software stacks
There are different development Boards made by Espressif Systems and other manufacturers. We will publish some information about Espressif Systems boards but you can also find out more information about other development boards here.
1. 2.4 GHz Wi-Fi & BT/BLE Development Boards
Features
- PC connectivity: USB
- Power supply options: USB (by default), or 5V/GND header pins, or 3V3/GND header pins
- SDK: ESP-IDF source code and example applications
2. 2.4 GHz Wi-Fi Development Boards
Features
- PC connectivity: USB
- SDK: ESP8266 SDK source code and example applications
3. 2.4 GHz Wi-Fi + BT/BLE + Sensor Development Boards
Features
- PC connectivity: USB
- SDK: ESP-IOT-SOLUTION source code and example applications
You can find more information (datasheets, schematics, pins descriptions, functional desgn descriptions) about each board by pressing Getting started link close to each board here.
ESP32 chip
ESP32 is a series of low cost, low power system on a chip microcontrollers with integrated Wi-Fi and dual-mode Bluetooth. The ESP32 series employs a Tensilica Xtensa LX6 microprocessor in both dual-core and single-core variations and includes in-built antenna switches, RF balun, power amplifier, low-noise receive amplifier, filters, and power management modules. ESP32 is created and developed by Espressif Systems, a Shanghai-based Chinese company, and is manufactured by TSMC using their 40 nm process. It is a successor to the ESP8266 microcontroller.
ESP32 can perform as a complete standalone system or as a slave device to a host MCU, reducing communication stack overhead on the main application processor. ESP32 can interface with other systems to provide Wi-Fi and Bluetooth functionality through its SPI / SDIO or I2C / UART interfaces.
ESP32 is highly-integrated with in-built antenna switches, RF balun, power amplifier, low-noise receive amplifier, filters, and power management modules. ESP32 adds priceless functionality and versatility to your applications with minimal Printed Circuit Board (PCB) requirements.
ESP32 is capable of functioning reliably in industrial environments, with an operating temperature ranging from –40°C to +125°C. Powered by advanced calibration circuitries, ESP32 can dynamically remove external circuit imperfections and adapt to changes in external conditions.
Engineered for mobile devices, wearable electronics and IoT applications, ESP32 achieves ultra-low power consumption with a combination of several types of proprietary software. ESP32 also includes state-of-the-art features, such as fine-grained clock gating, various power modes and dynamic power scaling.
Functional Block Diagram:

Features of the ESP32 include the following:
Processors:
- CPU: Xtensa dual-core (or single-core) 32-bit LX6 microprocessor, operating at 160 or 240 MHz and performing at up to 600 DMIPS
- Ultra low power (ULP) co-processor
- Memory: 520 KiB SRAM
Wireless connectivity:
- Wi-Fi: 802.11 b/g/n
- Bluetooth: v4.2 BR/EDR and BLE
Peripheral interfaces:
- 12-bit SAR ADC up to 18 channels
- 2 × 8-bit DACs
- 10 × touch sensors (capacitive sensing GPIOs)
- Temperature sensor
- 4 × SPI
- 2 × I²S interfaces
- 2 × I²C interfaces
- 3 × UART
- SD/SDIO/CE-ATA/MMC/eMMC host controller
- SDIO/SPI slave controller
- Ethernet MAC interface with dedicated DMA and IEEE 1588 Precision Time Protocol support
- CAN bus 2.0
- Infrared remote controller (TX/RX, up to 8 channels)
- Motor PWM
- LED PWM (up to 16 channels)
- Hall effect sensor
- Ultra low power analog pre-amplifier
Security:
- IEEE 802.11 standard security features all supported, including WFA, WPA/WPA2 and WAPI
- Secure boot
- Flash encryption
- 1024-bit OTP, up to 768-bit for customers
- Cryptographic hardware acceleration: AES, SHA-2, RSA, elliptic curve cryptography (ECC), random number generator (RNG)
Power management:
- Internal low-dropout regulator
- Individual power domain for RTC
- 5uA deep sleep current
- Wake up from GPIO interrupt, timer, ADC measurements, capacitive touch sensor interrupt
You can find ESP32 chip datasheet here, hardware design here, technical reference manual here.
Signals and connections of the BMP180 sensor module
VIN (or VCC) - power supply 3.3V DC or 5V DC(check your specification)
GND - ground
SDA - Serial Data Line
SCL - Serial Clock Line
3.3 (or 3Vo) - power supply 3.3V DC
Signals and connections of the ESP32 Development board with WiFi and Bluetooth
You can find more information (datasheets, schematics, pins descriptions, functional desgn descriptions) about each board (made by Espresiff Systems) by pressing Getting started link close to each board here.
Let's check our development board - ESP32 DEVKITV1 with ESP-WROOM-32 module from Espressif Systems:
Pinout diagram for the ESP Wroom 32 breakout:
ESP32-WROOM-32 - ESP32-WROOM-32 module soldered to the development board. Optionally ESP32-WROOM-32D, ESP32-WROOM-32U or ESP32-SOLO-1 module may be soldered instead of the ESP32-WROOM-32.
USB-UART Bridge - A single chip USB-UART bridge provides up to 3 Mbps transfers rates.
BOOT button - Download button: holding down the Boot button and pressing the EN button initiates the firmware download mode. Then user can download firmware through the serial port.
EN button - Reset button: pressing this button resets the system.
Micro USB Port - USB interface. It functions as the power supply for the board and the communication interface between PC and the ESP module.
TX0, TX2 - transmit pin. GPIO pin
RX0, RX2 - receive pin. GPIO pin
3V3 (or 3V or 3.3V) - power supply pin (3-3.6V).
GND - ground pin.
EN - Chip enable. Keep it on high (3.3V) for normal operation.
Vin - External power supply 5VDC.
Wiring
I2C communication with the BMP180 sensor module. We are using the ESP32 default I2C pins.
BMP180 sensor module ESP32 development board
VCC 3V3
GND G
SDA GPIO 21
SCL GPIO 22
Step by Step instruction
The ESP32 is currently being integrated with the Arduino IDE like it was done for the ESP8266. There’s an add-on for the Arduino IDE that allows you to program the ESP32 using the Arduino IDE and its programming language.
1. Installing ESP32 add-on in Arduino IDE (Windows 10 OS)
- Download and install the latest Arduino IDE Windows Installer from arduino.cc
- Download and install Git and Git GUI from git-scm.com
- Search for Git GUI, right-click the icon and select “Run as administrator“
- Select the Clone Existing Repository option.
- Select source and destination. Source Location: https://github.com/espressif/arduino-esp32.git
- Target Directory:C:/Users/[YOUR_USER_NAME]/Documents/Arduino/hardware/espressif/esp32
- Do not create the espressif/esp32 folders, because they will be created automatically.
- Click Clone to start cloning the repository.Wait a few seconds while the repository is being cloned.
- Open the folder: C:/Users/[YOUR_USER_NAME]/Documents/Arduino/hardware/espressif/esp32/tools
- Right-click the get.exe file and select “Run as administrator“.
- You will see that necessary files will be downloaded and upzipped. It will take some time.
- When get.exe finishes, you should see the following files in the directory.
2. Uploading sketch to ESP32 development board
- Do wiring.
- Plug the ESP32 development board to your PC and wait for the drivers to install (or install manually any that might be required).
- Open Arduino IDE and open I2Cscannersketch sketch.
- Open Boards manager. Go to Tools -> Board -> Boards Manager… (in our case it’s the DOIT ESP32 DEVKIT V1)
- Select COM port that the board is attached to (if you don’t see the COM Port in your Arduino IDE, you need to install the ESP32 CP210x USB to UART Bridge VCP Drivers)
- Find your BMP180 I2C address. Each device has an I2C address that it uses to accept commands or send messages. Compile and upload the I2Cscannersketch to your ESP32 development board. If everything went as expected, you should see a “Done uploading” message. (You need to hold the ESP32 on-board Boot button while uploading).
- Press the ESP32 on-board EN button to reboot it.
- Open the Serial Monitor at a baud rate of 115200. Arduino will scan the address range looking for a reply. Even though the documentation said it was 0x77, this scanner can detect different (in our case 0x77). All libraries have default I2C address 0x77 and if you are getting 0x76 you need to modify line of code in library's sketch - bmp.begin(0x76) or pressure.begin(0x76) or ADDRESS_SENSOR 0x76 or myBarometer.init(0x76);.
- Open sketch1. Compile and upload the sketch1 to your ESP32 development board. If everything went as expected, you should see a “Done uploading” message. (You need to hold the ESP32 on-board Boot button while uploading).
- Press the ESP32 on-board EN button to reboot it.
- Open the Serial Monitor at a baud rate of 9600. You will see the BMP180 sensor readings.
- Check out the other libraries examples too. See the attachments on the begining of this project.
ESP32 development board connects to SD card or Micro SD card;Sends to the SD card or Micro SD card the list all files and folders in it and print to Serial Monitor;Opens a file named logging.txt to write Hello world! text to it and closes it;Opens logging.txt file again for reading the text then prints to Serial Monitor and closes it.
Code
In this project we have used Adafruit_BMP085 library's test sketch.
The code starts by importing the required libraries. You create an Adafruit_BMP085 object called bmp: Adafruit_BMP085 bmp; In the setup() the sensor is initialized: bmp.begin(). To read the temperature you just need to use: bmp.readTemperature(). To read the pressure you just need to use: bmp.readPressure(). The pressure readings are given in Pascal units. Because the pressure changes with altitude, you can estimate the altitude based on your location’s pressure when compared with the sea level pressure. The example gives you two different ways to estimate altitude: 1. The first assumes a standard barometric pressure of 10132 Pascal at the sea level. You get the altitude as follows: bmp.readAltitude(); 2. The second method assumes the current pressure at the sea level. For example, if at the moment the pressure at the sea level is 101500 Pa, you get the altitude as follows: bmp.readAltitude(101500).
By default in libraries BMP085 I2C address set as 0x77.
We have included other libraries and sketches in this project too:
- SFE_BMP180 library sketch3
- Grove_Barometer_Sensor library sketch4
- No library sketch5
- No library sketch6
Summary
We have learnt how to use the BMP180 barometric sensor with the ESP32 development board to read pressure and temperature.
Libraries
- All libraries attached on the begining of this project description.
- Wire library included in your Arduino IDE.
- Adafruit_BMP085 library included.Download, unzip and add to libraries in our PC, for example C:\Users\toshiba\Documents\Arduino\libraries. This link you can find in Preferences of Adruino IDE program which installed in your PC. You can read more about library here.
- Adafruit_Sensor library included.Download, unzip and add to libraries in our PC, for example C:\Users\toshiba\Documents\Arduino\libraries. This link you can find in Preferences of Adruino IDE program which installed in your PC. You can read more about library here.
- SFE_BMP180 library included.Download, unzip and add to libraries in our PC, for example C:\Users\toshiba\Documents\Arduino\libraries. This link you can find in Preferences of Adruino IDE program which installed in your PC. You can read more about library here.
- Grove_Barometer_Sensor library included.Download, unzip and add to libraries in our PC, for example C:\Users\toshiba\Documents\Arduino\libraries. This link you can find in Preferences of Adruino IDE program which installed in your PC. You can read more about library here.
Sketch
- See attachments on the begining of this project
Other projects of Acoptex.com










Viewed: 2550 times