kopia lustrzana https://github.com/helium/longfi-arduino
added sensor reading
rodzic
a95ec54b18
commit
5a2c63f021
|
@ -1,3 +1,5 @@
|
||||||
|
#include <X-NUCLEO-IKS01A3.h>
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2015 Thomas Telkamp and Matthijs Kooijman
|
* Copyright (c) 2015 Thomas Telkamp and Matthijs Kooijman
|
||||||
* Copyright (c) 2018 Terry Moore, MCCI
|
* Copyright (c) 2018 Terry Moore, MCCI
|
||||||
|
@ -35,6 +37,26 @@
|
||||||
#include <hal/hal.h>
|
#include <hal/hal.h>
|
||||||
#include <lmic.h>
|
#include <lmic.h>
|
||||||
|
|
||||||
|
#include <LSM6DSOSensor.h>
|
||||||
|
#include <LIS2DW12Sensor.h>
|
||||||
|
#include <LIS2MDLSensor.h>
|
||||||
|
#include <LPS22HHSensor.h>
|
||||||
|
#include <STTS751Sensor.h>
|
||||||
|
#include <HTS221Sensor.h>
|
||||||
|
|
||||||
|
#ifdef ARDUINO_SAM_DUE
|
||||||
|
#define DEV_I2C Wire1
|
||||||
|
#elif defined(ARDUINO_ARCH_STM32)
|
||||||
|
#define DEV_I2C Wire
|
||||||
|
#else
|
||||||
|
#define DEV_I2C Wire
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Sensors
|
||||||
|
LSM6DSOSensor *AccGyr;
|
||||||
|
LPS22HHSensor *PressTemp;
|
||||||
|
HTS221Sensor *HumTemp;
|
||||||
|
|
||||||
// This is the "App EUI" in Helium. Make sure it is little-endian (lsb).
|
// This is the "App EUI" in Helium. Make sure it is little-endian (lsb).
|
||||||
static const u1_t PROGMEM APPEUI[8] = {FILL_ME_IN};
|
static const u1_t PROGMEM APPEUI[8] = {FILL_ME_IN};
|
||||||
void os_getArtEui(u1_t *buf) { memcpy_P(buf, APPEUI, 8); }
|
void os_getArtEui(u1_t *buf) { memcpy_P(buf, APPEUI, 8); }
|
||||||
|
@ -226,11 +248,50 @@ void onEvent(ev_t ev) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void readSensors() {
|
||||||
|
// Read humidity and temperature.
|
||||||
|
float humidity = 0;
|
||||||
|
float temperature = 0;
|
||||||
|
HumTemp->GetHumidity(&humidity);
|
||||||
|
HumTemp->GetTemperature(&temperature);
|
||||||
|
|
||||||
|
// Read pressure and temperature.
|
||||||
|
float pressure = 0;
|
||||||
|
PressTemp->GetPressure(&pressure);
|
||||||
|
|
||||||
|
// Read accelerometer and gyroscope.
|
||||||
|
int32_t accelerometer[3];
|
||||||
|
int32_t gyroscope[3];
|
||||||
|
AccGyr->Get_X_Axes(accelerometer);
|
||||||
|
AccGyr->Get_G_Axes(gyroscope);
|
||||||
|
|
||||||
|
// Output data.
|
||||||
|
Serial.print("| Hum[%]: ");
|
||||||
|
Serial.print(humidity, 2);
|
||||||
|
Serial.print(" | Temp[C]: ");
|
||||||
|
Serial.print(temperature, 2);
|
||||||
|
Serial.print(" | Pres[hPa]: ");
|
||||||
|
Serial.print(pressure, 2);
|
||||||
|
Serial.print(" | Acc[mg]: ");
|
||||||
|
Serial.print(accelerometer[0]);
|
||||||
|
Serial.print(" ");
|
||||||
|
Serial.print(accelerometer[1]);
|
||||||
|
Serial.print(" ");
|
||||||
|
Serial.print(accelerometer[2]);
|
||||||
|
Serial.print(" | Gyr[mdps]: ");
|
||||||
|
Serial.print(gyroscope[0]);
|
||||||
|
Serial.print(" ");
|
||||||
|
Serial.print(gyroscope[1]);
|
||||||
|
Serial.print(" ");
|
||||||
|
Serial.print(gyroscope[2]);
|
||||||
|
}
|
||||||
|
|
||||||
void do_send(osjob_t *j) {
|
void do_send(osjob_t *j) {
|
||||||
// Check if there is not a current TX/RX job running
|
// Check if there is not a current TX/RX job running
|
||||||
if (LMIC.opmode & OP_TXRXPEND) {
|
if (LMIC.opmode & OP_TXRXPEND) {
|
||||||
Serial.println(F("OP_TXRXPEND, not sending"));
|
Serial.println(F("OP_TXRXPEND, not sending"));
|
||||||
} else {
|
} else {
|
||||||
|
readSensors();
|
||||||
// Prepare upstream data transmission at the next possible time.
|
// Prepare upstream data transmission at the next possible time.
|
||||||
LMIC_setTxData2(1, mydata, sizeof(mydata) - 1, 0);
|
LMIC_setTxData2(1, mydata, sizeof(mydata) - 1, 0);
|
||||||
Serial.println(F("Packet queued"));
|
Serial.println(F("Packet queued"));
|
||||||
|
@ -239,6 +300,17 @@ void do_send(osjob_t *j) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
|
// Initialize I2C bus.
|
||||||
|
DEV_I2C.begin();
|
||||||
|
|
||||||
|
AccGyr = new LSM6DSOSensor (&DEV_I2C);
|
||||||
|
AccGyr->Enable_X();
|
||||||
|
AccGyr->Enable_G();
|
||||||
|
PressTemp = new LPS22HHSensor(&DEV_I2C);
|
||||||
|
PressTemp->Enable();
|
||||||
|
HumTemp = new HTS221Sensor (&DEV_I2C);
|
||||||
|
HumTemp->Enable();
|
||||||
|
|
||||||
delay(5000);
|
delay(5000);
|
||||||
while (!Serial)
|
while (!Serial)
|
||||||
;
|
;
|
||||||
|
|
Ładowanie…
Reference in New Issue