Skip to content

Projectbeschrijving

CharlesVanDen edited this page Feb 28, 2022 · 6 revisions

Alternatieve besturingsprint voor de WoordKlok

Omdat ik de beperkingen van de woordklok beu was, heb ik zelf een alternatieve, open source besturingsprint ontworpen, gebaseerd op een ATMEGA microprocessor. Hierbij blijft de frontplaat met de LED’s hetzelfde. Kenmerken:

  • Zelf na te bouwen
  • Uitsluitend through hole componenten (geen smd)
  • Printplaatje past in ruimte die daarvoor bedoeld is
  • Ontwerp printplaat in CADsoft Eagle
  • ATMEGA328(p) microprocessor
  • Geprogrammeerd in c (Atmel Studio)
  • Originele animaties
  • Het is mogelijk de software zelf aan te passen
  • Voorzien van een ESP01 die met wifi binnen secondes de tijd ophaalt van internet
  • 6-9V voeding
  • Lichtsterkte afhankelijk van omgevingslicht
  • Automatische omschakeling zomer- en wintertijd
  • Geen geluid
  • Geen Real Time Clock (ook niet nodig)
  • Geen Bluetooth
  • Geen touch functies

Onderdelenlijst

  • Printplaat
  • 6V voeding
  • U1 ATMEGA88P DIP28
  • IC1 74HC595N DIL16 8-bit SHIFT REGISTER, output latch
  • IC2 74HC595N DIL16 8-bit SHIFT REGISTER, output latch
  • IC3 78L33 VOLTAGE REGULATOR
  • IC4 MCP1702-5002 VOLTAGE REGULATOR
  • U$1 KID65783 DIP18 source driver 8 channel
  • U$2 KID65783 DIP18 source driver 8 channel
  • U$3 MBI5026 DIP24 Constant current LED sink driver
  • C1 100nF C-EU025-024X044
  • C2 100nF C-EU025-024X044
  • C3 100nF C-EU025-024X044
  • C4 100nF C-EU025-024X044
  • C6 12pF C-EU025-024X044
  • C7 12pF C-EU025-024X044
  • C8 1uF C-EU025-024X044
  • C9 1uF C-EU025-024X044
  • D1 1N4148 DIODE
  • JP1 2X04 ESP01
  • JP2 1X06 PIN HEADER
  • JP3 1X14 PIN HEADER
  • JP4 1X13 PIN HEADER
  • JP5 1X03 PIN HEADER
  • SV1 1X06 PIN HEADER
  • X2 1X02 PIN HEADER
  • L1 10uH inductor
  • Q1 16MHz CHRISTAL
  • R1 590E R-EU_0204/7
  • R2 120k R-EU_0204/7
  • R3 sensor LDR
  • R4 10k R-EU_0204/2V
  • R5 10k R-EU_0204/2V
  • R6 1k7 R-EU_0204/7
  • R7 3k3 R-EU_0204/7
  • R8 10k R-EU_0204/7 Schema Ik heb gekozen voor een ATMEGA328 of ATMEGA328p (bekend van de Arduino) omdat deze heel gemakkelijk overal goedkoop te krijgen is. De 74HC595 is het overbekende schuifregister. De MBI5026 is een constant current LED driver met seriële input. De constant current wordt bepaald door de waarde van R1. De MBI5026 is voor minder dan een euro te verkrijgen op een welbekende Chinese site. Minder bekend is de KID65783 van de firma KEC, deze verzorgt de spanning voor de anodes van de LED’s. Deze source driver kan voedingsspanningen aan tot wel 50V. Dat hebben we hier niet nodig, maar het bleek dat 5V net allemaal te krap is (het werkt wel, maar de LED’s branden niet voluit) en daarom heb ik gekozen voor een voedingsspanning van minimaal 6V. De LED’s vragen namelijk 3,2V, de MBI5026 0,4V en de KID65783 1,9V. Hogere voedingsspanning dan 6V mag wel maar heeft niet veel zin, omdat de stroom door de LED’s uiteindelijk bepaald wordt door MBI5026. De KID65783 kost ongeveer €2,50 per tien stuks.

De MCP1702-5002 is een low drop regulator die 5V geeft voor de ATMEGA, de 74HC595 en de MBI5026. Ik heb niet gekozen voor een 78L05 omdat deze een hogere dropout voltage heeft (1,7V). Mocht je toch een 78L05 inzetten, let dan op: de aansluitingen zijn anders! De 78L33 is inmiddels vervangen door een MCP1702-3302 omdat de 78L03 niet voldoende stroom kan leveren voor de ESP01. De MCP1702-33 genereert de 3,3V voor de ESP01. De ATMEGA kan weliswaar ook wel op 3,3V draaien, maar de MBI5026 vereist 5V voeding. R6/R7 verzorgen de level conversion van de ATMEGA (5V) naar de ESP01 (3,3V). Level conversion andersom was niet nodig omdat de ATMEGA de signaalniveaus van de ESP01 zonder meer herkent. De ATMEGA en de ESP01 communiceren met elkaar via een seriële verbinding op 51200b/s. De huidige software in de ATMEGA stuurt dan een antwoord terug en een hoop debug informatie waar de ESP01 niets mee doet. De huidige software in de ESP01 stuurt eveneens debug informatie de lijn op waar de ATMEGA grotendeels niets mee doet. De ATMEGA reageert alleen maar op strings in de vorm "T22:23:24> of "D2017-12-31>". Let op: de tijd is in UTC en deze wordt door de ATMEGA omgerekend in lokale tijd. Daarbij is ook de datum nodig (i.v.m. zomer- en wintertijd). Verder doet de ATMEGA niets met de datum. Ik heb nog overwogen om uitsluitend een ESP te gebruiken en geen ATMEGA. Ten slotte heeft de ESP8266 ruim voldoende rekenkracht. Ik heb toch gekozen voor de ATMEGA omdat ik daar zelf veel meer programmeerervaring mee heb. Het programma in de ESP01 heb ik beperkt gehouden.

De software in de ESP01 is een Arduino toepassinkje dat niet veel meer doet dan een wifi-verbinding opzetten, de tijd ophalen van een ntp-server en die vervolgens serieel outputten. Je netwerknaam (SSID) en wachtwoord kan initieel ingesteld worden. De ESP01 werkt daartoe als tijdelijke wifi-hotspot. Om de software in de ESP01 te krijgen volstaat een seriële USB-TTL adapter. Handig is de ESP01 adapter, wat in feite niet veel meer is dan een seriële USB-TTL adapter gecombineerd met een 3,3V LDO en een 8-pins female header. Let op: bij het programmeren moet GPIO0 met massa worden verbonden! ESP01 adapter De ESP01 functioneert als webserver waarmee instellingen in de klok in te stellen zijn (tijdzone, instellen animatie, enz.). Ik heb een header SV1 voorzien op de printplaat om de ESP01 in system te kunnen programmeren.

De software in de ATMEGA is een enkel c-programma dat met Atmel Studio wordt gecompileerd. De software heeft verschillende animaties voor de overgang van het ene naar het volgende tijdstip door te “schuiven met letters”. De ATMEGA kan in circuit worden geprogrammeerd via 6-pins header JP2 en een programmer, bijvoorbeeld een usbasp.

De LED matrix is grotendeels identiek aan het origineel. De anodes van de LED’s worden per kolom gebundeld en aangesloten op JP4. De kathodes van de LED’s worden per rij gebundeld en aangesloten op JP3. Van JP3 worden de aansluitingen 1 t/m 12 gebruikt voor de matrix. De vier hoek-LED’s (geel in de tekening) hebben geen aparte aansluitingen gekregen maar zijn opgenomen in de LED matrix. Hiervoor dient aansluiting 13 van JP3. Deze moet worden verbonden met de vier kathodes van de hoek-LED’s. De anodes van de hoek-LED’s moeten worden verbonden met de kolommen 1 (linksboven), 2 (linksonder), 12 (rechtsonder) en 13 (rechtsboven). Aansluiting 14 van JP3 blijft onbenut, als reserve voor toekomstige uitbreidingen. Er kunnen dus in principe nog 22 extra LED’s worden aangesloten. Schema hoe de LED's aan te sluiten JP5 is verbonden met PD2 en PD3 van de ATMEGA en is een aansluiting voor toekomstige uitbreidingen. De printplaat is ontworpen in CADsoft Eagle. De afmetingen zijn ongeveer 10 x 4 cm. Dit is kleiner dan de oorspronkelijke printplaat (14x4) maar dit heeft twee grote voordelen: Met deze afmetingen kan de printplaat worden ontworpen met de gratis versie van Eagle. En het laten vervaardigen van zo’n printplaat in China is tegenwoordig ongelooflijk goedkoop. Het was wel een beetje worstelen met de ruimte, zeker omdat ik uitsluitend through hole componenten wilde gebruiken, maar uiteindelijk paste alles.

Charles, 18 mei 2018, update maart 2020 en 2022

Clone this wiki locally