Dobré odpoledne, dnes se podělím o pokyny, jak si vyrobit hodinky s pokojovým teploměrem. Hodinky běží dál Arduino Grafická obrazovka UNO, WG12864B se používá k zobrazení času a teploty. Jako teplotní senzor - ds18b20. Na rozdíl od většiny ostatních hodinek nebudu používat RTS (hodiny reálného času), ale pokusím se to udělat bez tohoto přídavného modulu.
Za tímto účelem domácí Jsou vyžadovány následující součásti:
- Arduino UNO (nebo jakákoli jiná deska kompatibilní s Arduino)
- Grafická obrazovka WG12864B
- teplotní senzor ds18b20
- Rezistor 4,7 Kom 0,25 W
- Rezistor 100 ohmů 0,25 W
- přihrádka na baterie pro 4 AA baterie „typu prst“
- Vhodný box
- Malý soubor
- lak na nehty (černá nebo barva těla)
- Trochu tenký plast nebo lepenka
- elektrická páska
- spojovací vodiče
- deska plošných spojů
- Tlačítka
- páječka
- Pájka, kalafuna
- Oboustranná páska
Krok 1 Příprava krytu.
Naše hodinky by tedy měly být někde umístěny. Musíte najít vhodnou krabici. Hlavní věc je, že se do ní vejde obrazovka WG12864B, Arduino a malá deska s tlačítky. Minimální velikost krabičky je 7 x 7 x 10 cm. Pokud používáte malou desku Arduino, můžete ji strčit do krabice a menší, ale jako příklad popíšu postup pomocí Arduino UNO. Materiál, z něhož je krabička vyrobena, je s výhodou plast, pokud je, jako je moje, železo, stojí za to se o izolaci starat, takže uvnitř není co „obcházet“. Plast je výhodnější, protože je jednodušší řezat. S krabicí je to případ našich hodinek, rozhodl se. Nyní je nutné oříznout okno pod obrazovkou o rozměrech 6,5 x 4 cm. Pokud je krabička železná, je velmi obtížné ji pečlivě provádět. Bez ohledu na to, jak se pokusíte, bude v blízkosti řezu štípaná barva a drsnost. Nejprve ji tedy vyřízneme, proto můžete použít „brusku“, vrták s tryskou pro řezání nebo frézu obecně dle vašeho výběru, s tím, co máte po ruce. Poté vyčistíme hrany pomocí souboru. Veškeré štípané barvy natíráme lakem na nehty, vhodnou barvou. Výsledkem by mělo být toto:
Krok 2 Připravte grafickou obrazovku.
S připojením obrazovky na první pohled vzniká mnoho problémů a obtíží. Ale pokud se nejprve vypořádáte s jejich typy, bude to mnohem snazší a srozumitelnější. Na řadiči ks0107 / ks0108 je mnoho variací a typů obrazovek.Všechny obrazovky jsou obvykle rozděleny do 4 typů:
Varianta A: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T
Varianta B: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ Displeje AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-88, Topway LM12864LDW, Digitron SG1286464J-1, QY8, QY8, QY8, QY8
Varianta C: Shenzhen Jinghua Displays Co Ltd. Jm12864
Varianta D: Wintek-Kaskády WD-G1906G, Wintek-GEN / WD-G1906G / KS0108B, Wintek / WD-G1906G / S6B0108A, TECDIS / Y19061 / HD61202, Varitronix / MGLS19264 / HD61202
Seznam není úplný, je jich mnoho. Nejobvyklejší a podle mého názoru výhodné WG12864B3 V2.0. Displej lze připojit k Arduinu přes sériový nebo paralelní port. Při použití s Arduino UNO je lepší zvolit připojení přes sériový port - pak při připojení přes paralelní port potřebujeme pouze 3 výstupy mikrokontroléru, namísto minimálně 13 linek. Všechno je spojeno jednoduše. Existuje ještě jedna varianta, v prodeji najdete dvě verze displejů, se zabudovaným potenciometrem (pro úpravu kontrastu) a bez něj. Vybral jsem a doporučuji vám, abyste udělali to samé s vestavěným.
Tím se snižuje počet dílů a doba pájení. Za podsvícení se také vyplatí vložit omezující odpor 100 Ohmů. Přímým připojením 5 voltů existuje riziko spálení podsvícení.
WG12864B - Arduino UNO
1 (GND) - GND
2 (VCC) - + 5V
4 (RS) - 10
5 (R / W) - 11
6 (E) - 13
15 (PSB) - GND
19 (BLA) - přes rezistor - + 5V
20 (BLK) - GND
Nejpohodlnější je shromáždit vše za obrazovkou a na výstupu z něj 5 vodičů připojit k Arduino UNO. Výsledkem by mělo být něco takového:
Pro ty, kteří si stále vyberou paralelní připojení, dám tabulku připojení.
A rozložení obrazovek s možností B:
Krok 3 Připojte snímač teploty.
Jak jsem řekl, použijeme k měření teploty integrovaný senzor DS18B20. Vybral jsem si jej pro vysokou přesnost měření, chyba není větší než 0,5 ° C. Senzor je kalibrován v době výroby, není třeba provádět žádná další nastavení. Rozsah měření teploty -55 ... + 125 ° C Existují dva režimy provozu: s externím zdrojem energie a „rušivou energií“. Při provozu v režimu externího napájení je připojení následující:
Při použití „rušivého výkonu“ senzor přijímá energii z komunikační linky. V tomto režimu stačí dva vodiče pro připojení ds18b20 k mikrokontroléru. Vnitřní kondenzátor snímače je nabíjen kvůli energii na komunikační lince na nízké úrovni na sběrnici. Režim „parazitická výživa“ má mnoho funkcí, a proto jej nedoporučuji používat. Ale pokud se stále rozhodnete jej použít, je zde tento diagram:
Nebo můžete použít vylepšené schéma zapojení při použití „rušivé energie“:
Na jedné komunikační lince může být zahrnuto několik senzorů. Pro naše hodinky stačí jedna. Připojíme vodič z „DQ“ ds18b20 pin k „pin 5“ Arduino UNO.
Krok 4 Příprava desky pomocí tlačítek.
K nastavení času a data na hodinkách použijeme tři tlačítka. Pro větší pohodlí pájejte tři tlačítka na desce plošných spojů a zapojte je.
Připojujeme se následujícím způsobem: vodič společný pro všechna tři tlačítka je připojen k „GND“ Arduino. První tlačítko slouží k přechodu do režimu nastavení času a přepínání času a data, připojení k „Pin 2“. Druhé, tlačítko pro zvýšení hodnoty, je "Pin 3" a třetí, tlačítko pro snížení hodnoty, je "Pin 4".
Krok 5 Složení vše dohromady.
Izolujte obrazovku, abyste zabránili zkratu. V kruhu se ovinujeme páskou a na zadní straně se připevňujeme k oboustranné páse, nařezané na míru, pás izolačního materiálu. Silný karton nebo tenký plast je vhodný. Použil jsem plast z papírové tablety. Ukázalo se následující:
Na přední stranu obrazovky podél okraje lepíme oboustrannou pásku na pěnovou bázi, nejlépe černou.
Připojíme obrazovku k Arduino:
Navíc se připojujeme z bateriového prostoru k „VIN“ Arduino, mínus k „GND“. Umístíme to za Arduino. Před instalací do pouzdra nezapomeňte připojit snímač teploty a desku pomocí tlačítek.
Krok 6 Připravte a vyplňte náčrt.
Senzor teploty potřebuje knihovnu OneWire.
Výstup na obrazovku je prostřednictvím knihovny U8glib:
Chcete-li upravit a vyplnit náčrt, nainstalujte tyto dvě knihovny. Existují dva způsoby, jak toho dosáhnout. Jednoduše rozbalte tyto archivy a vložte rozbalené soubory do složky „knihovny“ umístěné ve složce s nainstalovaným Arduino IDE.Nebo druhou možností je instalace knihovny přímo do programovacího prostředí. Bez rozbalení stažených archivů vyberte v Arduino IDE nabídku Sketch - Connect Library. V horní části rozevíracího seznamu vyberte položku „Přidat knihovnu ZIP“. V zobrazeném dialogu vyberte knihovnu, kterou chcete přidat. Znovu otevřete nabídku Sketch - Connect Library. Na samém spodku rozevíracího seznamu byste měli vidět novou knihovnu. Nyní lze knihovnu použít v programech. Po tom všem nezapomeňte restartovat Arduino IDE.
Teplotní senzor pracuje podle protokolu One Wire a má pro každé zařízení jedinečnou adresu - 64bitový kód. Hledání kódu je pokaždé nepraktické. Proto musíte nejprve připojit senzor k Arduino, vyplnit náčrt umístěný v nabídce Soubor - Příklady - Dallas Teplota - OneWireSearch. Dále spusťte Tools - Port Monitor. Arduino by mělo najít náš senzor, napsat jeho adresu a aktuální hodnoty teploty. Zkopírujeme nebo jednoduše zapíšeme adresu našeho senzoru. Otevřete náčrt Arduino_WG12864B_Term, vyhledejte řádek:
byte addr [8] = {0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97}; // adresa mého senzoru
Napíšeme adresu vašeho senzoru mezi závorky a nahradíme adresu mého senzoru.
Sklad:
//u8g.setPrintPos (44, 64); u8g.print (sek); // Tiskněte sekundy a zkontrolujte správnost kurzu
Zobrazuje sekundy vedle položky „Data“. To je nezbytné pro přesné stanovení průběhu času.
Pokud jsou hodiny ve spěchu nebo zpoždění, měli byste změnit hodnotu v řádku:
if (micros () - prevmicros> 494000) {// změna na jinou pro opravu byla 500000
Experimentálně jsem určoval počet hodin, při kterých hodiny běží docela přesně. Pokud vaše hodinky spěchají, měli byste toto číslo zvýšit, pokud jsem za tím, snižte jej. Chcete-li určit přesnost kurzu a potřebovat závěr sekund. Po přesném kalibrování čísla lze sekundy okomentovat a odstranit z obrazovky.
Vyplňte náčrt.