Bouwinstructies SK6812 woordklok

Terug naar Start

Deze woordklok gebruikt de SK6812 RGBW LED-strips.
RGBW LED-strips hebben naast de RoodGroenBlauw-LED ook een witte LED ingebouwd. Hierdoor is het mogelijk om mooi helder wit te krijgen. Dit kan ook door rood, groene en blauwe LED aan te zetten maar dit kost relatief veel energie en het wit heeft dan een lichte zweem
De SK6812-LED's bevatten ieder een kleine processor waardoor de hele keten van LEDs met één draad zijn aan te sturen.

 <- Startpagina



De kleurenwoordklok bestaat uit de onderdelen zoals in de tabel hieronder is weergegeven.
De woordklokonderdelen zijn voor 25x25cm en 50x50cm woordplaten ontworpen.
Hierbij is de hartafstand tussen de letter 1.67 of 3.33 cm. De LED-strips hebben 30 of 60 LEDS per meter op een strip.
De 25cm klok heeft 60 LEDs per meter strips en de 50cm klok 30 LEDs/meter.
In de tabel staan de prijzen waarvoor je de onderdelen bij mij als zelfbouwpakket kan bestellen.

De kast, woordplaat en spacer worden door een timmerman en beletteraar met de hand gemaakt.
Ze zijn uniek maar zijn daarmee een aanzienlijke kostenpost. Zelf de kast maken is een uitdaging.
Kasten kunnen van diverse soorten hardhout gemaakt worden of van MDF zodat ze in een gewenste kleur te verven zijn.
De bouwtijd van een klok is 20 - 30 uur.
Thomaha
Frontplaat Font Thomaha


Benodigdheden

Soldeerbenodigdheden
Multimeter

1 x Kast voor 50x50 cm woordplaat
Op aanvraag +/-€100,00
kast
1 x Woordplaat 50x50 cm met font Thomaha. Vinyl op museumglas. Op aanvraag +/-€120,00 woordplaat
1 x Spacerplaat, geschuimd PVC wit 10 MM RAL 9003, incl gaten Op aanvraag +/-€40,00 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 WS2812 LED-strip 20 LEDs €10,00 WS2812
1 x SK6812 LED-strip 20 LEDs €10,00 WS2812
1 x SK6812 LED-strip 100 LEDs €40,00 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
100 Leds (60 LEDs/m) WS2812B Full color led strip €40,00 WS2812
Wireless Serial 6 Pin Bluetooth RF Transceiver Module HM10 (voor Iphone, IPad) €10,00 HM10 BT
Wireless Serial 6 Pin Bluetooth RF Transceiver Module HC05 (Android, W10) €10,00 HC05 BT
DCF77 DCF-2 module €20,00 DCF-2
Gesoldeerde en geteste printplaat SK6812-klok €60,00  
Gesoldeerde en geteste verlichtingsplaat SK6812-klok inclusief LEDs €150,00  


De verlichtingsgrondplaat in elkaar zetten

Detail solderen

De afstand tussen de LEDs op de strip zijn geschikt om een klok van 25x25 cm (30 LEDs/m) of van 50 x 50 cm (60 LEDs/m) te maken.
Je kan er voor kiezen om de 144 LEDs van de klok in 12 rijen met 12 LEDs  te plakken of alleen achter de letter 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. 
Mijn ervaring is dat niet perfecte solderingen op de strip na verloop van tijd soms losraken.
De software heeft ook een digitale tijdmodus die je niet kan gebruiken als je niet alle 144 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 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 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 (1A) 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.

VoorkantAchterkant 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
DCF_PIN     = 2,    // DCFPulse on interrupt pin connected to DCF77 module
encoderPinA = 3,    // Rotary right (labeled DT on decoder)on interrupt pin
clearButton = 4,    // Rotary switch (labeled SW on decoder)
LED_PIN     = 5,    // Pin to control colour 2811/2812 leds
BT_RX       = 6,    // Bluetooth RX, Connect to Bluetooth TX
BT_TX       = 7,    // Bluetooth TX, Connect to Bluetooth RX
encoderPinB = 8,    // Rotary left (labeled CLK on decoder)no interrupt pin
EmptyD09    = 9,    // EmptyD09
DCF_LED_Pin = 10,   // pin for LED to display pulse received from DCF77 module
PWMpin      = 11,   // pin for LED to display intensity read from LDR
EmptyD10    = 10,   // EmptyD10
EmptyD11    = 11,   // EmptyD11
EmptyD12    = 12,   // EmptyD12
secondsPin  = 13,


// digitale poortaansluitingen A0 -A5
PhotoCellPin = 2,   // LDR pin
EmptyA3      = 3,   // EmptyA3
SDA_pin      = 4,   // SDA pin van de klok DS3231
SCL_pin      = 5};  // SCL pin van de klok DS3231

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.
Er moet wel met BLE connector of scanner (App store) contact worden gemaakt. (mij nog onduidelijk of het nu nog echt nodig is)
Daarna kan met een serial terminal programma (BLE terminal 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

HM-10 BT

DCF77-ontvangst met DCF-2 module

DCF-2
Helaas storen de IC's in de kleuren-LED's de DCF-ontvangst. Bij de SK6812 LEDs lijkt de storing minder dan bij WS2812 kleuren-LEDs.

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 gecombineert waardoor bij slechte ontvangst de efficiency met meer dan 50% toeneemt.
Van de 44000 ontvangsten waren 13000 door de DCF77 library en 22000 door de interrupt vrije 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. over DCF
Hier wat achtergrondinformatie over DCF.

Energieverbruik klok

De klok verbruikt bij 5V als de LEDs op halve sterkte branden 0.15A.
Als alle LEDs branden, is het verbruik 0.6 A.
Bij normaal gebruikt is een voeding van 5V 1A voldoende.

Source code

Op deze Github link zijn de laatste versies ook te vinden

Voor 96 LEDs met Arduino Nano of Arduino mini
De source code om de klok aan te sturen is te gebruiken voor de Arduino Nano Uno en mini tot versie V056.
Dan moet wel een klok met maximaal 96 LEDs gemaakt worden.
Dat is 1 LED onder elke letter die gebruikt wordt om de tijd weer te geven.
Character_Colour_Clock_V056.ino

Voor 144 LEDs met Arduino Nano Every
Nu sinds 2020 de Arduino Nano Every met 48Kb geheugen ipv 32Kb zeer goedkoop officieel aan te schaffen
In deze versie kan een DCF77-ontvanger gebruikt worden.

In bovenstaande versies zijn  opties aanwezig om met de MKR1010 met WIFI te werken of te compileren voor de ATMEGA 1280/1284 chips.


Versie voor Arduino Nano Every met 144 LEDS.
Character_Colour_Clock_SK6812_1284-V036-Nano-144_LEDs.ino

Let er op dat de gebruikte Adafruit Neopixel library een bug heeft waardoor het vrije geheugen niet goed vermeld wordt.

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

Software
De gebruikte libraries zijn bijna allemaal 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 

Voor WS2812 LED-strips kan eventueel deze kleine library gebruikt worden
Light weight library to control WS2811/WS2812 based LEDS and LED Strings for 8-Bit AVR microcontrollers.
https://github.com/cpldcpu/light_ws2812
Deze library kan misschien ook de SK6812 LEDs aansturen. Dit moet ik nog uitzoeken



 <- Startpagina

Ed Nieuwenhuys. 13 Nov 2020
5 augustus 2020
23 december 2019

 

De laatste PCB versies V13 en 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.
In de huidige versie worden D6 en D7 gebruikt voor de Bluetooth-module en moeten de pads bij D6 en D7 dicht gesoldeerd worden.
De signaaldraad in V14 naar de LEDs is tov V13 verplaatst zodat de postitie van de aansluitingen overeenkomen met de LED-strip.


 PCB versie V14
PCB V13

Bluetooth module HC-05/ZS-040
Verbind VCC en GND, pin 6 aan de TXD en pin 7 aan RXD van de Bluetooth-module.
Laad de volgende sketch om tussen de Arduino en de Bluetoothmodule te kunnen communiceren.
-------------------------
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(6, 7); // RX | TX
void setup()
{
 pinMode(9, OUTPUT);     // this pin will pull the HC-05 pin 34 (key pin) HIGH to switch module to AT mode
 digitalWrite(9, HIGH);
 Serial.begin(9600);
 Serial.println("Enter AT commands:");
 BTSerial.begin(38400); // HC-05 default speed in AT command more
}

void loop()
{
                       // Keep reading from HC-05 and send to Arduino Serial Monitor
 if (BTSerial.available())
 Serial.write(BTSerial.read());

                       // Keep reading from Arduino Serial Monitor and send to HC-05
 if (Serial.available())
 BTSerial.write(Serial.read());
}

---------------------------------
Ontkoppel de Arduino van de USB-kabel zodat de Arduino en Bluetoothmodule spanningsloos zijn geworden.
Leg een draadje tussen de 5V van de Arduino en pin 34. (rechtsboven in de Bluetooth-module als de pinnen naar beneden wijzen. Zie foto).
Sluit de Arduino weer op de PC aan en open de serial monitor in de Arduino software. (icoon rechtsboven onder X (kruisje))
De rode LED op de Bluetooth-module gaat nu langzaam 2sec aan, 2 sec uit, knipperen


Tik in:
AT ? OK
AT+NAME=ED-KLOK
AT+RESET

Default passkey = 1234
--------------------------
Here is an important note, if the key pin is not high, i.e. not connected to Vcc while receiving AT commands(if you did not solder the wire and released it after the module entered AT mode), it will not show the default name even after giving right command. But you can still change the name by the command mentioned above. To verify if the name has really changed, search the device from your pc/mobile. The changed name will appear. To change baud rate, type AT+UART=desired baud rate. Exit by sending AT+RESET command.
Most useful AT commands are
AT : Check the connection.
AT+NAME : See default name
AT+ADDR : see default address
AT+VERSION : See version
AT+UART : See baud rate
AT+ROLE: See role of bt module(1=master/0=slave)
AT+RESET : Reset and exit AT mode
AT+ORGL : Restore factory settings
AT+PSWD: see default password
--------------------------------


BT moduleArduino