Cuprins:

STONE LCD cu Smart Home: 5 pași
STONE LCD cu Smart Home: 5 pași

Video: STONE LCD cu Smart Home: 5 pași

Video: STONE LCD cu Smart Home: 5 pași
Video: Smart Home Controller using DWIN HMI LCD Display & ESP32 (Display BME280 Reading & Control Relays) 2024, Iulie
Anonim
STONE LCD Cu Smart Home
STONE LCD Cu Smart Home

Astăzi, am primit afișajul unității de port serial STONE, care poate comunica prin portul serial al MCU, iar designul logic al UI al acestui afișaj poate fi proiectat direct utilizând software-ul VGUS furnizat pe site-ul oficial al STONE, care este foarte convenabil pentru noi. Așa că intenționez să-l folosesc pentru a realiza un controler simplu pentru aparate, care include controlul diferitelor lumini (living, bucătărie, cameră pentru copii, baie). În același timp, temperatura, umiditatea și calitatea aerului pot fi colectate în interior și exterior. Acesta este doar un demo simplu și puteți efectua o dezvoltare secundară prin intermediul codului pe care l-am furnizat. Unele tutoriale de bază despre ecranul STONE pot merge pe site-ul web:

Site-ul web conține o varietate de informații despre model, utilizator și documentație de proiectare, precum și tutoriale video. Nu voi intra în prea multe detalii aici.

Pasul 1: Proiectarea interfeței UI

Proiectarea interfeței UI
Proiectarea interfeței UI
Proiectarea interfeței UI
Proiectarea interfeței UI
Proiectarea interfeței UI
Proiectarea interfeței UI
Proiectarea interfeței UI
Proiectarea interfeței UI

Photoshop

Am proiectat următoarele două pagini UI cu Photoshop:

Acest proiect are cele două pagini de mai sus în total. „Lumina” și „Senzorul” din colțul din dreapta sus sunt butoanele de comutare ale acestor două pagini.

În pagina „Lumina”, puteți controla tot felul de lumini în casa dvs. În pagina „Senzor”, puteți verifica valorile detectate de diferiți senzori.

După proiectarea celor două pagini de mai sus, putem realiza o proiectare logică a butoanelor prin intermediul software-ului STONE TOOL furnizat pe site-ul oficial al STONE.

Este demn de remarcat faptul că sursa de ceas utilizată pentru afișarea orei aici este sursa de ceas a ecranului de afișare, nu sursa de ceas MCU.

Efect de comutare a paginii TAB

Nu s-a găsit nicio componentă de comutare a paginii TAB în software-ul STONE TOOL, așa că m-am gândit la o altă metodă pentru a obține efectul de comutare a paginii TAB.

Prin observație ofer două imagini UI se poate constata că cele două imagini de mai sus sunt text „lumină” și „senzor”, diferența este dimensiunea pixelilor lor este diferită, deci trebuie doar să punem poziția de doi pixeli același text și apoi prin colțul din stânga sus al orei și datei de referință, puteți obține TAB pentru a comuta efectul.

Logica butonului

Luați ca exemplu butonul „Camera de zi”. Când utilizatorul apasă acest buton, ecranul de afișare a portului serial STONE va trimite instrucțiuni de protocol corespunzătoare prin portul serial. După primirea acestei instrucțiuni, MCU-ul utilizatorului va analiza protocolul pentru a controla starea de comutare a luminilor conectate cu MCU.

Achiziționarea senzorilor

Luați „calitatea aerului” de exemplu: dacă doriți să obțineți calitatea aerului interior, trebuie să avem un MCU pentru a colecta calitatea aerului, senzorul de calitate a aerului atunci când MCU numeric colectat prin algoritm comparând avantajele și dezavantajele calității aerului, și apoi MCU trimis printr-un port serial pentru a afișa zona de stocare a „Bine” sau „Bad”, pentru a modifica conținutul afișat „Variabilă text0”, iar apoi utilizatorul poate vedea intuitiv meritele controlului calității. Acestea sunt explicate mai târziu în codul MCU.

Pasul 2: Comunicare MCU

Comunicare MCU
Comunicare MCU
Comunicare MCU
Comunicare MCU
Comunicare MCU
Comunicare MCU
Comunicare MCU
Comunicare MCU

STM32 este MCU-ul cu care toată lumea este familiarizat și este un model MCU obișnuit la nivel internațional. Prin urmare, modelul specific al STM32 MCU pe care l-am folosit în acest proiect este STM32F103RCT6.

Există multe serii de STM32, care pot satisface diverse cerințe ale pieței. Nucleul poate fi împărțit în cortex-m0, M3, M4 și M7 și fiecare nucleu poate fi împărțit în mainstream, performanță ridicată și consum redus de energie.

Pur din perspectiva învățării, puteți alege F1 și F4, F1 reprezintă tipul de bază, bazat pe nucleul cortex-m3, frecvența principală este de 72 MHz, F4 reprezintă performanța ridicată, pe baza nucleului cortex-m4, principalul frecvența este de 180M.

În ceea ce privește F1, F4 (seria 429 și mai sus), în afară de diferite nuclee și îmbunătățirea frecvenței principale, caracteristica evidentă a actualizării este controlerul LCD și interfața camerei, suport pentru SDRAM, această diferență va avea prioritate în selectarea proiectului. Cu toate acestea, din perspectiva predării universitare și a învățării inițiale a utilizatorilor, seria F1 este încă prima alegere. În prezent, STM32 din seria F1 are cea mai mare cantitate de materiale și produse de pe piață.

Despre instalarea mediului de dezvoltare STM32 SCM și metoda de descărcare a programului, nu voi face introducerea.

Inițializare GPIO

În acest proiect, am folosit un total de 4 GPIO, dintre care unul este pinul de ieșire PWM. Să vedem mai întâi inițializarea a trei porturi GPIO obișnuite:

Această funcție inițializează PB0 / PB1 / PB2 al STM32F103C8 ca pin de ieșire și îl apelează din funcția principală. După inițializare, trebuie să avem o logică pentru a controla starea de ieșire, nivelul înalt și scăzut al acestui GPIO, așa că am scris funcția după cum urmează:

Aceasta este o funcție pe care o puteți înțelege intuitiv după numele variabilei.

Inițializare port serial

Partea de inițializare a portului serial se află în uart.c:

Apoi, apelați uart_init în funcția principală pentru a inițializa viteza în baud a portului serial de 115200. Pinii folosesc PA9 / PA10

Inițializare PWM

Pași specifici:

1. Setați ceasul RCC;

2. Setați ceasul GPIO; modul GPIO trebuie setat la GPIO_Model_AF_PP sau la funcția GPIO_PinRemapConfig () dacă este necesară remaparea pinului.

3. Setați registre relevante ale temporizatorului TIMx;

4. Setați registrul PWM al temporizatorului TIMx;

A. Setați modul PWM

B. Setați ciclul de funcționare (calculul formulei)

C. Setați polaritatea comparației de ieșire (introdusă anterior)

D. Cel mai important, activați starea de ieșire a TIMx și activați ieșirea PWM a TIMx; După finalizarea setărilor relevante, temporizatorul TIMx este pornit de TIMx_Cmd () pentru a obține ieșirea PWM. Apelați acest TIM3_PWM_Init din funcția principală.

Pasul 3: Scrierea codului logic

Scrierea codului logic
Scrierea codului logic
Scrierea codului logic
Scrierea codului logic
Scrierea codului logic
Scrierea codului logic

Afișați definiția adresei componentelor

Componentele afișajului au adrese separate și aici le-am scris pe toate ca definiții macro: recepție de date seriale

Privind informații despre afișajul STONE, puteți vedea că atunci când butonul este apăsat, portul serial de pe afișaj trimite protocoale în formatul adecvat, pe care MCU-ul utilizatorului îl poate primi și analiza. Când butonul este apăsat, portul serial de pe afișaj trimite nouă octeți de date, inclusiv date de utilizator. Recepția datelor seriale este scrisă în Handler: datele primite sunt stocate în matricea „USART_RX_BUF”. În acest proiect, lungimea de recepție este fixă. Când lungimea de recepție este mai mare de 9 octeți, capătul de recepție este evaluat.

Controlați starea de comutare a lămpii

În funcția principală, am scris câteva coduri logice pentru a controla starea comutatorului lămpii: După cum putem vedea, codul determină mai întâi dacă datele portului serial sunt primite, iar când sunt primite datele portului serial, determină ce buton utilizatorul apasă pe ecran. Diferite butoane de pe afișaj au adrese diferite, care pot fi văzute în software-ul STONE TOOL: Când utilizatorul apasă butonul „Living Room”, al patrulea și al cincilea bit al datelor trimise de portul serial al ecranului sunt adresa butonului. Deoarece al patrulea bit al tuturor butoanelor setate aici este 0x00, putem judeca ce buton apasă utilizatorul judecând direct datele celui de-al cincilea bit. După obținerea butonului apăsat de utilizator, trebuie să judecăm datele utilizatorului primite la apăsarea butonului, care este a opta cifră a datelor trimise de pe ecranul de afișare. Prin urmare, facem următorul control: scrieți parametrul de adresă al butonului și datele utilizatorului în funcția "Light_Contral" pentru a controla starea de pornire-oprire a luminii. Entitatea funcției Light_Contral este următoarea: După cum puteți vedea, dacă adresa butonului este „Living Room” și datele utilizatorului sunt „LightOn”, atunci pinul PB0 al MCU este setat la ieșire la nivel înalt, iar lumina este aprinsă. Celelalte trei butoane sunt similare, dar nu voi continua aici.

Ieșire PWM

În interfața de utilizare proiectată de mine, există un regulator de alunecare, care este utilizat pentru a controla luminozitatea luminii din „Camera copiilor”. MCU este implementat de PWM. Pinul de ieșire PWM este PB5. Codul este după cum urmează: Regulatorul glisant este setat la o valoare minimă de 0x00 și o valoare maximă de 0x64. Când alunecă, portul serial al ecranului de afișare va trimite, de asemenea, adrese și date relevante, apoi va seta raportul de funcționare al ieșirii PWM apelând următoarea funcție:

Pasul 4: Achiziționarea senzorilor

Achiziționarea senzorilor
Achiziționarea senzorilor
Achiziționarea senzorilor
Achiziționarea senzorilor
Achiziționarea senzorilor
Achiziționarea senzorilor

În pagina „Senzor” a ecranului, există patru date despre senzor.

Datele au, de asemenea, o adresă de stocare pe ecran și putem schimba conținutul real prin simpla scriere a datelor la aceste adrese prin portul serial al MCU.

Aici am făcut o implementare simplă a codului:

Datele afișate sunt actualizate la fiecare 5 secunde și am scris doar o demonstrație simplă a funcției relevante de colectare a senzorilor, deoarece nu am acești senzori în mână.

În dezvoltarea reală a proiectului, acești senzori pot fi date colectate de ADC sau date colectate de interfețele de comunicații IIC, UART și SPI. Tot ce trebuie să faceți este să scrieți aceste date în funcția corespunzătoare ca valoare returnată.

Pasul 5: Efect efectiv de funcționare

Recomandat: