diff --git a/Include/config.h b/Include/config.h --- a/Include/config.h +++ b/Include/config.h @@ -13,12 +13,14 @@ // Transmit power (0-0x7F, 0mW - 40mw?) #define SI446x_POWER 0x02 -#define TUNE_FREQUENCY 433000000UL +#define TUNE_FREQUENCY 433500000UL // Internal macros #define hal_init HAL_Init +// Uncomment if using legacy LPS25h pressure sensor +//#define LPS25H // -------------------------------------------------------------------------- @@ -44,8 +46,6 @@ // APRS config (aprs.c) // -------------------------------------------------------------------------- -#define SI446x_POWER 0x7f - // Set your callsign and SSID here. Common values for the SSID are // (from http://zlhams.wikidot.com/aprs-ssidguide): // diff --git a/Include/pressure.h b/Include/lps25h.h rename from Include/pressure.h rename to Include/lps25h.h --- a/Include/pressure.h +++ b/Include/lps25h.h @@ -1,5 +1,5 @@ -#ifndef PRESSURE_H -#define PRESSURE_H +#ifndef LPS25H_H +#define LPS25H_H #include "stm32f0xx_hal.h" @@ -23,14 +23,14 @@ #define PRESSURE_CTRL1_PWRUP 0b10000000 -void pressure_init(void); -void pressure_read(void); -void pressure_updatevalues(void); +void lps25h_init(void); +void lps25h_read(void); +void lps25h_updatevalues(void); -int32_t pressure_gettemp(void); -int32_t pressure_getpressure(void); +int32_t lps25h_get_temperature(void); +int32_t lps25h_get_pressure(void); -I2C_HandleTypeDef* pressure_get_i2c_handle(void); +I2C_HandleTypeDef* lps25h_get_i2c_handle(void); #endif // vim:softtabstop=4 shiftwidth=4 expandtab diff --git a/Libraries/aprs/aprs.c b/Libraries/aprs/aprs.c --- a/Libraries/aprs/aprs.c +++ b/Libraries/aprs/aprs.c @@ -24,8 +24,11 @@ #include #include "config.h" -//#include "pressure.h" -#include "bme280.h" +#ifdef LPS25H + #include "lps25h.h" +#else + #include "bme280.h" +#endif #include "aprs.h" #include "gps.h" //#include "gps.h" @@ -80,8 +83,10 @@ void aprs_send(void) snprintf(tmpBuffer, 128, "%d,", gps_getdata()->altitude); ax25_send_string(tmpBuffer); + +#ifdef LPS25H // Pressure - snprintf(tmpBuffer, 128, "%d,", bme280_get_pressure()); + snprintf(tmpBuffer, 128, "%d,", lps25h_get_pressure()); ax25_send_string(tmpBuffer); // Temperature @@ -89,8 +94,22 @@ void aprs_send(void) ax25_send_string(tmpBuffer); // Humidity + snprintf(tmpBuffer, 128, "0,"); + ax25_send_string(tmpBuffer); + +#else + // Pressure + snprintf(tmpBuffer, 128, "%d,", bme280_get_pressure()); + ax25_send_string(tmpBuffer); + + // Temperature + snprintf(tmpBuffer, 128, "%d,", bme280_get_temperature()); + ax25_send_string(tmpBuffer); + + // Humidity snprintf(tmpBuffer, 128, "%d,", bme280_get_humidity()); ax25_send_string(tmpBuffer); +#endif // HDOP snprintf(tmpBuffer, 128, "%u,", gps_getdata()->pdop); diff --git a/Source/pressure.c b/Source/lps25h.c rename from Source/pressure.c rename to Source/lps25h.c --- a/Source/pressure.c +++ b/Source/lps25h.c @@ -2,7 +2,7 @@ // Sensors: Reads pressure and e-compass sensors over I2C and stores readings in queryable internal data structures // -#include "pressure.h" +#include "lps25h.h" #include "stm32f0xx_hal.h" @@ -20,7 +20,7 @@ static uint8_t sensors_pressure_freshdat // Initialize pressure sensor and E-compass -void pressure_init(void) +void lps25h_init(void) { GPIO_InitTypeDef GPIO_InitStruct; @@ -63,7 +63,7 @@ void pressure_init(void) // Initiate interrupt-based read of engineering sensors -void pressure_read(void) +void lps25h_read(void) { // Start reading pressure sensor HAL_Delay(10); @@ -88,21 +88,21 @@ void pressure_read(void) // Get current temperature in Celsius -int32_t pressure_gettemp(void) +int32_t lps25h_get_temperature(void) { return temp_celsius; } // Get current pressure in hPa -int32_t pressure_getpressure(void) +int32_t lps25h_get_pressure(void) { return pressure_hPa; } -inline I2C_HandleTypeDef* pressure_get_i2c_handle(void) +inline I2C_HandleTypeDef* lps25h_get_i2c_handle(void) { return &hi2c1; } diff --git a/Source/main.c b/Source/main.c --- a/Source/main.c +++ b/Source/main.c @@ -24,8 +24,12 @@ #include "config.h" #include "error.h" -//#include "pressure.h" -#include "bme280.h" + +#ifdef LPS25H + #include "lps25h.h" +#else + #include "bme280.h" +#endif #include "gps.h" #include "system/gpio.h" @@ -49,8 +53,13 @@ int main(void) si446x_init(); si446x_init(); gps_poweron(); -// pressure_init(); - bme280_init(); + + #ifdef LPS25H + lps25h_init(); + #else + bme280_init(); + #endif + // Software timers uint32_t last_transmission = HAL_GetTick(); uint32_t last_led = HAL_GetTick(); @@ -61,8 +70,13 @@ int main(void) if(HAL_GetTick() - last_transmission > 700) { gps_update_data(); // Will always return at 1hz rate (default measurement rate) - //pressure_read(); - bme280_update(); + + #ifdef LPS25H + lps25h_read(); + #else + bme280_update(); + #endif + while(afsk_busy()); // ensure previous message finished aprs_send();