Sadržaj:

Sat od 132 piksela: 5 koraka (sa slikama)
Sat od 132 piksela: 5 koraka (sa slikama)

Video: Sat od 132 piksela: 5 koraka (sa slikama)

Video: Sat od 132 piksela: 5 koraka (sa slikama)
Video: IPHONE vs XIAOMI 2024, Studeni
Anonim
Image
Image
132 Sat od piksela
132 Sat od piksela

Ja sam, koliko se sjećam, bio opsjednut LED diodama i vremenom. U ovom projektu stvorio sam veliki zidni sat koji prikazuje trenutno vrijeme koristeći 132 neopikselne LED diode montirane i sijajući kroz smrekovu ploču. Hibridni analogni digitalni digitalni piksel s pojedinačnim pikselom za svaki sat, minutu i sekundu.

Ovo je bio najveći projekt koji sam do sada preuzeo, počeo sam razmišljati o tome prije 6 mjeseci i ideja se polako spojila. Zaista sam zadovoljan ishodom i radujem se što ću ga podijeliti s vama.

Korak 1: Prikupljanje potrepština i alata

Prikupljanje potrepština i alata
Prikupljanje potrepština i alata
Prikupljanje potrepština i alata
Prikupljanje potrepština i alata
Prikupljanje potrepština i alata
Prikupljanje potrepština i alata
Prikupljanje potrepština i alata
Prikupljanje potrepština i alata

Komponente

Ovaj je projekt izgrađen na jeftinoj hobi ploči iz moje lokalne DIY trgovine. Ploča ima širinu 850 mm, visinu 500 mm i dubinu 18 mm.

LED diode korištene u ovom projektu su 5050 WS2812b montirane na kružne tiskane ploče promjera približno 9 mm sa lemnim jastučićima na stražnjoj strani.

Koristim mikrokontroler kompatibilan s Arduino Pro Mini. Verzija je 5V 16 MHZ. Odabrao sam ovu jer ima super tanak dizajn, mali otisak stopala i sve potrebne priključke plus nešto rezervnih za buduće nadogradnje. Također ima 5 volti pa mogu koristiti jedno napajanje za LED diode, mikro kontroler i RTC

O mjerenju vremena brine se modul RTC (Sat u stvarnom vremenu) koji ima čip DS3231. Ovaj čip je vrlo precizan pa vrijeme ne bi smjelo previše lutati.

Također se koristi:

Žica. Lemljenje i vruće ljepilo.

Alati:

Električna bušilica i svrdla za drvo (10 mm i 5 mm)

Lemilica

Pištolj za vruće ljepilo

žice

Dremel pribor za usmjerivač

Korak 2: Označavanje, bušenje i usmjeravanje

Obilježavanje, bušenje i usmjeravanje
Obilježavanje, bušenje i usmjeravanje
Obilježavanje, bušenje i usmjeravanje
Obilježavanje, bušenje i usmjeravanje
Obilježavanje, bušenje i usmjeravanje
Obilježavanje, bušenje i usmjeravanje

Bušenje

  • Pomoću uskog ruba pronađite središte ploče povlačenjem crte iz suprotnih kutova.
  • Označite 3 kruga uzicom i olovkom. Najviše vanjski krug trebao bi biti udaljen oko 20 mm od ruba ploče, a ostale 2 linije pomaknute se 15 mm od posljednje linije.
  • Koristio sam ispisani brojčanik sata kako bih lakše označio položaje svake minute i sekunde na vanjskim 2 reda i sata na unutarnjoj liniji.
  • Izbušite rupe od 10 mm dubine približno 5 mm za svaki sat, minutu i sekundu.
  • Bušilicom od 5 mm napravite rupe na ploči sat, minutu i sekundu.

Usmjeravanje

Iako ovaj korak nije nužan, omogućit će da se sat ugradio u ravninu sa zidom.

  • Korištenje usmjerivača i kružnih vodiča usmjerite žičane kanale na ploči
  • Označite i usmjerite udubljenje za stanovanje RTC -a i mikrokontrolera.
  • Provucite kanal od vanjskih vodova do udubljenja za žice

Korak 3: Toliko lemljenja, rezanja i skidanja

Toliko lemljenja, rezanja i skidanja
Toliko lemljenja, rezanja i skidanja
Toliko lemljenja, rezanja i skidanja
Toliko lemljenja, rezanja i skidanja
Toliko lemljenja, rezanja i skidanja
Toliko lemljenja, rezanja i skidanja

