mirror of
https://github.com/meshtastic/firmware.git
synced 2026-01-05 17:40:51 +00:00
Merge branch 'master' into apollo
This commit is contained in:
37
variants/CDEBYTE_EoRa-S3/pins_arduino.h
Normal file
37
variants/CDEBYTE_EoRa-S3/pins_arduino.h
Normal file
@@ -0,0 +1,37 @@
|
||||
// Need this file for ESP32-S3
|
||||
// No need to modify this file, changes to pins imported from variant.h
|
||||
// Most is similar to https://github.com/espressif/arduino-esp32/blob/master/variants/esp32s3/pins_arduino.h
|
||||
|
||||
#ifndef Pins_Arduino_h
|
||||
#define Pins_Arduino_h
|
||||
|
||||
#include <stdint.h>
|
||||
#include <variant.h>
|
||||
|
||||
#define USB_VID 0x303a
|
||||
#define USB_PID 0x1001
|
||||
|
||||
#define EXTERNAL_NUM_INTERRUPTS 46
|
||||
#define NUM_DIGITAL_PINS 48
|
||||
#define NUM_ANALOG_INPUTS 20
|
||||
|
||||
#define analogInputToDigitalPin(p) (((p) < 20) ? (analogChannelToDigitalPin(p)) : -1)
|
||||
#define digitalPinToInterrupt(p) \
|
||||
(((p) < 48) ? (p) : -1) // Maybe it should be <= 48 but this is from a trustworthy source so it is likely correct
|
||||
#define digitalPinHasPWM(p) (p < 46)
|
||||
|
||||
// Serial
|
||||
static const uint8_t TX = UART_TX;
|
||||
static const uint8_t RX = UART_RX;
|
||||
|
||||
// Default SPI will be mapped to Radio
|
||||
static const uint8_t SS = LORA_CS;
|
||||
static const uint8_t SCK = LORA_SCK;
|
||||
static const uint8_t MOSI = LORA_MOSI;
|
||||
static const uint8_t MISO = LORA_MISO;
|
||||
|
||||
// The default Wire will be mapped to PMU and RTC
|
||||
static const uint8_t SCL = I2C_SCL;
|
||||
static const uint8_t SDA = I2C_SDA;
|
||||
|
||||
#endif /* Pins_Arduino_h */
|
||||
8
variants/CDEBYTE_EoRa-S3/platformio.ini
Normal file
8
variants/CDEBYTE_EoRa-S3/platformio.ini
Normal file
@@ -0,0 +1,8 @@
|
||||
[env:CDEBYTE_EoRa-S3]
|
||||
extends = esp32s3_base
|
||||
board = CDEBYTE_EoRa-S3
|
||||
build_flags =
|
||||
${esp32s3_base.build_flags}
|
||||
-D CDEBYTE_EORA_S3
|
||||
-I variants/CDEBYTE_EoRa-S3
|
||||
-D GPS_POWER_TOGGLE
|
||||
63
variants/CDEBYTE_EoRa-S3/variant.h
Normal file
63
variants/CDEBYTE_EoRa-S3/variant.h
Normal file
@@ -0,0 +1,63 @@
|
||||
// LED - status indication
|
||||
#define LED_PIN 37
|
||||
|
||||
// Button - user interface
|
||||
#define BUTTON_PIN 0 // This is the BOOT button, and it has its own pull-up resistor
|
||||
|
||||
// SD card - TODO: test, currently untested, copied from T3S3 variant
|
||||
#define HAS_SDCARD
|
||||
#define SDCARD_USE_SPI1
|
||||
// TODO: rename this to make this SD-card specific
|
||||
#define SPI_CS 13
|
||||
#define SPI_SCK 14
|
||||
#define SPI_MOSI 11
|
||||
#define SPI_MISO 2
|
||||
// FIXME: there are two other SPI pins that are not defined here
|
||||
// Compatibility
|
||||
#define SDCARD_CS SPI_CS
|
||||
|
||||
// Battery voltage monitoring - TODO: test, currently untested, copied from T3S3 variant
|
||||
#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_MULTIPLIER \
|
||||
2.11 // ratio of voltage divider = 2.0 (R10=1M, R13=1M), plus some undervoltage correction - TODO: this was carried over from
|
||||
// the T3S3, test to see if the undervoltage correction is needed.
|
||||
|
||||
// Display - OLED connected via I2C by the default hardware configuration
|
||||
#define HAS_SCREEN 1
|
||||
#define USE_SSD1306
|
||||
#define I2C_SCL 17
|
||||
#define I2C_SDA 18
|
||||
|
||||
// UART - The 1mm JST SH connector closest to the USB-C port
|
||||
#define UART_TX 43
|
||||
#define UART_RX 44
|
||||
|
||||
// Peripheral I2C - The 1mm JST SH connector furthest from the USB-C port which follows Adafruit connection standard. There are no
|
||||
// pull-up resistors on these lines, the downstream device needs to include them. TODO: test, currently untested
|
||||
#define I2C_SCL1 21
|
||||
#define I2C_SDA1 10
|
||||
|
||||
// Radio
|
||||
#define USE_SX1262 // CDEBYTE EoRa-S3-900TB <- CDEBYTE E22-900MM22S <- Semtech SX1262
|
||||
#define USE_SX1268 // CDEBYTE EoRa-S3-400TB <- CDEBYTE E22-400MM22S <- Semtech SX1268
|
||||
|
||||
#define SX126X_CS 7
|
||||
#define LORA_SCK 5
|
||||
#define LORA_MOSI 6
|
||||
#define LORA_MISO 3
|
||||
#define SX126X_RESET 8
|
||||
#define SX126X_BUSY 34
|
||||
#define SX126X_DIO1 33
|
||||
|
||||
#define SX126X_DIO2_AS_RF_SWITCH // All switching is performed with DIO2, it is automatically inverted using circuitry.
|
||||
// CDEBYTE EoRa-S3 uses an XTAL, thus we do not need DIO3 as TCXO voltage reference. Don't define SX126X_DIO3_TCXO_VOLTAGE for
|
||||
// simplicity rather than defining it as 0.
|
||||
#define SX126X_MAX_POWER \
|
||||
22 // E22-900MM22S and E22-400MM22S have a raw SX1262 or SX1268 respsectively, they are rated to output up and including 22
|
||||
// dBm out of their SX126x IC.
|
||||
|
||||
// Compatibility with old variant.h file structure - FIXME: this should be done in the respective radio interface modules to clean
|
||||
// up all variants.
|
||||
#define LORA_CS SX126X_CS
|
||||
#define LORA_DIO1 SX126X_DIO1
|
||||
37
variants/EBYTE_ESP32-S3/pins_arduino.h
Normal file
37
variants/EBYTE_ESP32-S3/pins_arduino.h
Normal file
@@ -0,0 +1,37 @@
|
||||
// Need this file for ESP32-S3
|
||||
// No need to modify this file, changes to pins imported from variant.h
|
||||
// Most is similar to https://github.com/espressif/arduino-esp32/blob/master/variants/esp32s3/pins_arduino.h
|
||||
|
||||
#ifndef Pins_Arduino_h
|
||||
#define Pins_Arduino_h
|
||||
|
||||
#include <stdint.h>
|
||||
#include <variant.h>
|
||||
|
||||
#define USB_VID 0x303a
|
||||
#define USB_PID 0x1001
|
||||
|
||||
#define EXTERNAL_NUM_INTERRUPTS 46
|
||||
#define NUM_DIGITAL_PINS 48
|
||||
#define NUM_ANALOG_INPUTS 20
|
||||
|
||||
#define analogInputToDigitalPin(p) (((p) < 20) ? (analogChannelToDigitalPin(p)) : -1)
|
||||
#define digitalPinToInterrupt(p) \
|
||||
(((p) < 48) ? (p) : -1) // Maybe it should be <= 48 but this is from a trustworthy source so it is likely correct
|
||||
#define digitalPinHasPWM(p) (p < 46)
|
||||
|
||||
// Serial
|
||||
static const uint8_t TX = UART_TX;
|
||||
static const uint8_t RX = UART_RX;
|
||||
|
||||
// Default SPI will be mapped to Radio
|
||||
static const uint8_t SS = LORA_CS;
|
||||
static const uint8_t SCK = LORA_SCK;
|
||||
static const uint8_t MOSI = LORA_MOSI;
|
||||
static const uint8_t MISO = LORA_MISO;
|
||||
|
||||
// The default Wire will be mapped to PMU and RTC
|
||||
static const uint8_t SCL = I2C_SCL;
|
||||
static const uint8_t SDA = I2C_SDA;
|
||||
|
||||
#endif /* Pins_Arduino_h */
|
||||
9
variants/EBYTE_ESP32-S3/platformio.ini
Normal file
9
variants/EBYTE_ESP32-S3/platformio.ini
Normal file
@@ -0,0 +1,9 @@
|
||||
[env:EBYTE_ESP32-S3]
|
||||
extends = esp32s3_base
|
||||
; board assumes the lowest spec WROOM module: 4 MB (Quad SPI) Flash, No PSRAM
|
||||
board = ESP32-S3-WROOM-1-N4
|
||||
board_level = extra
|
||||
build_flags =
|
||||
${esp32s3_base.build_flags}
|
||||
-D EBYTE_ESP32_S3
|
||||
-I variants/EBYTE_ESP32-S3
|
||||
193
variants/EBYTE_ESP32-S3/variant.h
Normal file
193
variants/EBYTE_ESP32-S3/variant.h
Normal file
@@ -0,0 +1,193 @@
|
||||
// Supporting information: https://github.com/S5NC/EBYTE_ESP32-S3/
|
||||
|
||||
// Originally developed for E22-900M30S with ESP32-S3-WROOM-1-N4
|
||||
// NOTE: Uses ESP32-S3-WROOM-1-N4.json in boards folder (via platformio.ini board field), assumes 4 MB (quad SPI) flash, no PSRAM
|
||||
|
||||
// FIXME: implement SX12 module type autodetection and have setup for each case (add E32 support)
|
||||
// E32 has same pinout except having extra pins. I assume that the GND on it is connected internally to other GNDs so it is not a
|
||||
// problem to NC the extra GND pins.
|
||||
|
||||
// For each EBYTE module pin in this section, provide the pin number of the ESP32-S3 you connected it to
|
||||
// The ESP32-S3 is great because YOU CAN USE PRACTICALLY ANY PINS for the connections, but avoid some pins (such as on the WROOM
|
||||
// modules the following): strapping pins (except 0 as a user button input as it already has a pulldown resistor in typical
|
||||
// application schematic) (0, 3, 45, 46), USB-reserved (19, 20), and pins which aren't present on the WROOM-2 module for
|
||||
// compatiblity as it uses octal SPI, or are likely connected internally in either WROOM version (26-37), and avoid pins whose
|
||||
// voltages are set by the SPI voltage (47, 48), and pins that don't exist (22-25) You can ALSO set the SPI pins (SX126X_CS,
|
||||
// SX126X_SCK, SX126X_MISO, SX126X_MOSI) to any pin with the ESP32-S3 due to \ GPIO Matrix / IO MUX / RTC IO MUX \, and also the
|
||||
// serial pins, but this isn't recommended for Serial0 as the WROOM modules have a 499 Ohm resistor on U0TXD (to reduce harmonics
|
||||
// but also acting as a sort of protection)
|
||||
|
||||
// We have many free pins on the ESP32-S3-WROOM-X-Y module, perhaps it is best to use one of its pins to control TXEN, and use
|
||||
// DIO2 as an extra interrupt, but right now Meshtastic does not benefit from having another interrupt pin available.
|
||||
|
||||
// Adding two 0-ohm links on your PCB design so that you can choose between the two modes for controlling the E22's TXEN would
|
||||
// enable future software to make the most of an extra available interrupt pin
|
||||
|
||||
// Possible improvement: can add extremely low resistance MOSFET to physically toggle power to E22 module when in full sleep (not
|
||||
// waiting for interrupt)?
|
||||
|
||||
// PA stands for Power Amplifier, used when transmitting to increase output power
|
||||
// LNA stands for Low Noise Amplifier, used when \ listening for / receiving \ data to increase sensitivity
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// Have custom connections or functionality? Configure them in this section //
|
||||
// //
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#define SX126X_CS 14 // EBYTE module's NSS pin // FIXME: rename to SX126X_SS
|
||||
#define LORA_SCK 21 // EBYTE module's SCK pin
|
||||
#define LORA_MOSI 38 // EBYTE module's MOSI pin
|
||||
#define LORA_MISO 39 // EBYTE module's MISO pin
|
||||
#define SX126X_RESET 40 // EBYTE module's NRST pin
|
||||
#define SX126X_BUSY 41 // EBYTE module's BUSY pin
|
||||
#define SX126X_DIO1 42 // EBYTE module's DIO1 pin
|
||||
// We don't define a pin for SX126X_DIO2 as Meshtastic doesn't use it as an interrupt output, so it is never connected to an MCU
|
||||
// pin! Also E22 module datasheets say not to connect it to an MCU pin.
|
||||
// We don't define a pin for SX126X_DIO3 as Meshtastic doesn't use it as an interrupt output, so it is never connected to an MCU
|
||||
// pin! Also E22 module datasheets say to use it as the TCXO's reference voltage.
|
||||
// E32 module (which uses SX1276) may not have ability to set TCXO voltage using a DIO pin.
|
||||
|
||||
// The radio module needs to be told whether to enable RX mode or TX mode. Each radio module takes different actions based on
|
||||
// these values, but generally the path from the antenna to SX1262 is changed from signal output to signal input. Also, if there
|
||||
// are LNAs (Low-Noise Amplifiers) or PAs (Power Amplifiers) in the output or input paths, their power is also controlled by
|
||||
// these pins. You should never have both TXEN and RXEN set high, this can cause problems for some radio modules, and is
|
||||
// commonly referred to as 'undefined behaviour' in datasheets. For the SX1262, you shouldn't connect DIO2 to the MCU. DIO2 is
|
||||
// an output only, and can be controlled via SPI instructions, the use for this is to save an MCU pin by using the DIO2 pin to
|
||||
// control the RF switching mode.
|
||||
|
||||
// Choose ONLY ONE option from below, comment in/out the '/*'s and '*/'s
|
||||
// SX126X_TXEN is the E22's [SX1262's] TXEN pin, SX126X_RXEN is the E22's [SX1262's] RXEN pin
|
||||
|
||||
// Option 1: E22's TXEN pin connected to E22's DIO2 pin, E22's RXEN pin connected to NEGATED output of E22's DIO2 pin (more
|
||||
// expensive option hardware-wise, is the 'most proper' way, removes need for routing one/two traces from MCU to RF switching
|
||||
// pins), however you can't have E22 in low-power 'sleep' mode (TXEN and RXEN both low cannot be achieved this this option).
|
||||
/*
|
||||
#define SX126X_DIO2_AS_RF_SWITCH
|
||||
#define SX126X_TXEN RADIOLIB_NC
|
||||
#define SX126X_RXEN RADIOLIB_NC
|
||||
*/
|
||||
|
||||
// Option 2: E22's TXEN pin connected to E22's DIO2 pin, E22's RXEN pin connected to MCU pin (cheaper option hardware-wise,
|
||||
// removes need for routing another trace from MCU to an RF switching pin).
|
||||
// /*
|
||||
#define SX126X_DIO2_AS_RF_SWITCH
|
||||
#define SX126X_TXEN RADIOLIB_NC
|
||||
#define SX126X_RXEN 10
|
||||
// */
|
||||
|
||||
// Option 3: E22's TXEN pin connected to MCU pin, E22's RXEN pin connected to MCU pin (cheaper option hardware-wise, allows for
|
||||
// ramping up PA before transmission (add/expand on feature yourself in RadioLib) if PA takes a while to stabilise)
|
||||
// Don't define DIO2_AS_RF_SWITCH because we only use DIO2 or an MCU pin mutually exclusively to connect to E22's TXEN (to prevent
|
||||
// a short if they are both connected at the same time (suboptimal PCB design) and there's a slight non-neglibible delay and/or
|
||||
// voltage difference between DIO2 and TXEN). Can use DIO2 as an IRQ (but not in Meshtastic at the moment).
|
||||
/*
|
||||
#define SX126X_TXEN 9
|
||||
#define SX126X_RXEN 10
|
||||
*/
|
||||
|
||||
// (NOT RECOMMENDED, if need to ramp up PA before transmission, better to use option 3)
|
||||
// Option 4: E22's TXEN pin connected to MCU pin, E22's RXEN pin connected to NEGATED output of E22's DIO2 pin (more expensive
|
||||
// option hardware-wise, allows for ramping up PA before transmission (add/expand on feature yourself in RadioLib) if PA takes
|
||||
// a while to stabilise, removes need for routing another trace from MCU to an RF switching pin, however may mean if in
|
||||
// RadioLib you don't tell DIO2 to go high to indicate transmission (so the negated output goes to RXEN to turn the LNA off)
|
||||
// then you may end up enabling E22's TXEN and RXEN pins at the same time whilst you ramp up the PA which is not ideal,
|
||||
// changing DIO2's switching advance in RadioLib may not even be possible, may be baked into the SX126x).
|
||||
/*
|
||||
#define SX126X_DIO2_AS_RF_SWITCH
|
||||
#define SX126X_TXEN 9
|
||||
#define SX126X_RXEN RADIOLIB_NC
|
||||
*/
|
||||
|
||||
// Status
|
||||
#define LED_PIN 1
|
||||
#define LED_INVERTED 0
|
||||
// External notification
|
||||
// FIXME: Check if EXT_NOTIFY_OUT actualy has any effect and removes the need for setting the external notication pin in the
|
||||
// app/preferences
|
||||
#define EXT_NOTIFY_OUT 2 // The GPIO pin that acts as the external notification output (here we connect an LED to it)
|
||||
// Buzzer
|
||||
#define PIN_BUZZER 11
|
||||
// Buttons
|
||||
#define BUTTON_PIN 0 // Use the BOOT button as the user button
|
||||
// I2C
|
||||
#define I2C_SCL 18
|
||||
#define I2C_SDA 8
|
||||
// UART
|
||||
#define UART_TX 43
|
||||
#define UART_RX 44
|
||||
|
||||
// Power
|
||||
// Outputting 22dBm from SX1262 results in ~30dBm E22-900M30S output (module only uses last stage of the YP2233W PA)
|
||||
// Respect local regulations! If your E22-900M30S outputs the advertised 30 dBm and you use a 6 dBi antenna, you are at the
|
||||
// equivalent of 36 EIRP (Effective Isotropic Radiated Power), which in this case is the limit for non-HAM users in the US (4W
|
||||
// EIRP, at SPECIFIC frequencies).
|
||||
// In the EU (and UK), as of now, you are allowed 27 dBm ERP which is 29.15 EIRP.
|
||||
// https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32022D0180
|
||||
// https://www.legislation.gov.uk/uksi/1999/930/schedule/6/made
|
||||
// To respect the 29.15 dBm EIRP (at SPECIFIC frequencies, others are lower) EU limit with a 2.5 dBi gain antenna, consulting
|
||||
// https://github.com/S5NC/EBYTE_ESP32-S3/blob/main/power%20testing.txt, assuming 0.1 dBm insertion loss, output 20 dBm from the
|
||||
// E22-900M30S's SX1262. It is worth noting that if you are in this situation and don't have a HAM license, you may be better off
|
||||
// with a lower gain antenna, and output the difference as a higher total power input into the antenna, as your EIRP would be the
|
||||
// same, but you would get a wider angle of coverage. Also take insertion loss and possibly VSWR into account
|
||||
// (https://www.everythingrf.com/tech-resources/vswr). Please check regulations yourself and check airtime, usage (for example
|
||||
// whether you are airborne), frequency, and power laws.
|
||||
#define SX126X_MAX_POWER 22 // SX126xInterface.cpp defaults to 22 if not defined, but here we define it for good practice
|
||||
|
||||
// Display
|
||||
// FIXME: change behavior in src to default to not having screen if is undefined
|
||||
// FIXME: remove 0/1 option for HAS_SCREEN in src, change to being defined or not
|
||||
// FIXME: check if it actually causes a crash when not specifiying that a display isn't present
|
||||
#define HAS_SCREEN 0 // Assume no screen present by default to prevent crash...
|
||||
|
||||
// GPS
|
||||
// FIXME: unsure what to define HAS_GPS as if GPS isn't always present
|
||||
#define HAS_GPS 1 // Don't need to set this to 0 to prevent a crash as it doesn't crash if GPS not found, will probe by default
|
||||
#define PIN_GPS_EN 15
|
||||
#define GPS_EN_ACTIVE 1
|
||||
#define GPS_TX_PIN 16
|
||||
#define GPS_RX_PIN 17
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// You should have no need to modify the code below, nor in pins_arduino.h //
|
||||
// //
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#define USE_SX1262 // E22-900M30S, E22-900M22S, and E22-900MM22S (not E220!) use SX1262
|
||||
#define USE_SX1268 // E22-400M30S, E22-400M33S, E22-400M22S, and E22-400MM22S use SX1268
|
||||
|
||||
// The below isn't needed as we directly define SX126X_TXEN and SX126X_RXEN instead of using proxies E22_TXEN and E22_RXEN
|
||||
/*
|
||||
// FALLBACK: If somehow E22_TXEN isn't defined or clearly isn't a valid pin number, set it to RADIOLIB_NC to avoid SX126X_TXEN
|
||||
being defined but having no value #if (!defined(E22_TXEN) || !(0 <= E22_TXEN && E22_TXEN <= 48)) #define E22_TXEN RADIOLIB_NC
|
||||
#endif
|
||||
// FALLBACK: If somehow E22_RXEN isn't defined or clearly isn't a valid pin number, set it to RADIOLIB_NC to avoid SX126X_RXEN
|
||||
being defined but having no value #if (!defined(E22_RXEN) || !(0 <= E22_RXEN && E22_RXEN <= 48)) #define E22_RXEN RADIOLIB_NC
|
||||
#endif
|
||||
#define SX126X_TXEN E22_TXEN
|
||||
#define SX126X_RXEN E22_RXEN
|
||||
*/
|
||||
|
||||
// E22 series TCXO voltage is 1.8V per https://www.ebyte.com/en/pdf-down.aspx?id=781 (source
|
||||
// https://github.com/jgromes/RadioLib/issues/12#issuecomment-520695575), so set it as such
|
||||
#define SX126X_DIO3_TCXO_VOLTAGE 1.8
|
||||
|
||||
#define LORA_CS SX126X_CS // FIXME: for some reason both are used in /src
|
||||
|
||||
// Many of the below values would only be used if USE_RF95 was defined, but it's not as we aren't actually using an RF95, just
|
||||
// that the 4 pins above are named like it If they aren't used they don't need to be defined and doing so cause confusion to those
|
||||
// adapting this file LORA_RESET value is never used in src (as we are not using RF95), so no need to define LORA_DIO0 is not used
|
||||
// in src (as we are not using RF95) as SX1262 does not have it per SX1262 datasheet, so no need to define
|
||||
// FIXME: confirm that the linked lines below are actually only called when using the SX126x or SX128x and no other modules
|
||||
// then use SX126X_DIO1 and SX128X_DIO1 respectively for that purpose, removing the need for RF95-style LORA_* definitions when
|
||||
// the RF95 isn't used
|
||||
#define LORA_DIO1 \
|
||||
SX126X_DIO1 // The old name is used in
|
||||
// https://github.com/meshtastic/firmware/blob/7eff5e7bcb2084499b723c5e3846c15ee089e36d/src/sleep.cpp#L298, so
|
||||
// must also define the old name
|
||||
// LORA_DIO2 value is never used in src (as we are not using RF95), so no need to define, and if DIO2_AS_RF_SWITCH is set then it
|
||||
// cannot serve any extra function even if requested to LORA_DIO3 value is never used in src (as we are not using RF95), so no
|
||||
// need to define, and DIO3_AS_TCXO_AT_1V8 is set so it cannot serve any extra function even if requested to (from 13.3.2.1
|
||||
// DioxMask in SX1262 datasheet: Note that if DIO2 or DIO3 are used to control the RF Switch or the TCXO, the IRQ will not be
|
||||
// generated even if it is mapped to the pins.)
|
||||
@@ -14,6 +14,8 @@ build_flags =
|
||||
-D EINK_LIMIT_RATE_RESPONSIVE_SEC=1 ; Minimum interval between RESPONSIVE updates
|
||||
-D EINK_LIMIT_GHOSTING_PX=2000 ; (Optional) How much image ghosting is tolerated
|
||||
-D EINK_BACKGROUND_USES_FAST ; (Optional) Use FAST refresh for both BACKGROUND and RESPONSIVE, until a limit is reached.
|
||||
-D EINK_HASQUIRK_GHOSTING ; Display model is identified as "prone to ghosting"
|
||||
-D EINK_HASQUIRK_WEAKFASTREFRESH ; Pixels set with fast-refresh are easy to clear, disrupted by sunlight
|
||||
lib_deps =
|
||||
${esp32s3_base.lib_deps}
|
||||
https://github.com/meshtastic/GxEPD2#55f618961db45a23eff0233546430f1e5a80f63a
|
||||
|
||||
@@ -13,7 +13,8 @@ build_flags =
|
||||
-D EINK_LIMIT_RATE_BACKGROUND_SEC=30 ; Minimum interval between BACKGROUND updates
|
||||
-D EINK_LIMIT_RATE_RESPONSIVE_SEC=1 ; Minimum interval between RESPONSIVE updates
|
||||
-D EINK_LIMIT_GHOSTING_PX=2000 ; (Optional) How much image ghosting is tolerated
|
||||
;-D EINK_BACKGROUND_USES_FAST ; (Optional) Use FAST refresh for both BACKGROUND and RESPONSIVE, until a limit is reached.
|
||||
;-D EINK_BACKGROUND_USES_FAST ; (Optional) Use FAST refresh for both BACKGROUND and RESPONSIVE, until a limit is reached.
|
||||
-D EINK_HASQUIRK_VICIOUSFASTREFRESH ; Identify that pixels drawn by fast-refresh are harder to clear
|
||||
lib_deps =
|
||||
${esp32s3_base.lib_deps}
|
||||
https://github.com/meshtastic/GxEPD2#55f618961db45a23eff0233546430f1e5a80f63a
|
||||
|
||||
@@ -2,3 +2,4 @@
|
||||
#define CANNED_MESSAGE_MODULE_ENABLE 1
|
||||
#define HAS_GPS 1
|
||||
#define MAX_NUM_NODES settingsMap[maxnodes]
|
||||
#define RADIOLIB_GODMODE 1
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#define BATTERY_PIN 26
|
||||
#define BATTERY_SENSE_RESOLUTION_BITS ADC_RESOLUTION
|
||||
// ratio of voltage divider = 3.0 (R17=200k, R18=100k)
|
||||
#define ADC_MULTIPLIER 3.1 // 3.0 + a bit for being optimistic
|
||||
#define ADC_MULTIPLIER 1.84
|
||||
|
||||
#define DETECTION_SENSOR_EN 28
|
||||
|
||||
@@ -47,4 +47,4 @@
|
||||
// DIO2 controlls an antenna switch and the TCXO voltage is controlled by DIO3
|
||||
#define SX126X_DIO2_AS_RF_SWITCH
|
||||
#define SX126X_DIO3_TCXO_VOLTAGE 1.8
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -15,7 +15,7 @@ debug_init_cmds =
|
||||
# add our variants files to the include and src paths
|
||||
build_flags = ${rp2040_base.build_flags}
|
||||
-DRPI_PICO
|
||||
-Ivariants/rpipico_slowclock
|
||||
-Ivariants/rpipico-slowclock
|
||||
-DDEBUG_RP2040_PORT=Serial2
|
||||
-DHW_SPI1_DEVICE
|
||||
-L "${platformio.libdeps_dir}/${this.__env__}/BSEC2 Software Library/src/cortex-m0plus"
|
||||
@@ -25,4 +25,4 @@ lib_deps =
|
||||
${rp2040_base.lib_deps}
|
||||
debug_build_flags = ${rp2040_base.build_flags}
|
||||
-g
|
||||
-DNO_USB
|
||||
-DNO_USB
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
#define EXT_NOTIFY_OUT 22
|
||||
#define BUTTON_PIN 17
|
||||
|
||||
#define LED_PIN LED_BUILTIN
|
||||
|
||||
#define BATTERY_PIN 26
|
||||
// ratio of voltage divider = 3.0 (R17=200k, R18=100k)
|
||||
#define ADC_MULTIPLIER 3.1 // 3.0 + a bit for being optimistic
|
||||
@@ -51,4 +53,4 @@
|
||||
#define SX126X_RESET LORA_RESET
|
||||
#define SX126X_DIO2_AS_RF_SWITCH
|
||||
#define SX126X_DIO3_TCXO_VOLTAGE 1.8
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
#define TOUCH_I2C_PORT 0
|
||||
#define TOUCH_SLAVE_ADDRESS 0x5D // GT911
|
||||
|
||||
#define SLEEP_TIME 120
|
||||
|
||||
#define BUTTON_PIN 0
|
||||
// #define BUTTON_NEED_PULLUP
|
||||
|
||||
|
||||
@@ -3,8 +3,6 @@
|
||||
extends = esp32s3_base
|
||||
board = t-watch-s3
|
||||
upload_protocol = esptool
|
||||
upload_speed = 115200
|
||||
upload_port = /dev/tty.usbmodem3485188D636C1
|
||||
|
||||
build_flags = ${esp32_base.build_flags}
|
||||
-DT_WATCH_S3
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
#define TOUCH_I2C_PORT 1
|
||||
#define TOUCH_SLAVE_ADDRESS 0x38
|
||||
|
||||
#define SLEEP_TIME 180
|
||||
|
||||
#define I2C_SDA1 39 // Used for capacitive touch
|
||||
#define I2C_SCL1 40 // Used for capacitive touch
|
||||
|
||||
|
||||
30
variants/unphone/platformio.ini
Normal file
30
variants/unphone/platformio.ini
Normal file
@@ -0,0 +1,30 @@
|
||||
; platformio.ini for unphone meshtastic
|
||||
|
||||
[env:unphone]
|
||||
|
||||
extends = esp32s3_base
|
||||
board_level = extra
|
||||
board = unphone9
|
||||
upload_speed = 921600
|
||||
monitor_speed = 115200
|
||||
monitor_filters = esp32_exception_decoder
|
||||
|
||||
build_unflags =
|
||||
-D ARDUINO_USB_MODE
|
||||
|
||||
build_flags = ${esp32_base.build_flags}
|
||||
-D UNPHONE
|
||||
-I variants/unphone
|
||||
-D ARDUINO_USB_MODE=0
|
||||
-D UNPHONE_ACCEL=0
|
||||
-D UNPHONE_TOUCHS=0
|
||||
-D UNPHONE_SDCARD=0
|
||||
-D UNPHONE_UI0=0
|
||||
-D UNPHONE_LORA=0
|
||||
-D UNPHONE_FACTORY_MODE=0
|
||||
|
||||
build_src_filter = ${esp32_base.build_src_filter} +<../variants/unphone>
|
||||
|
||||
lib_deps = ${esp32s3_base.lib_deps}
|
||||
lovyan03/LovyanGFX @ ^1.1.8
|
||||
https://gitlab.com/hamishcunningham/unphonelibrary#meshtastic @ ^9.0.0
|
||||
20
variants/unphone/variant.cpp
Normal file
20
variants/unphone/variant.cpp
Normal file
@@ -0,0 +1,20 @@
|
||||
// meshtastic/firmware/variants/unphone/variant.cpp
|
||||
|
||||
#include "unPhone.h"
|
||||
unPhone unphone = unPhone("meshtastic_unphone");
|
||||
|
||||
void initVariant()
|
||||
{
|
||||
unphone.begin(); // initialise hardware etc.
|
||||
unphone.store(unphone.buildTime);
|
||||
unphone.printWakeupReason(); // what woke us up? (stored, not printed :|)
|
||||
unphone.checkPowerSwitch(); // if power switch is off, shutdown
|
||||
unphone.backlight(false); // setup backlight and make sure its off
|
||||
|
||||
for (int i = 0; i < 3; i++) { // buzz a bit
|
||||
unphone.vibe(true);
|
||||
delay(150);
|
||||
unphone.vibe(false);
|
||||
delay(150);
|
||||
}
|
||||
}
|
||||
71
variants/unphone/variant.h
Normal file
71
variants/unphone/variant.h
Normal file
@@ -0,0 +1,71 @@
|
||||
// meshtastic/firmware/variants/unphone/variant.h
|
||||
|
||||
#pragma once
|
||||
|
||||
#define SPI_SCK 39
|
||||
#define SPI_MOSI 40
|
||||
#define SPI_MISO 41
|
||||
|
||||
// We use the RFM95W LoRa module
|
||||
#define USE_RF95
|
||||
#define LORA_SCK SPI_SCK
|
||||
#define LORA_MOSI SPI_MOSI
|
||||
#define LORA_MISO SPI_MISO
|
||||
#define LORA_CS 44
|
||||
#define LORA_DIO0 10 // AKA LORA_IRQ
|
||||
#define LORA_RESET 42
|
||||
#define LORA_DIO1 11
|
||||
#define LORA_DIO2 RADIOLIB_NC // Not really used
|
||||
|
||||
// HX8357 TFT LCD
|
||||
#define HX8357_CS 48
|
||||
#define HX8357_RS 47 // AKA DC
|
||||
#define HX8357_RESET 46
|
||||
#define HX8357_SCK SPI_SCK
|
||||
#define HX8357_MOSI SPI_MOSI
|
||||
#define HX8357_MISO SPI_MISO
|
||||
#define HX8357_BUSY -1
|
||||
#define HX8357_SPI_HOST SPI2_HOST
|
||||
#define SPI_FREQUENCY 40000000
|
||||
#define SPI_READ_FREQUENCY 16000000
|
||||
#define TFT_HEIGHT 480
|
||||
#define TFT_WIDTH 320
|
||||
#define TFT_OFFSET_X 0
|
||||
#define TFT_OFFSET_Y 0
|
||||
#define TFT_OFFSET_ROTATION 6 // unPhone's screen wired unusually, 0 typical
|
||||
#define TFT_INVERT false
|
||||
#define SCREEN_ROTATE true
|
||||
#define SCREEN_TRANSITION_FRAMERATE 5
|
||||
|
||||
#define HAS_TOUCHSCREEN 1
|
||||
#define USE_XPT2046 1
|
||||
#define TOUCH_CS 38
|
||||
|
||||
#define HAS_GPS \
|
||||
0 // the unphone doesn't have a gps module by default (though
|
||||
// GPS featherwing -- https://www.adafruit.com/product/3133
|
||||
// -- can be added)
|
||||
#undef GPS_RX_PIN
|
||||
#undef GPS_TX_PIN
|
||||
|
||||
#define HAS_SDCARD 1
|
||||
#define SDCARD_CS 43
|
||||
|
||||
#define LED_PIN 13 // the red part of the RGB LED
|
||||
#define LED_INVERTED 1
|
||||
|
||||
#define BUTTON_PIN 21 // Button 3 - square - top button in landscape mode
|
||||
#define BUTTON_NEED_PULLUP // we do need a helping hand up
|
||||
#define BUTTON_PIN_ALT 45 // Button 1 - triangle - bottom button in landscape mode
|
||||
|
||||
#define I2C_SDA 3 // I2C pins for this board
|
||||
#define I2C_SCL 4
|
||||
|
||||
#define LSM6DS3_WAKE_THRESH 5 // higher values reduce the sensitivity of the wake threshold
|
||||
|
||||
// ratio of voltage divider = 3.20 (R1=100k, R2=220k)
|
||||
// #define ADC_MULTIPLIER 3.2
|
||||
|
||||
// #define BATTERY_PIN 13 // battery V measurement pin; vbat divider is here
|
||||
// #define ADC_CHANNEL ADC2_GPIO13_CHANNEL
|
||||
// #define BAT_MEASURE_ADC_UNIT 2
|
||||
Reference in New Issue
Block a user