Tartalomjegyzék:
- 1. lépés: Kellékek és eszközök összegyűjtése
- 2. lépés: Jelölés, fúrás és útvonaltervezés
- 3. lépés: Annyi katona, vágás és csupaszítás
- 4. lépés: Telepítés
- 5. lépés: Utolsó érintések
Videó: 132 Pixel Clock: 5 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:42
Amióta az eszemet tudom, a LED -ek és az idő megszállottja vagyok. Ebben a projektben létrehoztam egy nagy faliórát, amely 132 neopixel LED -et használ egy lucfenyő táblán, és megjeleníti az aktuális időt. Hibrid analóg digitális, egyedi képponttal minden órára, percre és másodpercre.
Ez volt a legnagyobb projekt, amit eddig vállaltam, 6 hónapja kezdtem el gondolkodni rajta, és lassan összejött az ötlet. Nagyon örülök az eredménynek, és várom, hogy megosszam veletek.
1. lépés: Kellékek és eszközök összegyűjtése
Alkatrészek
Ez a projekt a helyi barkácsáruházamból származó cheep hobby táblára épül. A tábla 850 mm széles, 500 mm magas és 18 mm mély.
Az ebben a projektben használt LED -ek 5050 WS2812b, amelyek körülbelül 9 mm átmérőjű kör alakú NYÁK -ra vannak szerelve, a hátoldalon forrasztópadokkal.
Arduino Pro Mini kompatibilis mikrovezérlőt használok. Ez az 5V 16 MHZ verzió. Ezt választottam, mivel szuper karcsú kialakítású, kis lábnyomdal és minden szükséges porttal, valamint némi tartalékkal a jövőbeni fejlesztésekhez. Ezenkívül 5 voltos, így egyetlen tápegységet használhatok a LED -ekhez, a mikrovezérlőhöz és az RTC -hez
Az időmérésről egy RTC (Real Time Clock) modul gondoskodik, amely tartalmazza a DS3231 chipet. Ez a chip nagyon pontos, így az idő nem sodródhat túl sokat.
Szintén használt:
Huzal. Forrasztó és forró ragasztó.
Eszközök:
Elektromos fúró és fa fúrószárak (10 mm és 5 mm)
Forrasztópáka
Ragasztópisztoly
drótvágások
Dremel és merülőmaró tartozékok
2. lépés: Jelölés, fúrás és útvonaltervezés
Fúrás
- Egy szoros él segítségével keressük meg a tábla közepét úgy, hogy egy vonalat húzunk a szemközti sarkokból.
- Jelöljön 3 kört egy zsinórral és egy tollal. A külső körnek körülbelül 20 mm -re kell lennie a tábla szélétől, míg a másik 2 vonal 15 mm -re mozog az utolsó vonaltól.
- Nyomtatott óra számlap segítségével tudtam megjelölni a percek és másodpercek pozícióját a külső 2 soron és az órát a belső vonalon.
- Fúrjon 10 mm -es lyukakat körülbelül 5 mm mélyen minden órában, percben és másodpercben.
- Használja az 5 mm -es fúrót, hogy lyukakat készítsen a táblán óráig, percig és másodpercig.
útvonalválasztás
Bár ez a lépés nem szükséges, lehetővé teszi az óra falra szerelését.
- Egy útválasztó és körvezető használata vezetékes csatornák vezetése a táblán
- Jelölje ki és irányítsa ki a mélyedést az RTC és a mikrovezérlő számára.
- Vezessen csatornát a külső vonalaktól a vezetékek mélyedéséhez
3. lépés: Annyi katona, vágás és csupaszítás
Ez a következő rész sokkal könnyebb mondani, mint megtenni. A tanácsom az lenne, hogy siess. Próbáljon megtalálni egy rendszert, és lépjen be egy ritmusba.
A LED -ek mindegyikéhez 5 volt be, 5 volt, adatbevitel, adatkimenet, földelés és földelés szükséges. beleértve a mikrovezérlő és az RTC tápellátását, több mint 400 vezetékét, mindegyiket lecsupaszítva és forrasztva mindkét végén.
A ragadós kék anyag nagyon hasznos ebben a lépésben.
- Azzal kezdtem, hogy 2 LED -et helyeztem a lyukakba egymás mellé, hogy kiszámítsam az egymáshoz való csatlakozáshoz szükséges vezeték hosszát.
- Az első huzaldarabot vezetőként használva, majd mindegyik színes huzalból 60 -at levágok.
- Vágjon le 2 mm -es hüvelyt minden huzal végéről, és forrasztja be őket.
- Forrasztjon egy kis folt forrasztást a LED -ek mindegyikére.
- Forrasztja a vezetékeket a LED -ekhez, hogy két 60 -as láncot hozzon létre a percekhez és másodpercekhez, és egy 12 -es láncot az órákhoz. Piros vezetéket használtam 5V -ra, sárgát az adatokhoz és kéket a földeléshez.
- Ügyeljen arra, hogy minden adatkimenetet (DOUT) a következő LED adatbemenetéhez (DIN) csatlakoztasson
- Az egyes láncadagok utolsó ledjének nincs szüksége adatkimenetre.
Miután az összes lánc elkészült, jó ötlet tesztelni őket a telepítés előtt. Az Arduino UNO -t és az Adafruit NeoPixel Strand Test -et használtam annak megerősítésére, hogy minden LED működik.
Forrasztjon hosszabb vezetékeket mindegyik láncra 5V, földelés és adatbevitel esetén.
Ezen a ponton öt 5V -os vezetéknek, három adatvezetéknek az Arduino Pro Mini -hez és 5 földelő vezetékhez kell csatlakoznia.
Vágja le 5 mm -re az 5 V -os vezetékek végét, és forrasztja össze őket, és ismételje meg a földelést.
A három lánc befejezése után forrasztjon egy 5V -os vezetéket az Arduino Pro Mini RAW -tűjére, valamint az RTC VCC -tűjére. Földelő vezeték a GND -hez az Arduino Pro Mini és az RTC -n, majd további 2 vezeték:
SCL az RTC -től az A5 -ig a Pro Mini -n
SDA az RTC -től A4 -ig a Pro Mini készüléken
A LED -ek adatvonalai a következőkhöz csatlakoznak:
- Másodpercek - Digitális Pin 3.
- Percek - DigitalPin 4
- Óra - DigitalPin 5
4. lépés: Telepítés
A forrasztás után a LED -eket lyukakba kell szerelni. A LED-eket úgy kell felszerelni, hogy az adatok az óramutató járásával ellentétes irányba futjanak, amikor hátulról nézik, mivel a kód elöl van beállítva.
Kis mennyiségű forró ragasztót használtam lenyomva, mivel szeretném, ha egyetlen LED -et cserélhetnék, ha a jövőben nem sikerül.
Forró ragasztót is használtam, hogy az összes vezetéket tisztán és rendben tartsam, és rögzítsem a hordócsatlakozót a táblához.
Számos arduino pro mini programozási útmutató áll rendelkezésre. A külső USB -soros átalakító módszerrel töltöm be ezt a kódot az Arduino -ba:
Ez a kód az RTC -n az időt a fordítás időpontjára is beállítja. ezért fontos, hogy csak nézze meg a feltöltés gombot, hogy megfeleljen és a lehető leggyorsabban feltöltse.
Ennek a kódnak a nagy részét Andy Doro kölcsönözte a NeoPixel Ring Clock órából. Néhányat az Adafruit NeoPixel szál tesztből, és néhányat én raktam össze.
Telepítenie kell néhány könyvtárat. Ezek az Arduino szoftver Libraries Manager -jéből érhetők el.
Az Adafruit NeoPixel a ws2812b LED -ekhez
Vezeték az RTC -vel való beszélgetéshez I2C -n keresztül (ez alapfelszereltség)
és az RTClib, mert tudja, mit kérjen az RTC -től
/************************************************* ***************************NeoPixel Ring Clock by Andy Doro ([email protected]) https://andydoro.com/ringclock/ ************************************************* **************************
Módosítási előzmények
Dátum szerint
20140320 AFD Első huzat 20160105 AFD Fakult ívek 20160916 AFD Trinket -kompatibilis 20170727 AFD hozzáadta a STARTPIXEL -t a 3D -házhoz, változó kiindulópont, hozzáadta az automatikus DST -támogatást 20180424 AFD a DST könyvtár használatával https://github.com/andydoro/DST_RTC *
/ tartalmazza a könyvtár kódját:
#befoglalni #befoglalni
#befoglalni
// definiálja a csapokat
#define SECPIN 3 #define MINPIN 4 #define HOUPIN 5
#define BRIGHTNESS 20 // a maximális fényerő beállítása
#define r 10
#define g 10 #define b 10 RTC_DS3231 rtc; // Óraobjektum létrehozása
Adafruit_NeoPixel szalagS = Adafruit_NeoPixel (60, SECPIN, NEO_GRB + NEO_KHZ800); // szalag objektum
Adafruit_NeoPixel szalag M = Adafruit_NeoPixel (60, MINPIN, NEO_GRB + NEO_KHZ800); // szalag objektum Adafruit_NeoPixel szalagH = Adafruit_NeoPixel (24, HOUPIN, NEO_GRB + NEO_KHZ800); // szalag objektum byte pixelColorRed, pixelColorGreen, pixelColorBlue; // színértékeket tartalmaz
void setup () {
Wire.begin (); // Begin I2C rtc.begin (); // kezdődik az óra
Sorozat.kezdet (9600);
// pinmodes beállítása pinMode (SECPIN, OUTPUT); pinMode (MINPIN, OUTPUT); pinMode (HOUPIN, OUTPUT);
if (rtc.lostPower ()) {
Serial.println ("Az RTC elvesztette az áramot, állítsuk be az időt!"); // a következő sor az RTC -t a vázlat összeállításának dátumára és időpontjára állítja be rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Ez a sor az RTC -t explicit dátummal és idővel határozza meg, például beállítható //); }
stripS.begin ();
stripM.begin (); stripH.begin (); //strip.show (); // Inicializálja az összes képpontot "kikapcsolt" állapotba
// indítási sorrend
késleltetés (500);
colorWipeS (stripS. Color (0, g, 0), 5); // Kék színWipeM (stripM. Color (r, 0, 0), 5); // Kék színWipeH (csíkH. Szín (0, 0, b), 50); // Kék
késleltetés (1000);
DateTime theTime = rtc.now (); // figyelembe veszi a DST bájt secondval = theTime.second (); // get másodperc bájt minuteval = theTime.minute (); // percet kap int órában = theTime.hour (); hourval = hourval % 12; // Ez az óra 12 óra, ha 13-23, akkor konvertálja 0-11`-re
for (uint16_t i = 0; i <secondval; i ++) {stripS.setPixelColor (i, 0, 0, b); stripS.show (); késleltetés (5); }
for (uint16_t i = 0; i <minuteval; i ++) {stripM.setPixelColor (i, 0, g, 0); stripM.show (); késleltetés (5); }
for (uint16_t i = 0; i <hourval; i ++) {stripH.setPixelColor (i, r, 0, 0); stripH.show (); késleltetés (5); }
}
void loop () {
// időt kapni
DateTime theTime = rtc.now (); // figyelembe veszi a DST -t
byte secondval = theTime.second (); // másodpercet kap
byte minuteval = theTime.minute (); // percet kap int órában = theTime.hour (); // get hours hourval = hourval % 12; // Ez az óra 12 óra, ha 13-23, akkor konvertálja 0-11`-re
stripS.setPixelColor (secondval, 0, 0, 20); stripS.show (); késleltetés (10); if (secondval == 59) {for (uint8_t i = stripS.numPixels (); i> 0; i--) {stripS.setPixelColor (i, 0, g, 0); stripS.show (); késleltetés (16);}}
stripM.setPixelColor (percérték, 0, g, 0);
stripM.show (); késleltetés (10); if (secondval == 59 && minuteval == 59) {for (uint8_t i = stripM.numPixels (); i> 0; i--) {stripM.setPixelColor (i, r, 0, 0); stripM.show (); késleltetés (16);}}
stripH.setPixelColor (óra, r, 0, 0);
stripH.show (); késleltetés (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);}} // soros hibakereséshez Serial.print (hourval, DEC); Serial.print (':'); Serial.print (percérték, DEC); Serial.print (':'); Serial.println (secondval, DEC); }
// Töltse fel a pontokat egymás után egy színnel
void colorWipeS (uint32_t c, uint8_t wait) {for (uint16_t i = 0; i <stripS.numPixels (); i ++) {stripS.setPixelColor (i, c); stripS.show (); késleltetés (várakozás); }}
void colorWipeM (uint32_t c, uint8_t wait) {
for (uint16_t i = 0; i <stripM.numPixels (); i ++) {stripM.setPixelColor (i, c); stripM.show (); késleltetés (várakozás); }}
void colorWipeH (uint32_t c, uint8_t wait) {
for (uint16_t i = 0; i <stripH.numPixels (); i ++) {stripH.setPixelColor (i, c); stripH.show (); késleltetés (várakozás); }}
5. lépés: Utolsó érintések
Most már csak az RTC és a mikrovezérlő rögzítését kell hagyni a mélyedésben.
Felszereltem az RTC elemet felfelé, így szükség esetén könnyen cserélhetem az akkumulátort.
Csatlakoztassa az 5 V -os vezetékeket a csatlakozó + oldalához, a földelést pedig a - oldalához
Kapcsolja be!
Az enyém csatlakoztatva van egy USB akkumulátor bankhoz, de az USB telefon töltő ugyanúgy működik.
Jegyzet:
A LED -ek fényereje a kódban van beállítva. Alacsonyra állították, hogy alacsony legyen az áramfelvétel. Teljes fényerő mellett, minden LED világításával közel 8 amper áramot tud felvenni. A jelenlegi beállítással kevesebb, mint 1.
Második helyezett az Órák versenyben
Ajánlott:
FLEXBALL - Száz pixel rugalmas PCB labda WiFi -vel: 6 lépés (képekkel)
FLEXBALL - Száz Pixel Rugalmas NYÁK -labda WiFi -vel: Üdv, gyártók! Az ESP8285-01f vezérli - az Espressif legkisebb ESP alapú modulja. Ezen kívül ADXL345 gyorsulásmérővel rendelkezik
Pixel intelligens lámpa: 7 lépés (képekkel)
Pixel intelligens lámpa: Ezt a projektet egy intelligens lámpához készítettem, amelyet Bluetooth vezérel egy Android Stúdióban kifejlesztett Android -alkalmazással. A Pixel fő célja a gyönyörű fények megjelenítése. Ez például a kandalló világítási módja, nézzük meg, hogyan lehet egy egy képpontos kandalló
Függőleges Bartop Arcade beépített PIXEL LED kijelzővel: 11 lépés (képekkel)
Függőleges Bartop Arcade beépített PIXEL LED kijelzővel: **** Új szoftverrel frissítve, 2019. július, részletek itt A szekrény oldalán található karakterek lézerrel vágott betétek és nem ragadósak
Pixel Cloud környezeti fali lámpa: 6 lépés (képekkel)
Pixel Cloud környezeti fali lámpa: Az Ikea világításának egy másik módosítása, címezhető LED -ekkel és vezérlővel, hogy valami egyedit hozzon létre. Gyermekszobában, lágy környezeti fényben és éjszakai fényként való használatra tervezték. Ez a projekt 56x APA102 címezhető pixelt használ, NLE
RGB LED Pixel árnyalatok: 17 lépés (képekkel)
RGB LED pixel árnyalatok: Sziasztok, ebben az utasításban megmutatom, hogyan készíthet pár LED pixeles árnyalatot. Eredetileg ezeket karácsony / újév alkalmával a ház körüli viseletre készítettem, mintegy mobil díszként, de végül egy kicsit kiberpunkabbak lettek