Jó napot, ma megosztom az utasításokat, hogyan készítsünk órát szobahőmérővel. Az óra fut Arduino Az UNO, WG12864B grafikus képernyő az idő és a hőmérséklet megjelenítésére szolgál. Hőmérséklet-érzékelőként - ds18b20. A legtöbb órával ellentétben nem az RTS-t (Real Time Clock) fogom használni, hanem megpróbálom megtenni ezt a kiegészítő modult.
Ehhez házi A következő alkatrészekre van szükség:
- Arduino UNO (vagy bármely más Arduino kompatibilis tábla)
- Grafikus képernyő WG12864B
- ds18b20 hőmérséklet-érzékelő
- Ellenállás 4,7 Kom 0,25 W
- Ellenállás 100 ohm, 0,25 W
- Elemtartó rekesz négy AA elemhez, „ujj típusú”
- Megfelelő doboz
- Kis fájl
- körömlakk (fekete vagy test színű)
- Egy kicsit vékony műanyag vagy karton
- elektromos szalag
- összekötő vezetékek
- áramköri lap
- Gombok
- forrasztópáka
- Forrasztott, kolofon
- Kétoldalas szalag
1. lépés A ház előkészítése.
Tehát az óráinknak valahol kell elhelyezkedniük. Meg kell találnia a megfelelő dobozt. A lényeg az, hogy belefér a WG12864B képernyő, az Arduino és egy kis gombos áramköri kártya. A doboz minimális mérete 7 x 7 x 10 cm Ha kicsi Arduino deszkát használ, akkor egy dobozba és egy kisebbbe is beillesztheti, de a folyamatot példaként az Arduino UNO használatával írom le. Az anyag, amelyből a dobozt készítik, lehetőleg műanyag, ha - akárcsak az enyém - vas, érdemes gondoskodni a szigetelésről, hogy ne maradjon benne semmi „körül”. A műanyag előnyös, mert könnyebben vágható. Egy doboz mellett ő az óráink esetében, úgy döntött. Most ki kell vágnia egy ablakot a 6,5x4 cm-es képernyő alatt. Ha a doboz vas, rendkívül nehéz gondosan megtenni. Nem számít, mennyire próbálkozik, a vágás közelében csiszolt festék és érdesség lesz. Ezért először kivágjuk, erre a célra használhatjuk a „darálót”, fúrót fúvókával a vágáshoz, vagy általában az Ön által választott marógépet. Ezután megtisztítjuk a széleket egy reszelővel. Az összes aprított festéket megfelelő színű körömlakkkal festettük fel. Az eredménynek a következőnek kell lennie:
2. lépés Készítse elő a grafikus képernyőt.
A képernyő csatlakoztatásával első pillantásra sok probléma és nehézség merül fel. De ha először a típusukkal foglalkozunk, ez sokkal könnyebbé és érthetőbbé válik. Számos változat és típusú képernyő létezik a ks0107 / ks0108 vezérlőn.Az összes képernyőt általában 4 típusra osztják:
A lehetőség: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T
B opció: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ Az AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-88, Topway LM12864LDW, Digitron SG1286464J-1, kijelzők.
C lehetőség: Shenzhen Jinghua Displays Co Ltd. JM12864
D. lehetőség: Wintek-Cascades WD-G1906G, Wintek-GEN / WD-G1906G / KS0108B, Wintek / WD-G1906G / S6B0108A, TECDIS / Y19061 / HD61202, Varitronix / MGLS19264 / HD61202
A lista nem teljes, sok ilyen van. A leggyakoribb és véleményem szerint a legkényelmesebb WG12864B3 V2.0. A kijelző soros vagy párhuzamos porton keresztül csatlakoztatható az Arduino-hoz. Ha Arduino UNO-val használjuk, akkor jobb választani a soros port csatlakozást - akkor csak a mikrovezérlő 3 kimenetére van szükség, a minimum 13 vonal helyett, ha párhuzamos porton keresztül csatlakozunk. Minden egyszerűen kapcsolódik egymáshoz. Van még egy árnyalat, kétféle kijelző található a forgalomban: beépített potenciométerrel (a kontraszt beállításához) és anélkül. Úgy döntöttem, és azt tanácsolom, hogy tegye ugyanezt a beépített készülékkel.
Ez csökkenti az alkatrészek számát és a forrasztási időt. Érdemes egy 100 Ohm-os áramkorlátozó ellenállást elhelyezni a háttérvilágításhoz. 5 volt közvetlen csatlakoztatásával fennáll a háttérvilágítás megégésének veszélye.
WG12864B - Arduino UNO
1 (GND) - GND
2 (VCC) - + 5 V
4 (RS) - 10
5 (R / W) - 11
6 (E) - 13
15 (PSB) - GND
19 (BLA) - az ellenálláson keresztül - + 5 V
20 (BLK) - GND
A legkényelmesebb dolog az, hogy mindent összegyűjt a képernyő mögött, és 5 vezetéket kiad ki tőle, hogy csatlakozzon az Arduino UNO-hoz. Az eredménynek ehhez hasonlónak kell lennie:
Azok számára, akik továbbra is választanak párhuzamos kapcsolatot, kapok egy csatlakozási táblázatot.
És a B. opció képernyőinek elrendezése:
3. lépés Csatlakoztassa a hőmérséklet-érzékelőt.
Mint mondtam, a DS18B20 integrált érzékelőt fogjuk használni a hőmérséklet mérésére. A magas mérési pontosság miatt választottam, a hiba nem haladja meg a 0,5 ° C-ot. Az érzékelőt a gyártáskor kalibrálták, további beállításokra nincs szükség. Hőmérséklet-mérési tartomány -55 ... + 125 ° C. Két működési mód létezik: külső áramforrással és „hamis árammal”. Ha külső energiaüzemmódban működik, a csatlakozás a következő:
"Hamis teljesítmény" használatakor az érzékelő energiát kap a kommunikációs vonaltól. Ebben a módban két vezeték elég ahhoz, hogy a ds18b20-at csatlakoztassák a mikrovezérlőhöz. Az érzékelő belső kondenzátora a kommunikációs vonalon lévő energia miatt a buszon alacsony szinten van töltve. A "parazita táplálkozás" mód számos tulajdonsággal rendelkezik, ezért nem javasolom ennek használatát. De ha továbbra is úgy dönt, hogy használja, itt van az ábra:
Vagy használhat egy továbbfejlesztett huzalozási diagramot a "hamis teljesítmény" használatakor:
Egy érzékelő vonalon több érzékelő is szerepelhet. Óráinkhoz elég egy. A vezetéket a „DQ” ds18b20 tüskétől az „5. tű” Arduino UNO-hoz csatlakoztatjuk.
4. lépés Tábla előkészítése gombokkal.
Az óra és a dátum beállításához három gombot fogunk használni. A kényelem érdekében forrasztja meg az áramköri lap három gombját, és húzza ki.
Az alábbiak szerint csatlakozunk: A három gomb közös vezetéke a „GND” Arduino-hoz van csatlakoztatva. Az első gomb az időbeállítási módba való belépéshez, az idő és a dátum átváltásához kapcsolódik a "2. tűhöz". A második, az érték növelésének gombja a „3. tű”, a harmadik, az érték csökkentésének a gombja a „4. tű”.
5. lépés Mindent összerakva.
A rövidzár elkerülése érdekében szigetelje a képernyőt. Körben elektromos szalaggal becsomagoljuk, és hátulján rögzítjük egy méretre vágott kétoldalas szalagot, amely szigetelő anyagból készült. Megfelelő vastag karton vagy vékony műanyag. Papírtablettából műanyagot használtam. Kiderült, hogy a következő:
A képernyő elülső oldalán, a széle mentén, kétoldalas szalagot ragasztunk be hab alapon, lehetőleg fekete.
Csatlakoztatjuk a képernyőt Arduino-hoz:
Ezenkívül az elemtartóból csatlakozunk a „VIN” Arduino-hoz, mínusz a „GND” -hez. Az Arduino mögé helyezzük. A tok felszerelése előtt ne felejtse el a hőmérséklet-érzékelőt és a táblát gombokkal csatlakoztatni.
6. lépés Készítse elő és töltse ki a vázlatot.
A hőmérséklet-érzékelőnek szüksége van a OneWire könyvtárra.
A képernyőkimenet az U8glib könyvtáron keresztül történik:
A vázlat szerkesztéséhez és kitöltéséhez telepítse ezt a két könyvtárat. Ennek két módja van. Csomagolja ki ezeket az archívumokat, és helyezze a kicsomagolt fájlokat a „könyvtárak” mappába, amelyben a mappában található az Arduino IDE.Vagy a második lehetőség a könyvtár közvetlenül a programozási környezetbe történő telepítése. A letöltött archívumok kicsomagolása nélkül az Arduino IDE-ben válassza a Sketch - Connect Library menüt. A legördülő lista tetején válassza az "Add .Zip könyvtár hozzáadása" elemet. A megjelenő párbeszédpanelen válassza ki a hozzáadni kívánt könyvtárat. Nyissa meg újra a Vázlat - Csatlakozás könyvtárat menüt. A legördülő lista alján új könyvtárat kell látnia. Most a könyvtár használható programokban. Ne felejtse el újraindítani az Arduino IDE készüléket.
A hőmérséklet-érzékelő az egyvezetékes protokoll szerint működik, és minden eszköz számára egyedi címmel rendelkezik - 64 bites kóddal. A kód keresése minden alkalommal nem praktikus. Ezért előbb csatlakoznia kell az érzékelőt az Arduino-hoz, és töltse ki a Fájl - Példák - Dallas hőmérséklet - OneWireSearch menüben található vázlatot. Ezután futtassa az Tools - Port Monitor programot. Arduino-nak meg kell találnia az érzékelőnket, meg kell írni a címét és az aktuális hőmérsékleti értékeket. Másoljuk vagy egyszerűen felírjuk az érzékelőnk címét. Nyissa meg az Arduino_WG12864B_Term vázlatot, keresse meg a sort:
byte addr [8] = {0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97}; // az érzékelő címe
Írjuk le az érzékelő címét a merevítők között, helyettesítve az érzékelő címeit.
Photo:
//u8g.setPrintPos (44, 64); u8g.print (sek); // Másolatok nyomtatása a kurzus helyességének ellenőrzéséhez
Másodperceket jelenít meg az „Data” mellett. Ez az idő menetének pontos meghatározásához szükséges.
Ha az óra siet vagy elmarad, módosítsa az értéket a sorban:
if (micros () - prevmicros> 494000) {// átváltás másikra igazítás céljából 500 000 volt
Kísérletileg meghatároztam azt a számot, amelyen az óra pontosan megy. Ha az órád siet, növelje ezt a számot, ha hátul vagyok, csökkentse azt. A kurzus pontosságának meghatározásához és másodpercek befejezéséhez van szükség. A szám pontos kalibrálása után a másodperc kommentálható és eltávolítható a képernyőről.
Töltse ki a vázlatot.