Ovaj sljedeći dio mnogo je lakše reći nego učiniti. Moj savjet bi bio napomena da požurite. pokušajte pronaći sustav i uđite u ritam.

Svaka LED dioda treba 5 volti, 5 volti napona, ulaz podataka, izlaz podataka, uzemljenje i uzemljenje. uključujući napajanje za mikro kontroler i RTC njegovih preko 400 žica, sve skinute i lemljene na oba kraja.

Ljepljiva plava tvar vrlo je korisna za ovaj korak.

  • Počeo sam postavljanjem 2 LED diode u njihove rupice jedna do druge kako bismo odredili duljinu žice potrebne za međusobno povezivanje.
  • Koristeći prvi komad žice kao vodič, zatim sam izrezao 60 žica svake boje.
  • S krajeva svake žice skinite 2 mm omotača i zalijepite ih lemljenjem.
  • Lepite malu mrlju lema na svaki od LED jastučića.
  • Lemite žice na LED diode kako biste formirali dva lanca od 60 za minute i sekunde i jedan lanac od 12 za sate. Koristio sam crvenu žicu za 5V, žutu za podatke i plavu za uzemljenje.
  • Pripazite da svaki Data Out (DOUT) spojite na Data In (DIN) sljedeće LED diode
  • Posljednji dio u svakoj dozi lanca ne treba žicu za prijenos podataka.

Nakon što su svi lanci dovršeni, dobro ih je testirati prije instaliranja. Koristio sam svoj Arduino UNO i Adafruit NeoPixel Strand Test kako bih potvrdio da svaka LED radi.

Lemite duže žice na svaki od lanaca za 5V, uzemljenje i podatke.

U ovom trenutku trebalo bi biti pet žica od 5 volti, tri podatkovne žice spojene na Arduino Pro Mini i 5 žica za uzemljenje.

Skinite 5 mm s krajeva 5 -voltnih žica i sve ih zalemite i ponovite za uzemljene žice.

Nakon što dovršite tri lanca, lemite žicu od 5 V na RAW pin Arduino Pro Mini, a također i na VCC pin za RTC. Žica za uzemljenje na GND na Arduino Pro Mini i RTC, a zatim još 2 žice:

SCL od RTC do A5 na Pro Mini

SDA od RTC -a do A4 na Pro Miniju

Podatkovni vodiči s LED dioda trebali bi se spojiti na:

  • Sekunde - digitalni pin 3.
  • Minute - DigitalPin 4
  • Sati - DigitalPin 5

Korak 4: Instaliranje

Instaliranje
Instaliranje
Instaliranje
Instaliranje
Instaliranje
Instaliranje

Nakon lemljenja, postavljanje LED dioda u njihove rupe treba biti ravno naprijed. LED diode je potrebno instalirati tako da se podaci kreću u smjeru suprotnom od kazaljke na satu kada ih gledate sa stražnje strane jer je kod postavljen prema naprijed.

Koristio sam malu količinu vrućeg ljepila da ih držim pritisnute jer želim zamijeniti jednu LED diodu ako u budućnosti ne uspije.

Također sam koristio vruće ljepilo da sve žice budu čiste i uredne te da pričvrstim priključak cijevi na ploču.

Dostupni su brojni vodiči za programiranje arduino pro mini. Za učitavanje ovog koda na Arduino koristim metodu vanjskog USB -serijskog pretvarača:

Ovaj će kôd također postaviti vrijeme na RTC -u na vrijeme njegovog sastavljanja. pa je važno samo zaustaviti gumb za prijenos kako bi bio usklađen i učitao se što je brže moguće.

Veći dio ovog koda posudio je Andy Doro iz NeoPixel Ring Clock -a. Neke od Adafruit NeoPixel Strand testa, a neke sam sastavio.

Morat ćete imati instalirano nekoliko knjižnica. Dostupne su u upravitelju knjižnica u softveru Arduino.

Adafruit NeoPixel za LED diode ws2812b

Žica za razgovor s RTC -om preko I2C (ovo je standardno ugrađeno)

i RTClib jer zna što pitati RTC

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

Povijest revizija

Datum po čemu

20140320 AFD Prvi nacrt 20160105 AFD Izblijedjeli lukovi 20160916 AFD Trinket kompatibilan 20170727 AFD dodan STARTPIXEL za 3D kućište, promjenjiva početna točka, dodana automatska podrška za DST 20180424 AFD pomoću DST knjižnice https://github.com/andydoro/DST_RTC *

/ uključi šifru knjižnice:

#include #include

#uključi

// definiramo pinove

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

#define BRIGHTNESS 20 // postavite maksimalnu svjetlinu

#definirajte r 10

#define g 10 #define b 10 RTC_DS3231 rtc; // Uspostavljanje objekta sata

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); // bajt objekta objekta strip pixelColorRed, pixelColorGreen, pixelColorBlue; // sadrži vrijednosti boje

void setup () {

Wire.begin (); // Početak I2C rtc.begin (); // početak sata

Serial.begin (9600);

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

if (rtc.lostPower ()) {

Serial.println ("RTC je izgubio napajanje, dopustite da postavite vrijeme!"); // sljedeći redak postavlja RTC na datum i vrijeme sastavljanja ove skice rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Ovaj redak postavlja RTC s eksplicitnim datumom i vremenom, na primjer za postavljanje // 21. siječnja 2014. u 3 ujutro koje biste nazvali: // rtc.adjust (DateTime (2014, 1, 21, 3, 0, 0)); }

stripS.begin ();

stripM.begin (); stripH.begin (); //strip.show (); // Pokretanje svih piksela na "isključeno"

// redoslijed pokretanja

kašnjenje (500);

colorWipeS (stripS. Color (0, g, 0), 5); // Plava bojaWipeM (stripM. Color (r, 0, 0), 5); // Plava bojaWipeH (stripH. Color (0, 0, b), 50); // Plava

kašnjenje (1000);

DateTime theTime = rtc.now (); // uzima u obzir DST bajt secondval = theTime.second (); // dobivamo sekundni bajt minuteval = theTime.minute (); // dobivamo minute int hourval = theTime.hour (); hourval = hourval % 12; // Ovaj sat je 12 sati, ako je 13-23, pretvorite u 0-11`

za (uint16_t i = 0; i <secondval; i ++) {stripS.setPixelColor (i, 0, 0, b); stripS.show (); kašnjenje (5); }

za (uint16_t i = 0; i <minuteval; i ++) {stripM.setPixelColor (i, 0, g, 0); stripM.show (); kašnjenje (5); }

za (uint16_t i = 0; i <hourval; i ++) {stripH.setPixelColor (i, r, 0, 0); stripH.show (); kašnjenje (5); }

}

void loop () {{100} {101}

// dobiti vrijeme

DateTime theTime = rtc.now (); // uzima u obzir ljetno računanje vremena

byte secondval = theTime.second (); // dobiti sekunde

byte minuteval = theTime.minute (); // dobijemo minute int hourval = theTime.hour (); // dobiti sate hourval = hourval % 12; // Ovaj sat je 12 sati, ako je 13-23, pretvorite u 0-11`

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

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

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

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

stripH.show (); kašnjenje (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 (); delay (83);}} // za serijsko otklanjanje pogrešaka Serial.print (hourval, DEC); Serial.print (':'); Serijski ispis (minuteval, DEC); Serial.print (':'); Serial.println (secondval, DEC); }

// Ispunite točkice jednu za drugom bojom

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

void colorWipeM (uint32_t c, uint8_t čekanje) {

za (uint16_t i = 0; i <stripM.numPixels (); i ++) {stripM.setPixelColor (i, c); stripM.show (); odgoda (čekanje); }}

void colorWipeH (uint32_t c, uint8_t čekanje) {

za (uint16_t i = 0; i <stripH.numPixels (); i ++) {stripH.setPixelColor (i, c); stripH.show (); odgoda (čekanje); }}

Korak 5: Završni dodiri

Image
Image
Završni dodiri
Završni dodiri

Sve što sada treba ostati je popraviti RTC i mikro kontroler dolje u udubljenju.

RTC bateriju sam okrenuo prema gore tako da prema potrebi mogu lako promijeniti bateriju.

Spojite žice 5V na + stranu konektora, a uzemljenje na - stranu

Uključite ga!

Ja sam svoj spojio na USB bateriju, ali bi i USB punjač za telefon radio jednako dobro.

Bilješka:

Svjetlina LED dioda postavljena je u kodu. Postavljeno je nisko kako bi se trenutna razina održala niskom. Pri punoj svjetlini sa svim LED diodama mogao bi izvući gotovo 8 ampera. S trenutnim postavkama manje je od 1.

Natjecanje satova
Natjecanje satova
Natjecanje satova
Natjecanje satova

Drugoplasirani na natjecanju satova

Preporučeni: