nRF5 Multi Sensor Board (12-14€)
-

The "ITC PolyU HK" is one of the most interesting nRF5 Boards I have found. This board is useable with the upcoming MySensors 2.2 release. The radio can communicate with nRF24 networks.
At eBay or aliexpress boards are available starting at 12€. The ob board hardware is:
- nRF51822QFAA (Cortex-M0, 16kB RAM, 256kb Flash, SPI, I2C, UART...)
- Two Buttons
- one RGB LED
- MPU6050 accelerometer
- AP3216C distance and ambient light sensor
- BMP180 pressure and temperature sensor
- CR2032 Battery Holder
At the moment I have decoded the layout. There is no arduino-nrf5 board definition. My idea is to build a repository of YAML based board definitions to generate board definitions without letting the list of arduino-nrf5 included boards growing.
Issues:
- Board is not supported by arduino-nrf5 at the moment
- UART only available via two of the solder/contact pads
- ~~Sleeping until pin interrupt consumes 1mA -> https://github.com/sandeepmistry/arduino-nRF5/issues/153~~
When the arduino-nrf5 board definition is ready, I reply here.
@d00616 really wonderful of you to do the pinout work you have done, thank-you.
I have got the accelerometer (MPU6050) working as a service in nordic mbed, and I thought I would throw in some of what I learned to add to the great work you have done.
The schematic shows that the AD0 (pin 9) is floating (it is not, thank heavens!) it is tied to the VLogic pin ( pin 8 ). This results in the 7-Bit address of the board changing from 0x68 to 0x69.
I hope this helps others.
Also, other I2C also as posted by @Ptibu
Bosch BMP180 is 0x77 - untested
The AP3216C is 0x1E - untested
MPU6050 is 0x69 - works - testedAlso pins 17,18,19 are Red Green Blue
(And not Red Blue Green as shown on the schematic)thanks for your help.
bb
-
Hi Guys
Sorry for bringing the level of that thread down...
This little thing looks wonderful... but :
Could it be a direct replacement of Arduino Pro Mini and nRF24L01+ ?
Thanks a lot gentlemen !
@ben999 said in nRF5 Multi Sensor Board (12-14€):
Could it be a direct replacement of Arduino Pro Mini and nRF24L01+ ?
Maybe, the NRF5 can replace the combination of ATMEGA+NRF24 chips but it's a 3.3V chip and I don't know an NRF5 board in Arduino Pro Mini layout.
Please look at https://forum.mysensors.org/topic/6961/nrf5-bluetooth-action/1092 for pros and cons.
At the moment the radio protocol is a little bit unstable, because there is an hardware issue, which must be fixed in software. At the moment I do a rewrite of the ESB protocol, which fix this issue. My old implementation is hard to debug. With my new implementation the radio states are separated into extra functions and I use more of the nice event driven capabilities (PPI, Shorts). Until I have finished this fix, sometimes an NRF52 needs an reset.
-
@d00616 said in nRF5 Multi Sensor Board (12-14€):
Sleeping until pin interrupt consumes 1mA -> https://github.com/sandeepmistry/arduino-nRF5/issues/153
I have found some documentation. The high current consumption was listed as PAN#39 and is fixed with this MCU: http://infocenter.nordicsemi.com/pdf/nRF51822-pan_v3.0.pdf
The MCU is nRF51822QFAAH0.
@d00616 said in nRF5 Multi Sensor Board (12-14€):
@d00616 said in nRF5 Multi Sensor Board (12-14€):
Sleeping until pin interrupt consumes 1mA -> https://github.com/sandeepmistry/arduino-nRF5/issues/153
I have found some documentation. The high current consumption was listed as PAN#39 and is fixed with this MCU: http://infocenter.nordicsemi.com/pdf/nRF51822-pan_v3.0.pdf
The MCU is nRF51822QFAAH0.
I don't know how the sleep is implemented (CONFIG/GPIOTE) and if I'm facing this bug, but my battery lasts 2 days, with a wake-up period of 2 minutes (QFAAH0 MCU)... any idea?
-
@d00616 said in nRF5 Multi Sensor Board (12-14€):
@d00616 said in nRF5 Multi Sensor Board (12-14€):
Sleeping until pin interrupt consumes 1mA -> https://github.com/sandeepmistry/arduino-nRF5/issues/153
I have found some documentation. The high current consumption was listed as PAN#39 and is fixed with this MCU: http://infocenter.nordicsemi.com/pdf/nRF51822-pan_v3.0.pdf
The MCU is nRF51822QFAAH0.
I don't know how the sleep is implemented (CONFIG/GPIOTE) and if I'm facing this bug, but my battery lasts 2 days, with a wake-up period of 2 minutes (QFAAH0 MCU)... any idea?
@Ptibu said in nRF5 Multi Sensor Board (12-14€):
I don't know how the sleep is implemented (CONFIG/GPIOTE) and if I'm facing this bug, but my battery lasts 2 days, with a wake-up period of 2 minutes (QFAAH0 MCU)... any idea?
Do you have powered off the MCU after flashing? After programming, the debug interface is active. To disable this interface, you have to reset the MCU.
-
@Ptibu said in nRF5 Multi Sensor Board (12-14€):
I don't know how the sleep is implemented (CONFIG/GPIOTE) and if I'm facing this bug, but my battery lasts 2 days, with a wake-up period of 2 minutes (QFAAH0 MCU)... any idea?
Do you have powered off the MCU after flashing? After programming, the debug interface is active. To disable this interface, you have to reset the MCU.
@d00616 said in nRF5 Multi Sensor Board (12-14€):
@Ptibu said in nRF5 Multi Sensor Board (12-14€):
I don't know how the sleep is implemented (CONFIG/GPIOTE) and if I'm facing this bug, but my battery lasts 2 days, with a wake-up period of 2 minutes (QFAAH0 MCU)... any idea?
Do you have powered off the MCU after flashing? After programming, the debug interface is active. To disable this interface, you have to reset the MCU.
I'm not sure if I reset it. I will check this with a new battery and a multimeter. Thank you for the hint!
-
@d00616 said in nRF5 Multi Sensor Board (12-14€):
@Ptibu said in nRF5 Multi Sensor Board (12-14€):
I don't know how the sleep is implemented (CONFIG/GPIOTE) and if I'm facing this bug, but my battery lasts 2 days, with a wake-up period of 2 minutes (QFAAH0 MCU)... any idea?
Do you have powered off the MCU after flashing? After programming, the debug interface is active. To disable this interface, you have to reset the MCU.
I'm not sure if I reset it. I will check this with a new battery and a multimeter. Thank you for the hint!
@ptibu Did you finally solve the power consumption problem? My MCU is even newer (QFAAH1) and consumption is around 1mA all the time, which makes drain the battery in a few days.
I bought my sensor in Aliexpress and I haven't flashed it. It's running with the code provided by the vendor. Can any of you recommend me a cheap cable/interface to flash it? It would be great to buy one that is already tested with this device. Thanks in advance!
-
Any news?
-
@ptibu Did you finally solve the power consumption problem? My MCU is even newer (QFAAH1) and consumption is around 1mA all the time, which makes drain the battery in a few days.
I bought my sensor in Aliexpress and I haven't flashed it. It's running with the code provided by the vendor. Can any of you recommend me a cheap cable/interface to flash it? It would be great to buy one that is already tested with this device. Thanks in advance!
@aguedob said in nRF5 Multi Sensor Board (12-14€):
@ptibu Did you finally solve the power consumption problem? My MCU is even newer (QFAAH1) and consumption is around 1mA all the time, which makes drain the battery in a few days.
Hello, from what I have read the hardware bug is not really fixed on newer version of nrf51822, so it's necessary to use the PORT mode and pin sensing to keep the high frequency clock off and get a really low power consumption.
I made a test script that is running fine on my boards (5-6 µA in sleep instead of 0.9mA with interrupts), can any of you adapt it (changing pin numbers should be enough for a first test) and test it on this multisensor board ?https://forum.mysensors.org/topic/9234/additional-sleep-methods-with-array-of-pins-as-parameters/8
-
Hello, everyone,
Is it possible to set the range of the sensors (BMP180, AP3216C and MPU6050) on the NRF5 board. I bought the board in Aliexpress which is running with the code provided by the vendor.
Thank you in advanced,
Pascal
-
@aguedob said in nRF5 Multi Sensor Board (12-14€):
@ptibu Did you finally solve the power consumption problem? My MCU is even newer (QFAAH1) and consumption is around 1mA all the time, which makes drain the battery in a few days.
Hello, from what I have read the hardware bug is not really fixed on newer version of nrf51822, so it's necessary to use the PORT mode and pin sensing to keep the high frequency clock off and get a really low power consumption.
I made a test script that is running fine on my boards (5-6 µA in sleep instead of 0.9mA with interrupts), can any of you adapt it (changing pin numbers should be enough for a first test) and test it on this multisensor board ?https://forum.mysensors.org/topic/9234/additional-sleep-methods-with-array-of-pins-as-parameters/8
-
@ptibu said in nRF5 Multi Sensor Board (12-14€):
@Nca78 Nice information. should give this a try when I'll be less busy.
If you do, start from the full code that I posted here : https://drive.google.com/open?id=1IhLIx0nHd5KZR9dJ9qA0-_SMGmjEpbKj
-
Hi,
I got this error, what wrong???Using precompiled core
Linking everything together...
"C:\Users\MiKa\AppData\Local\Arduino15\packages\sandeepmistry\tools\gcc-arm-none-eabi\5_2-2015q4/bin/arm-none-eabi-gcc" "-LC:\Users\MiKa\AppData\Local\Temp\arduino_build_372810" -Os -Wl,--gc-sections -save-temps "-LC:\Users\MiKa\AppData\Local\Arduino15\packages\sandeepmistry\hardware\nRF5\0.5.1\cores\nRF5/SDK/components/toolchain/gcc/" "-LC:\Users\MiKa\AppData\Local\Arduino15\packages\sandeepmistry\hardware\nRF5\0.5.1\cores\nRF5/SDK/components/softdevice/none/toolchain/armgcc/" "-Tnrf51_xxaa.ld" "-Wl,-Map,C:\Users\MiKa\AppData\Local\Temp\arduino_build_372810/_22_Door_Sensor.ino.map" --specs=nano.specs --specs=nosys.specs -mcpu=cortex-m0 -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -o "C:\Users\MiKa\AppData\Local\Temp\arduino_build_372810/_22_Door_Sensor.ino.elf" "C:\Users\MiKa\AppData\Local\Temp\arduino_build_372810\sketch\app_error.c.o" "C:\Users\MiKa\AppData\Local\Temp\arduino_build_372810\sketch\app_error_weak.c.o" "C:\Users\MiKa\AppData\Local\Temp\arduino_build_372810\sketch\app_gpiote.c.o" "C:\Users\MiKa\AppData\Local\Temp\arduino_build_372810\sketch\MyBoardNRF5.cpp.o" "C:\Users\MiKa\AppData\Local\Temp\arduino_build_372810\sketch_22_Door_Sensor.ino.cpp.o" "C:\Users\MiKa\AppData\Local\Temp\arduino_build_372810\core\variant.cpp.o" -Wl,--start-group -lm "C:\Users\MiKa\AppData\Local\Temp\arduino_build_372810/..\arduino_cache_2928\core\core_MySensors_nRF5_MyBoard_nRF51822_chip_xxaa,bootcode_none,lfclk_lfxo_89b01c12b33d173746e7c52b6a4ab42a.a" -Wl,--end-group
C:\Users\MiKa\AppData\Local\Temp\arduino_build_372810/..\arduino_cache_2928\core\core_MySensors_nRF5_MyBoard_nRF51822_chip_xxaa,bootcode_none,lfclk_lfxo_89b01c12b33d173746e7c52b6a4ab42a.a(WInterrupts.c.o): In function `GPIOTE_IRQHandler':C:\Users\MiKa\AppData\Local\Arduino15\packages\sandeepmistry\hardware\nRF5\0.5.1\cores\nRF5/WInterrupts.c:129: multiple definition of `GPIOTE_IRQHandler'
C:\Users\MiKa\AppData\Local\Temp\arduino_build_372810\sketch\app_gpiote.c.o:C:\Users\MiKa\AppData\Local\Temp\arduino_build_372810\sketch/app_gpiote.c:79: first defined here
c:/users/mika/appdata/local/arduino15/packages/sandeepmistry/tools/gcc-arm-none-eabi/5_2-2015q4/bin/../lib/gcc/arm-none-eabi/5.2.1/../../../../arm-none-eabi/bin/ld.exe: warning: changing start of section .heap by 4 bytes
c:/users/mika/appdata/local/arduino15/packages/sandeepmistry/tools/gcc-arm-none-eabi/5_2-2015q4/bin/../lib/gcc/arm-none-eabi/5.2.1/../../../../arm-none-eabi/bin/ld.exe: warning: changing start of section .stack_dummy by 4 bytes
c:/users/mika/appdata/local/arduino15/packages/sandeepmistry/tools/gcc-arm-none-eabi/5_2-2015q4/bin/../lib/gcc/arm-none-eabi/5.2.1/../../../../arm-none-eabi/bin/ld.exe: warning: changing start of section .heap by 4 bytes
c:/users/mika/appdata/local/arduino15/packages/sandeepmistry/tools/gcc-arm-none-eabi/5_2-2015q4/bin/../lib/gcc/arm-none-eabi/5.2.1/../../../../arm-none-eabi/bin/ld.exe: warning: changing start of section .stack_dummy by 4 bytes
c:/users/mika/appdata/local/arduino15/packages/sandeepmistry/tools/gcc-arm-none-eabi/5_2-2015q4/bin/../lib/gcc/arm-none-eabi/5.2.1/../../../../arm-none-eabi/bin/ld.exe: warning: changing start of section .heap by 4 bytes
c:/users/mika/appdata/local/arduino15/packages/sandeepmistry/tools/gcc-arm-none-eabi/5_2-2015q4/bin/../lib/gcc/arm-none-eabi/5.2.1/../../../../arm-none-eabi/bin/ld.exe: warning: changing start of section .stack_dummy by 4 bytes
collect2.exe: error: ld returned 1 exit status
Using library MySensors-development at version 2.3.0-alpha in folder: C:\Users\MiKa\Documents\Arduino\libraries\MySensors-development
exit status 1
Error compiling for board MyBoardNRF5 nRF51822. -
Hi,
I got this error, what wrong???Using precompiled core
Linking everything together...
"C:\Users\MiKa\AppData\Local\Arduino15\packages\sandeepmistry\tools\gcc-arm-none-eabi\5_2-2015q4/bin/arm-none-eabi-gcc" "-LC:\Users\MiKa\AppData\Local\Temp\arduino_build_372810" -Os -Wl,--gc-sections -save-temps "-LC:\Users\MiKa\AppData\Local\Arduino15\packages\sandeepmistry\hardware\nRF5\0.5.1\cores\nRF5/SDK/components/toolchain/gcc/" "-LC:\Users\MiKa\AppData\Local\Arduino15\packages\sandeepmistry\hardware\nRF5\0.5.1\cores\nRF5/SDK/components/softdevice/none/toolchain/armgcc/" "-Tnrf51_xxaa.ld" "-Wl,-Map,C:\Users\MiKa\AppData\Local\Temp\arduino_build_372810/_22_Door_Sensor.ino.map" --specs=nano.specs --specs=nosys.specs -mcpu=cortex-m0 -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -o "C:\Users\MiKa\AppData\Local\Temp\arduino_build_372810/_22_Door_Sensor.ino.elf" "C:\Users\MiKa\AppData\Local\Temp\arduino_build_372810\sketch\app_error.c.o" "C:\Users\MiKa\AppData\Local\Temp\arduino_build_372810\sketch\app_error_weak.c.o" "C:\Users\MiKa\AppData\Local\Temp\arduino_build_372810\sketch\app_gpiote.c.o" "C:\Users\MiKa\AppData\Local\Temp\arduino_build_372810\sketch\MyBoardNRF5.cpp.o" "C:\Users\MiKa\AppData\Local\Temp\arduino_build_372810\sketch_22_Door_Sensor.ino.cpp.o" "C:\Users\MiKa\AppData\Local\Temp\arduino_build_372810\core\variant.cpp.o" -Wl,--start-group -lm "C:\Users\MiKa\AppData\Local\Temp\arduino_build_372810/..\arduino_cache_2928\core\core_MySensors_nRF5_MyBoard_nRF51822_chip_xxaa,bootcode_none,lfclk_lfxo_89b01c12b33d173746e7c52b6a4ab42a.a" -Wl,--end-group
C:\Users\MiKa\AppData\Local\Temp\arduino_build_372810/..\arduino_cache_2928\core\core_MySensors_nRF5_MyBoard_nRF51822_chip_xxaa,bootcode_none,lfclk_lfxo_89b01c12b33d173746e7c52b6a4ab42a.a(WInterrupts.c.o): In function `GPIOTE_IRQHandler':C:\Users\MiKa\AppData\Local\Arduino15\packages\sandeepmistry\hardware\nRF5\0.5.1\cores\nRF5/WInterrupts.c:129: multiple definition of `GPIOTE_IRQHandler'
C:\Users\MiKa\AppData\Local\Temp\arduino_build_372810\sketch\app_gpiote.c.o:C:\Users\MiKa\AppData\Local\Temp\arduino_build_372810\sketch/app_gpiote.c:79: first defined here
c:/users/mika/appdata/local/arduino15/packages/sandeepmistry/tools/gcc-arm-none-eabi/5_2-2015q4/bin/../lib/gcc/arm-none-eabi/5.2.1/../../../../arm-none-eabi/bin/ld.exe: warning: changing start of section .heap by 4 bytes
c:/users/mika/appdata/local/arduino15/packages/sandeepmistry/tools/gcc-arm-none-eabi/5_2-2015q4/bin/../lib/gcc/arm-none-eabi/5.2.1/../../../../arm-none-eabi/bin/ld.exe: warning: changing start of section .stack_dummy by 4 bytes
c:/users/mika/appdata/local/arduino15/packages/sandeepmistry/tools/gcc-arm-none-eabi/5_2-2015q4/bin/../lib/gcc/arm-none-eabi/5.2.1/../../../../arm-none-eabi/bin/ld.exe: warning: changing start of section .heap by 4 bytes
c:/users/mika/appdata/local/arduino15/packages/sandeepmistry/tools/gcc-arm-none-eabi/5_2-2015q4/bin/../lib/gcc/arm-none-eabi/5.2.1/../../../../arm-none-eabi/bin/ld.exe: warning: changing start of section .stack_dummy by 4 bytes
c:/users/mika/appdata/local/arduino15/packages/sandeepmistry/tools/gcc-arm-none-eabi/5_2-2015q4/bin/../lib/gcc/arm-none-eabi/5.2.1/../../../../arm-none-eabi/bin/ld.exe: warning: changing start of section .heap by 4 bytes
c:/users/mika/appdata/local/arduino15/packages/sandeepmistry/tools/gcc-arm-none-eabi/5_2-2015q4/bin/../lib/gcc/arm-none-eabi/5.2.1/../../../../arm-none-eabi/bin/ld.exe: warning: changing start of section .stack_dummy by 4 bytes
collect2.exe: error: ld returned 1 exit status
Using library MySensors-development at version 2.3.0-alpha in folder: C:\Users\MiKa\Documents\Arduino\libraries\MySensors-development
exit status 1
Error compiling for board MyBoardNRF5 nRF51822.@mika sorry I think I forgot to include in the code the instruction :
In the WInterrupt.c file before the GPIOTE_IRQHandler you need to include a weak attribute so it can be overridden :
__attribute__ ((weak)) void GPIOTE_IRQHandler()It's the file linked in your error message :
C:\Users\MiKa\AppData\Local\Arduino15\packages\sandeepmistry\hardware\nRF5\0.5.1\cores\nRF5/WInterrupts.c:129 -
Dear colleagues!
I have this nice nRF51 sensor tag. May be you can help me to understand the limitations of this board.
I want to make wireless water tank cap opening sensor. I have another device (my own development) with bluetooth BLE interface, with external power supply which will act as receiver.And I'd like to use nRF51 as wireless battery powered cap opening sensor. As I can understand in Aliexpress-version it is not possible (short battery life). I think I must make new firmware at least.
But is it possible to do onboard ?- Switch off BLE transmission but still make onboard analysis of fuel cap movement with MPU6050
- When cap open event is detected (my MPU6050 data) - wake up BLE and start transmission.
Or may be Low power BLE mode will shut up MPU6050 transmission too and this mission is impossible?
Many thanks!
-
Dear colleagues!
I have this nice nRF51 sensor tag. May be you can help me to understand the limitations of this board.
I want to make wireless water tank cap opening sensor. I have another device (my own development) with bluetooth BLE interface, with external power supply which will act as receiver.And I'd like to use nRF51 as wireless battery powered cap opening sensor. As I can understand in Aliexpress-version it is not possible (short battery life). I think I must make new firmware at least.
But is it possible to do onboard ?- Switch off BLE transmission but still make onboard analysis of fuel cap movement with MPU6050
- When cap open event is detected (my MPU6050 data) - wake up BLE and start transmission.
Or may be Low power BLE mode will shut up MPU6050 transmission too and this mission is impossible?
Many thanks!
@mechand use MySensors you can send a message only when you want without any tricks with BLE.
And BLE/radio and accelerometer are 2 different things so you should be able to shut down BLE and go to sleep after configuring the accelerometer to generate an interrupt if it detects movement. But if you want to stick to BLE the solution is probably to advertise with big intervals, current battery drain is not due to BLE but due to a hardware problem with pin interrupts. -
@mechand use MySensors you can send a message only when you want without any tricks with BLE.
And BLE/radio and accelerometer are 2 different things so you should be able to shut down BLE and go to sleep after configuring the accelerometer to generate an interrupt if it detects movement. But if you want to stick to BLE the solution is probably to advertise with big intervals, current battery drain is not due to BLE but due to a hardware problem with pin interrupts. -
I got some of these from ebay, but they're fitted with nrf51802 QFAAA1 instead of a 51822. I can't find the memory sizes etc. for the 51802 - can they be used ?
@artag The nRF51802 QFAA has 256k Flash and 16k RAM. It is pin to pin compatible with the nRF51822QFAA in the QFN48 package, 6x6 mm. Note that some of the parameters for the nRF51802 are slightly looser then the nRF51822. (Current consumption, wakeup time, sensitivity)