Inhoudsopgave:

LEDura - Analoge LED-klok - Ajarnpa
LEDura - Analoge LED-klok - Ajarnpa

Video: LEDura - Analoge LED-klok - Ajarnpa

Video: LEDura - Analoge LED-klok - Ajarnpa
Video: LEDura (Demonstration) : LED clock using Arduino and addressable LED ring 2024, November
Anonim
LEDura - Analoge LED-klok
LEDura - Analoge LED-klok
LEDura - Analoge LED-klok
LEDura - Analoge LED-klok
LEDura - Analoge LED-klok
LEDura - Analoge LED-klok

Tinkercad-projecten »

Na een lange tijd van het maken van verschillende projecten, besloot ik zelf een instructable te maken. Voor de eerste zal ik je begeleiden bij het maken van je eigen analoge klok gemaakt met een geweldige adresseerbare LED-ring. De binnenste ring toont de uren, buitenste ring toont minuten en seconden.

Naast de tijd kan de klok ook de kamertemperatuur weergeven en het kan een hele mooie decoratie zijn in de kamer. Elke 15 minuten maakt de klok ook enkele speciale effecten - video laat ze allemaal zien, zorg ervoor dat je het bekijkt. Met behulp van 2 knoppen en potentiometer kan de gebruiker kiezen tussen verschillende modi en kleuren naar eigen wens wijzigen. Ik heb het ook geüpgraded om de LED's automatisch te dimmen als de kamer donker wordt, zodat de gebruiker 's nachts niet gestoord wordt.

De klok kan op het bureau, bedtafel worden geplaatst of aan de muur worden opgehangen.

Let op: Foto's zijn vanwege de hoge helderheid niet zo goed als het uitzicht in de werkelijkheid.

Stap 1: Hoe het te lezen?

Hoe het te lezen?
Hoe het te lezen?

Klok heeft 2 ringen - een kleinere voor het weergeven van uren en een grotere voor het weergeven van minuten en seconden. Sommige LED's branden de hele tijd - een zogenaamd kompas dat de belangrijkste klokposities aangeeft. Op de urenring staat het voor 3, 6, 9 en 12 uur, op de minutenring voor 15, 30, 45 en 0 minuten.

Stap 2: Wat heb je nodig?

Wat heb je nodig?
Wat heb je nodig?

Materialen:

  • 1x Arduino Nano (je kunt ook elke andere Arduino gebruiken)
  • 1x DS3231 RealTimeClock-module
  • 1x Adresseerbare led-ring - 60 leds
  • 1x Adresseerbare led-ring - 24 LED's
  • 2x Knoppen (NEE - normaal open)
  • 1x 100kOhm potentiometer
  • 1x 5V voeding (kan 1 Amp leveren)
  • 1x Voedingsaansluiting
  • Sommige draden
  • 1x 10kOhm weerstand
  • 1x fotoweerstand

  • Prefboard (optioneel)
  • Klemmenblok draadconnectoren (optioneel)
  • 25mm dik hout, afmeting minimaal 22cmx22cm
  • 1mm dunne mat PVC kunststof maat 20cmx20xm

Gereedschap:

  • Basisgereedschappen voor het bouwen van elektronica (soldeerbout, tang, schroevendraaier, …)
  • Boor
  • Heet lijmpistool
  • Schuurpapier en wat houtvernis
  • CNC-machine (misschien heeft een vriend het)

Stap 3: Elektronische componenten - Achtergrond

Elektronische componenten - achtergrond
Elektronische componenten - achtergrond
Elektronische componenten - achtergrond
Elektronische componenten - achtergrond
Elektronische componenten - achtergrond
Elektronische componenten - achtergrond

DS3231

We konden de tijd bepalen met behulp van Arduino's ingebouwde oscillator en een timer, maar ik besloot een speciale Real Time Clock (RTC) -module te gebruiken, die de tijd kan bijhouden, zelfs als we de klok loskoppelen van de stroombron. DS3231-kaart heeft een batterij, die stroom levert wanneer de module niet is aangesloten op de voeding. Het is ook nauwkeuriger over langere tijdsperioden dan de klokbron van Arduino.

DS3231 RTC gebruikt de I2C-interface om te communiceren met de microcontroller - zeer eenvoudig te gebruiken en we hebben slechts 2 draden nodig om ermee te communiceren. Module biedt ook temperatuursensor, die in dit project zal worden gebruikt.

Belangrijk: Als u van plan bent een niet-oplaadbare batterij voor de RTC-module te gebruiken, moet u de 200 ohm-weerstand of 1N4148-diode lossolderen. Anders kan uw batterij ontploffen. Meer informatie vind je op deze link.

WS2812 LED-ring

Ik besloot om de 60 LED-ring te gebruiken om de minuten bij te houden en de 24 LED-ring voor uren. Je kunt ze vinden op Adafruit (neoPixel ring) of sommige goedkope versies op eBay, Aliexpress of andere webshops. Er is een grote diversiteit aan adresseerbare ledstrips en als het de eerste keer is dat je ermee speelt, raad ik je aan om enkele gebruiksbeschrijvingen door te lezen - hier zijn enkele handige links:

https://www.tweaking4all.com/hardware/arduino/adr…

https://randomnerdtutorials.com/guide-for-ws2812b…

Adresseerbare ledstrip heeft 3 connectoren: 5V, GND en DI/DO. De eerste twee zijn voor het voeden van de LED's, de laatste is voor de gegevens. Wees voorzichtig bij het aansluiten van de ring op Arduino - uw datalijn moet zijn aangesloten op de DI (data IN) pin.

Arduino

Ik gebruik Arduino Nano omdat het klein en voldoende genoeg is voor dit project. Je kunt bijna elke andere Arduino gebruiken, maar dan moet je voorzichtig zijn als je alles erop aansluit. De knoppen en LED-ringen kunnen op dezelfde pinnen zitten, maar I2C-connectoren (voor RTC-module) kunnen van platform tot platform verschillen - bekijk hun datasheet.

Stap 4: Elektronica - Voeding

Elektronica - Voeding
Elektronica - Voeding

Arduino en LED strip moeten beide worden geleverd met 5V stroombron zodat we weten welke spanning nodig is. Omdat de LED-ringen behoorlijk wat versterkers trekken, kunnen we hem niet rechtstreeks van stroom voorzien met Arduino, die maximaal 20 mA kan weerstaan op zijn digitale uitgang. Door mijn metingen kunnen LED-ringen samen tot 500 mA trekken. Daarom heb ik een adapter gekocht die tot 1A kan leveren.

Met dezelfde voeding willen we Arduino en LED's van stroom voorzien - hier moet je voorzichtig mee zijn.

Waarschuwing! Wees extra voorzichtig wanneer u de LED-strip test - de voedingsadapter mag NIET worden aangesloten op Arduino, wanneer Arduino ook is aangesloten op een pc met een USB-connector (u kunt de USB-poort van uw computer beschadigen).

Opmerking: in het onderstaande schema heb ik de normale schakelaar gebruikt om te selecteren of Arduino wordt gevoed via een voeding of via een USB-connector. Maar op het perfboard kun je zien dat ik een pin-header heb toegevoegd om te selecteren uit welke stroombron Arduino wordt gevoed.

Stap 5: Elektronica - Solderen

Elektronica - Solderen
Elektronica - Solderen
Elektronica - Solderen
Elektronica - Solderen
Elektronica - Solderen
Elektronica - Solderen
Elektronica - Solderen
Elektronica - Solderen

Als je alle onderdelen hebt verzameld, is het tijd om ze aan elkaar te solderen.

Omdat ik de bedrading netjes wilde maken, heb ik perfboard en een aansluitblokconnector voor draden gebruikt, zodat ik ze kan loskoppelen in geval van wijzigingen. Dit is optioneel - u kunt de draden ook rechtstreeks op de Arduino solderen.

Een tip: het is makkelijker als je het schema uitprint zodat je het tijdens het solderen voor je hebt. En controleer alles nogmaals voordat u verbinding maakt met de voeding.

Stap 6: Software - Achtergrond

Arduino IDE

We gaan Arduino programmeren met zijn speciale software: Arduino IDE. Als je voor het eerst met Arduino speelt, raad ik je aan om enkele instructables te raadplegen over hoe je dit moet doen. Er zijn al genoeg tutorials op internet, dus ik zal niet ingaan op details.

Bibliotheek

Ik besloot om de FastLED-bibliotheek te gebruiken in plaats van de populaire Adafruit. Het heeft een aantal handige wiskundige functies waarmee je geweldige effecten kunt doen (Duimen omhoog voor de ontwikkelaars!). Je kunt de bibliotheek vinden in hun GitHub-repository, maar ik heb het.zip-bestand van de versie toegevoegd die ik in mijn code gebruik.

Als je je afvraagt, hoe je een externe bibliotheek aan Arduino IDE kunt toevoegen, kun je enkele reeds gemaakte instructies bekijken

Voor de klokmodule heb ik de Arduino-bibliotheek gebruikt voor de DS3231 real-time klok (RTC) (link), die je eenvoudig in Arduino IDE kunt installeren. Wanneer u in IDE bent, klikt u op Sketch → Bibliotheek opnemen → Bibliotheken beheren … en filtert u uw zoekopdracht met de bovenstaande naam.

Opmerking: om de een of andere reden kan ik momenteel geen.zip-bestanden toevoegen. Je kunt de bibliotheek vinden op mijn GitHub-repository.

Stap 7: Software - Code

Software - Code
Software - Code
Software - Code
Software - Code

Structuur

De applicatie is opgebouwd met 4 bestanden:

  • LEDclokc.ino Dit is de belangrijkste Arduino-toepassing, waar u functies kunt vinden voor het besturen van de hele klok - ze beginnen met het voorvoegsel CLOCK_.
  • LEDclokc.h hier zijn pin-verbindingsdefinities en enkele klokconfiguraties.
  • ring.cpp en ring.h hier is mijn code voor het bedienen van de LED-ringen.

LEDclock.h

Hier vindt u alle klokdefinities. In het begin zijn er definities voor bedrading. Zorg ervoor dat ze hetzelfde zijn als uw verbindingen. Dan zijn er klokconfiguraties - hier vindt u de macro voor het aantal modi dat de klok heeft.

LEDclock.ino

Op het diagram wordt de hoofdlus weergegeven. Code controleert eerst of er op een knop wordt gedrukt. Vanwege de aard van switches moeten we de debbouncing-methode gebruiken om hun waarden te lezen (u kunt hier meer over lezen op de link).

Wanneer knop 1 wordt ingedrukt, wordt de variabele modus met 1 verhoogd. Als knop 2 wordt ingedrukt, wordt het variabele type verhoogd. We gebruiken deze variabelen om te bepalen welke klokmodus we willen zien. Als beide knoppen tegelijkertijd worden ingedrukt, wordt de functie CLOCK_setTime() aangeroepen, zodat u de tijd van de klok kunt wijzigen.

Latere code leest de waarde van de potentiometer en slaat deze op in een variabele - waarbij deze variabele gebruiker de kleuren van de klok, helderheid enz.

Dan is er een switch-case statement. Hier bepalen we in welke modus de klok zich momenteel bevindt, en door die modus wordt de bijbehorende functie aangeroepen, die de kleuren van de LED's instelt. U kunt uw eigen klokmodi toevoegen en de functies herschrijven of wijzigen.

Zoals beschreven in de FastLED-bibliotheek, moet je de functie FastLED.show() aan het einde aanroepen, waardoor de LED's de kleur krijgen die we eerder hadden ingesteld.

U kunt veel gedetailleerdere beschrijvingen vinden tussen de coderegels

De hele code is hieronder bijgevoegd in de onderstaande bestanden.

TIP: je kunt het hele project vinden in mijn GitHub-repository. Hier wordt de code ook bijgewerkt als ik er wijzigingen in aanbreng.

Stap 8: Maak de klok

Maak de klok
Maak de klok
Maak de klok
Maak de klok
Maak de klok
Maak de klok

klok frame

Ik bouwde het klokframe met behulp van een CNC-machine en 25 mm dik hout. U vindt de schets getekend in ProgeCAD hieronder. De sleuven voor de LED-ring zijn iets groter, omdat fabrikanten alleen de afmetingen van de buitendiameter geven - de binnendiameter kan behoorlijk variëren … Achterin de klok is er veel ruimte voor elektronica en draden.

PVC-ringen

Omdat LED's behoorlijk fel zijn, is het goed om ze op de een of andere manier te diffunderen. Eerst probeerde ik met transparante siliconen, die het werk van diffunderen doet, maar het is nogal rommelig en het is moeilijk om het er glad op te krijgen. Daarom bestelde ik een stuk "melk" PVC-kunststof van 20x20 cm en sneed er twee ringen in met een CNC-machine. U kunt schuurpapier gebruiken om de randen zachter te maken, zodat de ringen in de sleuven glijden.

Zijgaten

Dan is het tijd om de gaten voor knoppen, potmeter en voedingsconnector te boren. Teken eerst elke positie met een potlood en boor vervolgens het gat in. Hier hangt het af van wat voor soort knoppen je hebt - ik ging voor drukknoppen met een licht gebogen kop. Ze hebben een diameter van 16 mm, dus ik heb een houtboor van dat formaat gebruikt. Hetzelfde geldt voor potentiometer en voedingsconnector. Vergeet niet alle potloodtekeningen achteraf te wissen.

Stap 9: Teken in het bos

Teken in het bos
Teken in het bos
Teken in het bos
Teken in het bos
Teken in het bos
Teken in het bos

Ik besloot enkele klokkenwijzers in het hout te tekenen - hier kun je je fantasie gebruiken en je eigen ontwerpen. Ik verbrandde het hout met behulp van soldeerbout, verwarmd tot maximale temperatuur.

Om de cirkels mooi rond te krijgen, heb ik een stuk aluminium gebruikt, er een gat in geboord en de randen van het gat gevolgd met een soldeerbout (zie de afbeelding). Zorg ervoor dat je aluminium stevig vasthoudt, zodat het niet wegglijdt tijdens het tekenen. En wees voorzichtig tijdens het doen om blessures te voorkomen.

Als je tekeningen aan het maken bent en je wilt dat ze mooi uitgelijnd zijn met de klokpixels, dan kun je de “Onderhoudsmodus” gebruiken die je laat zien waar de pixels komen te staan (ga naar hoofdstuk Assembleren).

Bescherm het hout

Als je tevreden bent met de klok is het tijd om hem te schuren en te beschermen met houtvernis. Ik gebruikte heel zacht schuurpapier (waarde van 500) om de randen te verzachten. Ik raad je aan om transparante houtvernis te gebruiken, zodat de kleur van het hout niet verandert. Breng een kleine hoeveelheid vernis aan op de borstel en trek deze in de richting van de eenjarigen in het hout. Herhaal dit minimaal 2 keer.

Stap 10: monteren

assembleren
assembleren
assembleren
assembleren
assembleren
assembleren

Sparren zet de knoppen en potentiometer op hun positie - als je gaten te groot zijn, kun je wat hete lijm gebruiken om ze op hun plaats te bevestigen. Plaats vervolgens de ringstrip in de sleuven en sluit de draden aan op de Arduino. Voordat u de LED-ring op zijn plaats lijmt, is het goed om er zeker van te zijn dat de LED-pixels op de juiste plaats zitten - gecentreerd en uitgelijnd met de tekening. Voor dat doel heb ik de zogenaamde Onderhoudsmodus toegevoegd die alle belangrijke pixels zal weergeven (0, 5, 10, 15, … op minutenring en 3, 6, 9 en 12 op urenring). U kunt naar deze modus gaan door beide knoppen ingedrukt te houden voordat u de voeding in de connector steekt. U kunt deze modus verlaten door op een willekeurige knop te drukken.

Wanneer je je LED-ringen hebt uitgelijnd, breng dan wat hete lijm aan en houd ze vast terwijl de lijm stevig wordt. Neem vervolgens je PVC-ringen en opnieuw: breng wat hete lijm aan op de LED's, plaats ze snel en houd ze een paar seconden vast. Uiteindelijk, als je zeker weet dat alles werkt, kun je het per board (of Arduino) op het hout lijmen. Tip: breng niet te veel lijm aan. Slechts een kleine hoeveelheid, zodat het op één plaats blijft, maar u kunt het gemakkelijk verwijderen als u later iets wilt wijzigen.

Plaats helemaal aan het einde de knoopcelbatterij in de houder.

Stap 11: Upgrade - Fotoresistor

Upgrade - Fotoresistor
Upgrade - Fotoresistor
Upgrade - Fotoresistor
Upgrade - Fotoresistor
Upgrade - Fotoresistor
Upgrade - Fotoresistor

De klokeffecten zijn vooral leuk in het donker. Maar dit kan de gebruiker 's nachts storen, terwijl hij of zij slaapt. Daarom heb ik besloten om de klok te upgraden met de functie van automatische helderheidscorrectie - wanneer de kamer donker wordt; de klok schakelt zijn LED's uit.

Voor dat doel gebruikte ik de lichtsensor - fotoweerstand. De weerstand zal aanzienlijk toenemen; tot een paar mega ohm als het donker is en hij zal maar een paar honderd ohm hebben als er licht op schijnt. Samen met een normale weerstand vormen ze de spanningsdeler. Dus als de weerstand van de lichtsensor verandert, verandert ook de spanning op de Arduino analoge pin (die we kunnen meten).

Voordat u een schakeling gaat solderen en monteren, is het verstandig om deze eerst te simuleren, zodat u het gedrag kunt zien en correcties kunt aanbrengen. Met de hulp van Autocad Tinkercad kunt u precies dat doen! Met slechts een paar klikken heb ik de componenten toegevoegd, aangesloten en de code geschreven. In de simulatie kunt u zien hoe de helderheid van de LED's wordt gewijzigd volgens de waarde van de fotoweerstand. Het is heel eenvoudig en duidelijk - je bent van harte welkom om met het circuit te spelen.

Na simulatie was het tijd om de functie aan de klok toe te voegen. Ik heb een gat in het midden van de klok geboord, de fotoweerstand gelijmd, aangesloten zoals te zien op het circuit en enkele regels code toegevoegd. In het bestand LEDclock.h moet u deze functie inschakelen door USE_PHOTO_RESISTOR als 1 te declareren. U kunt ook wijzigen bij welke kamerhelderheid de klok de LED's zal dimmen door de CLOCK_PHOTO_TRESHOLD-waarde te wijzigen.

Stap 12: Geniet

Wanneer u hem voor de eerste keer van stroom voorziet, zal de klok een willekeurige tijd weergeven. U kunt het instellen door beide knoppen tegelijkertijd in te drukken. Draai aan de knop om de juiste tijd te selecteren en bevestig deze met een druk op een willekeurige knop.

Ik vond inspiratie in een heel mooi project op internet. Als je besluit om de klok zelf te bouwen, bekijk ze dan ook! (NeoClock, Wol Clock, Arduino Colourful Clock) Als je ooit besluit om instructables te volgen, hoop ik dat je het net zo leuk vindt als ik.

Als je problemen tegenkomt tijdens het maken ervan, stel me dan gerust een vraag in de opmerkingen - ik zal graag proberen het te beantwoorden!

Aanbevolen: