Public Access
Home Assistant: remove the Clock switch (its entity is deleted on connect), add an IP sensor and Mode / Off image dropdowns whose options follow the saved bitmaps. Remove the built-in "Nintendo border" bitmap. Off image: a bitmap (or blank) left on the dots when the display switches off. Nano: pause after each flip pulse and repeat pulses for changed dots, both stored in EEPROM (G/N commands). Refresh effects (E command): instant, sparkle, wipe, rain, from the middle out, diagonal, spiral, flip all then reveal, push and random, optionally only for small changes. Effects run in steps from loop() so serial input keeps flowing. Web UI: flip settings, refresh effect and test patterns under Settings; the System tab shows why the ESP32 last restarted. Settings records from versions 1 and 2 are migrated. Firmware 2.3.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
132 lines
4.7 KiB
INI
132 lines
4.7 KiB
INI
; 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 into ota_0
|
|
; recovery ESP32 recovery app (WiFi setup + OTA), USB only, see README.md
|
|
; test_nano Unit tests for the Nano firmware, run on the PC (needs gcc on PATH)
|
|
; test_esp32 Unit tests for the ESP32 logic, run on the PC
|
|
;
|
|
; 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 test_nano -e test_esp32
|
|
;
|
|
; 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 test_* environments on the PC, 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 = +<nano/>
|
|
; 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.
|
|
; --baud: bootloader baud rate. auto tries 57600 (old bootloader), then 115200 (Optiboot).
|
|
[env:nano_ota]
|
|
extends = env:nano
|
|
upload_protocol = custom
|
|
upload_port = 10.1.1.198
|
|
upload_flags = --baud=auto
|
|
upload_command = "$PYTHONEXE" "$PROJECT_DIR/tools/nano_net_upload.py" "$SOURCE" $UPLOAD_PORT $UPLOAD_FLAGS
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; ESP32 - controller, talks to the Nano over serial
|
|
; ---------------------------------------------------------------------------
|
|
[esp32_common]
|
|
platform = espressif32
|
|
board = esp32doit-devkit-v1
|
|
; factory = recovery app, ota_0 / ota_1 = clock firmware (see partitions.csv)
|
|
board_build.partitions = partitions.csv
|
|
monitor_port = COM18
|
|
|
|
[env:esp32]
|
|
extends = esp32_common
|
|
build_src_filter = +<esp32/>
|
|
; Size check against the ota slots, not the (smaller) factory partition
|
|
board_build.app_partition_name = ota_0
|
|
; 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 -I src/esp32
|
|
lib_deps =
|
|
${env.lib_deps}
|
|
dawidchyrzynski/home-assistant-integration@^2.1.0
|
|
bblanchon/ArduinoJson@^7.0.0
|
|
knolleary/PubSubClient@^2.8.0
|
|
upload_protocol = espota
|
|
upload_port = 10.1.1.198
|
|
|
|
; USB upload of the clock firmware: written to ota_0, never over the recovery app
|
|
[env:esp32_usb]
|
|
extends = env:esp32
|
|
upload_protocol = esptool
|
|
upload_port = COM18
|
|
board_upload.offset_address = 0x110000
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; ESP32 recovery app (src/recovery) in the factory partition: WiFi setup page + OTA.
|
|
; One-time install over USB, see README.md "Recovery app".
|
|
; ---------------------------------------------------------------------------
|
|
[env:recovery]
|
|
extends = esp32_common
|
|
build_src_filter =
|
|
+<recovery/>
|
|
+<esp32/logic/boot_policy.cpp>
|
|
+<esp32/system/system_store.cpp>
|
|
+<esp32/system/boot_target.cpp>
|
|
+<esp32/nano_link/nano_link.cpp>
|
|
+<esp32/display/status_screen.cpp>
|
|
+<esp32/display/text.cpp>
|
|
; ESPSERIAL: status messages are sent to the Nano like in the clock firmware
|
|
build_flags = -D ESPSERIAL -I src/esp32
|
|
upload_protocol = esptool
|
|
upload_port = COM18
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; Unit tests on the PC (pio test -e test_nano -e test_esp32)
|
|
; ---------------------------------------------------------------------------
|
|
[native]
|
|
platform = native
|
|
framework =
|
|
lib_deps =
|
|
lib_ignore = BROSE9323
|
|
test_ignore =
|
|
test_build_src = yes
|
|
|
|
; Nano firmware (test/test_nano). The Arduino core, EEPROM and the display driver are
|
|
; replaced by test/mocks.
|
|
[env:test_nano]
|
|
extends = native
|
|
test_filter = test_nano
|
|
build_src_filter = +<nano/>
|
|
; test/mocks first: its BROSE9323.h replaces the driver, dot_sequence.h is the real one
|
|
build_flags = -std=gnu++17 -I test/mocks -I lib/BROSE9323
|
|
|
|
; ESP32 logic (test/test_esp32): only the modules without Arduino dependencies
|
|
[env:test_esp32]
|
|
extends = native
|
|
test_filter = test_esp32
|
|
build_src_filter = +<esp32/logic/>
|
|
build_flags = -std=gnu++17 -I src/esp32
|