{"id":15991330,"url":"https://github.com/sinedied/esp-led-timer","last_synced_at":"2025-03-17T20:30:28.454Z","repository":{"id":173869646,"uuid":"616126203","full_name":"sinedied/esp-led-timer","owner":"sinedied","description":"64x32 led matrix timer for conferences with remote WiFi control, based on ESP8266/ESP32","archived":false,"fork":false,"pushed_at":"2025-01-20T13:25:13.000Z","size":9737,"stargazers_count":6,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-11T00:16:34.904Z","etag":null,"topics":["esp32","esp8266","led","matrix","remote","timer","wifi"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sinedied.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-19T17:26:05.000Z","updated_at":"2025-01-25T12:15:49.000Z","dependencies_parsed_at":"2024-06-03T17:13:30.551Z","dependency_job_id":null,"html_url":"https://github.com/sinedied/esp-led-timer","commit_stats":null,"previous_names":["sinedied/esp-led-timer"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sinedied%2Fesp-led-timer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sinedied%2Fesp-led-timer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sinedied%2Fesp-led-timer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sinedied%2Fesp-led-timer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sinedied","download_url":"https://codeload.github.com/sinedied/esp-led-timer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243878483,"owners_count":20362433,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["esp32","esp8266","led","matrix","remote","timer","wifi"],"created_at":"2024-10-08T06:00:43.249Z","updated_at":"2025-03-17T20:30:27.605Z","avatar_url":"https://github.com/sinedied.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ⏰ esp-led-timer\n\n\u003e 64x32 led matrix timer for conferences with remote WiFi control, based on ESP8266/ESP32.\n\n[![Demo video](./docs/video_preview.jpg)](https://youtu.be/CDZh9LY9HXI)\n\n*Note: time countdown is accelerated x100 in the video.*\n\n## Assembly guide\n\nYou can find a detailed step-by-step assembly guide [here](./docs/assembly.md).\n\n## Components used\n- 64x32 P4 LED Panel [aliexpress](https://aliexpress.com/item/1005004050044228.html)\n- ESP32 CH340 Type-C [aliexpress, make sure to pick the right one](https://aliexpress.com/item/1005004616357165.html)\n- 2m USB-C cable [aliexpress, make sure to pick the right one](https://aliexpress.com/item/1005004215823904.html)\n- 20W USB-C Charger [aliexpress](https://aliexpress.com/item/1005001875465341.html)\n- 10cm M-F Dupont Cable 40pin [aliexpress, make sure to pick the right one](https://aliexpress.com/item/1005004073424751.html)\n- 10cm F-F Dupont Cable 40pin [aliexpress, make sure to pick the right one](https://aliexpress.com/item/1005004073424751.html)\n- 20cm F-F Dupont Cable 40pin [aliexpress, make sure to pick the right one](https://aliexpress.com/item/1005004073424751.html)\n- Push button kit [aliexpress](https://aliexpress.com/item/1005005012663073.html)\n\n**Total:** about 30 euros\n\n## Wiring diagram\n\n![Wiring diagram](./docs/wiring.drawio.png)\n\nConnect panel input (PI) and and panel output (PO) like this:\n\nPI | PO\n---|---\nR1 | R0\nG0 | R1\nG1 | G0\nB0 | G1\nB1 | B0\n\nConnect panel input (PI) to the ESP8266 or ESP32 like this:\n\nPI      | ESP8266 GPIO | ESP32 GPIO\n--------|--------------|------------\nA       |  05 - (D1)   | 19 \nB       |  04 - (D2)   | 23 \nC       |  15 - (D8)   | 18 \nD       |  12 - (D6)   | 5 \nSTB/LAT |  16 - (D0)   | 22 \nP_OE    |  02 - (D4)   | 16 \nCLK     |  14 - (D5)   | 14 \nR0      |  13 - (D7)   | 13 \n\nConnect push button pins to the ESP8266 or ESP32 like this:\n\nBUTTON | ESP8266 GPIO | ESP32 GPIO\n-------|--------------|------------\nL      | RX - (D9)    | RX0\nR      | GND          | GND\n\n## 3D printed case\n\n![case preview](./case/case.png)\n\nYou'll find a parameterized case model in `case/case.scad`.\n\nYou can customize and compile this file into an STL using [OpenSCAD](https://openscad.org).\n\nI recommend to set `test_print` to true in the customizer (\"Other\" tab) and first print these test models to test and adapt the `tolerance` value for your printer (higher = more loose fit, smaller = tighter fit).\n\nThis model makes use of the BOSL2 library, see [instructions here](https://github.com/revarbat/BOSL2) for how to install it.\n\n## Building project\n\nThis project is built using [VS Code](https://code.visualstudio.com/) and [PlatformIO](https://platformio.org/).\n\nOnce loaded, Platform IO will download the platform SDK and dependencies automatically, then you'll be able to build and upload the project to your ESP.\n\n\u003e You update the `platformio.ini` file to change the board type and platform, this project is compatible with both ESP8266 and ESP32 boards.\n\n## How to use\n\n- **Push button:** start/stop timer\n- **Long press (1s)**: reset timer\n- **Double press**: next mode\n- **Triple press**: change brightness\n\nModes cycles between the logo/screensaver and the differents timers.\n\nWhen the timer is not running, the logo/screensaver will be automatically activated after 5 minutes without touching any button.\n\n### Special commands\n\n- **Hold button for 5s**: enable/disable WiFi AP\n- **Hold button for 10s**: reset all settings and reboot\n- **5x press**: toggle x100 time acceleration (for demo/testing purposes)\n\nWhen WiFi is enabled, the device will create an access point with the name \"Timer\" by default. Connect to it, and you should be presented with a captive portal to control and configure the device.\n\n## Updating bitmaps\n\nTo generate the bitmap arrays for images, I used [image2cpp](https://javl.github.io/image2cpp/).\nMake sure to set RGB565 format and change the type to `uint16_t static` instead of `const uint16_t`, otherwise the app will crash.\n\nThe bitmaps are located in `src/bitmaps.h`.\n\nFor drawing the bitmaps I used [PixiArt](https://www.pixilart.com/draw).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsinedied%2Fesp-led-timer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsinedied%2Fesp-led-timer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsinedied%2Fesp-led-timer/lists"}