Browse Source

Merge ba7102fd68 into 03b6ef4b0d

pull/3051/merge
Yoshi Walsh 2 days ago
committed by GitHub
parent
commit
e28bcfe021
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 62
      src/helpers/sensors/EnvironmentSensorManager.cpp
  2. 2
      src/helpers/sensors/EnvironmentSensorManager.h
  3. 14
      variants/gat562_30s_mesh_kit/variant.h
  4. 14
      variants/gat562_mesh_evb_pro/variant.h
  5. 14
      variants/gat562_mesh_tracker_pro/variant.h
  6. 14
      variants/gat562_mesh_watch13/variant.h
  7. 1
      variants/rak3401/platformio.ini
  8. 38
      variants/rak3401/variant.h
  9. 3
      variants/rak4631/platformio.ini
  10. 16
      variants/rak4631/variant.h

62
src/helpers/sensors/EnvironmentSensorManager.cpp

@ -165,16 +165,15 @@ static RAK12035_SoilMoisture RAK12035;
#endif #endif
#ifdef RAK_WISBLOCK_GPS #ifdef RAK_WISBLOCK_GPS
static uint32_t gpsResetPin = 0;
static bool i2cGPSFlag = false; static bool i2cGPSFlag = false;
static bool serialGPSFlag = false; static bool serialGPSFlag = false;
#ifndef TELEM_RAK12500_ADDRESS #ifndef TELEM_RAK12500_ADDRESS
#define TELEM_RAK12500_ADDRESS 0x42 //RAK12500 Ublox GPS via i2c #define TELEM_RAK12500_ADDRESS 0x42 // RAK12500 u-blox ZOE-M8Q GPS via i2c
#endif #endif
#include <SparkFun_u-blox_GNSS_Arduino_Library.h> #include <SparkFun_u-blox_GNSS_Arduino_Library.h>
static SFE_UBLOX_GNSS ublox_GNSS; static SFE_UBLOX_GNSS ublox_GNSS; // RAK12500 u-blox ZOE-M8Q GPS via UART
class RAK12500LocationProvider : public LocationProvider { class RAKI2CLocationProvider : public LocationProvider {
long _lat = 0; long _lat = 0;
long _lng = 0; long _lng = 0;
long _alt = 0; long _alt = 0;
@ -207,7 +206,7 @@ public:
bool isEnabled() override { return true; } bool isEnabled() override { return true; }
}; };
static RAK12500LocationProvider RAK12500_provider; static RAKI2CLocationProvider RAK12500_provider;
#endif #endif
// ============================================================ // ============================================================
@ -775,8 +774,7 @@ void EnvironmentSensorManager::initBasicGPS() {
// or make a new location provider ... // or make a new location provider ...
#ifdef RAK_WISBLOCK_GPS #ifdef RAK_WISBLOCK_GPS
void EnvironmentSensorManager::rakGPSInit(){ void EnvironmentSensorManager::rakGPSInit(){
Serial1.setPins(PIN_GPS_RX, PIN_GPS_TX);
Serial1.setPins(PIN_GPS_TX, PIN_GPS_RX);
#ifdef GPS_BAUD_RATE #ifdef GPS_BAUD_RATE
Serial1.begin(GPS_BAUD_RATE); Serial1.begin(GPS_BAUD_RATE);
@ -784,14 +782,14 @@ void EnvironmentSensorManager::rakGPSInit(){
Serial1.begin(9600); Serial1.begin(9600);
#endif #endif
//search for the correct IO standby pin depending on socket used #ifdef PIN_3V3_EN
if(gpsIsAwake(WB_IO2)){ digitalWrite(PIN_3V3_EN,LOW);
} delay(1000);
else if(gpsIsAwake(WB_IO4)){ digitalWrite(PIN_3V3_EN,HIGH);
} delay(2000);
else if(gpsIsAwake(WB_IO5)){ #endif
}
else{ if(!gpsIsAwake()){
MESH_DEBUG_PRINTLN("No GPS found"); MESH_DEBUG_PRINTLN("No GPS found");
gps_active = false; gps_active = false;
gps_detected = false; gps_detected = false;
@ -805,18 +803,10 @@ void EnvironmentSensorManager::rakGPSInit(){
#endif #endif
} }
bool EnvironmentSensorManager::gpsIsAwake(uint8_t ioPin){ bool EnvironmentSensorManager::gpsIsAwake(){
//set initial waking state
pinMode(ioPin,OUTPUT);
digitalWrite(ioPin,LOW);
delay(500);
digitalWrite(ioPin,HIGH);
delay(500);
//Try to init RAK12500 on I2C //Try to init RAK12500 on I2C
if (ublox_GNSS.begin(Wire) == true){ if (ublox_GNSS.begin(Wire) == true){
MESH_DEBUG_PRINTLN("RAK12500 GPS init correctly with pin %i",ioPin); MESH_DEBUG_PRINTLN("RAK12500 I2C GPS init");
ublox_GNSS.setI2COutput(COM_TYPE_UBX); ublox_GNSS.setI2COutput(COM_TYPE_UBX);
ublox_GNSS.enableGNSS(true, SFE_UBLOX_GNSS_ID_GPS); ublox_GNSS.enableGNSS(true, SFE_UBLOX_GNSS_ID_GPS);
ublox_GNSS.enableGNSS(true, SFE_UBLOX_GNSS_ID_GALILEO); ublox_GNSS.enableGNSS(true, SFE_UBLOX_GNSS_ID_GALILEO);
@ -827,7 +817,6 @@ bool EnvironmentSensorManager::gpsIsAwake(uint8_t ioPin){
ublox_GNSS.enableGNSS(true, SFE_UBLOX_GNSS_ID_QZSS); ublox_GNSS.enableGNSS(true, SFE_UBLOX_GNSS_ID_QZSS);
ublox_GNSS.setMeasurementRate(1000); ublox_GNSS.setMeasurementRate(1000);
ublox_GNSS.saveConfigSelective(VAL_CFG_SUBSEC_IOPORT); ublox_GNSS.saveConfigSelective(VAL_CFG_SUBSEC_IOPORT);
gpsResetPin = ioPin;
i2cGPSFlag = true; i2cGPSFlag = true;
gps_active = true; gps_active = true;
gps_detected = true; gps_detected = true;
@ -835,20 +824,13 @@ bool EnvironmentSensorManager::gpsIsAwake(uint8_t ioPin){
_location = &RAK12500_provider; _location = &RAK12500_provider;
return true; return true;
} else if (Serial1.available()) { } else if (Serial1.available()) {
MESH_DEBUG_PRINTLN("Serial GPS init correctly and is turned on"); MESH_DEBUG_PRINTLN("Serial GPS init correctly");
#ifdef PIN_GPS_EN
if(PIN_GPS_EN){
gpsResetPin = PIN_GPS_EN;
}
#endif
serialGPSFlag = true; serialGPSFlag = true;
gps_active = true; gps_active = true;
gps_detected = true; gps_detected = true;
return true; return true;
} }
pinMode(ioPin, INPUT);
MESH_DEBUG_PRINTLN("GPS did not init with this IO pin... try the next");
return false; return false;
} }
#endif #endif
@ -856,8 +838,8 @@ bool EnvironmentSensorManager::gpsIsAwake(uint8_t ioPin){
void EnvironmentSensorManager::start_gps() { void EnvironmentSensorManager::start_gps() {
gps_active = true; gps_active = true;
#ifdef RAK_WISBLOCK_GPS #ifdef RAK_WISBLOCK_GPS
pinMode(gpsResetPin, OUTPUT); pinMode(PIN_3V3_EN, OUTPUT);
digitalWrite(gpsResetPin, HIGH); digitalWrite(PIN_3V3_EN, HIGH);
return; return;
#endif #endif
@ -872,8 +854,12 @@ void EnvironmentSensorManager::start_gps() {
void EnvironmentSensorManager::stop_gps() { void EnvironmentSensorManager::stop_gps() {
gps_active = false; gps_active = false;
#ifdef RAK_WISBLOCK_GPS #ifdef RAK_WISBLOCK_GPS
pinMode(gpsResetPin, OUTPUT); #ifdef SKY66122
digitalWrite(gpsResetPin, LOW); MESH_DEBUG_PRINTLN("GPS cannot be disabled as this would also disable SKY66122.");
return;
#endif
pinMode(PIN_3V3_EN, OUTPUT);
digitalWrite(PIN_3V3_EN, LOW);
return; return;
#endif #endif

2
src/helpers/sensors/EnvironmentSensorManager.h

@ -30,7 +30,7 @@ protected:
void initBasicGPS(); void initBasicGPS();
#ifdef RAK_BOARD #ifdef RAK_BOARD
void rakGPSInit(); void rakGPSInit();
bool gpsIsAwake(uint8_t ioPin); bool gpsIsAwake();
#endif #endif
#endif #endif

14
variants/gat562_30s_mesh_kit/variant.h

@ -38,15 +38,15 @@ extern "C"
{ {
#endif // __cplusplus #endif // __cplusplus
/* /*
* WisBlock Base GPIO definitions * WisBlock Base GPIO definitions
*/ */
static const uint8_t WB_IO1 = 17; // SLOT_A SLOT_B static const uint8_t WB_IO1 = 17; // SLOT_A P.12 / SLOT_B P.10
static const uint8_t WB_IO2 = 34; // SLOT_A SLOT_B static const uint8_t WB_IO2 = 34; // SLOT_A P.10 / SLOT_B P.12
static const uint8_t WB_IO3 = 21; // SLOT_C static const uint8_t WB_IO3 = 21; // SLOT_C P.12
static const uint8_t WB_IO4 = 4; // SLOT_C static const uint8_t WB_IO4 = 4; // SLOT_C P.10
static const uint8_t WB_IO5 = 9; // SLOT_D static const uint8_t WB_IO5 = 9; // SLOT_D P.12
static const uint8_t WB_IO6 = 10; // SLOT_D static const uint8_t WB_IO6 = 10; // SLOT_D P.10
static const uint8_t WB_SW1 = 33; // IO_SLOT static const uint8_t WB_SW1 = 33; // IO_SLOT
static const uint8_t WB_A0 = 5; // IO_SLOT static const uint8_t WB_A0 = 5; // IO_SLOT
static const uint8_t WB_A1 = 31; // IO_SLOT static const uint8_t WB_A1 = 31; // IO_SLOT

14
variants/gat562_mesh_evb_pro/variant.h

@ -38,15 +38,15 @@ extern "C"
{ {
#endif // __cplusplus #endif // __cplusplus
/* /*
* WisBlock Base GPIO definitions * WisBlock Base GPIO definitions
*/ */
static const uint8_t WB_IO1 = 17; // SLOT_A SLOT_B static const uint8_t WB_IO1 = 17; // SLOT_A P.12 / SLOT_B P.10
static const uint8_t WB_IO2 = 34; // SLOT_A SLOT_B static const uint8_t WB_IO2 = 34; // SLOT_A P.10 / SLOT_B P.12
static const uint8_t WB_IO3 = 21; // SLOT_C static const uint8_t WB_IO3 = 21; // SLOT_C P.12
static const uint8_t WB_IO4 = 4; // SLOT_C static const uint8_t WB_IO4 = 4; // SLOT_C P.10
static const uint8_t WB_IO5 = 9; // SLOT_D static const uint8_t WB_IO5 = 9; // SLOT_D P.12
static const uint8_t WB_IO6 = 10; // SLOT_D static const uint8_t WB_IO6 = 10; // SLOT_D P.10
static const uint8_t WB_SW1 = 33; // IO_SLOT static const uint8_t WB_SW1 = 33; // IO_SLOT
static const uint8_t WB_A0 = 5; // IO_SLOT static const uint8_t WB_A0 = 5; // IO_SLOT
static const uint8_t WB_A1 = 31; // IO_SLOT static const uint8_t WB_A1 = 31; // IO_SLOT

14
variants/gat562_mesh_tracker_pro/variant.h

@ -38,15 +38,15 @@ extern "C"
{ {
#endif // __cplusplus #endif // __cplusplus
/* /*
* WisBlock Base GPIO definitions * WisBlock Base GPIO definitions
*/ */
static const uint8_t WB_IO1 = 17; // SLOT_A SLOT_B static const uint8_t WB_IO1 = 17; // SLOT_A P.12 / SLOT_B P.10
static const uint8_t WB_IO2 = 34; // SLOT_A SLOT_B static const uint8_t WB_IO2 = 34; // SLOT_A P.10 / SLOT_B P.12
static const uint8_t WB_IO3 = 21; // SLOT_C static const uint8_t WB_IO3 = 21; // SLOT_C P.12
static const uint8_t WB_IO4 = 4; // SLOT_C static const uint8_t WB_IO4 = 4; // SLOT_C P.10
static const uint8_t WB_IO5 = 9; // SLOT_D static const uint8_t WB_IO5 = 9; // SLOT_D P.12
static const uint8_t WB_IO6 = 10; // SLOT_D static const uint8_t WB_IO6 = 10; // SLOT_D P.10
static const uint8_t WB_SW1 = 33; // IO_SLOT static const uint8_t WB_SW1 = 33; // IO_SLOT
static const uint8_t WB_A0 = 5; // IO_SLOT static const uint8_t WB_A0 = 5; // IO_SLOT
static const uint8_t WB_A1 = 31; // IO_SLOT static const uint8_t WB_A1 = 31; // IO_SLOT

14
variants/gat562_mesh_watch13/variant.h

@ -38,15 +38,15 @@ extern "C"
{ {
#endif // __cplusplus #endif // __cplusplus
/* /*
* WisBlock Base GPIO definitions * WisBlock Base GPIO definitions
*/ */
static const uint8_t WB_IO1 = 17; // SLOT_A SLOT_B static const uint8_t WB_IO1 = 17; // SLOT_A P.12 / SLOT_B P.10
static const uint8_t WB_IO2 = 34; // SLOT_A SLOT_B static const uint8_t WB_IO2 = 34; // SLOT_A P.10 / SLOT_B P.12
static const uint8_t WB_IO3 = 21; // SLOT_C static const uint8_t WB_IO3 = 21; // SLOT_C P.12
static const uint8_t WB_IO4 = 4; // SLOT_C static const uint8_t WB_IO4 = 4; // SLOT_C P.10
static const uint8_t WB_IO5 = 9; // SLOT_D static const uint8_t WB_IO5 = 9; // SLOT_D P.12
static const uint8_t WB_IO6 = 10; // SLOT_D static const uint8_t WB_IO6 = 10; // SLOT_D P.10
static const uint8_t WB_SW1 = 33; // IO_SLOT static const uint8_t WB_SW1 = 33; // IO_SLOT
static const uint8_t WB_A0 = 5; // IO_SLOT static const uint8_t WB_A0 = 5; // IO_SLOT
static const uint8_t WB_A1 = 31; // IO_SLOT static const uint8_t WB_A1 = 31; // IO_SLOT

1
variants/rak3401/platformio.ini

@ -6,6 +6,7 @@ build_flags = ${nrf52_base.build_flags}
${sensor_base.build_flags} ${sensor_base.build_flags}
-I variants/rak3401 -I variants/rak3401
-D RAK_3401 -D RAK_3401
-D RAK_BOARD
-D NRF52_POWER_MANAGEMENT -D NRF52_POWER_MANAGEMENT
-D RADIO_CLASS=CustomSX1262 -D RADIO_CLASS=CustomSX1262
-D WRAPPER_CLASS=CustomSX1262Wrapper -D WRAPPER_CLASS=CustomSX1262Wrapper

38
variants/rak3401/variant.h

@ -38,6 +38,27 @@ extern "C"
{ {
#endif // __cplusplus #endif // __cplusplus
/*
* WisBlock Base GPIO definitions
*/
static const uint8_t WB_IO1 = 17; // SLOT_A P.12 / SLOT_B P.10
static const uint8_t WB_IO2 = 34; // SLOT_A P.10 / SLOT_B P.12
static const uint8_t WB_IO3 = 21; // SLOT_C P.12
static const uint8_t WB_IO4 = 4; // SLOT_C P.10
static const uint8_t WB_IO5 = 9; // SLOT_D P.12
static const uint8_t WB_IO6 = 10; // SLOT_D P.10
static const uint8_t WB_SW1 = 33; // IO_SLOT
static const uint8_t WB_A0 = 5; // IO_SLOT
static const uint8_t WB_A1 = 31; // IO_SLOT
static const uint8_t WB_I2C1_SDA = 13; // SENSOR_SLOT IO_SLOT
static const uint8_t WB_I2C1_SCL = 14; // SENSOR_SLOT IO_SLOT
static const uint8_t WB_I2C2_SDA = 24; // IO_SLOT
static const uint8_t WB_I2C2_SCL = 25; // IO_SLOT
static const uint8_t WB_SPI_CS = 26; // IO_SLOT
static const uint8_t WB_SPI_CLK = 3; // IO_SLOT
static const uint8_t WB_SPI_MISO = 29; // IO_SLOT
static const uint8_t WB_SPI_MOSI = 30; // IO_SLOT
// Number of pins defined in PinDescription array // Number of pins defined in PinDescription array
#define PINS_COUNT (48) #define PINS_COUNT (48)
#define NUM_DIGITAL_PINS (48) #define NUM_DIGITAL_PINS (48)
@ -92,8 +113,6 @@ extern "C"
#define PIN_AREF (2) #define PIN_AREF (2)
#define PIN_NFC1 (9) #define PIN_NFC1 (9)
#define WB_IO5 PIN_NFC1
#define WB_IO4 (4)
#define PIN_NFC2 (10) #define PIN_NFC2 (10)
static const uint8_t AREF = PIN_AREF; static const uint8_t AREF = PIN_AREF;
@ -162,6 +181,7 @@ static const uint8_t AREF = PIN_AREF;
// in hardware via SetDIO2AsRfSwitchCtrl (microsecond-accurate, no GPIO needed). // in hardware via SetDIO2AsRfSwitchCtrl (microsecond-accurate, no GPIO needed).
// The 5V boost for the PA is enabled by WB_IO2 (P0.34 = PIN_3V3_EN). // The 5V boost for the PA is enabled by WB_IO2 (P0.34 = PIN_3V3_EN).
#define SX126X_POWER_EN (21) // P0.21 = IO3 -> SKY66122 CSD+CPS (FEM enable) #define SX126X_POWER_EN (21) // P0.21 = IO3 -> SKY66122 CSD+CPS (FEM enable)
#define SKY66122
// CTX is driven by SX1262 DIO2, not a GPIO // CTX is driven by SX1262 DIO2, not a GPIO
#define SX126X_DIO2_AS_RF_SWITCH #define SX126X_DIO2_AS_RF_SWITCH
@ -175,23 +195,13 @@ static const uint8_t AREF = PIN_AREF;
#define P_LORA_BUSY SX126X_BUSY #define P_LORA_BUSY SX126X_BUSY
#define P_LORA_RESET SX126X_RESET #define P_LORA_RESET SX126X_RESET
// enables 3.3V periphery like GPS or IO Module // enables 3.3V periphery like GPS, the IO Module, and the SKY66122 5V boost
// Do not toggle this for GPS power savings // Do NOT use this for GPS power savings as this will interfere with LoRa functionality
#define PIN_3V3_EN (34) #define PIN_3V3_EN (34)
#define WB_IO2 PIN_3V3_EN
// RAK1910 GPS module
// If using the wisblock GPS module and pluged into Port A on WisBlock base
// IO1 is hooked to PPS (pin 12 on header) = gpio 17
// IO2 is hooked to GPS RESET = gpio 34, but it can not be used to this because IO2 is ALSO used to control 3V3_S power (1 is on).
// Therefore must be 1 to keep peripherals powered
// Power is on the controllable 3V3_S rail
#define PIN_GPS_PPS (17) // Pulse per second input from the GPS
#define PIN_GPS_RX PIN_SERIAL1_RX #define PIN_GPS_RX PIN_SERIAL1_RX
#define PIN_GPS_TX PIN_SERIAL1_TX #define PIN_GPS_TX PIN_SERIAL1_TX
#define PIN_GPS_1PPS PIN_GPS_PPS
#define GPS_BAUD_RATE 9600 #define GPS_BAUD_RATE 9600
#define GPS_ADDRESS 0x42 //i2c address for GPS #define GPS_ADDRESS 0x42 //i2c address for GPS

3
variants/rak4631/platformio.ini

@ -9,11 +9,10 @@ build_flags = ${nrf52_base.build_flags}
-I variants/rak4631 -I variants/rak4631
-D RAK_4631 -D RAK_4631
-D RAK_BOARD -D RAK_BOARD
-UENV_INCLUDE_GPS
-D NRF52_POWER_MANAGEMENT -D NRF52_POWER_MANAGEMENT
-D PIN_BOARD_SCL=14 -D PIN_BOARD_SCL=14
-D PIN_BOARD_SDA=13 -D PIN_BOARD_SDA=13
-D PIN_GPS_TX=PIN_SERIAL1_RX
-D PIN_GPS_RX=PIN_SERIAL1_TX
-D PIN_GPS_EN=-1 -D PIN_GPS_EN=-1
-D PIN_OLED_RESET=-1 -D PIN_OLED_RESET=-1
-D USE_SX1262 -D USE_SX1262

16
variants/rak4631/variant.h

@ -41,12 +41,12 @@ extern "C"
/* /*
* WisBlock Base GPIO definitions * WisBlock Base GPIO definitions
*/ */
static const uint8_t WB_IO1 = 17; // SLOT_A SLOT_B static const uint8_t WB_IO1 = 17; // SLOT_A P.12 / SLOT_B P.10
static const uint8_t WB_IO2 = 34; // SLOT_A SLOT_B static const uint8_t WB_IO2 = 34; // SLOT_A P.10 / SLOT_B P.12
static const uint8_t WB_IO3 = 21; // SLOT_C static const uint8_t WB_IO3 = 21; // SLOT_C P.12
static const uint8_t WB_IO4 = 4; // SLOT_C static const uint8_t WB_IO4 = 4; // SLOT_C P.10
static const uint8_t WB_IO5 = 9; // SLOT_D static const uint8_t WB_IO5 = 9; // SLOT_D P.12
static const uint8_t WB_IO6 = 10; // SLOT_D static const uint8_t WB_IO6 = 10; // SLOT_D P.10
static const uint8_t WB_SW1 = 33; // IO_SLOT static const uint8_t WB_SW1 = 33; // IO_SLOT
static const uint8_t WB_A0 = 5; // IO_SLOT static const uint8_t WB_A0 = 5; // IO_SLOT
static const uint8_t WB_A1 = 31; // IO_SLOT static const uint8_t WB_A1 = 31; // IO_SLOT
@ -182,7 +182,9 @@ extern "C"
#define EXTERNAL_FLASH_DEVICES IS25LP080D #define EXTERNAL_FLASH_DEVICES IS25LP080D
#define EXTERNAL_FLASH_USE_QSPI #define EXTERNAL_FLASH_USE_QSPI
#define PIN_GPS_1PPS 17 //GPS PPS pin #define PIN_GPS_RX PIN_SERIAL1_RX
#define PIN_GPS_TX PIN_SERIAL1_TX
#define GPS_BAUD_RATE 9600 #define GPS_BAUD_RATE 9600
#define GPS_ADDRESS 0x42 //i2c address for GPS #define GPS_ADDRESS 0x42 //i2c address for GPS

Loading…
Cancel
Save