Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,20 +39,23 @@ jobs:
python -m pip install --upgrade pip
pip install --upgrade platformio
- name: Run PlatformIO
run: pio run -e wemos_d1_mini32 -e wemos_d1_mini32_cob -e wemos_d1_mini32_uart -e wemos_d1_mini32_cob_uart -e lolin_wemos_s3_mini -e lolin_wemos_s3_mini_cob -e lolin_wemos_s3_mini_uart -e lolin_wemos_s3_mini_cob_uart
run: pio run -e wemos_d1_mini32 -e wemos_d1_mini32_cob -e wemos_d1_mini32_uart -e wemos_d1_mini32_cob_uart -e lolin_wemos_s3_mini -e lolin_wemos_s3_mini_cob -e lolin_wemos_s3_mini_uart -e lolin_wemos_s3_mini_cob_uart -e esp32c3_devkitm_1 -e esp32c3_devkitm_1_uart -e nodemcu-32s_uart
- name: Rename firmware files
run: |
mv .pio/build/lolin_wemos_s3_mini/firmware_lolin_wemos_s3_mini.bin .pio/build/lolin_wemos_s3_mini/firmware_lolin_wemos_s3_mini-v${{ github.ref_name }}.bin
mv .pio/build/lolin_wemos_s3_mini_cob/firmware_lolin_wemos_s3_mini_cob.bin .pio/build/lolin_wemos_s3_mini_cob/firmware_lolin_wemos_s3_mini-cob-v${{ github.ref_name }}.bin
mv .pio/build/lolin_wemos_s3_mini_uart/firmware_lolin_wemos_s3_mini_uart.bin .pio/build/lolin_wemos_s3_mini_uart/firmware_lolin_wemos_s3_mini-uart-v${{ github.ref_name }}.bin
mv .pio/build/lolin_wemos_s3_mini_cob_uart/firmware_lolin_wemos_s3_mini_cob_uart.bin .pio/build/lolin_wemos_s3_mini_cob_uart/firmware_lolin_wemos_s3_mini-cob_uart-v${{ github.ref_name }}.bin
mv .pio/build/esp32c3_devkitm_1/firmware_esp32c3_devkitm_1.bin .pio/build/esp32c3_devkitm_1/firmware_esp32c3_devkitm_1-v${{ github.ref_name }}.bin
mv .pio/build/esp32c3_devkitm_1_uart/firmware_esp32c3_devkitm_1_uart.bin .pio/build/esp32c3_devkitm_1_uart/firmware_esp32c3_devkitm_1_uart-v${{ github.ref_name }}.bin
mv .pio/build/nodemcu-32s_uart/firmware_nodemcu-32s_uart.bin .pio/build/nodemcu-32s_uart/firmware_nodemcu-32s_uart-v${{ github.ref_name }}.bin
mv .pio/build/wemos_d1_mini32/firmware_wemos_d1_mini32.bin .pio/build/wemos_d1_mini32/firmware_wemos_d1_mini32-v${{ github.ref_name }}.bin
mv .pio/build/wemos_d1_mini32_cob/firmware_wemos_d1_mini32_cob.bin .pio/build/wemos_d1_mini32_cob/firmware_wemos_d1_mini32-cob-v${{ github.ref_name }}.bin
mv .pio/build/wemos_d1_mini32_uart/firmware_wemos_d1_mini32_uart.bin .pio/build/wemos_d1_mini32_uart/firmware_wemos_d1_mini32-uart-v${{ github.ref_name }}.bin
mv .pio/build/wemos_d1_mini32_cob_uart/firmware_wemos_d1_mini32_cob_uart.bin .pio/build/wemos_d1_mini32_cob_uart/firmware_wemos_d1_mini32-cob_uart-v${{ github.ref_name }}.bin
- name: Calculate checksums
run: |
for file in $(ls .pio/build/wemos_d1_mini32*/*.bin .pio/build/lolin_wemos_s3_mini*/*.bin); do
for file in $(ls .pio/build/wemos_d1_mini32*/*.bin .pio/build/lolin_wemos_s3_mini*/*.bin .pio/build/esp32c3_devkitm_1*/*.bin .pio/build/nodemcu-32s_uart/*.bin); do
sha256sum $file | cut -d " " -f 1 > $file.sha256
done
- name: Release
Expand All @@ -66,6 +69,9 @@ jobs:
.pio/build/lolin_wemos_s3_mini_cob/firmware_lolin_wemos_s3_mini-cob-v${{ github.ref_name }}.bin
.pio/build/lolin_wemos_s3_mini_uart/firmware_lolin_wemos_s3_mini-uart-v${{ github.ref_name }}.bin
.pio/build/lolin_wemos_s3_mini_cob_uart/firmware_lolin_wemos_s3_mini-cob_uart-v${{ github.ref_name }}.bin
.pio/build/esp32c3_devkitm_1/firmware_esp32c3_devkitm_1-v${{ github.ref_name }}.bin
.pio/build/esp32c3_devkitm_1_uart/firmware_esp32c3_devkitm_1_uart-v${{ github.ref_name }}.bin
.pio/build/nodemcu-32s_uart/firmware_nodemcu-32s_uart-v${{ github.ref_name }}.bin
.pio/build/wemos_d1_mini32/firmware_wemos_d1_mini32-v${{ github.ref_name }}.bin
.pio/build/wemos_d1_mini32_cob/firmware_wemos_d1_mini32-cob-v${{ github.ref_name }}.bin
.pio/build/wemos_d1_mini32_uart/firmware_wemos_d1_mini32-uart-v${{ github.ref_name }}.bin
Expand All @@ -76,6 +82,9 @@ jobs:
.pio/build/lolin_wemos_s3_mini_cob/firmware_lolin_wemos_s3_mini-cob-v${{ github.ref_name }}.bin.sha256
.pio/build/lolin_wemos_s3_mini_uart/firmware_lolin_wemos_s3_mini-uart-v${{ github.ref_name }}.bin.sha256
.pio/build/lolin_wemos_s3_mini_cob_uart/firmware_lolin_wemos_s3_mini-cob_uart-v${{ github.ref_name }}.bin.sha256
.pio/build/esp32c3_devkitm_1/firmware_esp32c3_devkitm_1-v${{ github.ref_name }}.bin.sha256
.pio/build/esp32c3_devkitm_1_uart/firmware_esp32c3_devkitm_1_uart-v${{ github.ref_name }}.bin.sha256
.pio/build/nodemcu-32s_uart/firmware_nodemcu-32s_uart-v${{ github.ref_name }}.bin.sha256
.pio/build/wemos_d1_mini32/firmware_wemos_d1_mini32-v${{ github.ref_name }}.bin.sha256
.pio/build/wemos_d1_mini32_cob/firmware_wemos_d1_mini32-cob-v${{ github.ref_name }}.bin.sha256
.pio/build/wemos_d1_mini32_uart/firmware_wemos_d1_mini32-uart-v${{ github.ref_name }}.bin.sha256
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,7 @@ extensions.json
/CMakeListsPrivate.txt
rESCue.code-workspace
.vscode/settings.json

# Clangd related:
.cache
compile_commands.json
61 changes: 54 additions & 7 deletions platformio.ini
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,13 @@ default_envs = wemos_d1_mini32
;default_envs = esp32doit_devkit_v1
;default_envs = esp32doit_devkit_v1_uart
;default_envs = nodemcu-32s
;default_envs = nodemcu-32s_uart
;default_envs = avaspark-rgb
;default_envs = lolin_wemos_s3_mini
;default_envs = feather_esp32
;default_envs = m5stack-stamps3
;default_envs = esp32c3_devkitm_1
;default_envs = esp32c3_devkitm_1_uart

[common_env_data]
lib_deps_external =
Expand Down Expand Up @@ -46,8 +49,8 @@ build_flags=
-D LIGHT_BAR_PIN=2 ; DIN of WS28xx for battery indicator
-D VESC_RX_PIN=16 ; UART RX to Cheap Focer 2, connent to TX on CF2
-D VESC_TX_PIN=17 ; UART TX to Cheap Focer 2, connent to RX on CF2
-D CAN_TX_PIN=_26
-D CAN_RX_PIN=_27
-D CAN_TX_PIN=26
-D CAN_RX_PIN=27

[FEATHER-ESP32]
build_flags=
Expand All @@ -63,8 +66,8 @@ build_flags=
-D LIGHT_BAR_PIN=13 ; DIN of WS28xx for battery indicator
-D VESC_RX_PIN=7 ; UART RX to Cheap Focer 2, connent to TX on CF2
-D VESC_TX_PIN=8 ; UART TX to Cheap Focer 2, connent to RX on CF2
-D CAN_TX_PIN=_26
-D CAN_RX_PIN=_27
-D CAN_TX_PIN=26
-D CAN_RX_PIN=27

[ESP32-S3]
build_flags=
Expand All @@ -84,6 +87,22 @@ build_flags=
-D CAN_RX_PIN=17
-D ESP32S3

[ESP32-C3]
build_flags=
${common_env_data.build_flags}
-D PIN_NEOPIXEL=8 ; DIN of WS28xx stripe for front- / backlight, only needed if WS28xx is used
-D PIN_FORWARD=3 ; digital signal from Cheap Focer 2 if direction is forward
-D PIN_BACKWARD=4 ; digital signal from Cheap Focer 2 if direction is backward
-D PIN_BRAKE=5 ; digital signal from Cheap Focer 2 if electric motor brakes is on
-D BUZPIN=6 ; PIN for Piezo buzzer for acoustic signals (e.g. battery warning)
-D BATTERY_PIN=1 ; analog input for battery monitor, connected to voltage divider
-D LIGHT_BAR_PIN=7 ; DIN of WS28xx for battery indicator
-D VESC_RX_PIN=20 ; UART RX to Cheap Focer 2, connent to TX on CF2
-D VESC_TX_PIN=21 ; UART TX to Cheap Focer 2, connent to RX on CF2
-D CAN_TX_PIN=9
-D CAN_RX_PIN=10
-D VESC_UART_PORT=1 ; UART port for VESC

[AVASPARK-RGB]
build_flags=
${common_env_data.build_flags}
Expand All @@ -99,8 +118,8 @@ build_flags=
-D LIGHT_BAR_PIN=19 ; DIN of WS28xx for battery indicator
;-D VESC_RX_PIN=32 ; UART RX to Cheap Focer 2, connent to TX on CF2
;-D VESC_TX_PIN=33 ; UART TX to Cheap Focer 2, connent to RX on CF2
-D CAN_TX_PIN=_33
-D CAN_RX_PIN=_32
-D CAN_TX_PIN=33
-D CAN_RX_PIN=32
-D PIN_BOARD_LED=16 ; Onboard LED for avaspark-rgb
-D BMS_TX_PIN=23 ; Map UART RX to BMS TX Pin
-D BMS_ON_PIN=25 ; Map GPIO to trigger IRF540N 100v N-channel mosfet which emulates momentary button for OWIE BMS on (battery voltage on blue wire) to ground. Connect the Source pin of the MOSFET to ground. Connect the Drain pin to the BMS's wake-up wire. Connect the Gate pin to the microcontroller's TX pin.
Expand Down Expand Up @@ -176,6 +195,18 @@ build_flags =
extra_scripts = pre:change_firmware_name.py
custom_firmware_name = firmware_nodemcu-32s

[env:nodemcu-32s_uart]
platform = espressif32
board = nodemcu-32s
framework = arduino
monitor_speed = 115200
board_build.partitions = default.csv
lib_deps =
${common_env_data.lib_deps_external}
build_flags = ${ESP32.build_flags} -D LED_WS28xx
extra_scripts = pre:change_firmware_name.py
custom_firmware_name = firmware_nodemcu-32s_uart

[env:avaspark-rgb]
platform = espressif32
board = nodemcu-32s
Expand Down Expand Up @@ -242,4 +273,20 @@ monitor_filters =
esp32_exception_decoder
; build_type = debug
extra_scripts = pre:change_firmware_name.py
custom_firmware_name = firmware_m5stack_stamps3
custom_firmware_name = firmware_m5stack_stamps3

[env:esp32c3_devkitm_1]
platform = espressif32
board = esp32-c3-devkitm-1
framework = arduino
monitor_speed = 115200
board_build.partitions = default.csv
lib_deps = ${common_env_data.lib_deps_external}
build_flags = ${ESP32-C3.build_flags} -D LED_WS28xx -D CANBUS_ENABLED -D CANBUS_ONLY
extra_scripts = pre:change_firmware_name.py
custom_firmware_name = firmware_esp32c3_devkitm_1

[env:esp32c3_devkitm_1_uart]
extends = env:esp32c3_devkitm_1
build_flags = ${ESP32-C3.build_flags} -D LED_WS28xx
custom_firmware_name = firmware_esp32c3_devkitm_1_uart
17 changes: 5 additions & 12 deletions src/CanDevice.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,11 @@ static const char* LOG_TAG_CANDEVICE = "CanDevice";
#define CAN_RX_PIN 27
#endif //CAN_RX_PIN

//Macros to fix actually being able to map the CAN GPIO pins in platformio.ini instead of them being hard coded in init() for TWAI_GENERAL_CONFIG_DEFAULT();
#ifndef ESP32S3
#define GPIO_NUM_HELPER(x) GPIO_NUM##x
#define GPIO_NUM(x) GPIO_NUM_HELPER(x)
#define GPIO_CAN_TX_PIN GPIO_NUM(CAN_TX_PIN)
#define GPIO_CAN_RX_PIN GPIO_NUM(CAN_RX_PIN)
#else
#define GPIO_NUM_HELPER(x) GPIO_NUM_##x
#define GPIO_NUM_(x) GPIO_NUM_HELPER(x)
#define GPIO_CAN_TX_PIN GPIO_NUM_(CAN_TX_PIN)
#define GPIO_CAN_RX_PIN GPIO_NUM_(CAN_RX_PIN)
#endif
// Map numeric CAN pin defines (e.g. 9) to gpio_num_t enum constants (GPIO_NUM_9).
#define GPIO_NUM_HELPER(x) GPIO_NUM_##x
#define GPIO_NUM_(x) GPIO_NUM_HELPER(x)
#define GPIO_CAN_TX_PIN GPIO_NUM_(CAN_TX_PIN)
#define GPIO_CAN_RX_PIN GPIO_NUM_(CAN_RX_PIN)

class CanDevice {
private:
Expand Down
4 changes: 4 additions & 0 deletions src/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@

#define VESC_BAUD_RATE 115200 // BAUD rate of the CF2

#ifndef VESC_UART_PORT
#define VESC_UART_PORT 2
#endif

#define VESC_CAN_ID 25 //VESC-ID as configured in VESC as decimal

#endif //__CONFIG_H__
Expand Down
10 changes: 9 additions & 1 deletion src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,14 @@
const int mainBufSize = 128;
char mainBuf[mainBufSize];

#if defined(CANBUS_ENABLED) && !defined(CANBUS_ONLY)
#error "CANBUS_ENABLED and CANBUS_ONLY must both be defined for CANBUS mode. For UART mode, define neither."
#endif

#if defined(CANBUS_ONLY) && !defined(CANBUS_ENABLED)
#error "CANBUS_ENABLED and CANBUS_ONLY must both be defined for CANBUS mode. For UART mode, define neither."
#endif

#if defined(CANBUS_ENABLED) && defined(BMS_TX_PIN) && defined(BMS_ON_PIN)
#include "BMSController.h"
#endif
Expand All @@ -35,7 +43,7 @@ BLE_OTA_DFU ota_dfu_ble;
VescData vescData;

#ifndef CANBUS_ENABLED
HardwareSerial vesc(2);
HardwareSerial vesc(VESC_UART_PORT);
#endif

ILedController *ledController;
Expand Down