Innehållsförteckning:
- Steg 1: Samla förbrukningsmaterial och verktyg
- Steg 2: Märkning, borrning och dirigering
- Steg 3: Så mycket soldatering, skärning och strippning
- Steg 4: Installera
- Steg 5: Sista handen
Video: 132 pixelklocka: 5 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
Jag har, så länge jag kan minnas, varit besatt av lysdioder och tid. I detta projekt har jag skapat en stor väggklocka som visar den aktuella tiden med hjälp av 132 neopixel -lysdioder monterade och lysande genom en granbräda. Det är en hybrid analog digital med en individuell pixel för varje timme, minut och sekund.
Detta var det största projektet jag har tagit på hittills, jag började tänka på det för 6 månader sedan och idén kom långsamt ihop. Jag är verkligen nöjd med resultatet och jag ser fram emot att dela det med dig.
Steg 1: Samla förbrukningsmaterial och verktyg
Komponenter
Detta projekt är byggt på en tuff hobbybräda från min lokala byggvaruhus. Skivan mäter 850 mm bred med 500 mm hög och 18 mm djup.
Lysdioderna som används i detta projekt är 5050 WS2812b monterade på cirkulära kretskort som är cirka 9 mm i diameter med lödkuddar på baksidan.
Jag använder en Arduino Pro Mini -kompatibel mikrokontroller. Det är 5V 16 MHZ -versionen. Jag valde den här eftersom den har en superslank design, små fotavtryck och alla nödvändiga portar plus lite extra för framtida uppgraderingar. Det är också 5 volt så jag kan använda en enda strömförsörjning för lysdioderna, mikrokontrollen och RTC
Tidshållningen sköts av en RTC -modul (Real Time Clock) som har DS3231 -chipet. Detta chip är mycket exakt så tiden ska inte driva för mycket.
Används även:
Tråd. Lödning och varmt lim.
Verktyg:
Kraftborr och träborr (10 mm och 5 mm)
Lödkolv
Lim pistol
trådklipp
Dremel och dyka tillbehör
Steg 2: Märkning, borrning och dirigering
Borrning
- Med hjälp av en sundkant hittar du mitt på brädet genom att dra en linje från motsatta hörn.
- Markera 3 cirklar med en tråd och en penna. Den yttersta cirkeln ska vara cirka 20 mm från brädans kant med de andra 2 linjerna som rör sig in med 15 mm från den sista raden.
- Jag använde en tryckt urtavla för att hjälpa mig att markera positionerna för var och en av minuterna och sekunderna på de yttre 2 raderna och timmarna på den inre raden.
- Borra 10 mm hål ca 5 mm djupa för varje timme, minut och sekund.
- Använd 5 mm borr för att göra hål genom brädan i timme, minut och sekund.
Routing
Även om detta steg inte är nödvändigt kan klockan monteras i en vägg.
- Använd en router och cirkelguide för att leda trådkanaler i kortet
- Markera och lägg en urtag för RTC och Micro Controller att bo i.
- Dra en kanal från de yttre linjerna till urtagningen för ledningar
Steg 3: Så mycket soldatering, skärning och strippning
Denna nästa del är mycket lättare att säga än att göra. Mitt råd är att notera att skynda på det. försök hitta ett system och komma in i en rytm.
Var och en av lysdioderna behöver 5 volt in, 5 volt out, Data in, Data out, Ground in och Ground out. inklusive ström till mikrokontrollen och RTC dess över 400 ledningar, alla avskalade och lödda i båda ändar.
En klibbig blå substans är mycket användbar för detta steg.
- Jag började med att placera 2 lysdioder i sina hål bredvid varandra för att räkna ut längden på ledningen som behövs för att ansluta till varandra.
- Med den första tråden som vägledning klippte jag sedan 60 av varje färgtråd.
- Ta bort 2 mm hylsa från ändarna på varje tråd och tenn dem med löd.
- Löd en liten klot lödning på var och en av LED -plattorna.
- Löd ledningarna till lysdioderna för att bilda två kedjor på 60 för minuter och sekunder och en kedja med 12 för timmarna. Jag använde röd tråd för 5V, gul för data och blå för mark.
- Var noga med att ansluta varje Data Out (DOUT) till Data In (DIN) på nästa LED
- Den sista ledningen i varje kedjedos behöver inte en datatråd.
När alla kedjor är klara är det en bra idé att testa dem innan du installerar dem. Jag använde min Arduino UNO och Adafruit NeoPixel Strand Test för att bekräfta att varje lysdiod fungerade.
Löd längre kablar på var och en av kedjorna för 5V, jord och data in.
Vid denna tidpunkt bör det finnas fem 5v -ledningar, tre datakablar anslutna till Arduino Pro Mini och 5 jordledningar.
Ta bort 5 mm från ändarna på 5V -trådarna och löd dem alla tillsammans och upprepa för jordtrådarna.
Efter att ha slutfört de tre kedjorna löds en 5V -kabel till RAW -stiftet på Arduino Pro Mini och även på VCC -stiftet för RTC. En jordkabel till GND på Arduino Pro Mini och RTC och sedan ytterligare 2 trådar:
SCL från RTC till A5 på Pro Mini
SDA från RTC till A4 på Pro Mini
Datalinjerna från lysdioderna bör anslutas till:
- Sekunder - Digital Pin 3.
- Protokoll - DigitalPin 4
- Timmar - DigitalPin 5
Steg 4: Installera
När de är lödda ska installationen av lysdioderna i sina hål vara rakt fram. Lysdioderna måste installeras så att data går runt motsols när man tittar på det bakifrån när koden är inställd framåt.
Jag använde en liten mängd varmt lim för att hålla dem nere eftersom jag vill kunna byta ut en enda lysdiod om den misslyckas i framtiden.
Jag använde också varmt lim för att hålla alla trådar snygga och städa och för att fixera fatkontakten till brädet.
Det finns ett antal arduino pro mini programmeringsguider tillgängliga. Jag använder den externa USB till serieomvandlarmetoden för att ladda den här koden till Arduino:
Denna kod kommer också att ställa in tiden på RTC till den tid då den kompilerades. så det är viktigt att bara stänga uppladdningsknappen så att den följer och laddar upp så snabbt som möjligt.
Mycket av denna kod lånades från NeoPixel Ringklocka av Andy Doro. Några från Adafruit NeoPixel Strand Test och några som jag satte ihop.
Du måste ha installerat några bibliotek. De är tillgängliga från Libraries Manager på Arduino -programvaran.
Adafruit NeoPixel för ws2812b lysdioder
Kabel för att prata med RTC över I2C (detta är inbyggt som standard)
och RTClib för att veta vad de ska fråga RTC
/************************************************* ***************************NeoPixel ringklocka av Andy Doro ([email protected]) https://andydoro.com/ringclock/ ************************************************** ***************************
revisionshistorik
Datum efter vad
20140320 AFD Första utkastet 20160105 AFD Faded bågar 20160916 AFD Trinket -kompatibel 20170727 AFD tillagd STARTPIXEL för 3D -hölje, variabel utgångspunkt, tillagt automatisk DST -stöd 20180424 AFD med DST -bibliotek https://github.com/andydoro/DST_RTC *
/ inkludera bibliotekskoden:
#inkludera #inkludera
#omfatta
// definiera stift
#define SECPIN 3 #define MINPIN 4 #define HOUPIN 5
#define BRIGHTNESS 20 // ställ in max ljusstyrka
#define r 10
#define g 10 #define b 10 RTC_DS3231 rtc; // Upprätta klockobjekt
Adafruit_NeoPixel stripS = Adafruit_NeoPixel (60, SECPIN, NEO_GRB + NEO_KHZ800); // remsa objekt
Adafruit_NeoPixel stripM = Adafruit_NeoPixel (60, MINPIN, NEO_GRB + NEO_KHZ800); // stripobjekt Adafruit_NeoPixel stripH = Adafruit_NeoPixel (24, HOUPIN, NEO_GRB + NEO_KHZ800); // strip objekt byte pixelColorRed, pixelColorGreen, pixelColorBlue; // håller färgvärden
void setup () {
Wire.begin (); // Börja I2C rtc.begin (); // startklocka
Serial.begin (9600);
// set pinmodes pinMode (SECPIN, OUTPUT); pinMode (MINPIN, OUTPUT); pinMode (HOUPIN, OUTPUT);
if (rtc.lostPower ()) {
Serial.println ("RTC förlorade ström, låt oss ställa in tiden!"); // följande rad anger RTC till datum och tid då denna skiss sammanställdes rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Denna rad anger RTC med ett tydligt datum och tid, till exempel för att ställa in // 21 januari 2014 klockan 03.00 skulle du ringa: // rtc.adjust (DateTime (2014, 1, 21, 3, 0, 0)); }
stripS.begin ();
stripM.begin (); stripH.begin (); //strip.show (); // Initiera alla pixlar till 'av'
// startsekvens
fördröjning (500);
colorWipeS (stripS. Color (0, g, 0), 5); // Blå colorWipeM (stripM. Color (r, 0, 0), 5); // Blå colorWipeH (stripH. Color (0, 0, b), 50); // Blå
fördröjning (1000);
DateTime theTime = rtc.now (); // tar hänsyn till DST byte secondval = theTime.second (); // få sekunder byte minuteval = theTime.minute (); // få minuter int hourval = theTime.hour (); timval = timvärde % 12; // Denna klocka är 12 timmar, om 13-23, konvertera till 0-11 '
för (uint16_t i = 0; i <secondval; i ++) {stripS.setPixelColor (i, 0, 0, b); stripS.show (); fördröjning (5); }
för (uint16_t i = 0; i <minuteval; i ++) {stripM.setPixelColor (i, 0, g, 0); stripM.show (); fördröjning (5); }
för (uint16_t i = 0; i <hourval; i ++) {stripH.setPixelColor (i, r, 0, 0); stripH.show (); fördröjning (5); }
}
void loop () {
// få tid
DateTime theTime = rtc.now (); // tar hänsyn till sommartid
byte secondval = theTime.second (); // få sekunder
byte minuteval = theTime.minute (); // få minuter int hourval = theTime.hour (); // få timmar hourval = hourval % 12; // Denna klocka är 12 timmar, om 13-23, konvertera till 0-11 '
stripS.setPixelColor (secondval, 0, 0, 20); stripS.show (); fördröjning (10); if (secondval == 59) {för (uint8_t i = stripS.numPixels (); i> 0; i--) {stripS.setPixelColor (i, 0, g, 0); stripS.show (); fördröjning (16);}}
stripM.setPixelColor (minuteval, 0, g, 0);
stripM.show (); fördröjning (10); if (secondval == 59 && minuteval == 59) {for (uint8_t i = stripM.numPixels (); i> 0; i--) {stripM.setPixelColor (i, r, 0, 0); stripM.show (); fördröjning (16);}}
stripH.setPixelColor (timeval, r, 0, 0);
stripH.show (); fördröjning (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);}} // för seriell felsökning Serial.print (hourval, DEC); Serial.print (':'); Serial.print (minuteval, DEC); Serial.print (':'); Serial.println (secondval, DEC); }
// Fyll prickarna en efter en med en färg
void colorWipeS (uint32_t c, uint8_t wait) {for (uint16_t i = 0; i <stripS.numPixels (); i ++) {stripS.setPixelColor (i, c); stripS.show (); fördröjning (vänta); }}
void colorWipeM (uint32_t c, uint8_t wait) {
för (uint16_t i = 0; i <stripM.numPixels (); i ++) {stripM.setPixelColor (i, c); stripM.show (); fördröjning (vänta); }}
void colorWipeH (uint32_t c, uint8_t wait) {
för (uint16_t i = 0; i <stripH.numPixels (); i ++) {stripH.setPixelColor (i, c); stripH.show (); fördröjning (vänta); }}
Steg 5: Sista handen
Allt som ska vara kvar nu är att fixa ner RTC och Micro Controller ner i urtaget.
Jag har monterat RTC -batterisidan uppåt så att jag enkelt kan byta batteri vid behov.
Anslut 5v -kablarna till + sidan av kontakten och marken till - sidan
Starta den!
Jag har min ansluten till en USB -batteribank men en USB -telefonladdare skulle fungera lika bra.
Notera:
Lysdiodernas ljusstyrka anges i koden. Den har ställts in för att hålla den nuvarande dragningen låg. Vid full ljusstyrka med alla lysdioder tända kan den dra nästan 8 ampere. Med den nuvarande installationen är det mindre än 1.
Tvåan i tävlingen
Rekommenderad:
Ta fantastiska bilder med en iPhone: 9 steg (med bilder)
Ta fantastiska bilder med en iPhone: De flesta av oss har en smartphone med oss överallt nuförtiden, så det är viktigt att veta hur du använder din smartphone -kamera för att ta fantastiska bilder! Jag har bara haft en smartphone i ett par år, och jag har älskat att ha en bra kamera för att dokumentera saker jag
Hur: Installera Raspberry PI 4 Headless (VNC) med Rpi-imager och bilder: 7 steg (med bilder)
Hur: Installera Raspberry PI 4 Headless (VNC) med Rpi-imager och bilder: Jag planerar att använda denna Rapsberry PI i ett gäng roliga projekt tillbaka i min blogg. Kolla gärna in det. Jag ville börja använda mitt Raspberry PI men jag hade inte ett tangentbord eller en mus på min nya plats. Det var ett tag sedan jag installerade en hallon
Hur man digitaliserar bilder och filmnegativ med en DSLR: 12 steg (med bilder)
Hur man digitaliserar diabilder och filmnegativ med en DSLR: En mångsidig och stabil inställning för digitalisering av diabilder och negativ med en DSLR eller en kamera med ett makroalternativ. Denna instruerbara är en uppdatering av Hur man digitaliserar 35 mm negativ (uppladdad juli 2011) med flera förbättringar för att utöka dess
Trådlös fjärrkontroll med 2,4 GHz NRF24L01 -modul med Arduino - Nrf24l01 4 -kanals / 6 -kanals sändarmottagare för Quadcopter - Rc helikopter - RC -plan med Arduino: 5 steg (med bilder)
Trådlös fjärrkontroll med 2,4 GHz NRF24L01 -modul med Arduino | Nrf24l01 4 -kanals / 6 -kanals sändarmottagare för Quadcopter | Rc helikopter | Rc -plan med Arduino: Att driva en Rc -bil | Quadcopter | Drone | RC -plan | RC -båt, vi behöver alltid en mottagare och sändare, antag att för RC QUADCOPTER behöver vi en 6 -kanals sändare och mottagare och den typen av TX och RX är för dyr, så vi kommer att göra en på vår
Hur man tar isär en dator med enkla steg och bilder: 13 steg (med bilder)
Hur man tar isär en dator med enkla steg och bilder: Detta är en instruktion om hur man demonterar en dator. De flesta av de grundläggande komponenterna är modulära och lätt att ta bort. Det är dock viktigt att du är organiserad kring det. Detta hjälper dig att inte förlora delar, och även för att göra ommonteringen