; Flipdot display - one PlatformIO project, two firmware targets. ; ; nano Arduino Nano that drives the Brose flipdot panels directly (USB upload) ; nano_ota Same Nano firmware, flashed over WiFi through the ESP32 ; esp32 ESP32 "brain" (WiFi, NTP clock, Home Assistant) - OTA upload ; esp32_usb Same ESP32 firmware, flashed over USB (first flash / recovery) ; native Unit tests for the Nano firmware, run on the PC (needs gcc on PATH) ; ; Build all: pio run ; Build one: pio run -e nano ; Upload one: pio run -e nano -t upload ; Serial monitor: pio device monitor -e nano ; Run tests: pio test -e native ; ; https://docs.platformio.org/page/projectconf.html [platformio] default_envs = nano, esp32 [env] framework = arduino monitor_speed = 115200 lib_deps = adafruit/Adafruit GFX Library@^1.10.12 ; Tests only run in the native environment, never on the boards test_ignore = * ; --------------------------------------------------------------------------- ; Arduino Nano - display driver ; --------------------------------------------------------------------------- [env:nano] platform = atmelavr board = nanoatmega328 board_build.mcu = atmega328p board_build.f_cpu = 16000000L build_src_filter = + ; Uncomment when using the PLCC adapter board (different pinout, see lib/BROSE9323/BROSE9323.h) ; build_flags = -D FLIPDOT_PLCC_ADAPTER upload_port = COM10 monitor_port = COM10 ; Same Nano firmware, flashed over WiFi through the ESP32 (see README.md). ; Needs the Nano TX -> ESP32 GPIO 16 wire. upload_port = ESP32 IP[:port], default port 2323. [env:nano_ota] extends = env:nano upload_protocol = custom upload_port = 10.1.1.198 upload_command = "$PYTHONEXE" "$PROJECT_DIR/tools/nano_net_upload.py" "$SOURCE" $UPLOAD_PORT ; --------------------------------------------------------------------------- ; ESP32 - controller, talks to the Nano over serial ; --------------------------------------------------------------------------- [env:esp32] platform = espressif32 board = esp32doit-devkit-v1 build_src_filter = + ; ESPSERIAL turns the BROSE9323 driver into a serial client: every draw call is ; sent to the Nano as a text command instead of toggling GPIO pins. build_flags = -D ESPSERIAL lib_deps = ${env.lib_deps} https://github.com/robjen/GFX_fonts.git dawidchyrzynski/home-assistant-integration@^2.1.0 knolleary/PubSubClient@^2.8.0 upload_protocol = espota upload_port = 10.1.1.198 monitor_port = COM11 [env:esp32_usb] extends = env:esp32 upload_protocol = esptool upload_port = COM11 ; --------------------------------------------------------------------------- ; Native - unit tests for the Nano firmware on the PC (test/test_nano) ; The Arduino core, EEPROM and the display driver are replaced by test/mocks. ; --------------------------------------------------------------------------- [env:native] platform = native framework = lib_deps = lib_ignore = BROSE9323 test_ignore = test_build_src = yes build_src_filter = + build_flags = -std=gnu++17 -I test/mocks