A map of hackerspaces lasercut from plywood, with their SpaceAPI opening states shown in red and green LEDs
Find a file
2024-09-11 01:41:41 +02:00
erfamap-output initial commit 2024-09-11 01:41:41 +02:00
esp32 initial commit 2024-09-11 01:41:41 +02:00
pcb initial commit 2024-09-11 01:41:41 +02:00
README.md initial commit 2024-09-11 01:41:41 +02:00

SpaceAPI LED Map

A map of hackerspaces lasercut from plywood, with their SpaceAPI opening states shown in red and green LEDs.

The LEDs are WS2812-compatible bulb-shaped LEDs, and they are controlled by an ESP32-C3 board.

This is a work in progress (2nd half 2024) project; documentation will be updated as the project progresses.

Contents of This Repository

erfamap-output/

The data for lasercutting the map was generated using a modified version of my Erfamap project, which uses the api.spaceapi.io SpaceAPI aggregator instead of the CCC internal Wiki to determine which dots to place where. A lot of this data was edited by hand in order to improve it for laser cutting.

  • spaceapi-info.json is the cache file used by the modified script. It has been edited manually to remove some entries which had broken or unsuitable API endpoints.
  • map.svg is the output file generated by the modified script.
  • map-prepared.svg is the file that has been prepared for laser cutting and engraving:
    • Labels have been move manually so that they are easier to assign to the correct LED, and so they don't overlap with any of the country borders.
    • Text has been converted to paths.
    • All paths have been assigned to layers corresponding to how they should be processed.

The modified Erfamap script will be released at a later point after some further cleanup.

pcb/

The KiCad project for the PCBs that connect everything together.

Each PCB connects to 10 LEDs, and the PCB can be chained together to form a single WS2812 chain. There are 83 LEDs in the current version, so a total of 9 of these PCBs is required. The ESP32-C3 needs to be soldered to the first PCB.

esp32/

The PlatformIO Arduino project for the ESP32. It perfoms the following tasks:

  • Connect to the WiFi network defined at compile time
  • Obtain the current time through NTP
  • Fetch the aggregated SpaceAPI responses from api.spaceapi.io and parse the JSON response
  • Update the WS2812 LEDs

Compile and upload to the ESP32 using PlatformIO:

export ESP32_WPA2_SSID=the-wifi-ssid
export ESP32_WPA2_PSK=the-wifi-psk
pio run -t upload

Components