nRF5 Multi Sensor Board (12-14€)


  • Contest Winner

    51822_ITC_PolyU_HK

    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:

    When the arduino-nrf5 board definition is ready, I reply here.


  • Hardware Contributor

    @d00616
    that's a pretty cool board :+1: Now I can't wait to show you mine (not exactly same mcu). Still enjoying your port ;)



  • @scalz Any update on your great looking PIR board/s?


  • Contest Winner

    @scalz I'm curious about your board.



  • I don't know if you already managed to read correctly the BLE data.
    Here follows what I get from this (nice and cheap!) sensor. Any tip about decoding?

    0x6E400002 ACCELEROMETER (Acceleration)
    0xFFA0002A3628 (it seems FA00 for x, 02A3 for y , 3628 for z)

    0x6E400003 GYROSCOPE (Angular velocity)
    0xFFA7007FFFC4

    SERVICE 0x6E400004 BAROMETER (Pressure)
    0x0018BE9 (on the table)
    0x0018BDD (about 50 cm above the table)

    SERVICE 0x6E400005 TEMPERATURE
    0x012E (ambient)
    0x0140 (inside warm hand)

    SERVICE 0x6E400006 AMBIENT LIGHT
    0x0000 (dark)
    0x0936 (direct LED torch)


  • Contest Winner

    @mattewre My plan is to use this sensor with MySensors without a SoftDevice later. I had no time to do more research.



  • I have this board, too; thanks for the pinout! Did anyone get access to a proper schematic in the meantime? E.g. how is the BMP180 connected?



  • As usual, ask for something on a public forum and ~5 minutes later, I finally find it myself:

    http://linksprite.com/wiki/index.php5?title=Bluetooth_4.0_BLE_Sensor_Tag/iBeacon_Station_NRF51822



  • Have someone ready working arduino sketch for this board for sharing?


  • Contest Winner

    @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.


  • Hardware Contributor

    @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 see the link with anomaly #39 ?
    But I see it #72 which is not fixed

    72. RTC: Writing to RTC registers without starting the LFCLK could lead to increased current consumption.
    Symptoms:
    Increased current consumption
    .
    Conditions:
    Setting up the RTC by writing to its registers without starting the LFCLK
    .
    Consequences:
    The user will experience an increase in the current consumption of ~1 mA
    .
    Workaround:
    Always run the LFCLK for a minimum of one LFCLK clock cycle after writing to the RTC registers.


  • Hardware Contributor

    @Nca78
    I think it was about the GPIOTE module and pin interrupts needing hfclk, so more power, #39, p.4, listed as fixed


  • Hardware Contributor

    Thank you @scalz I took time for some reading about NRF51 (should have done that before posting stupid things... :blush: ) and it's much clearer now...

    My one and only NRF51822 has build code H0 so it seems I will not pull too many hair when trying to make it run at low power :)



  • @MiKa Here is my sketch if it helps (MySensors v2.2.0-Beta). It uses ALS, BMP180 and RGB leds.
    Working well with my nRF24 LNA+PA GW.

    #include <Arduino.h>
    #define MY_DEBUG
    #define MY_BAUD_RATE 9600
    
    // Mode Radio / Enable and select radio type attached
    #define MY_RADIO_NRF5_ESB
    #define MY_NRF5_ESB_PA_LEVEL NRF5_PA_MAX
    #define MY_NODE_ID 6
    #include "MySensors.h"
    #include <Wire.h>
    #include <Adafruit_BMP085.h>
    
    Adafruit_BMP085 bmp = Adafruit_BMP085();
    
    #define CHILD_ID_TEMP 0
    #define CHILD_ID_BARO  1
    #define CHILD_ID_ALS  2
    
    #define SLEEP_NODE true // True to activate Sleep Mode, but currently unsupported on esp8266
    unsigned long SLEEP_TIME = 120 * 1000; // Sleep time between reads (in milliseconds)
    
    #define RED_PIN 17
    #define GREEN_PIN 18
    #define BLUE_PIN 19
    
    #define COLOR_OFF     0
    #define COLOR_RED     1
    #define COLOR_GREEN   2
    #define COLOR_BLUE    4
    
    MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
    MyMessage msgBaro(CHILD_ID_BARO, V_PRESSURE);
    MyMessage msgForecast(CHILD_ID_BARO, V_FORECAST);
    MyMessage msgALS(CHILD_ID_ALS, V_LIGHT_LEVEL);
    
    void setColor (uint8_t c) {
      digitalWrite (RED_PIN, !(c & COLOR_RED));
      digitalWrite (GREEN_PIN, !(c & COLOR_GREEN));
      digitalWrite (BLUE_PIN, !(c & COLOR_BLUE));
    }
    
    void setup() {
      setColor (COLOR_RED);
      setColor (COLOR_GREEN);
      setColor (COLOR_BLUE);
      Wire.begin();
      pinMode (RED_PIN, OUTPUT);
      pinMode (GREEN_PIN, OUTPUT);
      pinMode (BLUE_PIN, OUTPUT);
      setColor (COLOR_RED);
      delay(250);
      setColor (COLOR_GREEN);
      delay(250);
      setColor (COLOR_BLUE);
      delay(250);
      setColor (COLOR_OFF);
    
      /* BMP180.  */
      if (!bmp.begin()) {
        Serial.println("Could not find a valid BMP085 sensor, check wiring!");
        setColor (COLOR_RED);
        while (1);
      }
    }
    
    void presentation()  {
      sendSketchInfo("nrf Sensor TAG", "1.0.0");
    
      // Sensor presentation to the GW
      present(CHILD_ID_TEMP, S_TEMP);
      present(CHILD_ID_BARO, S_BARO);
      present(CHILD_ID_ALS, S_LIGHT_LEVEL);
    }
    
    void AP3216_write(uint8_t regAddress, uint8_t value) {
      Wire.beginTransmission(0x1E); // I2C Address of AP3216 sensor is 0x1E
      Wire.write(regAddress);
      Wire.write(value);
      Wire.endTransmission();
    }
    
    uint8_t AP3216_read(uint8_t regAddress) {
      Wire.beginTransmission(0x1E); // I2C Address of AP3216 sensor is 0x1E
      Wire.write(regAddress);
      Wire.endTransmission();
      Wire.requestFrom(0x1E, 1, true);
      return Wire.read() & 0xFF;
    }
    
    
    uint16_t readALS (void)
    {
      /* System mode: ALS function once */
      AP3216_write (0x0, 0x5);
      delay (250);
      return ((uint16_t) AP3216_read (0xC) << 8) | AP3216_read (0xD);
    }
    
    void loop() {
      send(msgTemp.set(bmp.readTemperature(), 1));
      send(msgBaro.set(bmp.readPressure(), 1));
      send(msgForecast.set(bmp.readSealevelPressure(834.0), 1));  /* Change altitude here !   */
      send(msgALS.set(readALS(), 1));
    
      setColor (COLOR_BLUE);
      delay (250);
      setColor (COLOR_OFF);
    
      if (SLEEP_NODE)
        sleep(SLEEP_TIME);
      else
        delay (SLEEP_TIME);
    }
    

    You also need to change SDA/SCL pins by creating a new board from the Generic nRF51 (or modifying it)
    In variant.h:

    #define PIN_WIRE_SDA         (9u)
    #define PIN_WIRE_SCL         (10u)
    

  • Contest Winner

    @Ptibu said in nRF5 Multi Sensor Board (12-14€):

    @MiKa Here is my sketch if it helps. It uses ALS, BMP180 and RGB leds.
    Working well with my nRF24 LNA+PA GW.

    Thank you sharing your sketch. You can use https://github.com/mysensors/ArduinoHwNRF5 to redefine pin mappings in your sketch.



  • @d00616 Thanks for porting !



  • Hi,
    Thanks for sketch, I will try
    Which interface You use for upload?
    I tryied ST-Link V2 from ebay it seems it working but I cant get working J-link under arduino (J-link also small version from Ali)
    https://www.aliexpress.com/item/Die-Jlink-OB-ARM-emulator-debugger-jlink-programmierer-downloader-link-statt-V8-SWD/32763735160.html?spm=a2g0s.9042311.0.0.VVtIj7
    Regards,
    MiKa



  • I only tried stlink v2 which works pretty well.



  • Hi,
    Works !!! :) :thumbsup:
    Thanks Ptibu!
    MiKa



  • @mattewre Interesting that you got BLE Services, my board has no services. What .hex file did you flash to get that?

    DO you have a copy?


Log in to reply
 

Looks like your connection to MySensors Forum was lost, please wait while we try to reconnect.