Tartalomjegyzék:

NeoClock: 7 lépés (képekkel)
NeoClock: 7 lépés (képekkel)

Videó: NeoClock: 7 lépés (képekkel)

Videó: NeoClock: 7 lépés (képekkel)
Videó: Таблица умножения больше не нужна / Умножение любых чисел без калькулятора @arinablog 2024, Június
Anonim
Image
Image

Ez egy óra építéséről szól az Adafruit fantasztikus neopixel gyűrűinek felhasználásával. Az óra szórakoztató tulajdonsága az, hogy valójában két neopixel gyűrűje van, az egyik az órák, a másik a perc, másodperc és ezredmásodperc. Az óra tökéletes időt tart a Sparkfun DS3234 DeadOn Real Time Clock chipje segítségével. Könnyen felépíthető és szórakoztató a módosítása. Remélem, hogy ez inspirálni fog másokat, hogy órákat vagy más műalkotásokat építsenek a neopixel gyűrűk segítségével.

Azoknak, akik szeretnék az összes fájlomat egyszerűen kezelhető formátumban elérni, bátran töltsék le őket a github tárhelyemről ehhez a projekthez a https://github.com/chrisgilmerproj/neoclock címen.

1. lépés: Az óra tervezése

Az óra tervezése
Az óra tervezése
Az óra tervezése
Az óra tervezése
Az óra tervezése
Az óra tervezése
Az óra tervezése
Az óra tervezése

Kezdettől fogva tudtam, hogy legalább két gyűrű neopixelt szeretnék használni. Némi munka után úgy döntöttem, hogy a legjobb megoldás az lenne, ha az egyik gyűrű a másikba kerülne, ami megőrzi az óra eredeti formáját. A kisebb gyűrű az óra, a fennmaradó idő pedig a nagyobb gyűrűn marad. Néhány tervezési szempont magában foglalta a neopixelek költségét, az energiaigényt, a lézerrel vágott darabok méretét és azt, hogy milyen művészetet szeretnék rá helyezni.

Ezzel a lépéssel úgy döntöttem, hogy meg kell értenem az elektronikát, mielőtt megtervezem az óra testének lézeres vágását.

2. lépés: Az elektronika tervezése

Az elektronika tervezése
Az elektronika tervezése
Az elektronika tervezése
Az elektronika tervezése
Az elektronika tervezése
Az elektronika tervezése
Az elektronika tervezése
Az elektronika tervezése

Az elektronika megtervezése során le kellett ismerni az órában kívánt elemeket:

  • Neopixel gyűrűk (60 szám és 24 szám)
  • Arduino (az agy)
  • Óraszabályozás (az arduinók nem tartanak jó időt)
  • Energiagazdálkodás

A neopixelek mérete és teljesítményigénye jól dokumentált. Mivel 5V DC -ről működnek, úgy döntöttem, hogy 5 V -os Arduino -val megyek, és egyszerűbbé teszem a dolgokat. Tekintettel a térre, úgy döntöttem, hogy egy normál Arduino Uno prototípusát készítem, de a végső elektronikához egy Arduino Minit választottam.

A projekt első iterációja közvetlenül az Adafruit NeoPixel Basic Connections oldaláról érkezett. Mellékeltem a diagramot a weboldalról, hogy megkönnyítsem a dolgokat. Ebből két dolog fontos:

  1. 1000uF kondenzátorra van szükség, hogy megakadályozzuk a kezdeti áramlökést a képpontok károsításában.
  2. A 60 számláló gyűrű első pixelére 470 ohmos ellenállás szükséges (ez az ellenállás a 24 számláló gyűrűbe van beépítve)

Az Adafruit számos NeoPixel bevált gyakorlattal is rendelkezik, amelyeket el kell olvasnia, mielőtt folytatja a tervezést.

Az óra tartása egy másik probléma. Az arduino beépített órája nem elegendő a jó idő hosszú távú tartásához. Rosszabb probléma, hogy az arduino -n lévő időt minden alkalommal újra kell állítani. A számítógépek ezt a problémát úgy oldják meg, hogy egy kis akkumulátort használnak az óralapkán, hogy megtartsák az áramkimaradások közötti időt. Régebben valami olyat használtam, mint az Adafruit ChronoDot -ja. De ebben az esetben ürügyet akartam használni a SparkFun DS3234 (DeadOn RTC) használatára. A dátuminformációkat a DeadOn RTC -n is megőrizheti, ha azt az órába kívánja integrálni.

Végül az energiagazdálkodásra is szükség volt. Már tudtam, hogy mindennek 5V -nak kell lennie, de a szükséges árammennyiség rejtélynek tűnt. A legtöbb projektben általános feszültségszabályozó az L7805. Ez 24 V -ig terjedő feszültséget és 1,5 A maximális áramot igényel. Tudtam, hogy van egy 12V -os 1,5A -s faliszapom, ezért úgy döntöttem, hogy ez lesz a tökéletes (és olcsó!) Feszültségszabályozó a projekthez.

A fennmaradó darabok a dobozomból vagy a Radio Shack -ból származnak. Ide tartoztak a vezetékek, a kapcsolók és az egyenáramú tápcsatlakozó.

3. lépés: Az elektronika építése

Az elektronika építése
Az elektronika építése
Az elektronika építése
Az elektronika építése
Az elektronika építése
Az elektronika építése

A projekt létrehozásához vásárolt elektronika teljes listája megtalálható a github tárolómban itt: Elektronikai alkatrészek listája. Minden darabhoz linkeket tartalmaz a termékoldalra, és további információkat tartalmaz, beleértve a termék cikkszámát. Ezt gyorsan prototípusoztam egy kenyérsütő táblán, és a képek készítése előtt a lézervágásra és az építésre költöztem. Én azonban úgy építettem, hogy könnyen szétszedhető legyen, ezért lebontottam a fenti fotók darabjait.

Nézze meg alaposan a képeket, mivel a vezetékeket szándékosan hajlították meg, hogy könnyen követhetők legyenek, és az elektronika teljes profilja vékony legyen. A kezdeti prototípus elkészítése a lézervágás tervezése előtt lehetővé tette az alkatrészek vastagságának ellenőrzését, hogy megállapíthassam az óra testének végleges méreteit.

Észre fogod venni, hogy készítettem pár egyedi kenyérlapot. Megpróbáltam lefotózni a táblák hátulját, hogy megismételhesse őket. Vásárolhat egy sor kenyérsütő deszkát pár dollárért, és elkészítheti azokat a projektjének megfelelően.

A kábelezés egyenes, de a legfontosabb dolgok, amelyeket emlékezni kell a képekből, a következők:

  • A Mode és a Set kapcsolóknak lehúzható ellenállásokra van szükségük. 2,21 ohmos ellenállásokat használtam, amiket hevertem, de minden kis ellenállás működni fog (lehetőleg legalább 1 kOhm). Ez stabilizálja a csatlakoztatott Arduino bemeneti csapokat, így amikor magasra emelkednek, megkülönböztethetők a zajtól.
  • A DS3234 négyzethullámát (SQW) földelték, mivel nem használják.
  • Az L7805 áramellátását az Arduino Mini RAW tűben helyezi el. Mindig tegye az Arduino -ba érkező energiát a RAW -ba.
  • A 60 neopixelgyűrű első képpontja 470 Ohm ellenállással rendelkezik, hogy csökkentse az adatcsúcsok okozta esetleges sérüléseket az első képpontban. Ez nem jelenthet problémát, mivel a 24 számláló neopixel már rendelkezik beépített ellenállással, de jobb, mint sajnálni.
  • A Mode és a Set kapcsolók SPST pillanatnyi nyomógombos kapcsolók

A vezetékek színei:

  • Piros: +5VDC
  • Fekete: Föld
  • Zöld: Adatok
  • Sárga, kék, fehér: Speciális vezetékek a DS3234 -hez

Ha először használja a neopixeleket, ne feledje, hogy ezek hosszú láncnak tekinthetők. Így furcsának tűnhet egy "első pixelről" beszélni egy gyűrűben, de valójában van egy kezdete és vége minden gyűrűben lévő láncnak. Ebben a projektben a kis gyűrű 24 képpontja az első, a nagyobb gyűrű 60 képpontja következik. Ez valóban azt jelenti, hogy 84 neopixelből álló láncom van.

Az Arduino Mini kábelezéséhez:

  • A DS3234 a 10–13
  • A Mode és a Set kapcsolók a 2 -es és 3 -as érintkezőn vannak
  • A neopixel adatok a 6. tűből származnak.

Azt is javaslom, hogy tegye a 6 fejlécet az Arduino Mini aljára, hogy FTDI kábelen keresztül programozhassa.

Fontos megjegyzés az áramról: Ez az óra sokat igényel. Biztos vagyok benne, hogy meg tudnám oldani, de a gyakorlati tapasztalatom az, hogy bármi, ami egyenlő vagy kevesebb, mint 500 mA, végül barna kiütéseket okoz. Ez abban nyilvánul meg, hogy az óra őrült színekben villog, és nem tartja az időt. Az utolsó fali söröm 12V és 1,5A, és még soha nem volt barna vele. Azonban a feszültségszabályozó (és más alkatrészek) 1,5A a határ. Tehát ne lépje túl ezt az összeget.

4. lépés: Az óra kódolása

Az óra kódolása
Az óra kódolása

Az óra teljes kódja megtalálható a GitHub NeoClock kódjában. Ide csatoltam a fájlt, de minden változás megtörténik a lerakatban.

Úgy gondolom, hogy a kód írása ijesztő lehet, ha mindent egyszerre tesz meg. Ahelyett, hogy erre törekednék, megpróbálok egy működő példából kiindulni, és olyan szolgáltatásokat fejleszteni, amelyekre szükségem van. Mielőtt belevágnék ebbe, szeretném leszögezni, hogy a kódom az alábbi tárhelyek és az Arduino CC fórum sok példájának kombinálásával jött létre. Mindig adj hitelt ott, ahol esedékes!

  • https://github.com/adafruit/Adafruit_NeoPixel
  • https://github.com/zeroeth/time_loop
  • https://github.com/sparkfun/DeadOn_RTC

Néhány példakód ezekből az adattárakból megtalálható a Kódpéldák könyvtáromban

A kód létrehozásához használt műveletek sorrendje valahogy így hangzott:

  • Győződjön meg arról, hogy a neopixelek működnek a Strand Test példa segítségével
  • Próbáljon futtatni egy órát a Time Loop kóddal
  • Módosítsa az órát úgy, hogy csak egy gyűrű helyett két gyűrűn működjön
  • Adja hozzá a DS3234 -et, hogy megőrizze az időt a DeadOn RTC példán keresztül
  • Adja hozzá a módot és a beállítási kapcsolókat
  • Adjon hozzá Debounce kódot az Arduion Debounce Tutorial segítségével
  • Adjon hozzá néhány színes témát az óra LED -ekhez
  • Adjon hozzá néhány animációt a 0, 15, 30 és 45 perces jelekhez
  • Adjon hozzá iránytűpontokat az órához a 0, 15, 30 és 45 perces jelek orientálásához

Ha látni szeretné, hogyan építettem fel ezt a kódot, akkor valójában a GitHub használatával tekintheti meg az egyes kódok véglegesítését. Az óra előzményei a Vállalási előzményekben találhatók.

A színsémákat szórakoztató volt hozzáadni, de végül csak négyet vettem fel a menübe. Mindegyik téma meghatározott színt állít be az óra, perc, másodperc és ezredmásodperc "kezében". Valójában a lehetőségek itt végtelenek, de a témákat (a felsorolt metódusneveket) is belefoglaltam:

  • setColorBlue
  • setColorRed
  • setColorCyan
  • setColorOrange

A további módszereket azonban megtalálhatja a kódban:

  • setColorPrimary
  • setColorRoyal
  • setColorTequila

Animációkat adtak hozzá, mert tetszett az ötlet, hogy a régi órák csilingelnek az óra négy tizenöt perces pontján. Ehhez az órához a következő animációkat készítettem:

  • 15 perc: Színezze pirosra a gyűrűket
  • 30 perc: Színezze zöldre a gyűrűket
  • 45 perc: Színezze kékre a gyűrűket
  • Az óra teteje: Végezzen szivárványt a két gyűrű között

Kiderült, hogy a használhatóság problémát okoz az órában, mert senki sem tudta irányítani az órát. Végül is ez csak két LED -gyűrű. Tehát a probléma megoldásához hozzáadtam az iránytű pontokat az órához. Ez javította az idő sokatmondó képességét. Ha tudtam volna erről, mielőtt kiküldtem a lézervágott darabokat, lehet, hogy valamit hozzáadtam volna a művészethez. De kiderül, hogy sötétben nem látja olyan jól a művészetet, így az iránytű pontok használata valóban segít. Ennek egyik szempontja az, hogy amikor úgy dönt, hogy színez egy képpontot, először rögzítse az aktuális színt, és hozzon létre egy új kevert színt. Ez természetesebb érzést kölcsönöz.

