INHOUDSOPGAWE:
- Stap 1: Versamel voorrade en gereedskap
- Stap 2: Merk, boor en roetering
- Stap 3: Soveel soldate, sny en stroop
- Stap 4: Installeer
- Stap 5: Laaste aanraking
Video: 132 pixelklok: 5 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:27
Ek het, so lank as wat ek kan onthou, 'n obsessie met LED's en tyd. In hierdie projek het ek 'n groot muurklok geskep wat die huidige tyd wys met 132 neopixel LED's wat gemonteer en deur 'n sparplank skyn. Dit is 'n hibriede analoog digitaal met 'n individuele pixel vir elke uur, minuut en sekonde.
Dit was die grootste projek wat ek tot dusver aangepak het; ek het 6 maande gelede daaraan begin dink en die idee het stadig bymekaar gekom. Ek is regtig tevrede met die uitslag en sien uit daarna om dit met u te deel.
Stap 1: Versamel voorrade en gereedskap
Komponente
Hierdie projek is gebou op 'n luukse stokperdjiebord van my plaaslike DIY -winkel. Die bord is 850 mm breed by 500 mm hoog en 18 mm diep.
Die LED's wat in hierdie projek gebruik word, is 5050 WS2812b gemonteer op sirkelvormige PCB's wat ongeveer 9 mm in deursnee is met soldeerblokkies aan die agterkant.
Ek gebruik 'n Arduino Pro Mini -verenigbare mikrobeheerder. Dit is die 5V 16 MHZ weergawe. Ek het hierdie een gekies, want dit het 'n superslanke ontwerp, klein voetafdruk en al die nodige poorte plus 'n paar ekstra vir toekomstige opgraderings. Dit is ook 5 volt, sodat ek 'n enkele kragtoevoer kan gebruik vir die LED's, mikrobeheerder en RTC
Die tydsberekening word versorg deur 'n RTC -module (Real Time Clock) met die DS3231 -chip. Hierdie chip is baie akkuraat, so die tyd moet nie te veel dryf nie.
Ook gebruik:
Draad. Soldeersel en warm gom.
Gereedskap:
Kragboor en houtboorpunte (10 mm en 5 mm)
Soldeerbout
Warm gom geweer
draadknipsels
Dremel en dompel router bykomstighede
Stap 2: Merk, boor en roetering
Boor
- Gebruik 'n seestrand om die middel van die bord te vind deur 'n lyn uit teenoorgestelde hoeke te trek.
- Merk 3 sirkels met 'n stuk tou en 'n pen. Die buitenste sirkel moet ongeveer 20 mm van die rand van die bord af wees, terwyl die ander 2 lyne 15 mm van die laaste reël inbeweeg.
- Ek het 'n gedrukte horlosie gebruik om my te help om die posisies van elk van die minute en sekondes op die buitenste 2 reëls en ure op die binneste lyn te merk.
- Boor 10 mm gate van ongeveer 5 mm diep vir elke uur, minuut en sekonde.
- Gebruik die 5 mm -boor om gate, minute en sekondes deur die bord te maak.
Routering
Alhoewel hierdie stap nie nodig is nie, kan die horlosie teen 'n muur vasgemaak word.
- Met behulp van 'n router en 'n sirkelgeleier, lei roetekanale in die bord
- Merk 'n uitsparing vir die RTC en die mikrobeheerder om in te woon.
- Trek 'n kanaal van die buitenste lyne na die uitsparing vir drade
Stap 3: Soveel soldate, sny en stroop
Hierdie volgende deel is baie makliker om te sê as om te doen. My advies is om daarop te let. probeer om 'n stelsel te vind en kry 'n ritme.
Elkeen van die LED's benodig 5 volt in, 5 volt uit, data in, data uit, grond in en grond uit. insluitend krag vir die mikrobeheerder en RTC, die meer as 400 drade, wat aan beide kante gestroop en gesoldeer is.
'N Klewerige blou stof is baie nuttig vir hierdie stap.
- Ek het begin deur 2 LED's in hul gate langs mekaar te plaas om die lengte van die draad wat nodig is om met mekaar te verbind, uit te werk.
- Deur die eerste stuk draad as 'n gids te gebruik, sny ek 60 van elke kleur draad.
- Trek 2 mm mou van die punte van elke draad af en maak dit met soldeer vas.
- Soldeer 'n klein klont soldeer op elk van die LED -pads.
- Soldeer die drade aan die LED's om twee kettings van 60 vir die minute en sekondes te vorm en een ketting van 12 vir die ure. Ek gebruik rooi draad vir 5V, geel vir data en blou vir grond.
- Koppel elke Data Out (DOUT) aan die Data In (DIN) van die volgende LED
- Die laaste led in elke kettingdosis het nie 'n data -uitdraad nodig nie.
Sodra al die kettings voltooi is, is dit 'n goeie idee om dit te toets voordat u dit installeer. Ek het my Arduino UNO en die Adafruit NeoPixel Strand Test gebruik om te bevestig dat elke LED werk.
Soldeer langer drade op elk van die kettings vir 5V, grond en data in.
Op hierdie stadium behoort daar vyf 5v -drade, drie data -drade aan die Arduino Pro Mini en 5 gronddrade te wees.
Trek 5 mm van die punte van die 5v -drade af en soldeer hulle almal saam en herhaal vir die gronddrade.
Nadat die drie kettings voltooi is, soldeer 'n 5V -draad aan die RAW -pen van die Arduino Pro Mini en ook op die VCC -pen vir die RTC. 'N Aardraad na GND op die Arduino Pro Mini en RTC en dan nog 2 drade:
SCL van die RTC na A5 op die Pro Mini
SDA van die RTC tot A4 op die Pro Mini
Die data lyne van die LED's moet verbind word met:
- Sekondes - Digitale pen 3.
- Notule - DigitalPin 4
- Ure - DigitalPin 5
Stap 4: Installeer
Sodra dit gesoldeer is, moet die installering van die LED's in hul gate reguit wees. Die LED's moet geïnstalleer word, sodat die data teen die kloksgewys rondloop as dit van agter af gekyk word, terwyl die kode van voor af opgestel word.
Ek het 'n klein hoeveelheid warm gom gebruik om dit vas te hou, want ek wil 'n enkele LED kan vervang as dit in die toekoms misluk.
Ek het ook warm gom gebruik om al die drade netjies en netjies te hou en om die vatverbinding aan die bord vas te maak.
Daar is 'n aantal arduino pro mini -programmeergidse beskikbaar. Ek gebruik die eksterne USB na reeksomskakelaarmetode om hierdie kode op die Arduino te laai:
Hierdie kode stel ook die tyd op die RTC in op die tydstip waarop dit opgestel is. Dit is dus belangrik om die oplaai -knoppie te hut sodat dit so vinnig as moontlik voldoen en oplaai.
Baie van hierdie kode is geleen van die NeoPixel Ring Clock deur Andy Doro. Sommige van die Adafruit NeoPixel Strand -toets en 'n paar wat ek saamgestel het.
U moet 'n paar biblioteke geïnstalleer het. Hulle is beskikbaar by die Libraries Manager op die Arduino -sagteware.
Die Adafruit NeoPixel vir die ws2812b LED's
Draad om met die RTC te praat oor I2C (dit is standaard ingebou)
en RTClib omdat hulle geweet het wat om aan die RTC te vra
/************************************************ ***************************NeoPixel -ringklok deur Andy Doro ([email protected]) https://andydoro.com/ringclock/ ************************************************* ***************************
hersiening Geskiedenis
Datum volgens wat
20140320 AFD Eerste konsep 20160105 AFD Verbleikte boë 20160916 AFD Trinket versoenbaar 20170727 AFD bygevoeg STARTPIXEL vir 3D -omhulsel, veranderlike beginpunt, bygevoeg outomatiese DST -ondersteuning 20180424 AFD met DST -biblioteek https://github.com/andydoro/DST_RTC *
/ sluit die biblioteekkode in:
#include #include
#insluit
// definieer penne
#define SECPIN 3 #define MINPIN 4 #define HOUPIN 5
#define BRIGHTNESS 20 // stel maksimum helderheid in
#definieer r 10
#definieer g 10 #definieer b 10 RTC_DS3231 rtc; // Vestig klokvoorwerp
Adafruit_NeoPixel stripS = Adafruit_NeoPixel (60, SECPIN, NEO_GRB + NEO_KHZ800); // strookvoorwerp
Adafruit_NeoPixel stripM = Adafruit_NeoPixel (60, MINPIN, NEO_GRB + NEO_KHZ800); // strookvoorwerp Adafruit_NeoPixel stripH = Adafruit_NeoPixel (24, HOUPIN, NEO_GRB + NEO_KHZ800); // strip object byte pixelColorRed, pixelColorGreen, pixelColorBlue; // hou kleurwaardes in
ongeldige opstelling () {
Wire.begin (); // Begin I2C rtc.begin (); // begin klok
Serial.begin (9600);
// stel pinmodes pinMode (SECPIN, OUTPUT); pinMode (MINPIN, OUTPUT); pinMode (HOUPIN, OUTPUT);
as (rtc.lostPower ()) {
Serial.println ("RTC het krag verloor, laat ons die tyd bepaal!"); // volgende reël stel die RTC op die datum en tyd waarop hierdie skets opgestel is rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Hierdie reël stel die RTC met 'n eksplisiete datum en tyd, byvoorbeeld om op te stel // 21 Januarie 2014 om 03:00 sou u noem: // rtc.adjust (DateTime (2014, 1, 21, 3, 0, 0)); }
stripS.begin ();
stripM.begin (); stripH.begin (); //strip.show (); // Initialiseer alle pixels na 'af'
// opstartvolgorde
vertraging (500);
colorWipeS (stripS. Color (0, g, 0), 5); // Blou colorWipeM (stripM. Color (r, 0, 0), 5); // Blou kleurWipeH (strookH. Color (0, 0, b), 50); // Blou
vertraging (1000);
DateTime theTime = rtc.now (); // neem DST -byte secondval in ag = theTime.second (); // kry sekondes byte minute = theTime.minute (); // kry minute int hourval = theTime.hour (); uurval = uurwaarde % 12; // Hierdie klok is 12 uur, as dit 13-23 is, skakel om na 0-11`
vir (uint16_t i = 0; i <secondval; i ++) {stripS.setPixelColor (i, 0, 0, b); stripS.show (); vertraging (5); }
vir (uint16_t i = 0; i <minuteval; i ++) {stripM.setPixelColor (i, 0, g, 0); stripM.show (); vertraging (5); }
vir (uint16_t i = 0; i <hourval; i ++) {stripH.setPixelColor (i, r, 0, 0); stripH.show (); vertraging (5); }
}
leemte -lus () {
// kry tyd
DateTime theTime = rtc.now (); // neem DST in ag
byte secondval = theTime.second (); // kry sekondes
byte minuteval = theTime.minute (); // kry minute int hourval = theTime.hour (); // kry ure hourval = hourval % 12; // Hierdie klok is 12 uur, as dit 13-23 is, skakel om na 0-11`
stripS.setPixelColor (tweede waarde, 0, 0, 20); stripS.show (); vertraging (10); if (secondval == 59) {for (uint8_t i = stripS.numPixels (); i> 0; i--) {stripS.setPixelColor (i, 0, g, 0); stripS.show (); vertraging (16);}}
stripM.setPixelColor (minute, 0, g, 0);
stripM.show (); vertraging (10); if (secondval == 59 && minuteval == 59) {for (uint8_t i = stripM.numPixels (); i> 0; i--) {stripM.setPixelColor (i, r, 0, 0); stripM.show (); vertraging (16);}}
stripH.setPixelColor (uurwaarde, r, 0, 0);
stripH.show (); vertraging (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 (); vertraging (83);}} // vir seriële ontfouting Serial.print (uurwaarde, DEC); Serial.print (':'); Serial.print (minute, DEC); Serial.print (':'); Serial.println (tweede waarde, DEC); }
// Vul die kolletjies een na die ander met 'n kleur
void colorWipeS (uint32_t c, uint8_t wait) {for (uint16_t i = 0; i <stripS.numPixels (); i ++) {stripS.setPixelColor (i, c); stripS.show (); vertraag (wag); }}
void colorWipeM (uint32_t c, uint8_t wag) {
vir (uint16_t i = 0; i <stripM.numPixels (); i ++) {stripM.setPixelColor (i, c); stripM.show (); vertraag (wag); }}
ongeldig colorWipeH (uint32_t c, uint8_t wag) {
vir (uint16_t i = 0; i <stripH.numPixels (); i ++) {stripH.setPixelColor (i, c); stripH.show (); vertraag (wag); }}
Stap 5: Laaste aanraking
Al wat nou oorbly, is om die RTC en Micro Controller in die reses vas te maak.
Ek het die RTC -batterykant na bo aangebring, sodat ek die battery maklik kan verander indien nodig.
Koppel die 5v -drade aan die + kant van die aansluiting en die grond aan die kant
Skakel dit in!
Ek het myne aan 'n USB -batterybank gekoppel, maar 'n USB -laaier werk net so goed.
Let wel:
Die helderheid van die LED's word in die kode bepaal. Dit is laag gestel om die huidige trekking laag te hou. Op volle helderheid met al die LED's aangeskakel, kan dit byna 8 ampère trek. Met die huidige opstelling is dit minder as 1.
Naaswenner in die klokwedstryd
Aanbeveel:
Neem wonderlike foto's met 'n iPhone: 9 stappe (met foto's)
Neem wonderlike foto's met 'n iPhone: die meeste van ons dra deesdae 'n slimfoon oral, daarom is dit belangrik om te weet hoe u u slimfoonkamera kan gebruik om fantastiese foto's te neem! Ek het net 'n paar jaar 'n slimfoon gehad, en ek hou daarvan om 'n ordentlike kamera te hê om dinge te dokumenteer wat ek
Raspberry Pi -boks met koelventilator met CPU -temperatuuraanwyser: 10 stappe (met foto's)
Raspberry Pi Box of Cooling FAN Met CPU Temperature Indicator: Ek het framboos pi (Hierna as RPI) CPU temperatuur aanwyser stroombaan in die vorige projek bekendgestel. Die kring wys eenvoudig RPI 4 verskillende CPU temperatuur vlakke soos volg.- Groen LED aangeskakel wanneer CPU temperatuur is binne 30 ~
Howto: Raspberry PI 4 Headless (VNC) installeer met Rpi-imager en foto's: 7 stappe (met foto's)
Howto: Raspberry PI 4 Headless (VNC) installeer met Rpi-imager en foto's: ek is van plan om hierdie Rapsberry PI te gebruik in 'n klomp prettige projekte in my blog. Kyk gerus daarna. Ek wou weer my Raspberry PI gebruik, maar ek het nie 'n sleutelbord of muis op my nuwe plek gehad nie. Dit was 'n rukkie sedert ek 'n Framboos opgestel het
Draadlose afstandsbediening met 2,4 GHz NRF24L01 -module met Arduino - Nrf24l01 4 -kanaals / 6 -kanaals sender -ontvanger voor quadcopter - Rc Helikopter - Rc -vliegtuig met Arduino: 5 stappe (met foto's)
Draadlose afstandsbediening met 2,4 GHz NRF24L01 -module met Arduino | Nrf24l01 4 -kanaals / 6 -kanaals sender -ontvanger voor quadcopter | Rc Helikopter | Rc -vliegtuig met Arduino: om 'n Rc -motor te bestuur | Quadcopter | Drone | RC -vliegtuig | RC -boot, ons het altyd 'n ontvanger en sender nodig, veronderstel dat ons vir RC QUADCOPTER 'n 6 -kanaals sender en ontvanger nodig het en dat die tipe TX en RX te duur is, so ons maak een op ons
Hoe om 'n rekenaar met maklike stappe en foto's uitmekaar te haal: 13 stappe (met foto's)
Hoe om 'n rekenaar uitmekaar te haal met eenvoudige stappe en foto's: dit is 'n instruksie oor hoe om 'n rekenaar uitmekaar te haal. Die meeste basiese komponente is modulêr en kan maklik verwyder word. Dit is egter belangrik dat u daaroor georganiseerd is. Dit sal u verhinder om onderdele te verloor, en ook om die montering weer