Sadržaj:

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

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

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

Danas sam dobio STONE -ov ekran sa serijskim portom, koji može komunicirati preko serijskog porta MCU -a, a logički dizajn korisničkog sučelja ovog ekrana može se izraditi izravno pomoću softvera VGUS koji se nalazi na službenoj web stranici STONE -a, što nam je vrlo zgodno. Stoga ga planiram upotrijebiti za izradu jednostavnog kontrolera uređaja, koji uključuje kontrolu različitih svjetala (dnevna soba, 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 ekranu možete pronaći na web stranici:

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

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

Dizajn interfejsa korisničkog interfejsa
Dizajn interfejsa korisničkog interfejsa
Dizajn interfejsa korisničkog interfejsa
Dizajn interfejsa korisničkog interfejsa
Dizajn interfejsa korisničkog interfejsa
Dizajn interfejsa korisničkog interfejsa
Dizajn interfejsa korisničkog interfejsa
Dizajn interfejsa korisničkog interfejsa

Photoshop

S Photoshopom sam dizajnirao sljedeće dvije stranice korisničkog 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 vašem domu. Na stranici "Senzor" možete provjeriti vrijednosti koje su otkrili različiti senzori.

Nakon dizajna gornje dvije stranice, možemo izvesti logički dizajn tipki 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.

Efekat prebacivanja TAB stranice

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

Kroz opservaciju koju nudim, dvije slike korisničkog sučelja mogu se otkriti da su dvije gornje slike tekst "Light" i "Sensor", razlika je u tome što im je veličina piksela različita, pa samo trebamo postaviti poziciju od dva piksela na istim tekstom, a zatim kroz gornji lijevi kut vremena i datuma za referencu možete postići promjenu efekta pomoću kartice.

Logika dugmeta

Uzmite za primjer dugme "Dnevna soba". Kada korisnik pritisne ovo dugme, ekran za prikaz STONE serijskog porta će poslati odgovarajuća protokolarna uputstva preko serijskog porta. Nakon primanja ove upute, korisnički MCU će raščlaniti protokol radi kontrole 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 se šalje putem 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 zasluge 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 sa kojim su svi upoznati, i uobičajen je međunarodni model MCU -a. Stoga je specifični model STM32 MCU -a koji sam koristio u ovom projektu STM32F103RCT6.

Postoji mnogo serija STM32 koje mogu zadovoljiti različite zahtjeve tržišta. Jezgro se može podijeliti na cortex-m0, M3, M4 i M7, a svako jezgro se može podijeliti na mainstream, visokih performansi i niske potrošnje energije.

Čisto iz perspektive učenja, možete odabrati F1 i F4, F1 predstavlja osnovni tip, baziran na jezgri cortex-m3, glavna frekvencija je 72MHZ, F4 predstavlja visoke performanse, zasnovane 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 karakteristika nadogradnje je LCD kontroler i sučelje kamere, podrška za SDRAM, ovoj će razlici biti dat prioritet pri odabiru projekta. Međutim, iz perspektive univerzitetske 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 SCM i načinu preuzimanja programa neću uvoditi.

GPIO inicijalizacija

U ovom projektu koristili smo ukupno 4 GPIO, 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 kontrolu izlaznog stanja, visokog i niskog nivoa ovog GPIO -a, pa sam zapisao funkciju na sljedeći način:

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

Inicijalizacija serijskog porta

Inicijalizacijski dio serijskog porta je 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 tajmera;

4. Postavite registar TIMx tajmera u vezi sa PWM -om;

A. Podesite PWM način rada

B. Postavite radni ciklus (izračun formule)

C. Postavite polaritet za usporedbu izlaza (prethodno uveden)

D. 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 tajmer kako bi se dobio PWM izlaz. Pozovite 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

Prikažite definiciju adrese komponente

Komponente ekrana imaju zasebne adrese i ovdje sam ih sve zapisao kao makro definicije: Serijski prijem podataka

Gledajući informacije o STONE ekranu, možete vidjeti da kada se pritisne dugme, serijski port na ekranu šalje protokole u odgovarajućem formatu, koje korisnički MCU može primiti i raščlaniti. Kada se pritisne dugme, serijski port na ekranu šalje devet bajtova podataka, uključujući podatke korisnika. Prijem serijskih podataka zapisuje se u Handler -u: Primljeni podaci se pohranjuju u niz "USART_RX_BUF". U ovom projektu dužina prijema je fiksna. Kada je dužina prijema veća od 9 bajtova, ocjenjuje se kraj prijema.

Kontrolišite stanje uključivanja lampe

U glavnoj funkciji sam napisao neki logički kod za kontrolu stanja prekidača lampe: Kao što vidimo, kod prvo određuje da li su primljeni podaci serijskog porta, a kada se podaci serijskog porta prime, određuje koje je dugme korisnik pritisne na ekranu. Različiti gumbi na ekranu imaju različite adrese, što se može vidjeti u softveru STONE TOOL: Kada korisnik pritisne dugme "Dnevna soba", četvrti i peti bit podataka koje šalje serijski port ekrana su adresa dugmeta. Budući da je četvrti bit od svih ovdje postavljenih gumba 0x00, možemo procijeniti koje dugme korisnik pritisne izravno procjenjujući podatke petog bita. Nakon što dobijemo dugme koje je korisnik pritisnuo, moramo procijeniti korisničke podatke primljene kada se pritisne dugme, što je osma znamenka podataka poslanih s ekrana. 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 dugmeta "Dnevna soba", a korisnički podaci "LightOn", tada je pin PB0 na MCU postavljen na izlaz visokog nivoa i svjetlo je uključeno. Ostala tri dugmeta 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 implementira 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 ekrana će također slati relevantne adrese i podatke, a zatim postaviti radni omjer 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 ekranu se nalaze četiri podatka senzora.

Podaci također imaju adresu za pohranu na ekranu, 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 ekranu se ažuriraju svakih 5 sekundi, a ja sam napisao samo jednostavan demo relevantne funkcije prikupljanja senzora jer ove 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 efekt operacije

Preporučuje se: