Obsah:

Malé hodiny s LED maticovým displejem: 8 kroků
Malé hodiny s LED maticovým displejem: 8 kroků

Video: Malé hodiny s LED maticovým displejem: 8 kroků

Video: Malé hodiny s LED maticovým displejem: 8 kroků
Video: OpenAlt 2018: Petr Stehlík - WiFi informační LEDový systém 2024, Prosinec
Anonim
Image
Image
Malé hodiny s LED maticovým displejem
Malé hodiny s LED maticovým displejem
Malé hodiny s LED maticovým displejem
Malé hodiny s LED maticovým displejem
Malé hodiny s LED maticovým displejem
Malé hodiny s LED maticovým displejem

Vždycky jsem chtěl mít staromódní stolní hodiny, které vypadají jako z filmů 90. let, s docela pokornou funkcí: hodiny v reálném čase, datum, změna pozadí, pípnutí a možnost alarmu. Takže jsem přišel s nápadem postavit jeden: Digitální zařízení založené na mikrokontroléru se všemi funkcemi, které jsem zmínil výše, a napájené z USB - buď z počítače, nebo z jakékoli mobilní USB nabíječky. Protože jsem chtěl, aby to bylo programovatelné, s nabídkami a nastavením nastavení, umístění MCU bylo v tomto projektu nevyhnutelné. ATMEGA328P IC (ze kterého se skládá každá deska Arduino Uno) byl vybrán jako „mozek“obvodu (když už o tom mluvím, měl jsem jich prostě spoustu). Kombinace některých elektronických součástek jako RGB LED, čipu s měřením dobíjení a tlačítek, umožnila zrod celého projektu-programovatelné stolní hodiny s malým LED displejem.

Poté, co jsme pokryli entitu projektu, pojďme ho postavit

Krok 1: Idea

Idea
Idea

Jak již bylo zmíněno dříve, naše zařízení obsahuje několik dobře vypadajících maticových displejů LED, podsvícení RGB LED s měnící se barvou, čip pro měření času při dobíjení, praktický napájecí zdroj USB a malé pouzdro.

Pojďme si popsat blokové schéma provozu zařízení po částech:

1. Jednotka napájecího zdroje:

Vzhledem k tomu, že zařízení pracuje na 5 V stejnosměrném proudu, součást napájecího zdroje se skládá ze dvou samostatných obvodů:

  • Micro -USB vstup - pro přímou nabíječku / napájení PC.
  • Obvod 5V lineárního regulátoru napětí na bázi IC LM7805.

Obvod LM7805 IC je volitelný, pokud nechcete implementovat jinou dostupnost vstupu napájecího zdroje. V našem zařízení se používá napájecí zdroj Micro-USB.

2. Mikrokontrolér:

Mikrokontrolér ATMEGA328P, funguje jako „mozek“celého zařízení. Jeho účelem je komunikovat se všemi periferními obvody, poskytovat potřebná data a uživatelské rozhraní ovládacího zařízení. Protože zvolený mikrokontrolér je ATMEGA328P, budeme potřebovat Atmel Studio a základní znalosti jazyka C (Schémata a programovací sekvence jsou popsány v dalších krocích).

3. Obvod hodin reálného času:

Druhý nejdůležitější obvod v zařízení. Jeho účelem je poskytnout data a času s požadavkem na jejich uložení bez závislosti na připojení vstupního napájení, tj. Časová data se obnovují v režimu v reálném čase. Aby komponenta RTC mohla i nadále měnit data čas / datum, je do obvodu přidána 3V knoflíková baterie. IC je DS1302, jeho provoz je popsán v dalších krocích.

4. Vstupní rozhraní - tlačítkové spínače:

Vstupní přepínače PB poskytují uživateli vstupní rozhraní. Tyto přepínače jsou zpracovávány v programu definovaném MCU a ovládacím zařízením.

5. LED maticový displej

