Sisällysluettelo:
- Vaihe 1: Tarvikkeiden ja työkalujen kerääminen
- Vaihe 2: Merkintä, poraus ja reititys
- Vaihe 3: Niin paljon sotilasta, leikkaamista ja kuorimista
- Vaihe 4: Asennus
- Vaihe 5: Viimeiset kosketukset
Video: 132 pikselikello: 5 vaihetta (kuvien kanssa)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
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
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
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
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
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
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.
Toinen sija kellokilpailussa
Suositeltava:
Infrapuna -anturin käyttäminen Arduinon kanssa: 8 vaihetta (kuvien kanssa)
Infrapuna -anturin käyttäminen Arduinon kanssa: Mikä on infrapuna -anturi? . IR -signaali
Automaattinen lataus (tyhjiö) -kytkin ACS712: n ja Arduinon kanssa: 7 vaihetta (kuvien kanssa)
Automaattinen kuorman (tyhjiö) kytkin ACS712: n ja Arduinon kanssa: Hei kaikki! Sähkötyökalun käyttäminen suljetussa tilassa on kiire, koska kaikki ilmassa oleva pöly ja ilmassa oleva pöly tarkoittaa pölyä keuhkoissasi. Vac -myymälän suorittaminen voi poistaa osan tästä riskistä, mutta kytkeä sen päälle ja pois päältä joka kerta
GPS-moduulin (NEO-6m) liittäminen Arduinon kanssa: 7 vaihetta (kuvien kanssa)
GPS-moduulin (NEO-6m) liittäminen Arduinon kanssa: Tässä projektissa olen osoittanut, kuinka liittää GPS-moduuli Arduino UNO: n kanssa. Pituus- ja leveysasteiden tiedot näkyvät nestekidenäytössä ja sijaintia voi tarkastella sovelluksessa. Luettelo materiaalista Arduino Uno == > 8 dollarin Ublox NEO-6m GPS -moduuli == > 15 dollaria 16x
Kuvien tallentaminen tehtävää varten: 4 vaihetta (kuvien kanssa)
Kuvien tallentaminen tehtävää varten: 1. Avaa uusi Google -asiakirja ja suojaa kuvat tällä sivulla. Käytä ctrl (ohjaus) ja " c " kopioitava näppäin 3. Käytä ctrl (control) ja " v " liitettävä avain
Kuvien tekeminen saumattomiksi vain vaaka- tai pystysuunnassa ("The GIMP"): 11 vaihetta (kuvien kanssa)
Kuvien tekeminen saumattomiksi vain vaaka- tai pystysuunnassa ("The GIMP"): Jos yrität "Tee saumaton" -laajennusta GIMP: ssä, se tekee kuvasta saumattoman sekä vaaka- että pystysuunnassa samanaikaisesti. Se ei salli sinun tehdä siitä saumatonta vain yhdessä ulottuvuudessa. Tämä ohje auttaa sinua saamaan kuvan