Innholdsfortegnelse:

132 Pixel Clock: 5 trinn (med bilder)
132 Pixel Clock: 5 trinn (med bilder)

Video: 132 Pixel Clock: 5 trinn (med bilder)

Video: 132 Pixel Clock: 5 trinn (med bilder)
Video: Зарабатывайте $ 675 + в день, пока вы спите из любой точки ... 2024, November
Anonim
Image
Image
132 pikselklokke
132 pikselklokke

Jeg har så lenge jeg kan huske vært besatt av lysdioder og tid. I dette prosjektet har jeg laget en stor veggklokke som viser gjeldende tid ved hjelp av 132 neopiksel -lysdioder montert og skinner gjennom et granbrett. Det er en hybrid analog digital med en individuell piksel for hver time, minutt og sekund.

Dette var det største prosjektet jeg har påtatt meg til nå, jeg begynte å tenke på det for 6 måneder siden, og ideen kom sakte sammen. Jeg er veldig fornøyd med resultatet, og jeg gleder meg til å dele det med deg.

Trinn 1: Samle rekvisita og verktøy

Samle rekvisita og verktøy
Samle rekvisita og verktøy
Samle rekvisita og verktøy
Samle rekvisita og verktøy
Samle rekvisita og verktøy
Samle rekvisita og verktøy
Samle rekvisita og verktøy
Samle rekvisita og verktøy

Komponenter

Dette prosjektet er bygget på et cheep hobbybrett fra min lokale byggemarked. Tavlen måler 850 mm bred og 500 mm høy og 18 mm dyp.

Lysdiodene som brukes i dette prosjektet er 5050 WS2812b montert på sirkulære PCB -er som er omtrent 9 mm i diameter med loddeputer på baksiden.

Jeg bruker en Arduino Pro Mini -kompatibel mikrokontroller. Det er 5V 16 MHZ -versjonen. Jeg valgte denne siden den har en superslank design, liten fotavtrykk og alle nødvendige porter pluss noen ekstra for fremtidige oppgraderinger. Den er også 5 volt, så jeg kan bruke en enkelt strømforsyning til lysdiodene, mikrokontrolleren og RTC

Tidsoppbevaringen blir ivaretatt av en RTC -modul (Real Time Clock) som har DS3231 -brikken. Denne brikken er veldig nøyaktig, så tiden bør ikke drive for mye.

Også brukt:

Metalltråd. Lodding og varmt lim.

Verktøy:

Bore- og trebor (10 mm og 5 mm)

Loddejern

Varm limpistol

trådklipp

Dremel og stupfres tilbehør

Trinn 2: Merking, boring og ruting

Merking, boring og ruting
Merking, boring og ruting
Merking, boring og ruting
Merking, boring og ruting
Merking, boring og ruting
Merking, boring og ruting

Boring

  • Finn midten av brettet ved å bruke en sundkant ved å tegne en linje fra motsatte hjørner.
  • Merk 3 sirkler med en snor og en penn. Den ytre mest sirkelen skal være omtrent 20 mm fra kanten av brettet med de to andre linjene som beveger seg 15 mm fra den siste linjen.
  • Jeg brukte et trykt urskive for å hjelpe meg med å markere posisjonene til hvert av minuttene og sekundene på de ytre 2 linjene og timene på den indre linjen.
  • Bor 10 mm hull på omtrent 5 mm dyp for hver time, minutt og sekund.
  • Bruk 5 mm boret til å lage hull gjennom brettet i time, minutt og sekund.

Ruting

Selv om dette trinnet ikke er nødvendig, kan klokken monteres i flukt til en vegg.

  • Bruke en ruter og sirkelguide til å rute trådkanaler i brettet
  • Merk av og legg en fordypning for RTC og mikrokontrolleren å bo i.
  • Før en kanal fra de ytre linjene til utsparingen for ledninger

Trinn 3: Så mye soldering, kutting og stripping

Så mye soldatering, kutting og stripping
Så mye soldatering, kutting og stripping
Så mye soldatering, kutting og stripping
Så mye soldatering, kutting og stripping
Så mye soldatering, kutting og stripping
Så mye soldatering, kutting og stripping

Denne neste delen er mye lettere å si enn å gjøre. Mitt råd vil være oppmerksom på å skynde det. prøve å finne et system og komme inn i en rytme.

Hver av lysdiodene trenger 5 volt inn, 5 volt ut, data inn, data ut, jording inn og jording ut. inkludert strøm til mikrokontrolleren og RTC sine over 400 ledninger, alle strippet og loddet i begge ender.

