kopia lustrzana https://github.com/SQ9MDD/TTGO-T-Beam-LoRa-APRS
Add files via upload
rodzic
bb7eebb40e
commit
2a3e357b37
|
@ -17,7 +17,7 @@ Search and install the following libaries:<br>
|
||||||
<li>AXP202X_Library</li>
|
<li>AXP202X_Library</li>
|
||||||
<li>OneWire</li>
|
<li>OneWire</li>
|
||||||
<li>DallasTemperature</li>
|
<li>DallasTemperature</li>
|
||||||
<li>XPowersLib<>
|
<li>XPowersLib<li>
|
||||||
</ul>
|
</ul>
|
||||||
<br>
|
<br>
|
||||||
<h3>2. Command Line Tool</h3>
|
<h3>2. Command Line Tool</h3>
|
||||||
|
@ -31,7 +31,7 @@ platformio lib install "AXP202X_Library"<br>
|
||||||
platformio lib install "Adafruit Unified Sensor"<br>
|
platformio lib install "Adafruit Unified Sensor"<br>
|
||||||
platformio lib install "OneWire"<br>
|
platformio lib install "OneWire"<br>
|
||||||
platformio lib install "DallasTemperature"<br>
|
platformio lib install "DallasTemperature"<br>
|
||||||
platformio lib install "XPowersLib<br>
|
platformio lib install "XPowersLib'<br>
|
||||||
<br>
|
<br>
|
||||||
Check that the platformio.ini is available as it holds the board type for PlatformIO.<br>
|
Check that the platformio.ini is available as it holds the board type for PlatformIO.<br>
|
||||||
After pressing the check mark the code will be compiled, after pressing the arrow it will be compiled and uploaded to a connected TTGO.<br>
|
After pressing the check mark the code will be compiled, after pressing the arrow it will be compiled and uploaded to a connected TTGO.<br>
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"folders": [
|
||||||
|
{
|
||||||
|
"path": "../LoRa aprs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "TTGO-T-Beam-LoRa-APRS-master",
|
||||||
|
"path": "."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"settings": {
|
||||||
|
"files.associations": {
|
||||||
|
"*.tpp": "cpp"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -13,10 +13,11 @@ After connection with APRX based DIGI it can be used as KISS-TNC
|
||||||
* Lora32 board support: DJ1AN
|
* Lora32 board support: DJ1AN
|
||||||
* Self-telemetry improvement: KB1GIM
|
* Self-telemetry improvement: KB1GIM
|
||||||
* T-beam v1.2 board support: SP6NYA
|
* T-beam v1.2 board support: SP6NYA
|
||||||
|
* New XPowersib Library: SP6NYA
|
||||||
|
|
||||||
## Supported boards
|
## Supported boards
|
||||||
* TTGO T-beam v.0.7
|
* TTGO T-beam v.0.7
|
||||||
* TTGO T-beam v.1.0
|
* LILYGO/TTGO T-beam v.1.0 - v.1.1
|
||||||
* LILYGO/TTGO T-Beam v.1.2
|
* LILYGO/TTGO T-Beam v.1.2
|
||||||
* Lora32 board
|
* Lora32 board
|
||||||
|
|
||||||
|
@ -47,6 +48,9 @@ After connection with APRX based DIGI it can be used as KISS-TNC
|
||||||
* ((KISSTX)) - information about sending the frame sent by KISS
|
* ((KISSTX)) - information about sending the frame sent by KISS
|
||||||
* ((WEB TX)) - sending frame as requested via HTTP
|
* ((WEB TX)) - sending frame as requested via HTTP
|
||||||
* ((TEL TX)) - information about sending telemetry
|
* ((TEL TX)) - information about sending telemetry
|
||||||
|
## LED'S information
|
||||||
|
* (Blue) Slow blinking - battery voltage 3.5V-3.3V
|
||||||
|
* (Blue) Fast blinking - battery voltage > 3.3V
|
||||||
|
|
||||||
## How to binary first flash readme... (thanx SP6VWX)
|
## How to binary first flash readme... (thanx SP6VWX)
|
||||||
* Download the appropriate binary file for your board from: https://github.com/SQ9MDD/TTGO-T-Beam-LoRa-APRS/releases
|
* Download the appropriate binary file for your board from: https://github.com/SQ9MDD/TTGO-T-Beam-LoRa-APRS/releases
|
||||||
|
@ -118,6 +122,3 @@ This box allows firmware to be uploaded via OTA
|
||||||
## Default WiFi Password:
|
## Default WiFi Password:
|
||||||
* Default WiFi Password is: xxxxxxxxxx
|
* Default WiFi Password is: xxxxxxxxxx
|
||||||
* that is, 10 times x
|
* that is, 10 times x
|
||||||
|
|
||||||
## Known bugs
|
|
||||||
* T-beam v1.2 batterry voltage issue
|
|
||||||
|
|
Plik binarny nie jest wyświetlany.
Plik binarny nie jest wyświetlany.
Plik binarny nie jest wyświetlany.
|
@ -1,10 +1,10 @@
|
||||||
|
|
||||||
#ifndef BUILD_NUMBER
|
#ifndef BUILD_NUMBER
|
||||||
#define BUILD_NUMBER "66"
|
#define BUILD_NUMBER "127"
|
||||||
#endif
|
#endif
|
||||||
#ifndef VERSION
|
#ifndef VERSION
|
||||||
#define VERSION "v0.3.66- - 2023-09-09 17:44:17.377051"
|
#define VERSION "v0.4.127- - 2023-09-09 22:51:42.144437"
|
||||||
#endif
|
#endif
|
||||||
#ifndef VERSION_SHORT
|
#ifndef VERSION_SHORT
|
||||||
#define VERSION_SHORT "v0.3.66-"
|
#define VERSION_SHORT "v0.4.127-"
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -70,10 +70,9 @@ lib_deps =
|
||||||
mikalhart/TinyGPSPlus@^1.0.3
|
mikalhart/TinyGPSPlus@^1.0.3
|
||||||
adafruit/Adafruit SSD1306@^2.5.7
|
adafruit/Adafruit SSD1306@^2.5.7
|
||||||
adafruit/Adafruit GFX Library@^1.11.7
|
adafruit/Adafruit GFX Library@^1.11.7
|
||||||
lewisxhe/AXP202X_Library@^1.1.3
|
paulstoffregen/OneWire@^2.3.7
|
||||||
pau6.21.3lstoffregen/OneWire@^2.3.7
|
|
||||||
sparkfun/SparkFun u-blox Arduino Library@^1.8.11
|
sparkfun/SparkFun u-blox Arduino Library@^1.8.11
|
||||||
bblanchon/ArduinoJson@^
|
bblanchon/ArduinoJson@^6.21.3
|
||||||
|
|
||||||
[env:ttgo-t-beam-v1_2]
|
[env:ttgo-t-beam-v1_2]
|
||||||
platform = espressif32 @ 3.0.0
|
platform = espressif32 @ 3.0.0
|
||||||
|
@ -91,7 +90,6 @@ lib_deps =
|
||||||
adafruit/Adafruit GFX Library@^1.11.7
|
adafruit/Adafruit GFX Library@^1.11.7
|
||||||
paulstoffregen/OneWire@^2.3.7
|
paulstoffregen/OneWire@^2.3.7
|
||||||
sparkfun/SparkFun u-blox Arduino Library@^1.8.11
|
sparkfun/SparkFun u-blox Arduino Library@^1.8.11
|
||||||
lewisxhe/AXP202X_Library@^1.1.3
|
|
||||||
bblanchon/ArduinoJson@^6.21.3
|
bblanchon/ArduinoJson@^6.21.3
|
||||||
|
|
||||||
[env:ttgo-t-beam-v0_7]
|
[env:ttgo-t-beam-v0_7]
|
||||||
|
@ -107,8 +105,6 @@ lib_deps =
|
||||||
mikalhart/TinyGPSPlus@^1.0.3
|
mikalhart/TinyGPSPlus@^1.0.3
|
||||||
adafruit/Adafruit SSD1306@^2.5.7
|
adafruit/Adafruit SSD1306@^2.5.7
|
||||||
adafruit/Adafruit GFX Library@^1.11.7
|
adafruit/Adafruit GFX Library@^1.11.7
|
||||||
lewisxhe/AXP202X_Library@^1.1.3
|
|
||||||
paulstoffregen/OneWire@^2.3.7
|
|
||||||
sparkfun/SparkFun u-blox Arduino Library@^1.8.11
|
sparkfun/SparkFun u-blox Arduino Library@^1.8.11
|
||||||
bblanchon/ArduinoJson@^6.21.3
|
bblanchon/ArduinoJson@^6.21.3
|
||||||
|
|
||||||
|
@ -125,7 +121,6 @@ lib_deps =
|
||||||
mikalhart/TinyGPSPlus@^1.0.3
|
mikalhart/TinyGPSPlus@^1.0.3
|
||||||
adafruit/Adafruit SSD1306@^2.5.7
|
adafruit/Adafruit SSD1306@^2.5.7
|
||||||
adafruit/Adafruit GFX Library@^1.11.7
|
adafruit/Adafruit GFX Library@^1.11.7
|
||||||
lewisxhe/AXP202X_Library@^1.1.3
|
|
||||||
paulstoffregen/OneWire@^2.3.7
|
paulstoffregen/OneWire@^2.3.7
|
||||||
sparkfun/SparkFun u-blox Arduino Library@^1.8.11
|
sparkfun/SparkFun u-blox Arduino Library@^1.8.11
|
||||||
bblanchon/ArduinoJson@^6.21.3
|
bblanchon/ArduinoJson@^6.21.3
|
||||||
|
@ -143,7 +138,6 @@ lib_deps =
|
||||||
mikalhart/TinyGPSPlus@^1.0.3
|
mikalhart/TinyGPSPlus@^1.0.3
|
||||||
adafruit/Adafruit SSD1306@^2.5.7
|
adafruit/Adafruit SSD1306@^2.5.7
|
||||||
adafruit/Adafruit GFX Library@^1.11.7
|
adafruit/Adafruit GFX Library@^1.11.7
|
||||||
lewisxhe/AXP202X_Library@^1.1.3
|
|
||||||
paulstoffregen/OneWire@^2.3.7
|
paulstoffregen/OneWire@^2.3.7
|
||||||
sparkfun/SparkFun u-blox Arduino Library@^1.8.11
|
sparkfun/SparkFun u-blox Arduino Library@^1.8.11
|
||||||
bblanchon/ArduinoJson@^6.21.3
|
bblanchon/ArduinoJson@^6.21.3
|
||||||
|
@ -161,7 +155,6 @@ lib_deps =
|
||||||
mikalhart/TinyGPSPlus@^1.0.3
|
mikalhart/TinyGPSPlus@^1.0.3
|
||||||
adafruit/Adafruit SSD1306@^2.5.7
|
adafruit/Adafruit SSD1306@^2.5.7
|
||||||
adafruit/Adafruit GFX Library@^1.11.7
|
adafruit/Adafruit GFX Library@^1.11.7
|
||||||
lewisxhe/AXP202X_Library@^1.1.3
|
|
||||||
paulstoffregen/OneWire@^2.3.7
|
paulstoffregen/OneWire@^2.3.7
|
||||||
sparkfun/SparkFun u-blox Arduino Library@^1.8.11
|
sparkfun/SparkFun u-blox Arduino Library@^1.8.11
|
||||||
bblanchon/ArduinoJson@^6.21.3
|
bblanchon/ArduinoJson@^6.21.3
|
||||||
|
@ -179,7 +172,6 @@ lib_deps =
|
||||||
mikalhart/TinyGPSPlus@^1.0.3
|
mikalhart/TinyGPSPlus@^1.0.3
|
||||||
adafruit/Adafruit SSD1306@^2.5.7
|
adafruit/Adafruit SSD1306@^2.5.7
|
||||||
adafruit/Adafruit GFX Library@^1.11.7
|
adafruit/Adafruit GFX Library@^1.11.7
|
||||||
lewisxhe/AXP202X_Library@^1.1.3
|
|
||||||
paulstoffregen/OneWire@^2.3.7
|
paulstoffregen/OneWire@^2.3.7
|
||||||
sparkfun/SparkFun u-blox Arduino Library@^1.8.11
|
sparkfun/SparkFun u-blox Arduino Library@^1.8.11
|
||||||
bblanchon/ArduinoJson@^6.21.3
|
bblanchon/ArduinoJson@^6.21.3
|
||||||
|
@ -197,7 +189,6 @@ lib_deps =
|
||||||
mikalhart/TinyGPSPlus@^1.0.3
|
mikalhart/TinyGPSPlus@^1.0.3
|
||||||
adafruit/Adafruit SSD1306@^2.5.7
|
adafruit/Adafruit SSD1306@^2.5.7
|
||||||
adafruit/Adafruit GFX Library@^1.11.7
|
adafruit/Adafruit GFX Library@^1.11.7
|
||||||
lewisxhe/AXP202X_Library@^1.1.3
|
|
||||||
paulstoffregen/OneWire@^2.3.7
|
paulstoffregen/OneWire@^2.3.7
|
||||||
sparkfun/SparkFun u-blox Arduino Library@^1.8.11
|
sparkfun/SparkFun u-blox Arduino Library@^1.8.11
|
||||||
bblanchon/ArduinoJson@^6.21.3
|
bblanchon/ArduinoJson@^6.21.3
|
||||||
|
@ -221,7 +212,6 @@ lib_deps =
|
||||||
mikalhart/TinyGPSPlus@^1.0.3
|
mikalhart/TinyGPSPlus@^1.0.3
|
||||||
adafruit/Adafruit SSD1306@^2.5.7
|
adafruit/Adafruit SSD1306@^2.5.7
|
||||||
adafruit/Adafruit GFX Library@^1.11.7
|
adafruit/Adafruit GFX Library@^1.11.7
|
||||||
lewisxhe/AXP202X_Library@^1.1.3
|
|
||||||
paulstoffregen/OneWire@^2.3.7
|
paulstoffregen/OneWire@^2.3.7
|
||||||
sparkfun/SparkFun u-blox Arduino Library@^1.8.11
|
sparkfun/SparkFun u-blox Arduino Library@^1.8.11
|
||||||
bblanchon/ArduinoJson@^6.21.3
|
bblanchon/ArduinoJson@^6.21.3
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
#include <Adafruit_SPITFT.h>
|
#include <Adafruit_SPITFT.h>
|
||||||
#include <Adafruit_SPITFT_Macros.h>
|
#include <Adafruit_SPITFT_Macros.h>
|
||||||
#include <gfxfont.h>
|
#include <gfxfont.h>
|
||||||
#include <axp20x.h>
|
|
||||||
#include "taskGPS.h"
|
#include "taskGPS.h"
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
#include "preference_storage.h"
|
#include "preference_storage.h"
|
||||||
|
@ -51,6 +50,7 @@
|
||||||
#define BUZZER 15 // enter your buzzer pin gpio
|
#define BUZZER 15 // enter your buzzer pin gpio
|
||||||
const byte TXLED = 4;
|
const byte TXLED = 4;
|
||||||
#elif T_BEAM_V1_0
|
#elif T_BEAM_V1_0
|
||||||
|
#define XPOWERS_CHIP_AXP192
|
||||||
#define I2C_SDA 21
|
#define I2C_SDA 21
|
||||||
#define I2C_SCL 22
|
#define I2C_SCL 22
|
||||||
#define BUTTON 38 //pin number for Button on TTGO T-Beam
|
#define BUTTON 38 //pin number for Button on TTGO T-Beam
|
||||||
|
@ -189,6 +189,7 @@ byte lora_FDeviceError; //flag, set to 1 if RFM98 device error
|
||||||
byte lora_TXPacketL; //length of packet to send, includes source, destination and packet type.
|
byte lora_TXPacketL; //length of packet to send, includes source, destination and packet type.
|
||||||
|
|
||||||
unsigned long lastTX = 0L;
|
unsigned long lastTX = 0L;
|
||||||
|
float ConvertToV;
|
||||||
float BattVolts;
|
float BattVolts;
|
||||||
float InpVolts;
|
float InpVolts;
|
||||||
|
|
||||||
|
@ -248,7 +249,13 @@ uint8_t txPower = TXdbmW;
|
||||||
static const adc_atten_t atten = ADC_ATTEN_DB_6;
|
static const adc_atten_t atten = ADC_ATTEN_DB_6;
|
||||||
static const adc_unit_t unit = ADC_UNIT_1;
|
static const adc_unit_t unit = ADC_UNIT_1;
|
||||||
#ifdef T_BEAM_V1_0
|
#ifdef T_BEAM_V1_0
|
||||||
AXP20X_Class axp;
|
bool pmu_flag = 0;
|
||||||
|
XPowersAXP192 PMU;
|
||||||
|
|
||||||
|
void setFlag(void)
|
||||||
|
{
|
||||||
|
pmu_flag = true;
|
||||||
|
}
|
||||||
#elif T_BEAM_V1_2 //PMU TBEAM 1.2
|
#elif T_BEAM_V1_2 //PMU TBEAM 1.2
|
||||||
bool pmu_flag = 0;
|
bool pmu_flag = 0;
|
||||||
XPowersAXP2101 PMU;
|
XPowersAXP2101 PMU;
|
||||||
|
@ -282,6 +289,43 @@ char *ax25_base91enc(char *s, uint8_t n, uint32_t v){
|
||||||
return(s);
|
return(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(KISS_PROTOCOL)
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param TNC2FormatedFrame
|
||||||
|
*/
|
||||||
|
void sendToTNC(const String& TNC2FormatedFrame) {
|
||||||
|
if (tncToSendQueue){
|
||||||
|
auto *buffer = new String();
|
||||||
|
buffer->concat(TNC2FormatedFrame);
|
||||||
|
if (xQueueSend(tncReceivedQueue, &buffer, (1000 / portTICK_PERIOD_MS)) != pdPASS){
|
||||||
|
// remove buffer on error
|
||||||
|
delete buffer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
void enablepins(){
|
||||||
|
#ifdef T_BEAM_V1_2
|
||||||
|
PMU.enableBattDetection();
|
||||||
|
PMU.enableVbusVoltageMeasure();
|
||||||
|
PMU.enableBattVoltageMeasure();
|
||||||
|
PMU.enableSystemVoltageMeasure();
|
||||||
|
#elif T_BEAM_V1_0
|
||||||
|
PMU.enableBattDetection();
|
||||||
|
PMU.enableVbusVoltageMeasure();
|
||||||
|
PMU.enableBattVoltageMeasure();
|
||||||
|
PMU.enableSystemVoltageMeasure();
|
||||||
|
#elif T_BEAM_V0_7 /*
|
||||||
|
adcAttachPin(35);
|
||||||
|
adcStart(35);
|
||||||
|
analogReadResolution(10);
|
||||||
|
analogSetAttenuation(ADC_6db); */
|
||||||
|
pinMode(35, INPUT);
|
||||||
|
//adc1_config_width(ADC_WIDTH_BIT_12);
|
||||||
|
//adc1_config_channel_atten(ADC1_CHANNEL_7,ADC_ATTEN_DB_11);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
void prepareAPRSFrame(){
|
void prepareAPRSFrame(){
|
||||||
String helper;
|
String helper;
|
||||||
String Altx;
|
String Altx;
|
||||||
|
@ -374,15 +418,6 @@ void buzzer(int* melody, int array_size){
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void sendpacket(){
|
|
||||||
#ifdef BUZZER
|
|
||||||
int melody[] = {1000, 50, 800, 100};
|
|
||||||
buzzer(melody, sizeof(melody)/sizeof(int));
|
|
||||||
#endif
|
|
||||||
batt_read();
|
|
||||||
prepareAPRSFrame();
|
|
||||||
loraSend(txPower, lora_freq, outString); //send the packet, data is in TXbuff from lora_TXStart to lora_TXEnd
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send message as APRS LoRa packet
|
* Send message as APRS LoRa packet
|
||||||
|
@ -426,18 +461,30 @@ void loraSend(byte lora_LTXPower, float lora_FREQ, const String &message) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void batt_read(){
|
void batt_read(){
|
||||||
#ifdef T_BEAM_v1_2
|
ConvertToV = 1000;
|
||||||
BattVolts = PMU.getBattVoltage() / 1000;
|
#ifdef T_BEAM_V1_2
|
||||||
InpVolts = PMU.getVbusVoltage() / 1000;
|
BattVolts = PMU.getBattVoltage()/ConvertToV;
|
||||||
|
InpVolts = PMU.getVbusVoltage()/ConvertToV;
|
||||||
#elif T_BEAM_V1_0
|
#elif T_BEAM_V1_0
|
||||||
BattVolts = axp.getBattVoltage()/1000;
|
BattVolts = PMU.getBattVoltage()/ConvertToV;
|
||||||
InpVolts = axp.getVbusVoltage()/1000;
|
InpVolts = PMU.getVbusVoltage()/ConvertToV;
|
||||||
#elif T_BEAM_V0_7
|
#elif T_BEAM_V0_7
|
||||||
BattVolts = (((float)analogRead(35) / 8192.0) * 2.0 * 3.3 * (1100.0 / 1000.0))+0.41; // fixed thanks to Luca IU2FRL
|
BattVolts = (((float)analogRead(35) / 8192.0) * 2.0 * 3.3 * (1100.0 / 1000.0))+0.41; // fixed thanks to Luca IU2FRL
|
||||||
//BattVolts = adc1_get_raw(ADC1_CHANNEL_7)/1000;
|
//BattVolts = adc1_get_raw(ADC1_CHANNEL_7)/1000;
|
||||||
#else
|
#else
|
||||||
BattVolts = analogRead(35)*7.221/4096;
|
BattVolts = analogRead(35)*7.221/4096;
|
||||||
#endif
|
#endif
|
||||||
|
Serial.print(BattVolts);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sendpacket(){
|
||||||
|
#ifdef BUZZER
|
||||||
|
int melody[] = {1000, 50, 800, 100};
|
||||||
|
buzzer(melody, sizeof(melody)/sizeof(int));
|
||||||
|
#endif
|
||||||
|
batt_read();
|
||||||
|
prepareAPRSFrame();
|
||||||
|
loraSend(txPower, lora_freq, outString); //send the packet, data is in TXbuff from lora_TXStart to lora_TXEnd
|
||||||
}
|
}
|
||||||
|
|
||||||
void writedisplaytext(String HeaderTxt, String Line1, String Line2, String Line3, String Line4, String Line5) {
|
void writedisplaytext(String HeaderTxt, String Line1, String Line2, String Line3, String Line4, String Line5) {
|
||||||
|
@ -449,17 +496,22 @@ void writedisplaytext(String HeaderTxt, String Line1, String Line2, String Line3
|
||||||
#endif
|
#endif
|
||||||
#elif T_BEAM_V1_0
|
#elif T_BEAM_V1_0
|
||||||
# ifdef ENABLE_LED_SIGNALING
|
# ifdef ENABLE_LED_SIGNALING
|
||||||
axp.setChgLEDMode(AXP20X_LED_BLINK_4HZ);
|
PMU.setChargingLedMode(XPOWERS_CHG_LED_BLINK_1HZ);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else if(BattVolts <= 3.3){
|
else if(BattVolts <= 3.3){
|
||||||
#ifdef T_BEAM_V1_2
|
#ifdef T_BEAM_V1_2
|
||||||
PMU.setChargingLedMode(XPOWERS_CHG_LED_BLINK_4HZ);
|
PMU.setChargingLedMode(XPOWERS_CHG_LED_BLINK_4HZ);
|
||||||
|
#elif T_BEAM_V1_0
|
||||||
|
PMU.setChargingLedMode(XPOWERS_CHG_LED_BLINK_4HZ);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
else if(BattVolts <=3.0){
|
||||||
|
#ifdef T_BEAM_V1_2
|
||||||
//PMU.shutdown();
|
//PMU.shutdown();
|
||||||
#elif T_BEAM_V1_0
|
#elif T_BEAM_V1_0
|
||||||
axp.setChgLEDMode(AXP20X_LED_OFF);
|
PMU.shutdown();
|
||||||
//axp.shutdown(); <-we need fix this
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
display.clearDisplay();
|
display.clearDisplay();
|
||||||
|
@ -519,22 +571,22 @@ void displayInvalidGPS() {
|
||||||
writedisplaytext(" " + Tcall, nextTxInfo, "LAT: not valid", "LON: not valid", "SPD: --- CRS: ---", getSatAndBatInfo());
|
writedisplaytext(" " + Tcall, nextTxInfo, "LAT: not valid", "LON: not valid", "SPD: --- CRS: ---", getSatAndBatInfo());
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(KISS_PROTOCOL)
|
//#if defined(KISS_PROTOCOL)
|
||||||
/**
|
//**
|
||||||
*
|
// *
|
||||||
* @param TNC2FormatedFrame
|
// * @param TNC2FormatedFrame
|
||||||
*/
|
// *
|
||||||
void sendToTNC(const String& TNC2FormatedFrame) {
|
//void sendToTNC(const String& TNC2FormatedFrame) {
|
||||||
if (tncToSendQueue){
|
// if (tncToSendQueue){
|
||||||
auto *buffer = new String();
|
// auto *buffer = new String();
|
||||||
buffer->concat(TNC2FormatedFrame);
|
// buffer->concat(TNC2FormatedFrame);
|
||||||
if (xQueueSend(tncReceivedQueue, &buffer, (1000 / portTICK_PERIOD_MS)) != pdPASS){
|
// if (xQueueSend(tncReceivedQueue, &buffer, (1000 / portTICK_PERIOD_MS)) != pdPASS){
|
||||||
// remove buffer on error
|
// // remove buffer on error
|
||||||
delete buffer;
|
// delete buffer;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
#endif
|
//#endif
|
||||||
#if defined(ENABLE_WIFI)
|
#if defined(ENABLE_WIFI)
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -631,11 +683,11 @@ String prepareCallsign(const String& callsign){
|
||||||
}
|
}
|
||||||
preferences.putUInt(PREF_TNC_SELF_TELEMETRY_SEQ, tel_sequence);
|
preferences.putUInt(PREF_TNC_SELF_TELEMETRY_SEQ, tel_sequence);
|
||||||
#elif T_BEAM_V1_0
|
#elif T_BEAM_V1_0
|
||||||
uint8_t b_volt = (axp.getBattVoltage() - 3000) / 5.1;
|
uint8_t b_volt = (PMU.getBattVoltage() - 3000) / 5.1;
|
||||||
uint8_t b_in_c = (axp.getBattChargeCurrent()) / 10;
|
uint8_t b_in_c = (PMU.getBatteryChargeCurrent()) / 10;
|
||||||
uint8_t b_out_c = (axp.getBattDischargeCurrent()) / 10;
|
uint8_t b_out_c = (PMU.getBattDischargeCurrent()) / 10;
|
||||||
uint8_t ac_volt = (axp.getVbusVoltage() - 3000) / 28;
|
uint8_t ac_volt = (PMU.getVbusVoltage() - 3000) / 28;
|
||||||
uint8_t ac_c = (axp.getVbusCurrent()) / 10;
|
uint8_t ac_c = (PMU.getVbusCurrent()) / 10;
|
||||||
// Pad telemetry message address to 9 characters
|
// Pad telemetry message address to 9 characters
|
||||||
char Tcall_message_char[9];
|
char Tcall_message_char[9];
|
||||||
sprintf_P(Tcall_message_char, "%-9s", Tcall);
|
sprintf_P(Tcall_message_char, "%-9s", Tcall);
|
||||||
|
@ -699,20 +751,6 @@ String prepareCallsign(const String& callsign){
|
||||||
|
|
||||||
// + SETUP --------------------------------------------------------------+//
|
// + SETUP --------------------------------------------------------------+//
|
||||||
void setup(){
|
void setup(){
|
||||||
#ifdef T_BEAM_V1_2
|
|
||||||
//PMU.enableBattDetection();
|
|
||||||
PMU.enableVbusVoltageMeasure();
|
|
||||||
PMU.enableBattVoltageMeasure();
|
|
||||||
PMU.enableSystemVoltageMeasure();
|
|
||||||
#elif T_BEAM_V0_7 /*
|
|
||||||
adcAttachPin(35);
|
|
||||||
adcStart(35);
|
|
||||||
analogReadResolution(10);
|
|
||||||
analogSetAttenuation(ADC_6db); */
|
|
||||||
pinMode(35, INPUT);
|
|
||||||
//adc1_config_width(ADC_WIDTH_BIT_12);
|
|
||||||
//adc1_config_channel_atten(ADC1_CHANNEL_7,ADC_ATTEN_DB_11);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
SPI.begin(SPI_sck,SPI_miso,SPI_mosi,SPI_ss); //DO2JMG Heltec Patch
|
SPI.begin(SPI_sck,SPI_miso,SPI_mosi,SPI_ss); //DO2JMG Heltec Patch
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
|
@ -980,23 +1018,24 @@ void setup(){
|
||||||
PMU.setChargingLedMode(XPOWERS_CHG_LED_OFF);
|
PMU.setChargingLedMode(XPOWERS_CHG_LED_OFF);
|
||||||
PMU.enableDC1(); // oled do not turn off
|
PMU.enableDC1(); // oled do not turn off
|
||||||
#elif T_BEAM_V1_0
|
#elif T_BEAM_V1_0
|
||||||
if (!axp.begin(Wire, AXP192_SLAVE_ADDRESS)) {
|
if (!PMU.begin(Wire, AXP192_SLAVE_ADDRESS, I2C_SDA, I2C_SCL)) {
|
||||||
}
|
}
|
||||||
axp.setLowTemp(0xFF); //SP6VWX Set low charging temperature
|
//axp.setLowTemp(0xFF); //SP6VWX Set low charging temperature need to convert
|
||||||
axp.setPowerOutPut(AXP192_LDO2, AXP202_ON); // LoRa
|
PMU.setLDO2Voltage(3300);
|
||||||
|
PMU.enableLDO2(); // LoRa
|
||||||
if (gps_state){
|
if (gps_state){
|
||||||
axp.setPowerOutPut(AXP192_LDO3, AXP202_ON); // switch on GPS
|
PMU.enableLDO3(); // switch on GPS
|
||||||
} else {
|
} else {
|
||||||
axp.setPowerOutPut(AXP192_LDO3, AXP202_OFF); // switch off GPS
|
PMU.disableLDO3(); // switch off GPS
|
||||||
}
|
}
|
||||||
axp.setPowerOutPut(AXP192_DCDC2, AXP202_ON);
|
PMU.enableDC2();
|
||||||
axp.setPowerOutPut(AXP192_EXTEN, AXP202_ON);
|
//axp.setPowerOutPut(AXP192_EXTEN, AXP202_ON); NC
|
||||||
axp.setDCDC1Voltage(3300);
|
PMU.setDC1Voltage(3300);
|
||||||
// Enable ADC to measure battery current, USB voltage etc.
|
// Enable ADC to measure battery current, USB voltage etc.
|
||||||
axp.adc1Enable(0xfe, true);
|
//axp.adc1Enable(0xfe, true);
|
||||||
axp.adc2Enable(0x80, true);
|
//axp.adc2Enable(0x80, true);
|
||||||
axp.setChgLEDMode(AXP20X_LED_OFF);
|
PMU.setChargingLedMode(XPOWERS_CHG_LED_OFF);
|
||||||
axp.setPowerOutPut(AXP192_DCDC1, AXP202_ON); // oled do not turn off
|
PMU.enableDC1(); // oled do not turn off
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(!display.begin(SSD1306_SWITCHCAPVCC, SSD1306_ADDRESS)) {
|
if(!display.begin(SSD1306_SWITCHCAPVCC, SSD1306_ADDRESS)) {
|
||||||
|
@ -1184,7 +1223,7 @@ void loop() {
|
||||||
#ifdef T_BEAM_V1_2
|
#ifdef T_BEAM_V1_2
|
||||||
PMU.disableALDO3(); //GPS OFF
|
PMU.disableALDO3(); //GPS OFF
|
||||||
#elif T_BEAM_V1_0
|
#elif T_BEAM_V1_0
|
||||||
axp.setPowerOutPut(AXP192_LDO3, AXP202_OFF); // GPS OFF
|
PMU.disableLDO3(); // GPS OFF
|
||||||
#endif
|
#endif
|
||||||
writedisplaytext("((GPSOFF))","","","","","");
|
writedisplaytext("((GPSOFF))","","","","","");
|
||||||
next_fixed_beacon = millis() + fix_beacon_interval;
|
next_fixed_beacon = millis() + fix_beacon_interval;
|
||||||
|
@ -1196,7 +1235,7 @@ void loop() {
|
||||||
#ifdef T_BEAM_v1_2
|
#ifdef T_BEAM_v1_2
|
||||||
PMU.enableALDO3(); // GPS ON
|
PMU.enableALDO3(); // GPS ON
|
||||||
#elif T_BEAM_V1_0
|
#elif T_BEAM_V1_0
|
||||||
axp.setPowerOutPut(AXP192_LDO3, AXP202_ON);
|
PMU.enableLDO3();
|
||||||
#endif
|
#endif
|
||||||
writedisplaytext("((GPS ON))","","","","",""); // GPS ON
|
writedisplaytext("((GPS ON))","","","","",""); // GPS ON
|
||||||
#ifdef ENABLE_PREFERENCES
|
#ifdef ENABLE_PREFERENCES
|
||||||
|
@ -1254,8 +1293,8 @@ void loop() {
|
||||||
|
|
||||||
if(shutdown_countdown_timer_enable){
|
if(shutdown_countdown_timer_enable){
|
||||||
if(millis() >= shutdown_countdown_timer){
|
if(millis() >= shutdown_countdown_timer){
|
||||||
axp.setChgLEDMode(AXP20X_LED_OFF);
|
PMU.setChargingLedMode(XPOWERS_CHG_LED_OFF);
|
||||||
axp.shutdown();
|
PMU.shutdown();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1281,7 +1320,7 @@ void loop() {
|
||||||
#endif
|
#endif
|
||||||
#elif T_BEAM_V1_0
|
#elif T_BEAM_V1_0
|
||||||
#ifdef ENABLE_LED_SIGNALING
|
#ifdef ENABLE_LED_SIGNALING
|
||||||
axp.setChgLEDMode(AXP20X_LED_LOW_LEVEL);
|
PMU.setChargingLedMode(XPOWERS_CHG_LED_ON);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#ifdef BUZZER
|
#ifdef BUZZER
|
||||||
|
@ -1314,7 +1353,7 @@ void loop() {
|
||||||
#endif
|
#endif
|
||||||
#elif T_BEAM_V1_0
|
#elif T_BEAM_V1_0
|
||||||
#ifdef ENABLE_LED_SIGNALING
|
#ifdef ENABLE_LED_SIGNALING
|
||||||
axp.setChgLEDMode(AXP20X_LED_OFF);
|
PMU.setChargingLedMode(XPOWERS_CHG_LED_OFF);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -1405,19 +1444,19 @@ void loop() {
|
||||||
debug_message += ", ";
|
debug_message += ", ";
|
||||||
debug_message += "Temp C: " + String(PMU.getTemperature());
|
debug_message += "Temp C: " + String(PMU.getTemperature());
|
||||||
#elif T_BEAM_V1_0
|
#elif T_BEAM_V1_0
|
||||||
debug_message += "Bat V: " + String(axp.getBattVoltage());
|
debug_message += "Bat V: " + String(PMU.getBattVoltage());
|
||||||
debug_message += ", ";
|
debug_message += ", ";
|
||||||
debug_message += "Bat IN A: " + String(axp.getBattChargeCurrent());
|
debug_message += "Bat IN A: " + String(PMU.getBatteryChargeCurrent());
|
||||||
debug_message += ", ";
|
debug_message += ", ";
|
||||||
debug_message += "Bat OUT A: " + String(axp.getBattDischargeCurrent());
|
debug_message += "Bat OUT A: " + String(PMU.getBattDischargeCurrent());
|
||||||
debug_message += ", ";
|
debug_message += ", ";
|
||||||
debug_message += "USB Plugged: " + String(axp.isVBUSPlug());
|
debug_message += "USB Plugged: " + String(PMU.isVBUSin());
|
||||||
debug_message += ", ";
|
debug_message += ", ";
|
||||||
debug_message += "USB V: " + String(axp.getVbusVoltage());
|
debug_message += "USB V: " + String(PMU.getVbusVoltage());
|
||||||
debug_message += ", ";
|
debug_message += ", ";
|
||||||
debug_message += "USB A: " + String(axp.getVbusCurrent());
|
debug_message += "USB A: " + String(PMU.getVbusCurrent());
|
||||||
debug_message += ", ";
|
debug_message += ", ";
|
||||||
debug_message += "Temp C: " + String(axp.getTemp());
|
debug_message += "Temp C: " + String(PMU.getTemperature());
|
||||||
#else
|
#else
|
||||||
debug_message += "Bat V: " + String(BattVolts);
|
debug_message += "Bat V: " + String(BattVolts);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -52,8 +52,8 @@ WiFiServer gpsServer(NETWORK_GPS_PORT);
|
||||||
#include <XPowersLib.h>
|
#include <XPowersLib.h>
|
||||||
extern XPowersAXP2101 PMU;
|
extern XPowersAXP2101 PMU;
|
||||||
#elif T_BEAM_V1_0
|
#elif T_BEAM_V1_0
|
||||||
#include <axp20x.h>
|
#include <XPowersLib.h>
|
||||||
extern AXP20X_Class axp;
|
extern XPowersAXP192 PMU;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -180,8 +180,8 @@ void handle_Shutdown() {
|
||||||
PMU.shutdown();
|
PMU.shutdown();
|
||||||
#elif T_BEAM_V1_0
|
#elif T_BEAM_V1_0
|
||||||
server.send(200,"text/html", "Shutdown");
|
server.send(200,"text/html", "Shutdown");
|
||||||
axp.setChgLEDMode(AXP20X_LED_OFF);
|
PMU.setChargingLedMode(XPOWERS_CHG_LED_OFF);
|
||||||
axp.shutdown();
|
PMU.shutdown();
|
||||||
#else
|
#else
|
||||||
server.send(404,"text/html", "Not supported");
|
server.send(404,"text/html", "Not supported");
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
FILENAME_BUILDNO = '.pio/versioning'
|
FILENAME_BUILDNO = '.pio/versioning'
|
||||||
FILENAME_VERSION_H = 'include/version.h'
|
FILENAME_VERSION_H = 'include/version.h'
|
||||||
version = 'v0.3.'
|
version = 'v0.4.'
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
from subprocess import *
|
from subprocess import *
|
||||||
|
|
Ładowanie…
Reference in New Issue