ESP32 Based TalkTimer for Conferences With Large 7-segment Displays and Web-interface
by wouterrusman in Circuits > Clocks
5016 Views, 67 Favorites, 0 Comments
ESP32 Based TalkTimer for Conferences With Large 7-segment Displays and Web-interface
A friend that is hosting conferences complained it was always a struggle to get the speakers to end their talk in the right time. Waving paper signs with the remaining time didn't always get noticed. So to the rescue with some 3d printed displays, ws1812 addressable led strips and an esp32
Supplies
Materials :
- esp32 wroom
- ws2812 led strip 60 leds/meter, 108 led's are used for my version of this project
- Wire that can handle the current for all the led's to be lit at maximum power
- power supply that can handle the current for all the led's to be lit at maximum power (warning : USB charger will not cope)
- Window tinting foil; I used the cheapest available from a dollar store equivalent
- Black filament if you print the segments
- White filament if you print the segments
- Some wood for building an enclosure if you prefer
- Plexiglas for a front
- Screws
- Hot glue
Tools :
- 3d Printer if you print the display segments
- Wire cutter and stripper
- Soldering iron
- Woodworking equipment to build the enclosure and plexiglass front
- Knife to trim the led strip and tinting foil
3d-print the Needed 7-segment Displays
For this project I wanted to be able to let the clock count down a maximum of 1 digit for hours. Some talks take more then an hour, most take up to an hour, but never more than 9 hours. So I printed 5 7-segment displays and 2 segments with the dividing dots to be able display the remaining time in hours, minutes and seconds. I cannot find the exact design for this display anymore, but any design will suffice if the number of led's per segment is the same or you are willing to tweak some settings in the code.
I built an enclosure for the segments from some wood to increase the rigidity and to be able to put a handle on top for easy transportation.
Connection the LED Strips
All the led strips are connected in a chain for every led to be individually addressable by the ESP32. I started on the left and used the following diagram to connect every strip :
3 4 5 26 27 28 47 48 49 70 71 72 91 92 93
2 6 25 29 46 50 69 73 90 94
1 7 21 24 30 45 51 65 68 74 89 95
0 8 23 31 44 52 67 75 88 96
11 10 9 34 33 32 55 54 53 78 77 76 99 98 97
12 20 35 43 56 64 79 87 100 108
13 19 22 36 42 57 63 66 80 86 101 107
14 18 37 41 58 62 81 85 102 106
15 16 17 38 39 40 59 60 61 82 83 84 103 104 105
Be sure to wire the + and - of the strip to separate wires that go to the power supply, do not attach them to the ESP32 for power as this will release the magic smoke from from it! Only the ground and data line are attached to the ESP32.
In my code the data pin of the led strip is connected to pin 22 of the ESP32
Testing the Strip
After the strip was connected I loaded some example code to the ESP32 to test if every led was working correctly. I used the strandtest example from the library for this.
Program the Clock and the Web-interface for Controlling the Clock
Now came the hardest part; programming the clock and the web-interface for controlling the clock.
The clock itself isn't always visible to the clock operator, so I set myself to display the same time the clock was displaying on a webpage for the operator who is also able stop stop the clock and set the end time. I hadn't used the web server on the ESP32 for something like this before to this was quite the learning challenge. In the end I used some static pages for the framework and JavaScript and JSON data to update certain elements in the page dynamically on every half second.
The clock uses a WIFI network to get the NTP time from internet and uses that to calculate the remaining time according to the timezone that is set in the config webpage of the clock. Here you also choose whether clock should count down to zero and stop there, or if it should continue to count the time past the end time. The wifi is set-up via a captive portal that will show if no known network is found.
The clock starts in a white display color, when there are 10 minutes left till the end time the clock color turns yellow, with 5 minutes left it will turn orange and at the end time it will turn red.
See the code on github for programming the ESP32, the sources to the used libraries are linked in the code
https://github.com/WRusman/ArduinoProjects/tree/master/TalkTimer
Finishing Touches
After some testing I found the contrast between a lit and unlit segments sometimes hard to see, that is why I put some plexiglass with the window tinting foil in front of the segments. This helped a lot!.