Tartalomjegyzék:
- 1. lépés: UI interfész tervezés
- 2. lépés: MCU kommunikáció
- 3. lépés: Logikai kódírás
- 4. lépés: Érzékelő beszerzése
- 5. lépés: Tényleges működési hatás
Videó: STONE LCD intelligens otthonnal: 5 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:39
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
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ó
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
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
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:
Készítsen intelligens otthonvezérlő rendszert a STONE HMI kijelzőn: 23 lépés
Készítsen intelligens otthoni vezérlőrendszert a STONE HMI Disp-en: A projekt bemutatása Az alábbi bemutató bemutatja, hogyan kell használni a STONE STVC050WT-01 érintőképernyős modult egy egyszerű háztartási készülék-vezérlőrendszer létrehozásához
Hogyan barkácsoljunk intelligens redőnyöket SONOFF intelligens kapcsolókkal?: 14 lépés
Hogyan barkácsoljunk intelligens redőnyöket a SONOFF intelligens kapcsolókkal?: Használja a reteszelés módot a SONOFF intelligens kapcsolókban, hogy a szokásos redőnyöket/redőnyöket intelligensekké tegye és este lehúzni? Egyébként én
Intelligens ébresztőóra: Raspberry Pi -vel készült intelligens ébresztőóra: 10 lépés (képekkel)
Intelligens ébresztőóra: Raspberry Pi -vel készült intelligens ébresztőóra: Szeretett volna valaha okos órát? Ha igen, akkor ez a megoldás az Ön számára! Készítettem intelligens ébresztőórát, ez egy óra, amellyel megváltoztathatja az ébresztési időt a webhely szerint. Amikor a riasztó megszólal, hangjelzés (csipogó) és 2 lámpa hallatszik
IoT alapú intelligens kertészet és intelligens mezőgazdaság ESP32 használatával: 7 lépés
IoT alapú intelligens kertészet és intelligens mezőgazdaság ESP32 használatával: A világ idővel változik, és így a mezőgazdaság is. Manapság az emberek minden területen integrálják az elektronikát, és ez alól a mezőgazdaság sem kivétel. Az elektronika egyesülése a mezőgazdaságban segíti a gazdákat és a kerteket kezelő embereket. Ebben
Intelligens tárcsázás - automatikus javító intelligens hagyományos telefon: 8 lépés
Intelligens tárcsázás-automatikus javító intelligens hagyományos telefon: Az intelligens tárcsázás egy intelligens, automatikus korrekciós telefon, amelyet speciális igényű idősek számára fejlesztettek ki, és lehetővé teszi az idősek számára, hogy közvetlenül a megszokott hagyományos telefonokról tárcsázzanak. Csak a helyi idősek gondozási központjában végzett önkéntes munkával tudtam