Skip to main content

Arduino Code for test Heart Rate 7 Click

Heart Rate 7 Click is the newest module from MikroE which uses VEM8080 photodetector has a wide range spectrum from 300nm - 1000nm.

To control and acquisition data, AFE4404 from TI inc. is adopted. This chip permits control 3 LED channels, and sample heart rate default 100 SPS.  A 22-bit ADC permit collecting very small changed voltage from a PD sensor.

In this example we config Arduino Mega  2650 as below:
Pin 4 for RST
PIN 5 CLK
PIN 6 INT

PIN 20 SDA
PIN 21 SCL

Config registers follow the default of AFE4404 datasheet Page 27 with some minor changes.

1. Config Internal Clock through  AFE_CONTROL2 register
addr.: 0x23
value: 0x104218  // setup all dynamic power to save energy

2. Control LED2 current through AFE_LEDCNTRL register
addr: 0x22
value: 0x000100

3. Read data using PROG_TG_EN signal through AFE_TIA_GAIN register
addr: 0x21
value: 0x000125

Time to start and end of PROG_TG setup through two registers:

AFE_PROG_TG_STC register (start time)
  addr = 0x34
  value = 0x001563;
 AFE_PROG_TG_ENDC register (end time)
  addr = 0x35
  val = 0x00991F;

The time default for pulse response frequency is 40000 pulse/4MHz. = 10 ms.

So our time for reading adc 10ms.

Full Program can download from Github link:

https://github.com/LongNguyen1984/AFE4404-arduino/blob/master/AFE4404_PPGexp.ino


Comments

Popular posts from this blog

Serial Port Profile with CC2650 and CC2640R2 (part 2) Modified to transfer ADC values up to PC Step 1:  Include ACD.h library #include <ti/drivers/ADC.h>  Step 2: Insert period event in order to update ADC read values from the potentiometer #define SSSS_ICALL_EVT                         ICALL_MSG_EVENT_ID // Event_Id_31 #define SSSS_QUEUE_EVT                         UTIL_QUEUE_EVENT_ID // Event_Id_30 #define SSSS_PERIODIC_EVT                      Event_Id_00 //SOLUTION // Bitwise OR of all events to pend on #define SSSS_ALL_EVENTS                        (SSSS_ICALL_EVT        | \                                ...
Experiment Sensor Booster Pack with CC2650 In this experiment, we use CC2650 rather CC2640Rx2 to read light level from OTP3001 on the sensor board. It follows the Task 3, Task 4 from TI tutorial http://dev.ti.com/tirex/content/simplelink_academy_cc2640r2sdk_1_13_02_07/modules/ble_02_thermostat/ble_02_thermostat.html Here we need some modified like last post to make the project run. First, to define the board CC2650 in file Board.h #define     Board_I2C_TMP           CC2650_LAUNCHXL_I2C0 Also, define IC address in file otp3001.c( replaced for tmp007.c) #define Board_TMP_ADDR   0x47 #if defined(ONBOARD_TMP006) #define TMP_REGISTER TMP_DIE_TEMP #define TMP_ADDR     Board_TMP_ADDR #else #define TMP_REGISTER TMP_OBJ_TEMP #define CONF_REGISTER 0x01 #define TMP_ADDR     Board_TMP_ADDR #endif Declare two new variables for reading exponent part and result uint16_t       ...
Serial Port Profile with CC2650 and CC2640R2 This test based on code from TI support under link: For CC2650: https://github.com/ti-simplelink/ble_examples/blob/ble_examples-2.2/docs/spp_ble.md For CC2640R2: https://github.com/ti-simplelink/ble_examples/blob/simplelink_cc2640r2_sdk-2.20/examples/rtos/CC2640R2_LAUNCHXL/bleapps/simple_serial_socket_client/readme.md In this experiment, I use CC2640R2 as Server (Peripheral) and CC2650 as Client (Central) as the image below: Step1: import project spp_ble_client_cc2650lp (app and stack) for CC2650 Step2: modify Code of Service in file serial_port_service:               C0E0 ==> C0C0               C0E1 ==> C0C1               C0E2 ==> C0C2 If you don't change, Two Blue Tooth Board cant know to service each other. Step 3: import project simple_serial_socket_client_CC2640r2 for CC2640R2 here we using RealTerm...