kopia lustrzana https://github.com/meshtastic/firmware
Add support for RadioMaster Bandit Nano (#4005)
* Add support for RadioMaster Bandit Nano * Add fan to init and sleeppull/4216/head
rodzic
953aa4d091
commit
17142f8778
|
@ -292,6 +292,9 @@ void NodeDB::installDefaultConfig()
|
||||||
meshtastic_Config_PositionConfig_PositionFlags_SPEED | meshtastic_Config_PositionConfig_PositionFlags_HEADING |
|
meshtastic_Config_PositionConfig_PositionFlags_SPEED | meshtastic_Config_PositionConfig_PositionFlags_HEADING |
|
||||||
meshtastic_Config_PositionConfig_PositionFlags_DOP | meshtastic_Config_PositionConfig_PositionFlags_SATINVIEW);
|
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
|
#ifdef T_WATCH_S3
|
||||||
config.display.screen_on_secs = 30;
|
config.display.screen_on_secs = 30;
|
||||||
config.display.wake_on_tap_or_motion = true;
|
config.display.wake_on_tap_or_motion = true;
|
||||||
|
|
|
@ -8,7 +8,10 @@
|
||||||
#include "PortduinoGlue.h"
|
#include "PortduinoGlue.h"
|
||||||
#endif
|
#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
|
// 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
|
// 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.
|
// if you set power to something higher than 17 or 20 you might fry your board.
|
||||||
|
@ -49,8 +52,8 @@ bool RF95Interface::init()
|
||||||
{
|
{
|
||||||
RadioLibInterface::init();
|
RadioLibInterface::init();
|
||||||
|
|
||||||
if (power > MAX_POWER) // This chip has lower power limits than some
|
if (power > RF95_MAX_POWER) // This chip has lower power limits than some
|
||||||
power = MAX_POWER;
|
power = RF95_MAX_POWER;
|
||||||
|
|
||||||
limitPower();
|
limitPower();
|
||||||
|
|
||||||
|
@ -61,6 +64,13 @@ bool RF95Interface::init()
|
||||||
digitalWrite(RF95_TCXO, 1);
|
digitalWrite(RF95_TCXO, 1);
|
||||||
#endif
|
#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_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)
|
#define RF95_RXEN (23) // If defined, this pin should be set high prior to receive (controls an external analog switch)
|
||||||
|
@ -71,6 +81,11 @@ bool RF95Interface::init()
|
||||||
digitalWrite(RF95_TXEN, 0);
|
digitalWrite(RF95_TXEN, 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef RF95_FAN_EN
|
||||||
|
pinMode(RF95_FAN_EN, OUTPUT);
|
||||||
|
digitalWrite(RF95_FAN_EN, 1);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef RF95_RXEN
|
#ifdef RF95_RXEN
|
||||||
pinMode(RF95_RXEN, OUTPUT);
|
pinMode(RF95_RXEN, OUTPUT);
|
||||||
digitalWrite(RF95_RXEN, 1);
|
digitalWrite(RF95_RXEN, 1);
|
||||||
|
@ -146,10 +161,14 @@ bool RF95Interface::reconfigure()
|
||||||
if (err != RADIOLIB_ERR_NONE)
|
if (err != RADIOLIB_ERR_NONE)
|
||||||
RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_INVALID_RADIO_SETTING);
|
RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_INVALID_RADIO_SETTING);
|
||||||
|
|
||||||
if (power > MAX_POWER) // This chip has lower power limits than some
|
if (power > RF95_MAX_POWER) // This chip has lower power limits than some
|
||||||
power = MAX_POWER;
|
power = RF95_MAX_POWER;
|
||||||
|
|
||||||
|
#ifdef USE_RF95_RFO
|
||||||
|
err = lora->setOutputPower(power, true);
|
||||||
|
#else
|
||||||
err = lora->setOutputPower(power);
|
err = lora->setOutputPower(power);
|
||||||
|
#endif
|
||||||
if (err != RADIOLIB_ERR_NONE)
|
if (err != RADIOLIB_ERR_NONE)
|
||||||
RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_INVALID_RADIO_SETTING);
|
RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_INVALID_RADIO_SETTING);
|
||||||
|
|
||||||
|
@ -235,5 +254,9 @@ bool RF95Interface::sleep()
|
||||||
setStandby(); // First cancel any active receiving/sending
|
setStandby(); // First cancel any active receiving/sending
|
||||||
lora->sleep();
|
lora->sleep();
|
||||||
|
|
||||||
|
#ifdef RF95_FAN_EN
|
||||||
|
digitalWrite(RF95_FAN_EN, 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
|
@ -42,7 +42,11 @@ int16_t RadioLibRF95::begin(float freq, float bw, uint8_t sf, uint8_t cr, uint8_
|
||||||
state = setCodingRate(cr);
|
state = setCodingRate(cr);
|
||||||
RADIOLIB_ASSERT(state);
|
RADIOLIB_ASSERT(state);
|
||||||
|
|
||||||
|
#ifdef USE_RF95_RFO
|
||||||
|
state = setOutputPower(power, true);
|
||||||
|
#else
|
||||||
state = setOutputPower(power);
|
state = setOutputPower(power);
|
||||||
|
#endif
|
||||||
RADIOLIB_ASSERT(state);
|
RADIOLIB_ASSERT(state);
|
||||||
|
|
||||||
state = setGain(gain);
|
state = setGain(gain);
|
||||||
|
|
|
@ -145,6 +145,8 @@
|
||||||
#define HW_VENDOR meshtastic_HardwareModel_UNPHONE
|
#define HW_VENDOR meshtastic_HardwareModel_UNPHONE
|
||||||
#elif defined(WIPHONE)
|
#elif defined(WIPHONE)
|
||||||
#define HW_VENDOR meshtastic_HardwareModel_WIPHONE
|
#define HW_VENDOR meshtastic_HardwareModel_WIPHONE
|
||||||
|
#elif defined(RADIOMASTER_900_BANDIT_NANO)
|
||||||
|
#define HW_VENDOR meshtastic_HardwareModel_RADIOMASTER_900_BANDIT_NANO
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|
|
@ -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}
|
|
@ -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
|
Ładowanie…
Reference in New Issue