Displej zařízení se skládá ze dvou IC alfanumerických LED matic zabalených do HCMS-2902, každý IC má 4 znaky 5x7 malé LED matice. Tyto displeje se snadno používají, podporují 3vodičovou komunikaci a jsou malé-vše, co v tomto projektu potřebujeme.

6. RGB podsvícení:

Podsvícení měnící barvu je založeno na externí RGB LED, ovládané signály PWM přicházejícími z MCU. V tomto projektu má RGB LED celkem 4 piny: R, G, B a běžné, kde je paleta barev R, G, B ovládána pomocí PWM pomocí MCU.

7. Bzučák:

Obvod bzučáku se používá jako zvukový výstup, hlavně pro poplachové účely. Přepínač BJT slouží k zajištění dostatečného proudu pro komponentu bzučáku, takže jeho hlasitost bude dostatečně hlasitá, aby probudila živého člověka.

Krok 2: Díly a nástroje

Díly a nástroje
Díly a nástroje

I. Elektronika:

A. Integrované a aktivní součásti:

  • 1 x ATMEGA328P - MCU
  • 2 x HCMS2902 - AVAGO displeje
  • 1 x DS1302 - RTC
  • 1 x 2N2222A - BJT (NPN)

B. Pasivní součásti:

  • Rezistory:

    • 5 x 10 tis
    • 1 x 180R
    • 2 x 100R
  • Kondenzátory:

    • 3 x 0,1 uF
    • 1 x 0,47 uF
    • 1 x 100 uF
    • 2 x 22 pF
  • 1 x 4pinový RGB LED
  • 1 x bzučák
  • 1 x 32,768KHz krystal

C. Konektory:

  • 1 x konektor Micro-USB
  • 2 x 6pinový konektor se standardní roztečí (100 mil)
  • 2 x 4pinový konektor se standardní roztečí (100 mil)
  • 1 x pouzdro na knoflíkové baterie.

D. Různé:

  • 3 x SPST tlačítkové přepínače
  • 1 x 3V knoflíková baterie.

E. Volitelný napájecí zdroj:

  • 1 x LM7805 - lineární regulátor
  • 2 x 0,1uF Cap
  • 2 x 100uF Cap

II. Mechanické:

  • 1 x plastová skříň
  • 4 x gumové nástavce
  • 1 x prototypová pájecí deska
  • 1 x záhlaví MCU (v případě selhání mikrokontroléru)
  • 2 x malé šrouby 8 mm
  • Podložky 2 x 8 mm

III. Nástroje a materiály:

  • Pájecí dráty
  • Smršťovací bužírky
  • Pájecí cín
  • Páječka
  • Řezačka
  • Kleště
  • Pinzeta
  • Vrtáky
  • Soubor malé velikosti
  • Různé šroubováky
  • Posuvné měřítko
  • Multimetr
  • Breadboard (volitelně)
  • Micro USB kabel
  • Středně velký soubor
  • Pistole na horké lepidlo
  • Programátor AVR ISP

IV. Programování:

  • Atmel Studio 6.3 nebo 7.0.
  • ProgISP nebo AVRDude
  • Microsoft Excel (pro vytváření zobrazovaných znaků)

Krok 3: Popis schématu

Popis schémat
Popis schémat

Aby bylo snazší porozumět fungování obvodu, je schematický krok rozdělen do sedmi podskupin. Měli byste si všimnout, že názvy sítí jsou definovány na stránce schématu a také definují spojení mezi jednotlivými dílčími obvody zařízení.

A. Hlavní deska součástí:

Jak již bylo zmíněno dříve, všechny příslušné subobvody, ve kterých chceme být „uvnitř“zařízení, jsou umístěny na jediné řezané prototypové desce. Přejdeme k vysvětlení činnosti obvodů umístěných na hlavní desce:

1. Obvod mikrokontroléru:

MCU, který je použit v tomto projektu, je ATMEGA328P. Je napájen externím 5V napájecím zdrojem, v tomto případě konektorem micro USB. Všechny příslušné I/O piny jsou připojeny podle konstrukčních požadavků. Mapování I/O portů je snadno pochopitelné, protože všechna síťová jména jsou definována přesně tak, jak budou použita v kroku programování. MCU má jednoduchý RC resetovací obvod, který se používá buď při programování sekvence a inicializaci napájení.

Klíčovou součástí MCU jsou programovací obvody. K dispozici je 6pinový programovací konektor - J5, ujistěte se, že sítě VCC, GND a RESET jsou společné pro externí programátor ISP a desku hlavních komponent.

2. Hodinový obvod v reálném čase:

Další obvod je hlavní periferní částí projektu. DS1302 je integrovaný měřicí časomer IC, který poskytuje zpracované hodnoty času a data naší zpracovatelské jednotce. DS1302 komunikuje s MCU prostřednictvím 3vodičového rozhraní, podobně jako 3vodičová komunikace SPI, na následujících řádcích:

  • RTC_SCK (výstup): Provádí řízení a vzorkování dat přenášených na SDO lince.
  • RTC_SDO (I/O): Datová řídící linka. Působí jako vstup do MCU při přijímání dat času/data a jako výstup při přenosu dat (další vysvětlení viz krok Programming Essentials).
  • RTC_CE: (Výstup): Linka umožňující přenos dat. Když je MCU nastaveno na VYSOKÉ, data jsou připravena k přenosu/přijímání.

DS1302 vyžaduje externí 32,768 kHz krystalový oscilátor pro adekvátní chování obvodu. Aby se zabránilo velkému driftu v systému počítání obvodů (u těchto typů integrovaných obvodů je fenomén driftu nevyhnutelný), je třeba na každý krystalový pin umístit dva kalibrační kondenzátory (viz části X1, C8 a C9 ve schématech). 22 pF byla optimální hodnota po mnoha experimentech s měřením času v tomto projektu, takže když se chystáte obvod pájet úplně, ujistěte se, že existuje možnost nahradit tyto kondenzátory kondenzátory jinými hodnotami. Ale 22pF pro malou desku fungovalo docela dobře pro velmi malý drift (7 sekund za měsíc).

Poslední, ale v neposlední řadě součást tohoto obvodu-3V knoflíková baterie by měla být umístěna na desce, aby bylo dodáno dostatek energie do DS1302 IC, aby mohla pokračovat ve svém počítání času.

4. 8 znaků LED matice:

Zobrazení zařízení je založeno na 2 x 4 znakových integrovaných obvodech LED LED, naprogramovaných prostřednictvím 3vodičového rozhraní, podobném obvodu DS1302 obvodu RTC, s jediným rozdílem, že linka poskytující data (SDI) je definována jako výstup MCU (pokud nechcete přidat možnost kontroly stavu vašeho obvodu displeje). Displeje jsou kombinovány v sérii 3-Wire rozšíření, takže oba integrované obvody fungují jako jediné zobrazovací zařízení, kde je možnost naprogramovat ho pro definici všech znaků zobrazení (viz kombinace řady SPI). Všechna síťová jména obvodu odpovídají odpovídajícímu připojení MCU - všimněte si, že existují běžné sítě, které navazují komunikaci mezi displeji, a není třeba připojovat obě komunikační rozhraní displeje k MCU. Programování a posloupnost vytváření znaků jsou definovány v dalších krocích. Obvod uživatelského rozhraní:

Uživatelské rozhraní je rozděleno do dvou podskupin-Vstupní a výstupní systémy: Vstupní systém: Samotné zařízení má uživatelem dodávaný vstup definovaný jako tři tlačítkové spínače SPST s dalšími výsuvnými odpory, aby bylo možné řídit definovanou logiku HIGH nebo LOW MCU. Tyto přepínače poskytují řídicí systém pro celý naprogramovaný algoritmus, protože je třeba upravit hodnoty času/data, ovládání nabídky atd.

6. Výstupní systém:

A. Obvod bzučáku poskytuje zvukový výstup v obou stavech, přepínání nabídek potvrzuje zvuk a algoritmus alarmu. NPN tranzistor se používá jako přepínač, který poskytuje dostatek proudu bzučáku, takže zvuk zní ve vhodné intenzitě. Buzzer je řízen přímo softwarem MCU. B. RGB LED se používá jako podsvícení zařízení. Je ovládán přímo MCU, se čtyřmi možnostmi volby podsvícení: ČERVENÝ, ZELENÝ, MODRÝ, PWM nebo VYPNUTÝ režim. Všimněte si, že odpory, které jsou zapojeny do série k pinům LED R, G a B, mají různé hodnoty, protože každá barva má jinou intenzitu než konstantní proud. Pro zelené a modré LED diody existují stejné charakteristiky, když červená má o něco větší intenzitu. Červená LED je tedy připojena k vyšší hodnotě odporu - v tomto případě: 180 Ohmů (viz vysvětlení RGB LED). Konektory:

Konektory jsou umístěny na základní desce, aby umožňovaly komunikaci mezi komponentami externího rozhraní, jako jsou: displej, RGB LED, napájecí vstup a tlačítkové spínače a hlavní deska. Každý konektor je určen pro jiný obvod, takže složitost montáže zařízení dramaticky klesá. Jak vidíte na schématech, každá objednávka sítí konektorů je volitelná a lze ji vyměnit, pokud je proces zapojení mnohem jednodušší. Poté, co jsme pokryli všechny koncepty schémat, přejdeme k dalšímu kroku.

Krok 4: Pájení

Pájení
Pájení
Pájení
Pájení
Pájení
Pájení

Pro některé z nás je to pravděpodobně nejtěžší krok v celém projektu. Aby bylo mnohem snazší zprovoznit zařízení co nejdříve, měl by být proces pájení dokončen v následujícím pořadí:

1. MCU a programovací konektor: doporučuje se pájet 28pinový konektor místo samotného MCU, aby bylo možné v případě poruchy nahradit IC MCU. Zajistěte, aby bylo možné zařízení naprogramovat a zapnout. Na programovací konektor doporučujeme umístit nálepku s popisem kolíku (viz třetí obrázek).

2. Obvod RTC: po pájení všech potřebných částí se ujistěte, že kalibrační kondenzátory lze snadno vyměnit. Pokud chcete použít 3V knoflíkovou baterii - ujistěte se, že odpovídá rozměrům krytu zařízení.

3. Displej: Na samostatnou desku malé velikosti by měly být připájeny dva integrované obvody displeje (obr. 1). Po pájení všech potřebných sítí je třeba připravit off-board dráty (obr. 4): tyto dráty by měly být připájeny a vedeny po straně zobrazovací desky, všimněte si, že napětí a mechanické napětí působící na vodiče by nemělo ovlivnit pájecí spoje na desce displeje.

4. Na vodiče z předchozího kroku by měly být umístěny samolepky štítků - to by v dalším kroku značně usnadnilo proces montáže. Volitelný krok: ke každému vodiči přidejte konektor s jedním kolíkem (styl Arduino).

5. Pájejte zbývající konektory na základní desce, včetně periferních komponent. Pro každý konektor je opět doporučeno umístit nálepky s popisem kolíku.

6. Obvod bzučáku: bzučák je umístěn uvnitř zařízení, takže by měl být připájen na hlavní desku, není třeba propojovací konektor.

7. RGB LED: Abych ušetřil místo na základní desce, připájel jsem sériové odpory na piny LED, kde každý odpor odpovídá vlastní přizpůsobené barvě a příslušnému kolíku MCU (obr. 5).

Krok 5: Sestavení

Sestavování
Sestavování
Sestavování
Sestavování
Sestavování
Sestavování

Tento krok definuje vzhled projektu - elektrický a mechanický. Pokud byly vzaty v úvahu všechny doporučené poznámky, proces montáže se velmi snadno provádí. Následující sekvence krok za krokem poskytuje úplné informace o procesu:

Část A: Příloha

