Sisukord:

STONE LCD nutika koduga: 5 sammu
STONE LCD nutika koduga: 5 sammu

Video: STONE LCD nutika koduga: 5 sammu

Video: STONE LCD nutika koduga: 5 sammu
Video: Sloggi Мужское базовое танга | Остинс Онлайн 2024, November
Anonim
STONE LCD nutika koduga
STONE LCD nutika koduga

Täna sain STONE jadapordi draivi ekraani, mis suudab suhelda MCU jadapordi kaudu, ja selle ekraani kasutajaliidese loogilist disaini saab kujundada otse, kasutades STONE ametlikul veebisaidil olevat tarkvara VGUS, mis on meie jaoks väga mugav. Seega plaanin sellest valmistada lihtsa seadme kontrolleri, mis sisaldab erinevate tulede juhtimist (elutuba, köök, lastetuba, vannituba). Samal ajal saab koguda sise- ja välistemperatuuri, niiskust ja õhukvaliteeti. See on lihtsalt lihtne demo ja te saate teisese arenduse läbi viia minu esitatud koodi kaudu. Mõned põhilised õpetused STONE ekraani kohta võivad minna veebisaidile:

Veebisaidil on mitmesugust teavet mudeli, kasutaja ja disaini dokumentatsiooni kohta, samuti videoõpetusi. Ma ei hakka siin liiga detailidesse laskuma.

Samm: kasutajaliidese liidese kujundamine

UI liidese disain
UI liidese disain
UI liidese disain
UI liidese disain
UI liidese disain
UI liidese disain
UI liidese disain
UI liidese disain

Photoshop

Kujundasin Photoshopiga järgmised kaks kasutajaliidese lehte:

Sellel projektil on kokku kaks ülaltoodud lehte. "Valgus" ja "Andur" paremas ülanurgas on nende kahe lehe lülitusnupud.

Lehel "Valgus" saate oma kodus juhtida igasuguseid tulesid. Lehel "Andur" saate kontrollida erinevate andurite tuvastatud väärtusi.

Pärast ülaltoodud kahe lehe kujundamist saame nuppude loogilise kujunduse läbi viia STONE TOOL tarkvara kaudu, mis on saadaval STONE ametlikul veebisaidil.

Väärib märkimist, et aja kuvamiseks kasutatav kellaallikas on ekraani kellaallikas, mitte MCU kellaallikas.

TAB lehe vahetamise efekt

Tarkvarast STONE TOOL ei leitud ühtegi TAB lehe vahetamise komponenti, seega mõtlesin välja teise meetodi, kuidas saavutada TAB lehe vahetamise efekt.

Vaatluse kaudu pakun kahte kasutajaliidese pilti, et ülaltoodud kaks pilti on tekstiga „Light” ja „Sensor”, erinevus on selles, et nende pikslite suurus on erinev, seega peame panema ainult kahe piksli asukoha. sama teksti ja seejärel viitamiseks kellaaja ja kuupäeva vasakus ülanurgas, saate efekti vahetamiseks vajutada tabulaatorit.

Nuppude loogika

Võtke näitena nupp "Elutuba". Kui kasutaja seda nuppu vajutab, saadab STONE jadaporti ekraan ekraanile jadaporti vastavad protokolli juhised. Pärast selle käsu saamist analüüsib kasutaja MCU protokolli, et juhtida MCU -ga ühendatud tulede lülitusolekut.

Anduri hankimine

Võtke näiteks "õhukvaliteet": kui soovite saada siseõhu kvaliteeti, peab meil olema õhukvaliteedi kogumiseks MCU, õhukvaliteedi andur, kui MCU numbriline kogutakse õhukvaliteedi plusse ja miinuseid võrdleva algoritmi abil, ja seejärel MCU saadeti jadapordi kaudu, et kuvada salvestusala "Hea" või "Halb", muuta "Text variable0" kuvatavat sisu ja seejärel saab kasutaja intuitiivselt näha kvaliteedikontrolli eeliseid. Neid selgitatakse hiljem MCU koodis.

2. samm: MCU -side

MCU side
MCU side
MCU side
MCU side
MCU side
MCU side
MCU side
MCU side

STM32 on kõigile tuttav MCU ja see on rahvusvaheliselt levinud MCU mudel. Seetõttu on selles projektis kasutatud STM32 MCU I konkreetne mudel STM32F103RCT6.

STM32 on palju seeriaid, mis vastavad turu erinevatele nõudmistele. Tuuma võib jagada ajukoores-m0, M3, M4 ja M7 ning iga tuuma saab jagada peavoolu, suure jõudlusega ja väikese energiatarbega.

Puhtalt õppimise seisukohast saate valida F1 ja F4, F1 tähistab põhitüüpi, mis põhineb ajukoore-m3 tuumal, peamine sagedus on 72 MHz, F4 tähistab kõrget jõudlust, mis põhineb ajukoore-m4 tuumal sagedus on 180M.

Mis puutub F1, F4 (seeria 429 ja uuemad), siis lisaks erinevatele tuumadele ja põhisageduse täiustamisele on uuendamise ilmselgeks omaduseks LCD -kontroller ja kaameraliides, SDRAM -i tugi, see erinevus on projekti valimisel esikohal. Ülikooli õpetamise ja kasutajate esmase õppimise seisukohast on F1 -sari siiski esimene valik. Praegu on F1 -seeria STM32 -l turul kõige rohkem materjale ja tooteid.

STM32 SCM arenduskeskkonna installimise ja programmi allalaadimismeetodi kohta ma sissejuhatust ei tee.

GPIO initsialiseerimine

Selles projektis kasutasime kokku 4 GPIO -d, millest üks on PWM -väljundtipp. Vaatame kõigepealt kolme tavalise GPIO pordi lähtestamist:

See funktsioon lähtestab STM32F103C8 PB0 / PB1 / PB2 väljundnõelaks ja kutsub selle põhifunktsioonist. Pärast lähtestamist peab meil olema loogika selle GPIO väljundi oleku, kõrge ja madala taseme juhtimiseks, nii et kirjutasin funktsiooni järgmiselt:

See on funktsioon, mida saate intuitiivselt mõista muutuja nime järgi.

Jadapordi lähtestamine

Jadaportaali lähtestamise osa asub uart.c -s:

Seejärel helistage põhifunktsioonis uart_init, et lähtestada jadapordi edastuskiirus 115200. Tihvtid kasutavad PA9/PA10

PWM -i lähtestamine

Konkreetsed sammud:

1. Seadke RCC kell;

2. Seadistage GPIO kell; GPIO režiim peaks olema seatud GPIO_Model_AF_PP või GPIO_PinRemapConfig () funktsioonile, kui nõutakse tihvti ümbertegemist.

3. Seadistage asjakohased TIMx taimerite registrid;

4. Määra TIMx taimeriga PWM -iga seotud register;

A. Määrake PWM -režiim

B. Määrake töötsükkel (valemi arvutamine)

C. Väljundi võrdluse polaarsuse määramine (varem kasutusele võetud)

D. Mis kõige tähtsam, lubage TIMx väljundi olek ja lubage TIMx PWM väljund; Pärast asjakohaste sätete lõpetamist lülitab TIMx_Cmd () PIM -väljundi saamiseks sisse TIMx -taimer. Helistage põhifunktsioonist sellele TIM3_PWM_Init.

Samm: loogikakoodi kirjutamine

Loogikakoodi kirjutamine
Loogikakoodi kirjutamine
Loogikakoodi kirjutamine
Loogikakoodi kirjutamine
Loogikakoodi kirjutamine
Loogikakoodi kirjutamine

Kuva komponendi aadressi määratlus

Ekraani komponentidel on eraldi aadressid ja siin olen need kõik kirjutanud makromääratlustena: Seeriaandmete vastuvõtt

Vaadates teavet STONE -ekraani kohta, näete, et nupule vajutamisel saadab ekraanil olev jadaport sobivas vormingus protokolle, mida kasutaja MCU saab vastu võtta ja sõeluda. Nupu vajutamisel saadab ekraanil olev jadaport üheksa baiti andmeid, sealhulgas kasutajaandmeid. Seeriaandmete vastuvõtt on kirjutatud käitlejas: vastuvõetud andmed salvestatakse massiivi "USART_RX_BUF". Selle projekti puhul on vastuvõtu pikkus fikseeritud. Kui vastuvõtu pikkus on üle 9 baidi, hinnatakse vastuvõtu lõppu.

Juhtige lambi lülitusolekut

Põhifunktsioonis kirjutasin lambi lüliti oleku juhtimiseks mõne loogikakoodi: Nagu näeme, määrab kood kõigepealt kindlaks, kas jadapordi andmed võetakse vastu, ja jadapordi andmete vastuvõtmisel määrab, millist nuppu kasutaja kasutab. vajutab ekraanil. Ekraanil olevatel erinevatel nuppudel on erinevad aadressid, mida on näha tarkvaras STONE TOOL: Kui kasutaja vajutab nuppu "Elutuba", on ekraani jadaporti saadetud andmete neljas ja viies bit nupu aadress. Kuna kõigi siin seatud nuppude neljas bit on 0x00, saame otsustada, millist nuppu kasutaja vajutab, otsustades otse viienda biti andmeid. Pärast kasutaja vajutatud nupu saamist peame otsustama nupu vajutamisel saadud kasutajaandmete üle, mis on ekraanilt saadetud andmete kaheksas number. Seetõttu teeme järgmist juhtimist: kirjutage nupu aadressi parameeter ja kasutajaandmed funktsiooni "Light_Contral" sisse, et juhtida valguse sisselülitamist. Funktsiooni Light_Contral olem on järgmine: nagu näete, kui nupu aadress on "Elutuba" ja kasutajaandmed on "LightOn", siis on MCU PB0 tihvt seatud kõrgetasemelisele väljundile ja tuli põleb. Ülejäänud kolm nuppu on sarnased, kuid ma ei jätka siin.

PWM väljund

Minu kujundatud kasutajaliideses on libisev regulaator, millega kontrollitakse "Lastetoa" valguse heledust. MCU -d rakendab PWM. PWM -i väljundnõel on PB5. Kood on järgmine: libisev reguleerija on seatud minimaalseks väärtuseks 0x00 ja maksimaalseks väärtuseks 0x64. Libistades saadab kuvari jadaport ka asjakohaseid aadresse ja andmeid ning määrab seejärel PWM -väljundi töö suhte, helistades järgmisele funktsioonile:

4. samm: anduri hankimine

Anduri omandamine
Anduri omandamine
Anduri omandamine
Anduri omandamine
Anduri omandamine
Anduri omandamine

Ekraani "Anduri" lehel on neli anduri andmeid.

Andmetel on ekraanil ka salvestusruumi aadress ja me saame muuta tegelikku sisu, kirjutades neile aadressidele lihtsalt andmed MCU jadapordi kaudu.

Siin tegin lihtsa koodi rakendamise:

Ekraani andmeid uuendatakse iga 5 sekundi tagant ja ma kirjutasin ainult vastava andurite kogumisfunktsiooni lihtsa demo, sest mul pole neid andureid käes.

Projekti tegelikul arendamisel võivad need andurid olla ADC kogutud andmed või IIC, UART ja SPI kommunikatsiooniliideste kogutud andmed. Kõik, mida pead tegema, on need andmed vastavasse funktsiooni tagasi kirjutada.

5. samm: tegelik toimimise efekt

Soovitan: