Sadržaj:

KAMENI LCD s pametnom kućom: 5 koraka
KAMENI LCD s pametnom kućom: 5 koraka

Video: KAMENI LCD s pametnom kućom: 5 koraka

Video: KAMENI LCD s pametnom kućom: 5 koraka
Video: P22 SMART WATCH: Things To Know // Real Life Review 2024, Studeni
Anonim
KAMENI LCD s Pametnom kućom
KAMENI LCD s Pametnom kućom

Danas sam dobio STONE -ov zaslon s serijskim portom, koji može komunicirati preko serijskog porta MCU -a, a logički dizajn sučelja ovog zaslona može se izravno izraditi pomoću softvera VGUS koji se nalazi na službenoj web stranici STONE -a, što nam je vrlo prikladno. Stoga ga namjeravam upotrijebiti za izradu jednostavnog kontrolera uređaja, koji uključuje upravljanje raznim svjetlima (dnevni boravak, kuhinja, dječja soba, kupaonica). Istodobno se mogu prikupljati unutarnja i vanjska temperatura, vlaga i kvaliteta zraka. Ovo je samo jednostavan demo, a sekundarni razvoj možete provesti pomoću koda koji sam dao. Neke osnovne upute o STONE zaslonu mogu se pronaći na web stranici:

Na web stranici nalaze se razne informacije o modelu, korisničkoj i dizajnerskoj dokumentaciji, kao i video vodiči. Ovdje neću ulaziti u previše detalja.

Korak 1: Dizajn sučelja korisničkog sučelja

Dizajn sučelja korisničkog sučelja
Dizajn sučelja korisničkog sučelja
Dizajn sučelja korisničkog sučelja
Dizajn sučelja korisničkog sučelja
Dizajn sučelja korisničkog sučelja
Dizajn sučelja korisničkog sučelja
Dizajn sučelja korisničkog sučelja
Dizajn sučelja korisničkog sučelja

Photoshop

S Photoshopom sam dizajnirao sljedeće dvije stranice sučelja:

Ovaj projekt ima ukupno gornje dvije stranice. "Svjetlo" i "Senzor" u gornjem desnom kutu su tipke za prebacivanje ove dvije stranice.

Na stranici "Svjetlo" možete kontrolirati sve vrste svjetala u svom domu. Na stranici "Senzor" možete provjeriti vrijednosti koje detektiraju različiti senzori.

Nakon dizajna gornje dvije stranice, možemo izvesti logički dizajn gumba putem softvera STONE TOOL koji se nalazi na službenoj web stranici STONE.

Vrijedi napomenuti da je izvor sata koji se ovdje koristi za prikaz vremena izvor sata na ekranu, a ne izvor sata MCU -a.

Učinak promjene stranice TAB

U softveru STONE TOOL nije pronađena komponenta za promjenu TAB stranice, pa sam smislio drugu metodu za postizanje učinka promjene stranice TAB.

Kroz promatranje koje nudim dvije slike korisničkog sučelja mogu se otkriti da su dvije gornje slike tekst "Svjetlo" i "Senzor", razlika je u tome što im je veličina piksela različita, pa samo moramo postaviti položaj dva piksela postavljen na istim tekstom, a zatim kroz gornji lijevi kut vremena i datuma za referencu možete postići promjenu učinka TAB.

Logika gumba

Uzmite za primjer gumb "Dnevna soba". Kad korisnik pritisne ovaj gumb, zaslon za prikaz STONE serijskog porta će poslati odgovarajuće protokolarne upute kroz serijski port. Nakon primanja ove upute, korisnički MCU će raščlaniti protokol za kontrolu stanja uključivanja svjetla povezanih s MCU -om.

Nabavka senzora

Uzmimo za primjer "kvalitetu zraka": ako želite postići kvalitetu zraka u zatvorenom prostoru, moramo imati MCU za prikupljanje kvalitete zraka, senzor kvalitete zraka kada se MCU numerički prikuplja pomoću algoritma za usporedbu prednosti i nedostataka kvalitete zraka, a zatim MCU poslan preko serijskog porta za prikaz prostora za pohranu "Dobro" ili "Loše", za promjenu prikazanog sadržaja "Tekstualna varijabla0", a zatim korisnik može intuitivno vidjeti prednosti kontrole kvalitete. To je objašnjeno kasnije u MCU kodu.

Korak 2: MCU komunikacija

MCU komunikacija
MCU komunikacija
MCU komunikacija
MCU komunikacija
MCU komunikacija
MCU komunikacija
MCU komunikacija
MCU komunikacija

STM32 je MCU s kojim su svi upoznati, a uobičajen je međunarodni model MCU -a. Stoga je specifični model STM32 MCU -a koji sam koristio u ovom projektu STM32F103RCT6.

Postoje mnoge serije STM32 koje mogu zadovoljiti različite zahtjeve tržišta. Jezgra se može podijeliti na cortex-m0, M3, M4 i M7, a svaka jezgra može se podijeliti na mainstream, visoke performanse i nisku potrošnju energije.

Čisto iz perspektive učenja, možete odabrati F1 i F4, F1 predstavlja osnovni tip, na temelju jezgre cortex-m3, glavna frekvencija je 72MHZ, F4 predstavlja visoke performanse, temeljene na jezgri cortex-m4, glavna frekvencija 180M.

Što se tiče F1, F4 (serija 429 i više), osim različitih jezgri i poboljšanja glavne frekvencije, očita značajka nadogradnje je LCD kontroler i sučelje kamere, podrška za SDRAM, ovoj će razlici biti prioritet pri odabiru projekta. Međutim, iz perspektive sveučilišne nastave i početnog učenja korisnika, serija F1 je i dalje prvi izbor. Trenutno STM32 iz serije F1 ima najveću količinu materijala i proizvoda na tržištu.

O instalaciji razvojnog okruženja STM32 i načinu preuzimanja programa, neću uvoditi.

GPIO inicijalizacija

U ovom smo projektu koristili ukupno 4 GPIO -a, od kojih je jedan PWM izlazni pin. Pogledajmo prvo inicijalizaciju tri obična GPIO porta:

Ova funkcija inicijalizira PB0 / PB1 / PB2 iz STM32F103C8 kao izlazni pin i poziva ga iz glavne funkcije. Nakon inicijalizacije, moramo imati logiku za upravljanje izlaznim stanjem, visokom i niskom razinom ovog GPIO -a, pa sam zapisao funkciju kako slijedi:

Ovo je funkcija koju intuitivno možete razumjeti pod imenom varijable.

Inicijalizacija serijskog porta

Inicijalizacijski dio serijskog porta nalazi se u uart.c:

Zatim pozovite uart_init u glavnoj funkciji za inicijalizaciju brzine prijenosa serijskog porta od 115200. Igle koriste PA9/PA10

PWM inicijalizacija

Konkretni koraci:

1. Postavite RCC sat;

2. Postavite GPIO sat; GPIO način rada treba postaviti na GPIO_Model_AF_PP ili na funkciju GPIO_PinRemapConfig () ako je potrebno ponovno preslikavanje pinova.

3. Postavite relevantne registre TIMx timera;

4. Postavite registar TIMx timera koji se odnosi na PWM;

A. Postavite način rada PWM

B. Postavite radni ciklus (izračun formule)

C. Postavite polaritet usporedbe izlaza (prethodno uveden)

D. Ono što je najvažnije, omogućiti izlazno stanje TIMx -a i omogućiti PWM izlaz TIMx -a; Nakon dovršetka odgovarajućih postavki, TIMx_Cmd () uključuje TIMx timer kako bi se dobio PWM izlaz. Nazovite ovo TIM3_PWM_Init iz glavne funkcije.

Korak 3: Pisanje logičkog koda

Pisanje logičkog koda
Pisanje logičkog koda
Pisanje logičkog koda
Pisanje logičkog koda
Pisanje logičkog koda
Pisanje logičkog koda

Prikaz definicije adrese komponente

Komponente zaslona imaju zasebne adrese, a ovdje sam ih sve zapisao kao makro definicije: Serijski prijem podataka

Gledajući informacije o STONE zaslonu, možete vidjeti da kada se pritisne tipka, serijski port na zaslonu šalje protokole u odgovarajućem formatu, koje korisnički MCU može primiti i raščlaniti. Kada se pritisne tipka, serijski priključak na zaslonu šalje devet bajtova podataka, uključujući podatke korisnika. Prijem serijskih podataka zapisuje se u Handleru: Primljeni podaci pohranjeni su u nizu "USART_RX_BUF". U ovom projektu dužina primanja je fiksna. Kad je dužina primanja veća od 9 bajtova, ocjenjuje se kraj primitka.

Kontrolirajte stanje uključivanja žarulje

U glavnoj funkciji napisao sam neki logički kôd za kontrolu stanja sklopke svjetiljke: Kao što vidimo, kôd prvo određuje jesu li primljeni podaci serijskog porta, a kada se dobiju podaci serijskog porta, određuje koji je gumb korisnik pritisne na zaslonu. Različiti gumbi na zaslonu imaju različite adrese, što se može vidjeti u softveru STONE TOOL: Kada korisnik pritisne gumb "Dnevna soba", četvrti i peti bit podataka koje šalje serijski priključak zaslona su adresa gumba. Budući da je četvrti bit od svih ovdje postavljenih gumba 0x00, možemo procijeniti koju tipku korisnik pritisne izravno procjenjujući podatke petog bita. Nakon što smo dobili gumb koji je korisnik pritisnuo, moramo procijeniti podatke korisnika koji su primljeni kada je gumb pritisnut, što je osma znamenka podataka poslanih s zaslona. Stoga vršimo sljedeću kontrolu: upisujemo parametre adrese gumba i korisničke podatke u funkciju "Light_Contral" za kontrolu stanja uključenosti i isključenosti svjetla. Entitet funkcije Light_Contral je sljedeći: Kao što vidite, ako je adresa gumba "Dnevna soba", a korisnički podaci "LightOn", tada je pin PB0 MCU-a postavljen na izlaz visoke razine, a svjetlo je uključeno. Ostala tri gumba su slična, ali neću dalje.

PWM izlaz

U korisničkom sučelju koje sam dizajnirao nalazi se klizni regulator koji se koristi za kontrolu jačine svjetla "Dječje sobe". MCU provodi PWM. PWM izlazni pin je PB5. Kôd je sljedeći: Klizni regulator je postavljen na minimalnu vrijednost 0x00 i maksimalnu vrijednost 0x64. Prilikom klizanja, serijski port zaslona će također slati relevantne adrese i podatke, a zatim postaviti omjer radne snage PWM izlaza pozivanjem sljedeće funkcije:

Korak 4: Nabavka senzora

Nabavka senzora
Nabavka senzora
Nabavka senzora
Nabavka senzora
Nabavka senzora
Nabavka senzora

Na stranici "Senzor" na zaslonu prikazana su četiri podatka senzora.

Podaci također imaju adresu za pohranu na zaslonu, a stvarni sadržaj možemo promijeniti jednostavnim upisivanjem podataka na te adrese putem serijskog porta MCU -a.

Ovdje sam napravio jednostavnu implementaciju koda:

Podaci na zaslonu ažuriraju se svakih 5 sekundi, a ja sam napisao samo jednostavan demo relevantne funkcije prikupljanja senzora jer te senzore nemam u ruci.

U stvarnom razvoju projekta ti senzori mogu biti podaci prikupljeni putem ADC -a ili podaci prikupljeni komunikacijskim sučeljima IIC, UART i SPI. Sve što trebate učiniti je upisati te podatke u odgovarajuću funkciju kao povratnu vrijednost.

Korak 5: Stvarni učinak operacije

Preporučeni: