Inhoudsopgave:

LED-matrixwekker (met mp3-speler) - Ajarnpa
LED-matrixwekker (met mp3-speler) - Ajarnpa

Video: LED-matrixwekker (met mp3-speler) - Ajarnpa

Video: LED-matrixwekker (met mp3-speler) - Ajarnpa
Video: LED Matrix Displays on the Railroad - Bluetooth Message Editing 2024, Juli-
Anonim
LED Matrix-wekker (met MP3-speler)
LED Matrix-wekker (met MP3-speler)
LED Matrix-wekker (met MP3-speler)
LED Matrix-wekker (met MP3-speler)

Deze op Arduino gebaseerde wekker heeft alles wat je van je alarm mag verwachten - mogelijkheid om je wakker te maken met elk nummer dat je leuk vindt, snooze-knop en het is eenvoudig te bedienen via drie knoppen. Er zijn drie hoofdblokken - LED-matrix, RTC-module en MP3-schild met luidspreker.

Stap 1: Materiaal & Gereedschap

  • LED-matrix
  • Arduino Uno
  • MP3-schild DHF-speler Mini
  • RTC-module DS1307
  • Elke spreker
  • 3 knoppen (met pullup/pulldown weerstanden 10k)
  • Draden
  • Plexi (of welk materiaal dan ook waarvan je je doos wilt hebben)
  • 3D-printer (voor het printen van matrixboxen)
  • DC-voedingsconnector
  • USB B vrouwelijke connector.

Ik geloof dat je deze materiaallijst kunt aanpassen op basis van je mogelijkheden (je kunt zeker verschillende MP3 Shields, verschillende RTC-modules gebruiken en alles zou prima moeten werken:)

Stap 2: LED-matrix

LED-matrix
LED-matrix
LED-matrix
LED-matrix
LED-matrix
LED-matrix

Als inspiratie gebruikte ik deze instructables om LED-matrix te bouwen, ik besloot alleen geen prototyping-bord te gebruiken en mijn eigen PCB te ontwerpen. Je kunt mijn project in circuitmaker hier vinden. Je kunt ook schema's gebruiken en als je gerber-gegevens wilt verzenden (in plaats van het zelf te genereren uit een circuitmaker-project), laat het me weten, ik zal het je bezorgen:). Enkele tips - eerst gebruikte ik zeer goedkope LED, maar nadat ik alle diodes had gesoldeerd en de arduino-code had uitgevoerd, bleek de variantie van de LED-diodekleur niet acceptabel, dus moest ik verschillende bestellen en een andere LED-matrix maken. Ik zal het werkingsprincipe uitleggen in Part arduino. Hoe dan ook, om erachter te komen of je het goed hebt gedaan en het display werkt, vervang je gewoon de constanten in de DisplayChar-functie in de hoofd arduino-lus (bijvoorbeeld in plaats van DisplayChar (1, letA); gebruik DisplayChar (0, 9); die nummer 9 zal schrijven beginnend bij de 1e kolom), hoeft u verder niets op te merken.

Stap 3: Andere HW

andere HW
andere HW
andere HW
andere HW
andere HW
andere HW

De andere HW-componenten om een wekker te bouwen zijn: RTC-module, MP3-schild, knoppen en arduino UNO.

Voor de RTC-module heb ik module DS1307 en bibliotheek MD_DS1307.h gebruikt, het is vrij eenvoudig, alles werkt soepel, maar ik zou waarschijnlijk aanraden om een nauwkeurigere RTC-module zoals 3231 of iets anders te gebruiken - als ik het een paar dagen zonder stroom liet, begon het enkele seconden te verliezen.

MP3-schild DHF-speler Mini - Dit MP3-schild is heel eenvoudig, je kunt wat mp3 uploaden naar een SD-kaart, elke luidspreker aansluiten die je vindt en dan kan het op twee manieren worden bediend, hetzij via seriële communicatie, of via I/O-pinnen. Om eerlijk te zijn was ik om de een of andere reden niet succesvol in seriële communicatie (het werkte niet samen met SPI- en I2C-communicatie die voor andere componenten wordt gebruikt), maar ik was best oké om alleen IO-pinnen te gebruiken (ik gebruikte ADKEY1 aangesloten op arduino Digital-uitgang als een trigger om een nummer af te spelen en dan USB+ vastzetten om de muziek te stoppen).

Zoals je op de foto kunt zien, heb ik drie eenvoudige knoppen op een prototypebord gebruikt die zijn aangesloten op de digitale ingangen van Arduino met pull-down-weerstanden van 10kOhm.

De bedrading voor Arduino is duidelijk te zien in Arduino-code:)

Stap 4: Mechanische onderdelen

Mechanische onderdelen
Mechanische onderdelen
Mechanische onderdelen
Mechanische onderdelen
Mechanische onderdelen
Mechanische onderdelen
Mechanische onderdelen
Mechanische onderdelen

Om een mooi, regelmatig display te krijgen, moet u een raster gebruiken om de exacte vorm voor elke LED te definiëren. Ik heb een eenvoudig 3D-geprint raster gebruikt dat prima werkt - het is gemaakt uit twee delen, links en rechts, je kunt de STL-gegevens in bijlage vinden.

De doos is gefreesd op een CNC-machine van melkplexi. Het is helemaal aan jou van welk materiaal je maakt, slechts één aanbeveling, als je hetzelfde materiaal wilt gebruiken als ik, plaats dan een semi-permeabele laag op het onderdeel dat direct op LED's zit om te voorkomen dat LED's zichtbaar zijn als een puntbron van licht. Je kunt zien dat er in de zijwand ruimte is voor een DC-voedingsconnector en USB om betere code-ideeën te uploaden:) Ik gebruikte standaardlijm voor kunststoffen om plexi-onderdelen aan elkaar te lijmen. In bijlage zijn er STL-bestanden voor alle onderdelen (Bedankt mijn vriend Peshi voor het ontwerpen van deze super coole box:))

Stap 5: Arduino-onderdeel

Arduino-onderdeel
Arduino-onderdeel

Gedeeltelijk gerelateerd aan Arduino zou ik graag kort het hoofdlus-algoritme willen beschrijven en dan enkele woorden om de Shift-registers te besturen via SPI en Alarminstellingen.

In de hoofdlus controleer je gewoon of er op een knop is gedrukt, controleer je of de RTC je nieuw bijgewerkte waarden van minuten stuurt en of het tijd is om een roze floyd-nummer af te spelen:) en zo niet, dan zet je gewoon periodiek de LED's aan en uit met nummers instellen.

De LED-matrix besturen - Voor een beter begrip is het goed om de instructies voor de LED-matrix te volgen die ik aan het begin noemde, maar kort - het is belangrijk om te begrijpen dat om cijfers of letters in deze matrix te tonen, u periodiek moet kiezen welke LED uit de set rij moet worden ingeschakeld en draai vervolgens alle LED's van rij enige tijd aan. In de volgende stap zet je deze rij uit en bereid je de tweede rij voor en dit steeds opnieuw. Wat betekent dit? - gebruik geen vertragingen! - anders worden er geen cijfers weergegeven, maar knippert het gewoon:)

Ik gebruik een heel andere en ik zou zeggen een gemakkelijkere manier om shift-registers te bedienen (met dank aan mijn vriend Krystof die deze soepele functie heeft geschreven). Dus de eerste stap (het voorbereiden van de gegevens voor het schuifregister gebeurt in de functie DisplayChar, waar je gewoon het gewenste symbool uit de reeks constanten vindt en gegevens voor registers voorbereidt. En wanneer de functie UpdateDisplay wordt aangeroepen, worden de gegevens verschoven naar uitgangen (voor meer info zie scherm van arduino IDE)

Alarm instellen. Er zijn drie knoppen, links, midden en rechts. Als je rechts en midden dubbel drukt, kom je in het alarmmenu. In het alarmmenu zijn de volgende functies beschikbaar: linkerknop (alarm instellen voor uren) middelste knop (alarm instellen voor minuten) Rechterknop lang indrukken (alarm bevestigen), middelste en rechterknop lang indrukken (bestaand alarm wissen).

Wanneer het alarm is ingesteld (je kunt dit herkennen aan het feit dat de alarm-LED rechtsonder inschakelt) en de klok je favoriete ochtendlied begint af te spelen:) zijn er de volgende functies beschikbaar - linkerknop (snooze voor nog eens 5 minuten), middelste knop (alarm annuleren).

Stap 6: Alarm voltooien

Image
Image
Alarm voltooien
Alarm voltooien

Op het einde lijm ik alles binnenin aan elkaar:) en sluit de lijm het achterste deel van alarm. In de bijgevoegde video kunt u het bedieningsmechanisme van dit alarm zien. Let op de video, in de video lijkt het alsof het knippert, het wordt veroorzaakt door het principe van het in- en uitschakelen van LED's en de framesnelheid van de camera-ondertiteling - in werkelijkheid zien je ogen dit als ingeschakeld zonder te knipperen:)

Voor de toekomst zou ik graag ander materiaal willen proberen - idealiter wat zwart:) en wat meer functies toevoegen, zoals het tonen van de datum, misschien temperatuur, enz:)

Ik hoop dat je het leuk zult vinden om je eigen wekker te bouwen en kijk uit naar je ideeën:)

Klokken wedstrijd
Klokken wedstrijd
Klokken wedstrijd
Klokken wedstrijd

Tweede prijs in de klokkenwedstrijd

Aanbevolen: