Turinys:

STONE LCD su išmaniaisiais namais: 5 žingsniai
STONE LCD su išmaniaisiais namais: 5 žingsniai

Video: STONE LCD su išmaniaisiais namais: 5 žingsniai

Video: STONE LCD su išmaniaisiais namais: 5 žingsniai
Video: Book 02 - The Hunchback of Notre Dame Audiobook by Victor Hugo (Chs 1-7) 2024, Liepa
Anonim
STONE LCD su išmaniaisiais namais
STONE LCD su išmaniaisiais namais

Šiandien aš gavau STONE serijinio prievado disko ekraną, kuris gali bendrauti per MCU nuoseklųjį prievadą, o šio ekrano UI loginis dizainas gali būti sukurtas tiesiogiai, naudojant VGUS programinę įrangą, pateiktą oficialioje STONE svetainėje, o tai mums labai patogu. Taigi planuoju iš jo pagaminti paprastą prietaiso valdiklį, į kurį įeina įvairių šviesų valdymas (svetainė, virtuvė, vaikų kambarys, vonios kambarys). Tuo pačiu metu galima surinkti patalpų ir lauko temperatūrą, drėgmę ir oro kokybę. Tai tik paprasta demonstracija, ir jūs galite atlikti antrinį kūrimą naudodami mano pateiktą kodą. Keletą pagrindinių pamokų apie STONE ekraną galite rasti svetainėje:

Svetainėje yra įvairios informacijos apie modelį, naudotoją ir dizaino dokumentus, taip pat vaizdo įrašų vadovėliai. Čia per daug nesileisiu į detales.

1 žingsnis: vartotojo sąsajos dizainas

UI sąsajos dizainas
UI sąsajos dizainas
UI sąsajos dizainas
UI sąsajos dizainas
UI sąsajos dizainas
UI sąsajos dizainas
UI sąsajos dizainas
UI sąsajos dizainas

„Photoshop“

Aš sukūriau šiuos du vartotojo sąsajos puslapius su „Photoshop“:

Šis projektas iš viso turi aukščiau du puslapius. Šviesa ir jutiklis viršutiniame dešiniajame kampe yra šių dviejų puslapių perjungimo mygtukai.

Puslapyje „Šviesa“galite valdyti visų rūšių žibintus savo namuose. Puslapyje „Jutiklis“galite patikrinti įvairių jutiklių aptiktas vertes.

Sukūrę pirmiau minėtus du puslapius, galime atlikti loginio mygtuko dizainą per STONE TOOL programinę įrangą, pateiktą oficialioje STONE svetainėje.

Verta paminėti, kad čia rodomas laikrodžio šaltinis yra ekrano ekrano laikrodžio šaltinis, o ne MCU laikrodžio šaltinis.

TAB puslapio perjungimo efektas

Programinėje įrangoje „STONE TOOL“nerasta jokio TAB puslapio perjungimo komponento, todėl sugalvojau kitą būdą, kaip pasiekti TAB puslapio perjungimo efektą.

Stebėdamas, pateikiu du vartotojo sąsajos vaizdus, galima pamatyti, kad du aukščiau esantys vaizdai yra „Šviesos“ir „Jutiklio“tekstai, skirtumas yra tas, kad jų pikselių dydis yra skirtingas, todėl mums tereikia nustatyti dviejų pikselių padėtį tą patį tekstą, o po to viršutiniame kairiajame laiko ir datos kampe galite pasiekti TAB, kad pakeistumėte efektą.

Mygtuko logika

Kaip pavyzdį paimkite mygtuką „Svetainė“. Kai vartotojas paspaudžia šį mygtuką, STONE nuoseklaus prievado ekranas siunčia atitinkamas protokolo instrukcijas per nuoseklųjį prievadą. Gavęs šią instrukciją, vartotojo MCU analizuos protokolą, skirtą valdyti su MCU prijungtų žibintų perjungimo būseną.

Jutiklio įsigijimas

Paimkite, pavyzdžiui, „oro kokybę“: jei norite gauti patalpų oro kokybę, mes turime turėti MCU, kad surinktume oro kokybę, oro kokybės jutiklį, kai MCU skaičius surinktas naudojant algoritmą, lyginantį oro kokybės privalumus ir trūkumus, ir tada MCU siunčiamas per nuoseklųjį prievadą, kad būtų rodoma „Geras“arba „Blogas“saugojimo sritis, pakeistas „Teksto kintamasis 0“rodomas turinys, o tada vartotojas gali intuityviai pamatyti kokybės kontrolės privalumus. Tai paaiškinta vėliau MCU kodekse.

2 žingsnis: MCU komunikacija

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

STM32 yra MCU, su kuriuo visi yra susipažinę, ir tai yra įprastas MCU modelis tarptautiniu mastu. Todėl šiame projekte naudojamas specifinis STM32 MCU I modelis yra STM32F103RCT6.

Yra daug STM32 serijų, kurios gali patenkinti įvairius rinkos poreikius. Branduolį galima suskirstyti į „cortex-m0“, „M3“, „M4“ir „M7“, o kiekvieną branduolį galima suskirstyti į „mainstream“, didelį našumą ir mažą energijos suvartojimą.

Tik mokymosi požiūriu galite pasirinkti F1 ir F4, F1 reiškia pagrindinį tipą, pagrįstą žievės-m3 branduoliu, pagrindinis dažnis yra 72 MHz, F4 reiškia aukštą našumą, pagrįstą žievės-m4 branduoliu, pagrindinis dažnis yra 180 mln.

Kalbant apie F1, F4 (429 serijos ir naujesnės versijos), be skirtingų branduolių ir pagrindinio dažnio tobulinimo, akivaizdi atnaujinimo ypatybė yra LCD valdiklio ir fotoaparato sąsaja, SDRAM palaikymas, šiam skirtumui bus teikiama pirmenybė renkantis projektus. Tačiau, kalbant apie dėstymą universitete ir pradinį vartotojų mokymąsi, F1 serija vis dar yra pirmasis pasirinkimas. Šiuo metu F1 serijos STM32 turi didžiausią medžiagų ir gaminių kiekį rinkoje.

Apie STM32 SCM kūrimo aplinkos diegimo ir programos atsisiuntimo metodą įvado nepadarysiu.

GPIO inicijavimas

Šiame projekte iš viso panaudojome 4 GPIO, iš kurių vienas yra PWM išvesties kaištis. Pirmiausia pažvelkime į trijų įprastų GPIO prievadų inicijavimą:

Ši funkcija inicijuoja STM32F103C8 PB0 / PB1 / PB2 kaip išvesties kaištį ir iškviečia ją iš pagrindinės funkcijos. Po inicijavimo turime turėti logiką, leidžiančią valdyti šio GPIO išvesties būseną, aukštą ir žemą lygį, todėl parašiau funkciją taip:

Tai funkcija, kurią galite intuityviai suprasti pagal kintamojo pavadinimą.

Serijinio prievado inicijavimas

Serijinio prievado inicializavimo dalis yra uart.c:

Tada paskambinkite uart_init pagrindinėje funkcijoje, kad inicijuotumėte 115200 serijos prievado duomenų perdavimo spartą. Smeigtukai naudoja PA9/PA10

PWM inicijavimas

Konkretūs veiksmai:

1. Nustatykite RCC laikrodį;

2. Nustatykite GPIO laikrodį; GPIO režimas turėtų būti nustatytas į GPIO_Model_AF_PP arba į funkciją GPIO_PinRemapConfig (), jei reikia pertvarkyti kaištį.

3. Nustatykite atitinkamus TIMx laikmačio registrus;

4. Nustatykite su PWM susijusį TIMx laikmačio registrą;

A. Nustatykite PWM režimą

B. Nustatykite darbo ciklą (formulės apskaičiavimas)

C. Nustatykite išvesties palyginimo poliškumą (anksčiau pristatytas)

D. Svarbiausia, įgalinti TIMx išvesties būseną ir TIMx PWM išvestį; Užbaigus atitinkamus nustatymus, TIMx_Cmd () įjungia TIMx laikmatį, kad gautų PWM išvestį. Iš pagrindinės funkcijos vadinkite tai TIM3_PWM_Init.

3 žingsnis: loginio kodo rašymas

Loginio kodo rašymas
Loginio kodo rašymas
Loginio kodo rašymas
Loginio kodo rašymas
Loginio kodo rašymas
Loginio kodo rašymas

Rodyti komponento adreso apibrėžimą

Ekrano komponentai turi atskirus adresus, ir čia aš juos visus parašiau kaip makrokomandas: Serijinių duomenų priėmimas

Žvelgdami į informaciją apie STONE ekraną, galite pamatyti, kad paspaudus mygtuką, serijinis prievadas ekrane siunčia tinkamo formato protokolus, kuriuos vartotojo MCU gali priimti ir išanalizuoti. Paspaudus mygtuką, serijinis prievadas ekrane siunčia devynis baitus duomenų, įskaitant vartotojo duomenis. Serijos duomenų priėmimas rašomas tvarkytuve: gauti duomenys saugomi „USART_RX_BUF“masyve. Šiame projekte priėmimo ilgis yra fiksuotas. Kai priėmimo ilgis yra didesnis nei 9 baitai, vertinamas priėmimo galas.

Valdykite lempos perjungimo būseną

Pagrindinėje funkcijoje aš parašiau tam tikrą loginį kodą, kad valdyčiau lempos jungiklio būseną: Kaip matome, kodas pirmiausia nustato, ar gaunami nuoseklaus prievado duomenys, o kai gaunami nuoseklaus prievado duomenys, nustato, kurį mygtuką vartotojas paspaudžia ekrane. Skirtingi ekrano mygtukai turi skirtingus adresus, kuriuos galima pamatyti programinėje įrangoje „STONE TOOL“: kai vartotojas paspaudžia mygtuką „Gyvenamasis kambarys“, ketvirtasis ir penktasis duomenų bitai, siunčiami iš ekrano serijos prievado, yra mygtuko adresą. Kadangi ketvirtasis visų čia nustatytų mygtukų bitas yra 0x00, mes galime nuspręsti, kurį mygtuką vartotojas paspaudžia, tiesiogiai įvertindami penktojo bitų duomenis. Gavę vartotojo paspaustą mygtuką, turime įvertinti naudotojo duomenis, gautus paspaudus mygtuką, kuris yra aštuntas iš ekrano siunčiamų duomenų skaitmuo. Todėl mes atliekame tokį valdymą: įrašykite mygtuko adreso parametrą ir vartotojo duomenis į funkciją „Light_Contral“, kad valdytumėte šviesos įjungimo ir išjungimo būseną. „Light_Contral“funkcijos esmė yra tokia: Kaip matote, jei mygtuko adresas yra „Gyvenamasis kambarys“, o vartotojo duomenys yra „Šviesa įjungta“, tada MCU PB0 kaištis nustatytas į aukšto lygio išvestį ir lemputė įjungta. Kiti trys mygtukai yra panašūs, bet aš čia nesileisiu.

PWM išvestis

Mano sukurtoje vartotojo sąsajoje yra slankiojantis reguliatorius, naudojamas „Vaikų kambario“šviesos ryškumui valdyti. MCU įgyvendina PWM. PWM išvesties kaištis yra PB5. Kodas yra toks: slankiojančio reguliatoriaus minimali vertė yra 0x00, o didžiausia - 0x64. Slenkant, ekrano nuoseklusis prievadas taip pat siunčia atitinkamus adresus ir duomenis, tada nustato PWM išvesties koeficientą, iškviesdamas šią funkciją:

4 žingsnis: jutiklio įsigijimas

Jutiklio įsigijimas
Jutiklio įsigijimas
Jutiklio įsigijimas
Jutiklio įsigijimas
Jutiklio įsigijimas
Jutiklio įsigijimas

Ekrano „Jutiklio“puslapyje yra keturi jutiklio duomenys.

Duomenys taip pat turi saugyklos adresą ekrane, ir mes galime pakeisti tikrąjį turinį tiesiog rašydami duomenis į šiuos adresus per nuoseklųjį MCU prievadą.

Čia aš padariau paprastą kodo įgyvendinimą:

Ekrano duomenys atnaujinami kas 5 sekundes, o aš parašiau tik paprastą atitinkamos jutiklių surinkimo funkcijos demonstraciją, nes šių jutiklių rankoje neturiu.

Kuriant realų projektą, šie jutikliai gali būti ADC surinkti duomenys arba IIC, UART ir SPI ryšio sąsajų surinkti duomenys. Viskas, ką jums reikia padaryti, tai įrašyti šiuos duomenis į atitinkamą funkciją kaip grąžinimo vertę.

5 žingsnis: tikrasis veikimo efektas

Rekomenduojamas: