Obsah:

STONE LCD se Smart Home: 5 kroků
STONE LCD se Smart Home: 5 kroků

Video: STONE LCD se Smart Home: 5 kroků

Video: STONE LCD se Smart Home: 5 kroků
Video: Tipy A Triky Pro Kutily, Které Extrémně Dobře Fungují ▶3 2024, Červenec
Anonim
KAMENNÝ LCD se Smart Home
KAMENNÝ LCD se Smart Home

Dnes jsem dostal displej jednotky STONE se sériovým portem, který může komunikovat přes sériový port MCU, a logický design tohoto displeje UI lze navrhnout přímo pomocí softwaru VGUS, který je k dispozici na oficiálních webových stránkách STONE, což je pro nás velmi výhodné. Plánuji tedy použít k výrobě jednoduchého ovladače spotřebiče, který zahrnuje ovládání různých světel (obývací pokoj, kuchyň, dětský pokoj, koupelna). Současně lze shromažďovat vnitřní i venkovní teplotu, vlhkost a kvalitu vzduchu. Toto je jen jednoduché demo a sekundární vývoj můžete provádět pomocí kódu, který jsem poskytl. Několik základních tutoriálů o obrazovce STONE můžete navštívit na webových stránkách:

Web obsahuje řadu informací o modelu, uživatelské a konstrukční dokumentaci a také videonávody. Nebudu se zde příliš rozepisovat.

Krok 1: Návrh rozhraní uživatelského rozhraní

Návrh rozhraní UI
Návrh rozhraní UI
Návrh rozhraní UI
Návrh rozhraní UI
Návrh rozhraní UI
Návrh rozhraní UI
Návrh rozhraní UI
Návrh rozhraní UI

Photoshop

Ve Photoshopu jsem navrhl následující dvě stránky uživatelského rozhraní:

Tento projekt má celkem výše uvedené dvě stránky. „Světlo“a „Senzor“v pravém horním rohu jsou tlačítka pro přepínání těchto dvou stránek.

Na stránce „Světlo“můžete ovládat všechny druhy světel ve vaší domácnosti. Na stránce „Senzor“můžete zkontrolovat hodnoty detekované různými senzory.

Po návrhu výše uvedených dvou stránek můžeme provést návrh logiky tlačítka prostřednictvím softwaru STONE TOOL, který je k dispozici na oficiálních webových stránkách společnosti STONE.

Stojí za zmínku, že zde použitý zdroj hodin pro zobrazení času je zdroj hodin obrazovky, nikoli zdroj hodin MCU.

Efekt přepínání stránky TAB

V softwaru STONE TOOL nebyla nalezena žádná součást pro přepínání stránek TAB, a tak jsem přemýšlel o jiné metodě, jak dosáhnout efektu přepínání stránek TAB.

Prostřednictvím pozorování, které poskytuji, dva obrázky uživatelského rozhraní lze zjistit, že dva výše uvedené obrázky jsou text „Světlo“a „Senzor“, rozdíl je v tom, že jejich velikost pixelu je odlišná, takže stačí pouze nastavit polohu dvou pixelů na stejný text a poté v levém horním rohu času a data pro referenci můžete dosáhnout efektu přepínání TAB.

Logika tlačítek

Vezměte si jako příklad tlačítko „Obývací pokoj“. Když uživatel stiskne toto tlačítko, obrazovka sériového portu STONE odešle prostřednictvím sériového portu příslušné pokyny k protokolu. Po obdržení této instrukce uživatelská MCU analyzuje protokol pro ovládání spínacího stavu světel spojených s MCU.

Pořízení senzoru

Vezměte si například „kvalitu ovzduší“: pokud chcete získat kvalitu vnitřního vzduchu, musíme mít MCU pro sběr kvality ovzduší, senzor kvality vzduchu, když MCU numericky shromažďuje pomocí algoritmu porovnávajícího klady a zápory kvality ovzduší, a poté MCU odeslané přes sériový port k zobrazení oblasti úložiště „dobrý“nebo „špatný“, ke změně obsahu zobrazení „textová proměnná0“a poté může uživatel intuitivně vidět přednosti kontroly kvality. Ty jsou vysvětleny dále v kódu MCU.

Krok 2: Komunikace MCU

Komunikace MCU
Komunikace MCU
Komunikace MCU
Komunikace MCU
Komunikace MCU
Komunikace MCU
Komunikace MCU
Komunikace MCU

STM32 je MCU, který každý zná, a je to běžný model MCU v mezinárodním měřítku. Proto konkrétní model STM32 MCU, který jsem použil v tomto projektu, je STM32F103RCT6.

Existuje mnoho sérií STM32, které mohou splnit různé požadavky trhu. Jádro lze rozdělit na cortex-m0, M3, M4 a M7 a každé jádro lze rozdělit na hlavní proud, vysoký výkon a nízkou spotřebu energie.

Čistě z pohledu učení si můžete vybrat F1 a F4, F1 představuje základní typ, založený na jádře cortex-m3, hlavní frekvence je 72MHZ, F4 představuje vysoký výkon, založený na jádře cortex-m4, hlavní frekvence je 180M.

Pokud jde o F1, F4 (řada 429 a výše), kromě různých jader a vylepšení hlavní frekvence je zjevnou vlastností upgradu ovladač LCD a rozhraní kamery, podpora SDRAM, tento rozdíl bude mít při výběru projektu přednost. Z pohledu vysokoškolské výuky a počátečního učení uživatelů je však řada F1 stále první volbou. V současné době má STM32 řady F1 největší množství materiálů a produktů na trhu.

O instalaci vývojového prostředí STM32 SCM a způsobu stahování programu nebudu úvod.

Inicializace GPIO

V tomto projektu jsme použili celkem 4 GPIO, z nichž jeden je výstupní pin PWM. Nejprve se podívejme na inicializaci tří běžných portů GPIO:

Tato funkce inicializuje PB0 / PB1 / PB2 na STM32F103C8 jako výstupní pin a volá ji z hlavní funkce. Po inicializaci potřebujeme mít logiku pro ovládání výstupního stavu, vysoké a nízké úrovně tohoto GPIO, proto jsem funkci napsal níže:

Toto je funkce, které můžete intuitivně porozumět podle názvu proměnné.

Inicializace sériového portu

Inicializační část sériového portu je v uart.c:

Potom zavolejte uart_init v hlavní funkci pro inicializaci přenosové rychlosti sériového portu 115200. Piny používají PA9/PA10

Inicializace PWM

Konkrétní kroky:

1. Nastavte hodiny RCC;

2. Nastavte hodiny GPIO; Režim GPIO by měl být nastaven na GPIO_Model_AF_PP, nebo na funkci GPIO_PinRemapConfig (), pokud je vyžadováno přemapování pinů.

3. Nastavte příslušné registry časovače TIMx;

4. Nastavte registr související s PWM časovače TIMx;

A. Nastavte režim PWM

B. Nastavte pracovní cyklus (výpočet vzorce)

C. Nastavte polaritu porovnání výstupu (dříve zavedeno)

D. Nejdůležitější je povolit výstupní stav TIMx a povolit PWM výstup TIMx; Po dokončení příslušných nastavení se časovač TIMx zapne pomocí TIMx_Cmd (), aby se získal výstup PWM. Říkejte tomu TIM3_PWM_Init z hlavní funkce.

Krok 3: Zápis logického kódu

Zápis logického kódu
Zápis logického kódu
Zápis logického kódu
Zápis logického kódu
Zápis logického kódu
Zápis logického kódu

Zobrazit definici adresy součásti

Komponenty displeje mají samostatné adresy a zde jsem je všechny napsal jako definice maker: Sériový příjem dat

Při pohledu na informace o displeji STONE vidíte, že když je tlačítko stisknuto, sériový port na displeji odesílá protokoly v příslušném formátu, které může uživatelský MCU přijímat a analyzovat. Po stisknutí tlačítka odešle sériový port na displej devět bajtů dat, včetně uživatelských. Příjem sériových dat je zapsán do Handleru: Přijatá data jsou uložena v poli "USART_RX_BUF". V tomto projektu je přijímací délka pevná. Pokud je přijímací délka větší než 9 bajtů, je přijímací konec posouzen.

Ovládejte spínací stav lampy

V hlavní funkci jsem napsal nějaký logický kód pro ovládání stavu spínače lampy: Jak vidíme, kód nejprve určuje, zda jsou přijímána data sériového portu, a když jsou přijímána data sériového portu, určuje, které tlačítko uživatel stiskne na displeji. Různá tlačítka na displeji mají různé adresy, což lze vidět v softwaru STONE TOOL: Když uživatel stiskne tlačítko „Living Room“, čtvrtý a pátý bit dat odeslaných sériovým portem obrazovky displeje jsou adresa tlačítka. Protože čtvrtý bit všech zde nastavených tlačítek je 0x00, můžeme posoudit, které tlačítko uživatel stiskne, přímým souděním dat pátého bitu. Po získání tlačítka stisknutého uživatelem musíme posoudit uživatelská data přijatá při stisknutí tlačítka, což je osmá číslice dat odeslaných z obrazovky displeje. Proto provádíme následující ovládací prvek: zapište parametr adresy tlačítka a uživatelská data do funkce „Light_Contral“, abyste mohli ovládat stav zapnutí a vypnutí světla. Entita funkce Light_Contral je následující: Jak vidíte, pokud je adresa tlačítka „Obývací pokoj“a uživatelská data „LightOn“, pak je pin PB0 MCU nastaven na výstup na vysoké úrovni a kontrolka svítí. Další tři tlačítka jsou podobná, ale nebudu zde pokračovat.

PWM výstup

V mnou navrženém uživatelském rozhraní je posuvný regulátor, který slouží k ovládání jasu světla „dětského pokoje“. MCU je implementováno pomocí PWM. Výstupní pin PWM je PB5. Kód je následující: Posuvný nastavovač je nastaven na minimální hodnotu 0x00 a maximální hodnotu 0x64. Při posouvání bude sériový port obrazovky také odesílat relevantní adresy a data a poté nastavit pracovní poměr výstupu PWM voláním následující funkce:

Krok 4: Pořízení snímače

Pořízení snímače
Pořízení snímače
Pořízení snímače
Pořízení snímače
Pořízení snímače
Pořízení snímače

Na stránce „Senzor“na obrazovce displeje jsou čtyři data senzoru.

Data mají na displeji také adresu úložiště a skutečný obsah můžeme změnit prostým zápisem dat na tyto adresy přes sériový port MCU.

Zde jsem provedl jednoduchou implementaci kódu:

Údaje na displeji se aktualizují každých 5 sekund a já jsem napsal pouze jednoduché demo příslušné funkce sběru senzorů, protože tyto senzory nemám v ruce.

Při vývoji skutečného projektu mohou být těmito senzory data shromážděná ADC nebo data shromážděná komunikačními rozhraními IIC, UART a SPI. Vše, co musíte udělat, je zapsat tato data do odpovídající funkce jako návratovou hodnotu.

Krok 5: Efekt skutečné operace

Doporučuje: