mirror of
https://github.com/meshtastic/firmware.git
synced 2025-12-22 18:52:30 +00:00
Initial support for the ThinkNode M5 (#7502)
* Initial support for the ThinkNode M5 * Update variants/esp32s3/ELECROW-ThinkNode-M5/platformio.ini Co-authored-by: Austin <vidplace7@gmail.com> * Cleanup variant.h for Elecrow Thinknode M5 * Properly detect battery voltage * Turn backlight off when screen sleeps --------- Co-authored-by: Ben Meadors <benmmeadors@gmail.com> Co-authored-by: Austin <vidplace7@gmail.com>
This commit is contained in:
28
variants/esp32s3/ELECROW-ThinkNode-M5/pins_arduino.h
Normal file
28
variants/esp32s3/ELECROW-ThinkNode-M5/pins_arduino.h
Normal file
@@ -0,0 +1,28 @@
|
||||
// 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
|
||||
|
||||
// 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 */
|
||||
21
variants/esp32s3/ELECROW-ThinkNode-M5/platformio.ini
Normal file
21
variants/esp32s3/ELECROW-ThinkNode-M5/platformio.ini
Normal file
@@ -0,0 +1,21 @@
|
||||
[env:thinknode_m5]
|
||||
extends = esp32s3_base
|
||||
board = ESP32-S3-WROOM-1-N4
|
||||
build_flags =
|
||||
${esp32s3_base.build_flags}
|
||||
-D ELECROW_ThinkNode_M5
|
||||
-I variants/esp32s3/ELECROW-ThinkNode-M5
|
||||
-DEINK_DISPLAY_MODEL=GxEPD2_154_D67
|
||||
-DEINK_WIDTH=200
|
||||
-DEINK_HEIGHT=200
|
||||
-DUSE_EINK_DYNAMICDISPLAY ; Enable Dynamic EInk
|
||||
-DEINK_LIMIT_FASTREFRESH=10 ; How many consecutive fast-refreshes are permitted //20
|
||||
-DEINK_LIMIT_RATE_BACKGROUND_SEC=10 ; Minimum interval between BACKGROUND updates //30
|
||||
-DEINK_LIMIT_RATE_RESPONSIVE_SEC=1 ; Minimum interval between RESPONSIVE updates
|
||||
; -DEINK_LIMIT_GHOSTING_PX=2000 ; (Optional) How much image ghosting is tolerated
|
||||
-DEINK_BACKGROUND_USES_FAST ; (Optional) Use FAST refresh for both BACKGROUND and RESPONSIVE, until a limit is reached.
|
||||
|
||||
lib_deps = ${esp32s3_base.lib_deps}
|
||||
https://github.com/meshtastic/GxEPD2/archive/1655054ba298e0e29fc2044741940f927f9c2a43.zip
|
||||
lewisxhe/PCF8563_Library@^1.0.1
|
||||
maxpromer/PCA9557-arduino @ ^1.0.0
|
||||
83
variants/esp32s3/ELECROW-ThinkNode-M5/variant.h
Normal file
83
variants/esp32s3/ELECROW-ThinkNode-M5/variant.h
Normal file
@@ -0,0 +1,83 @@
|
||||
#ifndef ELECROW_ThinkNode_M5_VAR
|
||||
#define ELECROW_ThinkNode_M5_VAR
|
||||
|
||||
#define UART_TX 43
|
||||
#define UART_RX 44
|
||||
|
||||
// LED
|
||||
// Both of these are on the GPIO expander
|
||||
#define PCA_LED_USER 1 // the Blue LED
|
||||
#define PCA_LED_POWER 3 // the Red LED? Seems to have hardware logic to blink when USB is plugged in.
|
||||
|
||||
// USB_CHECK
|
||||
#define EXT_PWR_DETECT 12
|
||||
#define BATTERY_PIN 8
|
||||
#define ADC_CHANNEL ADC1_GPIO8_CHANNEL
|
||||
|
||||
#define PIN_BUZZER 9
|
||||
|
||||
// Buttons
|
||||
|
||||
#define PIN_BUTTON2 14
|
||||
#define PIN_BUTTON1 21
|
||||
|
||||
// Wire Interfaces
|
||||
|
||||
#define I2C_SCL 1
|
||||
#define I2C_SDA 2
|
||||
|
||||
// GPS pins
|
||||
#define GPS_SWITH 10
|
||||
#define HAS_GPS 1
|
||||
#define GPS_L76K
|
||||
#define PIN_GPS_REINIT 13 // An output to reset L76K GPS. As per datasheet, low for > 100ms will reset the L76K
|
||||
|
||||
#define PIN_GPS_STANDBY 11 // An output to wake GPS, low means allow sleep, high means force wake
|
||||
|
||||
#define GPS_TX_PIN 20 // This is for bits going TOWARDS the CPU
|
||||
#define GPS_RX_PIN 19 // This is for bits going TOWARDS the GPS
|
||||
|
||||
#define GPS_THREAD_INTERVAL 50
|
||||
|
||||
#define PIN_SERIAL1_RX GPS_TX_PIN
|
||||
#define PIN_SERIAL1_TX GPS_RX_PIN
|
||||
|
||||
// PCF8563 RTC Module
|
||||
#define PCF8563_RTC 0x51
|
||||
|
||||
#define SX126X_CS 17
|
||||
#define LORA_SCK 16
|
||||
#define LORA_MOSI 15
|
||||
#define LORA_MISO 7
|
||||
#define SX126X_RESET 6
|
||||
#define SX126X_BUSY 5
|
||||
#define SX126X_DIO1 4
|
||||
#define SX126X_DIO2_AS_RF_SWITCH
|
||||
#define SX126X_DIO3_TCXO_VOLTAGE 3.3
|
||||
#define SX126X_POWER_EN 46
|
||||
#define SX126X_MAX_POWER 22 // SX126xInterface.cpp defaults to 22 if not defined, but here we define it for good practice
|
||||
#define USE_SX1262
|
||||
#define LORA_CS SX126X_CS // FIXME: for some reason both are used in /src
|
||||
#define LORA_DIO1 SX126X_DIO1
|
||||
|
||||
#define USE_EINK
|
||||
#define PIN_EINK_EN -1 // Note: this is really just backlight power
|
||||
#define PCA_PIN_EINK_EN 5 // This is the pin number on the GPIO expander
|
||||
#define PIN_EINK_CS 39
|
||||
#define PIN_EINK_BUSY 42
|
||||
#define PIN_EINK_DC 40
|
||||
#define PIN_EINK_RES 41
|
||||
#define PIN_EINK_SCLK 38
|
||||
#define PIN_EINK_MOSI 45 // also called SDI
|
||||
|
||||
// Controls power for all peripherals (eink + GPS + LoRa + Sensor)
|
||||
#define PIN_POWER_EN -1
|
||||
#define PCA_PIN_POWER_EN 4 // This is the pin number on the GPIO expander
|
||||
|
||||
#define PIN_SPI_MISO 7
|
||||
#define PIN_SPI_MOSI 15
|
||||
#define PIN_SPI_SCK 16
|
||||
|
||||
#define BUTTON_PIN PIN_BUTTON1
|
||||
#define BUTTON_PIN_ALT PIN_BUTTON2
|
||||
#endif
|
||||
Reference in New Issue
Block a user