Application testing co-operation of X-NUCLEO boards IKS01A1 (sensors) and IDW01M1 (wifi)

Dependencies:   X_NUCLEO_IDW01M1v2-lapi-1 X_NUCLEO_IKS01A1-lapi-1

Fork of x-nucleo-iks01a1-test by Lauri Pirttiaho

Committer:
aeg25
Date:
Tue Jan 24 12:17:13 2017 +0000
Revision:
4:bb94144b323f
Parent:
3:54f935a7d9c1
k?di

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lapi 0:e3e4af4648ab 1 #include "mbed.h"
lapi 0:e3e4af4648ab 2 #include "x_nucleo_iks01a1.h"
aeg25 2:7909e4c21d53 3 #include <iostream>
aeg25 2:7909e4c21d53 4 #include <string>
aeg25 2:7909e4c21d53 5 #include <sstream>
aeg25 2:7909e4c21d53 6 using namespace std;
aeg25 2:7909e4c21d53 7 DigitalOut led1(LED1);
aeg25 2:7909e4c21d53 8 int cinput;
lapi 0:e3e4af4648ab 9
aeg25 2:7909e4c21d53 10 static X_NUCLEO_IKS01A1 *mems_expansion_board = X_NUCLEO_IKS01A1::Instance(D14, D15);
aeg25 2:7909e4c21d53 11 static GyroSensor *gyroscope = mems_expansion_board->GetGyroscope();
aeg25 2:7909e4c21d53 12 static MotionSensor *accelerometer = mems_expansion_board->GetAccelerometer();
aeg25 2:7909e4c21d53 13 static MagneticSensor *magnetometer = mems_expansion_board->magnetometer;
lapi 0:e3e4af4648ab 14 // main() runs in its own thread in the OS
lapi 0:e3e4af4648ab 15 // (note the calls to Thread::wait below for delays)
aeg25 2:7909e4c21d53 16
aeg25 2:7909e4c21d53 17
aeg25 2:7909e4c21d53 18
aeg25 2:7909e4c21d53 19
lapi 0:e3e4af4648ab 20 int main() {
aeg25 4:bb94144b323f 21
aeg25 4:bb94144b323f 22 char buffer2[32];
aeg25 2:7909e4c21d53 23 int32_t axes[3];
lapi 0:e3e4af4648ab 24 Serial pc(USBTX, USBRX);
lapi 0:e3e4af4648ab 25 DevI2C i2c(D14, D15);
lapi 0:e3e4af4648ab 26 HTS221 htsensor(i2c);
lapi 0:e3e4af4648ab 27 LPS25H barosensor(i2c);
lapi 0:e3e4af4648ab 28
lapi 0:e3e4af4648ab 29 uint8_t sensor_id;
lapi 0:e3e4af4648ab 30 int status = htsensor.ReadID(&sensor_id);
lapi 0:e3e4af4648ab 31 if (status || sensor_id != I_AM_HTS221) {
lapi 0:e3e4af4648ab 32 pc.printf("No HT sensor (status = %d id = %02x?\n", status, sensor_id);
lapi 0:e3e4af4648ab 33 }
lapi 0:e3e4af4648ab 34 HUM_TEMP_InitTypeDef htInitState = {
lapi 0:e3e4af4648ab 35 .OutputDataRate = HTS221_ODR_7Hz, // This is the only one used by the init
lapi 0:e3e4af4648ab 36 };
lapi 0:e3e4af4648ab 37 status = htsensor.Init(&htInitState);
lapi 0:e3e4af4648ab 38 if (status) {
lapi 0:e3e4af4648ab 39 pc.printf("HT init fails!\n");
lapi 0:e3e4af4648ab 40 }
lapi 0:e3e4af4648ab 41
lapi 0:e3e4af4648ab 42 status = barosensor.ReadID(&sensor_id);
lapi 0:e3e4af4648ab 43 if (status || sensor_id != I_AM_LPS25H) {
lapi 0:e3e4af4648ab 44 pc.printf("No Barosensor (status = %d id = %02x?\n", status, sensor_id);
lapi 0:e3e4af4648ab 45 }
lapi 0:e3e4af4648ab 46
lapi 0:e3e4af4648ab 47 PRESSURE_InitTypeDef baroInitState = {
lapi 0:e3e4af4648ab 48 // These are used in the initialization
lapi 0:e3e4af4648ab 49 .OutputDataRate = LPS25H_ODR_7Hz,
lapi 0:e3e4af4648ab 50 .DiffEnable = LPS25H_DIFF_DISABLE,
lapi 0:e3e4af4648ab 51 .BlockDataUpdate = LPS25H_BDU_CONT,
lapi 0:e3e4af4648ab 52 .SPIMode = LPS25H_SPI_SIM_4W
lapi 0:e3e4af4648ab 53 };
lapi 0:e3e4af4648ab 54 status = barosensor.Init(&baroInitState);
lapi 0:e3e4af4648ab 55 if (status) {
lapi 0:e3e4af4648ab 56 pc.printf("Baro init fails!\n");
lapi 0:e3e4af4648ab 57 }
lapi 0:e3e4af4648ab 58
aeg25 2:7909e4c21d53 59
lapi 0:e3e4af4648ab 60 Thread::wait(5000);
aeg25 2:7909e4c21d53 61 pc.printf("Connecting...\n\r");
aeg25 4:bb94144b323f 62 led1 = !led1;
lapi 0:e3e4af4648ab 63 float temperature = 0.0;
lapi 0:e3e4af4648ab 64 status = htsensor.GetTemperature(&temperature);
lapi 0:e3e4af4648ab 65 float humidity = 0.0;
lapi 0:e3e4af4648ab 66 status |= htsensor.GetHumidity(&humidity);
lapi 0:e3e4af4648ab 67 float pressure = 0.0;
lapi 0:e3e4af4648ab 68 status |= barosensor.GetPressure(&pressure);
lapi 0:e3e4af4648ab 69 float temperatureB = 0.0;
lapi 0:e3e4af4648ab 70 status |= barosensor.GetTemperature(&temperatureB);
aeg25 2:7909e4c21d53 71 pc.printf("Status = %d T = %.1f C RH = %.1f%% | T = %.1f C P = %.1f mbar\n\r",
lapi 0:e3e4af4648ab 72 status, temperature, humidity, temperatureB, pressure);
aeg25 2:7909e4c21d53 73 printf("---\r\n");
aeg25 2:7909e4c21d53 74
aeg25 2:7909e4c21d53 75 magnetometer->Get_M_Axes(axes);
aeg25 2:7909e4c21d53 76 printf("LIS3MDL [mag/mgauss]: %6ld, %6ld, %6ld\r\n", axes[0], axes[1], axes[2]);
aeg25 2:7909e4c21d53 77
aeg25 2:7909e4c21d53 78 accelerometer->Get_X_Axes(axes);
aeg25 2:7909e4c21d53 79 printf("LSM6DS0 [acc/mg]: %6ld, %6ld, %6ld\r\n", axes[0], axes[1], axes[2]);
aeg25 2:7909e4c21d53 80
aeg25 2:7909e4c21d53 81 gyroscope->Get_G_Axes(axes);
aeg25 2:7909e4c21d53 82 printf("LSM6DS0 [gyro/mdps]: %6ld, %6ld, %6ld\r\n", axes[0], axes[1], axes[2]);
aeg25 2:7909e4c21d53 83
aeg25 2:7909e4c21d53 84 printf("Starting again..");
aeg25 4:bb94144b323f 85
aeg25 4:bb94144b323f 86 while (true) {
aeg25 4:bb94144b323f 87
aeg25 2:7909e4c21d53 88 printf("Enter sensor name(1 for temperature, 2 for humidity, 3 for pressure ): \r\n");
aeg25 4:bb94144b323f 89
aeg25 2:7909e4c21d53 90 Thread::wait(1500);
lapi 0:e3e4af4648ab 91 // pc.printf("IP address %s\n", wifiIf.get_ip_address());
aeg25 2:7909e4c21d53 92
aeg25 2:7909e4c21d53 93
aeg25 2:7909e4c21d53 94 printf("Enter 1 for heat, humidity and pressure \n\r ");
aeg25 4:bb94144b323f 95 printf("Enter 2 for acceleration, gyroscope, magnitude \n\r ");
aeg25 2:7909e4c21d53 96
aeg25 3:54f935a7d9c1 97 scanf("%i", &cinput);
aeg25 3:54f935a7d9c1 98 if((cinput==1)){
aeg25 4:bb94144b323f 99 printf("[Temperature] %f\n\r",temperature);
aeg25 4:bb94144b323f 100 printf("[Humidity] %f\n\r",humidity);
aeg25 4:bb94144b323f 101 printf("[Pressure] %f\n\r",pressure);
aeg25 2:7909e4c21d53 102 }
aeg25 4:bb94144b323f 103 if((cinput==2)){
aeg25 4:bb94144b323f 104 magnetometer->Get_M_Axes(axes);
aeg25 4:bb94144b323f 105 printf("[Magnetism] [mag/mgauss]: %6ld, %6ld, %6ld\r\n", axes[0], axes[1], axes[2]);
aeg25 4:bb94144b323f 106
aeg25 4:bb94144b323f 107 accelerometer->Get_X_Axes(axes);
aeg25 4:bb94144b323f 108 printf("[Acceleration] [acc/mg]: %6ld, %6ld, %6ld\r\n", axes[0], axes[1], axes[2]);
aeg25 4:bb94144b323f 109
aeg25 4:bb94144b323f 110 gyroscope->Get_G_Axes(axes);
aeg25 4:bb94144b323f 111 printf("[Gyroscope] [gyro/mdps]: %6ld, %6ld, %6ld\r\n", axes[0], axes[1], axes[2]);
aeg25 4:bb94144b323f 112 }
aeg25 2:7909e4c21d53 113
lapi 0:e3e4af4648ab 114 }
lapi 0:e3e4af4648ab 115 }
lapi 0:e3e4af4648ab 116