1. Vyvrtejte tři otvory podle průměru knoflíku tlačítka (v tomto případě 3 mm). Vyvrtejte jeden otvor vyhrazený pro bzučák na straně krytu. Lze použít jakýkoli požadovaný průměr vrtáku. Vyvrtejte malý otvor jako základ pro broušení podle konektoru USB, který byste měli použít (v tomto případě Micro USB). Poté proveďte broušení pomocí souboru malé velikosti, aby odpovídaly rozměrům konektoru. Vyvrtejte relativně velký otvor jako základ pro broušení. Proveďte broušení pilníkem střední velikosti podle rozměrů displeje. Zajistěte, aby na vnější straně skříně byly integrované obvody displeje. Vyvrtejte do spodní části zařízení středně velký otvor podle průměru RGB LED. Část B - Přílohy:

1. Připájejte dva vodiče ke každému ze tří tlačítek (GND a signál). Doporučujeme nálepky se štítky a konektory s jedním kolíkem na vodičích. Připojte čtyři připravené vodiče k pinům RGB LED. Na pájecí spoje umístěte samolepky se štítky a smršťovací bužírky. Na spodní část zařízení připevněte čtyři gumové nožičky. Část C - Spojování dílů:

1. Umístěte RGB LED na spodní část skříně a připojte ji k vyhrazenému konektoru na hlavní desce. Připevněte ho horkým lepidlem. Umístěte tři tlačítkové spínače, připojte je k vyhrazenému konektoru na základní desce a připevněte horkým lepidlem. Umístěte konektor USB a připojte jej k napájecím kolíkům programovacího konektoru (VCC a GND). Ujistěte se, že polarita napájecích vedení odpovídá pájeným částem. 4. Připevněte horkým lepidlem. Umístěte desku displeje a připojte ji k vyhrazenému konektoru. Připevněte ho horkým lepidlem. Poznámky:

1. Doporučuje se přidat dvojice šroubů a matic do skříně hlavní desky a horního krytu (Jak je znázorněno v tomto případě). Aby se předešlo selhání přerušených vodičů, připojte je tak, aby byl vzat v úvahu jejich vzhled uvnitř skříně.

Krok 6: Stručné programování Úvod

Stručný úvod do programování
Stručný úvod do programování
Stručný úvod do programování
Stručný úvod do programování
Stručný úvod do programování
Stručný úvod do programování

Poté, co jsou všechny součásti pájeny, je doporučeno provést počáteční testování zařízení, než přejdete ke konečnému montážnímu kroku. Kód MCU je napsán v jazyce C a ATMEGA328P je naprogramován prostřednictvím jakéhokoli programátoru ISP (Existují různé typy programovacích zařízení Atmel: AVR MKII, AVR DRAGON atd. - Použil jsem levný USB ISP programátor z eBay, který je řízen softwarem ProgISP nebo AVRDude). Programovací prostředí musí být Atmel Studio 4 a vyšší (důrazně doporučuji nejnovější verze softwaru). Pokud je použit externí, jiný než Atmel Studio inherentní programátor, je potřeba zadat cestu k souboru.hex k programovacímu softwaru (obvykle se nachází ve složce Debug nebo Release projektu). Ujistěte se, že než přejdete ke kroku montáže, zařízení lze naprogramovat a jakýkoli základní proces vytváření a kompilace vyhrazeného projektu AVR je založen na mikrokontroléru ATMEGA328P (viz výukový program Atmel Studio).

Krok 7: Popis kódu

Popis kódu
Popis kódu
Popis kódu
Popis kódu

Algoritmus decice kódu je vrstvený do dvou polovičních oddělených vrstev: 1. Základní vrstva: Komunikace s periferními obvody, definice operací zařízení, inicializace a deklarace komponent. Vrstva rozhraní: Interakce uživatele a zařízení, funkce menu, nastavení hodin/bzučáku/barvy/alarmu. Sekvence programu je popsána na obrázku. 1, kde každý blok odpovídá stavu MCU. Popsaný program funguje jako základní „operační systém“, který poskytuje rozhraní mezi hardwarem a vnějším světem. Následující vysvětlení popisuje základní činnost programu podle částí: Část A: Základní vrstva:

1. Inicializace I/O MCU: Nejprve je třeba inicializovat hardwarové komponenty:- Konstanty použité v kódu.- Porty I/O- Rozhraní.- Deklarace periferní komunikace.

2. Základní obecné funkce: Některé funkce jsou používány samostatnými bloky kódu, definují operace na pinech, které jsou řízeny softwarem:- Povolit/Zakázat komunikaci RTC a komunikaci na desce.- Zapnutí/vypnutí generování zvuku bzučáku.- 3vodičové hodiny funkce nahoru/dolů- Zobrazení funkcí vytváření znaků. Inicializace periferie: Po konfiguraci I/O portů probíhá definice funkcí mezi obvody. Po dokončení - MCU zahájí inicializaci obvodů RTC a zobrazení pomocí funkcí, které byly definovány výše.

4. Definice základních funkcí: V této fázi je zařízení nastaveno a připraveno provádět komunikaci s některými periferními obvody. Tyto funkce definují:- Přepínání přepínače- Provoz RGB LED (zejména PWM)- Bzučákový generátor čtvercových vln

5. Funkce zobrazení: Na internetu jsem nenašel mnoho o integrovaných obvodech HSMS, které jsem použil, a proto jsem jeho knihovnu napsal sám. Funkce zobrazení poskytují úplnou funkčnost zobrazení znaků, včetně zobrazení znaků ASCII a jakýchkoli celých čísel. Funkce jsou psány generalizovaným způsobem, takže pokud je potřeba vyvolat zobrazovací funkce z jakékoli části kódu, je snadné je používat, protože jsou generalizovány operací (například: zobrazení řetězců, zobrazení jednoho znaku atd.).

6. Provozní funkce RTC: Všechny funkce RTC jsou zapsány generalizovaným způsobem (podobně jako sada funkcí zobrazení) podle činnosti DS1302 IC. Kód je založen na písemné knihovně, která je na gitHubu k dispozici v mnoha variantách. Jak uvidíte v konečném kódu, funkce zobrazení a RTC jsou zahrnuty v samostatných souborech.c a.h. Část B - Vrstva rozhraní:

1. Hlavní funkce: v sekci neplatné main () je deklarace všech základních inicializačních funkcí. Hned po inicializaci všech komponent MCU vstupuje do nekonečné smyčky, kde je funkce zařízení ovládána uživatelem.

2. Přepínače v reálném čase, podsvícení a ovládání displeje: Při běhu v nekonečné smyčce MCU provádí aktualizaci na každé části zařízení. Vybírá, jaká data se mají zobrazit, které tlačítko bylo stisknuto a jaký režim podsvícení byl zvolen.

3. Funkce uživatelského menu: Tyto funkce mají stromový tvar (viz obr. X), kde je systém nabídek a hierarchie definována jako stavový stroj. Každý stavový stroj ovládaný uživatelským vstupem - tlačítkem se přepne, tedy když bylo stisknuto příslušné tlačítko - stavový automat změní svou hodnotu. Je navržen tak, aby všechny změny v zařízení provedené v nabídce byly okamžitě změněny.

4. Přepínání uživatelských nabídek: pokud je zadán uživatelský vstup, stav nabídky musí změnit svůj stav. Tyto funkce tedy poskytují uživateli kontrolu nad stavovým strojem. V tomto konkrétním případě: další, předchozí a OK.

Krok 8: Konečný kód a užitečné soubory

A to je vše! V tomto kroku můžete najít všechny soubory, které budete potřebovat:- Elektrická schémata- Kompletní zdrojový kód- Zobrazit Tvůrce znaků Volitelná funkce: K dispozici je celá řada znaků, které je možné zobrazit v knihovně integrovaných obvodů displeje, ale některé nejsou zahrnuty.. Chcete -li postavit znaky sami, přidejte stav případu s referencí ASCII do funkce Print_Character ('') (viz funkce display.c). Doufám, že vám tento Instructable bude užitečný:) Děkujeme za přečtení!

Doporučuje: