Kazalo:

KAMEN LCD s pametnim domom: 5 korakov
KAMEN LCD s pametnim domom: 5 korakov

Video: KAMEN LCD s pametnim domom: 5 korakov

Video: KAMEN LCD s pametnim domom: 5 korakov
Video: Тест каравана в -25° . Ночёвка зимой. Как не замёрзнуть? 2024, Julij
Anonim
KAMEN LCD s pametnim domom
KAMEN LCD s pametnim domom

Danes sem dobil zaslon diska STONE s serijskimi vrati, ki lahko komunicira prek serijskih vrat MCU, logično zasnovo uporabniškega vmesnika tega zaslona pa lahko oblikujemo neposredno s programsko opremo VGUS, ki je na uradni spletni strani STONE, kar je za nas zelo priročno. Zato ga nameravam uporabiti za izdelavo preprostega krmilnika aparatov, ki vključuje nadzor različnih luči (dnevna soba, kuhinja, otroška soba, kopalnica). Hkrati je mogoče zbrati notranjo in zunanjo temperaturo, vlažnost in kakovost zraka. To je samo preprosta predstavitev in lahko izvedete sekundarni razvoj s kodo, ki sem jo dal. Nekaj osnovnih vadnic o zaslonu STONE lahko obiščete na spletnem mestu:

Spletno mesto vsebuje različne informacije o modelu, uporabniški in oblikovalni dokumentaciji ter video vaje. Tu se ne bom preveč spuščal v podrobnosti.

Korak: Oblikovanje vmesnika uporabniškega vmesnika

Oblikovanje vmesnika uporabniškega vmesnika
Oblikovanje vmesnika uporabniškega vmesnika
Oblikovanje vmesnika uporabniškega vmesnika
Oblikovanje vmesnika uporabniškega vmesnika
Oblikovanje vmesnika uporabniškega vmesnika
Oblikovanje vmesnika uporabniškega vmesnika
Oblikovanje vmesnika uporabniškega vmesnika
Oblikovanje vmesnika uporabniškega vmesnika

Photoshop

Z Photoshopom sem oblikoval naslednje dve strani uporabniškega vmesnika:

Ta projekt ima skupaj zgornji dve strani. "Svetloba" in "Senzor" v zgornjem desnem kotu sta stikalna gumba teh dveh strani.

Na strani "Light" lahko upravljate vse vrste luči v vašem domu. Na strani "Senzor" lahko preverite vrednosti, ki jih zaznajo različni senzorji.

Po oblikovanju zgornjih dveh strani lahko izvedemo logično zasnovo gumbov s programsko opremo STONE TOOL, ki je na uradni spletni strani STONE.

Omeniti velja, da je vir ure, ki se uporablja za prikaz časa tukaj, ura ure zaslona, ne vir ure MCU.

Učinek preklopa strani TAB

V programski opremi STONE TOOL ni bila najdena nobena komponenta za preklapljanje strani TAB, zato sem pomislil na drugo metodo za dosego učinka preklopa strani TAB.

Z opazovanjem, ki sem ga posredoval, je mogoče ugotoviti dve sliki uporabniškega vmesnika, da sta zgornji sliki besedilo "Light" in "Sensor", razlika je v tem, da je njihova velikost slikovnih pik drugačna, zato moramo le položaj dveh slikovnih pik nastaviti na isto besedilo, nato pa v zgornjem levem kotu ure in datuma za sklicevanje lahko dosežete TAB, da preklopite učinek.

Logika tipk

Za primer vzemite gumb "Dnevna soba". Ko uporabnik pritisne ta gumb, bo zaslon za prikaz serijskih vrat STONE poslal ustrezna protokolarna navodila skozi serijska vrata. Po prejemu tega navodila bo uporabniški MCU razčlenil protokol za nadzor stanja vklopa luči, povezanih z MCU.

Nakup senzorja

Vzemite na primer "kakovost zraka": če želite doseči kakovost zraka v zaprtih prostorih, moramo imeti MCU za zbiranje kakovosti zraka, senzor kakovosti zraka, ko se MCU numerično zbere po algoritmu, ki primerja prednosti in slabosti kakovosti zraka, nato pa MCU, poslan prek serijskih vrat za prikaz prostora za shranjevanje "Dobro" ali "Slabo", za spremembo prikazane vsebine "Besedilna spremenljivka0", nato pa lahko uporabnik intuitivno vidi prednosti kontrole kakovosti. Te so kasneje pojasnjene v kodi MCU.

2. korak: Komunikacija MCU

Komunikacija MCU
Komunikacija MCU
Komunikacija MCU
Komunikacija MCU
Komunikacija MCU
Komunikacija MCU
Komunikacija MCU
Komunikacija MCU

STM32 je MCU, ki ga vsi poznajo, in je pogost model MCU v mednarodnem prostoru. Zato je poseben model STM32 MCU, ki sem ga uporabil v tem projektu, STM32F103RCT6.

Obstaja veliko serij STM32, ki lahko zadovoljijo različne zahteve trga. Jedro lahko razdelimo na cortex-m0, M3, M4 in M7, vsako jedro pa lahko razdelimo na mainstream, visoko zmogljivost in nizko porabo energije.

Čisto z vidika učenja lahko izberete F1 in F4, F1 predstavlja osnovni tip, ki temelji na jedru cortex-m3, glavna frekvenca je 72MHZ, F4 predstavlja visoko zmogljivost, ki temelji na jedru cortex-m4, glavni frekvenca 180M.

Kar zadeva F1, F4 (serija 429 in novejše), je poleg različnih jeder in izboljšanja glavne frekvence očitna lastnost nadgradnje LCD krmilnik in vmesnik kamere, podpora za SDRAM, bo ta razlika pri izbiri projekta prednostna. Z vidika univerzitetnega poučevanja in začetnega učenja uporabnikov je serija F1 še vedno prva izbira. Trenutno ima STM32 serije F1 največjo količino materialov in izdelkov na trgu.

O namestitvi razvojnega okolja STM32 in načinu prenosa programa ne bom govoril.

Inicializacija GPIO

V tem projektu smo uporabili skupaj 4 GPIO, od katerih je eden izhodni pin PWM. Poglejmo najprej inicializacijo treh navadnih vrat GPIO:

Ta funkcija inicializira PB0 / PB1 / PB2 STM32F103C8 kot izhodni pin in ga pokliče iz glavne funkcije. Po inicializaciji moramo imeti logiko za nadzor izhodnega stanja, visoko in nizko raven tega GPIO, zato sem funkcijo zapisal takole spodaj:

To je funkcija, ki jo lahko intuitivno razumete z imenom spremenljivke.

Inicializacija zaporednih vrat

Inicializacijski del serijskih vrat je v uart.c:

Nato pokličite uart_init v glavni funkciji, da inicializirate hitrost prenosa serijskih vrat 115200. Zatiči uporabljajo PA9/PA10

Inicializacija PWM

Posebni koraki:

1. Nastavite uro RCC;

2. Nastavite uro GPIO; Način GPIO je treba nastaviti na GPIO_Model_AF_PP ali na funkcijo GPIO_PinRemapConfig (), če je potrebno preoblikovanje pin.

3. Nastavite ustrezne registre časovnika TIMx;

4. Nastavite register časovnika TIMx, povezan s PWM;

A. Nastavite način PWM

B. Nastavite obratovalni cikel (izračun formule)

C. Nastavite polariteto primerjave izhoda (prej predstavljeno)

D. Najpomembneje je, da omogočite izhodno stanje TIMx in omogočite izhod PWM TIMx; Ko so ustrezne nastavitve dokončane, časovnik TIMx vklopi TIMx_Cmd (), da pridobi izhod PWM. To pokličite TIM3_PWM_Init iz glavne funkcije.

3. korak: Pisanje logične kode

Pisanje logične kode
Pisanje logične kode
Pisanje logične kode
Pisanje logične kode
Pisanje logične kode
Pisanje logične kode

Prikažite definicijo naslova komponente

Komponente zaslona imajo ločene naslove in tukaj sem jih vse zapisal kot makro definicije: Sprejem serijskih podatkov

Če pogledate informacije o zaslonu KAMEN, lahko vidite, da ob pritisku gumba serijska vrata na zaslonu pošiljajo protokole v ustrezni obliki, ki jih lahko uporabniški MCU sprejme in razčleni. Ko pritisnete gumb, serijska vrata na zaslonu pošljejo devet bajtov podatkov, vključno z uporabniškimi. Sprejem serijskih podatkov je zapisan v Handlerju: prejeti podatki so shranjeni v matriki "USART_RX_BUF". V tem projektu je dolžina prejema fiksna. Ko je dolžina prejema več kot 9 bajtov, se oceni prejemnik.

Nadzirajte stanje vklopa svetilke

V glavni funkciji sem napisal nekaj logične kode za nadzor stikalnega stanja svetilke: Kot lahko vidimo, koda najprej ugotovi, ali so podatki o serijskih vratih sprejeti, in ko bodo podatki o serijskih vratih sprejeti, določi, kateri gumb uporabnik pritisne na zaslon. Različni gumbi na zaslonu imajo različne naslove, kar je mogoče videti v programski opremi STONE TOOL: Ko uporabnik pritisne gumb "Dnevna soba", sta četrti in peti bit podatkov, ki jih pošljeta serijska vrata zaslona, naslov gumba. Ker je četrti bit vseh gumbov, nastavljenih tukaj, 0x00, lahko presodimo, kateri gumb uporabnik pritisne, tako da neposredno presodimo podatke petega bita. Po pridobitvi gumba, ki ga pritisne uporabnik, moramo presoditi uporabniške podatke, prejete ob pritisku gumba, kar je osma številka podatkov, poslanih z zaslona. Zato naredimo naslednji nadzor: v funkcijo "Light_Contral" vnesite parameter naslova gumba in uporabniške podatke za nadzor stanja vklopa in izklopa svetlobe. Entiteta funkcije Light_Contral je naslednja: Kot lahko vidite, če je naslov gumba "Dnevna soba" in uporabniški podatki "LightOn", je pin PB0 MCU nastavljen na izhod na visoki ravni in lučka sveti. Ostali trije gumbi so si podobni, vendar ne bom nadaljeval.

PWM izhod

V uporabniškem vmesniku, ki sem ga oblikoval, je drsni regulator, ki se uporablja za nadzor svetlosti svetlobe "otroške sobe". MCU izvaja PWM. PWM izhodni pin je PB5. Koda je naslednja: drsni regulator je nastavljen na minimalno vrednost 0x00 in največjo vrednost 0x64. Ko drsite, bodo serijska vrata zaslona poslala tudi ustrezne naslove in podatke, nato pa s klicem na naslednjo funkcijo nastavila razmerje obremenitve izhoda PWM:

4. korak: Pridobitev senzorja

Nakup senzorja
Nakup senzorja
Nakup senzorja
Nakup senzorja
Nakup senzorja
Nakup senzorja

Na strani "Senzor" na zaslonu so štirje podatki senzorja.

Podatki imajo na zaslonu tudi naslov za shranjevanje, dejansko vsebino pa lahko spremenimo s preprostim zapisom podatkov na te naslove skozi serijska vrata MCU.

Tu sem naredil preprosto izvedbo kode:

Podatki na zaslonu se posodabljajo vsakih 5 sekund in napisal sem le preprost demo ustrezne funkcije zbiranja senzorjev, ker teh senzorjev nimam v roki.

V resničnem razvoju projekta so ti senzorji lahko podatki, ki jih zbere ADC, ali podatki, ki jih zberejo komunikacijski vmesniki IIC, UART in SPI. Vse kar morate storiti je, da te podatke vnesete v ustrezno funkcijo kot vrnjeno vrednost.

5. korak: Dejanski učinek delovanja

Priporočena: