An NTSC/PAL version of the 80s Dali Clock for the ESP32

Overview

Dali Clock Animation

esp32-dali-clock

This is an ESP32 recreation of the "Dali" digital clock where the digits "melt" into one another. Watch a full demonstration on YouTube

Stretch Goal for Sponsors!

๐Ÿงก ๐Ÿ’› ๐Ÿ’œ If I get at least 25 GitHub Sponsors for this project, I will work on a vaporwave-style of this clock! Watch this helpful video Vaporwave vs Outrun, What's the Difference? for a breakdown of the differences between outrun and vaporwave aesthetic! ๐Ÿ˜

About the project

The Dali clock was first written in 1979 by Steve Capps for the Xerox Alto and later ported to the Macintosh (see xdaliclock for the full history, including a link to a super trippy film from the 1974s that inspired this whole madness). Later, Jamie Zawinski re-implemented an X Windows version called xdaliclock. I began with the ".xbm" font files from Jamie's work, but my implementation does not share any code with that version.

This project is a follow up to my earlier project, the arduino-dali-clock, but instead of driving a TFT panel, it generates composite video output for any NTSC or PAL television or monitor. Putting it together is ridiculously simple, requiring only two wires. All configuration is done via a web interface YouTube and clock's time is synchronized via the Internet.

This project includes modified code from rossumur's esp_8_bit and bitluni's ESP32CompositeVideo. These changes are also available in my standalone project ESP32CompositeColorVideo, which also includes a write up on what bits I borrowed from where.

Wiring for an Adafruit HUZZAH32:

Dali Clock Wiring

  1. Use an alligator clip to connect the pin labeled "GND" on the Adafruit HUZZAH32 to the outside barrel of the RCA plug
  2. Use an alligator clip to connect the pin labeled "A1/DAC1" on the Adafruit HUZZAH32 to the central pin of the RCA plug
  3. Connect the other end of the RCA cable to the yellow jack on your TV or monitor

License (esp32-dali-clock)

DaliClock by (c) 2021 Marcio Teixeira

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

To view a copy of the GNU General Public License, go to the following
location: 
   .

License (xdaliclock)

xdaliclock - a melting digital clock
Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2001, 2006
 Jamie Zawinski 
   
    

Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.  No representations are made about the suitability of this
software for any purpose.  It is provided "as is" without express or
implied warranty.

   

License (esp_8_bit)

Copyright (c) 2020, Peter Barrett

Permission to use, copy, modify, and/or distribute this software for
any purpose with or without fee is hereby granted, provided that the
above copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.

License (ESP32CompositeVideo)

CC0. Do whatever you like with the code but I will be thankfull 
if you attribute me. Keep the spirit alive :-)

- bitluni

Dali Clock Mini TV

Comments
  • Daylight saving time tickbox doesn't work.

    Daylight saving time tickbox doesn't work.

    I tick it and choose NST timezone, the URL has

    &ntp_addr=pool.ntp.org&timezone=12.00&time_dst=on

    on the end of it, but it is ignored, its showing the time for UTC + 12, not + 13 like it should be.

    I can change the timezone to =13.00 myself and resubmit it and it gets it showing the correct time for me.

    I'm fairly sure this was working in the past however? I would have noticed it on my last play with it if it was an hour out I would have thought. Perhaps not tho.

    Also, why is the network name and the time selection in the same form? If I change the timezone and dont re-paste the SSID and key, it leaves it not connected to the LAN and I have to get the phone out and connect to its hotspot and reconfigure the wifi again.

    opened by richms 8
  • NTP timeserver not syncing right, and can't select 12/24 hour time

    NTP timeserver not syncing right, and can't select 12/24 hour time

    I select NTP timeserver and it always syncs to show 20:00:59, regardless of location. I have to manually set the time every time i power up the ESP32.

    Also, how can i get it to show the time in 12 hour format?

    opened by devicemodder 7
  • LInes at the bottom of the screen are duplicated in PAL mode

    LInes at the bottom of the screen are duplicated in PAL mode

    https://youtu.be/tKJLKOonMMs

    Seems that there are a few lines at the bottom that are duplicated rather than the grid extending to the bottom of the screen,

    I have changed the lines in the main .ino file to have

    #define SUPPORT_NTSC 0 #define SUPPORT_PAL 1

    and furthur down

    CompositeColorOutput composite(CompositeColorOutput::PAL);

    is there anything else to get this working right?

    opened by richms 2
  • Wemos LOLIN32

    Wemos LOLIN32

    The code compiles and uploads without a hitch but upon execution I'm greeted with this on the serial monitor.

    no config file
    
    abort() was called at PC 0x40084d33 on core 0
    
    
    Backtrace:0x400e9401:0x3ffcb2300x4008cc79:0x3ffcb250 0x40092301:0x3ffcb270 0x40084d33:0x3ffcb2f0 0x40084f35:0x3ffcb310 0x4015d6d2:0x3ffcb330 0x4015a7b4:0x3ffcb450 0x4015d74d:0x3ffcb760 0x4016cba5:0x3ffcb790 0x4009217d:0x3ffcb7c0 0x40129992:0x3ffcb810 0x40145f3c:0x3ffcb880 0x401403b4:0x3ffcb8c0 0x4013040e:0x3ffcb8e0 0x401304c5:0x3ffcb900 0x4012f15c:0x3ffcb920 0x40167e95:0x3ffcb940 
    
    
    
    
    ELF file SHA256: 0000000000000000
    
    Rebooting...
    ets Jun  8 2016 00:22:57
    
    rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
    configsip: 0, SPIWP:0xee
    clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
    mode:DIO, clock div:1
    load:0x3fff0030,len:1100
    ho 0 tail 12 room 4
    load:0x40078000,len:12308
    load:0x40080400,len:3076
    entry 0x400805ec
    
    opened by ShawnBusker 2
  • Boot loop/crash with Espressif ESP32 Arduino core version 2.0.2

    Boot loop/crash with Espressif ESP32 Arduino core version 2.0.2

    No video output with Espressif ESP32 Arduino core version 2.0.2. Enters a boot loop with an ledc error. Identical hardware/code works with ESP32 Arduino core v1.0.6, v2.0.0 and v2.0.1.

    I'm aware this may actually be an issue with the ESP32 Arduino core that you cannot fix, but thought I'd raise it here as I don't have the background on the internals of the composite video code to be sure.

    rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:1 load:0x3fff0030,len:1184 load:0x40078000,len:12804 ho 0 tail 12 room 4 load:0x40080400,len:3032 entry 0x400805e4 E (37) ledc: requested frequency and duty resolution can not be achieved, try reducing freq_hz or duty_resolution. div_param=80 Guru Meditation Error: Core 1 panic'ed (IntegerDivideByZero). Exception was unhandled.

    Core 1 register dump: PC : 0x4000d099 PS : 0x00060730 A0 : 0x800def62 A1 : 0x3ffb26e0
    A2 : 0x0f424000 A3 : 0x00000000 A4 : 0x00000000 A5 : 0x00000000
    A6 : 0x00060520 A7 : 0x00000001 A8 : 0x00000001 A9 : 0x00000000
    A10 : 0x00000000 A11 : 0x0f424000 A12 : 0x00060520 A13 : 0x3ffb2680
    A14 : 0x007bea90 A15 : 0x003fffff SAR : 0x00000001 EXCCAUSE: 0x00000006
    EXCVADDR: 0x00000000 LBEG : 0x4008ab0d LEND : 0x4008ab1d LCOUNT : 0xffffffff

    Backtrace:0x4000d096:0x3ffb26e00x400def5f:0x3ffb2700 0x400dc1ed:0x3ffb2740 0x400d315b:0x3ffb2780 0x400d33e1:0x3ffb27b0 0x400d3bf1:0x3ffb27d0 0x400dd9ce:0x3ffb2820

    opened by ncmreynolds 1
  • About WIFI can not connect

    About WIFI can not connect

    I like this project very much. I also bought the ESP32 WROOM-32 development board. The source code is compiled and uploaded to the development board. The TV also shows the time, but when I connect to the "ESP32 DALI CLOCK" WIFI through the mobile phone, it prompts "The network access is denied ". I used the laptop to connect to the WIFI again, but there was no prompt, but it was always in a state of being unable to connect. Please help me, thanks! cheers!

    opened by 38293312 0
Owner
Marcio T.
I would love to be able to work on my open-source projects full time. Please consider supporting me via GitHub Sponsors or Patreon.
Marcio T.
Satellite clock/decoupled clock estimation and PPP-AR

Cube Cube is a secondary development based on RTKLIB and mainly composed of two modules, satellite clock/decoupled clock estimation (the server end) a

null 16 Sep 20, 2022
Flutter-Clock-and-Reminder-App - a highly functional clock and reminder app developed on flutter framework.

clock_app A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if thi

Umar Baloch 6 Aug 4, 2022
ESP32-Skid-Steer - Bruder Catepillar Skid Steer model converted to RC, controlled by an ESP32 with 2 analog joysticks and a receiver that is an ESP32 on the model.

ESP32-Skid-Steer Bruder Catepillar Skid Steer model converted to RC, controlled by an ESP32 with 2 analog joysticks and a receiver that is an ESP32 on

null 6 Oct 27, 2022
null 313 Dec 31, 2022
ESP32 based DIY word clock project

Wordclock ESP32 based DIY wordclock project TL;DR: check out this โœจ demo video โœจ Another take on the classic DIY word clock. This one requires a laser

null 41 Dec 26, 2022
ESP32 based Desktop Clock

ESP32_Desktop_Clock ESP32 based Desktop Clock This ESP32 internet of things desktop clock is a project created for my home. School has started and fal

Mike Rankin 77 Jan 4, 2023
A ESP32 clock / display using 64x32 HUB75 panels.

ESP32 HUB Panel A ESP32 clock / display using 64x32 HUB75 panels. This is a very hacky code that will display a clock in two 64x32 HUB75 LED Matrix Pa

Lucas Teske 20 Dec 12, 2022
Allows for multiple SwitchBot buttons and curtains to be controlled via MQTT sent to ESP32. ESP32 will send BLE commands to switchbots and return MQTT responses to the broker. Also supports Meter/Temp Sensor

SwitchBot-MQTT-BLE-ESP32 Switchbot local control using ESP32. no switchbot hub used/required. works with any smarthub that supports MQTT https://githu

null 343 Dec 27, 2022
AnalogWrite for ESP32 and ESP32-S2 with LEDC PWM. Includes PWM Phase Control, DAC and Smart GPIO resource management.

analogWrite() ESP32 Installation Instructions This library was tested using using the ESP32 Arduino IDE Boards Manager installation method. Stable rel

null 36 Jan 5, 2023
ESP32 + GitHub Actions + Husarnet. A boilerplate project for ESP32 allowing in-field firmware update using GitHub Actions workflow.

esp32-internet-ota ESP32 + GitHub Actions + Husarnet. A boilerplate project for ESP32 allowing in-field firmware update using GitHub Actions workflow.

Husarnet 31 Sep 22, 2022
New version of the well known ESP32 Radio. Now optional I2S output!

ESP32Radio-V2 New version of the well known ESP32 Radio. Now optional I2S output! Compile time configuration in config.h. Do not forget to upload the

Ed Smallenburg 56 Dec 28, 2022
A clock with 241 RGB LEDs

LEDCircleClock A clock with 241 RGB LEDs. Description The clock shows the hands in diferent colors on the grid of LEDs. To make it more beautiful hand

null 17 Feb 26, 2022
A custom firmware for the EleksTube IPS Clock

EleksTubeHAX - An aftermarket custom firmware for the EleksTube IPS clock Buy your own clock here: EleksTube IPS Clock Reddit discussion on the hack i

Mark Smith 72 Dec 27, 2022
A large mechanical 7-segment clock using cheap stepper motors.

mechanical-7-segment-clock A large mechanical 7-segment clock using cheap stepper motors. Each digit requires its own controller board. The seconds di

null 44 Oct 4, 2022
Weather clock with automatic time synchronization

Clock with weather and automatic time synchronization Features Display The numbers are written in a font similar to handwritten; The change of numbers

Anton Petrusevich 4 Apr 1, 2022
Arduino-compatible development platform whose primary function is a clock

MakeTime Arduino-compatible development platform whose primary function is a clock Description MakeTime is a clock that uses a ring of 24 RGB LEDs to

null 3 Oct 11, 2021
DIY Word Clock ver. 1.01

DIY Word Clock ver. 1.01

Vladislav 56 Dec 28, 2022
Display array is a board that sets 6 ST7735 display with a resolution of 80x160px in a linear array sharing the clock, data, rs, backlight pins together

The display array is a board that sets 6 ST7735 display with a resolution of 80x160px in a linear array sharing the clock, data, rs, backlight pins together, and leaving individual access to the cs lines of each display, This board allows you to display images with a resolution of 480x160px.

Josue Alejandro Gutierrez 70 Dec 19, 2022
Design and firmware for a stepper motor retrofit to the often-failed AC synchronous flip clock motors

StepperFlipClock Design and firmware for a stepper motor retrofit to the often-failed AC synchronous flip clock motors. Flip clocks, perhaps most icon

Dan Ellis 3 Oct 13, 2022