Tartalomjegyzék:

132 Pixel Clock: 5 lépés (képekkel)
132 Pixel Clock: 5 lépés (képekkel)

Videó: 132 Pixel Clock: 5 lépés (képekkel)

Videó: 132 Pixel Clock: 5 lépés (képekkel)
Videó: PARSONVER LA24 Smartwatch Review: A Stylish and Affordable Option for Women 2024, November
Anonim
Image
Image
132 Pixel Clock
132 Pixel Clock

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

Kellékek és eszközök gyűjtése
Kellékek és eszközök gyűjtése
Kellékek és eszközök gyűjtése
Kellékek és eszközök gyűjtése
Kellékek és eszközök gyűjtése
Kellékek és eszközök gyűjtése
Kellékek és eszközök gyűjtése
Kellékek és eszközök gyű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

Jelölés, fúrás és marás
Jelölés, fúrás és marás
Jelölés, fúrás és marás
Jelölés, fúrás és marás
Jelölés, fúrás és marás
Jelölés, fúrás és mará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

Annyi katona, vágás és lecsupaszítás
Annyi katona, vágás és lecsupaszítás
Annyi katona, vágás és lecsupaszítás
Annyi katona, vágás és lecsupaszítás
Annyi katona, vágás és lecsupaszítás
Annyi katona, vágás és lecsupaszí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

Telepítés
Telepítés
Telepítés
Telepítés
Telepíté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

Image
Image
Utolsó érintések
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.

Órák verseny
Órák verseny
Órák verseny
Órák verseny

Második helyezett az Órák versenyben

Ajánlott: