Skip to content

Commit

Permalink
Merge branch 'master' into trackerd
Browse files Browse the repository at this point in the history
  • Loading branch information
thebentern authored May 31, 2024
2 parents ae595cc + 4fa2427 commit 1d57579
Show file tree
Hide file tree
Showing 10 changed files with 147 additions and 10 deletions.
3 changes: 3 additions & 0 deletions src/mesh/NodeDB.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,9 @@ void NodeDB::installDefaultConfig()
meshtastic_Config_PositionConfig_PositionFlags_SPEED | meshtastic_Config_PositionConfig_PositionFlags_HEADING |
meshtastic_Config_PositionConfig_PositionFlags_DOP | meshtastic_Config_PositionConfig_PositionFlags_SATINVIEW);

#ifdef RADIOMASTER_900_BANDIT_NANO
config.display.flip_screen = true;
#endif
#ifdef T_WATCH_S3
config.display.screen_on_secs = 30;
config.display.wake_on_tap_or_motion = true;
Expand Down
33 changes: 28 additions & 5 deletions src/mesh/RF95Interface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@
#include "PortduinoGlue.h"
#endif

#define MAX_POWER 20
#ifndef RF95_MAX_POWER
#define RF95_MAX_POWER 20
#endif

// if we use 20 we are limited to 1% duty cycle or hw might overheat. For continuous operation set a limit of 17
// In theory up to 27 dBm is possible, but the modules installed in most radios can cope with a max of 20. So BIG WARNING
// if you set power to something higher than 17 or 20 you might fry your board.
Expand Down Expand Up @@ -49,8 +52,8 @@ bool RF95Interface::init()
{
RadioLibInterface::init();

if (power > MAX_POWER) // This chip has lower power limits than some
power = MAX_POWER;
if (power > RF95_MAX_POWER) // This chip has lower power limits than some
power = RF95_MAX_POWER;

limitPower();

Expand All @@ -61,6 +64,13 @@ bool RF95Interface::init()
digitalWrite(RF95_TCXO, 1);
#endif

// enable PA
#ifdef RF95_PA_EN
#if defined(RF95_PA_DAC_EN)
dacWrite(RF95_PA_EN, RF95_PA_LEVEL);
#endif
#endif

/*
#define RF95_TXEN (22) // If defined, this pin should be set high prior to transmit (controls an external analog switch)
#define RF95_RXEN (23) // If defined, this pin should be set high prior to receive (controls an external analog switch)
Expand All @@ -71,6 +81,11 @@ bool RF95Interface::init()
digitalWrite(RF95_TXEN, 0);
#endif

#ifdef RF95_FAN_EN
pinMode(RF95_FAN_EN, OUTPUT);
digitalWrite(RF95_FAN_EN, 1);
#endif

#ifdef RF95_RXEN
pinMode(RF95_RXEN, OUTPUT);
digitalWrite(RF95_RXEN, 1);
Expand Down Expand Up @@ -146,10 +161,14 @@ bool RF95Interface::reconfigure()
if (err != RADIOLIB_ERR_NONE)
RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_INVALID_RADIO_SETTING);

if (power > MAX_POWER) // This chip has lower power limits than some
power = MAX_POWER;
if (power > RF95_MAX_POWER) // This chip has lower power limits than some
power = RF95_MAX_POWER;

#ifdef USE_RF95_RFO
err = lora->setOutputPower(power, true);
#else
err = lora->setOutputPower(power);
#endif
if (err != RADIOLIB_ERR_NONE)
RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_INVALID_RADIO_SETTING);

Expand Down Expand Up @@ -235,5 +254,9 @@ bool RF95Interface::sleep()
setStandby(); // First cancel any active receiving/sending
lora->sleep();

#ifdef RF95_FAN_EN
digitalWrite(RF95_FAN_EN, 0);
#endif

return true;
}
4 changes: 4 additions & 0 deletions src/mesh/RadioLibRF95.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,11 @@ int16_t RadioLibRF95::begin(float freq, float bw, uint8_t sf, uint8_t cr, uint8_
state = setCodingRate(cr);
RADIOLIB_ASSERT(state);

#ifdef USE_RF95_RFO
state = setOutputPower(power, true);
#else
state = setOutputPower(power);
#endif
RADIOLIB_ASSERT(state);

state = setGain(gain);
Expand Down
2 changes: 2 additions & 0 deletions src/platform/esp32/architecture.h
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,8 @@
#define HW_VENDOR meshtastic_HardwareModel_UNPHONE
#elif defined(WIPHONE)
#define HW_VENDOR meshtastic_HardwareModel_WIPHONE
#elif defined(RADIOMASTER_900_BANDIT_NANO)
#define HW_VENDOR meshtastic_HardwareModel_RADIOMASTER_900_BANDIT_NANO
#endif

// -----------------------------------------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion variants/heltec_v3/variant.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
#define BATTERY_PIN 1 // A battery voltage measurement pin, voltage divider connected here to measure battery voltage
#define ADC_CHANNEL ADC1_GPIO1_CHANNEL
#define ADC_ATTENUATION ADC_ATTEN_DB_2_5 // lower dB for high resistance voltage divider
#define ADC_MULTIPLIER 4.9
#define ADC_MULTIPLIER 4.9 * 1.045

#define USE_SX1262

Expand Down
10 changes: 8 additions & 2 deletions variants/heltec_wireless_tracker/variant.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,17 @@
#define SCREEN_TRANSITION_FRAMERATE 3 // fps
#define DISPLAY_FORCE_SMALL_FONTS

#define VEXT_ENABLE_V05 3 // active HIGH, powers the lora antenna boost
// pin 3 is Vext on v1.1 - HIGH enables LDO for Vext rail which goes to:
// GPS UC6580: GPS V_DET(8), VDD_IO(7), DCDC_IN(21), pulls up RESETN(17), D_SEL(33) and BOOT_MODE(34) through 10kR
// GPS LNA SW7125DE: VCC(4), pulls up SHDN(5) through 10kR
// LED: VDD, LEDA (through diode)
#define VEXT_ENABLE_V05 3 // active HIGH - powers the GPS, GPS LNA and OLED VDD/anode
#define BUTTON_PIN 0

#define BATTERY_PIN 1 // A battery voltage measurement pin, voltage divider connected here to measure battery voltage
#define ADC_CHANNEL ADC1_GPIO1_CHANNEL
#define ADC_ATTENUATION ADC_ATTEN_DB_2_5 // lower dB for high resistance voltage divider
#define ADC_MULTIPLIER 4.9
#define ADC_MULTIPLIER 4.9 * 1.045
#define ADC_CTRL 2 // active HIGH, powers the voltage divider. Only on 1.1
#define ADC_CTRL_ENABLED HIGH

Expand All @@ -43,6 +47,8 @@
#define GPS_TX_PIN 34
#define PIN_GPS_RESET 35
#define PIN_GPS_PPS 36
// #define PIN_GPS_EN 3 // Uncomment to power off the GPS with triple-click on Tracker v1.1, though we'll also lose the
// display.

#define GPS_RESET_MODE LOW
#define GPS_UC6580
Expand Down
2 changes: 1 addition & 1 deletion variants/heltec_wireless_tracker_V1_0/variant.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
#define BATTERY_PIN 1 // A battery voltage measurement pin, voltage divider connected here to measure battery voltage
#define ADC_CHANNEL ADC1_GPIO1_CHANNEL
#define ADC_ATTENUATION ADC_ATTEN_DB_2_5 // lower dB for high resistance voltage divider
#define ADC_MULTIPLIER 4.9
#define ADC_MULTIPLIER 4.9 * 1.045

#undef GPS_RX_PIN
#undef GPS_TX_PIN
Expand Down
2 changes: 1 addition & 1 deletion variants/heltec_wsl_v3/variant.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
#define BATTERY_PIN 1 // A battery voltage measurement pin, voltage divider connected here to measure battery voltage
#define ADC_CHANNEL ADC1_GPIO1_CHANNEL
#define ADC_ATTENUATION ADC_ATTEN_DB_2_5 // lower dB for high resistance voltage divider
#define ADC_MULTIPLIER 4.9
#define ADC_MULTIPLIER 4.9 * 1.045

#define USE_SX1262

Expand Down
15 changes: 15 additions & 0 deletions variants/radiomaster_900_bandit_nano/platformio.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
[env:radiomaster_900_bandit_nano]
extends = esp32_base
board = esp32doit-devkit-v1
board_level = extra
build_flags =
${esp32_base.build_flags}
-DRADIOMASTER_900_BANDIT_NANO
-DVTABLES_IN_FLASH=1
-DCONFIG_DISABLE_HAL_LOCKS=1
-O2
-Ivariants/radiomaster_900_bandit_nano
board_build.f_cpu = 240000000L
upload_protocol = esptool
lib_deps =
${esp32_base.lib_deps}
84 changes: 84 additions & 0 deletions variants/radiomaster_900_bandit_nano/variant.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
/*
Initial settings and work by https://github.com/uberhalit and re-work by https://github.com/gjelsoe
Unit provided by Radio Master RC
https://radiomasterrc.com/products/bandit-nano-expresslrs-rf-module with 0.96" OLED display
*/

/*
I2C SDA and SCL.
*/
#define I2C_SDA 14
#define I2C_SCL 12

/*
No GPS - but free solder pads are available inside the case.
*/
#undef GPS_RX_PIN
#undef GPS_TX_PIN

/*
Pin connections from ESP32-D0WDQ6 to SX1276.
*/
#define LORA_DIO0 22
#define LORA_DIO1 21
#define LORA_SCK 18
#define LORA_MISO 19
#define LORA_MOSI 23
#define LORA_CS 4
#define LORA_RESET 5
#define LORA_TXEN 33

/*
This unit has a FAN built-in.
FAN is active at 250mW on it's ExpressLRS Firmware.
*/
#define RF95_FAN_EN 2

/*
LED PIN setup.
*/
#define LED_PIN 15

/*
Five way button when using ADC.
2.632V, 2.177V, 1.598V, 1.055V, 0V
Possible ADC Values:
{ UP, DOWN, LEFT, RIGHT, ENTER, IDLE }
3227, 0 ,1961, 2668, 1290, 4095
*/
#define BUTTON_PIN 39
#define BUTTON_NEED_PULLUP

#define SCREEN_ROTATE

/*
No External notification.
*/
#undef EXT_NOTIFY_OUT

/*
Remapping PIN Names.
Note, that this unit uses RFO
*/
#define USE_RF95
#define USE_RF95_RFO
#define RF95_CS LORA_CS
#define RF95_DIO1 LORA_DIO1
#define RF95_TXEN LORA_TXEN
#define RF95_RESET LORA_RESET
#define RF95_MAX_POWER 12

/*
This module has Skyworks SKY66122 controlled by dacWrite
power rangeing from 100mW to 1000mW.
Mapping of PA_LEVEL to Power output: GPIO26/dacWrite
168 -> 100mW -> 2.11v
148 -> 250mW -> 1.87v
128 -> 500mW -> 1.63v
90 -> 1000mW -> 1.16v
*/
#define RF95_PA_EN 26
#define RF95_PA_DAC_EN
#define RF95_PA_LEVEL 90

0 comments on commit 1d57579

Please sign in to comment.