Tartalomjegyzék:

STONE LCD intelligens otthonnal: 5 lépés
STONE LCD intelligens otthonnal: 5 lépés

Videó: STONE LCD intelligens otthonnal: 5 lépés

Videó: STONE LCD intelligens otthonnal: 5 lépés
Videó: Григорий Хайтин: сложность, метабиология, Гёдель, холодный синтез 2024, Július
Anonim
STONE LCD intelligens otthonnal
STONE LCD intelligens otthonnal

Ma kaptam a STONE soros port meghajtó kijelzőjét, amely képes kommunikálni az MCU soros portján keresztül, és ennek a kijelzőnek az UI logikai kialakítása közvetlenül megtervezhető a STONE hivatalos honlapján található VGUS szoftver használatával, ami nagyon kényelmes számunkra. Így azt tervezem, hogy egy egyszerű készülékvezérlőt fogok készíteni, amely magában foglalja a különböző lámpák (nappali, konyha, gyermekszoba, fürdőszoba) vezérlését. Ugyanakkor begyűjthető a beltéri és a kültéri hőmérséklet, a páratartalom és a levegő minősége. Ez csak egy egyszerű demó, és másodlagos fejlesztéseket végezhet az általam megadott kód segítségével. Néhány alapvető oktatóanyag a STONE képernyőről a következő webhelyen található:

A webhelyen sokféle információ található a modellről, a felhasználóról és a tervezési dokumentációról, valamint videó oktatóanyagok. Nem részletezem itt túl részletesen.

1. lépés: UI interfész tervezés

UI interfész tervezés
UI interfész tervezés
UI interfész tervezés
UI interfész tervezés
UI interfész tervezés
UI interfész tervezés
UI interfész tervezés
UI interfész tervezés

Photoshop

A következő két felhasználói felületet terveztem Photoshoppal:

Ennek a projektnek összesen a fenti két oldala van. A "Fény" és az "Érzékelő" a jobb felső sarokban ennek a két oldalnak a kapcsológombjai.

A "Fény" oldalon mindenféle lámpát vezérelhet otthonában. Az "Érzékelő" oldalon ellenőrizheti a különböző érzékelők által észlelt értékeket.

A fenti két oldal megtervezése után gomblogikai tervezést végezhetünk a STONE hivatalos weboldalán található STONE TOOL szoftver segítségével.

Érdemes megjegyezni, hogy az időkijelzéshez használt óraforrás itt a kijelző órajele, nem pedig az MCU óraforrás.

TAB oldalváltási hatás

A STONE TOOL szoftverben nem találtunk TAB oldalváltó összetevőt, ezért más módszerre gondoltam a TAB oldalváltási hatás elérésére.

A megfigyelés során két UI-képet találunk arról, hogy a fenti két kép "Fény" és "Érzékelő" szöveg, a különbség az, hogy a képpontok mérete eltérő, ezért csak a két képpont helyzetét kell beállítani ugyanazt a szöveget, majd az idő és a dátum bal felső sarkában hivatkozásként elérheti a TAB -ot a váltáshoz.

Gomb logika

Vegyük példaként a "Nappali" gombot. Amikor a felhasználó megnyomja ezt a gombot, a STONE soros port kijelző képernyő elküldi a megfelelő protokoll utasításokat a soros porton keresztül. Miután megkapta ezt az utasítást, a felhasználó MCU elemzi a protokollt, hogy vezérelje az MCU -hoz csatlakoztatott lámpák kapcsolási állapotát.

Érzékelő beszerzése

Vegyük például a "levegő minőségét": ha meg akarja kapni a beltéri levegő minőségét, rendelkeznünk kell egy MCU -val a levegőminőség gyűjtésére, és a levegőminőség -érzékelővel, amikor az MCU numerikus összegyűjtése a levegőminőség előnyeit és hátrányait összehasonlító algoritmuson keresztül történik, majd A soros porton keresztül küldött MCU a "Jó" vagy a "Rossz" tárolóterület megjelenítéséhez, a "Text variable0" megjelenítési tartalom megváltoztatásához, majd a felhasználó intuitív módon láthatja a minőség -ellenőrzés érdemeit. Ezeket később az MCU kód ismerteti.

2. lépés: MCU kommunikáció

MCU kommunikáció
MCU kommunikáció
MCU kommunikáció
MCU kommunikáció
MCU kommunikáció
MCU kommunikáció
MCU kommunikáció
MCU kommunikáció

Az STM32 az MCU, amelyet mindenki ismer, és ez egy nemzetközi MCU -modell. Ezért az ebben a projektben használt STM32 MCU I modell az STM32F103RCT6.

Számos STM32 sorozat létezik, amelyek megfelelnek a piac különböző igényeinek. A kernel cortex-m0, M3, M4 és M7 típusokra osztható, és mindegyik kernel a mainstream, nagy teljesítményű és alacsony energiafogyasztású.

Pusztán a tanulás szempontjából választhat F1 és F4, az F1 az alaptípust képviseli, a cortex-m3 kernel alapján, a fő frekvencia 72 MHz, az F4 a nagy teljesítményt jelenti, a cortex-m4 kernel alapján, a fő frekvenciája 180M.

Ami az F1 -et, az F4 -et (429 -es és újabb sorozatok) illeti, a különböző rendszermagokon és a főfrekvencia javításán kívül a frissítés nyilvánvaló jellemzője az LCD vezérlő és a kamera interfésze, az SDRAM támogatása, ez a különbség elsőbbséget élvez a projekt kiválasztásakor. Az egyetemi oktatás és a felhasználók kezdeti tanulása szempontjából azonban továbbra is az F1 sorozat az első választás. Jelenleg az F1 -es sorozat STM32 -ben van a legnagyobb mennyiségű anyag és termék a piacon.

Az STM32 SCM fejlesztői környezet telepítési és programletöltési módszeréről nem fogom bevezetni.

GPIO inicializálás

Ebben a projektben összesen 4 GPIO -t használtunk, amelyek közül az egyik a PWM kimeneti csap. Nézzük először három szokásos GPIO port inicializálását:

Ez a funkció inicializálja az STM32F103C8 PB0 / PB1 / PB2 kimeneti tűjét, és hívja a fő funkcióból. Az inicializálás után szükségünk van egy logikára, amely vezérli a GPIO kimeneti állapotát, magas és alacsony szintjét, ezért a függvényt az alábbiak szerint írtam:

Ez egy olyan funkció, amelyet a változó neve alapján intuitív módon megérthet.

Soros port inicializálása

A soros port inicializáló része az uart.c fájlban található:

Ezután hívja az uart_init parancsot a fő funkcióban, hogy inicializálja a 115200 soros port átviteli sebességét. A csapok PA9/PA10 -et használnak

PWM inicializálás

Konkrét lépések:

1. Állítsa be az RCC órát;

2. Állítsa be a GPIO órát; A GPIO módot a GPIO_Model_AF_PP, vagy a GPIO_PinRemapConfig () függvényre kell állítani, ha szükséges a pin újratelepítése.

3. Állítsa be a TIMx időzítő vonatkozó regisztereit;

4. Állítsa be a TIMx időzítő PWM -hez kapcsolódó regiszterét;

A. Állítsa be a PWM módot

B. Állítsa be a működési ciklust (képletszámítás)

C. Állítsa be a kimeneti összehasonlító polaritást (korábban bevezetett)

D. A legfontosabb, hogy engedélyezze a TIMx kimeneti állapotát, és engedélyezze a TIMx PWM kimenetét; A megfelelő beállítások elvégzése után a TIMx_Cmd () bekapcsolja a TIMx időzítőt a PWM kimenet eléréséhez. Hívja ezt a TIM3_PWM_Init -et a fő funkcióból.

3. lépés: Logikai kódírás

Logikai kódírás
Logikai kódírás
Logikai kódírás
Logikai kódírás
Logikai kódírás
Logikai kódírás

A komponens címdefiníciójának megjelenítése

A kijelző összetevőinek külön címe van, és itt mindet makródefinícióként írtam: Soros adatfogadás

A STONE kijelzőre vonatkozó információkat tekintve láthatja, hogy a gomb megnyomásakor a kijelző soros portja megfelelő formátumú protokollokat küld, amelyeket a felhasználói MCU fogadhat és elemezhet. Amikor megnyomja a gombot, a soros port a kijelzőn kilenc bájt adatot küld, beleértve a felhasználói adatokat is. A soros adatok fogadása a Handlerben van írva: A fogadott adatokat a "USART_RX_BUF" tömb tárolja. Ebben a projektben a fogadási hossz rögzített. Ha a fogadás hossza meghaladja a 9 bájtot, akkor a fogadó végét kell megítélni.

A lámpa kapcsolási állapotának szabályozása

A fő funkcióban néhány logikai kódot írtam a lámpa kapcsolóállapotának szabályozására: Amint látjuk, a kód először meghatározza, hogy a soros port adatai érkeznek -e, és amikor a soros port adatai megérkeznek, meghatározza, hogy melyik gombot használja a felhasználó megnyomja a kijelzőt. A kijelző különböző gombjai különböző címekkel rendelkeznek, amelyek láthatók a STONE TOOL szoftverben: Amikor a felhasználó megnyomja a "Nappali" gombot, a kijelző soros portja által küldött adatok negyedik és ötödik bitje a a gomb címe. Mivel az összes itt beállított gomb negyedik bitje 0x00, az ötödik bit adatainak közvetlen megítélése alapján meg tudjuk ítélni, hogy melyik gombot nyomja meg a felhasználó. Miután megszereztük a felhasználó által megnyomott gombot, meg kell ítélnünk a gomb megnyomásakor kapott felhasználói adatokat, ami a kijelzőről küldött adatok nyolcadik számjegye. Ezért a következő vezérlést hajtjuk végre: írja be a gomb címparaméterét és a felhasználói adatokat a "Light_Contral" funkcióba a fény be- és kikapcsolási állapotának szabályozásához. A Light_Contral funkció entitás a következő: Mint látható, ha a gomb címe "Nappali", és a felhasználói adatok "LightOn", akkor az MCU PB0 érintkezője magas szintű kimenetre van állítva, és a fény világít. A másik három gomb hasonló, de itt nem folytatom.

PWM kimenet

Az általam tervezett felhasználói felületen van egy csúszó szabályozó, amely a "Gyermekszoba" fényerejének szabályozására szolgál. Az MCU -t a PWM valósítja meg. A PWM kimeneti csap PB5. A kód a következő: A csúszó beállító minimális értéke 0x00, maximális értéke 0x64. Csúsztatáskor a kijelző soros portja is releváns címeket és adatokat küld, majd beállítja a PWM kimenet teljesítményarányát a következő funkció meghívásával:

4. lépés: Érzékelő beszerzése

Érzékelő beszerzése
Érzékelő beszerzése
Érzékelő beszerzése
Érzékelő beszerzése
Érzékelő beszerzése
Érzékelő beszerzése

A kijelző "Érzékelő" oldalán négy érzékelő adat található.

Az adatok tárolási címmel is rendelkeznek a kijelzőn, és megváltoztathatjuk a valódi tartalmat, ha egyszerűen adatokat írunk ezekre a címekre az MCU soros portján keresztül.

Itt készítettem egy egyszerű kód implementációt:

A kijelző adatai 5 másodpercenként frissülnek, és csak egy egyszerű demót írtam a vonatkozó érzékelőgyűjtési funkcióról, mert nincsenek a kezemben ezek az érzékelők.

A valós projektfejlesztés során ezek az érzékelők lehetnek az ADC által gyűjtött adatok, vagy az IIC, UART és SPI kommunikációs interfészek által gyűjtött adatok. Mindössze annyit kell tennie, hogy ezeket az adatokat írja be a megfelelő függvénybe visszatérési értékként.

5. lépés: Tényleges működési hatás

Ajánlott: