Përmbajtje:

LCD STONE Me Smart Home: 5 hapa
LCD STONE Me Smart Home: 5 hapa

Video: LCD STONE Me Smart Home: 5 hapa

Video: LCD STONE Me Smart Home: 5 hapa
Video: How To Clean Ear Wax Properly #shorts 2024, Nëntor
Anonim
LCD STONE Me Smart Home
LCD STONE Me Smart Home

Sot, mora ekranin e portit serik të STONE, i cili mund të komunikojë përmes portës serike të MCU, dhe dizajni logjik i UI i këtij ekrani mund të dizajnohet drejtpërdrejt duke përdorur softuerin VGUS të ofruar në faqen zyrtare të STONE, i cili është shumë i përshtatshëm për ne. Kështu që unë planifikoj ta përdor atë për të bërë një kontrollues të thjeshtë të pajisjes, i cili përfshin kontrollin e dritave të ndryshme (dhomen e ndjenjes, kuzhinën, dhomën e fëmijëve, banjën). Në të njëjtën kohë, temperatura e brendshme dhe e jashtme, lagështia dhe cilësia e ajrit mund të mblidhen. Kjo është vetëm një demonstrim i thjeshtë, dhe ju mund të zhvilloni zhvillim dytësor përmes kodit që kam dhënë. Disa mësime themelore në lidhje me ekranin GURIN mund të shkojnë në faqen e internetit:

Faqja e internetit ka një larmi informacioni në lidhje me modelin, përdoruesit dhe dokumentacionin e projektimit, si dhe video mësime. Këtu nuk do të hyj në shumë detaje.

Hapi 1: Dizajni i ndërfaqes UI

Dizajni i ndërfaqes UI
Dizajni i ndërfaqes UI
Dizajni i ndërfaqes UI
Dizajni i ndërfaqes UI
Dizajni i ndërfaqes UI
Dizajni i ndërfaqes UI
Dizajni i ndërfaqes UI
Dizajni i ndërfaqes UI

Photoshop

Kam krijuar dy faqet e mëposhtme të ndërfaqes së përdoruesit me Photoshop:

Ky projekt ka dy faqet e mësipërme në total. "Drita" dhe "Sensori" në këndin e sipërm të djathtë janë butonat ndërrues të këtyre dy faqeve.

Në faqen "Drita", ju mund të kontrolloni të gjitha llojet e dritave në shtëpinë tuaj. Në faqen "Sensor", mund të kontrolloni vlerat e zbuluara nga sensorë të ndryshëm.

Pas hartimit të dy faqeve të mësipërme, ne mund të bëjmë një dizajn logjik të butonit përmes softuerit STONE TOOL të ofruar në faqen zyrtare të STONE.

Vlen të përmendet se burimi i orës i përdorur për shfaqjen e kohës këtu është burimi i orës i ekranit të ekranit, jo burimi i orës MCU.

Efekti i ndërrimit të faqes TAB

Asnjë komponent i ndërrimit të faqeve TAB nuk u gjet në programin STONE TOOL, kështu që unë mendova për një metodë tjetër për të arritur efektin e ndërrimit të faqes TAB.

Përmes vëzhgimit unë ofroj dy imazhe UI mund të gjenden se dy imazhet e mësipërme janë teksti "Dritë" dhe "Sensor", ndryshimi është madhësia e pikselëve të tyre është e ndryshme, kështu që ne vetëm duhet të vendosim pozicionin me dy piksele të vendosur në i njëjti tekst, dhe pastaj përmes këndit të sipërm të majtë të kohës dhe datës për referencë, mund të arrini efektin TAB për të kaluar.

Logjikë butoni

Merrni si shembull butonin "Living Room". Kur përdoruesi shtyp këtë buton, ekrani i shfaqjes së portës serike STONE do të dërgojë udhëzimet përkatëse të protokollit përmes portës serike. Pas marrjes së këtij udhëzimi, MCU e përdoruesit do të analizojë protokollin për të kontrolluar gjendjen e kalimit të dritave të lidhura me MCU.

Fitimi i sensorit

Merrni për shembull "cilësinë e ajrit": nëse doni të merrni cilësinë e ajrit të brendshëm, ne duhet të kemi një MCU për të mbledhur cilësinë e ajrit, sensorin e cilësisë së ajrit kur MCU numerike mblidhet përmes algoritmit që krahason të mirat dhe të këqijat e cilësisë së ajrit, dhe pastaj MCU dërgohet përmes një porti serik për të shfaqur zonën e ruajtjes së "Mirë" ose "E keqe", për të ndryshuar përmbajtjen e ekranit "Text variable0", dhe pastaj përdoruesi mund të shohë intuitivisht meritat e kontrollit të cilësisë. Këto shpjegohen më vonë në kodin MCU.

Hapi 2: Komunikimi MCU

Komunikimi MCU
Komunikimi MCU
Komunikimi MCU
Komunikimi MCU
Komunikimi MCU
Komunikimi MCU
Komunikimi MCU
Komunikimi MCU

STM32 është MCU që të gjithë e njohin, dhe është një model i zakonshëm MCU në ndërkombëtar. Prandaj, modeli specifik i STM32 MCU që kam përdorur në këtë projekt është STM32F103RCT6.

Ka shumë seri STM32, të cilat mund të plotësojnë kërkesa të ndryshme të tregut. Kerneli mund të ndahet në lëvore-m0, M3, M4 dhe M7, dhe secili kernel mund të ndahet në rrjedhën kryesore, performancë të lartë dhe konsum të ulët të energjisë.

Thjesht nga perspektiva e të mësuarit, ju mund të zgjidhni F1 dhe F4, F1 përfaqëson llojin bazë, bazuar në kortelin e korteksit-m3, frekuenca kryesore është 72MHZ, F4 përfaqëson performancën e lartë, bazuar në kernelin e korteksit-m4, kryesore frekuenca është 180M.

Sa i përket F1, F4 (seritë 429 e lart), përveç bërthamave të ndryshme dhe përmirësimit të frekuencës kryesore, tipari i dukshëm i azhurnimit është kontrolluesi LCD dhe ndërfaqja e kamerës, mbështetja për SDRAM, këtij ndryshimi do t'i jepet përparësi në përzgjedhjen e projektit. Sidoqoftë, nga këndvështrimi i mësimdhënies universitare dhe mësimit fillestar të përdoruesve, seria F1 është ende zgjedhja e parë. Aktualisht, STM32 i serisë F1 ka sasinë më të madhe të materialeve dhe produkteve në treg.

Në lidhje me instalimin e mjedisit të zhvillimit STM32 SCM dhe metodën e shkarkimit të programit, unë nuk do të bëj prezantimin.

Inicimi i GPIO

Në këtë projekt, ne përdorëm gjithsej 4 GPIO, njëra prej të cilave është kunja dalëse PWM. Le të shikojmë së pari fillimin e tre portave të zakonshëm GPIO:

Ky funksion inicializon PB0 / PB1 / PB2 të STM32F103C8 si pin dalës dhe e thërret atë nga funksioni kryesor. Pas fillimit, ne duhet të kemi një logjikë për të kontrolluar gjendjen e daljes, nivelin e lartë dhe të ulët të këtij GPIO, kështu që unë shkrova funksionin si më poshtë:

Ky është një funksion që mund ta kuptoni në mënyrë intuitive me emrin e ndryshores.

Fillimi i portit serik

Pjesa e inicimit të portit serik është në uart.c:

Pastaj telefononi uart_init në funksionin kryesor për të inicializuar normën e baudit serik të portit prej 115200. Kunjat përdorin PA9/PA10

Inicimi i PWM

Hapat specifik:

1. Vendosni orën RCC;

2. Vendosni orën GPIO; Modaliteti GPIO duhet të vendoset në GPIO_Model_AF_PP, ose në funksionin GPIO_PinRemapConfig () nëse kërkohet rimarrja e pinit.

3. Vendosni regjistrat përkatës të kohëmatësit TIMx;

4. Vendosni regjistrin e lidhur me PWM të kohëmatësit TIMx;

A. Vendosni modalitetin PWM

B. Cikli i caktuar i punës (llogaritja e formulës)

C. Vendosni polaritetin e krahasimit të prodhimit (i prezantuar më parë)

D. Më e rëndësishmja, aktivizoni gjendjen dalëse të TIMx dhe aktivizoni daljen PWM të TIMx; Pasi të keni përfunduar Cilësimet përkatëse, kohëmatësi TIMx ndizet nga TIMx_Cmd () për të marrë daljen PWM. Thirrni këtë TIM3_PWM_Init nga funksioni kryesor.

Hapi 3: Shkrimi i Kodit Logjik

Shkrimi i Kodit Logjik
Shkrimi i Kodit Logjik
Shkrimi i Kodit Logjik
Shkrimi i Kodit Logjik
Shkrimi i Kodit Logjik
Shkrimi i Kodit Logjik

Shfaq definicionin e adresës së komponentit

Komponentët e ekranit kanë adresa të veçanta, dhe këtu i kam shkruar të gjitha si përkufizime makro: Marrja e të dhënave serike

Duke parë informacionin në lidhje me ekranin STONE, mund të shihni që kur shtypet butoni, porta serike në ekran dërgon protokolle në formatin e duhur, të cilat përdoruesi MCU mund t'i marrë dhe analizojë. Kur shtypet butoni, porti serik në ekran dërgon nëntë bajt të dhëna, përfshirë të dhënat e përdoruesit. Marrja e të dhënave serike është shkruar në Handler: Të dhënat e marra ruhen në grupin "USART_RX_BUF". Në këtë projekt, gjatësia e marrjes është fikse. Kur gjatësia e marrjes është më shumë se 9 bajt, fundi i marrjes gjykohet.

Kontrolloni gjendjen e kalimit të llambës

Në funksionin kryesor, unë shkrova një kod logjik për të kontrolluar gjendjen e kalimit të llambës: Siç mund ta shohim, kodi së pari përcakton nëse merren të dhënat e portit serik dhe kur merren të dhënat e portit serik, përcakton cilin buton të përdoruesit shtyp në ekranin e ekranit. Butonat e ndryshëm në ekran kanë adresa të ndryshme, të cilat mund të shihen në programin STONE TOOL: Kur përdoruesi shtyp butonin "Living Room", pjesët e katërt dhe të pestë të të dhënave të dërguara nga porta serike e ekranit të ekranit janë adresa e butonit. Meqenëse biti i katërt i të gjithë butonave të vendosur këtu është 0x00, ne mund të gjykojmë se cilin buton përdoruesi shtyp duke gjykuar drejtpërdrejt të dhënat e bitit të pestë. Pas marrjes së butonit të shtypur nga përdoruesi, ne duhet të gjykojmë të dhënat e përdoruesit të marra kur shtypet butoni, që është shifra e tetë e të dhënave të dërguara nga ekrani i ekranit. Prandaj, ne bëjmë kontrollin e mëposhtëm: shkruani parametrin e adresës së butonit dhe të dhënat e përdoruesit në funksionin "Light_Contral" për të kontrolluar gjendjen e ndezjes-fikjes së dritës. Njësia e funksionit Light_Contral është si më poshtë: Siç mund ta shihni, nëse adresa e butonit është "Living Room" dhe të dhënat e përdoruesit janë "LightOn", atëherë kunja PB0 e MCU është vendosur në dalje të nivelit të lartë dhe drita është e ndezur Me Tre butonat e tjerë janë të ngjashëm, por unë nuk do të vazhdoj këtu.

Dalja PWM

Në UI të krijuar nga unë, ekziston një rregullator rrëshqitës, i cili përdoret për të kontrolluar shkëlqimin e dritës së "Dhoma e Fëmijëve". MCU zbatohet nga PWM. PWM dalëse pin është PB5. Kodi është si më poshtë: Rregulluesi rrëshqitës është vendosur në një vlerë minimale prej 0x00 dhe një vlerë maksimale prej 0x64. Kur rrëshqet, porta serike e ekranit të ekranit gjithashtu do të dërgojë adresa dhe të dhëna përkatëse, dhe më pas do të vendosë raportin e detyrave të prodhimit PWM duke thirrur funksionin e mëposhtëm:

Hapi 4: Marrja e sensorit

Marrja e sensorit
Marrja e sensorit
Marrja e sensorit
Marrja e sensorit
Marrja e sensorit
Marrja e sensorit

Në faqen e "Sensorit" të ekranit të ekranit, ka katër të dhëna të Sensorit.

Të dhënat gjithashtu kanë një adresë ruajtjeje në ekran, dhe ne mund të ndryshojmë përmbajtjen e vërtetë duke shkruar thjesht të dhëna në këto adresa përmes portit serik të MCU.

Këtu kam bërë një zbatim të thjeshtë të kodit:

Të dhënat e ekranit azhurnohen çdo 5 sekonda, dhe unë shkrova vetëm një demonstrim të thjeshtë të funksionit përkatës të mbledhjes së sensorëve, sepse nuk i kam këto sensorë në dorën time.

Në zhvillimin real të projektit, këta sensorë mund të jenë të dhëna të mbledhura nga ADC, ose të dhëna të mbledhura nga ndërfaqet e komunikimit IIC, UART dhe SPI. E tëra çfarë ju duhet të bëni është t'i shkruani këto të dhëna në funksionin përkatës si vlerë kthyese.

Hapi 5: Efekti Aktual i Operacionit

Recommended: