Browse Source

Merge ba7102fd68 into 03b6ef4b0d

pull/3051/merge
Yoshi Walsh 12 hours 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
#ifdef RAK_WISBLOCK_GPS
static uint32_t gpsResetPin = 0;
static bool i2cGPSFlag = false;
static bool serialGPSFlag = false;
#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
#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 _lng = 0;
long _alt = 0;
@ -207,7 +206,7 @@ public:
bool isEnabled() override { return true; }
};
static RAK12500LocationProvider RAK12500_provider;
static RAKI2CLocationProvider RAK12500_provider;
#endif
// ============================================================
@ -775,8 +774,7 @@ void EnvironmentSensorManager::initBasicGPS() {
// or make a new location provider ...
#ifdef RAK_WISBLOCK_GPS
void EnvironmentSensorManager::rakGPSInit(){
Serial1.setPins(PIN_GPS_TX, PIN_GPS_RX);
Serial1.setPins(PIN_GPS_RX, PIN_GPS_TX);
#ifdef GPS_BAUD_RATE
Serial1.begin(GPS_BAUD_RATE);
@ -784,14 +782,14 @@ void EnvironmentSensorManager::rakGPSInit(){
Serial1.begin(9600);
#endif
//search for the correct IO standby pin depending on socket used
if(gpsIsAwake(WB_IO2)){
}
else if(gpsIsAwake(WB_IO4)){
}
else if(gpsIsAwake(WB_IO5)){
}
else{
#ifdef PIN_3V3_EN
digitalWrite(PIN_3V3_EN,LOW);
delay(1000);
digitalWrite(PIN_3V3_EN,HIGH);
delay(2000);
#endif
if(!gpsIsAwake()){
MESH_DEBUG_PRINTLN("No GPS found");
gps_active = false;
gps_detected = false;
@ -805,18 +803,10 @@ void EnvironmentSensorManager::rakGPSInit(){
#endif
}
bool EnvironmentSensorManager::gpsIsAwake(uint8_t ioPin){
//set initial waking state
pinMode(ioPin,OUTPUT);
digitalWrite(ioPin,LOW);
delay(500);
digitalWrite(ioPin,HIGH);
delay(500);
bool EnvironmentSensorManager::gpsIsAwake(){
//Try to init RAK12500 on I2C
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.enableGNSS(true, SFE_UBLOX_GNSS_ID_GPS);
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.setMeasurementRate(1000);
ublox_GNSS.saveConfigSelective(VAL_CFG_SUBSEC_IOPORT);
gpsResetPin = ioPin;
i2cGPSFlag = true;
gps_active = true;
gps_detected = true;
@ -835,20 +824,13 @@ bool EnvironmentSensorManager::gpsIsAwake(uint8_t ioPin){
_location = &RAK12500_provider;
return true;
} else if (Serial1.available()) {
MESH_DEBUG_PRINTLN("Serial GPS init correctly and is turned on");
#ifdef PIN_GPS_EN
if(PIN_GPS_EN){
gpsResetPin = PIN_GPS_EN;
}
#endif
MESH_DEBUG_PRINTLN("Serial GPS init correctly");
serialGPSFlag = true;
gps_active = true;
gps_detected = true;
return true;
}
pinMode(ioPin, INPUT);
MESH_DEBUG_PRINTLN("GPS did not init with this IO pin... try the next");
return false;
}
#endif
@ -856,8 +838,8 @@ bool EnvironmentSensorManager::gpsIsAwake(uint8_t ioPin){
void EnvironmentSensorManager::start_gps() {
gps_active = true;
#ifdef RAK_WISBLOCK_GPS
pinMode(gpsResetPin, OUTPUT);
digitalWrite(gpsResetPin, HIGH);
pinMode(PIN_3V3_EN, OUTPUT);
digitalWrite(PIN_3V3_EN, HIGH);
return;
#endif
@ -872,8 +854,12 @@ void EnvironmentSensorManager::start_gps() {
void EnvironmentSensorManager::stop_gps() {
gps_active = false;
#ifdef RAK_WISBLOCK_GPS
pinMode(gpsResetPin, OUTPUT);
digitalWrite(gpsResetPin, LOW);
#ifdef SKY66122
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;
#endif

2
src/helpers/sensors/EnvironmentSensorManager.h

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

14
variants/gat562_30s_mesh_kit/variant.h

@ -38,15 +38,15 @@ extern "C"
{
#endif // __cplusplus
/*
/*
* WisBlock Base GPIO definitions
*/
static const uint8_t WB_IO1 = 17; // SLOT_A SLOT_B
static const uint8_t WB_IO2 = 34; // SLOT_A SLOT_B
static const uint8_t WB_IO3 = 21; // SLOT_C
static const uint8_t WB_IO4 = 4; // SLOT_C
static const uint8_t WB_IO5 = 9; // SLOT_D
static const uint8_t WB_IO6 = 10; // SLOT_D
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

14
variants/gat562_mesh_evb_pro/variant.h

@ -38,15 +38,15 @@ extern "C"
{
#endif // __cplusplus
/*
/*
* WisBlock Base GPIO definitions
*/
static const uint8_t WB_IO1 = 17; // SLOT_A SLOT_B
static const uint8_t WB_IO2 = 34; // SLOT_A SLOT_B
static const uint8_t WB_IO3 = 21; // SLOT_C
static const uint8_t WB_IO4 = 4; // SLOT_C
static const uint8_t WB_IO5 = 9; // SLOT_D
static const uint8_t WB_IO6 = 10; // SLOT_D
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

14
variants/gat562_mesh_tracker_pro/variant.h

@ -38,15 +38,15 @@ extern "C"
{
#endif // __cplusplus
/*
/*
* WisBlock Base GPIO definitions
*/
static const uint8_t WB_IO1 = 17; // SLOT_A SLOT_B
static const uint8_t WB_IO2 = 34; // SLOT_A SLOT_B
static const uint8_t WB_IO3 = 21; // SLOT_C
static const uint8_t WB_IO4 = 4; // SLOT_C
static const uint8_t WB_IO5 = 9; // SLOT_D
static const uint8_t WB_IO6 = 10; // SLOT_D
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

14
variants/gat562_mesh_watch13/variant.h

@ -38,15 +38,15 @@ extern "C"
{
#endif // __cplusplus
/*
/*
* WisBlock Base GPIO definitions
*/
static const uint8_t WB_IO1 = 17; // SLOT_A SLOT_B
static const uint8_t WB_IO2 = 34; // SLOT_A SLOT_B
static const uint8_t WB_IO3 = 21; // SLOT_C
static const uint8_t WB_IO4 = 4; // SLOT_C
static const uint8_t WB_IO5 = 9; // SLOT_D
static const uint8_t WB_IO6 = 10; // SLOT_D
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

1
variants/rak3401/platformio.ini

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

38
variants/rak3401/variant.h

@ -38,6 +38,27 @@ extern "C"
{
#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
#define PINS_COUNT (48)
#define NUM_DIGITAL_PINS (48)
@ -92,8 +113,6 @@ extern "C"
#define PIN_AREF (2)
#define PIN_NFC1 (9)
#define WB_IO5 PIN_NFC1
#define WB_IO4 (4)
#define PIN_NFC2 (10)
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).
// 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 SKY66122
// CTX is driven by SX1262 DIO2, not a GPIO
#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_RESET SX126X_RESET
// enables 3.3V periphery like GPS or IO Module
// Do not toggle this for GPS power savings
// enables 3.3V periphery like GPS, the IO Module, and the SKY66122 5V boost
// Do NOT use this for GPS power savings as this will interfere with LoRa functionality
#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_TX PIN_SERIAL1_TX
#define PIN_GPS_1PPS PIN_GPS_PPS
#define GPS_BAUD_RATE 9600
#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
-D RAK_4631
-D RAK_BOARD
-UENV_INCLUDE_GPS
-D NRF52_POWER_MANAGEMENT
-D PIN_BOARD_SCL=14
-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_OLED_RESET=-1
-D USE_SX1262

16
variants/rak4631/variant.h

@ -41,12 +41,12 @@ extern "C"
/*
* WisBlock Base GPIO definitions
*/
static const uint8_t WB_IO1 = 17; // SLOT_A SLOT_B
static const uint8_t WB_IO2 = 34; // SLOT_A SLOT_B
static const uint8_t WB_IO3 = 21; // SLOT_C
static const uint8_t WB_IO4 = 4; // SLOT_C
static const uint8_t WB_IO5 = 9; // SLOT_D
static const uint8_t WB_IO6 = 10; // SLOT_D
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
@ -182,7 +182,9 @@ extern "C"
#define EXTERNAL_FLASH_DEVICES IS25LP080D
#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_ADDRESS 0x42 //i2c address for GPS

Loading…
Cancel
Save