Indholdsfortegnelse:

STONE LCD Med Smart Home: 5 trin
STONE LCD Med Smart Home: 5 trin

Video: STONE LCD Med Smart Home: 5 trin

Video: STONE LCD Med Smart Home: 5 trin
Video: wpc wall panel installation 2024, November
Anonim
STONE LCD Med Smart Home
STONE LCD Med Smart Home

I dag fik jeg STONEs serielle portdisplay, som kan kommunikere via MCU's serielle port, og UI -logikdesignet på denne skærm kan designes direkte ved hjælp af VGUS -softwaren på STONEs officielle websted, hvilket er meget praktisk for os. Så jeg planlægger at bruge den til at lave en simpel apparatcontroller, som inkluderer styring af forskellige lys (stue, køkken, børneværelse, badeværelse). På samme tid kan indendørs og udendørstemperatur, fugtighed og luftkvalitet opsamles. Dette er bare en simpel demo, og du kan udføre sekundær udvikling gennem den kode, jeg har givet. Nogle grundlæggende selvstudier om STONE -skærmen kan gå til webstedet:

Websitet har en række oplysninger om modellen, brugeren og designdokumentationen samt video -tutorials. Jeg vil ikke gå for meget i detaljer her.

Trin 1: Design af brugergrænseflader

UI -interface design
UI -interface design
UI -interface design
UI -interface design
UI -interface design
UI -interface design
UI -interface design
UI -interface design

Photoshop

Jeg designede følgende to UI -sider med Photoshop:

Dette projekt har de to ovenstående sider i alt. "Lys" og "Sensor" i øverste højre hjørne er switch -knapperne på disse to sider.

På siden "Lys" kan du styre alle slags lys i dit hjem. På siden "Sensor" kan du kontrollere de værdier, der registreres af forskellige sensorer.

Efter udformningen af de ovenstående to sider kan vi udføre et knaplogikdesign gennem STONE TOOL -softwaren, der findes på STONEs officielle websted.

Det er værd at bemærke, at den urkilde, der bruges til tidsvisningen her, er urets kilde på skærmen, ikke MCU -urkilden.

TAB -sideomskiftningseffekt

Der blev ikke fundet nogen TAB -sideomskiftningskomponent i STONE TOOL -softwaren, så jeg tænkte på en anden metode til at opnå TAB -sideomskiftningseffekten.

Gennem observationen giver jeg to UI-billeder kan findes, at de to billeder ovenfor er "Lys" og "Sensor" tekst, forskellen er, at deres pixelstørrelse er forskellig, så vi behøver kun at sætte to-pixel-positionen er indstillet til samme tekst, og derefter gennem det øverste venstre hjørne af tid og dato for reference, kan du opnå TAB'et for at skifte effekt.

Knappelogik

Tag knappen "Stue" som et eksempel. Når brugeren trykker på denne knap, vil skærmen STONE seriel port vise tilhørende protokolinstruktioner gennem den serielle port. Efter at have modtaget denne instruktion, vil brugerens MCU analysere protokollen for at kontrollere skiftetilstanden for lysene, der er forbundet med MCU'en.

Sensoroptagelse

Tag "luftkvalitet" for eksempel: hvis du vil have indendørs luftkvalitet, skal vi have en MCU til at indsamle luftkvalitet, luftkvalitetssensor, når MCU -numerisk indsamles gennem algoritme, der sammenligner fordele og ulemper ved luftkvalitet, og derefter MCU sendt via en seriel port for at vise lagerområdet for "Godt" eller "Dårligt", for at ændre "Tekstvariabel0" -indhold, og derefter kan brugeren intuitivt se kvalitetsstyringens fordele. Disse forklares senere i MCU -koden.

Trin 2: MCU -kommunikation

MCU kommunikation
MCU kommunikation
MCU kommunikation
MCU kommunikation
MCU kommunikation
MCU kommunikation
MCU kommunikation
MCU kommunikation

STM32 er MCU, som alle kender, og det er en fælles MCU -model i international. Derfor er den specifikke model af STM32 MCU, jeg brugte i dette projekt, STM32F103RCT6.

Der er mange serier af STM32, som kan opfylde forskellige krav på markedet. Kernen kan opdeles i cortex-m0, M3, M4 og M7, og hver kerne kan opdeles i mainstream, høj ydeevne og lavt strømforbrug.

Rent ud fra læringsperspektivet kan du vælge F1 og F4, F1 repræsenterer grundtypen, baseret på cortex-m3-kernen, hovedfrekvensen er 72MHZ, F4 repræsenterer den høje ydeevne, baseret på cortex-m4-kernen, den vigtigste frekvensen er 180 mio.

Hvad angår F1, F4 (429 -serien og nyere), bortset fra forskellige kerner og forbedring af hovedfrekvensen, er den oplagte funktion ved opgraderingen LCD -controller og kameragrænseflade, understøttelse af SDRAM, denne forskel vil blive prioriteret i projektvalg. Set fra universitetsundervisningen og brugernes indledende læring er F1 -serien dog stadig det første valg. I øjeblikket har STM32 i F1 -serien den største mængde materialer og produkter på markedet.

Om STM32 SCM udviklingsmiljø installation og program download metode, vil jeg ikke gøre introduktionen.

GPIO -initialisering

I dette projekt brugte vi i alt 4 GPIO, hvoraf den ene er PWM -udgangsstiften. Lad os først se på initialiseringen af tre almindelige GPIO -porte:

Denne funktion initialiserer PB0 / PB1 / PB2 for STM32F103C8 som output -pin og kalder den fra hovedfunktionen. Efter initialisering skal vi have en logik til at styre udgangstilstanden, højt og lavt niveau for denne GPIO, så jeg skrev funktionen som nedenfor:

Dette er en funktion, som du intuitivt kan forstå ved navnet på variablen.

Serial portinitialisering

Initialiseringsdelen af den serielle port er i uart.c:

Ring derefter til uart_init i hovedfunktionen for at initialisere den serielle ports baudhastighed på 115200. Pins bruger PA9/PA10

PWM -initialisering

Specifikke trin:

1. Indstil RCC -ur;

2. Indstil GPIO -uret. GPIO -tilstanden skal indstilles til GPIO_Model_AF_PP eller til GPIO_PinRemapConfig () -funktionen, hvis pin -omlægning er påkrævet.

3. Indstil relevante registre over TIMx -timer;

4. Indstil PWM -relateret register over TIMx -timer;

A. Indstil PWM -tilstand

B. Indstil driftscyklus (formelberegning)

C. Indstil output sammenligning polaritet (tidligere introduceret)

D. Vigtigst er det, at TIMx's output -tilstand aktiveres og PIM -output for TIMx aktiveres; Når de relevante indstillinger er fuldført, tændes TIMx -timeren af TIMx_Cmd () for at opnå PWM -output. Kald dette TIM3_PWM_Init fra hovedfunktionen.

Trin 3: Skrivning af logisk kode

Skrivning af logisk kode
Skrivning af logisk kode
Skrivning af logisk kode
Skrivning af logisk kode
Skrivning af logisk kode
Skrivning af logisk kode

Vis komponentadressedefinition

Komponenterne i displayet har separate adresser, og her har jeg skrevet dem alle som makrodefinitioner: Seriel datamodtagelse

Når man ser på oplysninger om STONE -displayet, kan man se, at når der trykkes på knappen, sender den serielle port på displayet protokoller i det passende format, som brugerens MCU kan modtage og analysere. Når der trykkes på knappen, sender den serielle port på displayet ni byte data, inklusive brugerdata. Seriel datamodtagelse skrives i Handler: De modtagne data gemmes i arrayet "USART_RX_BUF". I dette projekt er modtagelængden fast. Når modtagelængden er mere end 9 bytes, bedømmes den modtagende ende.

Kontroller lampens koblingstilstand

I hovedfunktionen skrev jeg en logisk kode for at styre lampens switch -tilstand: Som vi kan se, bestemmer koden først, om dataene i den serielle port modtages, og når serielle portdata modtages, bestemmer den hvilken knap brugeren trykker på displayet. Forskellige knapper på displayet har forskellige adresser, som kan ses i STONE TOOL -softwaren: Når brugeren trykker på "Living Room" -knappen, er den fjerde og femte bit af de data, der sendes ud af den serielle port på displayskærmen, adresse på knappen. Da den fjerde bit af alle knapperne her er 0x00, kan vi bedømme hvilken knap brugeren trykker på ved direkte at bedømme dataene for den femte bit. Efter at have opnået den knap, der trykkes af brugeren, skal vi bedømme de modtagne brugerdata, når der trykkes på knappen, hvilket er det ottende ciffer i de data, der sendes fra displayet. Derfor foretager vi følgende kontrol: skriv knapadresseparameteren og brugerdata i funktionen "Light_Contral" for at styre lysets tændtilstand. Light_Contral-funktionsenheden er som følger: Som du kan se, hvis knapadressen er "Living Room" og brugerdataene er "LightOn", er PB0-stiften på MCU'en indstillet til output på højt niveau, og lyset er tændt. De tre andre knapper ligner hinanden, men jeg vil ikke fortsætte her.

PWM output

I brugergrænsefladen, der er designet af mig, er der en glidende regulator, som bruges til at styre lysstyrken i lyset i "Børneværelse". MCU implementeres af PWM. PWM output pin er PB5. Koden er som følger: Glidestilleren er indstillet til en minimumsværdi på 0x00 og en maksimalværdi på 0x64. Ved glidning vil den serielle port på skærmen også sende relevante adresser og data og derefter indstille driftsforholdet for PWM -output ved at kalde følgende funktion:

Trin 4: Sensoranskaffelse

Sensoranskaffelse
Sensoranskaffelse
Sensoranskaffelse
Sensoranskaffelse
Sensoranskaffelse
Sensoranskaffelse

På siden med "Sensor" på displayet er der fire sensordata.

Dataene har også en lagringsadresse i displayet, og vi kan ændre det virkelige indhold ved blot at skrive data til disse adresser via den serielle port på MCU'en.

Her lavede jeg en simpel kodeimplementering:

Displaydataene opdateres hvert 5. sekund, og jeg skrev kun en simpel demo af den relevante sensoropsamlingsfunktion, fordi jeg ikke har disse sensorer i hånden.

I reel projektudvikling kan disse sensorer være data indsamlet af ADC eller data indsamlet af IIC-, UART- og SPI -kommunikationsgrænseflader. Alt du skal gøre er at skrive disse data i den tilsvarende funktion som returværdien.

Trin 5: Faktisk driftseffekt

Anbefalede: