Some checks failed
Build and deploy Docs site to GitHub Pages / github-pages (push) Has been cancelled
PR Build Check / build (Heltec_v3_companion_radio_ble) (push) Has been cancelled
PR Build Check / build (Heltec_v3_repeater) (push) Has been cancelled
PR Build Check / build (Heltec_v3_room_server) (push) Has been cancelled
PR Build Check / build (LilyGo_Tlora_C6_repeater_) (push) Has been cancelled
PR Build Check / build (PicoW_repeater) (push) Has been cancelled
PR Build Check / build (RAK_4631_companion_radio_ble) (push) Has been cancelled
PR Build Check / build (RAK_4631_repeater) (push) Has been cancelled
PR Build Check / build (RAK_4631_room_server) (push) Has been cancelled
PR Build Check / build (wio-e5-mini_repeater) (push) Has been cancelled
- MeshCore-based Simple Sensor firmware - Heltec T114 without display - BME280 sensor support (temp/humidity/pressure) - Radio: 868.856018 MHz, SF7, BW62.5 kHz, CR4/7 - 2-byte path hash - PlatformIO project
72 lines
1.9 KiB
C++
72 lines
1.9 KiB
C++
#include "TBeam1WBoard.h"
|
|
|
|
void TBeam1WBoard::begin() {
|
|
ESP32Board::begin();
|
|
|
|
// Power on radio module (must be done before radio init)
|
|
pinMode(SX126X_POWER_EN, OUTPUT);
|
|
digitalWrite(SX126X_POWER_EN, HIGH);
|
|
radio_powered = true;
|
|
delay(10); // Allow radio to power up
|
|
|
|
// RF switch RXEN pin handled by RadioLib via setRfSwitchPins()
|
|
|
|
// Initialize LED
|
|
pinMode(LED_PIN, OUTPUT);
|
|
digitalWrite(LED_PIN, LOW);
|
|
|
|
// Initialize fan control (on by default - 1W PA can overheat)
|
|
pinMode(FAN_CTRL_PIN, OUTPUT);
|
|
digitalWrite(FAN_CTRL_PIN, HIGH);
|
|
}
|
|
|
|
void TBeam1WBoard::onBeforeTransmit() {
|
|
// RF switching handled by RadioLib via SX126X_DIO2_AS_RF_SWITCH and setRfSwitchPins()
|
|
digitalWrite(LED_PIN, HIGH); // TX LED on
|
|
}
|
|
|
|
void TBeam1WBoard::onAfterTransmit() {
|
|
digitalWrite(LED_PIN, LOW); // TX LED off
|
|
}
|
|
|
|
uint16_t TBeam1WBoard::getBattMilliVolts() {
|
|
// T-Beam 1W uses 7.4V battery with voltage divider
|
|
// ADC reads through divider - adjust multiplier based on actual divider ratio
|
|
analogReadResolution(12);
|
|
uint32_t raw = 0;
|
|
for (int i = 0; i < 8; i++) {
|
|
raw += analogRead(BATTERY_PIN);
|
|
}
|
|
raw = raw / 8;
|
|
// Assuming voltage divider ratio from ADC_MULTIPLIER
|
|
// 3.3V reference, 12-bit ADC (4095 max)
|
|
return static_cast<uint16_t>((raw * 3300 * ADC_MULTIPLIER) / 4095);
|
|
}
|
|
|
|
const char* TBeam1WBoard::getManufacturerName() const {
|
|
return "LilyGo T-Beam 1W";
|
|
}
|
|
|
|
void TBeam1WBoard::powerOff() {
|
|
// Turn off radio LNA (CTRL pin must be LOW when not receiving)
|
|
digitalWrite(SX126X_RXEN, LOW);
|
|
|
|
// Turn off radio power
|
|
digitalWrite(SX126X_POWER_EN, LOW);
|
|
radio_powered = false;
|
|
|
|
// Turn off LED and fan
|
|
digitalWrite(LED_PIN, LOW);
|
|
digitalWrite(FAN_CTRL_PIN, LOW);
|
|
|
|
ESP32Board::powerOff();
|
|
}
|
|
|
|
void TBeam1WBoard::setFanEnabled(bool enabled) {
|
|
digitalWrite(FAN_CTRL_PIN, enabled ? HIGH : LOW);
|
|
}
|
|
|
|
bool TBeam1WBoard::isFanEnabled() const {
|
|
return digitalRead(FAN_CTRL_PIN) == HIGH;
|
|
}
|