Skip to content
Open
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
7 changes: 5 additions & 2 deletions Software/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,15 @@ After you have installed the Espressif board manager package, you can __select t

Please make sure that you have __set the option "USB CDC enable on boot" to "enabled"__ (Arduino tools menu), and that you have selected the correct serial device. You may have to press and hold the boot-button while presssing and releasing the reset button to put the module into "upload mode".

.
#### PlatformIO

You can also build and flash by executing `pio run -t upload` from this folder.


### Notes on driving the LEDs with the "RMT" (remote control) perhipheral

The "RMT" perhipheral.Can generate very accurately timed signals, and is Espressif's way of driving WS2812 LEDs. Unfortunately it has enormous memory overhead: it requires 32 times more storage than there is raw data to be sent to the LEDs. 24 bits to be sent to each LED requires 768 bits of memory. Every RGB byte translates to 8 32 bit word accesses. This method uses DMA (Direct memory access) to relieve the processor of these duties: The processor just needs to prepare a block of data and then start the transfer.

### Notes on driving the display with the "SPI" (synchronous serial port) perhipheral

This program uses the "SPI" perhipheral. Signals are less accuratly timed, but do actually work with the types of LEDs tested so far. Overhead is much lower than for the "RMT" method: it requires 4 times more storage than there is raw data to be sent to the LEDs. 24 bits to be sent to each LED requires 96 bits of memory. Moreover, as every (RGB) byte access becomes a single 32 bit word access, processor overhead is relatively limited. This method uses DMA (Direct memory access) to relieve the processor of these duties: The processor just needs to prepare a block of data and then start the transfer.

15 changes: 15 additions & 0 deletions Software/platformio.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
[platformio]
src_dir = hackerspacemap2026/

[env:esp32c3]
platform = https://github.com/pioarduino/platform-espressif32/releases/download/55.03.38-1/platform-espressif32.zip
board = esp32-c3-devkitm-1
board_build.mcu = esp32c3
framework = arduino
upload_protocol = esptool

build_flags =
-DARDUINO_USB_CDC_ON_BOOT=1
-DARDUINO_USB_MODE=1
-DARDUINO_TINYUSB=1
-DCORE_DEBUG_LEVEL=5 ; Set the debug level (0-5, with 5 being the most verbose)