An example program for Rohm SensorShield-EVK-001 running with Mbed OS 5.

Dependencies:   BM1422AGMV rohm-rpr0521 rohm-sensor-hal rohm-bh1790glc-driver BH1749NUC KX224-1053 BM1383AGLV RegisterWriter

Getting Started with Rohm SensorShield-EVK-001

This example demonstrates how to use the SensorShield-EVK-001 component with multiple sensors. those measured values, which received through a serial connection from a mbed board, are printed out in a terminal software window.

Setup

/media/uploads/edamame22/img_5218.jpg

The SensorShield-EVK-001 is plugged on top of a mbed board and a serial connection should be set up between the mbed board and PC with the following parameters:

  • baud rate: 115200
  • data: 8 bit
  • parity: none
  • stop: 1bit
  • flow control: none

Terminal parameters

/media/uploads/edamame22/serial_port_setup.png /media/uploads/edamame22/terminal_setup.png

Measured Data Output

/media/uploads/edamame22/data_output_2.png

Revision:
5:f0dac0711070
Parent:
4:e1f9ba2da8af
Child:
6:b38a0cbc1b3f
--- a/Source/main.cpp	Fri Feb 22 11:45:06 2019 +0900
+++ b/Source/main.cpp	Wed Feb 27 04:43:57 2019 +0000
@@ -1,4 +1,4 @@
-/* Rohm SensorShield-EVK-xxx Example
+/* Rohm SensorShield-EVK-001 Example
  * Copyright (c) 2019 ARM Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -22,92 +22,88 @@
 #include "rohm-rpr0521/rohm-rpr0521/rpr0521.h"
 #include "rohm-rpr0521/rohm-rpr0521/rpr0521_driver.h"
 #include "rohm-sensor-hal/rohm-sensor-hal/I2CCommon.h"
+#include "rohm-bh1790glc-driver/bh1790glc.h"
+
+BM1383AGLV pressure(I2C_SDA, I2C_SCL);
+BM1422AGMV magnetometer(I2C_SDA, I2C_SCL);
+KX224 accelerometer(I2C_SDA, I2C_SCL);
 #if BH1790GLC_CONNECTED == 1
-#include "rohm-bh1790glc-driver/bh1790glc.h"
+RegisterWriter i2c_rw_bh(I2C_SDA, I2C_SCL);
+BH1790GLC heartrate(i2c_rw_bh);
 #endif
 
-BM1383AGLV Pressure(I2C_SDA, I2C_SCL);
-BM1422AGMV Magnetometer(I2C_SDA, I2C_SCL);
-KX224 Accelerometer(I2C_SDA, I2C_SCL);
-#if BH1790GLC_CONNECTED == 1
-RegisterWriter i2c_rw_bh(I2C_SDA, I2C_SCL);
-BH1790GLC HeartRate(i2c_rw_bh);
-#endif
 #ifdef TARGET_K66F
 #warning A2 pin is disabled on THIS BOARD, please use A0 pin for BD1020HFV!!
 #endif
-AnalogIn Temperature(A0);
-
-
-Serial pc(USBTX, USBRX);
+AnalogIn temperature(A0); // BD1020HFV
 
 int main() {
     float axis_ac[3], temp1_bd1020hfv, temp2_bd1020hfv ;
     bool err_rpr0521;
-    int err_bh1790, err_KX224;
+    int ret;
     uint16_t bh1790_data[2], rpr0521_data[3];
 
-    pc.printf("\r\nExample program for using following Rohm sensor libraries\r\n");
-    pc.printf("\n      - BM1383AGLV: Pressure/Temperature sensor\r\n");
-    pc.printf("\r      - BM1422AGMV: 3 axis magnetic sensor\r\n");
-    pc.printf("\r      - KX224-1053: 3 axis accelerometer\r\n");
+    printf("\r\nExample program for using following Rohm sensor libraries\r\n");
+    printf("      - BM1383AGLV: Pressure/Temperature sensor\r\n");
+    printf("      - BM1422AGMV: 3 axis magnetic sensor\r\n");
+    printf("      - KX224-1053: 3 axis accelerometer\r\n");
 #if BH1790GLC_CONNECTED == 1
-    pc.printf("\r      - BH1790GLC:  optical sensor for heart rate monitor\r\n");
+    printf("      - BH1790GLC:  optical sensor for heart rate monitor\r\n");
 #endif
-    pc.printf("\r      - RPR-0521RS: Light & Proximity Sensor\r\n");
-    pc.printf("\r      - BD1020HFV:  Temperature Sensor, Formula values should be calibrated before use.\r\n");
+    printf("      - RPR-0521RS: Light & Proximity Sensor\r\n");
+    printf("      - BD1020HFV:  Temperature Sensor, Formula values should be calibrated before use.\r\n");
 
     //init KX224-1053
-    err_KX224=Accelerometer.initialize();
-    if (err_KX224!=0){
-        pc.printf("\r\nKX224-1053  :   Failed initialization \n");
+    ret = accelerometer.initialize();
+    if (ret != 0) {
+    	printf("\r\nKX224-1053  :   Failed initialization \n");
     }
 
 #if BH1790GLC_CONNECTED == 1
-    do{ //init BH1790GLC
-        err_bh1790 = HeartRate.set_default_on();
+    do { //init BH1790GLC
+        ret = heartrate.set_default_on();
         wait_ms(300);
-    } while (err_bh1790);
+    } while (ret);
 #endif
 
     //init RPR-0521RS
     I2CCommonBegin();
     rpr0521_wait_until_found();
-    pc.printf("\nRPR-0521RS Sensor found.\r\n");
+    printf("\nRPR-0521RS Sensor found.\r\n");
     rpr0521_initial_setup();
 
-    while(1) {
-        pc.printf("\r++++++++++++++++++\r");
-        pc.printf("\r\nBM1383AGLV  :   pressure=%7.2f,  temperature=%5.3f\r\n", Pressure.getPressure(), Pressure.getTemperature());
-        Magnetometer.get_val(&axis_ac[0]);
-        pc.printf("\r\nBM1422AGMV  :   X=%7.2f,    Y=%7.2f,    Z=%7.2f\r\n", axis_ac[0], axis_ac[1], axis_ac[2]);
-        Accelerometer.get_val(&axis_ac[0]);
-       	pc.printf("\r\nKX224-1053  :   X=%7.2f,    Y=%7.2f,    Z=%7.2f\r\n", axis_ac[0], axis_ac[1], axis_ac[2]);
+    while (1) {
+        printf("\r++++++++++++++++++\r");
+        printf("BM1383AGLV  :   pressure=%7.2f,  temperature=%5.3f\r\n", pressure.getPressure(), pressure.getTemperature());
+        magnetometer.get_val(&axis_ac[0]);
+        printf("BM1422AGMV  :   X=%7.2f,    Y=%7.2f,    Z=%7.2f\r\n", axis_ac[0], axis_ac[1], axis_ac[2]);
+        accelerometer.get_val(&axis_ac[0]);
+       	printf("KX224-1053  :   X=%7.2f,    Y=%7.2f,    Z=%7.2f\r\n", axis_ac[0], axis_ac[1], axis_ac[2]);
 
 #if BH1790GLC_CONNECTED == 1
-        err_bh1790 = HeartRate.getresults(&bh1790_data[0]);
-        if(err_bh1790) {
-            pc.printf("\r\nBH1790GLC   :   Failed reading value from BH1790GLC\r\n");
+        ret = heartrate.getresults(&bh1790_data[0]);
+        if (ret) {
+            printf("BH1790GLC   :   Failed reading value from BH1790GLC\r\n");
         } else {
-            pc.printf("\r\nBH1790GLC   :   value= %d, \t%d\n\r", bh1790_data[1], bh1790_data[0]);
+            printf("BH1790GLC   :   value= %d, \t%d\n\r", bh1790_data[1], bh1790_data[0]);
         }
 #endif
 
         err_rpr0521 = rpr0521_read_data(&rpr0521_data[0]);
-        if(err_rpr0521) {
-            pc.printf("\r\nRPR-0521RS  :   Failed reading value from RPR-0521RS\r\n");
+        if (err_rpr0521) {
+            printf("RPR-0521RS  :   Failed reading value from RPR-0521RS\r\n");
         } else {
-            pc.printf("\r\nRPR-0521RS  :   PS= %4u,    Als0= %4u,    Als1= %4u\r\n", rpr0521_data[0], rpr0521_data[1], rpr0521_data[2]);
+            printf("RPR-0521RS  :   PS= %4u,     Als0= %4u,   Als1= %4u\r\n", rpr0521_data[0], rpr0521_data[1], rpr0521_data[2]);
         }
 
-        //Input voltage 0-3.3V == 0.0-1.0f
-        //-40'C == 1.87V
-        //  0'C == 1.546V
-        //192'C == 0V (out of scale)
-        //1.87V / 232'C = 0.008060V/'C
-        temp1_bd1020hfv = -(1000 * (Temperature * 3.3f) - 1546) / 8.2;
-        temp2_bd1020hfv = 192 - ( Temperature * 3.3f / 0.008060 );
-        pc.printf("\r\nBD1020HFV   :   formula1= %5.3f,     formula2= %5.3f\r\n", temp1_bd1020hfv, temp2_bd1020hfv);
+        // Input voltage 0-3.3V == 0.0-1.0f
+        // -40'C == 1.87V
+        //   0'C == 1.546V
+        // 192'C == 0V (out of scale)
+        // 1.87V / 232'C = 0.008060V/'C
+        temp1_bd1020hfv = -(1000 * (temperature * 3.3f) - 1546) / 8.2;
+        temp2_bd1020hfv = 192 - ( temperature * 3.3f / 0.008060 );
+        printf("BD1020HFV   :   formula1= %5.3f,     formula2= %5.3f\r\n", temp1_bd1020hfv, temp2_bd1020hfv);
         wait(3);
     }
 }