SK6812 vier-talen woordklok

Terug naar Start

To English page

Met deze klok kan de tijd als tekst in de talen Nederlands, Frans, Engels en Duits getoond worden.
Deze klok was de ultieme uitdaging om te maken met als voorganger een woordklok met één taal en Fibonacci-klokken.
De software om de klok aan te sturen is geschreven voor Arduino's met een minimaal geheugen van 48K zoals  de goedkope Arduino nano Every.
Naast het aansturen van de juiste tijd kan zijn er vele opties instelbaar in het programma.
Bijvoorbeeld een enkele taal voor een klok met 144 (12x12) LEDs, diverse membraan keypads, een rotary, digitale displays, een DCF77 atoomtijdontvanger, bluetooth-verbinding met een mobiele telefoon, en ondersteuning voor SK6812 en andere LED-strips.
 

Four language clock color Four language clock white


De vier-talen woordklok gebruikt 625 SK6812 RGBW LED-strips.
RGBW LED-strips hebben naast de rode, groene en blauwe LED ook een witte LED is ingebouwd.
Hierdoor is het mogelijk om de letters helder wit te doen oplichten. De kleuren zijn ook sprankelend met deze SK6812 LEDs.
De gebruikte library om de LEDs aan te sturen ondersteund ook het gebruikt van vele typen andere LEDs.


SK6812  LED's bevatten ieder een kleine processor waardoor de hele keten van LEDs met één draad zijn aan te sturen.




Word clock with four languages

 <- Startpagina



De kleurenwoordklok bestaat uit de onderdelen zoals in de tabel hieronder is weergegeven.
De elektronica en PCB kan je bij mij bestellen. De kast en woordplaat heb ik niet in voorraad.
Een woordplaat laten maken zal 300 tot 500 euro kosten. JPG's van twee designs  hieronder.


Benodigdheden

Soldeerbenodigdheden
Multimeter

1 x Kast voor 50x50 cm woordplaat
kast
1 x Woordplaat

JPG-bestand met:
Alle 625 characters

Met kruis
  woordplaat
1 x Spacerplaat, geschuimd PVC wit 10 MM RAL 9003   spacerplaat
1 x Printplaat Fibonacci/SK6812-klok €15,00 PCB
1 x 1000 µF condensator €0,30 1000 µF condensator
1 x 1.1kΩ weerstand €0,15  
1 x 2.2kΩ weerstand €0,15  
1 x 470kΩ weerstand (1-3 nodig) €0,15 470O weerstand
1 x LED rood €0,15
1 x LED geel €0,15
1 x 2-pin female connector €0,25  
1 x 3-pin female connector €0,25  
1 x 5-pin female connector €0,25  
2 x 6-pin female connector €0,50  
2 x 15-pin female connector €0,75  
1 x Arduino Nano / Every €20,00  
1 x SK6812 LED-strip 625 LEDs   WS2812
1 x  KY-040 Keyes Rotary Encoder €2,00 KY-040 Keyes Rotary Encoder
1 x 4x3 membrane keypad €10,00

 

 

 

1 x RCT DS3231 Precisie klok module ZS-042 €5,00 DS3231
1 x CR 2032 3V lithium batterij €3,00 Batterij
1 x lichtsensor €0,85 Lichtsensor
1 x 22kΩ weerstand €0,15 22kO weerstand
1 x Adapter 5V gelijkstroom, 2 Ampere €12,50 Voeding220V
1 x Female 5.5 x 2.1mm DC Power plug €2,00  
1 x Verlichtingsgrondplaat 3 x 300 x 300 mm MDF-plaat €3,00  
1 x Adapter 5V gelijkstroom, >=2 Ampere €20,00 Voeding
Wireless Serial 6 Pin Bluetooth RF Transceiver Module HM10 (voor iPhone, iPad, android) €10,00 HM10 BT
Wireless Serial 6 Pin Bluetooth RF Transceiver Module HC05 (Android, W10) €10,00 HC05 BT
     
Gesoldeerde en geteste printplaat SK6812-klok €60,00  
     


De verlichtingsgrondplaat in elkaar zetten

Verlichtings grondplaat

De afstand tussen de LEDs op de strip zijn geschikt om een klok van 50 x 50 cm (60 LEDs/m) te maken.
Je kan er voor kiezen om de 625 LEDs van de klok in 25 rijen met 25 LEDs  te plakken of alleen LEDs achter de letters die moeten oplichten.
Dat laatste heeft als voordeel dat er minder LEDs nodig zijn en dat je minder gaten hoeft te boren in de spacerplaat. Er zijn dan wel veel meer soldeerpunten die elk op zich storing kunnen opleveren. 
De software heeft ook een digitale tijdaanduiding die je alleen kan gebruiken als je alle 625 LEDs installeert.

Je kan er ook voor kiezen om in een 1 cm dikke MDF-plaat de oplichtende woorden met een decoupeerzaag uit te zagen.
Schilder dan wel de binnenkanten zuiver wit anders wordt het witte licht groezelig.

Plak de strips van links naar rechts op de oneven regels en van rechts naar links over de even regels. Volg de pijltjes op de strip.
Solderen van de LEdSolderen van de LEDs
Ik vind het handig om vertint koperdraad te gebruiken. Je soldeert dan bijvoorbeeld alle 5V aansluitingen aan de linkerkant van de strip en alle GND aan de rechterkant van de strip
Boor hiervoor een klein gaarje door de plaat naast alle 5V aansluitingen aan de linkerkant van de strip en naar de GND aan de rechterkant
Buig een hoek van 90 graden, steek de draad door het gaatje en soldeer de draad vast aan de LED-strip. 
Arduinio Nano
Soldeer de pootjes van de Nano Every zo dat de lange pootje onder zijn als de chip en usb aansluiting boven liggen.
De nummers en teksten op de Nano, die je na het solderen nauwelijks meer kan lezen, moeten dan overeenkomen de de nummers op de PCB printplaat.
 
  

Breng soldeer aan op de LED-stripaansluiting en soldeer later de draad in de soldeerklodder.

Er gaat bij volle belasting redelijk veel stroom (5A) lopen. Als je alle strips achter elkaar gaat doorverbinden loopt er bij de eerste LEDs veel stroom en moet de draad dik zijn.
Ik maak per twee regels een aansluiting vanaf de voedingsdraad met 30AWG = 0.25mm diameter.
30AWG-draad kan 0.9 A stroom verdragen
of ongeïsoleerd vertint koperdraad van 0.6mm aan de ene kant van de strips de 5V aansluiting en aan de andere kant de aarde aansluiting.
Zorg er uiteindelijk voor dat elke strip zijn voeding heeft.
Op de voorkant, op de LEDs, komt de spacerplaat te liggen en deze moet plat de ondergrond liggen om lichtlekkage te voorkomen.

Spacerplaat
SpacerplaatAchterkant na bedraden

In de signaaldraad tussen LED_PIN 5 (D5) van de Arduino en de SK6812 LED-aansluiting Di zit een 470 Ohm weerstand.
Over de GND en 5V naar de LED-strip zit een 1 mF (1000 uF) condensator om de inschakelspanning te dempen.
De LEDs werken wel zonder deze twee componenten (onrush preventer) maar kunnen beschadigd raken.
Het onrush preventer schema staat hieronder.
Je kan alle componenten zonder de printplaat direct op de pennen van de Arduino Nano aansluiten.
Er is ook een PCB waar alles op gesoldeerd kan worden.
Deze printplaat kan ook gebruikt worden voor de fibonacciklok.
Onderin deze pagina de laatste PCB versie.

OnrushPCB V03
PCB V03
De aansluitingen in de kast 

Hieronder een opsomming van de aansluitingen op de Arduino

// digitale poortaansluitingen  D2 - D13
enum DigitalPinAssignments {      // Digital hardware constants ATMEGA 328 ----
 RX           = 0,                // Connects to Bluetooth TX
 TX           = 1,                // Connects to Bluetooth RX
 DCF_PIN      = 2,                // DCFPulse on interrupt  pin
 encoderPinA  = 3,                // right (labeled DT on decoder)on interrupt  pin
 clearButton  = 4,                // switch (labeled SW on decoder)
 LED_PIN      = 5,                // Pin to control colour SK6812/WS2812 LEDs
 BT_TX        = 6,                // Connects to Bluetooth RX
 BT_RX        = 7,                // Connects to Bluetooth TX
 HC_12TX      = 6,                // HC-12 TX Pin  // note RX and TX are reversed compared with a BT Module
 HC_12RX      = 7,                // HC-12 RX Pin 
 encoderPinB  = 8,                // left (labeled CLK on decoder)no interrupt pin  
 secondsPin   = 9,
 HeartbeatLED = 10,               // PIN10        = 10,                        // PIN 10 
 DCFgood      = 11,               // DCF-signal > 50    //PIN11        = 11,   // PIN 11
 PIN12        = 12,               // PIN 12             // led = 12,          // MKR1010
 DCF_LED_Pin  = 13,               // DCF signal
 };
 
enum AnaloguePinAssignments {     // Analogue hardware constants ----
 EmptyA0      = 0,                // Empty
 EmptyA1      = 1,                // Empty
 PhotoCellPin = 2,                // LDR pin
 EmptyA3      = 3,                // Empty
 SDA_pin      = 4,                // SDA pin
 SCL_pin      = 5,                // SCL pin
 EmptyA6     =  6,                // Empty
 EmptyA7     =  7};               // Empty
 

De klok in elkaar zetten

Het is handig om de onderdelen van de klok met papierafplakband vast te plakken. Dit plakband komt makkelijk los.
Plak de verlichtingsplaat en spacer aan elkaar vast.
Plak over de spacer een wit vel papier. Papier geeft een mooie tekening aan de verlichte letters.
Leg de woordplaat over het papier en fixeer deze ook met plakband.
Bij een hardhouten klok wordt, afhankelijk van de uitvoering, de woordplaat in de sleuf in de kast geschoven. Monteer daarna de vierde, onderkant van de kast.
Verlijm dit of plak het met plakbank tijdelijk vast.
Als alles goed gelabeld is kunnen de klok, rotary encoder, LDR, voeding aangesloten worden.
Monteer de kast af.


Bluetooth-verbinding

Met de HC05 of HM-10 Bluetooth-module kan er een Bluetooth-verbinding met de klok gemaakt worden.
De HC05 communiceert alleen met Android. De HM-10 communiceert zowel met Android als Apple-IOS.
In onderstaande link staat beschreven aan welke pins de module aangesloten en hoe de naam van de module aangepast wordt.
Met een Bluetooth-terminal app op de telefoon kan de tijd als hhmmss of hhmm naar de klok gestuurd worden.
De klok stuurt elke minuut gegevens, naar de terminal app terug.
Voor Windows phone, Android en Iphone zijn Bluetooth terminal apps te vinden.
De Bluetooth terminalprogramma’s zijn ook voor PC’s te vinden.

De Bluetooth-module communiceert tussen RX (read) en TX (transmit) met 3.3V.
Het is mogelijk om hem direct op de Arduino-poorten aan te sluiten maar het verlengt de levensduur van de module als de spanning naar 3.3V wordt verlaagd.
Dit kan met een 3.3V-5V TTL Level Logic Level Converter module, of met een “voltage divider”-schakeling met weerstanden zoals hieronder weergegeven.
Je kan de weerstanden ook in de bedrading van de module naar de printplaat monteren.

Schema BT


Bluetooth met de HM10 BLE voor Apple IOS
Met deze HM10 BLE module kan gecommuniceerd worden met Apple IOS en Android.

Daarna kan met een serial terminal programma (BLEserial HM-10 voor IOS of voor Android BLE scanner van Blue Pixel Technologies ) commando's worden overgestuurd en de klokuitvoer opgevangen worden.

Gekoppeld via een FTDI kan met de Arduino serial monitor met de Bluetooth-module AT-commando's gegeven worden.
Zie vorige paragraaf voor AT commando's
AT+NAMEnieuwenaam geeft de module de naam: nieuwenaam

Meer info op deze pagina.

HM-10 BT

DCF77-ontvangst met DCF-2 module

DCF-2
Helaas storen de IC's in de kleuren-LED's de DCF-ontvangst.

Met deze kleuren-LEDs moet de DCF ontvangstmodule ,10 cm of meer van de LEDs opgehangen worden.
In de laatste softwareversies V058 en hoger worden twee ontvangstmethoden gecombineerd;
de Arduino standaard DCF77 library en een door mij geschreven interrupt vrije methode. 
Ik heb ze in de software gecombineerd waardoor bij slechte ontvangst de efficiency met meer dan 50% toeneemt.
Van de 44000 minuutontvangsten, waarbij de ferrietstaaf 7 cm van WS2812 kleuren-LEDs hing, waren 13000 door de DCF77 library en 22000 door de interruptvrije routine goed verwerkt tot een tijd en datum.

Deze DCF77-module heeft drie aansluitingen; +, - en signal.
Sluit de + aan op 5V en de - op GND.
Signal gaat naar pin 2.
NB Pin 2 werd gebruikt voor de rotary encoderPinB left (labeled CLK on decoder). Deze wordt nu aangesloten op P8.
(Pin 2 is een interrupt pin. Voor een optimale DCF-ontvangst is het reageren op een interrupt noodzakelijk voor de rotary encoder niet.
Kijk in de source van de versie van de software onder "PIN assigments" voor de juiste aansluiting.
Hier wat achtergrondinformatie over DCF.

De laatste PCB versies V14  van de PCB heeft vaste aansluitingen voor de meest gebruikte onderdelen gekregen.
Het is nu mogelijk om te kiezen of de seriele verbinding met de Bluetooth-module via de standaard aansluitingen 0 en 1, TX en RX, gaat of dat deze via aansluitingen D6 en D7 gaat.

Als in de software de #define BLUETOOTHMOD wordt gedefinieerd  worden D6 en D7 gebruikt voor de Bluetooth-module en moeten de pads bij D6 en D7 dicht gesoldeerd worden.
Als de Bluetooth-module op poort 0 en 1 wordt aangesloten blokkeert de Bluetooth-module het uploaden van programma's in de Arduino en zal bij uploaden ontkoppeld moeten worden. Het programma wordt wel kleiner en gebruikt een library minder.


 PCB versie V14
PCB V13

Source code
Four-language_Clock_V003.ino   als ZIP-file

Versie februari 2022 Deze versie is ook geschikt voor klok met één taal en 144 letters
Vier talen woordklok_V078.ino  als zip-file

Libraries needed in deze zip-file zijn de benodigde libraries verpakt.

Software
De gebruikte libraries zijn in de Arduino IDE te vinden.
Als dat niet meer het geval is zijn hieronder de url's naar de library gezet

#include "RTClib.h"              // https://github.com/adafruit/RTClib 
#include <TimeLib.h>             // For time management 
#include <Adafruit_NeoPixel.h>   // https://github.com/adafruit/Adafruit_NeoPixel 
#include <SoftwareSerial.h>      // For Bluetooth
#include <Encoder.h>             // http://www.pjrc.com/teensy/td_libs_Encoder.html                      
#include "DCF77.h"               // http://playground.arduino.cc/Code/DCF77 


 <- Startpagina

Ed Nieuwenhuys. januari 2022
18 maart 2021