A multifunctional and modular Firmware for Multitech's mDot based on ARM mBed provides a widerange of functionality for several Sensors such as MAX44009, BME280, MPU9250, SI1143 and uBlox. It allows you to quickly build a Sensornode that measures specific data with its sensors and sends it via LoRaWAN.
Dependencies: mDot_LoRa_Sensornode_Flowmeter_impl mbed-rtos mbed
main.h
00001 /* 00002 * main.h 00003 * 00004 * Created on: May 27, 2016 00005 * Author: Adrian 00006 */ 00007 #ifndef MAIN_H_ 00008 #define MAIN_H_ 00009 00010 #include <Queue.h> 00011 #include "BME280.h" 00012 #include "BME280TemperatureMessage.h " 00013 #include "BME280PressureMessage.h " 00014 #include "BME280HumidityMessage.h " 00015 #include "MAX44009.h " 00016 #include "MAX44009Message.h " 00017 #include "MPU9250.h " 00018 #include "MPU9250AccelerationMessage.h " 00019 #include "MPU9250GyroscopeMessage.h " 00020 #include "MPU9250TeslaMessage.h " 00021 #include "SI1143ProximityMessage.h " 00022 #include "uBlox.h " 00023 #include "UBloxGPSMessage.h " 00024 #include "LoRaMeasuermentMessage.h " 00025 #include "CommandMessage.h " 00026 #include "FlowMeterMessage.h" 00027 00028 #define GPS_MESSAGE_LENGTH 36 00029 #define BAUD_UART 9600 00030 #define BAUD_USB 9600 00031 00032 /** 00033 * @defgroup Queue Lenghts 00034 * @{ 00035 */ 00036 00037 #define LIGHT_QUEUE_LENGHT 1 00038 #define ACCELERATION_QUEUE_LENGHT 1 00039 #define GYROSCOPE_QUEUE_LENGHT 1 00040 #define TESLA_QUEUE_LENGHT 1 00041 #define TEMPERATURE_QUEUE_LENGHT 1 00042 #define PRESSURE_QUEUE_LENGHT 1 00043 #define HUMIDITY_QUEUE_LENGHT 1 00044 #define PROXIMITY_QUEUE_LENGHT 1 00045 #define GPS_QUEUE_LENGHT 1 00046 #define FLOWMETER_QUEUE_LENGTH 1 00047 #define LORA_MEASUREMENT_QUEUE_LENGHT 1 00048 #define COMMAND_QUEUE_LENGHT 1 00049 00050 /** @} */ 00051 00052 /** 00053 * @defgroup Task Delays 00054 * @{ 00055 */ 00056 00057 #define LIGHT_TASK_DELAY_MS 15000 00058 #define TEMPERATURE_TASK_DELAY_MS 15000 00059 #define HUMIDITY_TASK_DELAY_MS 15000 00060 #define PRESSURE_TASK_DELAY_MS 15000 00061 #define ACCELERATION_TASK_DELAY_MS 15000 00062 #define GYROSCOPE_TASK_DELAY_MS 15000 00063 #define TESLA_TASK_DELAY_MS 15000 00064 #define PROXIMITY_TASK_DELAY_MS 15000 00065 #define GPS_TASK_DELAY_MS 15000 00066 #define FLOWMETER__TASK_DELAY_MS 15000 00067 #define LORA_MEASUREMENT_TASK_DELAY_MS 15000 00068 #define DATAHANLDER_TASK_DELAY_MS 15000 00069 #define COMMANDHANLDER_TASK_DELAY_MS 15000 00070 00071 /** @} */ 00072 00073 /** 00074 * @defgroup LoRa Message IDs 00075 * @{ 00076 */ 00077 00078 #define MAX44009_MESSAGE_ID "L" 00079 #define UBLOX_GPS_MESSAGE_ITOW_ID "G1" 00080 #define UBLOX_GPS_MESSAGE_LONGITUDE_ID "G2" 00081 #define UBLOX_GPS_MESSAGE_LATITUDE_ID "G3" 00082 #define UBLOX_GPS_MESSAGE_HEIGHT_ID "G4" 00083 #define UBLOX_GPS_MESSAGE_HMSL_ID "G5" 00084 #define UBLOX_GPS_MESSAGE_HACC_ID "G6" 00085 #define UBLOX_GPS_MESSAGE_VACC_ID "G7" 00086 #define BME280_TEMPERATURE_MESSAGE_ID "B1" 00087 #define BME280_PRESSURE_MESSAGE_ID "B2" 00088 #define BME280_HUMIDITY_MESSAGE_ID "B3" 00089 #define MPU9250_X_ACCELERATION_MESSAGE_ID "M1" 00090 #define MPU9250_Y_ACCELERATION_MESSAGE_ID "M2" 00091 #define MPU9250_Z_ACCELERATION_MESSAGE_ID "M3" 00092 #define MPU9250_X_GYROSCOPE_MESSAGE_ID "M4" 00093 #define MPU9250_Y_GYROSCOPE_MESSAGE_ID "M5" 00094 #define MPU9250_Z_GYROSCOPE_MESSAGE_ID "M6" 00095 #define MPU9250_X_TESLA_MESSAGE_ID "M7" 00096 #define MPU9250_Y_TESLA_MESSAGE_ID "M8" 00097 #define MPU9250_Z_TESLA_MESSAGE_ID "M9" 00098 #define FLOWMETER_CURRENT_FLOW_MESSAGE_ID "F1" 00099 #define FLOWMETER_CURRENT_VOLUME_MESSAGE_ID "F2" 00100 #define FLOWMETER_TOTAL_FLOW_MESSAGE_ID "F3" 00101 #define FLOWMETER_TOTAL_VOLUME_MESSAGE_ID "F4" 00102 #define SI1143_PROXIMITY_MESSAGE_ID "P1" 00103 00104 #define LORA_MEASURMENT_RSSI_MESSAGE_ID "Z1" 00105 #define LORA_MEASURMENT_SNR_MESSAGE_ID "Z2" 00106 #define LORA_MEASURMENT_SPREADING_FACTOR_MESSAGE_ID "Z3" 00107 #define LORA_MEASURMENT_TX_POWER_MESSAGE_ID "Z4" 00108 00109 /** @} */ 00110 00111 00112 00113 #define LORA_COMMAND_APPLICATION_MODE_1 "AM1" 00114 #define LORA_COMMAND_APPLICATION_MODE_2 "AM2" 00115 #define LORA_COMMAND_APPLICATION_MODE_3 "AM3" 00116 #define LORA_COMMAND_APPLICATION_MODE_4 "AM4" 00117 00118 /** 00119 * @brief Special Bundle that can hold references to all queues. Used especially by the TaskDatahandler 00120 */ 00121 typedef struct QueueBundle{ 00122 Queue<MAX44009Message,LIGHT_QUEUE_LENGHT>* queueLight; 00123 Queue<BME280TemperatureMessage,TEMPERATURE_QUEUE_LENGHT>* queueTemperature; 00124 Queue<BME280PressureMessage,PRESSURE_QUEUE_LENGHT>* queuePressure; 00125 Queue<BME280HumidityMessage,HUMIDITY_QUEUE_LENGHT>* queueHumidity; 00126 Queue<MPU9250AccelerationMessage,ACCELERATION_QUEUE_LENGHT>* queueAcceleration; 00127 Queue<MPU9250GyroscopeMessage,GYROSCOPE_QUEUE_LENGHT>* queueGyro; 00128 Queue<MPU9250TeslaMessage,TESLA_QUEUE_LENGHT>* queueTesla; 00129 Queue<SI1143ProximityMessage,PROXIMITY_QUEUE_LENGHT>* queueProximity; 00130 Queue<UBloxGPSMessage,GPS_QUEUE_LENGHT>* queueGps; 00131 Queue<FlowMeterMessage,FLOWMETER_QUEUE_LENGTH>* queueFlowMeter; 00132 Queue<LoRaMeasurementMessage,LORA_MEASUREMENT_QUEUE_LENGHT>* queueLoRaMeasurments; 00133 Queue<CommandMessage,COMMAND_QUEUE_LENGHT>* queueCommands; 00134 }; 00135 00136 /** 00137 * Task States. Define different States in which a task can be on the ApplicationConfig Level 00138 * Each task is either RUNNING or SLEEPING 00139 */ 00140 enum TASK_STATE { 00141 RUNNING = 1,//!< RUNNING 00142 SLEEPING = 0//!< SLEEPING 00143 }; 00144 00145 /** 00146 * LoRa States. Define different States in wich the LoRa Modul can be on the ApplicationConfig Level 00147 * It's either ON or OFF 00148 */ 00149 enum LORA_STATE { 00150 ON = 1,//!< ON 00151 OFF = 0//!< OFF 00152 }; 00153 00154 00155 #endif /* MAIN_H_ */
Generated on Tue Jul 12 2022 21:35:26 by 1.7.2