BBMagic METEO is ultra low power module with Bluetooth Low Energy communication. It can work many months with little coin CR2032 battery. | ![]() |
Pinout
Pin number | Description |
---|---|
1,8,20,22,23,24 | GND – power and signal ground |
2 | Connect to GND to turn on Bluetooth transmission LED indication |
3-6 | Four GND active digital inputs sampling every time Bluetooth transmission starts |
7,21 | Supply voltage 2,1V – 3,6V |
21,22 | Pads for CR2032 battery holder: 21 (+) i 22 (-) |
7,8,9 | Pads for voltage regulator if you decide to power BBMagic METEO this way. Learn more here: Power it easy: BBMagic METEO Bluetooth Low Energy module |
10 | Supply voltage input for voltage regulator. More described here: Power it easy: BBMagic METEO Bluetooth Low Energy module |
11,12 | 10k photoresistor pads |
13,14 | Inputs of analog to digital converter ADC_1 and ADC_2. Available voltage range: 0V-1,8V ; Resolution 1mV |
18,19 | Tx and Rx UART lines. Available voltage range: 0V-5V |
BBMagic METEO – how does it work?
BBMagic METEO cycly measures and sends data through Bluetooth radio link every defined period of time.
Temperature
- Measurement accuracy +/-0,3 Celsius
- Measurement resolution 0,04 Celsius
- Operating range is from -40 Celsius to +125 Celsius
- Typical response time is 15 seconds
- Long term drift is less than 0,02 Celsius per year
Relative humidity
- Measurement resolution 1% RH
- Operating range is from 0 %RH to 100 %RH
- Typical response time is 8 seconds
- Long term drift is less than 0,25 %RH per year
Light level
- measured with 10k photoresistor
- Values from 0 to 255
Two ADC channels with 1mV resolution
- ADC_1: from 0 to 1,8V
- ADC_2: from 0 to 1,8V
Four digital inputs state
- Low state active
- Vcc pullup 25ms before sampling
How to receive data from BBMagic METEO?
Raspberry Pi zero W and Raspberry Pi 3 can receive data from BBMagic modules using bbmagic_lib library. You can get it from Download section.
Its very easy:
Make some helpful variables and buffer for data
unsigned char bbm_buf[100] ;
int len, ret ;
Open communication
ret = bbm_bt_open(0) ;
if(ret) exit(1) ;
Check if data has been received
len = bbm_bt_read(bbm_buf) ;
If so start processing
if(len > 0)
if(bbm_buf[BBMAGIC_DEVICE_TYPE] == BBMAGIC_M_METEO)
{
process_meteo_data(bbm_buf) ;
}
Library header file (bbmagic_lib.h) defines types of data sending by BBMagic METEO
bbm_buf[BBMAGIC_DEVICE_TYPE] | module type ; BBMAGIC_M_METEO in this particular case |
bbm_buf[BBM_METEO_TEMPER_LSB] bbm_buf[BBM_METEO_TEMPER_MSB] | temperature, LSB and MSB. Divide by 100 to get temperature in Celsius |
bbm_buf[BBM_METEO_HUM] | relative humidity in range 0-100 RH |
bbm_buf[BBM_METEO_LIGHT] | light level in range 0-255 |
bbm_buf[BBM_METEO_V_SUP] | supply voltage ; divide this value by 71 (BBMAGIC_VCC_DIVIDER) to have power supply voltage in volts |
bbm_buf[BBM_METEO_ADV_TIME] | next message from BBMagic METEO will arrive after this period of time ; multiply it by two to get time in seconds |
bbm_buf[BBM_METEO_DIN_STATE] | State of digital inputs DIN_0-DIN_3: four least significant bits ; 1 means low level |
bbm_buf[BBM_METEO_ADC_1_MSB] bbm_buf[BBM_METEO_ADC_1_LSB] | ADC_1 input voltage in mV |
bbm_buf[BBM_METEO_ADC_2_MSB] bbm_buf[BBM_METEO_ADC_2_LSB] | ADC_2 input voltage in mV |
bbm_buf[BBM_METEO_WORKTIME_0] | amount of time from module power up – in seconds ; byte 0 – LSB |
bbm_buf[BBM_METEO_WORKTIME_1] | amount of time from module power up – in seconds ; byte 1 |
bbm_buf[BBM_METEO_WORKTIME_2] | amount of time from module power up – in seconds ; byte 2 |
bbm_buf[BBM_METEO_WORKTIME_3] | amount of time from module power up – in seconds ; byte 3 – MSB |
bbm_buf[BBMAGIC_DEVICE_ADDR_0] | module address byte 0 – LSB |
bbm_buf[BBMAGIC_DEVICE_ADDR_1] | module address byte 1 |
bbm_buf[BBMAGIC_DEVICE_ADDR_2] | module address byte 2 |
bbm_buf[BBMAGIC_DEVICE_ADDR_3] | module address byte 3 |
bbm_buf[BBMAGIC_DEVICE_ADDR_4] | module address byte 4 |
bbm_buf[BBMAGIC_DEVICE_ADDR_5] | module address byte 5 – MSB |
bbm_buf[BBMAGIC_DEVICE_RSSI] | radio signal strength indicator in dBm ; U2 coded |

BBMagic METEO modes of operation
Mode | Measurement period |
---|---|
1 | 2 seconds |
2 | 10 seconds |
3 | 1 minute |
4 | 5 minutes |
How to set/change working mode
- turn off the power of the module
- push configuration button
- turn on BBMagic power holding the button pressed
- hold the button pressed while LED flashing: 1 flash – work mode = 1, 2 flashes – work mode = 2, etc.
- release the button
- LED turns off for about 2 seconds and then flashes few times, depending on configured work mode: 1 flash – configured mode = 1, 2 flashes – configured mode = 2, etc.
Every time you turn BBMagic METEO power on onboard LED flashes:
- 1 time – the module work mode is 1 – measurement period is 2 seconds
- 2 times – the module work mode is 2 – measurement period period is 10 seconds
- 3 times – the module work mode is 3 – measurement period period is 1 minute
- 4 times – the module work mode is 4 – measurement period period is 5 minutes
Communication
- Bluetooth Smart also called as Bluetooth Low Energy
- Transferong data is encrypted and signed with AES-128
- Configurable sampling and sending time period: 2 seconds, 10 seconds, 1 minute or 5 minutes
- You can collect and process data with Raspberry Pi, Arduino, etc.
- Library for easy programming
Powering
- 3V CR2032 battery – onboard pads for battery holder: 21 (+) and 22 (-)
- 2 x 1,5V AA or AAA batteries – onboard pins for wires soldering: 7 (+) and 8 (-)
- 2 x 1,2V NiCd or NiMH rechargeables – onboard pins for wires soldering: 7 (+) and 8 (-)
- any source you want within 2,1V to 3,6V – connect to pins 7 (+) and 8 (-)
- with voltage regulator – connect ‘+’ to 10, and ‘-‘ to 22, 23 or 24. Onboard pads 7,8,9 for TO-92 voltage regulator (ex. L78L33, TS2950CT-3.3, LP2950CZ-3.3RAG, MCP1702-3302E, LM2936Z-3.3, LT1121CZ-3.3). Learn more about voltage reg here: Power it easy: BBMagic METEO Bluetooth Low Energy module