An Alternative BMP280 Module with the Arduino
An Alternative BMP280 Module with the Arduino
Besides the Adafruit BMP280 breakout module, I found a cheaper alternative on amazon for $5.88.
This module is sold by a Chinese company named DiyMore. It is a 3.3v only breakout, so it has no onboard regulator or level translating circuitry. So you must be careful to only use a 3.3 volt supply with it.
This module arrived in a package marked as a BMP085, which led to some confusion, but I eventually discovered that it is indeed a BMP280 (Device ID=58), which supports measurement of Atmospheric Pressure, Temperature and Humidity. Altitude may be calculated from the barometric pressure, assuming you know what the local pressure or altitude was on startup.
As you can see, it breaks out all of the pins necessary to communicate with the device via I2C or SPI mode.
There was no documentation included with the board, and nothing on the internet that I could find specific to this board. I attempted to reverse engineer the board, and created this schematic. I believe it is correct.
Connections
Note*** When connecting to the RBBB board, the board must be supplied with only 3.3v. This can be done by moving the jumper on the FTDI USB adapter to the 3.3v side. The RBBB has no 3.3v regulator onboard, so no 3.3v pin available.
For I2C Mode, I made connections as follows:
BMP280 Card Pin | Arduino Duemilanove Pin | Arduino RBBB Pin | Mega2560 Pin | Arduino Due Pin |
VCC | POWER 3.3V | POWER 5V *** | POWER 3.3V | POWER 3.3V |
GND | POWER GND | POWER GND | POWER GND | POWER GND |
SCL | A5 | A5 | A5 | A5 |
SDA | A4 | A4 | A4 | A4 |
For an I2C Address of 0x76, SDD is tied to ground.
For an I2C Address of 0x77, SDD is tied to 3.3v.
For SPI mode, I made the connections as follows:
BMP280 Card Pin | Arduino Duemilanove Pin | Arduino RBBB Pin | Mega2560 Pin | Arduino Due Pin |
VCC | POWER 3.3V | POWER 5V *** | POWER 3.3V | POWER 3.3V |
GND | POWER GND | POWER GND | POWER GND | POWER GND |
SDD | ICSP-1 or D12 | D12 | ICSP-1 or D12 | ICSP-1 or D12 |
SCL | ICSP-3 or D13 | D13 | ICSP-3 or D13 | ICSP-3 or D13 |
SDA | ICSP-4 or D11 | D11 | ICSP-4 or D11 | ICSP-4 or D11 |
CSB | D-10 | D-10 | D-10 | D-10 |
All configurations appear to work. I did notice that the temperature reading climbs a few degrees warmer in SPI mode than in I2C mode. I suspect this is because we are holding one or more lines low, pulling more average current through the pullup resistors, or something to that effect. I have not researched this further, other than to read the actual temperature of the sensor and note that it does indeed climb in SPI mode.
Migrated Comments:
December 29th, 2019 at 4:23 am
Hi thanks very much for your help, I couldn’t get the sensor to work at first, until I pulled up the CSO and SDD pins. Kind regards from another radio amateur (ham).