Sisällysluettelo:

132 pikselikello: 5 vaihetta (kuvien kanssa)
132 pikselikello: 5 vaihetta (kuvien kanssa)

Video: 132 pikselikello: 5 vaihetta (kuvien kanssa)

Video: 132 pikselikello: 5 vaihetta (kuvien kanssa)
Video: ошибка [レッドゾーン] 2024, Marraskuu
Anonim
Image
Image
132 pikselin kello
132 pikselin kello

Olen ollut niin kauan kuin muistan LED -valojen ja ajan pakkomielle. Tässä projektissa olen luonut suuren seinäkellon, joka näyttää nykyisen ajan käyttämällä 132 neopixel -LEDiä, jotka on asennettu ja loistavat kuusen laudan läpi. Se on hybridi -analoginen digitaalinen, jossa on yksittäinen pikseli joka tunti, minuutti ja sekunti.

Tämä oli suurin projekti, jonka olen tähän mennessä ottanut, aloin miettiä sitä 6 kuukautta sitten ja idea tuli hitaasti yhteen. Olen todella tyytyväinen tulokseen ja haluan jakaa sen kanssanne.

Vaihe 1: Tarvikkeiden ja työkalujen kerääminen

Tarvikkeiden ja työkalujen kerääminen
Tarvikkeiden ja työkalujen kerääminen
Tarvikkeiden ja työkalujen kerääminen
Tarvikkeiden ja työkalujen kerääminen
Tarvikkeiden ja työkalujen kerääminen
Tarvikkeiden ja työkalujen kerääminen
Tarvikkeiden ja työkalujen kerääminen
Tarvikkeiden ja työkalujen kerääminen

Komponentit

Tämä projekti on rakennettu paikallisen DIY -myymäläni harrastelevylle. Levyn leveys on 850 mm, korkeus 500 mm ja syvyys 18 mm.

Tässä projektissa käytetyt LEDit ovat 5050 WS2812b, jotka on asennettu pyöreille piirilevyille, joiden halkaisija on noin 9 mm ja joissa on juotospehmusteet takana.

Käytän Arduino Pro Mini -yhteensopivaa mikro -ohjainta. Se on 5V 16 MHZ versio. Valitsin tämän, koska siinä on erittäin ohut muotoilu, pieni jalanjälki ja kaikki tarvittavat portit sekä varaa tulevia päivityksiä varten. Se on myös 5 volttia, joten voin käyttää yhtä virtalähdettä LEDeille, mikro -ohjaimelle ja RTC: lle

Ajan pitämisestä huolehtii RTC (Real Time Clock) -moduuli, jossa on DS3231 -siru. Tämä siru on erittäin tarkka, joten ajan ei pitäisi kulua liikaa.

Käytetään myös:

Johto. Juotos ja kuuma liima.

Työkalut:

Pora- ja puuporat (10 mm ja 5 mm)

Juotin

Kuuma liimapistooli

langankatkoja

Dremel- ja upotusreitittimien lisävarusteet

Vaihe 2: Merkintä, poraus ja reititys

Merkintä, poraus ja reititys
Merkintä, poraus ja reititys
Merkintä, poraus ja reititys
Merkintä, poraus ja reititys
Merkintä, poraus ja reititys
Merkintä, poraus ja reititys

Poraus

  • Löydä laudan keskipiste käyttämällä salmen reunaa piirtämällä viiva vastakkaisista kulmista.
  • Merkitse 3 ympyrää narulla ja kynällä. Ulomman ympyrän tulisi olla noin 20 mm levyn reunasta, kun taas kaksi muuta viivaa siirtyvät 15 mm sisään viimeisestä viivasta.
  • Käytin painettua kellotaulua auttamaan minua merkitsemään kunkin minuutin ja sekunnin sijainnit kahdelle ulkoiselle riville ja tunnit sisäiselle riville.
  • Poraa 10 mm reikiä noin 5 mm syvyyteen joka tunti, minuutti ja sekunti.
  • Tee 5 mm: n poralla reikiä levylle tunti, minuutti ja sekunti.

Reititys

Vaikka tämä vaihe ei ole välttämätön, se mahdollistaa kellon kiinnittämisen seinään.

  • Reitittimen ja ympyräohjaimen käyttäminen reitittää johdon kanavat piirilevylle
  • Merkitse ja reititä syvennys RTC- ja mikro -ohjaimeen asumaan.
  • Reititä kanava ulkolinjoista johtojen syvennykseen

Vaihe 3: Niin paljon sotilasta, leikkaamista ja kuorimista

Niin paljon sotilasta, leikkaamista ja riisumista
Niin paljon sotilasta, leikkaamista ja riisumista
Niin paljon sotilasta, leikkaamista ja riisumista
Niin paljon sotilasta, leikkaamista ja riisumista
Niin paljon sotilasta, leikkaamista ja riisumista
Niin paljon sotilasta, leikkaamista ja riisumista

Tämä seuraava osa on paljon helpompi sanoa kuin tehdä. Neuvoni olisi huomio kiirehtiä sitä. yritä löytää järjestelmä ja päästä rytmiin.

Jokainen LED tarvitsee 5 volttia sisään, 5 volttia ulos, data sisään, data ulos, maadoitus sisään ja maadoitus ulos. Sisältää virran mikro -ohjaimelle ja RTC: lle yli 400 johtoa, kaikki irrotettu ja juotettu molemmista päistä.

Tarttuva sininen aine on erittäin hyödyllinen tässä vaiheessa.

  • Aloitin asettamalla 2 LEDiä reikiinsä vierekkäin selvittääkseen tarvittavan johdon pituuden toisiinsa yhdistämiseksi.
  • Käyttäen ensimmäistä lankakappaletta oppaana leikkasin sitten 60 jokaista värilankaa.
  • Irrota 2 mm holkkia kunkin langan päistä ja tinaa ne juotoksella.
  • Juotos pieni juotoslohko jokaisen LED -tyynyn päälle.
  • Juotta johdot LED -valoon muodostaen kaksi 60 -ketjuista minuuttia ja sekuntia ja yksi 12 -ketjuinen tunti. Käytin punaista johtoa 5 V: lle, keltaista tiedoille ja sinistä maadoitukselle.
  • Muista kytkeä jokainen Datalähtö (DOUT) seuraavan LED -valon Data In (DIN) -liitäntään
  • Jokaisen ketjun annoksen viimeinen ledi ei tarvitse tiedonsiirtojohtoa.

Kun kaikki ketjut on suoritettu, on hyvä testata ne ennen niiden asentamista. Käytin Arduino UNO: ta ja Adafruit NeoPixel Strand -testiä varmistaakseni, että jokainen LED toimi.

Juottaa pidemmät johdot jokaiseen ketjuun 5 V, maadoitus ja data sisään.

Tässä vaiheessa pitäisi olla viisi 5 voltin johtoa, kolme datajohtoa, jotka on kytketty Arduino Pro Mini -laitteeseen, ja viisi maadoitusjohtoa.

Irrota 5 mm 5 V: n johtimien päistä ja juota ne kaikki yhteen ja toista sama maadoitusjohtimille.

Kun olet suorittanut kolme ketjua, juota 5 V: n johto Arduino Pro Minin RAW -nastaan ja myös RTC: n VCC -nastaan. Maadoitusjohto GND: hen Arduino Pro Minissä ja RTC: ssä ja sitten 2 muuta johtoa:

SCL ProCin RTC: stä A5: een

SDA RT Mini: stä A4: ään

LED -valojen datalinjojen tulee muodostaa yhteys:

  • Sekuntia - digitaalinen nasta 3.
  • Minuutit - DigitalPin 4
  • Aukioloajat - DigitalPin 5

Vaihe 4: Asennus

Asennetaan
Asennetaan
Asennetaan
Asennetaan
Asennetaan
Asennetaan

Kun LEDit on juotettu, niiden asennuksen reikiin tulee olla suoraan eteenpäin. LEDit on asennettava niin, että tiedot kulkevat ympäri vastapäivään, kun katsot niitä takaa, kun koodi on asetettu eteen.

Käytin pientä määrää kuumaa liimaa pitämään ne alhaalla, koska haluan korvata yhden LED -valon, jos se epäonnistuu tulevaisuudessa.

Käytin myös kuumaliimaa pitämään kaikki johdot siistinä ja siistinä ja kiinnittämään tynnyrin liitin levyyn.

Saatavilla on useita arduino pro mini -ohjelmointioppaita. Käytän ulkoista USB -sarjamuunninmenetelmää tämän koodin lataamiseen Arduinolle:

Tämä koodi asettaa myös RTC: n ajan siihen aikaan, jolloin se on koottu. joten on tärkeää vain tuoda latauspainike niin, että se noudattaa ja lataa mahdollisimman nopeasti.

Suuri osa tästä koodista on lainattu Andy Doron NeoPixel Ring Clockilta. Osa Adafruit NeoPixel Strand -testistä ja osa koottu.

Sinun on asennettava muutama kirjasto. Ne ovat saatavilla Arduino -ohjelmiston Libraries Manager -ohjelmasta.

Adafruit NeoPixel ws2812b -LEDeille

Johto RTC: lle puhumiseen I2C: n kautta (tämä on vakiovaruste)

ja RTClib, koska he tietävät mitä kysyä RTC: ltä

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

Versiohistoria

Päivämäärä Mitä

20140320 AFD Ensimmäinen luonnos 20160105 AFD Haalistuneet kaaret 20160916 AFD Trinket -yhteensopiva 20170727 AFD lisäsi STARTPIXELin 3D -koteloon, muuttuva lähtökohta, lisäsi automaattisen DST -tuen 20180424 AFD DST -kirjaston avulla https://github.com/andydoro/DST_RTC *

/ sisälly kirjastokoodi:

#Sisällytä #Sisällytä

#sisältää

// määrittele nastat

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

#define BRIGHTNESS 20 // aseta kirkkaus

#määrittele r 10

#define g 10 #define b 10 RTC_DS3231 rtc; // Luo kello -objekti

Adafruit_NeoPixel stripS = Adafruit_NeoPixel (60, SECPIN, NEO_GRB + NEO_KHZ800); // nauhoita esine

Adafruit_NeoPixel strip M = Adafruit_NeoPixel (60, MINPIN, NEO_GRB + NEO_KHZ800); // nauhaobjekti Adafruit_NeoPixel strip H = Adafruit_NeoPixel (24, HOUPIN, NEO_GRB + NEO_KHZ800); // strip objektin tavu pixelColorRed, pixelColorGreen, pixelColorBlue; // sisältää väriarvoja

void setup () {

Wire.begin (); // Aloita I2C rtc.begin (); // aloita kello

Sarja.alku (9600);

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

if (rtc.lostPower ()) {

Serial.println ("RTC katkaisi virran, asettaa ajan!"); // seuraava rivi asettaa RTC: lle tämän luonnoksen kokoamispäivän ja -ajan rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Tämä rivi asettaa RTC: lle nimenomaisen päivämäärän ja kellonajan, esimerkiksi asetettavaksi // 21. tammikuuta 2014 klo 3, jota kutsut: // rtc.adjust (DateTime (2014, 1, 21, 3, 0, 0)); }

stripS.begin ();

stripM.begin (); stripH.begin (); //strip.show (); // Alusta kaikki pikselit pois päältä

// käynnistysjärjestys

viive (500);

colorWipeS (nauha S. Väri (0, g, 0), 5); // Sininen väri PyyhiM (nauhaM. Väri (r, 0, 0), 5); // Sininen väri PyyhiH (nauhaH. Väri (0, 0, b), 50); // Sininen

viive (1000);

DateTime theTime = rtc.now (); // ottaa huomioon DST -tavun secondval = theTime.second (); // hanki sekuntia tavu minuteval = theTime.minute (); // hanki minuutit int tunti = theTime.hour (); hourval = tunti % 12; // Tämä kello on 12 tuntia, jos 13-23, muuta arvoksi 0-11"

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

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

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

}

void loop () {

// saa aikaa

DateTime theTime = rtc.now (); // ottaa huomioon DST

tavu secondval = theTime.second (); // saat sekunteja

tavu minuteval = theTime.minute (); // hanki minuutit int tunti = theTime.hour (); // get hours hourval = hourval % 12; // Tämä kello on 12 tuntia, jos 13-23, muuta arvoksi 0-11"

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

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

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

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

stripH.show (); viive (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);}} // sarjavirheenkorjaukseen Serial.print (hourval, DEC); Serial.print (':'); Serial.print (minuutti, DEC); Serial.print (':'); Serial.println (secondval, DEC); }

// Täytä pisteet peräkkäin värillä

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

void colorWipeM (uint32_t c, uint8_t wait) {

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

void colorWipeH (uint32_t c, uint8_t wait) {

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

Vaihe 5: Viimeiset kosketukset

Image
Image
Viimeiset kosketukset
Viimeiset kosketukset

Nyt ei jää muuta kuin kiinnittää RTC ja mikro -ohjain syvennykseen.

Olen asentanut RTC -akun puoli ylöspäin, jotta voin vaihtaa pariston helposti tarvittaessa.

Kytke 5 V: n johdot liittimen + -puoleen ja maadoitus - - puoleen

Käynnistä se!

Olen liittänyt omani USB -akkupankkiin, mutta USB -puhelimen laturi toimisi yhtä hyvin.

Huomautus:

LEDien kirkkaus asetetaan koodiin. Se on asetettu alhaiseksi pitämään nykyinen nosto alhaisena. Täydellä kirkkaudella kaikkien LED -valojen palaessa se voi vetää lähes 8 ampeeria. Nykyisellä asetuksella se on alle 1.

Kellokilpailu
Kellokilpailu
Kellokilpailu
Kellokilpailu

Toinen sija kellokilpailussa

Suositeltava: