Workshop example
Dependencies: X_NUCLEO_COMMON ST_INTERFACES
Revision 35:42b3fba640b1, committed 2019-05-21
- Comitter:
- JimCarver
- Date:
- Tue May 21 21:16:24 2019 +0000
- Parent:
- 34:a5724eeaaf9d
- Commit message:
- Simple version for workshop
Changed in this revision
drivers/network/COMPONENT_WIFI_ISM43362.lib | Show annotated file Show diff for this revision Revisions of this file |
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/drivers/network/COMPONENT_WIFI_ISM43362.lib Wed Mar 27 19:05:34 2019 +0000 +++ b/drivers/network/COMPONENT_WIFI_ISM43362.lib Tue May 21 21:16:24 2019 +0000 @@ -1,1 +1,1 @@ -https://github.com/ARMmbed/wifi-ism43362/#9136e73b2a9d5fe8246f88b31277b0116322659c +https://github.com/ARMmbed/wifi-ism43362/#9136e73b2a9d5fe8246f88b31277b0116322659c
--- a/main.cpp Wed Mar 27 19:05:34 2019 +0000 +++ b/main.cpp Tue May 21 21:16:24 2019 +0000 @@ -17,6 +17,7 @@ // ---------------------------------------------------------------------------- #ifndef MBED_TEST_MODE + #include "mbed.h" #include "simple-mbed-cloud-client.h" #include "LittleFileSystem.h" @@ -44,23 +45,11 @@ // How often to fetch sensor data (in seconds) #define SENSORS_POLL_INTERVAL 3.0 -// Send all sensor data or just limited (useful for when running out of memory) -#define SEND_ALL_SENSORS + // Sensors related includes and initialization -#include "HTS221Sensor.h" -#include "LPS22HBSensor.h" -#include "LSM6DSLSensor.h" -#include "lis3mdl_class.h" -#include "VL53L0X.h" -static DevI2C devI2c(PB_11,PB_10); -static HTS221Sensor sen_hum_temp(&devI2c); -static LPS22HBSensor sen_press_temp(&devI2c); -static LSM6DSLSensor sen_acc_gyro(&devI2c,LSM6DSL_ACC_GYRO_I2C_ADDRESS_LOW,PD_11); // low address -static LIS3MDL sen_mag(&devI2c); -static DigitalOut shutdown_pin(PC_6); -static VL53L0X sen_distance(&devI2c, &shutdown_pin, PC_7); + // Temperature reading from microcontroller AnalogIn adc_temp(ADC_TEMP); // Voltage reference reading from microcontroller @@ -70,25 +59,10 @@ MbedCloudClientResource *res_button; MbedCloudClientResource *res_led; -// Additional resources for sensor readings -#ifdef SEND_ALL_SENSORS -MbedCloudClientResource *res_humidity; -MbedCloudClientResource *res_temperature; -MbedCloudClientResource *res_pressure; -MbedCloudClientResource *res_temperature2; -MbedCloudClientResource *res_magnometer_x; -MbedCloudClientResource *res_magnometer_y; -MbedCloudClientResource *res_magnometer_z; -MbedCloudClientResource *res_accelerometer_x; -MbedCloudClientResource *res_accelerometer_y; -MbedCloudClientResource *res_accelerometer_z; -MbedCloudClientResource *res_gyroscope_x; -MbedCloudClientResource *res_gyroscope_y; -MbedCloudClientResource *res_gyroscope_z; -MbedCloudClientResource *res_distance; + MbedCloudClientResource *res_adc_temp; MbedCloudClientResource *res_adc_voltage; -#endif /* SEND_ALL_SENSORS */ + // An event queue is a very useful structure to debounce information between contexts (e.g. ISR and normal threads) // This is great because things such as network operations are illegal in ISR, so updating a resource in a button's fall() function is not allowed @@ -153,31 +127,8 @@ * Initialize sensors */ void sensors_init() { - uint8_t id1, id2, id3, id4; printf ("\nSensors configuration:\n"); - // Initialize sensors - sen_hum_temp.init(NULL); - sen_press_temp.init(NULL); - sen_acc_gyro.init(NULL); - sen_mag.init(NULL); - sen_distance.init_sensor(VL53L0X_DEFAULT_ADDRESS); - - /// Call sensors enable routines - sen_hum_temp.enable(); - sen_press_temp.enable(); - sen_acc_gyro.enable_x(); - sen_acc_gyro.enable_g(); - - sen_hum_temp.read_id(&id1); - sen_press_temp.read_id(&id2); - sen_mag.read_id(&id3); - sen_acc_gyro.read_id(&id4); - - printf("HTS221 humidity & temperature = 0x%X\n", id1); - printf("LPS22HB pressure & temperature = 0x%X\n", id2); - printf("LIS3MDL magnetometer = 0x%X\n", id3); - printf("LSM6DSL accelerometer & gyroscope = 0x%X\n", id4); printf("\n"); ; } @@ -187,60 +138,18 @@ * This function is called periodically. */ void sensors_update() { - float temp1_value, temp2_value, temp3_value, humid_value, pressure_value, volt_value = 0.0; - int32_t m_axes[3], a_axes[3], g_axes[3]; - uint32_t distance_value, distance_reading; + float temp3_value, volt_value = 0.0; - sen_hum_temp.get_humidity(&humid_value); - sen_hum_temp.get_temperature(&temp1_value); - sen_press_temp.get_pressure(&pressure_value); - sen_press_temp.get_temperature(&temp2_value); - sen_mag.get_m_axes(m_axes); - sen_acc_gyro.get_x_axes(a_axes); - sen_acc_gyro.get_g_axes(g_axes); - distance_reading = sen_distance.get_distance(&distance_value); temp3_value = adc_temp.read()*100; volt_value = adc_vref.read(); - float mag_x = (double)m_axes[0] / 1000.0, mag_y = (double)m_axes[1] / 1000.0, mag_z = (double)m_axes[2] / 1000.0; - float acc_x = (double)a_axes[0] / 1000.0, acc_y = (double)a_axes[1] / 1000.0, acc_z = (double)a_axes[2] / 1000.0; - float gyro_x = (double)g_axes[0] / 1000.0, gyro_y = (double)g_axes[1] / 1000.0, gyro_z = (double)g_axes[2] / 1000.0; - printf(" \n"); - printf("ADC temp: %5.4f C, vref: %5.4f V \n", temp3_value, volt_value); - printf("HTS221 temp: %7.3f C, humidity: %7.2f %% \n", temp1_value, humid_value); - printf("LPS22HB temp: %7.3f C, pressure: %7.2f mbar \n", temp2_value, pressure_value); - printf("LIS3MDL mag: %7.3f x, %7.3f y, %7.3f z [gauss] \n", mag_x, mag_y, mag_z); - printf("LSM6DSL acc: %7.3f x, %7.3f y, %7.3f z [g] \n", acc_x, acc_y, acc_z); - printf("LSM6DSL gyro: %7.3f x, %7.3f y, %7.3f z [dps] \n", gyro_x, gyro_y, gyro_z); - if (distance_reading == VL53L0X_ERROR_NONE) { - printf("VL53L0X dist: %7ld mm\n", distance_value); - } else { - printf("VL53L0X dist: -- \n"); - distance_value = 999; - } - - printf("\r\033[8A"); if (endpointInfo) { -#ifdef SEND_ALL_SENSORS - res_humidity->set_value(humid_value); - res_temperature->set_value(temp1_value); - res_pressure->set_value(pressure_value); - res_temperature2->set_value(temp2_value); - res_magnometer_x->set_value(mag_x); - res_magnometer_y->set_value(mag_y); - res_magnometer_z->set_value(mag_z); - res_accelerometer_x->set_value(acc_x); - res_accelerometer_y->set_value(acc_y); - res_accelerometer_z->set_value(acc_z); - res_gyroscope_x->set_value(gyro_x); - res_gyroscope_y->set_value(gyro_y); - res_gyroscope_z->set_value(gyro_z); - res_distance->set_value((int)distance_value); + res_adc_temp->set_value(temp3_value); res_adc_voltage->set_value(volt_value); -#endif /* SEND_ALL_SENSORS */ + } } @@ -312,89 +221,16 @@ res_led->methods(M2MMethod::GET | M2MMethod::PUT); res_led->attach_put_callback(put_callback); -#ifdef SEND_ALL_SENSORS - // Sensor resources - res_temperature = client.create_resource("3303/0/5700", "Temperature HTS221 (C)"); - res_temperature->set_value(0); - res_temperature->methods(M2MMethod::GET); - res_temperature->observable(true); - - res_humidity = client.create_resource("3304/0/5700", "Humidity"); - res_humidity->set_value(0); - res_humidity->methods(M2MMethod::GET); - res_humidity->observable(true); - - res_temperature2 = client.create_resource("3303/1/5700", "Temperature LPS22HB (C)"); - res_temperature2->set_value(0); - res_temperature2->methods(M2MMethod::GET); - res_temperature2->observable(true); - res_adc_temp = client.create_resource("3303/2/5700", "Temperature ADC (C)"); res_adc_temp->set_value(0); res_adc_temp->methods(M2MMethod::GET); res_adc_temp->observable(true); - res_accelerometer_x = client.create_resource("3313/0/5702", "Accelerometer X"); - res_accelerometer_x->set_value(0); - res_accelerometer_x->methods(M2MMethod::GET); - res_accelerometer_x->observable(true); - - res_accelerometer_y = client.create_resource("3313/0/5703", "Accelerometer Y"); - res_accelerometer_y->set_value(0); - res_accelerometer_y->methods(M2MMethod::GET); - res_accelerometer_y->observable(true); - - res_accelerometer_z = client.create_resource("3313/0/5704", "Accelerometer Z"); - res_accelerometer_z->set_value(0); - res_accelerometer_z->methods(M2MMethod::GET); - res_accelerometer_z->observable(true); - - res_magnometer_x = client.create_resource("3314/0/5702", "Magnometer X"); - res_magnometer_x->set_value(0); - res_magnometer_x->methods(M2MMethod::GET); - res_magnometer_x->observable(true); - - res_magnometer_y = client.create_resource("3314/0/5703", "Magnometer Y"); - res_magnometer_y->set_value(0); - res_magnometer_y->methods(M2MMethod::GET); - res_magnometer_y->observable(true); - - res_magnometer_z = client.create_resource("3314/0/5704", "Magnometer Z"); - res_magnometer_z->set_value(0); - res_magnometer_z->methods(M2MMethod::GET); - res_magnometer_z->observable(true); - - res_gyroscope_x = client.create_resource("3334/0/5702", "Gyroscope X"); - res_gyroscope_x->set_value(0); - res_gyroscope_x->methods(M2MMethod::GET); - res_gyroscope_x->observable(true); - - res_gyroscope_y = client.create_resource("3334/0/5703", "Gyroscope Y"); - res_gyroscope_y->set_value(0); - res_gyroscope_y->methods(M2MMethod::GET); - res_gyroscope_y->observable(true); - - res_gyroscope_z = client.create_resource("3334/0/5704", "Gyroscope Z"); - res_gyroscope_z->set_value(0); - res_gyroscope_z->methods(M2MMethod::GET); - res_gyroscope_z->observable(true); - res_adc_voltage = client.create_resource("3316/0/5700", "Voltage"); res_adc_voltage->set_value(0); res_adc_voltage->methods(M2MMethod::GET); res_adc_voltage->observable(true); - res_pressure = client.create_resource("3323/0/5700", "Pressure"); - res_pressure->set_value(0); - res_pressure->methods(M2MMethod::GET); - res_pressure->observable(true); - - res_distance = client.create_resource("3330/0/5700", "Distance"); - res_distance->set_value((float)999.9); - res_distance->methods(M2MMethod::GET); - res_distance->observable(true); -#endif /* SEND_ALL_SENSORS */ - printf("Initialized Pelion Client. Registering...\n"); // Callback that fires when registering is complete