Egy utolsó apróság a milliszekundumokról szól. Az Arduino ezredmásodpercei a belső Arduino kristályról származnak, nem pedig a DS3234 -ről. Rajtad múlik, hogy ezredmásodperceket akarsz -e megjeleníteni, vagy nem, de én úgy tettem, hogy az óra mindig úgy tűnik, hogy csinál valamit. Lehet, hogy téged zavar, hogy az ezredmásodpercek és másodpercek nem mindig állnak egy sorban, de a gyakorlatban soha senki nem említette ezt nekem, amikor az órára nézett, és szerintem jól néz ki.

5. lépés: A lézervágott fájlok tervezése

A lézervágott fájlok tervezése
A lézervágott fájlok tervezése
A lézervágott fájlok tervezése
A lézervágott fájlok tervezése
A lézervágott fájlok tervezése
A lézervágott fájlok tervezése
A lézervágott fájlok tervezése
A lézervágott fájlok tervezése

Két szempontot kellett figyelembe vennem a lézervágott fájlok tervezésekor. Az első az az anyag volt, amiből építeni akartam, a második pedig az, hogy hogyan fogják felépíteni. Tudtam, hogy egy fa felületet szeretnék, akrillal szórva a neopixeleket. Az anyag kiderítéséhez először rendeltem néhány mintát a Ponokótól:

  • 1x furnér MDF - dió
  • 1x furnér MDF - cseresznye
  • 1x akril - világos szürke
  • 1x akril - opál

A fa kiválasztása lehetővé teszi, hogy lássam, hogyan néz ki a raszteresítés, és hogyan néz ki az égés az óra oldalán. Az akril lehetővé tenné, hogy kipróbáljam a neopixelek diffúzióját, és összehasonlítsam, hogyan nézne ki a fához képest. Végül a cseresznyefa mellett döntöttem, opál akrilral.

Az óra méreteit elsősorban a neopixelgyűrűk mérete határozta meg. Amit nem tudtam, hogy milyen vastagnak kell lennie ahhoz, hogy illeszkedjen az elektronikához. Miután megépítettem az elektronikát, és tudtam, hogy a fa körülbelül 5,5 mm vastag, megállapítottam, hogy körülbelül 15 mm -es helyre van szükségem az órán belül. Ez három réteg fát jelentett. De mivel az elülső és a hátsó rész már elfoglalta a tervezés helyének nagy részét, ezeket a gyűrűket "bordákra" kellett bontani, amelyeket később össze tudtam ragasztani.

Az InkScape segítségével rajzoltam a Ponoko által biztosított sablonra. Miután kihúztam az óra testét, elkezdtem kézzel rajzolni a fát. Nem tudtam importálni az eredeti képet, amely inspirált, de nem volt szörnyű kitalálni, hogyan csinálhatok valami hasonlót magam.

Az anyagok költsége csak körülbelül 20 dollár volt, de a vágás költsége körülbelül 100 dollárral több. Ehhez két dolog járult hozzá:

  • A görbék és a körök drágábbak, mivel a gép két tengelyen mozog, és ennek a kialakításnak sok íve van
  • A raszterizálás sok oda -vissza passzolást igényel a darabban. Ennek leejtése mentette volna meg a legtöbb pénzt, de tetszett.

A terv véglegesítése után elküldtem az EPS fájlokat a Ponoko -nak, és a darabjaim körülbelül egy héttel később készültek el.

Ne feledje, hogy a Mode és Set kapcsolókat vagy a DC tápcsatlakozót nem vettem bele a tervezésbe. Amikor elküldtem, még mindig nem döntöttem ezekről a részekről. Hogy nagyobb rugalmasságot biztosítsak magamnak, abbahagytam őket, és úgy döntöttem, hogy később kézzel fúrom őket.

6. lépés: Az óra felépítése

Az óra felépítése
Az óra felépítése
Az óra felépítése
Az óra felépítése
Az óra felépítése
Az óra felépítése
Az óra felépítése
Az óra felépítése

Amikor minden darab megérkezett, elkészítettem az órát. Az első lépés az óra karosszériája volt, amely miatt ki kellett lyukasztanom a bordákat, és hátra és elülsőre ragasztottam. Két réteg bordát tettem a hátoldalára és egy réteget az elejére, és faragasztóval állítottam be. Elöl fa ragasztót használtam az akril gyűrűk és a fa körök összeillesztéséhez. Volt egy tartalék központi darabom, amelyet nyersdarabként vágtam, ami jól jött az építkezés során. Ragasztottam a fadarab hátuljára, és ez adott egy helyet, ahol később felragaszthattam a neopixeleket.

A felépített karosszéria mellett úgy döntöttem, hogy lyukakat fúrok a kapcsolókhoz és a hálózati csatlakozóhoz. Egy kis geometria (ahogy a képen is látszik) segített mindent összehangolni. Külön fadarab segítségével kívülről fúrás közben (nagyon óvatosan!) Elkészítettem a lyukakat, és beragasztottam a kapcsolókat és az emelőt.

Az elektronika következett. Először a neopixeleket ragasztottam, majd a kondenzátort. Ezeket bekötöttem a neopixel tápellátó táblába. Aztán hátulra a vezetékeket a kapcsolókra és a hálózati aljzatra tettem. Az L7805 feszültségszabályozót is mellékeltem.

Gyors megjegyzés a gyűrűk tájékozódásáról. A 60 képpontos nagy gyűrűhöz úgy kell beállítani az órát, hogy az egyik pixel pontosan a tetején legyen a nulla perc kijelöléséhez. Melyik képpont nem számít, és egy perc alatt rájövök a miértre. A 24 képpontos kis gyűrűhöz úgy kell beállítani az órát, hogy a teteje valójában két képpont között legyen. Ennek az az oka, hogy ha 12 órát szeretne megjelölni, akkor végül két képpont világít egy helyett. Az eltolás és a műanyag diffúziója révén úgy tűnik, mintha valóban 12 széles képpontja lenne.

Ami azt illeti, hogy a kód melyik képpontot jelöli minden csengetés "tetejének", kicsit módosítania kell a kódot. Két értékem van a kódomban: "belső_top_led" és "külső_top_lemez". Az óráimban a "belső_felső" 11 képpont volt a kis gyűrű kezdetétől, a "külső_ teteje" pedig 36 képpont volt a nagy gyűrű kezdetétől. Ha történetesen máshogy tájolja a gyűrűket, akkor ezeket az értékeket a tájolás szerinti értékekre módosítja. Egy kis kísérletezés, és gyorsan megtalálja a megfelelő értéket.

Ezen a ponton teszteltem, hogy minden a várt módon működik.

De mint minden projektnél, egy problémába ütköztem, amikor rájöttem, hogy nem tudtam, hogyan fog összeállni. Észrevettem, hogy körülbelül 3/8 hüvelyk hely van a neopixelek és a bordák között, így átmentem a Home Depotba, és kaptam egy 3/8 hüvelykes dübelt és számos neodímium mágnest. Három helyen kis faállványokat építettem és lecsiszoltam, hogy minden állványhoz két mágnest tegyek (szuperragasztó segítségével). Végül 3 pár 2 -es standot kaptam. Ezután ezeket a keretbe ragasztottam, és egy bilincs segítségével a helyén tartottam. Ezt úgy csináltam, hogy a ragasztó nedves volt az állványokon, hogy minden összehangolódjon, majd megszáradjon a megfelelő helyen. Ez tökéletesen működött, és szeretem, hogy a kiadás rejtve van.

Végül rájöttem, hogy fel kell akasztanom a falra, így hátul egy kis hangárba fúrtam, hogy felrakhassam a falra.

7. lépés: Utolsó gondolatok

Ezt a projektet nagyon szórakoztató volt építeni, és élveztem a neopixelek és a DS3234 megismerését. Különösen élveztem, hogy végre olyan projektet építettem, amely elegánsnak tűnt az elejétől a végéig. Van pár dolog, amit frissítenék, ha ismét megtenném, de ezek kisebbek:

  • Az egyszerűség kedvéért három gombot választottam három helyett. De ha lenne egy gombom, amely lehetővé tenné, hogy lefelé és felfelé is menjek, jó lett volna beállítani az órát
  • A mód gomb és a beállítás gomb nem különböztethetők meg. Gyakran keverem őket. Talán a jövőben ellentétes oldalra helyezném őket.
  • Soha nem fejeztem be a fa frontot. Először tetszett a nyers megjelenés, majd később aggódni kezdtem, hogy ha elrontom a befejezést, akkor sokba kerül a javítása.
  • A fa raszterezése rendben volt, de lehet, hogy a jövőben részletesebben rajzoltam volna a fához.
  • Az óra elsötétítése is szép funkció lenne, mivel sötétben elég világos. A tompítás azonban a színhez kötődik, és rájöttem, hogy ez a bit túl sokáig tartott, ezért leejtettem. Valószínűleg a jövőben újra befektetnék ebbe a szolgáltatásba.

Köszönöm, hogy végigolvastad ezt az oktatóanyagot. Remélem, elkészíti saját óráját vagy neopixel projektjét, és megosztja velem. Boldog épületet!

Ajánlott: