Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-23 14:37
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 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 polako se ideja rodila. Zaista sam zadovoljan ishodom i radujem se što ću ga podijeliti s vama.
Korak 1: Prikupljanje potrepština i alata
Komponente
Ovaj projekt izgrađen je 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 koje se koriste u ovom projektu su 5050 WS2812b montirane na kružne štampane ploče promjera približno 9 mm sa lemilicama na stražnjoj strani.
Koristim Arduino Pro Mini kompatibilan mikro kontroler. Verzija je 5V 16 MHZ. Odabrao sam ovu jer ima super tanak dizajn, mali otisak stopala i sve potrebne portove 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 čuvanju vremena brine RTC (Real Time Clock) modul koji sadrži čip DS3231. Ovaj čip je vrlo precizan pa vrijeme ne bi trebalo previše da se udaljava.
Koristi se i:
Žica. Lemljenje i vruće ljepilo.
Alati:
Električna bušilica i burgije za drvo (10 mm i 5 mm)
Lemilica
Pištolj za vruće ljepilo
žice
Dremel i dodaci za glodalice
Korak 2: Obilježavanje, bušenje i usmjeravanje
Bušenje
- Koristeći uski rub pronađite središte ploče povlačenjem linije sa suprotnih uglova.
- 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 se pomiču za 15 mm od posljednje linije.
- Koristio sam odštampani brojčanik sata kako bih lakše označio pozicije svake minute i sekunde na vanjskim 2 reda i sata na unutrašnjoj liniji.
- Izbušite rupe od 10 mm dubine približno 5 mm za svaki sat, minut i sekundu.
- Bušilicom od 5 mm napravite rupe na dasci sat, minut i sekundu.
Usmjeravanje
Iako ovaj korak nije neophodan, on će omogućiti postavljanje sata u ravnini sa zidom.
- Korištenje usmjerivača i kružnih vodiča vodi ž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
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 sistem i uđite u ritam.
Svakoj od LED dioda potrebno je 5 volti, 5 volti napona, ulaz podataka, izlaz podataka, uzemljenje i uzemljenje. uključujući napajanje za mikro kontroler i RTC sa preko 400 žica, sve skinute i lemljene na oba kraja.
Ljepljiva plava tvar vrlo je korisna za ovaj korak.
- Počeo sam tako što sam postavio 2 LED diode u njihove rupe jedna do druge kako bih odredio dužinu žice potrebne za međusobno povezivanje.
- Koristeći prvi komad žice kao vodič, tada sam izrezao 60 žica svake boje.
- Skinite 2 mm rukava sa krajeva svake žice i zalijepite ih lemljenjem.
- Lemite 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.
- Vodite računa 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, dobra je ideja isprobati ih prije instaliranja. Koristio sam svoj Arduino UNO i Adafruit NeoPixel Strand Test da provjerim da li svaka LED radi.
Lemite duže žice na svaki od lanaca za 5V, uzemljenje i ulaz podataka.
U ovom trenutku trebalo bi biti pet žica od 5 volti, tri žice podataka spojene na Arduino Pro Mini i 5 žica za uzemljenje.
Skinite 5 mm s krajeva žica od 5 volta i sve ih zalemite i ponovite za uzemljene žice.
Nakon završetka 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 Mini
Linije za prijenos podataka sa LED dioda trebaju se spojiti na:
- Sekunde - digitalni pin 3.
- Zapisnici - DigitalPin 4
- Sati - DigitalPin 5
Korak 4: Instaliranje
Nakon lemljenja, postavljanje LED dioda u njihove rupe treba biti ravno prema 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 pritisnutim jer želim zamijeniti jednu LED ako u budućnosti ne uspije.
Koristio sam i vruće ljepilo da sve žice budu uredne i uredne i da pričvrstim konektor cijevi na ploču.
Dostupni su brojni vodiči za programiranje arduino pro mini. Koristim metodu vanjskog USB -serijskog pretvarača za učitavanje ovog koda na Arduino:
Ovaj kod će također postaviti vrijeme na RTC -u na vrijeme njegovog sastavljanja. pa je važno samo zaustaviti dugme za prijenos kako bi se uskladilo i otpremilo što je brže moguće.
Veći dio ovog koda pozajmio je Andy Doro iz NeoPixel Ring Clock -a. Neke od Adafruit NeoPixel Strand testa, a neke sam sastavio.
Morat ćete imati instalirano nekoliko biblioteka. Dostupne su od upravitelja biblioteka u softveru Arduino.
Adafruit NeoPixel za ws2812b LED diode
Žica za razgovor s RTC -om preko I2C (ovo je standardno ugrađeno)
i RTClib za to što znaju šta pitati RTC
/************************************************* ***************************NeoPixel Ring Ring Andy Doro ([email protected]) https://andydoro.com/ringclock/ ************************************************ **************************
Istorija revizija
Datum po čemu
20140320 AFD Prvi nacrt 20160105 AFD Izblijedjeli lukovi 20160916 AFD Trinket kompatibilan 20170727 AFD je dodan STARTPIXEL za 3D kućište, promjenjiva početna tačka, dodana automatska podrška za DST 20180424 AFD koristeći DST biblioteku https://github.com/andydoro/DST_RTC *
/ uključi šifru biblioteke:
#include #include
#include
// definiramo pinove
#define SECPIN 3 #define MINPIN 4 #define HOUPIN 5
#define BRIGHTNESS 20 // postavite maksimalnu svjetlinu
#define 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 pixelColorRed, pixelColorGreen, pixelColorBlue; // sadrži vrijednosti boje
void setup () {
Wire.begin (); // Pokretanje 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, podesimo vrijeme!"); // sljedeći red postavlja RTC na datum i vrijeme sastavljanja ove skice rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Ova linija postavlja RTC sa eksplicitnim datumom i vremenom, na primjer za postavljanje // 21. januara 2014. u 3 ujutro koje biste pozvali: // rtc.adjust (DateTime (2014, 1, 21, 3, 0, 0)); }
stripS.begin ();
stripM.begin (); stripH.begin (); //strip.show (); // Pokretanje svih piksela na "isključeno"
// sekvenca pokretanja
kašnjenje (500);
colorWipeS (stripS. Color (0, g, 0), 5); // Plava colorWipeM (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); }
for (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
bajt minuteval = theTime.minute (); // dobivamo 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 grešaka Serial.print (hourval, DEC); Serial.print (':'); Serial.print (minuteval, DEC); Serial.print (':'); Serial.println (secondval, DEC); }
// Popunite tačke 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 (); kašnjenje (čekanje); }}
void colorWipeM (uint32_t c, uint8_t čekanje) {
for (uint16_t i = 0; i <stripM.numPixels (); i ++) {stripM.setPixelColor (i, c); stripM.show (); kašnjenje (čekanje); }}
void colorWipeH (uint32_t c, uint8_t čekanje) {
for (uint16_t i = 0; i <stripH.numPixels (); i ++) {stripH.setPixelColor (i, c); stripH.show (); kašnjenje (čekanje); }}
Korak 5: Završni dodiri
Sada samo preostaje da popravite RTC i mikro kontroler dolje u udubljenju.
Postavio sam RTC bateriju tako da može lako promijeniti bateriju ako je potrebno.
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 je postavljena u kodu. Postavljeno je nisko da zadrži nisku potrošnju struje. Pri punoj svjetlini sa svim LED diodama mogao bi izvući gotovo 8 ampera. S trenutnim postavkama manje je od 1.
Drugoplasirani na takmičenju Satovi
Preporučuje se:
FLEXBALL - fleksibilna PCB kugla od sto piksela sa WiFi -em: 6 koraka (sa slikama)
FLEXBALL - fleksibilna PCB kugla od sto piksela sa WiFi -jem: Pozdrav proizvođači, ona je proizvođač moekoe! Flexball je baziran na fleksibilnoj PCB -i koja je opremljena sa 100 WS2812 2020 adresabilnih LED dioda. Upravlja se ESP8285-01f - najmanjim modulom zasnovanim na ESP -u kompanije Espressif. Dodatno ima ADXL345 akcelerometar
Minecraft rudna lampa - prilagodljiva veličina i gustoća piksela: 4 koraka
Minecraft rudna lampa-prilagodljiva veličina i gustoća piksela: Moje sedmogodišnje dijete opsjednuto je Minecraftom, pa sam odlučio napraviti nešto vezano za njega. U potrazi za opcijama, postoji sjajan projekt lampe od Dan J Hamera u Thingiverseu, ali nakon što sam ga malo prilagodio, odlučio sam pokrenuti vlastiti projekt (vi
Postavljanje ERGO piksela: 5 koraka
ERGO Postavljanje piksela: Ovaj proces će vam pokazati kako instalirati vaš ERGO
64 piksela: 8 koraka (sa slikama)
64 piksela: Ovo je mali uređaj za prikaz animacija i kratkih poruka. Sastoji se samo od tri komponente i vrlo se lako gradi. I zabavno za gledati. Ako ne želite sami sakupljati sve stvari, možete kupiti komplet sa svim potrebnim dijelovima i p
RGB LED ekran od 64 piksela - još jedan Arduino klon: 12 koraka (sa slikama)
RGB LED ekran od 64 piksela - još jedan Arduino klon: Ovaj ekran je zasnovan na 8x8 RGB LED matrici. Za potrebe testiranja, bio je spojen na standardnu Arduino ploču (Diecimila) pomoću 4 registra pomaka. Nakon što sam ga pokrenuo, izradio sam ga na lakiranoj PCB -u. Registri pomaka su široki 8 bita i