mirror of
https://github.com/richonguzman/LoRa_APRS_iGate.git
synced 2026-03-28 16:52:33 +01:00
Compare commits
28 Commits
timestamp-
...
UEM6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
af1b623f7f | ||
|
|
0c7d13cf7d | ||
|
|
10798d2c9a | ||
|
|
3cc8fed15f | ||
|
|
725be9fed5 | ||
|
|
16d9ef1c06 | ||
|
|
d2b7c063f7 | ||
|
|
eaced15265 | ||
|
|
af4bc20ac2 | ||
|
|
14473cb7c7 | ||
|
|
aba82ef3e0 | ||
|
|
79405abe06 | ||
|
|
c623c0502e | ||
|
|
a6ae8523fa | ||
|
|
d454ab4ba2 | ||
|
|
5146db796e | ||
|
|
93e536e739 | ||
|
|
0af4670dee | ||
|
|
d70a35de1c | ||
|
|
eb5b3aaa25 | ||
|
|
ae3947b7ea | ||
|
|
4f9eac9e5c | ||
|
|
e689bb592c | ||
|
|
786f5bdc0e | ||
|
|
ea2a83bc26 | ||
|
|
c406b67484 | ||
|
|
7cc397ea33 | ||
|
|
503aba71d0 |
@@ -54,6 +54,8 @@ ____________________________________________________
|
|||||||
|
|
||||||
## Timeline (Versions):
|
## Timeline (Versions):
|
||||||
|
|
||||||
|
- 2025-04-20000000
|
||||||
|
- 2025.03.20 Manager List added to enable/disable DigiEcoMode and Tx Control. Thanks LB5JJ.
|
||||||
- 2025.03.03 T-Beam Supreme board added and more BlackList rules added.
|
- 2025.03.03 T-Beam Supreme board added and more BlackList rules added.
|
||||||
- 2025.02.28 Heltec Wireless Paper with Epaper working. Thanks SzymonPriv for pointing to the right library.
|
- 2025.02.28 Heltec Wireless Paper with Epaper working. Thanks SzymonPriv for pointing to the right library.
|
||||||
- 2025.02.25 Objects Rules update, GPS Boards: Satellites on Screen, Wx Height Correction from GPS Data.
|
- 2025.02.25 Objects Rules update, GPS Boards: Satellites on Screen, Wx Height Correction from GPS Data.
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
},
|
},
|
||||||
"digi": {
|
"digi": {
|
||||||
"mode": 0,
|
"mode": 0,
|
||||||
"ecoMode": false
|
"ecoMode": 0
|
||||||
},
|
},
|
||||||
"lora": {
|
"lora": {
|
||||||
"txFreq": 433775000,
|
"txFreq": 433775000,
|
||||||
@@ -90,8 +90,6 @@
|
|||||||
},
|
},
|
||||||
"other": {
|
"other": {
|
||||||
"rememberStationTime": 30,
|
"rememberStationTime": 30,
|
||||||
"lowPowerMode": false,
|
|
||||||
"lowVoltageCutOff": 0,
|
|
||||||
"backupDigiMode": false,
|
"backupDigiMode": false,
|
||||||
"rebootMode": false,
|
"rebootMode": false,
|
||||||
"rebootModeTime": 6
|
"rebootModeTime": 6
|
||||||
|
|||||||
@@ -646,7 +646,9 @@
|
|||||||
name="digi.mode"
|
name="digi.mode"
|
||||||
id="digi.mode"
|
id="digi.mode"
|
||||||
>
|
>
|
||||||
<option value="0">off</option>
|
<option value="0">
|
||||||
|
OFF
|
||||||
|
</option>
|
||||||
<option value="2">
|
<option value="2">
|
||||||
WIDE1 (fill-in) Digi
|
WIDE1 (fill-in) Digi
|
||||||
</option>
|
</option>
|
||||||
@@ -655,20 +657,27 @@
|
|||||||
</option>
|
</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 mt-5">
|
<div class="col-12 mt-3">
|
||||||
<div class="form-check form-switch">
|
<label
|
||||||
<input
|
for="digi.ecoMode"
|
||||||
type="checkbox"
|
class="form-label"
|
||||||
name="digi.ecoMode"
|
>Eco Mode</label
|
||||||
id="digi.ecoMode"
|
>
|
||||||
class="form-check-input"
|
<select
|
||||||
/>
|
class="form-select form-select"
|
||||||
<label
|
name="digi.ecoMode"
|
||||||
for="digi.ecoMode"
|
id="digi.ecoMode"
|
||||||
class="form-label"
|
>
|
||||||
>Eco Mode<small> This will disable WiFi, Display, Leds and lower CPU Speed for Low Power Digipeater. (<strong>Caution:</strong> Active means No WebUI Configuration, so <strong>ONLY</strong> activate this for Remote Digipeater)</small></label
|
<option value="0">
|
||||||
>
|
OFF (Normal Mode)
|
||||||
</div>
|
</option>
|
||||||
|
<option value="1">
|
||||||
|
Ultra Eco Mode (Sleep till Packet Rx (WiFiAP/WebUI & Display disabled))
|
||||||
|
</option>
|
||||||
|
<option value="2">
|
||||||
|
OFF (Normal Mode without WiFiAP)
|
||||||
|
</option>
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1735,7 +1744,7 @@
|
|||||||
<label
|
<label
|
||||||
for="remoteManagement.managers"
|
for="remoteManagement.managers"
|
||||||
class="form-label"
|
class="form-label"
|
||||||
>Callsign-SSID of Managers, space separated, trailing * wildcard allowed</label
|
>Callsign-SSID of Managers, space separated, trailing * wildcard allowed (ex: AB1CDE-9, AB1CDE*)</label
|
||||||
>
|
>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<input
|
<input
|
||||||
@@ -1858,46 +1867,6 @@
|
|||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12">
|
|
||||||
<div class="form-check form-switch">
|
|
||||||
<div class="form-text">
|
|
||||||
WiFi disabled. Sleep mode. Best for solar Digi with SX126X.
|
|
||||||
</div>
|
|
||||||
<input
|
|
||||||
type="checkbox"
|
|
||||||
name="other.lowPowerMode"
|
|
||||||
id="other.lowPowerMode"
|
|
||||||
class="form-check-input"
|
|
||||||
/>
|
|
||||||
<label
|
|
||||||
for="other.lowPowerMode"
|
|
||||||
class="form-label"
|
|
||||||
>Low power mode (only for HT-CT62)</label
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-12 mt-3">
|
|
||||||
<label
|
|
||||||
for="other.lowVoltageCutOff"
|
|
||||||
class="form-label"
|
|
||||||
>Low voltage cut off <small>(Deep sleep below specific voltage)</small></label
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
name="other.lowVoltageCutOff"
|
|
||||||
id="other.lowVoltageCutOff"
|
|
||||||
placeholder="0"
|
|
||||||
min="0"
|
|
||||||
step="0.01"
|
|
||||||
class="form-control"
|
|
||||||
/>
|
|
||||||
<span class="input-group-text"
|
|
||||||
>Volts</span
|
|
||||||
>
|
|
||||||
<div class="form-text">
|
|
||||||
MCU will deep sleep when below provided battery voltage to save power. Set to <strong>0</strong> if you don't want this option. <u>Please calibrate your voltage reading first!</u>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -220,9 +220,6 @@ function loadSettings(settings) {
|
|||||||
// Experimental
|
// Experimental
|
||||||
document.getElementById("other.backupDigiMode").checked = settings.other.backupDigiMode;
|
document.getElementById("other.backupDigiMode").checked = settings.other.backupDigiMode;
|
||||||
|
|
||||||
document.getElementById("other.lowPowerMode").checked = settings.other.lowPowerMode;
|
|
||||||
document.getElementById("other.lowVoltageCutOff").value = settings.other.lowVoltageCutOff || 0
|
|
||||||
|
|
||||||
// Management over APRS
|
// Management over APRS
|
||||||
document.getElementById("remoteManagement.managers").value = settings.remoteManagement.managers;
|
document.getElementById("remoteManagement.managers").value = settings.remoteManagement.managers;
|
||||||
document.getElementById("remoteManagement.rfOnly").checked = settings.remoteManagement.rfOnly;
|
document.getElementById("remoteManagement.rfOnly").checked = settings.remoteManagement.rfOnly;
|
||||||
|
|||||||
BIN
images/Web015-Manager.png
Normal file
BIN
images/Web015-Manager.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 98 KiB |
@@ -8,10 +8,10 @@ namespace BATTERY_Utils {
|
|||||||
|
|
||||||
void adcCalibration();
|
void adcCalibration();
|
||||||
void adcCalibrationCheck();
|
void adcCalibrationCheck();
|
||||||
|
|
||||||
void setup();
|
void setup();
|
||||||
float checkInternalVoltage();
|
float checkInternalVoltage();
|
||||||
float checkExternalVoltage();
|
float checkExternalVoltage();
|
||||||
void checkIfShouldSleep(); // ????
|
|
||||||
void startupBatteryHealth();
|
void startupBatteryHealth();
|
||||||
|
|
||||||
String generateEncodedTelemetryBytes(float value, bool firstBytes, byte voltageType);
|
String generateEncodedTelemetryBytes(float value, bool firstBytes, byte voltageType);
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ public:
|
|||||||
class DIGI {
|
class DIGI {
|
||||||
public:
|
public:
|
||||||
int mode;
|
int mode;
|
||||||
bool ecoMode;
|
int ecoMode; // 0 = Not Active | 1 = Ultra EcoMode | 2 = Not Active (WiFi OFF, Serial ON)
|
||||||
};
|
};
|
||||||
|
|
||||||
class LoraModule {
|
class LoraModule {
|
||||||
@@ -132,8 +132,6 @@ class Configuration {
|
|||||||
public:
|
public:
|
||||||
String callsign;
|
String callsign;
|
||||||
int rememberStationTime;
|
int rememberStationTime;
|
||||||
bool lowPowerMode;
|
|
||||||
double lowVoltageCutOff;
|
|
||||||
bool backupDigiMode;
|
bool backupDigiMode;
|
||||||
bool rebootMode;
|
bool rebootMode;
|
||||||
int rebootModeTime;
|
int rebootModeTime;
|
||||||
|
|||||||
@@ -8,11 +8,12 @@ namespace LoRa_Utils {
|
|||||||
|
|
||||||
void setup();
|
void setup();
|
||||||
void sendNewPacket(const String& newPacket);
|
void sendNewPacket(const String& newPacket);
|
||||||
//String packetSanitization(const String& packet);
|
String receivePacketFromSleep();
|
||||||
String receivePacket();
|
String receivePacket();
|
||||||
void changeFreqTx();
|
void changeFreqTx();
|
||||||
void changeFreqRx();
|
void changeFreqRx();
|
||||||
void startReceive();
|
void wakeRadio();
|
||||||
|
//void startReceive();
|
||||||
void sleepRadio();
|
void sleepRadio();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
15
include/sleep_utils.h
Normal file
15
include/sleep_utils.h
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
#ifndef SLEEP_UTILS_H_
|
||||||
|
#define SLEEP_UTILS_H_
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
|
||||||
|
namespace SLEEP_Utils {
|
||||||
|
|
||||||
|
void setup();
|
||||||
|
void checkWakeUpFlag();
|
||||||
|
void startSleeping();
|
||||||
|
void checkSerial();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -18,8 +18,7 @@ struct LastHeardStation {
|
|||||||
|
|
||||||
namespace STATION_Utils {
|
namespace STATION_Utils {
|
||||||
|
|
||||||
void loadBlacklist();
|
void loadBlacklistAndManagers();
|
||||||
void loadManagers();
|
|
||||||
bool isBlacklisted(const String& callsign);
|
bool isBlacklisted(const String& callsign);
|
||||||
bool isManager(const String& callsign);
|
bool isManager(const String& callsign);
|
||||||
bool checkObjectTime(const String& packet);
|
bool checkObjectTime(const String& packet);
|
||||||
@@ -28,6 +27,7 @@ namespace STATION_Utils {
|
|||||||
bool wasHeard(const String& station);
|
bool wasHeard(const String& station);
|
||||||
void clean25SegBuffer();
|
void clean25SegBuffer();
|
||||||
bool check25SegBuffer(const String& station, const String& textMessage);
|
bool check25SegBuffer(const String& station, const String& textMessage);
|
||||||
|
void processOutputPacketBufferUltraEcoMode();
|
||||||
void processOutputPacketBuffer();
|
void processOutputPacketBuffer();
|
||||||
void addToOutputPacketBuffer(const String& packet);
|
void addToOutputPacketBuffer(const String& packet);
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ ___________________________________________________________________*/
|
|||||||
#include "board_pinout.h"
|
#include "board_pinout.h"
|
||||||
#include "syslog_utils.h"
|
#include "syslog_utils.h"
|
||||||
#include "power_utils.h"
|
#include "power_utils.h"
|
||||||
|
#include "sleep_utils.h"
|
||||||
#include "lora_utils.h"
|
#include "lora_utils.h"
|
||||||
#include "wifi_utils.h"
|
#include "wifi_utils.h"
|
||||||
#include "digi_utils.h"
|
#include "digi_utils.h"
|
||||||
@@ -47,7 +48,7 @@ ___________________________________________________________________*/
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
String versionDate = "2025.03.20";
|
String versionDate = "2025-05-12";
|
||||||
Configuration Config;
|
Configuration Config;
|
||||||
WiFiClient espClient;
|
WiFiClient espClient;
|
||||||
#ifdef HAS_GPS
|
#ifdef HAS_GPS
|
||||||
@@ -85,55 +86,14 @@ void setup() {
|
|||||||
LoRa_Utils::setup();
|
LoRa_Utils::setup();
|
||||||
Utils::validateFreqs();
|
Utils::validateFreqs();
|
||||||
GPS_Utils::setup();
|
GPS_Utils::setup();
|
||||||
STATION_Utils::loadBlacklist();
|
STATION_Utils::loadBlacklistAndManagers();
|
||||||
STATION_Utils::loadManagers();
|
|
||||||
|
|
||||||
#ifdef STARTUP_DELAY // (TEST) just to wait for WiFi init of Routers
|
#ifdef STARTUP_DELAY // (TEST) just to wait for WiFi init of Routers
|
||||||
displayShow("", " STARTUP DELAY ...", "", "", 0);
|
displayShow("", " STARTUP DELAY ...", "", "", 0);
|
||||||
delay(STARTUP_DELAY * 60 * 1000);
|
delay(STARTUP_DELAY * 60 * 1000);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HELTEC_HTCT62
|
SLEEP_Utils::setup();
|
||||||
if (Config.lowPowerMode) {
|
|
||||||
gpio_wakeup_enable(GPIO_NUM_3, GPIO_INTR_HIGH_LEVEL);
|
|
||||||
esp_deep_sleep_enable_gpio_wakeup(GPIO_NUM_3, ESP_GPIO_WAKEUP_GPIO_HIGH);
|
|
||||||
long lastBeacon = 0;
|
|
||||||
LoRa_Utils::startReceive();
|
|
||||||
while (true) {
|
|
||||||
auto wakeup_reason = esp_sleep_get_wakeup_cause();
|
|
||||||
if (wakeup_reason == 7) { // packet received
|
|
||||||
Serial.println("Received packet");
|
|
||||||
String packet = LoRa_Utils::receivePacket();
|
|
||||||
Serial.println(packet);
|
|
||||||
if (Config.digi.mode == 2) DIGI_Utils::processLoRaPacket(packet);
|
|
||||||
|
|
||||||
if (packet.indexOf(Config.callsign + ":?APRSELP{") != -1) { // Send `?APRSELP` to exit low power
|
|
||||||
Serial.println("Got ?APRSELP message, exiting from low power mode");
|
|
||||||
break;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
long time = esp_timer_get_time() / 1000000;
|
|
||||||
if (lastBeacon == 0 || time - lastBeacon >= Config.beacon.interval * 60) {
|
|
||||||
Serial.println("Sending beacon");
|
|
||||||
String comment = Config.beacon.comment;
|
|
||||||
if (Config.battery.sendInternalVoltage) comment += " Batt=" + String(BATTERY_Utils::checkInternalVoltage(),2) + "V";
|
|
||||||
if (Config.battery.sendExternalVoltage) comment += " Ext=" + String(BATTERY_Utils::checkExternalVoltage(),2) + "V";
|
|
||||||
LoRa_Utils::sendNewPacket(GPS_Utils::getiGateLoRaBeaconPacket() + comment);
|
|
||||||
lastBeacon = time;
|
|
||||||
}
|
|
||||||
|
|
||||||
LoRa_Utils::startReceive();
|
|
||||||
Serial.println("Sleeping");
|
|
||||||
long sleep = (Config.beacon.interval * 60) - (time - lastBeacon);
|
|
||||||
Serial.flush();
|
|
||||||
esp_sleep_enable_timer_wakeup(sleep * 1000000);
|
|
||||||
esp_light_sleep_start();
|
|
||||||
Serial.println("Waked up");
|
|
||||||
}
|
|
||||||
Config.loramodule.rxActive = false;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
DIGI_Utils::checkEcoMode();
|
|
||||||
WIFI_Utils::setup();
|
WIFI_Utils::setup();
|
||||||
NTP_Utils::setup();
|
NTP_Utils::setup();
|
||||||
SYSLOG_Utils::setup();
|
SYSLOG_Utils::setup();
|
||||||
@@ -145,98 +105,109 @@ void setup() {
|
|||||||
#endif
|
#endif
|
||||||
Utils::checkRebootMode();
|
Utils::checkRebootMode();
|
||||||
APRS_IS_Utils::firstConnection();
|
APRS_IS_Utils::firstConnection();
|
||||||
|
SLEEP_Utils::checkSerial();
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
WIFI_Utils::checkAutoAPTimeout();
|
if (Config.digi.ecoMode == 1) {
|
||||||
|
SLEEP_Utils::checkWakeUpFlag();
|
||||||
|
Utils::checkBeaconInterval();
|
||||||
|
STATION_Utils::processOutputPacketBufferUltraEcoMode();
|
||||||
|
Utils::checkSleepByLowBatteryVoltage(1);
|
||||||
|
SLEEP_Utils::startSleeping();
|
||||||
|
} else {
|
||||||
|
WIFI_Utils::checkAutoAPTimeout();
|
||||||
|
|
||||||
if (isUpdatingOTA) {
|
if (isUpdatingOTA) {
|
||||||
ElegantOTA.loop();
|
ElegantOTA.loop();
|
||||||
return; // Don't process IGate and Digi during OTA update
|
return; // Don't process IGate and Digi during OTA update
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Config.lowVoltageCutOff > 0) {
|
#ifdef HAS_GPS
|
||||||
BATTERY_Utils::checkIfShouldSleep();
|
if (Config.beacon.gpsActive) {
|
||||||
}
|
if (millis() - gpsSatelliteTime > 5000) {
|
||||||
|
gpsInfoToggle = !gpsInfoToggle;
|
||||||
#ifdef HAS_GPS
|
gpsSatelliteTime = millis();
|
||||||
if (Config.beacon.gpsActive) {
|
}
|
||||||
if (millis() - gpsSatelliteTime > 5000) {
|
if (gpsInfoToggle) {
|
||||||
gpsInfoToggle = !gpsInfoToggle;
|
thirdLine = "Satellite(s): ";
|
||||||
gpsSatelliteTime = millis();
|
String gpsData = String(gps.satellites.value());
|
||||||
}
|
if (gpsData.length() < 2) gpsData = "0" + gpsData; // Ensure two-digit formatting
|
||||||
if (gpsInfoToggle) {
|
thirdLine += gpsData;
|
||||||
thirdLine = "Satellite(s): ";
|
} else {
|
||||||
String gpsData = String(gps.satellites.value());
|
thirdLine = Utils::getLocalIP();
|
||||||
if (gpsData.length() < 2) gpsData = "0" + gpsData; // Ensure two-digit formatting
|
}
|
||||||
thirdLine += gpsData;
|
|
||||||
} else {
|
} else {
|
||||||
thirdLine = Utils::getLocalIP();
|
thirdLine = Utils::getLocalIP();
|
||||||
}
|
}
|
||||||
} else {
|
#else
|
||||||
thirdLine = Utils::getLocalIP();
|
thirdLine = Utils::getLocalIP();
|
||||||
}
|
#endif
|
||||||
#else
|
|
||||||
thirdLine = Utils::getLocalIP();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAS_A7670
|
#ifdef HAS_A7670
|
||||||
if (Config.aprs_is.active && !modemLoggedToAPRSIS) A7670_Utils::APRS_IS_connect();
|
if (Config.aprs_is.active && !modemLoggedToAPRSIS) A7670_Utils::APRS_IS_connect();
|
||||||
#else
|
#else
|
||||||
WIFI_Utils::checkWiFi();
|
WIFI_Utils::checkWiFi();
|
||||||
if (Config.aprs_is.active && (WiFi.status() == WL_CONNECTED) && !espClient.connected()) APRS_IS_Utils::connect();
|
if (Config.aprs_is.active && (WiFi.status() == WL_CONNECTED) && !espClient.connected()) APRS_IS_Utils::connect();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
NTP_Utils::update();
|
NTP_Utils::update();
|
||||||
TNC_Utils::loop();
|
TNC_Utils::loop();
|
||||||
|
|
||||||
Utils::checkDisplayInterval();
|
Utils::checkDisplayInterval();
|
||||||
Utils::checkBeaconInterval();
|
Utils::checkBeaconInterval();
|
||||||
|
|
||||||
APRS_IS_Utils::checkStatus(); // Need that to update display, maybe split this and send APRSIS status to display func?
|
APRS_IS_Utils::checkStatus(); // Need that to update display, maybe split this and send APRSIS status to display func?
|
||||||
|
|
||||||
String packet = "";
|
String packet = "";
|
||||||
if (Config.loramodule.rxActive) {
|
if (Config.loramodule.rxActive) {
|
||||||
packet = LoRa_Utils::receivePacket(); // We need to fetch LoRa packet above APRSIS and Digi
|
packet = LoRa_Utils::receivePacket(); // We need to fetch LoRa packet above APRSIS and Digi
|
||||||
}
|
|
||||||
|
|
||||||
if (packet != "") {
|
|
||||||
if (Config.aprs_is.active) { // If APRSIS enabled
|
|
||||||
APRS_IS_Utils::processLoRaPacket(packet); // Send received packet to APRSIS
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Config.loramodule.txActive && (Config.digi.mode == 2 || Config.digi.mode == 3 || backUpDigiMode)) { // If Digi enabled
|
if (packet != "") {
|
||||||
STATION_Utils::clean25SegBuffer();
|
if (Config.aprs_is.active) { // If APRSIS enabled
|
||||||
DIGI_Utils::processLoRaPacket(packet); // Send received packet to Digi
|
APRS_IS_Utils::processLoRaPacket(packet); // Send received packet to APRSIS
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Config.tnc.enableServer) { // If TNC server enabled
|
if (Config.loramodule.txActive && (Config.digi.mode == 2 || Config.digi.mode == 3 || backUpDigiMode)) { // If Digi enabled
|
||||||
TNC_Utils::sendToClients(packet); // Send received packet to TNC KISS
|
STATION_Utils::clean25SegBuffer();
|
||||||
}
|
DIGI_Utils::processLoRaPacket(packet); // Send received packet to Digi
|
||||||
if (Config.tnc.enableSerial) { // If Serial KISS enabled
|
}
|
||||||
TNC_Utils::sendToSerial(packet); // Send received packet to Serial KISS
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Config.aprs_is.active) {
|
if (Config.tnc.enableServer) { // If TNC server enabled
|
||||||
APRS_IS_Utils::listenAPRSIS(); // listen received packet from APRSIS
|
TNC_Utils::sendToClients(packet); // Send received packet to TNC KISS
|
||||||
}
|
}
|
||||||
|
if (Config.tnc.enableSerial) { // If Serial KISS enabled
|
||||||
STATION_Utils::processOutputPacketBuffer();
|
TNC_Utils::sendToSerial(packet); // Send received packet to Serial KISS
|
||||||
|
|
||||||
#ifdef HAS_EPAPER // Only consider updating every 10 seconds (when data to show is different from before)
|
|
||||||
if(lastEpaperTime == 0 || millis() - lastEpaperTime > 10000) {
|
|
||||||
String posibleEpaperText = firstLine + secondLine + thirdLine + fourthLine + fifthLine + sixthLine + seventhLine;
|
|
||||||
if (lastEpaperText != posibleEpaperText) {
|
|
||||||
displayShow(firstLine, secondLine, thirdLine, fourthLine, fifthLine, sixthLine, seventhLine, 0);
|
|
||||||
lastEpaperText = posibleEpaperText;
|
|
||||||
lastEpaperTime = millis();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
displayShow(firstLine, secondLine, thirdLine, fourthLine, fifthLine, sixthLine, seventhLine, 0);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
Utils::checkRebootTime();
|
if (Config.aprs_is.active) {
|
||||||
Utils::checkSleepByLowBatteryVoltage(1);
|
APRS_IS_Utils::listenAPRSIS(); // listen received packet from APRSIS
|
||||||
}
|
}
|
||||||
|
|
||||||
|
STATION_Utils::processOutputPacketBuffer();
|
||||||
|
|
||||||
|
#ifdef HAS_EPAPER // Only consider updating every 10 seconds (when data to show is different from before)
|
||||||
|
if(lastEpaperTime == 0 || millis() - lastEpaperTime > 10000) {
|
||||||
|
String posibleEpaperText = firstLine + secondLine + thirdLine + fourthLine + fifthLine + sixthLine + seventhLine;
|
||||||
|
if (lastEpaperText != posibleEpaperText) {
|
||||||
|
displayShow(firstLine, secondLine, thirdLine, fourthLine, fifthLine, sixthLine, seventhLine, 0);
|
||||||
|
lastEpaperText = posibleEpaperText;
|
||||||
|
lastEpaperTime = millis();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
displayShow(firstLine, secondLine, thirdLine, fourthLine, fifthLine, sixthLine, seventhLine, 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Utils::checkRebootTime();
|
||||||
|
Utils::checkSleepByLowBatteryVoltage(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ESP32 (and ESPS3) work?
|
||||||
|
|
||||||
|
// ESP32C3 :
|
||||||
|
// - HT-CT62 sleeps??
|
||||||
|
// - and others?
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
#include "aprs_is_utils.h"
|
#include "aprs_is_utils.h"
|
||||||
#include "station_utils.h"
|
#include "station_utils.h"
|
||||||
|
#include "board_pinout.h"
|
||||||
#include "syslog_utils.h"
|
#include "syslog_utils.h"
|
||||||
#include "query_utils.h"
|
#include "query_utils.h"
|
||||||
#include "A7670_utils.h"
|
#include "A7670_utils.h"
|
||||||
@@ -70,7 +71,7 @@ namespace APRS_IS_Utils {
|
|||||||
if (WiFi.status() == WL_CONNECTED) {
|
if (WiFi.status() == WL_CONNECTED) {
|
||||||
wifiState = "OK";
|
wifiState = "OK";
|
||||||
} else {
|
} else {
|
||||||
if (backUpDigiMode || Config.digi.ecoMode) {
|
if (backUpDigiMode || Config.digi.ecoMode == 1 || Config.digi.ecoMode == 2) {
|
||||||
wifiState = "--";
|
wifiState = "--";
|
||||||
} else {
|
} else {
|
||||||
wifiState = "AP";
|
wifiState = "AP";
|
||||||
|
|||||||
@@ -198,15 +198,6 @@ namespace BATTERY_Utils {
|
|||||||
// return mapVoltage(voltage, 5.05, 6.32, 4.5, 5.5); // mapped voltage
|
// return mapVoltage(voltage, 5.05, 6.32, 4.5, 5.5); // mapped voltage
|
||||||
}
|
}
|
||||||
|
|
||||||
void checkIfShouldSleep() {
|
|
||||||
if (lastBatteryCheck == 0 || millis() - lastBatteryCheck >= 15 * 60 * 1000) {
|
|
||||||
lastBatteryCheck = millis();
|
|
||||||
if (checkInternalVoltage() < Config.lowVoltageCutOff) {
|
|
||||||
ESP.deepSleep(1800000000); // 30 min sleep (60s = 60e6)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void startupBatteryHealth() {
|
void startupBatteryHealth() {
|
||||||
#ifdef BATTERY_PIN
|
#ifdef BATTERY_PIN
|
||||||
if (Config.battery.monitorInternalVoltage && checkInternalVoltage() < Config.battery.internalSleepVoltage + 0.1) {
|
if (Config.battery.monitorInternalVoltage && checkInternalVoltage() < Config.battery.internalSleepVoltage + 0.1) {
|
||||||
|
|||||||
@@ -4,8 +4,11 @@
|
|||||||
#include "display.h"
|
#include "display.h"
|
||||||
|
|
||||||
|
|
||||||
|
bool shouldSleepStop = true;
|
||||||
|
|
||||||
|
|
||||||
void Configuration::writeFile() {
|
void Configuration::writeFile() {
|
||||||
Serial.println("Saving config..");
|
Serial.println("Saving config...");
|
||||||
|
|
||||||
StaticJsonDocument<2560> data;
|
StaticJsonDocument<2560> data;
|
||||||
File configFile = SPIFFS.open("/igate_conf.json", "w");
|
File configFile = SPIFFS.open("/igate_conf.json", "w");
|
||||||
@@ -94,9 +97,6 @@ void Configuration::writeFile() {
|
|||||||
|
|
||||||
data["other"]["backupDigiMode"] = backupDigiMode;
|
data["other"]["backupDigiMode"] = backupDigiMode;
|
||||||
|
|
||||||
data["other"]["lowPowerMode"] = lowPowerMode;
|
|
||||||
data["other"]["lowVoltageCutOff"] = lowVoltageCutOff;
|
|
||||||
|
|
||||||
data["personalNote"] = personalNote;
|
data["personalNote"] = personalNote;
|
||||||
|
|
||||||
data["blacklist"] = blacklist;
|
data["blacklist"] = blacklist;
|
||||||
@@ -115,6 +115,7 @@ void Configuration::writeFile() {
|
|||||||
configFile.close();
|
configFile.close();
|
||||||
|
|
||||||
Serial.println("Config saved");
|
Serial.println("Config saved");
|
||||||
|
delay(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Configuration::readFile() {
|
bool Configuration::readFile() {
|
||||||
@@ -167,7 +168,8 @@ bool Configuration::readFile() {
|
|||||||
aprs_is.objectsToRF = data["aprs_is"]["objectsToRF"] | false;
|
aprs_is.objectsToRF = data["aprs_is"]["objectsToRF"] | false;
|
||||||
|
|
||||||
digi.mode = data["digi"]["mode"] | 0;
|
digi.mode = data["digi"]["mode"] | 0;
|
||||||
digi.ecoMode = data["digi"]["ecoMode"] | false;
|
digi.ecoMode = data["digi"]["ecoMode"] | 0;
|
||||||
|
if (digi.ecoMode == 1) shouldSleepStop = false;
|
||||||
|
|
||||||
loramodule.txFreq = data["lora"]["txFreq"] | 433775000;
|
loramodule.txFreq = data["lora"]["txFreq"] | 433775000;
|
||||||
loramodule.rxFreq = data["lora"]["rxFreq"] | 433775000;
|
loramodule.rxFreq = data["lora"]["rxFreq"] | 433775000;
|
||||||
@@ -216,9 +218,6 @@ bool Configuration::readFile() {
|
|||||||
|
|
||||||
ntp.gmtCorrection = data["ntp"]["gmtCorrection"] | 0.0;
|
ntp.gmtCorrection = data["ntp"]["gmtCorrection"] | 0.0;
|
||||||
|
|
||||||
lowPowerMode = data["other"]["lowPowerMode"] | false;
|
|
||||||
lowVoltageCutOff = data["other"]["lowVoltageCutOff"] | 0;
|
|
||||||
|
|
||||||
backupDigiMode = data["other"]["backupDigiMode"] | false;
|
backupDigiMode = data["other"]["backupDigiMode"] | false;
|
||||||
|
|
||||||
rebootMode = data["other"]["rebootMode"] | false;
|
rebootMode = data["other"]["rebootMode"] | false;
|
||||||
@@ -274,7 +273,7 @@ void Configuration::init() {
|
|||||||
beacon.gpsAmbiguity = false;
|
beacon.gpsAmbiguity = false;
|
||||||
|
|
||||||
digi.mode = 0;
|
digi.mode = 0;
|
||||||
digi.ecoMode = false;
|
digi.ecoMode = 0;
|
||||||
|
|
||||||
tnc.enableServer = false;
|
tnc.enableServer = false;
|
||||||
tnc.enableSerial = false;
|
tnc.enableSerial = false;
|
||||||
@@ -327,9 +326,6 @@ void Configuration::init() {
|
|||||||
|
|
||||||
battery.sendVoltageAsTelemetry = false;
|
battery.sendVoltageAsTelemetry = false;
|
||||||
|
|
||||||
lowPowerMode = false;
|
|
||||||
lowVoltageCutOff = 0;
|
|
||||||
|
|
||||||
backupDigiMode = false;
|
backupDigiMode = false;
|
||||||
|
|
||||||
rebootMode = false;
|
rebootMode = false;
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ namespace DIGI_Utils {
|
|||||||
if (!thirdPartyPacket && !Utils::checkValidCallsign(Sender)) {
|
if (!thirdPartyPacket && !Utils::checkValidCallsign(Sender)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (STATION_Utils::check25SegBuffer(Sender, temp.substring(temp.indexOf(":") + 2)) || Config.lowPowerMode) {
|
if (STATION_Utils::check25SegBuffer(Sender, temp.substring(temp.indexOf(":") + 2))) {
|
||||||
STATION_Utils::updateLastHeard(Sender);
|
STATION_Utils::updateLastHeard(Sender);
|
||||||
Utils::typeOfPacket(temp, 2); // Digi
|
Utils::typeOfPacket(temp, 2); // Digi
|
||||||
bool queryMessage = false;
|
bool queryMessage = false;
|
||||||
@@ -148,12 +148,8 @@ namespace DIGI_Utils {
|
|||||||
if (!queryMessage) {
|
if (!queryMessage) {
|
||||||
String loraPacket = generateDigipeatedPacket(packet.substring(3), thirdPartyPacket);
|
String loraPacket = generateDigipeatedPacket(packet.substring(3), thirdPartyPacket);
|
||||||
if (loraPacket != "") {
|
if (loraPacket != "") {
|
||||||
if (Config.lowPowerMode) {
|
STATION_Utils::addToOutputPacketBuffer(loraPacket);
|
||||||
LoRa_Utils::sendNewPacket(loraPacket);
|
if (Config.digi.ecoMode != 1) displayToggle(true);
|
||||||
} else {
|
|
||||||
STATION_Utils::addToOutputPacketBuffer(loraPacket);
|
|
||||||
}
|
|
||||||
displayToggle(true);
|
|
||||||
lastScreenOn = millis();
|
lastScreenOn = millis();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -162,12 +158,4 @@ namespace DIGI_Utils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void checkEcoMode() {
|
|
||||||
if (Config.digi.ecoMode) {
|
|
||||||
Config.display.alwaysOn = false;
|
|
||||||
Config.display.timeout = 0;
|
|
||||||
setCpuFrequencyMhz(10);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -225,7 +225,7 @@ namespace GPS_Utils {
|
|||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
#ifdef HAS_GPS
|
#ifdef HAS_GPS
|
||||||
if (Config.beacon.gpsActive) {
|
if (Config.beacon.gpsActive && Config.digi.ecoMode != 1) {
|
||||||
gpsSerial.begin(GPS_BAUD, SERIAL_8N1, GPS_TX, GPS_RX);
|
gpsSerial.begin(GPS_BAUD, SERIAL_8N1, GPS_TX, GPS_RX);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -69,11 +69,7 @@ namespace LoRa_Utils {
|
|||||||
while (true);
|
while (true);
|
||||||
}
|
}
|
||||||
#if defined(HAS_SX1262) || defined(HAS_SX1268) || defined(HAS_LLCC68)
|
#if defined(HAS_SX1262) || defined(HAS_SX1268) || defined(HAS_LLCC68)
|
||||||
if (!Config.lowPowerMode) {
|
radio.setDio1Action(setFlag);
|
||||||
radio.setDio1Action(setFlag);
|
|
||||||
} else {
|
|
||||||
radio.setDIOMapping(1, RADIOLIB_SX126X_IRQ_RX_DONE);
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
#if defined(HAS_SX1278) || defined(HAS_SX1276)
|
#if defined(HAS_SX1278) || defined(HAS_SX1276)
|
||||||
radio.setDio0Action(setFlag, RISING);
|
radio.setDio0Action(setFlag, RISING);
|
||||||
@@ -133,7 +129,7 @@ namespace LoRa_Utils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef INTERNAL_LED_PIN
|
#ifdef INTERNAL_LED_PIN
|
||||||
if (!Config.digi.ecoMode) digitalWrite(INTERNAL_LED_PIN, HIGH);
|
if (Config.digi.ecoMode != 1) digitalWrite(INTERNAL_LED_PIN, HIGH); // disabled in Ultra Eco Mode
|
||||||
#endif
|
#endif
|
||||||
int state = radio.transmit("\x3c\xff\x01" + newPacket);
|
int state = radio.transmit("\x3c\xff\x01" + newPacket);
|
||||||
transmitFlag = true;
|
transmitFlag = true;
|
||||||
@@ -148,36 +144,29 @@ namespace LoRa_Utils {
|
|||||||
Utils::println(String(state));
|
Utils::println(String(state));
|
||||||
}
|
}
|
||||||
#ifdef INTERNAL_LED_PIN
|
#ifdef INTERNAL_LED_PIN
|
||||||
if (!Config.digi.ecoMode) digitalWrite(INTERNAL_LED_PIN, LOW);
|
if (Config.digi.ecoMode != 1) digitalWrite(INTERNAL_LED_PIN, LOW); // disabled in Ultra Eco Mode
|
||||||
#endif
|
#endif
|
||||||
if (Config.loramodule.txFreq != Config.loramodule.rxFreq) {
|
if (Config.loramodule.txFreq != Config.loramodule.rxFreq) {
|
||||||
changeFreqRx();
|
changeFreqRx();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*String packetSanitization(const String& packet) {
|
String receivePacketFromSleep() {
|
||||||
String sanitizedPacket = packet;
|
String packet = "";
|
||||||
if (packet.indexOf("\0") > 0) {
|
int state = radio.readData(packet);
|
||||||
sanitizedPacket.replace("\0", "");
|
if (state == RADIOLIB_ERR_NONE) {
|
||||||
|
Utils::println("<--- LoRa Packet Rx : " + packet.substring(3));
|
||||||
|
} else {
|
||||||
|
packet = "";
|
||||||
}
|
}
|
||||||
if (packet.indexOf("\r") > 0) {
|
return packet;
|
||||||
sanitizedPacket.replace("\r", "");
|
|
||||||
}
|
|
||||||
if (packet.indexOf("\n") > 0) {
|
|
||||||
sanitizedPacket.replace("\n", "");
|
|
||||||
}
|
|
||||||
return sanitizedPacket;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
void startReceive() {
|
|
||||||
radio.startReceive();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
String receivePacket() {
|
String receivePacket() {
|
||||||
String packet = "";
|
String packet = "";
|
||||||
if (operationDone || Config.lowPowerMode) {
|
if (operationDone) {
|
||||||
operationDone = false;
|
operationDone = false;
|
||||||
if (transmitFlag && !Config.lowPowerMode) {
|
if (transmitFlag) {
|
||||||
radio.startReceive();
|
radio.startReceive();
|
||||||
transmitFlag = false;
|
transmitFlag = false;
|
||||||
} else {
|
} else {
|
||||||
@@ -193,7 +182,7 @@ namespace LoRa_Utils {
|
|||||||
Utils::println("<--- LoRa Packet Rx : " + packet.substring(3));
|
Utils::println("<--- LoRa Packet Rx : " + packet.substring(3));
|
||||||
Utils::println("(RSSI:" + String(rssi) + " / SNR:" + String(snr) + " / FreqErr:" + String(freqError) + ")");
|
Utils::println("(RSSI:" + String(rssi) + " / SNR:" + String(snr) + " / FreqErr:" + String(freqError) + ")");
|
||||||
|
|
||||||
if (!Config.lowPowerMode && !Config.digi.ecoMode) {
|
if (Config.digi.ecoMode == 0) {
|
||||||
if (receivedPackets.size() >= 10) {
|
if (receivedPackets.size() >= 10) {
|
||||||
receivedPackets.erase(receivedPackets.begin());
|
receivedPackets.erase(receivedPackets.begin());
|
||||||
}
|
}
|
||||||
@@ -233,6 +222,10 @@ namespace LoRa_Utils {
|
|||||||
return packet;
|
return packet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wakeRadio() {
|
||||||
|
radio.startReceive();
|
||||||
|
}
|
||||||
|
|
||||||
void sleepRadio() {
|
void sleepRadio() {
|
||||||
radio.sleep();
|
radio.sleep();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ NTPClient timeClient(ntpUDP, "pool.ntp.org", 0, 15 * 60 * 1000); // Update in
|
|||||||
namespace NTP_Utils {
|
namespace NTP_Utils {
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
if (WiFi.status() == WL_CONNECTED && !Config.digi.ecoMode && Config.callsign != "NOCALL-10") {
|
if (WiFi.status() == WL_CONNECTED && Config.digi.ecoMode == 0 && Config.callsign != "NOCALL-10") {
|
||||||
int gmt = Config.ntp.gmtCorrection * 3600;
|
int gmt = Config.ntp.gmtCorrection * 3600;
|
||||||
timeClient.setTimeOffset(gmt);
|
timeClient.setTimeOffset(gmt);
|
||||||
timeClient.begin();
|
timeClient.begin();
|
||||||
@@ -23,11 +23,11 @@ namespace NTP_Utils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void update() {
|
void update() {
|
||||||
if (WiFi.status() == WL_CONNECTED && !Config.digi.ecoMode && Config.callsign != "NOCALL-10") timeClient.update();
|
if (WiFi.status() == WL_CONNECTED && Config.digi.ecoMode == 0 && Config.callsign != "NOCALL-10") timeClient.update();
|
||||||
}
|
}
|
||||||
|
|
||||||
String getFormatedTime() {
|
String getFormatedTime() {
|
||||||
if (!Config.digi.ecoMode) return timeClient.getFormattedTime();
|
if (Config.digi.ecoMode == 0) return timeClient.getFormattedTime();
|
||||||
return "DigiEcoMode Active";
|
return "DigiEcoMode Active";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -216,6 +216,7 @@ namespace POWER_Utils {
|
|||||||
|
|
||||||
#ifdef INTERNAL_LED_PIN
|
#ifdef INTERNAL_LED_PIN
|
||||||
pinMode(INTERNAL_LED_PIN, OUTPUT);
|
pinMode(INTERNAL_LED_PIN, OUTPUT);
|
||||||
|
digitalWrite(INTERNAL_LED_PIN, LOW);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (Config.battery.sendExternalVoltage || Config.battery.monitorExternalVoltage) {
|
if (Config.battery.sendExternalVoltage || Config.battery.monitorExternalVoltage) {
|
||||||
@@ -224,20 +225,26 @@ namespace POWER_Utils {
|
|||||||
|
|
||||||
#ifdef VEXT_CTRL
|
#ifdef VEXT_CTRL
|
||||||
pinMode(VEXT_CTRL,OUTPUT); // GPS + TFT on HELTEC Wireless_Tracker and only for Oled in HELTEC V3
|
pinMode(VEXT_CTRL,OUTPUT); // GPS + TFT on HELTEC Wireless_Tracker and only for Oled in HELTEC V3
|
||||||
#if defined(HELTEC_WIRELESS_TRACKER) || defined(HELTEC_V3)
|
#if defined(HELTEC_WIRELESS_TRACKER) || defined(HELTEC_V3)
|
||||||
digitalWrite(VEXT_CTRL, HIGH);
|
digitalWrite(VEXT_CTRL, Config.digi.ecoMode == 1 ? LOW : HIGH);
|
||||||
#endif
|
#endif
|
||||||
#if defined(HELTEC_WP) || defined(HELTEC_WS) || defined(HELTEC_V3_2)
|
#if defined(HELTEC_WP) || defined(HELTEC_WS) || defined(HELTEC_V3_2) || defined(HELTEC_WSL_V3)
|
||||||
digitalWrite(VEXT_CTRL, LOW);
|
digitalWrite(VEXT_CTRL, Config.digi.ecoMode == 1 ? HIGH : LOW);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAS_GPS
|
#ifdef HAS_GPS
|
||||||
if (Config.beacon.gpsActive) activateGPS();
|
if (Config.beacon.gpsActive && Config.digi.ecoMode != 1) activateGPS();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ADC_CTRL
|
#ifdef ADC_CTRL
|
||||||
pinMode(ADC_CTRL, OUTPUT);
|
pinMode(ADC_CTRL, OUTPUT);
|
||||||
|
#if defined(HELTEC_WIRELESS_TRACKER) || defined(HELTEC_V3_2)
|
||||||
|
digitalWrite(ADC_CTRL, LOW);
|
||||||
|
#endif
|
||||||
|
#if defined(HELTEC_V3) || defined(HELTEC_V2) || defined(HELTEC_WSL_V3) || defined(HELTEC_WP)
|
||||||
|
digitalWrite(ADC_CTRL, HIGH);
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(HELTEC_WIRELESS_TRACKER)
|
#if defined(HELTEC_WIRELESS_TRACKER)
|
||||||
@@ -250,7 +257,7 @@ namespace POWER_Utils {
|
|||||||
|
|
||||||
#if defined(HELTEC_V3) || defined(HELTEC_V3_2) || defined(HELTEC_WP) || defined(HELTEC_WSL_V3) || defined(HELTEC_WSL_V3_DISPLAY)
|
#if defined(HELTEC_V3) || defined(HELTEC_V3_2) || defined(HELTEC_WP) || defined(HELTEC_WSL_V3) || defined(HELTEC_WSL_V3_DISPLAY)
|
||||||
Wire1.begin(BOARD_I2C_SDA, BOARD_I2C_SCL);
|
Wire1.begin(BOARD_I2C_SDA, BOARD_I2C_SCL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(TTGO_T_DECK_GPS) || defined(TTGO_T_DECK_PLUS)
|
#if defined(TTGO_T_DECK_GPS) || defined(TTGO_T_DECK_PLUS)
|
||||||
pinMode(BOARD_POWERON, OUTPUT);
|
pinMode(BOARD_POWERON, OUTPUT);
|
||||||
@@ -266,11 +273,12 @@ namespace POWER_Utils {
|
|||||||
|
|
||||||
delay(500);
|
delay(500);
|
||||||
Wire.begin(BOARD_I2C_SDA, BOARD_I2C_SCL);
|
Wire.begin(BOARD_I2C_SDA, BOARD_I2C_SCL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
delay(1000);
|
delay(1000);
|
||||||
BATTERY_Utils::setup();
|
BATTERY_Utils::setup();
|
||||||
BATTERY_Utils::startupBatteryHealth();
|
BATTERY_Utils::startupBatteryHealth();
|
||||||
|
setCpuFrequencyMhz(80);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -58,9 +58,9 @@ namespace QUERY_Utils {
|
|||||||
else if (STATION_Utils::isManager(station) && (!queryFromAPRSIS || !Config.remoteManagement.rfOnly)) {
|
else if (STATION_Utils::isManager(station) && (!queryFromAPRSIS || !Config.remoteManagement.rfOnly)) {
|
||||||
if (queryQuestion.indexOf("?EM=OFF") == 0) {
|
if (queryQuestion.indexOf("?EM=OFF") == 0) {
|
||||||
if ((Config.digi.mode == 2 || Config.digi.mode == 3) && Config.loramodule.txActive && Config.loramodule.rxActive && !Config.aprs_is.active) {
|
if ((Config.digi.mode == 2 || Config.digi.mode == 3) && Config.loramodule.txActive && Config.loramodule.rxActive && !Config.aprs_is.active) {
|
||||||
if (Config.digi.ecoMode) { // Exit Digipeater EcoMode
|
if (Config.digi.ecoMode == 1) { // Exit Digipeater EcoMode
|
||||||
answer = "DigiEcoMode:OFF";
|
answer = "DigiEcoMode:OFF";
|
||||||
Config.digi.ecoMode = false;
|
Config.digi.ecoMode = 0;
|
||||||
Config.display.alwaysOn = true;
|
Config.display.alwaysOn = true;
|
||||||
Config.display.timeout = 10;
|
Config.display.timeout = 10;
|
||||||
shouldSleepLowVoltage = true; // to make sure all packets in outputPacketBuffer are sended before restart.
|
shouldSleepLowVoltage = true; // to make sure all packets in outputPacketBuffer are sended before restart.
|
||||||
@@ -73,9 +73,9 @@ namespace QUERY_Utils {
|
|||||||
}
|
}
|
||||||
} else if (queryQuestion.indexOf("?EM=ON") == 0) {
|
} else if (queryQuestion.indexOf("?EM=ON") == 0) {
|
||||||
if ((Config.digi.mode == 2 || Config.digi.mode == 3) && Config.loramodule.txActive && Config.loramodule.rxActive && !Config.aprs_is.active) {
|
if ((Config.digi.mode == 2 || Config.digi.mode == 3) && Config.loramodule.txActive && Config.loramodule.rxActive && !Config.aprs_is.active) {
|
||||||
if (!Config.digi.ecoMode) { // Start Digipeater EcoMode
|
if (Config.digi.ecoMode == 0) { // Start Digipeater EcoMode
|
||||||
answer = "DigiEcoMode:ON";
|
answer = "DigiEcoMode:ON";
|
||||||
Config.digi.ecoMode = true;
|
Config.digi.ecoMode = 1;
|
||||||
shouldSleepLowVoltage = true; // to make sure all packets in outputPacketBuffer are sended before restart.
|
shouldSleepLowVoltage = true; // to make sure all packets in outputPacketBuffer are sended before restart.
|
||||||
saveNewDigiEcoModeConfig = true;
|
saveNewDigiEcoModeConfig = true;
|
||||||
} else {
|
} else {
|
||||||
@@ -85,7 +85,13 @@ namespace QUERY_Utils {
|
|||||||
answer = "DigiEcoMode control not possible";
|
answer = "DigiEcoMode control not possible";
|
||||||
}
|
}
|
||||||
} else if (queryQuestion.indexOf("?EM=?") == 0) { // Digipeater EcoMode Status
|
} else if (queryQuestion.indexOf("?EM=?") == 0) { // Digipeater EcoMode Status
|
||||||
answer = (Config.digi.ecoMode) ? "DigiEcoMode:ON" : "DigiEcoMode:OFF";
|
if (Config.digi.ecoMode == 0) {
|
||||||
|
answer = "DigiEcoMode:OFF";
|
||||||
|
} else if (Config.digi.ecoMode == 1) {
|
||||||
|
answer = "DigiEcoMode:ON";
|
||||||
|
} else {
|
||||||
|
answer = "DigiEcoMode:OFF/Only Serial Output";
|
||||||
|
}
|
||||||
} else if (queryQuestion.indexOf("?TX=ON") == 0) {
|
} else if (queryQuestion.indexOf("?TX=ON") == 0) {
|
||||||
if (Config.loramodule.txActive) {
|
if (Config.loramodule.txActive) {
|
||||||
answer = "TX was ON";
|
answer = "TX was ON";
|
||||||
|
|||||||
66
src/sleep_utils.cpp
Normal file
66
src/sleep_utils.cpp
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
#include "configuration.h"
|
||||||
|
#include "board_pinout.h"
|
||||||
|
#include "sleep_utils.h"
|
||||||
|
#include "digi_utils.h"
|
||||||
|
#include "lora_utils.h"
|
||||||
|
|
||||||
|
|
||||||
|
extern Configuration Config;
|
||||||
|
extern bool shouldSleepStop;
|
||||||
|
extern uint32_t lastBeaconTx;
|
||||||
|
|
||||||
|
bool wakeUpFlag = false;
|
||||||
|
|
||||||
|
|
||||||
|
namespace SLEEP_Utils {
|
||||||
|
|
||||||
|
void wakeUpLoRaPacketReceived() {
|
||||||
|
wakeUpFlag = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void checkWakeUpFlag() {
|
||||||
|
if (wakeUpFlag) {
|
||||||
|
String packet = LoRa_Utils::receivePacketFromSleep();
|
||||||
|
if (packet != "") {
|
||||||
|
DIGI_Utils::processLoRaPacket(packet);
|
||||||
|
}
|
||||||
|
wakeUpFlag = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
if (Config.digi.ecoMode == 1) {
|
||||||
|
pinMode(RADIO_WAKEUP_PIN, INPUT);
|
||||||
|
attachInterrupt(digitalPinToInterrupt(RADIO_WAKEUP_PIN), wakeUpLoRaPacketReceived, RISING);
|
||||||
|
#if defined(TTGO_LORA32_V2_1) || defined(TTGO_LORA32_V2_1_915) || defined(TTGO_LORA32_T3S3_V1_2) || defined(TTGO_T_BEAM_V1_0) || defined(TTGO_T_BEAM_V1_0_915) || defined(TTGO_T_BEAM_V1_0_SX1268) || defined(TTGO_T_BEAM_V1_2) || defined(TTGO_T_BEAM_V1_2_915) || defined(TTGO_T_BEAM_V1_2_SX1262) || defined(TTGO_T_DECK_PLUS) || defined(TTGO_T_DECK_GPS) || defined(TTGO_T_Beam_S3_SUPREME_V3) || defined(HELTEC_V3) || defined(HELTEC_V3_2) || defined(HELTEC_WP) || defined(HELTEC_WS) || defined(HELTEC_WSL_V3) || defined(HELTEC_WSL_V3_DISPLAY) || defined(HELTEC_WIRELESS_TRACKER) || defined(HELTEC_V2) || defined(XIAO_ESP32S3_LORA) || defined(LIGHTGATEWAY_1_0) || defined(TROY_LoRa_APRS) || defined(OE5HWN_MeshCom) || defined(ESP32_DIY_LoRa) || defined(ESP32_DIY_LoRa_915) || defined(ESP32_DIY_1W_LoRa) || defined(ESP32_DIY_1W_LoRa_915) || defined(ESP32_DIY_1W_LoRa_LLCC68) || defined(ESP32_DIY_1W_LoRa_Mesh_V1_2) || defined(WEMOS_S2_MINI_DIY_LoRa) || defined(WEMOS_D1_R32_RA02) || defined(WEMOS_LOLIN32_OLED_DIY_LoRa)
|
||||||
|
esp_sleep_enable_ext1_wakeup(GPIO_WAKEUP_PIN, ESP_EXT1_WAKEUP_ANY_HIGH);
|
||||||
|
#endif
|
||||||
|
#if defined(HELTEC_HTCT62) || defined(ESP32C3_DIY_1W_LoRa) || defined(ESP32C3_DIY_1W_LoRa_915) || defined(ESP32_C3_OctopusLab_LoRa)
|
||||||
|
esp_deep_sleep_enable_gpio_wakeup(1ULL << GPIO_WAKEUP_PIN, ESP_GPIO_WAKEUP_GPIO_HIGH);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t getSecondsToSleep() {
|
||||||
|
uint32_t elapsedTime = (millis() - lastBeaconTx) / 1000; // in secs
|
||||||
|
uint32_t intervalTime = Config.beacon.interval * 60; // in secs
|
||||||
|
return (elapsedTime < intervalTime) ? (intervalTime - elapsedTime) : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void startSleeping() {
|
||||||
|
if (!shouldSleepStop) {
|
||||||
|
uint32_t timeToSleep = getSecondsToSleep();
|
||||||
|
esp_sleep_enable_timer_wakeup(timeToSleep * 1000000); // 1 min = 60sec
|
||||||
|
Serial.print("(Sleeping : "); Serial.print(timeToSleep); Serial.println("seconds)");
|
||||||
|
delay(100);
|
||||||
|
LoRa_Utils::wakeRadio();
|
||||||
|
esp_light_sleep_start();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void checkSerial() {
|
||||||
|
if (Config.digi.ecoMode == 1) Serial.end();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -45,12 +45,9 @@ namespace STATION_Utils {
|
|||||||
return loadedList;
|
return loadedList;
|
||||||
}
|
}
|
||||||
|
|
||||||
void loadBlacklist() {
|
void loadBlacklistAndManagers() {
|
||||||
blacklist = loadCallSignList(Config.blacklist);
|
blacklist = loadCallSignList(Config.blacklist);
|
||||||
}
|
managers = loadCallSignList(Config.remoteManagement.managers);
|
||||||
|
|
||||||
void loadManagers() {
|
|
||||||
managers = loadCallSignList(Config.remoteManagement.managers);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool checkCallsignList(const std::vector<String>& list, const String& callsign) {
|
bool checkCallsignList(const std::vector<String>& list, const String& callsign) {
|
||||||
@@ -152,6 +149,24 @@ namespace STATION_Utils {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void processOutputPacketBufferUltraEcoMode() {
|
||||||
|
size_t currentIndex = 0;
|
||||||
|
while (currentIndex < outputPacketBuffer.size()) { // this sends all packets from output buffer
|
||||||
|
delay(3000); // and cleans buffer to avoid sending packets with time offset
|
||||||
|
LoRa_Utils::sendNewPacket(outputPacketBuffer[currentIndex]); // next time it wakes up
|
||||||
|
currentIndex++;
|
||||||
|
}
|
||||||
|
outputPacketBuffer.clear();
|
||||||
|
//
|
||||||
|
if (saveNewDigiEcoModeConfig) {
|
||||||
|
Config.writeFile();
|
||||||
|
delay(1000);
|
||||||
|
displayToggle(false);
|
||||||
|
ESP.restart();
|
||||||
|
}
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
void processOutputPacketBuffer() {
|
void processOutputPacketBuffer() {
|
||||||
int timeToWait = 3 * 1000; // 3 segs between packet Tx and also Rx ???
|
int timeToWait = 3 * 1000; // 3 segs between packet Tx and also Rx ???
|
||||||
uint32_t lastRx = millis() - lastRxTime;
|
uint32_t lastRx = millis() - lastRxTime;
|
||||||
@@ -169,7 +184,6 @@ namespace STATION_Utils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (saveNewDigiEcoModeConfig) {
|
if (saveNewDigiEcoModeConfig) {
|
||||||
setCpuFrequencyMhz(80);
|
|
||||||
Config.writeFile();
|
Config.writeFile();
|
||||||
delay(1000);
|
delay(1000);
|
||||||
displayToggle(false);
|
displayToggle(false);
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ String inputSerialBuffer = "";
|
|||||||
namespace TNC_Utils {
|
namespace TNC_Utils {
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
if (Config.tnc.enableServer && !Config.digi.ecoMode) {
|
if (Config.tnc.enableServer && Config.digi.ecoMode == 0) {
|
||||||
tncServer.stop();
|
tncServer.stop();
|
||||||
tncServer.begin();
|
tncServer.begin();
|
||||||
}
|
}
|
||||||
@@ -128,7 +128,7 @@ namespace TNC_Utils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
if (!Config.digi.ecoMode) {
|
if (Config.digi.ecoMode == 0) {
|
||||||
if (Config.tnc.enableServer) {
|
if (Config.tnc.enableServer) {
|
||||||
checkNewClients();
|
checkNewClients();
|
||||||
readFromClients();
|
readFromClients();
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ namespace Utils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String getLocalIP() {
|
String getLocalIP() {
|
||||||
if (Config.digi.ecoMode) {
|
if (Config.digi.ecoMode == 1 || Config.digi.ecoMode == 2) {
|
||||||
return "** WiFi AP Killed **";
|
return "** WiFi AP Killed **";
|
||||||
} else if (!WiFiConnected) {
|
} else if (!WiFiConnected) {
|
||||||
return "IP : 192.168.4.1";
|
return "IP : 192.168.4.1";
|
||||||
@@ -88,12 +88,19 @@ namespace Utils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void setupDisplay() {
|
void setupDisplay() {
|
||||||
displaySetup();
|
if (Config.digi.ecoMode != 1) displaySetup();
|
||||||
#ifdef INTERNAL_LED_PIN
|
#ifdef INTERNAL_LED_PIN
|
||||||
digitalWrite(INTERNAL_LED_PIN,HIGH);
|
digitalWrite(INTERNAL_LED_PIN,HIGH);
|
||||||
#endif
|
#endif
|
||||||
Serial.println("\nStarting Station: " + Config.callsign + " Version: " + versionDate);
|
Serial.println("\nStarting Station: " + Config.callsign + " Version: " + versionDate);
|
||||||
Serial.println((Config.digi.ecoMode) ? "(DigiEcoMode: ON)" : "(DigiEcoMode: OFF)");
|
Serial.print("(DigiEcoMode: ");
|
||||||
|
if (Config.digi.ecoMode == 0) {
|
||||||
|
Serial.println("OFF)");
|
||||||
|
} else if (Config.digi.ecoMode == 1) {
|
||||||
|
Serial.println("ON)");
|
||||||
|
} else {
|
||||||
|
Serial.println("ON / Only Serial Output)");
|
||||||
|
}
|
||||||
displayShow(" LoRa APRS", "", "", " ( iGATE & DIGI )", "", "" , " CA2RXU " + versionDate, 4000);
|
displayShow(" LoRa APRS", "", "", " ( iGATE & DIGI )", "", "" , " CA2RXU " + versionDate, 4000);
|
||||||
#ifdef INTERNAL_LED_PIN
|
#ifdef INTERNAL_LED_PIN
|
||||||
digitalWrite(INTERNAL_LED_PIN,LOW);
|
digitalWrite(INTERNAL_LED_PIN,LOW);
|
||||||
@@ -200,7 +207,6 @@ namespace Utils {
|
|||||||
!Config.wxsensor.active &&
|
!Config.wxsensor.active &&
|
||||||
(Config.battery.sendInternalVoltage || Config.battery.sendExternalVoltage) &&
|
(Config.battery.sendInternalVoltage || Config.battery.sendExternalVoltage) &&
|
||||||
(lastBeaconTx > 0)) {
|
(lastBeaconTx > 0)) {
|
||||||
//(!Config.digi.ecoMode || lastBeaconTx > 0)) {
|
|
||||||
sendInitialTelemetryPackets();
|
sendInitialTelemetryPackets();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -211,7 +217,7 @@ namespace Utils {
|
|||||||
beaconPacket = iGateBeaconPacket;
|
beaconPacket = iGateBeaconPacket;
|
||||||
secondaryBeaconPacket = iGateLoRaBeaconPacket;
|
secondaryBeaconPacket = iGateLoRaBeaconPacket;
|
||||||
#ifdef HAS_GPS
|
#ifdef HAS_GPS
|
||||||
if (Config.beacon.gpsActive && !Config.digi.ecoMode) {
|
if (Config.beacon.gpsActive && Config.digi.ecoMode == 0) {
|
||||||
GPS_Utils::getData();
|
GPS_Utils::getData();
|
||||||
if (gps.location.isUpdated() && gps.location.lat() != 0.0 && gps.location.lng() != 0.0) {
|
if (gps.location.isUpdated() && gps.location.lat() != 0.0 && gps.location.lng() != 0.0) {
|
||||||
GPS_Utils::generateBeaconFirstPart();
|
GPS_Utils::generateBeaconFirstPart();
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ namespace WEB_Utils {
|
|||||||
|
|
||||||
|
|
||||||
Config.digi.mode = request->getParam("digi.mode", true)->value().toInt();
|
Config.digi.mode = request->getParam("digi.mode", true)->value().toInt();
|
||||||
Config.digi.ecoMode = request->hasParam("digi.ecoMode", true);
|
Config.digi.ecoMode = request->getParam("digi.ecoMode", true)->value().toInt();;
|
||||||
|
|
||||||
|
|
||||||
Config.loramodule.txFreq = request->getParam("lora.txFreq", true)->value().toInt();
|
Config.loramodule.txFreq = request->getParam("lora.txFreq", true)->value().toInt();
|
||||||
@@ -202,8 +202,6 @@ namespace WEB_Utils {
|
|||||||
Config.rememberStationTime = request->getParam("other.rememberStationTime", true)->value().toInt();
|
Config.rememberStationTime = request->getParam("other.rememberStationTime", true)->value().toInt();
|
||||||
|
|
||||||
Config.backupDigiMode = request->hasParam("other.backupDigiMode", true);
|
Config.backupDigiMode = request->hasParam("other.backupDigiMode", true);
|
||||||
Config.lowPowerMode = request->hasParam("other.lowPowerMode", true);
|
|
||||||
Config.lowVoltageCutOff = request->getParam("other.lowVoltageCutOff", true)->value().toDouble();
|
|
||||||
|
|
||||||
Config.personalNote = request->getParam("personalNote", true)->value();
|
Config.personalNote = request->getParam("personalNote", true)->value();
|
||||||
|
|
||||||
@@ -226,6 +224,7 @@ namespace WEB_Utils {
|
|||||||
response->addHeader("Location", "/");
|
response->addHeader("Location", "/");
|
||||||
request->send(response);
|
request->send(response);
|
||||||
displayToggle(false);
|
displayToggle(false);
|
||||||
|
delay(200);
|
||||||
ESP.restart();
|
ESP.restart();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -271,7 +270,7 @@ namespace WEB_Utils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
if (!Config.digi.ecoMode) {
|
if (Config.digi.ecoMode == 0) {
|
||||||
server.on("/", HTTP_GET, handleHome);
|
server.on("/", HTTP_GET, handleHome);
|
||||||
server.on("/status", HTTP_GET, handleStatus);
|
server.on("/status", HTTP_GET, handleStatus);
|
||||||
server.on("/received-packets.json", HTTP_GET, handleReceivedPackets);
|
server.on("/received-packets.json", HTTP_GET, handleReceivedPackets);
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ uint32_t lastBackupDigiTime = millis();
|
|||||||
namespace WIFI_Utils {
|
namespace WIFI_Utils {
|
||||||
|
|
||||||
void checkWiFi() {
|
void checkWiFi() {
|
||||||
if (!Config.digi.ecoMode) {
|
if (Config.digi.ecoMode == 0) {
|
||||||
if (backUpDigiMode) {
|
if (backUpDigiMode) {
|
||||||
uint32_t WiFiCheck = millis() - lastBackupDigiTime;
|
uint32_t WiFiCheck = millis() - lastBackupDigiTime;
|
||||||
if (WiFi.status() != WL_CONNECTED && WiFiCheck >= 15 * 60 * 1000) {
|
if (WiFi.status() != WL_CONNECTED && WiFiCheck >= 15 * 60 * 1000) {
|
||||||
@@ -154,7 +154,7 @@ namespace WIFI_Utils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
if (!Config.digi.ecoMode) startWiFi();
|
if (Config.digi.ecoMode == 0) startWiFi();
|
||||||
btStop();
|
btStop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,8 @@
|
|||||||
#define RADIO_DIO1_PIN 3
|
#define RADIO_DIO1_PIN 3
|
||||||
#define RADIO_RST_PIN -1
|
#define RADIO_RST_PIN -1
|
||||||
#define RADIO_BUSY_PIN 8
|
#define RADIO_BUSY_PIN 8
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -13,6 +13,8 @@
|
|||||||
#define RADIO_BUSY_PIN 14
|
#define RADIO_BUSY_PIN 14
|
||||||
#define RADIO_RXEN 32
|
#define RADIO_RXEN 32
|
||||||
#define RADIO_TXEN 25
|
#define RADIO_TXEN 25
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_12
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -13,6 +13,8 @@
|
|||||||
#define RADIO_BUSY_PIN 14
|
#define RADIO_BUSY_PIN 14
|
||||||
#define RADIO_RXEN 32
|
#define RADIO_RXEN 32
|
||||||
#define RADIO_TXEN 25
|
#define RADIO_TXEN 25
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_12
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -13,6 +13,8 @@
|
|||||||
#define RADIO_BUSY_PIN 14
|
#define RADIO_BUSY_PIN 14
|
||||||
#define RADIO_RXEN 32
|
#define RADIO_RXEN 32
|
||||||
#define RADIO_TXEN 25
|
#define RADIO_TXEN 25
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_12
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -13,6 +13,8 @@
|
|||||||
#define RADIO_BUSY_PIN 32
|
#define RADIO_BUSY_PIN 32
|
||||||
#define RADIO_RXEN 14
|
#define RADIO_RXEN 14
|
||||||
#define RADIO_TXEN 13
|
#define RADIO_TXEN 13
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_33
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -9,6 +9,8 @@
|
|||||||
#define RADIO_CS_PIN 18
|
#define RADIO_CS_PIN 18
|
||||||
#define RADIO_RST_PIN 14
|
#define RADIO_RST_PIN 14
|
||||||
#define RADIO_BUSY_PIN 26
|
#define RADIO_BUSY_PIN 26
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_BUSY_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_26
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -9,6 +9,8 @@
|
|||||||
#define RADIO_CS_PIN 18
|
#define RADIO_CS_PIN 18
|
||||||
#define RADIO_RST_PIN 14
|
#define RADIO_RST_PIN 14
|
||||||
#define RADIO_BUSY_PIN 26
|
#define RADIO_BUSY_PIN 26
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_BUSY_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_26
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -13,6 +13,8 @@
|
|||||||
#define RADIO_BUSY_PIN 26
|
#define RADIO_BUSY_PIN 26
|
||||||
#define RADIO_RXEN 14
|
#define RADIO_RXEN 14
|
||||||
#define RADIO_TXEN 13
|
#define RADIO_TXEN 13
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_33
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -13,6 +13,8 @@
|
|||||||
#define RADIO_BUSY_PIN 6
|
#define RADIO_BUSY_PIN 6
|
||||||
#define RADIO_RXEN 42
|
#define RADIO_RXEN 42
|
||||||
#define RADIO_TXEN 14
|
#define RADIO_TXEN 14
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_5
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -9,6 +9,8 @@
|
|||||||
#define RADIO_CS_PIN 18
|
#define RADIO_CS_PIN 18
|
||||||
#define RADIO_RST_PIN 23
|
#define RADIO_RST_PIN 23
|
||||||
#define RADIO_BUSY_PIN 26
|
#define RADIO_BUSY_PIN 26
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_BUSY_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_26
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -10,6 +10,8 @@
|
|||||||
#define RADIO_RST_PIN 13
|
#define RADIO_RST_PIN 13
|
||||||
#define RADIO_DIO1_PIN 14
|
#define RADIO_DIO1_PIN 14
|
||||||
#define RADIO_BUSY_PIN 12
|
#define RADIO_BUSY_PIN 12
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_BUSY_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_12
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -9,6 +9,8 @@
|
|||||||
#define RADIO_CS_PIN 14
|
#define RADIO_CS_PIN 14
|
||||||
#define RADIO_RST_PIN 2
|
#define RADIO_RST_PIN 2
|
||||||
#define RADIO_BUSY_PIN 25
|
#define RADIO_BUSY_PIN 25
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_BUSY_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_25
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -9,6 +9,8 @@
|
|||||||
#define RADIO_CS_PIN 34
|
#define RADIO_CS_PIN 34
|
||||||
#define RADIO_RST_PIN 33
|
#define RADIO_RST_PIN 33
|
||||||
#define RADIO_BUSY_PIN 38
|
#define RADIO_BUSY_PIN 38
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_BUSY_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_38
|
||||||
|
|
||||||
// Aditional Config
|
// Aditional Config
|
||||||
#define INTERNAL_LED_PIN 15
|
#define INTERNAL_LED_PIN 15
|
||||||
|
|||||||
@@ -10,6 +10,8 @@
|
|||||||
#define RADIO_RST_PIN 42
|
#define RADIO_RST_PIN 42
|
||||||
#define RADIO_DIO1_PIN 39
|
#define RADIO_DIO1_PIN 39
|
||||||
#define RADIO_BUSY_PIN 40
|
#define RADIO_BUSY_PIN 40
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_39
|
||||||
|
|
||||||
#define RADIO_HAS_RF_SWITCH // DIO02
|
#define RADIO_HAS_RF_SWITCH // DIO02
|
||||||
#define RADIO_RF_SWITCH 38
|
#define RADIO_RF_SWITCH 38
|
||||||
|
|||||||
@@ -13,5 +13,7 @@
|
|||||||
#define RADIO_BUSY_PIN 3
|
#define RADIO_BUSY_PIN 3
|
||||||
#define RADIO_RXEN 6
|
#define RADIO_RXEN 6
|
||||||
#define RADIO_TXEN 7
|
#define RADIO_TXEN 7
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -13,5 +13,7 @@
|
|||||||
#define RADIO_BUSY_PIN 3
|
#define RADIO_BUSY_PIN 3
|
||||||
#define RADIO_RXEN 6
|
#define RADIO_RXEN 6
|
||||||
#define RADIO_TXEN 7
|
#define RADIO_TXEN 7
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -9,6 +9,8 @@
|
|||||||
#define RADIO_CS_PIN 18
|
#define RADIO_CS_PIN 18
|
||||||
#define RADIO_RST_PIN 14
|
#define RADIO_RST_PIN 14
|
||||||
#define RADIO_BUSY_PIN 26
|
#define RADIO_BUSY_PIN 26
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_BUSY_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_26
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -10,6 +10,8 @@
|
|||||||
#define RADIO_RST_PIN 5
|
#define RADIO_RST_PIN 5
|
||||||
#define RADIO_DIO1_PIN 3
|
#define RADIO_DIO1_PIN 3
|
||||||
#define RADIO_BUSY_PIN 4
|
#define RADIO_BUSY_PIN 4
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
|
||||||
// Aditional Config
|
// Aditional Config
|
||||||
#define BATTERY_PIN 1
|
#define BATTERY_PIN 1
|
||||||
|
|||||||
@@ -10,6 +10,8 @@
|
|||||||
#define RADIO_RST_PIN 12
|
#define RADIO_RST_PIN 12
|
||||||
#define RADIO_DIO1_PIN 14
|
#define RADIO_DIO1_PIN 14
|
||||||
#define RADIO_BUSY_PIN 13
|
#define RADIO_BUSY_PIN 13
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_14
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -10,6 +10,8 @@
|
|||||||
#define RADIO_RST_PIN 12
|
#define RADIO_RST_PIN 12
|
||||||
#define RADIO_DIO1_PIN 14
|
#define RADIO_DIO1_PIN 14
|
||||||
#define RADIO_BUSY_PIN 13
|
#define RADIO_BUSY_PIN 13
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_14
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -10,6 +10,8 @@
|
|||||||
#define RADIO_RST_PIN 12
|
#define RADIO_RST_PIN 12
|
||||||
#define RADIO_DIO1_PIN 14
|
#define RADIO_DIO1_PIN 14
|
||||||
#define RADIO_BUSY_PIN 13
|
#define RADIO_BUSY_PIN 13
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_14
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -10,6 +10,8 @@
|
|||||||
#define RADIO_RST_PIN 12
|
#define RADIO_RST_PIN 12
|
||||||
#define RADIO_DIO1_PIN 14
|
#define RADIO_DIO1_PIN 14
|
||||||
#define RADIO_BUSY_PIN 13
|
#define RADIO_BUSY_PIN 13
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_14
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -10,6 +10,8 @@
|
|||||||
#define RADIO_RST_PIN 12
|
#define RADIO_RST_PIN 12
|
||||||
#define RADIO_DIO1_PIN 14
|
#define RADIO_DIO1_PIN 14
|
||||||
#define RADIO_BUSY_PIN 13
|
#define RADIO_BUSY_PIN 13
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_14
|
||||||
|
|
||||||
// Aditional Config
|
// Aditional Config
|
||||||
#define INTERNAL_LED_PIN 35
|
#define INTERNAL_LED_PIN 35
|
||||||
|
|||||||
@@ -10,6 +10,8 @@
|
|||||||
#define RADIO_RST_PIN 12
|
#define RADIO_RST_PIN 12
|
||||||
#define RADIO_DIO1_PIN 14
|
#define RADIO_DIO1_PIN 14
|
||||||
#define RADIO_BUSY_PIN 13
|
#define RADIO_BUSY_PIN 13
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_14
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -10,6 +10,8 @@
|
|||||||
#define RADIO_RST_PIN 12 // SX1262 RST
|
#define RADIO_RST_PIN 12 // SX1262 RST
|
||||||
#define RADIO_DIO1_PIN 14 // SX1262 DIO1
|
#define RADIO_DIO1_PIN 14 // SX1262 DIO1
|
||||||
#define RADIO_BUSY_PIN 13 // SX1262 BUSY
|
#define RADIO_BUSY_PIN 13 // SX1262 BUSY
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_14
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -9,6 +9,8 @@
|
|||||||
#define RADIO_CS_PIN 18
|
#define RADIO_CS_PIN 18
|
||||||
#define RADIO_RST_PIN 14
|
#define RADIO_RST_PIN 14
|
||||||
#define RADIO_BUSY_PIN 26
|
#define RADIO_BUSY_PIN 26
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_BUSY_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_26
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -9,6 +9,8 @@
|
|||||||
#define RADIO_CS_PIN 18
|
#define RADIO_CS_PIN 18
|
||||||
#define RADIO_RST_PIN 14
|
#define RADIO_RST_PIN 14
|
||||||
#define RADIO_BUSY_PIN 26
|
#define RADIO_BUSY_PIN 26
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_BUSY_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_26
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -9,6 +9,8 @@
|
|||||||
#define RADIO_CS_PIN 18
|
#define RADIO_CS_PIN 18
|
||||||
#define RADIO_RST_PIN 14
|
#define RADIO_RST_PIN 14
|
||||||
#define RADIO_BUSY_PIN 26
|
#define RADIO_BUSY_PIN 26
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_BUSY_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_26
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -9,6 +9,8 @@
|
|||||||
#define RADIO_CS_PIN 18
|
#define RADIO_CS_PIN 18
|
||||||
#define RADIO_RST_PIN 14
|
#define RADIO_RST_PIN 14
|
||||||
#define RADIO_BUSY_PIN 26
|
#define RADIO_BUSY_PIN 26
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_BUSY_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_26
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -9,6 +9,8 @@
|
|||||||
#define RADIO_CS_PIN 18
|
#define RADIO_CS_PIN 18
|
||||||
#define RADIO_RST_PIN 14
|
#define RADIO_RST_PIN 14
|
||||||
#define RADIO_BUSY_PIN 26
|
#define RADIO_BUSY_PIN 26
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_BUSY_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_26
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -11,6 +11,8 @@
|
|||||||
#define RADIO_RST_PIN 23
|
#define RADIO_RST_PIN 23
|
||||||
#define RADIO_DIO1_PIN 33
|
#define RADIO_DIO1_PIN 33
|
||||||
#define RADIO_BUSY_PIN 32
|
#define RADIO_BUSY_PIN 32
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_33
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -9,6 +9,8 @@
|
|||||||
#define RADIO_CS_PIN 18
|
#define RADIO_CS_PIN 18
|
||||||
#define RADIO_RST_PIN 14
|
#define RADIO_RST_PIN 14
|
||||||
#define RADIO_BUSY_PIN 26
|
#define RADIO_BUSY_PIN 26
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_BUSY_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_26
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -11,6 +11,8 @@
|
|||||||
#define RADIO_RST_PIN 23
|
#define RADIO_RST_PIN 23
|
||||||
#define RADIO_DIO1_PIN 33
|
#define RADIO_DIO1_PIN 33
|
||||||
#define RADIO_BUSY_PIN 32
|
#define RADIO_BUSY_PIN 32
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_33
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -10,6 +10,8 @@
|
|||||||
#define RADIO_RST_PIN 8
|
#define RADIO_RST_PIN 8
|
||||||
#define RADIO_DIO1_PIN 33
|
#define RADIO_DIO1_PIN 33
|
||||||
#define RADIO_BUSY_PIN 34
|
#define RADIO_BUSY_PIN 34
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_33
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
|
|||||||
@@ -3,14 +3,16 @@
|
|||||||
|
|
||||||
// LoRa Radio
|
// LoRa Radio
|
||||||
#define HAS_SX1262
|
#define HAS_SX1262
|
||||||
#define RADIO_SCLK_PIN 12
|
#define RADIO_SCLK_PIN 12
|
||||||
#define RADIO_MISO_PIN 13
|
#define RADIO_MISO_PIN 13
|
||||||
#define RADIO_MOSI_PIN 11
|
#define RADIO_MOSI_PIN 11
|
||||||
#define RADIO_CS_PIN 10
|
#define RADIO_CS_PIN 10
|
||||||
#define RADIO_DIO0_PIN -1
|
#define RADIO_DIO0_PIN -1
|
||||||
#define RADIO_RST_PIN 5
|
#define RADIO_RST_PIN 5
|
||||||
#define RADIO_DIO1_PIN 1
|
#define RADIO_DIO1_PIN 1
|
||||||
#define RADIO_BUSY_PIN 4
|
#define RADIO_BUSY_PIN 4
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_1
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
@@ -19,9 +21,9 @@
|
|||||||
#undef OLED_SCL
|
#undef OLED_SCL
|
||||||
#undef OLED_RST
|
#undef OLED_RST
|
||||||
|
|
||||||
#define OLED_SDA 17
|
#define OLED_SDA 17
|
||||||
#define OLED_SCL 18
|
#define OLED_SCL 18
|
||||||
#define OLED_RST 16
|
#define OLED_RST 16
|
||||||
#define OLED_DISPLAY_HAS_RST_PIN
|
#define OLED_DISPLAY_HAS_RST_PIN
|
||||||
|
|
||||||
// Aditional Config
|
// Aditional Config
|
||||||
@@ -29,8 +31,8 @@
|
|||||||
|
|
||||||
// GPS
|
// GPS
|
||||||
#define HAS_GPS
|
#define HAS_GPS
|
||||||
#define GPS_RX 8
|
#define GPS_RX 8
|
||||||
#define GPS_TX 9
|
#define GPS_TX 9
|
||||||
|
|
||||||
#define BOARD_HAS_PSRAM
|
#define BOARD_HAS_PSRAM
|
||||||
|
|
||||||
|
|||||||
@@ -3,13 +3,15 @@
|
|||||||
|
|
||||||
// LoRa Radio
|
// LoRa Radio
|
||||||
#define HAS_SX1262
|
#define HAS_SX1262
|
||||||
#define RADIO_SCLK_PIN 40
|
#define RADIO_SCLK_PIN 40
|
||||||
#define RADIO_MISO_PIN 38
|
#define RADIO_MISO_PIN 38
|
||||||
#define RADIO_MOSI_PIN 41
|
#define RADIO_MOSI_PIN 41
|
||||||
#define RADIO_CS_PIN 9
|
#define RADIO_CS_PIN 9
|
||||||
#define RADIO_RST_PIN 17
|
#define RADIO_RST_PIN 17
|
||||||
#define RADIO_DIO1_PIN 45
|
#define RADIO_DIO1_PIN 45
|
||||||
#define RADIO_BUSY_PIN 13
|
#define RADIO_BUSY_PIN 13
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_45
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
@@ -20,17 +22,17 @@
|
|||||||
#undef OLED_RST
|
#undef OLED_RST
|
||||||
|
|
||||||
// GPS
|
// GPS
|
||||||
#define GPS_RX 43
|
#define GPS_RX 43
|
||||||
#define GPS_TX 44
|
#define GPS_TX 44
|
||||||
|
|
||||||
// Aditional Config
|
// Aditional Config
|
||||||
#define BATTERY_PIN 4
|
#define BATTERY_PIN 4
|
||||||
|
|
||||||
#define BOARD_POWERON 10
|
#define BOARD_POWERON 10
|
||||||
#define BOARD_SDCARD_CS 39
|
#define BOARD_SDCARD_CS 39
|
||||||
#define BOARD_BL_PIN 42
|
#define BOARD_BL_PIN 42
|
||||||
|
|
||||||
#define BOARD_I2C_SDA 18
|
#define BOARD_I2C_SDA 18
|
||||||
#define BOARD_I2C_SCL 8
|
#define BOARD_I2C_SCL 8
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -18,7 +18,7 @@ debug_tool = esp-prog
|
|||||||
build_flags =
|
build_flags =
|
||||||
${common.build_flags}
|
${common.build_flags}
|
||||||
${common.usb_flags}
|
${common.usb_flags}
|
||||||
-D TTGO_T_DECK_PLUS
|
-D TTGO_T_DECK_GPS
|
||||||
-D BOARD_HAS_PSRAM
|
-D BOARD_HAS_PSRAM
|
||||||
-D USER_SETUP_LOADED
|
-D USER_SETUP_LOADED
|
||||||
-D ST7789_DRIVER
|
-D ST7789_DRIVER
|
||||||
|
|||||||
@@ -3,13 +3,15 @@
|
|||||||
|
|
||||||
// LoRa Radio
|
// LoRa Radio
|
||||||
#define HAS_SX1262
|
#define HAS_SX1262
|
||||||
#define RADIO_SCLK_PIN 40
|
#define RADIO_SCLK_PIN 40
|
||||||
#define RADIO_MISO_PIN 38
|
#define RADIO_MISO_PIN 38
|
||||||
#define RADIO_MOSI_PIN 41
|
#define RADIO_MOSI_PIN 41
|
||||||
#define RADIO_CS_PIN 9
|
#define RADIO_CS_PIN 9
|
||||||
#define RADIO_RST_PIN 17
|
#define RADIO_RST_PIN 17
|
||||||
#define RADIO_DIO1_PIN 45
|
#define RADIO_DIO1_PIN 45
|
||||||
#define RADIO_BUSY_PIN 13
|
#define RADIO_BUSY_PIN 13
|
||||||
|
#define RADIO_WAKEUP_PIN RADIO_DIO1_PIN
|
||||||
|
#define GPIO_WAKEUP_PIN GPIO_SEL_45
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
#define HAS_DISPLAY
|
#define HAS_DISPLAY
|
||||||
@@ -20,18 +22,18 @@
|
|||||||
#undef OLED_RST
|
#undef OLED_RST
|
||||||
|
|
||||||
// GPS
|
// GPS
|
||||||
#define GPS_RX 43
|
#define GPS_RX 43
|
||||||
#define GPS_TX 44
|
#define GPS_TX 44
|
||||||
#define GPS_BAUDRATE 38400
|
#define GPS_BAUDRATE 38400
|
||||||
|
|
||||||
// Aditional Config
|
// Aditional Config
|
||||||
#define BATTERY_PIN 4
|
#define BATTERY_PIN 4
|
||||||
|
|
||||||
#define BOARD_POWERON 10
|
#define BOARD_POWERON 10
|
||||||
#define BOARD_SDCARD_CS 39
|
#define BOARD_SDCARD_CS 39
|
||||||
#define BOARD_BL_PIN 42
|
#define BOARD_BL_PIN 42
|
||||||
|
|
||||||
#define BOARD_I2C_SDA 18
|
#define BOARD_I2C_SDA 18
|
||||||
#define BOARD_I2C_SCL 8
|
#define BOARD_I2C_SCL 8
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
Reference in New Issue
Block a user