En klebrig blå substans er veldig nyttig for dette trinnet.

  • Jeg begynte med å plassere 2 lysdioder i hullene ved siden av hverandre for å regne ut kabellengden som trengs for å koble til hverandre.
  • Ved å bruke det første ledningsstykket som en guide, klipper jeg deretter 60 av hver fargetråd.
  • Fjern 2 mm ermer fra endene på hver ledning og tinn dem med loddetinn.
  • Lodd en liten klatt loddetinn på hver av LED -putene.
  • Lodd ledningene til lysdiodene for å danne to kjeder på 60 i minuttene og sekundene og en kjede på 12 i timene. Jeg brukte rød ledning for 5V, gul for data og blå for bakken.
  • Pass på å koble hver Data Out (DOUT) til Data In (DIN) på neste LED
  • Den siste ledningen i hver kjededose trenger ikke en datatråd.

Når alle kjedene er fullført, er det en god idé å teste dem før du installerer dem. Jeg brukte min Arduino UNO og Adafruit NeoPixel Strand Test for å bekrefte at hver LED fungerte.

Lodd lengre ledninger på hver av kjedene for 5V, Ground og Data in.

På dette tidspunktet bør det være fem 5v -ledninger, tre datakabler koblet til Arduino Pro Mini og 5 jordledninger.

Fjern 5 mm fra endene på 5v -ledningene og lodd dem alle sammen og gjenta for jordledningene.

Etter å ha fullført de tre kjedene loddet en 5V ledning på RAW -pinnen på Arduino Pro Mini og også på VCC -pinnen for RTC. En jordledning til GND på Arduino Pro Mini og RTC og deretter to ledninger til:

SCL fra RTC til A5 på Pro Mini

SDA fra RTC til A4 på Pro Mini

Datalinjene fra lysdiodene bør koble til:

  • Sekunder - Digital pin 3.
  • Minutter - DigitalPin 4
  • Timer - DigitalPin 5

Trinn 4: Installere

Installere
Installere
Installere
Installere
Installere
Installere

Når de er loddet, bør installasjonen av lysdiodene i hullene være rett frem. Lysdiodene må installeres slik at dataene løper rundt mot klokken når du ser på den bakfra når koden er satt opp foran.

Jeg brukte en liten mengde varmt lim for å holde dem nede, ettersom jeg ønsker å kunne bytte ut en enkelt LED hvis den feiler i fremtiden.

Jeg brukte også varmt lim for å holde alle ledningene rene og ryddige og for å feste fatkontakten til brettet.

Det er en rekke arduino pro mini programmeringsguider tilgjengelig. Jeg bruker den eksterne USB til serieomformer -metoden for å laste denne koden til Arduino:

Denne koden vil også sette tiden på RTC til tidspunktet den ble kompilert. så det er viktig å bare stenge opplastingsknappen slik at den samsvarer og lastes opp så raskt som mulig.

Mye av denne koden ble lånt fra NeoPixel Ring Clock av Andy Doro. Noen fra Adafruit NeoPixel Strand Test og noen jeg satte sammen.

Du må ha installert noen få biblioteker. De er tilgjengelige fra Libraries Manager på Arduino -programvaren.

Adafruit NeoPixel for ws2812b lysdioder

Ledning for å snakke med RTC over I2C (dette er innebygd som standard)

og RTClib for å vite hva du skal spørre RTC

/************************************************* ***************************NeoPixel ringeklokke av Andy Doro ([email protected]) https://andydoro.com/ringclock/ ************************************************* **************************

Endringshistorikk

Dato etter hva

20140320 AFD Første utkast 20160105 AFD Faded buer 20160916 AFD Trinket -kompatibel 20170727 AFD lagt til STARTPIXEL for 3D -kabinett, variabelt utgangspunkt, lagt til automatisk DST -støtte 20180424 AFD ved bruk av DST -bibliotek https://github.com/andydoro/DST_RTC *

/ inkluderer bibliotekskoden:

#include #include

#inkludere

// definere pins

#define SECPIN 3 #define MINPIN 4 #define HOUPIN 5

#define BRIGHTNESS 20 // angi maks lysstyrke

#define r 10

#define g 10 #define b 10 RTC_DS3231 rtc; // Etablere klokkeobjekt

Adafruit_NeoPixel stripS = Adafruit_NeoPixel (60, SECPIN, NEO_GRB + NEO_KHZ800); // strip objekt

Adafruit_NeoPixel stripM = Adafruit_NeoPixel (60, MINPIN, NEO_GRB + NEO_KHZ800); // strip objekt Adafruit_NeoPixel stripH = Adafruit_NeoPixel (24, HOUPIN, NEO_GRB + NEO_KHZ800); // strip objekt byte pixelColorRed, pixelColorGreen, pixelColorBlue; // holder fargeverdier

ugyldig oppsett () {

Wire.begin (); // Start I2C rtc.begin (); // start klokke

Serial.begin (9600);

// sett pinmodes pinMode (SECPIN, OUTPUT); pinMode (MINPIN, OUTPUT); pinMode (HOUPIN, OUTPUT);

if (rtc.lostPower ()) {

Serial.println ("RTC mistet strøm, lar oss angi tiden!"); // følgende linje angir RTC til dato og klokkeslett denne skissen ble kompilert rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Denne linjen angir RTC med en eksplisitt dato og klokkeslett, for eksempel for å angi // 21. januar 2014 klokken 03.00 du vil ringe: // rtc.adjust (DateTime (2014, 1, 21, 3, 0, 0)); }

stripS.begin ();

stripM.begin (); stripH.begin (); //strip.show (); // Initialiser alle piksler til "av"

// oppstartssekvens

forsinkelse (500);

colorWipeS (stripS. Color (0, g, 0), 5); // Blå colorWipeM (stripM. Color (r, 0, 0), 5); // Blå colorWipeH (stripH. Color (0, 0, b), 50); // Blå

forsinkelse (1000);

DateTime theTime = rtc.now (); // tar hensyn til DST byte secondval = theTime.second (); // få sekunder byte minuteval = theTime.minute (); // få minutter int hourval = theTime.hour (); timeval = timeval % 12; // Denne klokken er 12 timer, hvis 13-23, konverter til 0-11 '

for (uint16_t i = 0; i <secondval; i ++) {stripS.setPixelColor (i, 0, 0, b); stripS.show (); forsinkelse (5); }

for (uint16_t i = 0; i <minuteval; i ++) {stripM.setPixelColor (i, 0, g, 0); stripM.show (); forsinkelse (5); }

for (uint16_t i = 0; i <hourval; i ++) {stripH.setPixelColor (i, r, 0, 0); stripH.show (); forsinkelse (5); }

}

void loop () {

// få tid

DateTime theTime = rtc.now (); // tar hensyn til sommertid

byte secondval = theTime.second (); // få sekunder

byte minuteval = theTime.minute (); // få minutter int hourval = theTime.hour (); // få timer hourval = hourval % 12; // Denne klokken er 12 timer, hvis 13-23, konverter til 0-11 '

stripS.setPixelColor (andreverdi, 0, 0, 20); stripS.show (); forsinkelse (10); if (secondval == 59) {for (uint8_t i = stripS.numPixels (); i> 0; i--) {stripS.setPixelColor (i, 0, g, 0); stripS.show (); forsinkelse (16);}}

stripM.setPixelColor (minuteval, 0, g, 0);

stripM.show (); forsinkelse (10); if (secondval == 59 && minuteval == 59) {for (uint8_t i = stripM.numPixels (); i> 0; i--) {stripM.setPixelColor (i, r, 0, 0); stripM.show (); forsinkelse (16);}}

stripH.setPixelColor (timeval, r, 0, 0);

stripH.show (); forsinkelse (10); if (secondval == 59 && minuteval == 59 && hourval == 11) {for (uint8_t i = stripH.numPixels (); i> 0; i--) {stripH.setPixelColor (i, 0, 0, b); stripH.show (); forsinkelse (83);}} // for seriell feilsøking Serial.print (hourval, DEC); Serial.print (':'); Serial.print (minuteval, DEC); Serial.print (':'); Serial.println (secondval, DEC); }

// Fyll prikkene etter hverandre med en farge

void colorWipeS (uint32_t c, uint8_t wait) {for (uint16_t i = 0; i <stripS.numPixels (); i ++) {stripS.setPixelColor (i, c); stripS.show (); forsinkelse (vent); }}

void colorWipeM (uint32_t c, uint8_t wait) {

for (uint16_t i = 0; i <stripM.numPixels (); i ++) {stripM.setPixelColor (i, c); stripM.show (); forsinkelse (vent); }}

void colorWipeH (uint32_t c, uint8_t wait) {

for (uint16_t i = 0; i <stripH.numPixels (); i ++) {stripH.setPixelColor (i, c); stripH.show (); forsinkelse (vent); }}

Trinn 5: Siste berøringer

Image
Image
Siste berøringer
Siste berøringer

Alt som skal være igjen nå er å fikse RTC og mikrokontrolleren ned i fordypningen.

Jeg har montert RTC -batterisiden opp slik at jeg enkelt kan bytte batteri om nødvendig.

Koble 5v -ledningene til + siden av kontakten og bakken til siden

Slå på den!

Jeg har min koblet til en USB -batteribank, men en USB -telefonlader ville fungere like bra.

Merk:

Lysstyrken til lysdiodene er angitt i koden. Det er satt lavt for å holde gjeldende trekning lav. Ved full lysstyrke med alle lysdiodene tent kunne den trekke nesten 8 ampere. Med det nåværende oppsettet er det mindre enn 1.

Klokker konkurranse
Klokker konkurranse
Klokker konkurranse
Klokker konkurranse

Andreplass i klokkekonkurransen

Anbefalt: