Inhoudsopgave:

Rainbow Word Clock met een volledig regenboogeffect en meer - Ajarnpa
Rainbow Word Clock met een volledig regenboogeffect en meer - Ajarnpa

Video: Rainbow Word Clock met een volledig regenboogeffect en meer - Ajarnpa

Video: Rainbow Word Clock met een volledig regenboogeffect en meer - Ajarnpa
Video: USSR-legende - TALKA-acrobatische motor 2024, Juli-
Anonim
Rainbow Word Clock met een volledig regenboogeffect en meer
Rainbow Word Clock met een volledig regenboogeffect en meer

doelen

1) Eenvoudig

2) Niet duur

3) Zo energiezuinig mogelijk

Rainbow Word Clock met een volledig regenboogeffect.

Een smiley op de Word Clock.

Eenvoudige IR-afstandsbediening

Update 03-nov-18 LDR voor de helderheidsregeling van de Neopixels

Update 01-jan-19 Vermindering van het stroomverbruik van de WS2812B.

Update 15-jan-19 Smiley.

Update 23-jan-19 Code 1.6

Update 10-mrt-19 Bibliotheken links

Update 14-apr-19 versie 1.7 Keuze smiley aan/uit kleur regenboog/fix enz.

Laatste update 01-jun-19 versie 2.0 IR-afstandsbediening en code herontwerp

Stap 1: De zaak voor de klok

De zaak voor de klok
De zaak voor de klok
De zaak voor de klok
De zaak voor de klok
De zaak voor de klok
De zaak voor de klok

Met een paar eenvoudige gereedschappen en een beetje handigheid is het niet moeilijk om een letterklok te maken. Ik heb de materialen gebruikt die voor mij beschikbaar zijn.

Voor de case heb ik een ruwe grenen bar gebruikt waarin ik een paar frames heb gezaagd. Deze zouden de vier zijkanten van de behuizing vormen, die aan elkaar werden gelijmd en versterkt met een klein stukje hout in de hoeken. Dan moet het hout geschuurd en geverfd worden.

De letters zijn door een drukker in spiegelschrift uit folie gesneden. De folie zit aan de achterkant van de glasplaat en is bedekt met een dubbellaags patroonpapier voor een betere lichtverdeling. Het glas wordt gefixeerd door siliconenkit.

Stap 2: Neopixels

Neopixels
Neopixels
Neopixels
Neopixels
Neopixels
Neopixels
Neopixels
Neopixels

De Neopixels LED's zijn gerangschikt op een houten plaat. Hierin boor je eerst 3 mm gaten. Aan de voorzijde zijn ze vergroot tot lettergrootte tot 3/4 diepte. Daarna wordt de 3 mm aan de achterkant vergroot naar 10 mm, dit is het formaat van een Neopixel. Voor sommige karakters, oa de W, moet het gat iets aangepast worden.

Ik gebruikte multiplex dat snel versplinterde, MDF is misschien beter.

Bij losse leds ben je niet gebonden aan een vaste afstand, wat bij ledstrips wel het geval is. De leds dienen onderling verbonden te worden. Dit kun je doen met alle korte stukjes draad. Maar de twee min (-) aansluitingen zijn net als de twee plus (+) aansluitingen intern verbonden, dus dezelfde aansluiting.

Je kunt jezelf een hoop werk besparen door een stukje draad aan de linker led en vervolgens aan de rechter led te solderen. Soldeer dan de tussenliggende.

De dataverbinding moet natuurlijk met korte stukjes omdat de data-uit naar data-in gaat.

Stap 3: Voortekst aanpassen

Voortekst aanpassen
Voortekst aanpassen
Voortekst aanpassen
Voortekst aanpassen
Voortekst aanpassen
Voortekst aanpassen

De voorplaat is nu in het Nederlands, maar eenvoudig in elke taal om te zetten.

De NeoPixels leds worden hier achtereenvolgens geschakeld van 0-167. De nummering gaat van de eerste rij linksboven naar rechts en dan naar de tweede rij van rechts naar links etc. Aanpassen kan naar eigen behoefte. Het aantal NeoPixels wordt bepaald door het aantal karakters. Minder of meer Neopixels kunnen in de volgende regel worden aangepast:

#define NUMPIXELS 168 // Hoeveel NeoPixels zijn aangesloten op de Arduino?

168 is dan een ander nummer. Nummering begint bij 0. U kunt elke tekst maken. Als u de tekst wijzigt, moet u ook de bijbehorende woorden aanpassen. De nummering blijft hetzelfde.

Als voorbeeld, DRIE van de notulen, wordt bepaald in de code

ongeldig zetmDrie () {

Led_Aan[56]=1, Led_Aan[57]=1, Led_Aan[58]=1, Led_Aan[59]=1; // min-droog

}

Als je het woord Arduino wilt maken, gaat het als volgt:

ongeldig zetArduino () {

Led_Aan [38] = 1, Led_Aan [50] = 1, Led_Aan [56] = 1, Led_Aan [93] = 1;

Led_Aan [120] = 1, Led_Aan [135] = 1, Led_Aan [147] = 1; //Word-arduino

}

Je kunt er dus woorden tussen maken.

Voor klokwoorden is het handig als ze een aaneengesloten woord vormen, maar het is niet absoluut noodzakelijk. De ongebruikte letters hebben geen Neonpixels nodig. Ik heb ze allemaal gevuld voor het gebruik van toekomstige mogelijkheden anders dan de tijd die wordt weergegeven.

Als u het startpunt of de opeenvolging wijzigt, moet de nummering dienovereenkomstig veranderen.

Stap 4: Volledig regenboogeffect

Volledig regenboogeffect
Volledig regenboogeffect

De klok is nu zo geprogrammeerd dat er aantal keer per seconde geteld wordt hoeveel neopixsels er aan staan.

Het totale spectrum is ongeveer het aantal verdeeld en dan iets verschoven. Hierdoor heeft elke Neopixel een andere kleur die continu verandert. Neopixel nr 1 en nr 167 volgen elkaar op wat kleur betreft.

Wil je liever minder verschillende kleuren tegelijk, dan is dit eenvoudig aan te passen. De kleur verschuift nog steeds over het hele spectrum maar met een kleiner deel ervan. Neopixel nr 1 en nr 167 volgen elkaar niet meer wat kleur betreft.

De helderheid kan in de volgende regel worden ingesteld, pixels.setBrightness(150);

Een kleiner getal is minder en een groter getal meer helderheid.

Stap 5: De verschillende componenten

De verschillende componenten
De verschillende componenten
De verschillende componenten
De verschillende componenten
De verschillende componenten
De verschillende componenten

De volgende componenten die ik heb gebruikt:

Arduino Pro Mini ATMEGA328 5V/16MHz

Klokmodule DS3231

168 stuks Neopixels led's WS2812 LED Chip & Heatsink 5V 5050 RGB WS2811 IC Ingebouwd

Folie brief stencil

DCF77-ontvanger

Stap 6: Code voor de klok

Hier is de code. Een helderheidsregeling toegevoegd en uitgeschakeld wanneer er niemand aanwezig is en 's nachts.

Toegevoegd RCWL-0516 Radar Magnetron Bewegingssensor (zoek naar RADAR)

Na 10 minuten zonder beweging gaan de NeoPixels uit.

Over versie 2.0

Het geheugengebruik was te veel, met waarschuwingen voor onvoldoende geheugen in de compiler. Daarom heb ik de code helemaal veranderd, maar de werking is hetzelfde gebleven en er is een IR ontvanger bijgekomen.

Er is een stukje code om de EEPROM van data te voorzien. Voer dit een keer uit door tijdelijk de / * en * / te verwijderen. Zoek naar => voer dit een keer uit om de EEPROM van gegevens te voorzien

Aan het begin van de void loop staat code om de code van je eigen afstandsbediening uit te lezen. Je kunt dit uitvoeren door tijdelijk de / * en * / te verwijderen, vergeet ze daarna niet terug te plaatsen. U kunt ook uw eigen knoppen definiëren. De gelezen code moet worden ingevoerd in => Definieer hier uw eigen knoppen

De Samsung afstandsbediening werkt beter dan de (zeer goedkope) simpele.

Stap 7: De hardwarebeschrijving

De hardwarebeschrijving
De hardwarebeschrijving
De hardwarebeschrijving
De hardwarebeschrijving
De hardwarebeschrijving
De hardwarebeschrijving

Er zijn verschillende versies van de Arduino Pro Mini. Let op, de aansluitingen kunnen verschillen.

Een RCWL-0516 Magnetron Bewegingssensor toegevoegd.

Zolang er beweging in de buurt van de klok is, blijft de NeoPixel aan

en zodra er geen beweging meer is, gaat de NeoPixel na enkele minuten uit.

In versie 2.0 wordt de DCF77-ontvanger van stroom voorzien via pin 13. Deze pin wordt gedefinieerd als output en staat hoog als de DCF77-routine wordt aangesproken. De DCF77-ontvanger gebruikt 0,28 mA en is slechts enkele minuten per dag nodig.

Opslaan uitschakelen

5 Volt * 0,28 mA / 1000 * 24 uur * 365 dagen * 1 / 0,85 efficiëntie voeding = 14,4 watt per jaar.

Dit lijkt niet veel, maar alle beetjes helpen.

Stap 8: LDR voor de helderheidsregeling van de Neopixels

LDR voor de helderheidsregeling van de Neopixels
LDR voor de helderheidsregeling van de Neopixels
LDR voor de helderheidsregeling van de Neopixels
LDR voor de helderheidsregeling van de Neopixels

Een LDR toegevoegd voor de helderheidsregeling van de neopixels.

Ik heb de LDR in de ruimte van neopixel 103 gelijmd. Deze wordt niet gebruikt in de tijdweergave en heeft dus geen invloed op de regeling. Het papier dempt het invallende licht, maar dat is geen probleem.

De spanningsdeler van LDR en 20 kohm weerstand gaat naar A0 van de Arduino Pro Mini. De spanning is een indicator van de lichtintensiteit en dus ook een indicator van de hoeveelheid licht die de neopixels moeten geven.

De formule die ik gebruik geeft mij een goede lichtbeheersing, deze kan aangepast worden afhankelijk van de omstandigheden. Afhankelijk van de hoeveelheid licht kan de spanning variëren tussen 0 en 5 volt wat wordt omgezet in 0 tot 1024 counts die in "LDRValue" staan.

Als de nieuwe meetwaarde groter is dan de laatst berekende waarde, wordt de intensiteit met 1 verhoogd, als deze lager is dan met 1 verlaagd en als deze gelijk is, wordt er niets gedaan. Om de waarde langzaam te laten verlopen, zodat er geen knipperend effect is, wordt er slechts 1 verhoogd of verlaagd en omdat de berekening in de lus zit, wordt deze pas herberekend na 25 keer de lus te doorlopen.

De intensiteit is theoretisch minimaal 20 en maximaal 1024/7 + 45 = 191. De maximale waarde die ik gemeten heb was 902, wat neerkomt op een intensiteit van 173. Dit past goed bij de 150 die ik als standaardwaarde heb ingesteld. (zie pixels.setBrightness(150))

In versie 2.0 kunt u de besturing via de afstandsbediening instellen. De volgende parameters zijn toegevoegd: Brightness_min als minimum en Brightness_max als maximum instelling en Brightness_Offset als instelparameter. Brightness_min en _max zijn de waarden die afhankelijk kunnen zijn van uw eigen situatie. Brightness_Offset is een waarde die kan worden ingesteld met de afstandsbediening en waarmee meer of minder helderheid kan worden ingesteld.

Er is ook een dode band van 3 tussen gemeten LDRValue- en berekende BerLDRValue-waarden.

Gebruik de afdrukinstructies in de void BrightnessControl om de helderheidsinstelling te controleren.

Stap 9: Het stroomverbruik van de WS2812B verminderen

Het stroomverbruik van de WS2812B verminderen
Het stroomverbruik van de WS2812B verminderen

De stuurprogramma's op de adresseerbare neopixels van de WS2812B trekken stroom, zelfs als de neopixels zijn uitgeschakeld, ingesteld op kleur 0 (geen neopixel-elementen verlicht).

Als alle 169 neopixels uit zijn, meet ik 69 mA naar de neopixels. Ervan uitgaande dat de klok 12 uur per dag uit staat, bespaart totale uitschakeling dan: 5 (Volt voeding) * 69/1000 (Miliampere / 1000 = Ampère) * 12 (Aantal uren per dag) * 365 (Aantal dagen in een jaar) = 1511 Wattuur. Dus op jaarbasis 1,5 Kwh. Ik ben het ermee eens, het is op zich niet veel, maar veel kleintjes maken een grote.

De schakeling is simpel. De plus van de voeding wordt geschakeld door een P-kanaal MosFet. De radarsensor bepaalt of de neopixels aan of uit staan. Ik heb twee MosFets parrelel gezet om de ON weerstand zo laag mogelijk te houden door het wegvallen van de MosFets. Bij normaal gebruik meet ik 4,5 mili volt over de MosFets. De poort wordt bestuurd door uitgang 4 van de Arduino via een weerstand van 470 Kohm. Als de uitvoer digitaal naar laag (0) gaat, staan de neopixels aan en bij hoog (1) zijn ze uit.

Stap 10: Smiley op de Word Clock

Smiley op de Word Clock
Smiley op de Word Clock
Smiley op de Word Clock
Smiley op de Word Clock

Een smiley op de Word Clock.

Er verschijnt af en toe een Smiley op de klok. Daar word je toch blij van.

De Smiley wordt getriggerd door de radarsensor. Het aantal keren bewegen (instelbaar) is een maat voor het uiterlijk van de Smiley. De %-tekens geven aan dat er beweging is gedetecteerd. Bij elke tiende (instelbare) beweging komt de Smiley met een Winky Face en na drie keer een Winky Face komt de vierde keer een Smiley Face die tong uitsteekt.

De Smiley is een kleine wijziging in de code.

Stap 11: Welke bibliotheken worden gebruikt

Welke bibliotheken worden gebruikt.

Ik gebruik ze in Windows 7 met Arduino IDE 1.6 en ze zijn ook getest in Windows 10 met Adruino IDE 1.8.8

RTClib-master

Arduino-DS3231-master

Adafruit_NeoPixel-master

Arduino-DCF77-master

Ken Shirriff's IRremote-bibliotheek

Omdat er altijd verwarring is over de gebruikte bibliotheek, voeg ik degene toe die ik gebruik.

De IRremote-bibliotheek gebruikt veel geheugen. In de IRremote.h wordt aangegeven dat u elk ongebruikt protocol kunt uitschakelen

// Elk protocol dat u opneemt kost geheugen en kost tijdens het decoderen tijd// Schakel alle protocollen uit (ingesteld op 0) die u niet nodig hebt/wilt!

Ik heb alles uitgeschakeld behalve het NEC- en Samsung-protocol. Dit geeft een geheugenbesparing van 10%. Op dit moment is er geen probleem meer met de hoeveelheid geheugen, dus voorlopig is het uitschakelen niet nodig.

Stap 12: Eenvoudige IR-afstandsbediening

Eenvoudige IR-afstandsbediening
Eenvoudige IR-afstandsbediening
Eenvoudige IR-afstandsbediening
Eenvoudige IR-afstandsbediening
Eenvoudige IR-afstandsbediening
Eenvoudige IR-afstandsbediening

De vergadering

Zoals je op de foto's kunt zien, is het gat voor LED 132 iets te groot gebleken. Ik heb hier goed gebruik van gemaakt en de IR ontvanger eraan toegevoegd. Sluit de datapin van de IR-ontvanger VS1838 aan op pin 7 van de Arduino. Sluit verder de plus en min voeding aan. De IR-ontvanger gebruikt 0,21 mA en zou na de FET-schakelaar ook op de plus-voeding kunnen worden aangesloten. Dit resulteert in een besparing, als de klok 50% van de tijd aan staat, van 5 Volt * 0,21 mA / 1000 * 12 uur * 365 dagen * 1 / 0,85 efficiëntie voeding = 5,4 watt per jaar. Dit lijkt niet veel, maar alle beetjes helpen.

De werking is als volgt

Druk op een willekeurige toets op de IR-afstandsbediening en vervolgens op de OK-toets. De eerste keer dat je op drukt, kom je in de IR-verwerking terecht en de tweede keer zul je ontdekken of het een terecht verzoek was. De tweede keer OK moet snel volgen op de eerste toetsdruk omdat het anders weer terug gaat. Ik heb deze constructie zo gemaakt dat ik de eerste code nauwelijks goed gedecodeerd kreeg en dus niet in de IR-afhandeling belandde.

Eenmaal in de IR-handling gaan een aantal LED's aan voor info, voor uitleg lees verder en bekijk de eerste afbeelding.

De beschrijving is voor de eenvoudige afstandsbediening, maar u kunt elke afstandsbediening gebruiken en uw eigen sleutels definiëren. Ik heb ook een Samsung-afstandsbediening gebruikt.

De eerste vier toetsen komen overeen met de bovenste vier rijen LED's. Vier LED's draaien naar links of rechts, afhankelijk van de instelling. Wanneer de toetsen 1 t/m 4 worden ingedrukt, wordt de toestand omgekeerd en in het geheugen opgeslagen.

1 vaste kleur of regenboogeffect

2 seconden flits uit of tweede flits aan

3 smiley uit smiley aan

4 DCF77 uit of DCF77 aan

Het nummer van de sleutel wordt weergegeven op de volgende toetsen:

5 smiley teller

6 regenboog spectrum breedte

7 rode instelling repareren

8 fix groene instelling

9 blauwe instelling repareren

Rij 6, 7 en 8 van de LED's komen nu overeen met de ingestelde waarde, rij 6 geeft de eenheden aan, rij 7 de tientallen en rij 8 de honderd. Elke rij begint met de waarde nul. Dus de eerste led in de rij is 0, de tweede is 1 enz.

0 tijdinstelling

/\ helderheidsinstelling

Wanneer de 0-knop wordt ingedrukt, lichten de "tien" LED's op om aan te geven dat u de tijd wilt instellen en wanneer u een tweede keer op 0 drukt, verschijnt de ingestelde tijd op het display.

De tijd kan nu worden ingesteld en wordt weergegeven op het display.

Stel de juiste tijd in en als de minuut hetzelfde is op een referentieklok, drukt u op de OK-knop.

De tijd wordt aangepast.

Als u de minuten- of urenknop niet bedient, wordt de tijd niet gewijzigd. Als u ze wel indrukt, wordt de tijd meteen ingesteld.

De waarde voor de toetsen 5 t/m 9 kan worden gewijzigd met de toetsen

rechts is plus 1

links is min 1

vooruit is plus 10

omgekeerde is min 10.

en voor de tijdinstelling

rechts is plus 1 minuut

links is min 1 minuut

vooruit is plus 1 uur

omgekeerde is min 1 uur

Het komt soms voor dat de toetsaanslag niet wordt herkend of twee keer wordt uitgevoerd. Let dus goed op als de instelling goed gaat anders probeer of corrigeer het opnieuw. De Samsung afstandsbediening die ik ook heb getest werkte vele malen beter dan de (zeer goedkope) simpele afstandsbediening.

Bij het instellen van de kleur zie je de verandering direct op het gehele display. Voor een site met een overzicht van kleuren zie https://www.helderester.nl/kleurentabel.html. U kunt natuurlijk elke waarde instellen.

Als de breedte van het regenboogspectrum de waarde 0 heeft, is het spectrum erg smal en heeft het display één kleur die constant verandert.

Het nadeel van het op deze manier instellen van de tijd is dat je geen zomer/winter overgang kunt berekenen omdat we de datum niet juist hebben. Voor de klok zelf maakt het niet uit, want die gebruiken we nu niet.

Stap 13: wat nu?

Wat volgt?
Wat volgt?

Wat volgt, klinkt, als het vrije geheugen nog voldoende is.

Ik heb de luidsprekerboxen al. Ze zijn van een oude laptop.

Aanbevolen: