/QlockTwo_DIY

A perfect copy of the original QlockTwo.

Primary LanguageRustCreative Commons Attribution Share Alike 4.0 InternationalCC-BY-SA-4.0

QlockTwo DIY

Project by Jonas Lauener and Frederic Letsch

As we could not afford the hefty price tag of the original QlockTwo Classic, our aim was to build a perfect copy of it. Over the course of two years we built five units for us and our parents. In the spirit of the open source community we would like to enable everyone to build their own perfect QlockTwo.

For any technical questions, please open an issue: https://github.com/jolau/QlockTwo_DIY/issues/new/choose

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Front Panel

The front panel is a complete reproduction of the original QlockTwo panel in terms of proportions, font and words. Due to copyright issues we only provide an Ilustrater template here. It should be easy tough to replace the letters to get the version you want. As raw material for the front plate we used an acrylic glass with a thin black color film on the back side, where we engraved the letters with a laser cutter. (TG4-400 https://www.gravurmaterialien.ch/gravurmaterial/acrylglas/troglass-reverse.html)

Baseplate

The dimensions of the clock were derived from the distance betweend to LEDs on a strip (33.3 mm) such that the proportions of our front panel matches the original ones. Since we had acces to a CNC milling machine, we designed a unibody to hold our LEDs and the front panel. If you don't have access to a milling machine, you may slice the CAD file in layers to use a laser cutter and some glue instead. To avoid the LEDs shining trough to other letter we build a pattern using a laser cutter to shield the LEDs. The front panel is held in place by magnets in the baseplate and metal discs glued to the front panel. This enabels a seamless and easy mount of the front panel. cad_overview

Electronics

Used parts

  • RGBW LED strip
  • ESP8266 (WEMOS D1)
  • DS3231 (RTC Clock)
  • 4 push buttons (Multimec 5GTH935) with white caps (1DS06)
  • FET for voltage level shifter
  • 5528 Light Dependent Resistor
  • 5V power adapter with textile cable and DC power plug/jack

Schematics

The schematics are fairly simple. We realised it on a stripboard. schematics Only the voltage level shifter is to be remarked. As the LED strip are on a 5V level and the ESP8266 has 3V3, a voltage level shifter is implemented to shift the signal from 3V3 to 5V.

Software

The ESP8266 is programed with the Arduino platform by PlatformIO. Many thanks to all the incredibles Arduino libraries.

Used libraries

  • NeoPixelBus: Control the RGBW LED strip.
  • WifiManager: Handle Wifi connection and enter AP mode to enter Wifi credentials and enable/disable time of QlockTwo.
  • RTC: Handle the DS3231 RTC module.
  • AceButton: Handle the four push buttons.
  • ArduinoJson: Used to serialize the configuration object for saving it on SPIFF (file system of ESP8266).
  • Time and Timezone: Convert the UTC time to local time (with timezone and daylight saving adjustement).

Code architecture

The code is structured in independant modules. These are then wired together and used in the main.cpp.

  • AmbientLightModule: Adapts the light intensity based on readings from a light sensor
  • ClockModule: ClockModule is handling the RTC and keeps it updated over NTP
  • ConfigModule: Save and Load Config to/from SPIFF of the ESP
  • LedControlModule: Control the LEDs resp show the words and minute dots
  • LedWord: LedWord representing on word (only horizontal) on the matrix, defined by first pixel and word length
  • SimpleTime: A simple representation of time with hour and minutes
  • WifiModule: Handling connection to Wifi and setting up Wifi credentials by creating an Access Point

All documentation of the code can be found here: Doxygen