De Fibonacci-klok was een kick-starterproject van Philippe Chrétien.
Wat deze klok zo aantrekkelijk maakt is zijn eenvoud, de
vindingrijkheid en de voortdurend veranderende Mondriaan-gelijkende schilderijen-display.
Mondriaan was op zoek naar eenvoud en dat begon bij het Realisme
en dat via het Kubisme bij zijn kermerkende stijl eindigde.
Naast het kleurenspel nodigt deze klok uit tot het narekenen
van
de
gepresenteerde
tijd.
Maar een klok? En wat heeft Fibonacci met Mondriaan te maken?
Rood + Blauw = uur, (Geel + Blauw) x 5 = minuten. 5 + 3 = 8 uur, 1 + 3 = 4, 4 x 5 = 20 minuten |
|
|
En dit is alles wat er nodig is |
Fibonacci was een Italiaanse
wiskundige die de naar hem genoemde getallenreeks ontwikkelde.
Het was niet een normale getallenreeks maar een die vaak in natuurlijke processen
voorkomt. Bijvoorbeeld in zonnebloemen en schelpen.
De reeks is simpel.
Elk volgende getal in de reeks is de som van de twee voorgaande: 1, 1,
2,
3, 5, 8, ....
Als wij 1,
1,
2,
3, 5, 8 optellen
komen wij op 12. Ah, precies het aantal uren in een dagdeel en 12 vermenigvuldigt
met 5 is het aantal minuten in een uur.
Voorbeeld: 4 uur. Dat kan een optelsom zijn van : 1+1+2 of 1+3.
Voorbeeld: 8 uur. Dat kan bereikt worden met het optellen van 1+1+2+4, of
1+3+4 of 3+5.
De display van de klok is een weergave van de Fibonacci-reeks en de oppervlakte
van de vlakken is de verhouding van de oppervlakte in de reeks.
In de klok op de foto hier boven is de waarde van het gele
vlakje 1, de witte vlakken 1
en
2,
het
blauwe vlak 3 en het rode vlak 5 waard.
Wat de klok doet is de verlichting aanzetten achter de vlakken die opgeteld
moeten gaan worden.
Om de uren en minuten te combineren wordt een derde kleur, blauw, gebruikt.
De rode vlakken zijn de uren.
De gele vlakken
vermenigvuldigd met 5 zijn de minuten
en de blauwe vlakken
als er een rode en gele hetzelfde vlak bezetten.
De witte vlakken betekent nul, dus die vergeten met optellen.
Als het nu duizelt is het goed. Nog een voorbeeld.
3:35. dat zijn drie rode (uren) vlakken en 35/5 = 7 gele (minuten) vlakken.
Drie kan je maken met het 1 vlak + 2 vlak of alleen met het 3 vlak.
Zeven kan zijn 1 + 1 + 5 of 2 + 5 of 1 + 1 + 2 + 3.
3:35 tot en met 3:39 geven dezelfde 7-minutenvlakken maar de kloksoftware
probeert elke minuut een andere combinatie te vinden.
Dit gaat willekeurig dus het kan zijn dat hij weer dezelfde combinatie vindt en niet
verspringt.
De software, die hieronder te downloaden is, heeft nog 8 andere kleurthema's.
Het programma wordt met de Arduino
IDE in een Arduino Nano geladen. De software
stuurt de juiste signalen naar de WS2812 of SK6812 LED's.
Dick heeft een eigen handleiding geschreven en die
vind je hier.
De handleiding voor de Fibonacci
vierkante kokerklok gaat dieper in op de werking van de software en dergelijke.
The casing building blocks |
Eerst moet een kast gemaakt worden. In dit voorbeeld een kast
van 10 x 10 x 20 cm.
Van de vele variaties die ik gemaakt heb is heeft deze uitvoering de mooiste
verhoudingen en grootte voor een huiskamer.
Maak hierin de compartimenten waarin de LEDs komen te liggen dat voorkomt
dat het licht naar een ander compartiment verstrooid.
Schilder alles binnen in een compartiment wit anders komt de bruine kleur terug
als de LEDs wit licht geven.
Wit perspex van 2 mm dik werkt mooi als voorkant. Bij 3 mm perspex verstrooit
het licht te veel naar het naastliggende compartiment.
De kaders van de segmenten kan met zwarte viltstift of zwarte tape op het
perspex geaccentueerd worden.
Hardware
Prijs Euro
|
||
Arduino Nano |
€
20,00 |
|
2 x 15-pin female sockets | € 0,50 |
|
Printplaat voor Fibonnacci-klok | € 15,00 |
|
1
x RCT DS3231 Precisieklokmodule ZS-042 |
€
5,00 |
|
1 x CR 2032 3V lithium batterij |
€
3,00 |
|
1
x Dupont-kabel vrouw-vrouw 20-aderig |
€
3,00 |
|
2 x 6-pin female socket connector |
€
1,50 |
|
1 x KY-040 Keyes Rotary Encoder |
€
2,00 |
|
1 x lichtsensor |
€
0,85 |
|
1 x 22kΩ weerstand |
€
0,15 |
|
1 x 1000 µF condensator |
€
0,25 |
|
1 x 470Ω + 1.1kΩ en 2.2kΩ weerstand |
€
0,50 |
|
1
x Voeding 5V gelijkstroom 2 Ampere |
|
€
15,00 |
1
x 50 cm zwart-rood voedingskabel (0.14 mm2) |
|
€
0,20 |
1 x set krimpkous 20 cm x 1.5 mm diam + 10 cm x 5 mm diam |
€
2,00 |
|
14 Leds (60 LEDs/m) WS2812B Full color led strip |
€
5,00 |
|
14 LEDs (60 LEDs/m) SK6812 Full color led strip |
€
5,00 |
|
Optioneel |
|
|
Wireless Serial 6 Pin Bluetooth RF Transceiver Module HC05 (Android, W10 |
€ 10,00
|
|
Wireless Serial 6 Pin Bluetooth RF Transceiver Module HM10 (voor Iphone, IPad) |
€
10,00 |
|
1 x 4x3 membrane keypad | € 10,00 | |
DCF77 DCF-2 module |
€
20,00 |
|
|
|
|
Verzending enveloppe BE onverzekerd | €5.00 |
|
Verzending aangetekend tot €500 verzekerd NL | €15.00 |
|
Verzending aangetekend tot €500 verzekerd BE | €20.00 |
De tijd van de klok gelijk zetten en de diverse opties kiezen kan met een seriële
terminal
en het menu dat de software toont.
In een seriële terminal kunnen commando's worden gegeven en ontvangen. Als de Arduino
via de USB-kabel met een PC is verbonden kan dat met het toetsenbord .
Er zijn diverse mogelijkheden om serieel met de Arduino te communiceren.
- Met een Bluetooth module met de Arduino verbonden kan er met een seriële terminal app op de mobiele telefoon of laptop worden gecommuniceerd.
- door een USB-kabel tussen de Arduino en de PC/laptop te verbinden en de 'seriële monitor' van de Arduino IDE, dat gratis te downloaden is, te gebruiken.
-Met een USB-kabel tussen de Arduino en de PC/laptop en het gratis Windows programma Termite
Met de Arduino IDE kan ook de software bekeken, aangepast en in de Arduino
Nano gezet worden.
De Fibonaccikloksoftware is afgeleid van de woordklok,
een
ander project op deze site.
Zowel WS2812 RGB als SK6812 RGBW LED-strips kunnen worden
gebruikt. SK6812 LEDs hebben naast de drie RGB kleuren ook een aparte witte LED.
Deze LEDs geen mooier licht dan de oudere WS2812 LED-strips
Met de software kan naast een rotary draaiknop ook diverse membraan toetsenborden en een DCF-module uitgelezen worden.
De DCF-ontvangst wordt helaas gestoord door de
SK6812 en WS2812 LEDs en daarom moet deze ontvanger een paar decimeter van de klok worden gehangen.
Met displays van het type MAX7219 en HT16K33 kan de tijd
op een display worden getoond. (Met defines worden de geinstalleerde opties in
de software aan- of uitgezet.)
Solderen van de onderdelen
Controleer de weerstanden altijd met een multimeter voordat ze
gesoldeerd worden.
De Arduino Nano wordt niet vast gesoldeerd op de PCB. Gebruik de
15-pins voetjes. Het is dan nog mogelijk om de Arduino te vervangen mocht deze
defect raken
Om de voetjes evenwijdig te solderen is het handig om de Arduino er losjes in te
zetten (druk hem er niet helemaal in) en eerst de hoekpunten te solderen.
De langste poot van de condensator is de + , positieve
pool.
Op de condensator is de - ook aangegeven met de witte verticale streep vaak met
een - er in geprint.
De langste poot van de LED is de + , positieve pool.
De min van de LED is aangesloten op het driehoekige stukje metaal in de LED.
De lichtgevoelige sensor (LDR) heeft geen polariteit.
Monteer de LDR bij voorkeur voor in de kast in de rand.
In mijn klokken boor ik een gat licht schuin horizontaal door de bovenste plank.
De 1.1 en 2.2 kOhm weerstanden zijn nodig als er een
Bluetoothmodule wordt aangesloten.
De weerstandwaarden zijn aangegeven op de PCB.
De klok met maximaal 15 LEDs kan gevoed worden met de
USB-kabel die in de Arduino gaat.
Het is ook mogelijk om 5V op diverse plekken op de PCB aan te sluiten die dan
ook de Arduino voeden.
Knip een oude USB kabel door en gebruik een oude telefoon stekkervoeding als
voedingsbron.
De klok gebruikt maximaal 0.15A bij 5V.
De RTC tijdsmodule bevat een LIR2032 of CR2032 batterij. De LIR2032 is een
oplaadbare CR2032.
Als er een CR2032 in de RTC tijdsmodule zit is het raadzaam de kleine weerstand boven de
tekst SCL op de achterkant van de van de module te verwijderen. Deze weerstand
kan met een soldeerbout los gesoldeerd worden.
Rotary knop
Als een de rotary draaiknop aangesloten wordt verbind dan:
D3 aan DT op decoder
D4 aan SW op decoder
D8 aan CLK op decoder
en sluit de + op 5V en GND aan GND.
De klok kan met de rotary bedient worden door de knop in te drukken. Een druk op
de knop activeert het menu.
Na 60 seconden moet weer gedrukt worden. Dit voorkomt dat stoorpulsen van het lichtnet de tijd kan verzetten.
Een keer drukken op de knop kunnen de uren worden aangepast door de knop te
draaien.
Twee drukken de minuten.
Drie keer drukken de lichtsterkte.
Vier keer en meer drukken geeft een keuze tussen de diverse kleurpaletten. Default is het Mondriaan-kleurenpalet.
Het is vrij lastig om met de rotary draaiknop de tijd
in te stellen.
De membraanknoppen of een Bluetooth-verbinding met een app op een
mobiele telefoon zijn aan te bevelen.
4x3 membraantoetsenbord
Als een 3x4 keypad wordt gebruikt kunnen de 7 aansluitingen tussen pin D6 tot en met
pin D12 op de Arduino worden aangesloten.
De draad die bij de # begint wordt
op pin D6 geschoven en de rest daarnaast. Soldeer daarvoor 7 rechte pinnen op de
printplaat (PCB) naast de Arduino.
Er is ook een eendraads uitvoering (+ 2 draden voor de voeding)
te
maken. Die wordt op pin A3 aan de rechterkant van de Arduino aangesloten.
Soldeer een pinnetje op de PCB naast A3 dat op de Arduino staat geprint.
(Sluit de keypad wel aan of sluit een weerstand van 5k of meer aan tussen A3 en
GND. De analoge poort zal anders voordurend willekeurige waarden inlezen en zal
het menu in de klok hierop reageren.)
Hier staat hoe je een 'one wire
keypad' maakt.
Kies de juiste toetsenborddefinitie in the software (staat ongeveer bij regel
90).
In dit voorbeeld wordt de "eendraads" uitvoering van het 4x3 toetsenbord
gebruikt
//#define KEYPAD3x4 // Use a 3x4 keypad with 7 wires //#define KEYPAD3x1 // Use a 3x1 keypad with 4 wires //#define ONEWIREKEYPAD3x1 // Use a 3x1 keypad with one wire #define ONEWIREKEYPAD3x4 // Use a 3x4 keypad with one wire
Bluetooth met de HM10 BLE voor Apple IOS en Android
Met een HM10 BLE of CC2541 chipset compatibele BLE zoals de JDY-23 module kan draadloos gecommuniceerd worden met Apple IOS en Android.
Installeer de app op een
Apple telefoon "BLEserial
HM-10", "BLESerial
Pro" of de gratis "BLEserial tiny" (App store).
Serial Bluetooth Terminal van Kai Morich werkt goed als terminal.
Maak met de app op de telefoon verbinding met
de BLE module en gebruikt de
terminal voor de communicatie.
Nadat verbinding is gemaakt met de klok wordt de tijd en lichtsterkte elke 30 seconden doorgegeven.
Met het commando: I of i wordt een lijst met mogelijke commando's
getoond.
Zie
hier voor meer informatie over
Bluetooth.
Start 'Serial monitor' in the Arduino IDE.
Verander rechtsonder LF&CR settings naar “No line ending” en de baudrate naar
9600 Baud.
Voer in de de Serial monitor in:
AT+RESET
AT+NAMEFibonacciklok (Of een andere naam)
AT+RESET
De passkey van de module = 0000
Fake HM10 modules, de onderste, missen een kristal.
Sommige fakes laten zich niet zoals boven programmeren.
In deze beschrijving is een
andere methode, met een FTDI, om de naam et cetera in de Bluetooth
chip aan te passen
***********************************************************************************************
Handleiding
Handleiding FibonacciklokV040.pdf
Software
Laatste stabiele versie V040 Source code
Oudere kleinere versie V007 Source code
Op Github
staan de nieuwste versies
Used libraries
#include <Encoder.h> // http://www.pjrc.com/teensy/td_libs_Encoder.html #include <Wire.h> // Default Arduino library #include <RTClib.h> // https://github.com/adafruit/RTClib #include <EEPROM.h> // Default Arduino library To store data in EEPROM #include <TimeLib.h> // Arduino library Time by Michael Margolis http://playground.arduino.cc/Code/Time/ #include <Adafruit_NeoPixel.h> // https://github.com/adafruit/Adafruit_NeoPixel for LED strip WS2812 or SK6812 #include "Adafruit_Keypad.h" // https://github.com/adafruit/Adafruit_Keypad// #include <SoftwareSerial.h> // Arduino library for HC12 or Bluetooth
De "library"-folders kunnen na het uitpakken van de
ZIP-file in de folder "libraries" gekopieerd worden.
Deze folder staat in de folder Documenten/Arduino of in de folder waar de
scripts gesaved worden.
Start daarna de IDE opnieuw op.
Light weight library to control WS2811/WS2812 based LEDS and LED Strings for 8-Bit AVR microcontrollers.
If link above is broken the library from my site
FibonacciKlok_V007 (Als zip file)
Ed Nieuwenhuys, 26
november 2023,
25 juli
2022
10 mei
2022
22 februari 2021
10 mei
2020
2 april 2020
15 december 2019
13 november 2019
29 april 2019
29 October 2018