Skip to content

Commit 67ca4a1

Browse files
committed
T-Beam Supreme: Repeater and BLE working. Added PCF8563 RTC
1 parent c4c175c commit 67ca4a1

File tree

5 files changed

+64
-22
lines changed

5 files changed

+64
-22
lines changed

platformio.ini

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -569,32 +569,26 @@ build_flags =
569569
-D SX126X_RX_BOOSTED_GAIN=1
570570
lib_deps =
571571
${esp32_base.lib_deps}
572-
adafruit/Adafruit SSD1306 @ ^2.5.13
572+
lewisxhe/PCF8563_Library@^1.0.1
573+
lewisxhe/XPowersLib @ ^0.2.7
574+
build_src_filter = ${esp32_base.build_src_filter}
575+
+<../variants/lilygo_tbeam_supreme_SX1262>
576+
board_build.partitions = min_spiffs.csv
573577

574578
[env:T_Beam_S3_Supreme_SX1262_Repeater]
575579
extends = T_Beam_S3_Supreme_SX1262
576580
build_flags =
577581
${T_Beam_S3_Supreme_SX1262.build_flags}
578-
-D DISPLAY_CLASS=SSD1306Display
579582
-D ADVERT_NAME='"T-Beam S3 Supreme SX1262 Repeater"'
580583
-D ADVERT_LAT=0
581584
-D ADVERT_LON=0
582585
-D ADMIN_PASSWORD='"password"'
583586
build_src_filter = ${T_Beam_S3_Supreme_SX1262.build_src_filter}
584587
+<helpers/ui/*.cpp>
585588
+<../examples/simple_repeater>
586-
lib_deps =
589+
lib_deps =
587590
${T_Beam_S3_Supreme_SX1262.lib_deps}
588591
${esp32_ota.lib_deps}
589-
lib_deps =
590-
me-no-dev/AsyncTCP@^3.3.2
591-
esp32async/ESPAsyncWebServer@^3.7.5
592-
rweather/Crypto@^0.4.0
593-
jgromes/RadioLib@^7.1.2
594-
adafruit/RTClib@^2.1.4
595-
melopero/Melopero RV3028@^1.1.0
596-
adafruit/Adafruit GFX Library@^1.12.0
597-
adafruit/Adafruit SSD1306@^2.5.13
598592

599593
[LilyGo_TLora_V2_1_1_6]
600594
extends = esp32_base
@@ -908,6 +902,7 @@ lib_deps =
908902
jgromes/RadioLib@^7.1.2
909903
adafruit/RTClib@^2.1.4
910904
melopero/Melopero RV3028@^1.1.0
905+
lewisxhe/PCF8563_Library@^1.0.1
911906
adafruit/Adafruit GFX Library@^1.12.0
912907
adafruit/Adafruit SSD1306@^2.5.13
913908

@@ -931,6 +926,7 @@ lib_deps =
931926
jgromes/RadioLib@^7.1.2
932927
adafruit/RTClib@^2.1.4
933928
melopero/Melopero RV3028@^1.1.0
929+
lewisxhe/PCF8563_Library@^1.0.1
934930
adafruit/Adafruit GFX Library@^1.12.0
935931
adafruit/Adafruit SSD1306@^2.5.13
936932

@@ -1129,6 +1125,7 @@ lib_deps =
11291125
jgromes/RadioLib@^7.1.2
11301126
adafruit/RTClib@^2.1.4
11311127
melopero/Melopero RV3028@^1.1.0
1128+
lewisxhe/PCF8563_Library@^1.0.1
11321129
adafruit/Adafruit GFX Library@^1.12.0
11331130
adafruit/Adafruit SSD1306@^2.5.13
11341131

@@ -1150,6 +1147,7 @@ lib_deps =
11501147
jgromes/RadioLib@^7.1.2
11511148
adafruit/RTClib@^2.1.4
11521149
melopero/Melopero RV3028@^1.1.0
1150+
lewisxhe/PCF8563_Library@^1.0.1
11531151
adafruit/Adafruit GFX Library@^1.12.0
11541152
adafruit/Adafruit SSD1306@^2.5.13
11551153

@@ -1214,6 +1212,7 @@ lib_deps =
12141212
jgromes/RadioLib@^7.1.2
12151213
adafruit/RTClib@^2.1.4
12161214
melopero/Melopero RV3028@^1.1.0
1215+
lewisxhe/PCF8563_Library@^1.0.1
12171216
adafruit/Adafruit GFX Library@^1.12.0
12181217
adafruit/Adafruit SSD1306@^2.5.13
12191218

@@ -1233,6 +1232,7 @@ lib_deps =
12331232
jgromes/RadioLib@^7.1.2
12341233
adafruit/RTClib@^2.1.4
12351234
melopero/Melopero RV3028@^1.1.0
1235+
lewisxhe/PCF8563_Library@^1.0.1
12361236
adafruit/Adafruit GFX Library@^1.12.0
12371237
adafruit/Adafruit SSD1306@^2.5.13
12381238

@@ -1401,4 +1401,23 @@ build_src_filter = ${Xiao_S3_WIO.build_src_filter}
14011401
lib_deps =
14021402
${Xiao_S3_WIO.lib_deps}
14031403
densaugeo/base64 @ ~1.4.0
1404+
1405+
[env:T_Beam_S3_Supreme_SX1262_companion_radio_ble]
1406+
extends = T_Beam_S3_Supreme_SX1262
1407+
build_flags =
1408+
${T_Beam_S3_Supreme_SX1262.build_flags}
1409+
-D DISPLAY_CLASS=SSD1306Display
1410+
-D MAX_CONTACTS=100
1411+
-D MAX_GROUP_CHANNELS=8
1412+
-D BLE_PIN_CODE=123456
1413+
-D BLE_DEBUG_LOGGING=1
1414+
-D MESH_PACKET_LOGGING=1
1415+
-D MESH_DEBUG=1
1416+
build_src_filter = ${T_Beam_S3_Supreme_SX1262.build_src_filter}
1417+
+<helpers/esp32/*.cpp>
1418+
+<helpers/ui/*.cpp>
1419+
+<../examples/companion_radio>
1420+
lib_deps =
1421+
${T_Beam_S3_Supreme_SX1262.lib_deps}
1422+
densaugeo/base64 @ ~1.4.0
14041423
adafruit/Adafruit SSD1306@^2.5.13

src/helpers/AutoDiscoverRTCClock.cpp

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
11
#include "AutoDiscoverRTCClock.h"
22
#include "RTClib.h"
33
#include <Melopero_RV3028.h>
4+
#include "pcf8563.h"
45

56
static RTC_DS3231 rtc_3231;
67
static bool ds3231_success = false;
78

89
static Melopero_RV3028 rtc_rv3028;
910
static bool rv3028_success = false;
1011

12+
static RTC_PCF8563 rtc_8563;
13+
static bool rtc_8563_success = false;
14+
1115
#define DS3231_ADDRESS 0x68
1216
#define RV3028_ADDRESS 0x52
17+
#define PCF8563_ADDRESS 0x51
1318

1419
bool AutoDiscoverRTCClock::i2c_probe(TwoWire& wire, uint8_t addr) {
1520
wire.beginTransmission(addr);
@@ -28,6 +33,9 @@ void AutoDiscoverRTCClock::begin(TwoWire& wire) {
2833
rtc_rv3028.set24HourMode(); // Set the device to use the 24hour format (default) instead of the 12 hour format
2934
rv3028_success = true;
3035
}
36+
if(i2c_probe(wire,PCF8563_ADDRESS)){
37+
rtc_8563_success = rtc_8563.begin(&wire);
38+
}
3139
}
3240

3341
uint32_t AutoDiscoverRTCClock::getCurrentTime() {
@@ -44,6 +52,9 @@ uint32_t AutoDiscoverRTCClock::getCurrentTime() {
4452
rtc_rv3028.getSecond()
4553
).unixtime();
4654
}
55+
if(rtc_8563_success){
56+
return rtc_8563.now().unixtime();
57+
}
4758
return _fallback->getCurrentTime();
4859
}
4960

@@ -52,9 +63,10 @@ void AutoDiscoverRTCClock::setCurrentTime(uint32_t time) {
5263
rtc_3231.adjust(DateTime(time));
5364
} else if (rv3028_success) {
5465
auto dt = DateTime(time);
55-
uint8_t weekday = (dt.day() + (uint16_t)((2.6 * dt.month()) - 0.2) - (2 * (dt.year() / 100)) + dt.year() + (uint16_t)(dt.year() / 4) + (uint16_t)(dt.year() / 400)) % 7;
56-
66+
uint8_t weekday = (dt.day() + (uint16_t)((2.6 * dt.month()) - 0.2) - (2 * (dt.year() / 100)) + dt.year() + (uint16_t)(dt.year() / 4) + (uint16_t)(dt.year() / 400)) % 7;
5767
rtc_rv3028.setTime(dt.year(), dt.month(), weekday, dt.day(), dt.hour(), dt.minute(), dt.second());
68+
} else if (rtc_8563_success) {
69+
rtc_8563.adjust(DateTime(time));
5870
} else {
5971
_fallback->setCurrentTime(time);
6072
}

src/helpers/TBeamS3SupremeBoard.h

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@
1818
#define PIN_BOARD_SDA 17 //SDA for OLED, BME280, and QMC6310U (0x1C)
1919
#define PIN_BOARD_SCL 18 //SCL for OLED, BME280, and QMC6310U (0x1C)
2020

21-
#define PIN_BOARD_SDA_1 42 //SDA for PMU and PFC8563 (RTC)
22-
#define PIN_BOARD_SCL_1 41 //SCL for PMU and PFC8563 (RTC)
23-
#define PIN_PMU_IRQ 40 //IRQ pin for PMU
21+
#define PIN_BOARD_SDA1 42 //SDA for PMU and PFC8563 (RTC)
22+
#define PIN_BOARD_SCL1 41 //SCL for PMU and PFC8563 (RTC)
23+
#define PIN_PMU_IRQ 40 //IRQ pin for PMU
2424

2525
#define PIN_USER_BTN 0
2626

@@ -38,6 +38,16 @@
3838
#define P_GPS_WAKE 7 //GPS Wakeup pin
3939
#define P_GPS_1PPS 6 //GPS 1PPS pin
4040

41+
//I2C Wire addresses
42+
#define I2C_BME280_ADD 0x76 //BME280 sensor I2C address on Wire
43+
#define I2C_OLED_ADD 0x3C //SSD1306/SH1106 OLED I2C address on Wire
44+
#define I2C_QMC6310U_ADD 0x1C //QMC6310U mag sensor I2C address on Wire
45+
46+
//I2C Wire1 addresses
47+
#define I2C_RTC_ADD 0x51 //RTC I2C address on Wire1
48+
#define I2C_PMU_ADD 0x34 //AXP2101 I2C address on Wire1
49+
50+
4151

4252
class TBeamS3SupremeBoard : public ESP32Board {
4353

variants/lilygo_tbeam_supreme_SX1262/platformio.ini

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,14 @@ build_src_filter = ${esp32_base.build_src_filter}
1414
board_build.partitions = min_spiffs.csv ; get around 4mb flash limit
1515
lib_deps =
1616
${esp32_base.lib_deps}
17-
adafruit/Adafruit SSD1306 @ ^2.5.13
17+
lewisxhe/PCF8563_Library@^1.0.1
1818
lewisxhe/XPowersLib @ ^0.2.7
1919

2020
; === LILYGO T-Beam S3 Supreme with SX1262 environments ===
2121
[env:T_Beam_S3_Supreme_SX1262_Repeater]
2222
extends = T_Beam_S3_Supreme_SX1262
2323
build_flags =
2424
${T_Beam_S3_Supreme_SX1262.build_flags}
25-
-D DISPLAY_CLASS=SSD1306Display
2625
-D ADVERT_NAME='"T-Beam S3 Supreme SX1262 Repeater"'
2726
-D ADVERT_LAT=0
2827
-D ADVERT_LON=0
@@ -43,7 +42,7 @@ build_flags =
4342
${T_Beam_S3_Supreme_SX1262.build_flags}
4443
-D DISPLAY_CLASS=SSD1306Display
4544
-D MAX_CONTACTS=100
46-
-D MAX_GROUP_CHANNELS=8
45+
-D MAX_GROUP_CHANNELS=1
4746
-D BLE_PIN_CODE=123456
4847
-D BLE_DEBUG_LOGGING=1
4948
; -D ENABLE_PRIVATE_KEY_IMPORT=1

variants/lilygo_tbeam_supreme_SX1262/target.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@ static void setPMUIntFlag(){
3030
}
3131

3232
bool power_init() {
33-
33+
//Start up Wire1 with PMU address
34+
Wire1.begin(I2C_PMU_ADD);
35+
3436
//Set LED to indicate charge state
3537
PMU.setChargingLedMode(XPOWERS_CHG_LED_CTRL_CHG);
3638

@@ -109,7 +111,7 @@ bool power_init() {
109111

110112
bool radio_init() {
111113
fallback_clock.begin();
112-
rtc_clock.begin(Wire);
114+
rtc_clock.begin(Wire1);
113115

114116
#ifdef SX126X_DIO3_TCXO_VOLTAGE
115117
float tcxo = SX126X_DIO3_TCXO_VOLTAGE;

0 commit comments

Comments
 (0)