Skip to content
This repository was archived by the owner on Oct 15, 2024. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 17 additions & 10 deletions src/ingestion-sdk-platform/wio-terminal/ei_device_wio_terminal.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,16 +42,17 @@
typedef enum
{
ACCELEROMETER = 0,
MICROPHONE,
LIGHT,
GAS,
BME280,
DPS310,
TFMINI,
BMI088,
ULTRASONIC,
SCD30,
MICROPHONE
SCD30

}used_sensors_t;
} used_sensors_t;

#define EDGE_STRINGIZE_(x) #x
#define EDGE_STRINGIZE(x) EDGE_STRINGIZE_(x)
Expand Down Expand Up @@ -180,12 +181,23 @@ bool EiDeviceWioTerminal::get_sensor_list(const ei_device_sensor_t **sensor_list
sensors[ACCELEROMETER].frequencies[0] = 62.5f;
sensors[ACCELEROMETER].frequencies[1] = 100.0f;

sensors[MICROPHONE].name = "Built-in microphone";
sensors[MICROPHONE].start_sampling_cb = &ei_microphone_setup_data_sampling;
sensors[MICROPHONE].max_sample_length_s = 5;
sensors[MICROPHONE].frequencies[0] = 16000.0f;

sensors[LIGHT].name = "Built-in light sensor";
sensors[LIGHT].start_sampling_cb = &ei_light_setup_data_sampling;
sensors[LIGHT].max_sample_length_s = available_bytes / (100 * SIZEOF_N_AXIS_SAMPLED);
sensors[LIGHT].frequencies[0] = 62.5f;
sensors[LIGHT].frequencies[1] = 100.0f;

sensors[GAS].name = "External multichannel gas(Grove-multichannel gas v2)";
sensors[GAS].start_sampling_cb = &ei_mutlgas_setup_data_sampling;
sensors[GAS].max_sample_length_s = available_bytes / (100 * SIZEOF_N_GAS_SAMPLED);
sensors[GAS].frequencies[0] = 100.0f;

sensors[BME280].name = "External temperature sensor(Grove-BME280)";
sensors[BME280].name = "External temperature&humidity&pressure sensor(Grove-BME280)";
sensors[BME280].start_sampling_cb = &ei_bme280_setup_data_sampling;
sensors[BME280].max_sample_length_s = available_bytes / (100 * SIZEOF_N_TEMP_SAMPLED);
sensors[BME280].frequencies[0] = 62.5f;
Expand All @@ -203,7 +215,7 @@ bool EiDeviceWioTerminal::get_sensor_list(const ei_device_sensor_t **sensor_list
sensors[TFMINI].frequencies[0] = 62.5f;
sensors[TFMINI].frequencies[1] = 100.0f;

sensors[BMI088].name = "External 6-axis accelerator(Grove-BMI088)";
sensors[BMI088].name = "External 6-axis accelerometer(Grove-BMI088)";
sensors[BMI088].start_sampling_cb = &ei_bmi088_setup_data_sampling;
sensors[BMI088].max_sample_length_s = available_bytes / (100 * SIZEOF_N_GYRO_SAMPLED);
sensors[BMI088].frequencies[0] = 62.5f;
Expand All @@ -216,11 +228,6 @@ bool EiDeviceWioTerminal::get_sensor_list(const ei_device_sensor_t **sensor_list
sensors[ULTRASONIC].frequencies[0] = 62.5f;
sensors[ULTRASONIC].frequencies[1] = 100.0f;

sensors[MICROPHONE].name = "Built-in microphone";
sensors[MICROPHONE].start_sampling_cb = &ei_microphone_setup_data_sampling;
sensors[MICROPHONE].max_sample_length_s = 5;
sensors[MICROPHONE].frequencies[0] = 8000.0f;

sensors[SCD30].name = "External CO2+Temp sensor(Grove-SCD30)";
sensors[SCD30].start_sampling_cb = &ei_scd30_setup_data_sampling;
sensors[SCD30].max_sample_length_s = available_bytes / (100 * SIZEOF_N_SCD30_SAMPLED);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,18 +26,19 @@
/* Include ----------------------------------------------------------------- */
#include "ei_device_info.h"
#include "ei_inertialsensor.h"
#include "ei_microphone.h"
#include "ei_light.h"
#include "ei_mutlgassensor.h"
#include "ei_bme280.h"
#include "ei_dps310.h"
#include "ei_tfmini.h"
#include "ei_bmi088.h"
#include "ei_ultrasonic.h"
#include "ei_microphone.h"
#include "ei_scd30.h"
#include "sfud_fs_commands.h"

/** Number of sensors used */
#define EI_DEVICE_N_SENSORS 9
#define EI_DEVICE_N_SENSORS 10

/** C Callback types */
typedef int (*c_callback)(uint8_t out_buffer[32], size_t *out_size);
Expand Down
61 changes: 61 additions & 0 deletions src/sensors/ei_light.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@

/* Include ----------------------------------------------------------------- */
#include <stdint.h>
#include <stdlib.h>

#include "ei_light.h"

#include "ei_config_types.h"

#include "ei_device_wio_terminal.h"
#include "sensor_aq.h"

#include <Arduino.h>

extern void ei_printf(const char *format, ...);
extern ei_config_t *ei_config_get_config();
extern EI_CONFIG_ERROR ei_config_set_sample_interval(float interval);

// extern sampler_callback cb_sampler;

static float light_data[N_ULTRASONIC_SAMPLED] = {0};

bool ei_light_init(void)
{
pinMode(WIO_LIGHT, INPUT);
}

bool ei_light_read_data(sampler_callback callback)
{
light_data[0] = analogRead(WIO_LIGHT); // Distance in cm
// delay(20); // Short delay to avoid huge data sets

if (callback((const void *)&light_data[0], SIZEOF_N_LIGHT_SAMPLED))
return 1;
return 0;

}

bool ei_light_setup_data_sampling(void)
{

if (ei_config_get_config()->sample_interval_ms < 10.0f)
{
ei_config_set_sample_interval(10.0f);
}

sensor_aq_payload_info payload = {
// Unique device ID (optional), set this to e.g. MAC address or device EUI **if** your device has one
EiDevice.get_id_pointer(),
// Device type (required), use the same device type for similar devices
EiDevice.get_type_pointer(),
// How often new data is sampled in ms. (100Hz = every 10 ms.)
ei_config_get_config()->sample_interval_ms,
{{"Illumination", "na"},
},
};

ei_light_init();

ei_sampler_start_sampling(&ei_light_read_data,&payload, SIZEOF_N_LIGHT_SAMPLED);
}
20 changes: 20 additions & 0 deletions src/sensors/ei_light.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@

#ifndef _EI_LIGHT_H
#define _EI_LIGHT_H

/* Include ----------------------------------------------------------------- */
#include "ei_sampler.h"

/** Number of axis used and sample data format */
typedef float sample_format_t;
#define N_LIGHT_SAMPLED 1
#define SIZEOF_N_LIGHT_SAMPLED (sizeof(sample_format_t) * N_LIGHT_SAMPLED)


/* Function prototypes ----------------------------------------------------- */
bool ei_light_init(void);
bool ei_light_sample_start(sampler_callback callback, float sample_interval_ms);
bool ei_light_setup_data_sampling(void);
bool ei_light_read_data(sampler_callback callback );

#endif
Loading