Compare commits
8 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
c9ed618a8b | |
|
|
6c7b8f9918 | |
|
|
c2b4b3b92f | |
|
|
f7319ce591 | |
|
|
858162eb9c | |
|
|
100b002309 | |
|
|
3acf73bf5f | |
|
|
53675e8084 |
|
|
@ -53,6 +53,10 @@ jobs:
|
|||
chip: esp32
|
||||
- name: ttgo-t-beam-v1_2_SX1262
|
||||
chip: esp32
|
||||
- name: ttgo_t_deck_plus
|
||||
chip: esp32s3
|
||||
- name: ttgo_t_deck_GPS
|
||||
chip: esp32s3
|
||||
- name: ESP32_DIY_LoRa_A7670
|
||||
chip: esp32
|
||||
- name: ESP32_DIY_LoRa_A7670_915
|
||||
|
|
|
|||
|
|
@ -36,6 +36,8 @@ ____________________________________________________
|
|||
|
||||
- TTGO T-Beam V1.0 , V1.1, V1.2 (also variations with SX1262 and SX1268 LoRa Modules).
|
||||
|
||||
- T-Deck Plus (and also regular T-Deck with/without GPS).
|
||||
|
||||
- HELTEC V2, V3 , Wireless Stick, Wireless Stick Lite, HT-CT62, Wireless Tracker, Wireless Paper.
|
||||
|
||||
- QRP Labs LightGateway 1.0.
|
||||
|
|
@ -52,6 +54,7 @@ ____________________________________________________
|
|||
|
||||
## Timeline (Versions):
|
||||
|
||||
- 2025.01.22 Added LILYGO T-DECK PLUS (and DIY+GPS version) board support.
|
||||
- 2025.01.11 Added HELTEC V3.2 board support.
|
||||
- 2025.01.07 TROY_LoRa_APRS board added. GMT in quarter hour fix and Beacon fix for TNC.
|
||||
- 2025.01.02 Callsign Black List added.
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 36 KiB |
|
|
@ -5,14 +5,9 @@
|
|||
|
||||
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
|
||||
|
||||
|
||||
void cleanTFT();
|
||||
void displaySetup();
|
||||
void displayToggle(bool toggle);
|
||||
|
||||
bool shouldCleanTFT(const String& header, const String& line1, const String& line2, const String& line3);
|
||||
bool shouldCleanTFT(const String& header, const String& line1, const String& line2, const String& line3, const String& line4, const String& line5, const String& line6);
|
||||
|
||||
void displayShow(const String& header, const String& line1, const String& line2, const String& line3, int wait = 0);
|
||||
void displayShow(const String& header, const String& line1, const String& line2, const String& line3, const String& line4, const String& line5, const String& line6, int wait = 0);
|
||||
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ ___________________________________________________________________*/
|
|||
#include "A7670_utils.h"
|
||||
#endif
|
||||
|
||||
String versionDate = "2025.01.11";
|
||||
String versionDate = "2025.01.22";
|
||||
Configuration Config;
|
||||
WiFiClient espClient;
|
||||
#ifdef HAS_GPS
|
||||
|
|
|
|||
|
|
@ -324,7 +324,7 @@ namespace APRS_IS_Utils {
|
|||
}
|
||||
} else {
|
||||
Utils::print("Received Message from APRS-IS : " + packet);
|
||||
if (STATION_Utils::wasHeard(Addressee)) {
|
||||
if (STATION_Utils::wasHeard(Addressee) && packet.indexOf("EQNS.") == -1 && packet.indexOf("UNIT.") == -1 && packet.indexOf("PARM.") == -1) {
|
||||
STATION_Utils::addToOutputPacketBuffer(buildPacketToTx(packet, 1));
|
||||
displayToggle(true);
|
||||
lastScreenOn = millis();
|
||||
|
|
|
|||
105
src/display.cpp
105
src/display.cpp
|
|
@ -9,12 +9,19 @@
|
|||
#include <TFT_eSPI.h>
|
||||
|
||||
TFT_eSPI tft = TFT_eSPI();
|
||||
TFT_eSprite sprite = TFT_eSprite(&tft);
|
||||
|
||||
#ifdef HELTEC_WIRELESS_TRACKER
|
||||
#define bigSizeFont 2
|
||||
#define smallSizeFont 1
|
||||
#define lineSpacing 10
|
||||
#endif
|
||||
#if defined(TTGO_T_DECK_GPS) || defined(TTGO_T_DECK_PLUS)
|
||||
#define bigSizeFont 5
|
||||
#define smallSizeFont 2
|
||||
#define lineSpacing 25
|
||||
#endif
|
||||
uint16_t redColor = 0xc8a2;
|
||||
#else
|
||||
#ifdef HAS_EPAPER
|
||||
//
|
||||
|
|
@ -32,16 +39,8 @@
|
|||
|
||||
extern Configuration Config;
|
||||
|
||||
String oldHeader, oldFirstLine, oldSecondLine, oldThirdLine, oldFourthLine, oldFifthLine, oldSixthLine;
|
||||
bool displayFound = false;
|
||||
|
||||
|
||||
void cleanTFT() {
|
||||
#ifdef HAS_TFT
|
||||
tft.fillScreen(TFT_BLACK);
|
||||
#endif
|
||||
}
|
||||
|
||||
void displaySetup() {
|
||||
#ifdef HAS_DISPLAY
|
||||
delay(500);
|
||||
|
|
@ -53,8 +52,15 @@ void displaySetup() {
|
|||
} else {
|
||||
tft.setRotation(1);
|
||||
}
|
||||
pinMode(TFT_BL, OUTPUT);
|
||||
digitalWrite(TFT_BL, HIGH);
|
||||
tft.setTextFont(0);
|
||||
tft.fillScreen(TFT_BLACK);
|
||||
#if defined(TTGO_T_DECK_GPS) || defined(TTGO_T_DECK_PLUS)
|
||||
sprite.createSprite(320,240);
|
||||
#else
|
||||
sprite.createSprite(160,80);
|
||||
#endif
|
||||
#else
|
||||
#ifdef HAS_EPAPER
|
||||
//
|
||||
|
|
@ -109,49 +115,30 @@ void displayToggle(bool toggle) {
|
|||
#endif
|
||||
}
|
||||
|
||||
bool shouldCleanTFT(const String& header, const String& line1, const String& line2, const String& line3) {
|
||||
if (oldHeader != header || oldFirstLine != line1 || oldSecondLine != line2 || oldThirdLine != line3) {
|
||||
oldHeader = header;
|
||||
oldFirstLine = line1;
|
||||
oldSecondLine = line2;
|
||||
oldThirdLine = line3;
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool shouldCleanTFT(const String& header, const String& line1, const String& line2, const String& line3, const String& line4, const String& line5, const String& line6) {
|
||||
if (oldHeader != header || oldFirstLine != line1 || oldSecondLine != line2 || oldThirdLine != line3 || oldFourthLine != line4 || oldFifthLine != line5 || oldSixthLine != line6) {
|
||||
oldHeader = header;
|
||||
oldFirstLine = line1;
|
||||
oldSecondLine = line2;
|
||||
oldThirdLine = line3;
|
||||
oldFourthLine = line4;
|
||||
oldFifthLine = line5;
|
||||
oldSixthLine = line6;
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void displayShow(const String& header, const String& line1, const String& line2, const String& line3, int wait) {
|
||||
#ifdef HAS_DISPLAY
|
||||
const String* const lines[] = {&line1, &line2, &line3};
|
||||
#ifdef HAS_TFT
|
||||
if (shouldCleanTFT(header, line1, line2, line3)) {
|
||||
cleanTFT();
|
||||
}
|
||||
tft.setTextColor(TFT_WHITE,TFT_BLACK);
|
||||
tft.setTextSize(bigSizeFont);
|
||||
tft.setCursor(0, 0);
|
||||
tft.print(header);
|
||||
tft.setTextSize(smallSizeFont);
|
||||
sprite.fillSprite(TFT_BLACK);
|
||||
#if defined(HELTEC_WIRELESS_TRACKER)
|
||||
sprite.fillRect(0, 0, 160, 19, redColor);
|
||||
#endif
|
||||
#if defined(TTGO_T_DECK_GPS) || defined(TTGO_T_DECK_PLUS)
|
||||
sprite.fillRect(0, 0, 320, 43, redColor);
|
||||
#endif
|
||||
sprite.setTextFont(0);
|
||||
sprite.setTextSize(bigSizeFont);
|
||||
sprite.setTextColor(TFT_WHITE, redColor);
|
||||
sprite.drawString(header, 3, 3);
|
||||
|
||||
sprite.setTextSize(smallSizeFont);
|
||||
sprite.setTextColor(TFT_WHITE, TFT_BLACK);
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
tft.setCursor(0, ((lineSpacing * (2 + i)) - 2));
|
||||
tft.print(*lines[i]);
|
||||
sprite.drawString(*lines[i], 3, (lineSpacing * (2 + i)) - 2);
|
||||
}
|
||||
|
||||
sprite.pushSprite(0,0);
|
||||
#else
|
||||
#ifdef HAS_EPAPER
|
||||
// ... to be continued
|
||||
|
|
@ -180,18 +167,26 @@ void displayShow(const String& header, const String& line1, const String& line2,
|
|||
#ifdef HAS_DISPLAY
|
||||
const String* const lines[] = {&line1, &line2, &line3, &line4, &line5, &line6};
|
||||
#ifdef HAS_TFT
|
||||
if (shouldCleanTFT(header, line1, line2, line3, line4, line5, line6)) {
|
||||
cleanTFT();
|
||||
}
|
||||
tft.setTextColor(TFT_WHITE,TFT_BLACK);
|
||||
tft.setTextSize(bigSizeFont);
|
||||
tft.setCursor(0, 0);
|
||||
tft.print(header);
|
||||
tft.setTextSize(smallSizeFont);
|
||||
sprite.fillSprite(TFT_BLACK);
|
||||
#if defined(HELTEC_WIRELESS_TRACKER)
|
||||
sprite.fillRect(0, 0, 160, 19, redColor);
|
||||
#endif
|
||||
#if defined(TTGO_T_DECK_GPS) || defined(TTGO_T_DECK_PLUS)
|
||||
sprite.fillRect(0, 0, 320, 43, redColor);
|
||||
#endif
|
||||
sprite.setTextFont(0);
|
||||
sprite.setTextSize(bigSizeFont);
|
||||
sprite.setTextColor(TFT_WHITE, redColor);
|
||||
sprite.drawString(header, 3, 3);
|
||||
|
||||
sprite.setTextSize(smallSizeFont);
|
||||
sprite.setTextColor(TFT_WHITE, TFT_BLACK);
|
||||
|
||||
for (int i = 0; i < 6; i++) {
|
||||
tft.setCursor(0, ((lineSpacing * (2 + i)) - 2));
|
||||
tft.print(*lines[i]);
|
||||
sprite.drawString(*lines[i], 3, (lineSpacing * (2 + i)) - 2);
|
||||
}
|
||||
|
||||
sprite.pushSprite(0,0);
|
||||
#else
|
||||
#ifdef HAS_EPAPER
|
||||
// ... to be continued
|
||||
|
|
|
|||
|
|
@ -207,7 +207,23 @@ namespace POWER_Utils {
|
|||
|
||||
#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);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(TTGO_T_DECK_GPS) || defined(TTGO_T_DECK_PLUS)
|
||||
pinMode(BOARD_POWERON, OUTPUT);
|
||||
digitalWrite(BOARD_POWERON, HIGH);
|
||||
|
||||
pinMode(BOARD_SDCARD_CS, OUTPUT);
|
||||
pinMode(RADIO_CS_PIN, OUTPUT);
|
||||
pinMode(TFT_CS, OUTPUT);
|
||||
|
||||
digitalWrite(BOARD_SDCARD_CS, HIGH);
|
||||
digitalWrite(RADIO_CS_PIN, HIGH);
|
||||
digitalWrite(TFT_CS, HIGH);
|
||||
|
||||
delay(500);
|
||||
Wire.begin(BOARD_I2C_SDA, BOARD_I2C_SCL);
|
||||
#endif
|
||||
|
||||
delay(1000);
|
||||
BATTERY_Utils::setup();
|
||||
|
|
|
|||
|
|
@ -0,0 +1,36 @@
|
|||
#ifndef BOARD_PINOUT_H_
|
||||
#define BOARD_PINOUT_H_
|
||||
|
||||
// LoRa Radio
|
||||
#define HAS_SX1262
|
||||
#define RADIO_SCLK_PIN 40
|
||||
#define RADIO_MISO_PIN 38
|
||||
#define RADIO_MOSI_PIN 41
|
||||
#define RADIO_CS_PIN 9
|
||||
#define RADIO_RST_PIN 17
|
||||
#define RADIO_DIO1_PIN 45
|
||||
#define RADIO_BUSY_PIN 13
|
||||
|
||||
// Display
|
||||
#define HAS_DISPLAY
|
||||
#define HAS_TFT
|
||||
|
||||
#undef OLED_SDA
|
||||
#undef OLED_SCL
|
||||
#undef OLED_RST
|
||||
|
||||
// GPS
|
||||
#define GPS_RX 43
|
||||
#define GPS_TX 44
|
||||
|
||||
// Aditional Config
|
||||
#define BATTERY_PIN 4
|
||||
|
||||
#define BOARD_POWERON 10
|
||||
#define BOARD_SDCARD_CS 39
|
||||
#define BOARD_BL_PIN 42
|
||||
|
||||
#define BOARD_I2C_SDA 18
|
||||
#define BOARD_I2C_SCL 8
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
[env:ttgo_t_deck_GPS]
|
||||
framework = arduino
|
||||
monitor_speed = 115200
|
||||
platform = espressif32 @ 6.3.1
|
||||
board_build.partitions = min_spiffs.csv
|
||||
board = esp32-s3-devkitc-1
|
||||
board_build.mcu = esp32s3
|
||||
board_build.embed_files =
|
||||
data_embed/index.html.gz
|
||||
data_embed/style.css.gz
|
||||
data_embed/script.js.gz
|
||||
data_embed/bootstrap.css.gz
|
||||
data_embed/bootstrap.js.gz
|
||||
data_embed/favicon.png.gz
|
||||
extra_scripts =
|
||||
pre:tools/compress.py
|
||||
debug_tool = esp-prog
|
||||
build_flags =
|
||||
${common.build_flags}
|
||||
${common.usb_flags}
|
||||
-D TTGO_T_DECK_PLUS
|
||||
-D BOARD_HAS_PSRAM
|
||||
-D USER_SETUP_LOADED
|
||||
-D ST7789_DRIVER
|
||||
-D TFT_WIDTH=240
|
||||
-D TFT_HEIGHT=320
|
||||
-D TFT_RGB_ORDER=TFT_BGR
|
||||
-D TFT_INVERSION_ON
|
||||
-D TFT_MISO=38
|
||||
-D TFT_MOSI=41
|
||||
-D TFT_SCLK=40
|
||||
-D TFT_CS=12
|
||||
-D TFT_DC=11
|
||||
-D TFT_RST=-1
|
||||
-D TFT_BUSY=-1
|
||||
-D TFT_BL=42
|
||||
-D TFT_BACKLIGHT_ON=1
|
||||
-D TOUCH_CS=-1
|
||||
-D LOAD_GLCD
|
||||
-D LOAD_FONT2
|
||||
-D LOAD_FONT4
|
||||
-D LOAD_FONT6
|
||||
-D LOAD_FONT7
|
||||
-D LOAD_FONT8
|
||||
-D SPI_FREQUENCY=40000000
|
||||
-D SPI_READ_FREQUENCY=16000000
|
||||
lib_deps =
|
||||
${common.lib_deps}
|
||||
bodmer/TFT_eSPI @ 2.5.43
|
||||
https://github.com/mmMicky/TouchLib.git
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
#ifndef BOARD_PINOUT_H_
|
||||
#define BOARD_PINOUT_H_
|
||||
|
||||
// LoRa Radio
|
||||
#define HAS_SX1262
|
||||
#define RADIO_SCLK_PIN 40
|
||||
#define RADIO_MISO_PIN 38
|
||||
#define RADIO_MOSI_PIN 41
|
||||
#define RADIO_CS_PIN 9
|
||||
#define RADIO_RST_PIN 17
|
||||
#define RADIO_DIO1_PIN 45
|
||||
#define RADIO_BUSY_PIN 13
|
||||
|
||||
// Display
|
||||
#define HAS_DISPLAY
|
||||
#define HAS_TFT
|
||||
|
||||
#undef OLED_SDA
|
||||
#undef OLED_SCL
|
||||
#undef OLED_RST
|
||||
|
||||
// GPS
|
||||
#define GPS_RX 43
|
||||
#define GPS_TX 44
|
||||
#define GPS_BAUDRATE 38400
|
||||
|
||||
// Aditional Config
|
||||
#define BATTERY_PIN 4
|
||||
|
||||
#define BOARD_POWERON 10
|
||||
#define BOARD_SDCARD_CS 39
|
||||
#define BOARD_BL_PIN 42
|
||||
|
||||
#define BOARD_I2C_SDA 18
|
||||
#define BOARD_I2C_SCL 8
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
[env:ttgo_t_deck_plus]
|
||||
framework = arduino
|
||||
monitor_speed = 115200
|
||||
platform = espressif32 @ 6.3.1
|
||||
board_build.partitions = min_spiffs.csv
|
||||
board = esp32-s3-devkitc-1
|
||||
board_build.mcu = esp32s3
|
||||
board_build.embed_files =
|
||||
data_embed/index.html.gz
|
||||
data_embed/style.css.gz
|
||||
data_embed/script.js.gz
|
||||
data_embed/bootstrap.css.gz
|
||||
data_embed/bootstrap.js.gz
|
||||
data_embed/favicon.png.gz
|
||||
extra_scripts =
|
||||
pre:tools/compress.py
|
||||
debug_tool = esp-prog
|
||||
build_flags =
|
||||
${common.build_flags}
|
||||
${common.usb_flags}
|
||||
-D TTGO_T_DECK_PLUS
|
||||
-D BOARD_HAS_PSRAM
|
||||
-D USER_SETUP_LOADED
|
||||
-D ST7789_DRIVER
|
||||
-D TFT_WIDTH=240
|
||||
-D TFT_HEIGHT=320
|
||||
-D TFT_RGB_ORDER=TFT_BGR
|
||||
-D TFT_INVERSION_ON
|
||||
-D TFT_MISO=38
|
||||
-D TFT_MOSI=41
|
||||
-D TFT_SCLK=40
|
||||
-D TFT_CS=12
|
||||
-D TFT_DC=11
|
||||
-D TFT_RST=-1
|
||||
-D TFT_BUSY=-1
|
||||
-D TFT_BL=42
|
||||
-D TFT_BACKLIGHT_ON=1
|
||||
-D TOUCH_CS=-1
|
||||
-D LOAD_GLCD
|
||||
-D LOAD_FONT2
|
||||
-D LOAD_FONT4
|
||||
-D LOAD_FONT6
|
||||
-D LOAD_FONT7
|
||||
-D LOAD_FONT8
|
||||
-D SPI_FREQUENCY=40000000
|
||||
-D SPI_READ_FREQUENCY=16000000
|
||||
lib_deps =
|
||||
${common.lib_deps}
|
||||
bodmer/TFT_eSPI @ 2.5.43
|
||||
https://github.com/mmMicky/TouchLib.git
|
||||
Loading…
Reference in New Issue