Obsah:

KAMEŇ LCD s inteligentným domom: 5 krokov
KAMEŇ LCD s inteligentným domom: 5 krokov

Video: KAMEŇ LCD s inteligentným domom: 5 krokov

Video: KAMEŇ LCD s inteligentným domom: 5 krokov
Video: Блок питания с встроенным аккумулятором и функцией UPS на 5, 9, 12 вольт 2024, Júl
Anonim
KAMEŇ LCD s inteligentnou domácnosťou
KAMEŇ LCD s inteligentnou domácnosťou

Dnes som dostal displej jednotky STONE so sériovým portom, ktorý môže komunikovať prostredníctvom sériového portu MCU, a návrh používateľského rozhrania tohto displeja je možné navrhnúť priamo pomocou softvéru VGUS, ktorý je k dispozícii na oficiálnych webových stránkach spoločnosti STONE, čo je pre nás veľmi výhodné. Plánujem ho teda použiť na výrobu jednoduchého ovládača spotrebiča, ktorý zahŕňa ovládanie rôznych svetiel (obývačka, kuchyňa, detská izba, kúpeľňa). Súčasne je možné zbierať vnútornú a vonkajšiu teplotu, vlhkosť a kvalitu vzduchu. Toto je len jednoduché demo a sekundárny vývoj môžete vykonávať pomocou kódu, ktorý som poskytol. Nejaký základný návod o obrazovke STONE môžete navštíviť webovú stránku:

Na webovej stránke nájdete množstvo informácií o modeli, používateľovi a dokumentácii k návrhu, ako aj videonávody. Nebudem sa tu príliš rozpisovať.

Krok 1: Návrh rozhrania používateľského rozhrania

Návrh rozhrania používateľského rozhrania
Návrh rozhrania používateľského rozhrania
Návrh rozhrania používateľského rozhrania
Návrh rozhrania používateľského rozhrania
Návrh rozhrania používateľského rozhrania
Návrh rozhrania používateľského rozhrania
Návrh rozhrania používateľského rozhrania
Návrh rozhrania používateľského rozhrania

Photoshop

Vo Photoshope som navrhol nasledujúce dve stránky používateľského rozhrania:

Tento projekt má celkovo vyššie uvedené dve stránky. „Svetlo“a „Senzor“v pravom hornom rohu sú prepínacie tlačidlá týchto dvoch stránok.

Na stránke „Svetlo“môžete ovládať všetky druhy svetiel vo vašej domácnosti. Na stránke „Senzor“môžete skontrolovať hodnoty zistené rôznymi senzormi.

Po návrhu dvoch vyššie uvedených stránok môžeme vykonať návrh logiky tlačidiel pomocou softvéru STONE TOOL, ktorý je k dispozícii na oficiálnych webových stránkach spoločnosti STONE.

Stojí za zmienku, že zdroj hodín použitý na zobrazenie času je tu zdrojom hodín obrazovky, nie zdrojom hodín MCU.

Efekt prepínania stránok TAB

V softvéri STONE TOOL nebol nájdený žiadny komponent na prepínanie stránok TAB, a tak som premýšľal o inom spôsobe, ako dosiahnuť efekt prepínania stránok na TAB.

Na základe pozorovania, ktoré poskytujem, je možné nájsť dva obrázky používateľského rozhrania, že dva vyššie uvedené obrázky sú text „Svetlý“a „Senzor“, rozdiel je v tom, že ich veľkosť pixelov je odlišná, takže stačí nastaviť iba polohu dvoch pixelov na rovnaký text a potom v ľavom hornom rohu času a dátumu pre referenciu môžete dosiahnuť účinok prepínania TAB.

Logika tlačidiel

Ako príklad si vezmite tlačidlo „Obývačka“. Keď užívateľ stlačí toto tlačidlo, obrazovka sériového portu STONE odošle zodpovedajúce pokyny k protokolu cez sériový port. Po prijatí tejto inštrukcie MCU užívateľa analyzuje protokol na ovládanie spínacieho stavu svetiel spojených s MCU.

Akvizícia senzora

Zoberme si napríklad „kvalitu ovzdušia“: ak chcete dosiahnuť kvalitu vzduchu v interiéri, musíme mať MCU na zber kvality ovzdušia, snímač kvality vzduchu, keď sa MCU numericky zhromažďuje pomocou algoritmu porovnávajúceho výhody a nevýhody kvality vzduchu, a potom MCU odoslané prostredníctvom sériového portu zobrazuje úložnú oblasť „dobrý“alebo „zlý“, mení obsah zobrazenia „textová premenná0“a potom môže používateľ intuitívne vidieť prednosti kontroly kvality. Tieto sú vysvetlené neskôr v kóde MCU.

Krok 2: Komunikácia MCU

Komunikácia MCU
Komunikácia MCU
Komunikácia MCU
Komunikácia MCU
Komunikácia MCU
Komunikácia MCU
Komunikácia MCU
Komunikácia MCU

STM32 je MCU, ktorý každý pozná, a je to bežný model MCU v medzinárodnom meradle. Preto špecifický model STM32 MCU, ktorý som použil v tomto projekte, je STM32F103RCT6.

Existuje mnoho sérií STM32, ktoré môžu uspokojiť rôzne požiadavky trhu. Jadro je možné rozdeliť na cortex-m0, M3, M4 a M7 a každé jadro je možné rozdeliť na hlavný prúd, vysoký výkon a nízku spotrebu energie.

Čisto z pohľadu učenia si môžete vybrať F1 a F4, F1 predstavuje základný typ na základe jadra cortex-m3, hlavná frekvencia je 72 MHz, F4 predstavuje vysoký výkon, založený na jadre cortex-m4 frekvencia je 180M.

Pokiaľ ide o F1, F4 (séria 429 a vyššie), okrem rôznych jadier a zlepšenia hlavnej frekvencie je zrejmou črtou aktualizácie ovládač LCD a rozhranie fotoaparátu, podpora SDRAM, tento rozdiel bude pri výbere projektu uprednostňovaný. Z pohľadu univerzitného vyučovania a počiatočného vzdelávania používateľov je však séria F1 stále prvou voľbou. V súčasnosti má STM32 radu F1 najväčšie množstvo materiálov a výrobkov na trhu.

O inštalácii vývojového prostredia STM32 SCM a spôsobe sťahovania programu nebudem úvod.

Inicializácia GPIO

V tomto projekte sme použili celkom 4 GPIO, z ktorých jeden je výstupný pin PWM. Najprv sa pozrime na inicializáciu troch bežných portov GPIO:

Táto funkcia inicializuje PB0 / PB1 / PB2 na STM32F103C8 ako výstupný kolík a volá ho z hlavnej funkcie. Po inicializácii musíme mať logiku na ovládanie výstupného stavu, vysokej a nízkej úrovne tohto GPIO, takže som napísal funkciu nasledovne:

Je to funkcia, ktorej môžete intuitívne porozumieť podľa názvu premennej.

Inicializácia sériového portu

Inicializačná časť sériového portu je v uart.c:

Potom zavolajte uart_init v hlavnej funkcii, aby sa inicializovala prenosová rýchlosť sériového portu 115200. Piny používajú PA9/PA10

Inicializácia PWM

Konkrétne kroky:

1. Nastavte hodiny RCC;

2. Nastavte hodiny GPIO; Režim GPIO by mal byť nastavený na GPIO_Model_AF_PP, alebo na funkciu GPIO_PinRemapConfig (), ak je potrebný premap pinov.

3. Nastavte príslušné registre časovača TIMx;

4. Nastavte register súvisiaci s PWM časovača TIMx;

A. Nastavte režim PWM

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

C. Nastavte polaritu porovnania výstupu (predtým zavedené)

D. Najdôležitejšie je povoliť výstupný stav TIMx a povoliť výstup PWM pre TIMx; Po dokončení príslušných nastavení TIMx zapne časovač TIMx pomocou TIMx_Cmd (), aby získal výstup PWM. Hovorte tomu TIM3_PWM_Init z hlavnej funkcie.

Krok 3: Zapisovanie logického kódu

Písanie logických kódov
Písanie logických kódov
Písanie logických kódov
Písanie logických kódov
Písanie logických kódov
Písanie logických kódov

Zobraziť definíciu adresy komponentu

Komponenty displeja majú samostatné adresy a tu som ich všetky napísal ako definície makier: Príjem sériových dát

Pri pohľade na informácie o displeji STONE vidíte, že po stlačení tlačidla sériový port na displeji odosiela protokoly v príslušnom formáte, ktoré môže používateľský MCU prijímať a analyzovať. Po stlačení tlačidla sériový port na displeji odošle deväť bajtov údajov vrátane používateľských údajov. Sériový príjem dát je zapísaný v Handleri: Prijaté dáta sú uložené v poli "USART_RX_BUF". V tomto projekte je prijímacia dĺžka pevná. Keď je prijímacia dĺžka väčšia ako 9 bajtov, posúdi sa prijímací koniec.

Ovládajte spínací stav žiarovky

V hlavnej funkcii som napísal nejaký logický kód na ovládanie stavu spínača žiarovky: Ako vidíme, kód najskôr určuje, či sú prijaté údaje o sériovom porte, a keď sú prijaté údaje o sériovom porte, určuje, ktoré tlačidlo používateľ používa. stlačí na displeji. Rôzne tlačidlá na displeji majú rôzne adresy, ktoré je možné vidieť v softvéri STONE TOOL: Keď používateľ stlačí tlačidlo „Living Room“, štvrtý a piaty bit údajov odoslaných sériovým portom obrazovky displeja sú adresa tlačidla. Pretože štvrtý bit všetkých tu nastavených tlačidiel je 0x00, môžeme posúdiť, ktoré tlačidlo používateľ stlačí, priamym posúdením údajov piateho bitu. Po získaní tlačidla stlačeného používateľom musíme posúdiť používateľské údaje prijaté po stlačení tlačidla, čo je ôsma číslica údajov odoslaných z obrazovky displeja. Preto vykonáme nasledujúci ovládací prvok: zapíšte parameter adresy tlačidla a užívateľské údaje do funkcie „Light_Contral“, aby ste mohli ovládať stav zapnutia a vypnutia svetla. Entita funkcie Light_Contral je nasledovná: Ako vidíte, ak je adresa tlačidla „Living Room“a používateľské údaje sú „LightOn“, potom je pin PB0 na MCU nastavený na výstup na vysokej úrovni a svetlo svieti.. Ostatné tri tlačidlá sú podobné, ale nebudem tu pokračovať.

PWM výstup

V mnou navrhnutom používateľskom rozhraní je posuvný regulátor, ktorý slúži na ovládanie jasu svetla „detskej izby“. MCU je implementovaný pomocou PWM. Výstupný pin PWM je PB5. Kód je nasledujúci: Posuvný nastavovač je nastavený na minimálnu hodnotu 0x00 a maximálnu hodnotu 0x64. Pri posúvaní bude sériový port obrazovky tiež odosielať relevantné adresy a údaje a potom nastaviť pracovný pomer výstupu PWM volaním nasledujúcej funkcie:

Krok 4: Akvizícia senzora

Akvizícia senzora
Akvizícia senzora
Akvizícia senzora
Akvizícia senzora
Akvizícia senzora
Akvizícia senzora

Na stránke „Senzor“displeja sú štyri údaje zo senzorov.

Údaje majú na displeji tiež adresu úložiska a skutočný obsah môžeme zmeniť jednoduchým zapísaním údajov na tieto adresy prostredníctvom sériového portu MCU.

Tu som urobil jednoduchú implementáciu kódu:

Údaje na displeji sa aktualizujú každých 5 sekúnd a ja som napísal iba jednoduché demo príslušnej funkcie zberu senzorov, pretože tieto senzory nemám v ruke.

Pri vývoji skutočného projektu môžu byť tieto senzory údajmi zozbieranými ADC alebo údajmi zozbieranými komunikačnými rozhraniami IIC, UART a SPI. Všetko, čo musíte urobiť, je zapísať tieto údaje do zodpovedajúcej funkcie ako návratovú hodnotu.

Krok 5: Účinok skutočnej prevádzky

Odporúča: