Clone
5
Features
Daniel Brunner edited this page 2020-10-27 11:52:11 +01:00

Available features are enabled per environment in platformio.ini

Some features don't make sense in most configs, as it depends on custom hardware.

For example feedc0de only has a bluetooth BMS, therefore only feedc0de_usb and feedc0de_ota compile in the bluetooth BMS code.

Some ESP32 are 4MB and don't have enough space for dualboot ota partitions, that's why we don't compile OTA code in then.

Mosfets

Adds the "Mosfets" menu to the main menu, shows checkboxes for 3 mosfets on peters_platine, can be used to turn on lights or sirens. 3 digital output pins are used.

  -DFEATURE_MOSFETS
  -DPINS_MOSFET0=18
  -DPINS_MOSFET1=19
  -DPINS_MOSFET2=21

Over the Air update

Allows flashing the firmware over WiFi, doesn't require any authentication, needs special partition table for dual-boot program partitions, also needs some setup of the environment in platformio.ini

    -DFEATURE_OTA

Don't forget to set the partition table correctly:

board_build.partitions = bobbycar.csv

Example setup for usb and OTA environments in platformio.ini

[feedc0de]
platform = ${common_env_data.platform}
board = ${common_env_data.board}
framework = ${common_env_data.framework}
platform_packages = ${common_env_data.platform_packages}
board_build.partitions = ${ota_common.board_build.partitions}
lib_deps = ${common_env_data.lib_deps}
lib_compat_mode = ${common_env_data.lib_compat_mode}
build_unflags = ${common_env_data.build_unflags}
build_flags =
  ${common_env_data.build_flags}
  ${ota_common.build_flags}
; feedc0de specific build flags removed from example

[env:feedc0de_usb]
platform = ${feedc0de.platform}
board = ${feedc0de.board}
framework = ${feedc0de.framework}
platform_packages = ${feedc0de.platform_packages}
board_build.partitions = ${feedc0de.board_build.partitions}
lib_deps = ${feedc0de.lib_deps}
lib_compat_mode = ${feedc0de.lib_compat_mode}
build_unflags = ${feedc0de.build_unflags}
build_flags = ${feedc0de.build_flags}

upload_speed = 921600
upload_port = /dev/ttyUSB*

[env:feedc0de_ota]
platform = ${feedc0de.platform}
board = ${feedc0de.board}
framework = ${feedc0de.framework}
platform_packages = ${feedc0de.platform_packages}
board_build.partitions = ${feedc0de.board_build.partitions}
lib_deps = ${feedc0de.lib_deps}
lib_compat_mode = ${feedc0de.lib_compat_mode}
build_unflags = ${feedc0de.build_unflags}
build_flags = ${feedc0de.build_flags}

Webserver

Enables a webserver on port 80, allows for full remote control of the onboard display.

  -DFEATURE_WEBSERVER

DPAD

Allows input with 4 buttons, up, down, back, confirm

  -DFEATURE_DPAD
  -DPINS_DPAD_UP=23
  -DPINS_DPAD_DOWN=32
  -DPINS_DPAD_CONFIRM=22
  -DPINS_DPAD_BACK=27

DPAD (3wires)

Allows input with 4 buttons, connected via 3 wires, up, down, back, confirm

  -DFEATURE_DPAD_3WIRESW
  -DPINS_DPAD_3WIRESW_OUT=32
  -DPINS_DPAD_3WIRESW_IN1=25
  -DPINS_DPAD_3WIRESW_IN2=26
  -DDPAD_3WIRESW_UP=3
  -DDPAD_3WIRESW_DOWN=2
  -DDPAD_3WIRESW_CONFIRM=1
  -DDPAD_3WIRESW_BACK=0
;  -DDPAD_3WIRESW_DEBUG

DPAD (5wires)

Allows input with 8 buttons, connected via 5 wires, 4 for dpad (up, down, back, confirm, same as in DPAD 3 wires) and additionally 4 presets.

  -DFEATURE_DPAD_5WIRESW
  -DPINS_DPAD_5WIRESW_OUT=32
  -DPINS_DPAD_5WIRESW_IN1=25
  -DPINS_DPAD_5WIRESW_IN2=26
  -DPINS_DPAD_5WIRESW_IN3=27
  -DPINS_DPAD_5WIRESW_IN4=21
  -DDPAD_5WIRESW_UP=4
  -DDPAD_5WIRESW_DOWN=3
  -DDPAD_5WIRESW_CONFIRM=7
  -DDPAD_5WIRESW_BACK=0
  -DDPAD_5WIRESW_PROFILE0=1
  -DDPAD_5WIRESW_PROFILE1=5
  -DDPAD_5WIRESW_PROFILE2=2
  -DDPAD_5WIRESW_PROFILE3=6
;  -DDPAD_5WIRESW_DEBUG

Gametrak

Adds a new driving mode to follow the owner, needs special gametrak hardware (3 potis), is in development and not finished yet.

  -DFEATURE_GAMETRAK
  -DPINS_GAMETRAKX=34
  -DPINS_GAMETRAKY=39
  -DPINS_GAMETRAKDIST=36
  -DDEFAULT_GAMETRAKXMIN=0
  -DDEFAULT_GAMETRAKXMAX=4095
  -DDEFAULT_GAMETRAKYMIN=0
  -DDEFAULT_GAMETRAKYMAX=4095
  -DDEFAULT_GAMETRAKDISTMIN=0
  -DDEFAULT_GAMETRAKDISTMAX=4095