Inhoudsopgave:
- Stap 1: Benodigdheden en gereedschappen verzamelen
- Stap 2: Markeren, boren en frezen
- Stap 3: Zoveel soldaten, snijden en strippen
- Stap 4: Installeren
- Stap 5: laatste hand
Video: 132 Pixel Clock - Ajarnpa (met afbeeldingen) - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
Ik ben, zolang ik me kan herinneren, geobsedeerd door LED's en tijd. In dit project heb ik een grote wandklok gemaakt die de huidige tijd weergeeft met behulp van 132 neopixel-LED's die zijn gemonteerd en schijnen door een sparrenhouten bord. Het is een hybride analoog digitaal met een individuele pixel voor elk uur, minuut en seconde.
Dit was het grootste project dat ik tot nu toe heb aangenomen, ik begon er 6 maanden geleden over na te denken en het idee kwam langzaam tot stand. Ik ben erg blij met het resultaat en ik kijk er naar uit om het met jullie te delen.
Stap 1: Benodigdheden en gereedschappen verzamelen
Componenten
Dit project is gebouwd op een goedkoop hobbybord van mijn plaatselijke bouwmarkt. Het bord is 850 mm breed bij 500 mm hoog en 18 mm diep.
De LED's die in dit project worden gebruikt, zijn 5050 WS2812b gemonteerd op ronde PCB's met een diameter van ongeveer 9 mm met soldeerpads aan de achterkant.
Ik gebruik een Arduino Pro Mini-compatibele microcontroller. Het is de 5V 16 MHZ-versie. Ik heb deze gekozen omdat hij een superslank ontwerp heeft, een kleine footprint en alle noodzakelijke poorten plus wat reserve voor toekomstige upgrades. Het is ook 5 volt, dus ik kan een enkele voeding gebruiken voor de LED's, microcontroller en RTC
De tijdregistratie wordt verzorgd door een RTC-module (Real Time Clock) die is uitgerust met de DS3231-chip. Deze chip is zeer nauwkeurig, dus de tijd mag niet te veel afdwalen.
Ook gebruikt:
Draad. Soldeer en hete lijm.
Gereedschap:
Boormachine en houtboren (10 mm en 5 mm)
Soldeerbout
Heet lijmpistool
draad knipsels
Accessoires voor Dremel en invalfrees
Stap 2: Markeren, boren en frezen
Boren
- Gebruik een rechte rand om het midden van het bord te vinden door een lijn te trekken vanuit tegenovergestelde hoeken.
- Markeer 3 cirkels met een touwtje en een pen. De buitenste cirkel moet ongeveer 20 mm van de rand van het bord verwijderd zijn, terwijl de andere 2 lijnen 15 mm van de laatste lijn naar binnen bewegen.
- Ik gebruikte een gedrukte wijzerplaat om me te helpen de posities van elk van de minuten en seconden op de buitenste 2 lijnen en uren op de binnenste lijn te markeren.
- Boor gaten van 10 mm van ongeveer 5 mm diep voor elk uur, minuut en seconde.
- Gebruik de boor van 5 mm om gaten te maken door het bord voor uren, minuten en seconden.
Routering
Hoewel deze stap niet nodig is, kan de klok vlak tegen een muur worden gemonteerd.
- Met behulp van een router en cirkelgeleidingsroute draadkanalen in het bord
- Markeer en leid een uitsparing voor de RTC en Micro Controller om in te leven.
- Leid een kanaal van de buitenste lijnen naar de uitsparing voor draden
Stap 3: Zoveel soldaten, snijden en strippen
Dit volgende deel is veel gemakkelijker te zeggen dan te doen. Mijn advies zou zijn om het te haasten. probeer een systeem te vinden en in een ritme te komen.
Elk van de LED's heeft 5 volt nodig, 5 volt uit, data in, data uit, aarde in en aarde uit. inclusief voeding voor de microcontroller en RTC zijn meer dan 400 draden, allemaal gestript en aan beide uiteinden gesoldeerd.
Een kleverige blauwe substantie is erg handig voor deze stap.
- Ik begon met het plaatsen van 2 LED's in hun gaten naast elkaar om de lengte van de draad te berekenen die nodig is om met elkaar te verbinden.
- Met behulp van het 1e stuk draad als richtlijn knip ik vervolgens 60 van elke kleur draad.
- Strip 2 mm kous van de uiteinden van elke draad en vertin ze met soldeer.
- Soldeer een kleine klodder soldeer op elk van de LED-pads.
- Soldeer de draden aan de LED's om twee kettingen van 60 te vormen voor de minuten en seconden en een ketting van 12 voor de uren. Ik gebruikte rode draad voor 5V, geel voor data en blauw voor aarde.
- Zorg ervoor dat u elke Data Out (DOUT) verbindt met de Data In (DIN) van de volgende LED
- De laatste led in elke kettingdosis heeft geen data-out-draad nodig.
Zodra alle kettingen zijn voltooid, is het een goed idee om ze te testen voordat u ze installeert. Ik gebruikte mijn Arduino UNO en de Adafruit NeoPixel Strand Test om te bevestigen dat elke LED werkte.
Soldeer langere draden op elk van de kettingen voor 5V, Ground en Data in.
Op dit punt moeten er vijf 5v-draden zijn, drie data-draden aangesloten op de Arduino Pro Mini en 5 aardingsdraden.
Strip 5 mm van de uiteinden van de 5v-draden en soldeer ze allemaal aan elkaar en herhaal voor de aardingsdraden.
Na het voltooien van de drie kettingen soldeert u een 5V-draad op de RAW-pin van de Arduino Pro Mini en ook op de VCC-pin voor de RTC. Een aardedraad naar GND op de Arduino Pro Mini en RTC en dan nog 2 draden:
SCL van de RTC naar A5 op de Pro Mini
SDA van de RTC naar A4 op de Pro Mini
De datalijnen van de LED's moeten aansluiten op:
- Seconden - Digitale pin 3.
- Minuten - DigitalPin 4
- Uren - DigitalPin 5
Stap 4: Installeren
Eenmaal gesoldeerd, moet het installeren van de LED's in hun gaten eenvoudig zijn. De LED's moeten zo worden geïnstalleerd dat de gegevens tegen de klok in lopen wanneer ze vanaf de achterkant worden bekeken, aangezien de code naar voren is ingesteld.
Ik heb een kleine hoeveelheid hete lijm gebruikt om ze vast te houden, omdat ik een enkele LED wil kunnen vervangen als deze in de toekomst faalt.
Ik heb ook hete lijm gebruikt om alle draden netjes en opgeruimd te houden en om de vatconnector aan het bord te bevestigen.
Er zijn een aantal arduino pro mini-programmeergidsen beschikbaar. Ik gebruik de externe USB naar serieel converter methode om deze code op de Arduino te laden:
Deze code stelt ook de tijd op de RTC in op de tijd dat deze is gecompileerd. dus het is belangrijk om gewoon de uploadknop te sluiten, zodat deze voldoet en zo snel mogelijk uploadt.
Veel van deze code is geleend van de NeoPixel Ring Clock van Andy Doro. Sommige van de Adafruit NeoPixel Strand Test en sommige heb ik samengesteld.
U moet een paar bibliotheken hebben geïnstalleerd. Ze zijn beschikbaar via de Libraries Manager op de Arduino-software.
De Adafruit NeoPixel voor de ws2812b LED's
Draad om met de RTC te praten via I2C (dit is standaard ingebouwd)
en RTClib om te weten wat je de RTC moet vragen
/************************************************** ************************* * * NeoPixel Ring Clock van Andy Doro ([email protected]) https://andydoro.com/ringclock/ * * *************************************************** *************************
Revisiegeschiedenis
Datum door wat?
20140320 AFD Eerste versie 20160105 AFD Vervaagde bogen 20160916 Compatibel met AFD Trinket 20170727 AFD toegevoegd STARTPIXEL voor 3D-behuizing, variabel startpunt, automatische DST-ondersteuning toegevoegd 20180424 AFD met DST-bibliotheek https://github.com/andydoro/DST_RTC *
/ voeg de bibliotheekcode toe:
#include #include
#erbij betrekken
// definieer pinnen
#define SECPIN 3 #define MINPIN 4 #define HOUPIN 5
#define BRIGHTNESS 20 // max. helderheid instellen
#define r 10
#define g 10 #define b 10 RTC_DS3231 rtc; // Stel klokobject vast
Adafruit_NeoPixel stripS = Adafruit_NeoPixel(60, SECPIN, NEO_GRB + NEO_KHZ800); // stripobject
Adafruit_NeoPixel stripM = Adafruit_NeoPixel(60, MINPIN, NEO_GRB + NEO_KHZ800); // stripobject Adafruit_NeoPixel stripH = Adafruit_NeoPixel (24, HOUPIN, NEO_GRB + NEO_KHZ800); // strip objectbyte pixelColorRed, pixelColorGreen, pixelColorBlue; // bevat kleurwaarden
ongeldige instelling () {
Draad.begin(); // Begin I2C rtc.begin(); // begin klok
Serieel.begin(9600);
// stel pinmodes in pinMode (SECPIN, OUTPUT); pinMode (MINPIN, UITGANG); pinMode (HOUPIN, UITGANG);
if (rtc.lostPower()) {
Serial.println("RTC heeft geen stroom meer, laten we de tijd instellen!"); // volgende regel stelt de RTC in op de datum en tijd waarop deze schets is gecompileerd rtc.adjust(DateTime(F(_DATE_), F(_TIME_))); // Deze regel stelt de RTC in met een expliciete datum en tijd, bijvoorbeeld om // 21 januari 2014 om 03:00 uur in te stellen die u zou noemen: // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0)); }
stripS.begin();
stripM.begin(); stripH.begin(); //strip.show(); // Initialiseer alle pixels op 'uit'
// opstartvolgorde
vertraging (500);
colorWipeS(stripS. Color(0, g, 0), 5); // Blauwe colorWipeM (stripM. Color (r, 0, 0), 5); // Blauwe kleurWipeH (stripH. Kleur (0, 0, b), 50); // Blauw
vertraging (1000);
DateTime theTime = rtc.now(); // houdt rekening met DST byte secondval = theTime.second(); // krijg seconden byte minuteval = theTime.minute(); // krijg minuten int hourval = theTime.hour(); uurwaarde = uurwaarde % 12; // Deze klok is 12 uur, indien 13-23, converteer naar 0-11`
for (uint16_t i = 0; i < secondval; i++) { stripS.setPixelColor(i, 0, 0, b); stripS.show(); vertraging (5); }
for (uint16_t i = 0; i <minuteval; i++) { stripM.setPixelColor(i, 0, g, 0); stripM.show(); vertraging (5); }
for (uint16_t i = 0; i < hourval; i++) { stripH.setPixelColor(i, r, 0, 0); stripH.show(); vertraging (5); }
}
lege lus () {
// krijg tijd
DateTime theTime = rtc.now(); // houdt rekening met DST
byte secondval = theTime.second(); // krijg seconden
byte minuteval = theTime.minute(); // krijg minuten int hourval = theTime.hour(); // haal uren uurwaarde = uurwaarde % 12; // Deze klok is 12 uur, indien 13-23, converteer naar 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 (minutenwaarde, 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);} } // voor seriële foutopsporing Serial.print (hourval, DEC); Serieel.print(':'); Serial.print (minutenwaarde, DEC); Serieel.print(':'); Serial.println (tweede, DEC); }
// Vul de stippen een voor een met een kleur
void colorWipeS (uint32_t c, uint8_t wacht) { for (uint16_t i = 0; i < stripS.numPixels (); i ++) { stripS.setPixelColor (i, c); stripS.show(); vertraging (wacht); } }
void colorWipeM(uint32_t c, uint8_t wacht) {
for (uint16_t i = 0; i <stripM.numPixels(); i++) { stripM.setPixelColor(i, c); stripM.show(); vertraging (wacht); } }
void colorWipeH(uint32_t c, uint8_t wacht) {
for (uint16_t i = 0; i <stripH.numPixels(); i++) { stripH.setPixelColor(i, c); stripH.show(); vertraging (wacht); } }
Stap 5: laatste hand
Het enige dat u nu nog hoeft te doen, is de RTC en de microcontroller in de uitsparing vast te zetten.
Ik heb de RTC-batterij met de kant naar boven geplaatst, zodat ik de batterij indien nodig gemakkelijk kan vervangen.
Sluit de 5v-draden aan op de + kant van de connector en de aarde op de - kant
Zet het AAN!
Ik heb de mijne aangesloten op een USB-batterijbank, maar een USB-telefoonoplader zou net zo goed werken.
Opmerking:
De helderheid van de LED's wordt in de code ingesteld. Het is laag ingesteld om de stroomafname laag te houden. Op volledige helderheid met alle LED's verlicht, zou het bijna 8 ampère kunnen trekken. Met de huidige setup is dit minder dan 1.
Tweede plaats in de klokkenwedstrijd
Aanbevolen:
Pixel Smart Lamp: 7 stappen (met afbeeldingen)
Pixel Smart Lamp: dit is een project dat ik heb gemaakt voor een slimme lamp die wordt bestuurd door Bluetooth met een Android-app die is ontwikkeld op Android Studio. Het belangrijkste doel van Pixel is om mooie lichten weer te geven. Het is bijvoorbeeld de lichtmodus van de open haard, laten we u zien hoe een open haard met één pixel zou kunnen
Pixel Pumpkin: 8 stappen (met afbeeldingen)
Pixel Pumpkin: Maak via een afstandsbediening een onopvallende pompoen die van binnenuit in verschillende patronen oplicht. Hoewel de Pixels veelkleurig zijn, filtert de dikke schil van de pompoen alles behalve oranje, dus de kleuren van onze pixel worden omgezet in
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino - Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter - RC Helikopter - RC-vliegtuig met Arduino: 5 stappen (met afbeeldingen)
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino | Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter | RC Helikopter | Rc-vliegtuig met Arduino: een Rc-auto besturen | Quadcopter | Drone | RC vliegtuig | RC-boot, we hebben altijd een ontvanger en zender nodig, stel dat we voor RC QUADCOPTER een 6-kanaals zender en ontvanger nodig hebben en dat type TX en RX is te duur, dus we gaan er een maken op onze
Een computer demonteren met eenvoudige stappen en afbeeldingen: 13 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Een computer demonteren met eenvoudige stappen en afbeeldingen: dit is een instructie over het demonteren van een pc. De meeste basiscomponenten zijn modulair en gemakkelijk te verwijderen. Wel is het belangrijk dat je er goed over georganiseerd bent. Dit zal helpen voorkomen dat u onderdelen kwijtraakt, en ook bij het maken van de hermontage e
Space Invaders Clock (met een beperkt budget!): 6 stappen (met afbeeldingen)
Space Invaders Clock (on a Budget!): Onlangs zag ik een coole build van GeckoDiode en ik wilde hem meteen zelf bouwen. De Instructable is Space Invaders Desktop Clock en ik raad je aan er eens naar te kijken nadat je dit hebt gelezen. Het project is bijna uitsluitend opgebouwd uit onderdelen die afkomstig zijn