Sisällysluettelo:

STONE LCD Smart Home: 5 vaihetta
STONE LCD Smart Home: 5 vaihetta

Video: STONE LCD Smart Home: 5 vaihetta

Video: STONE LCD Smart Home: 5 vaihetta
Video: Возможна ли свободная энергия? Мы тестируем этот двигатель бесконечной энергии. 2024, Heinäkuu
Anonim
STONE LCD Smart Home
STONE LCD Smart Home

Tänään sain STONEn sarjaporttiaseman näytön, joka voi kommunikoida MCU: n sarjaportin kautta, ja tämän näytön käyttöliittymän logiikka voidaan suunnitella suoraan käyttämällä STONEn virallisella verkkosivustolla olevaa VGUS -ohjelmistoa, mikä on erittäin kätevää meille. Joten aion käyttää sitä yksinkertaisen laiteohjaimen valmistamiseen, joka sisältää erilaisten valojen ohjaamisen (olohuone, keittiö, lastenhuone, kylpyhuone). Samalla voidaan kerätä sisä- ja ulkolämpötila, kosteus ja ilmanlaatu. Tämä on vain yksinkertainen esittely, ja voit suorittaa toissijaista kehittämistä antamani koodin avulla. Jotkut STONE -näytön perusoppaat voivat mennä verkkosivustolle:

Sivustolla on erilaisia tietoja mallista, käyttäjästä ja suunnitteludokumentaatiosta sekä video -oppaita. En mene tässä liikaa yksityiskohtiin.

Vaihe 1: Käyttöliittymän suunnittelu

Käyttöliittymän suunnittelu
Käyttöliittymän suunnittelu
Käyttöliittymän suunnittelu
Käyttöliittymän suunnittelu
Käyttöliittymän suunnittelu
Käyttöliittymän suunnittelu
Käyttöliittymän suunnittelu
Käyttöliittymän suunnittelu

Photoshop

Suunnittelin seuraavat kaksi käyttöliittymäsivua Photoshopilla:

Tässä projektissa on yhteensä kaksi yllä olevaa sivua. "Valo" ja "Anturi" oikeassa yläkulmassa ovat näiden kahden sivun kytkinpainikkeet.

"Valo" -sivulla voit hallita kaikenlaisia kotisi valoja. "Anturi" -sivulta voit tarkistaa eri antureiden havaitsemat arvot.

Yllä olevien kahden sivun suunnittelun jälkeen voimme suorittaa painikkeiden logiikan suunnittelun STONE TOOL -ohjelmiston avulla, joka on saatavana STONEn virallisella verkkosivustolla.

On syytä huomata, että aikanäytössä käytetty kellolähde on näytön näytön lähde, ei MCU -kellolähde.

TAB -sivunvaihtotehoste

Mitään TAB -sivunvaihtokomponenttia ei löytynyt STONE TOOL -ohjelmistosta, joten ajattelin toista tapaa saavuttaa TAB -sivunvaihtotehoste.

Havaintojen kautta annan kaksi käyttöliittymäkuvaa, jotka havaitsevat, että yllä olevat kaksi kuvaa ovat "valo" ja "anturi", ero on niiden pikselikoko on erilainen, joten meidän tarvitsee vain laittaa kahden pikselin sijainti sama teksti, ja sitten kellonajan ja päivämäärän vasemman yläkulman kautta viittaus, voit saavuttaa TAB vaihtaa tehosteen.

Napin logiikka

Ota esimerkiksi "Olohuone" -painike. Kun käyttäjä painaa tätä painiketta, STONE -sarjaportin näyttöruutu lähettää vastaavat protokollaohjeet sarjaportin kautta. Tämän ohjeen vastaanottamisen jälkeen käyttäjän MCU jäsentää protokollan ohjatakseen MCU: hon kytkettyjen valojen kytkentätilaa.

Anturin hankinta

Otetaan esimerkiksi "ilmanlaatu": jos haluat saada sisäilman laadun, meillä on oltava MCU ilmanlaadun keräämiseen, ilmanlaatutunnistin, kun MCU -numero kerätään ilmanlaadun etuja ja haittoja vertaavan algoritmin avulla, ja sitten MCU lähetetään sarjaportin kautta näyttääkseen "hyvä" tai "huono" tallennusalueen, vaihtaakseen "Text variable0" -näytön sisältöä, ja sitten käyttäjä voi intuitiivisesti nähdä laadunvalvonnan edut. Nämä selitetään myöhemmin MCU -koodissa.

Vaihe 2: MCU -viestintä

MCU -viestintä
MCU -viestintä
MCU -viestintä
MCU -viestintä
MCU -viestintä
MCU -viestintä
MCU -viestintä
MCU -viestintä

STM32 on kaikille tuttu MCU, ja se on yleinen MCU -malli kansainvälisesti. Siksi tässä projektissa käytetty STM32 MCU I -malli on STM32F103RCT6.

STM32 -sarjoja on monia, jotka voivat vastata markkinoiden erilaisiin tarpeisiin. Ydin voidaan jakaa cortex-m0, M3, M4 ja M7, ja jokainen ydin voidaan jakaa valtavirtaan, korkeaan suorituskykyyn ja pieneen virrankulutukseen.

Pelkästään oppimisen näkökulmasta voit valita F1 ja F4, F1 edustaa perustyyppiä, joka perustuu cortex-m3-ytimeen, päätaajuus on 72 MHz, F4 edustaa korkeaa suorituskykyä, joka perustuu cortex-m4-ytimeen, tärkein taajuus on 180M.

Mitä tulee F1-, F4 -sarjaan (429 -sarja ja uudemmat), eri ytimien ja päätaajuuden parantamisen lisäksi päivityksen ilmeinen piirre on LCD -ohjain ja kameran käyttöliittymä, SDRAM -tuki, tämä ero asetetaan etusijalle projektin valinnassa. Yliopisto -opetuksen ja käyttäjien alkuopetuksen kannalta F1 -sarja on kuitenkin edelleen ensimmäinen valinta. Tällä hetkellä F1 -sarjan STM32: ssa on markkinoiden suurin määrä materiaaleja ja tuotteita.

Tietoja STM32 SCM -kehitysympäristön asennuksesta ja ohjelman latausmenetelmästä en aio esitellä.

GPIO -alustus

Tässä projektissa käytimme yhteensä 4 GPIO: ta, joista yksi on PWM -ulostulonappi. Katsotaanpa ensin kolmen tavallisen GPIO -portin alustamista:

Tämä toiminto alustaa STM32F103C8: n PB0 / PB1 / PB2 lähtönastana ja kutsuu sen päätoiminnosta. Alustuksen jälkeen meillä on oltava logiikka tämän GPIO: n lähtötilan, korkean ja matalan tason hallitsemiseksi, joten kirjoitin toiminnon seuraavasti:

Tämä on toiminto, jonka voit ymmärtää intuitiivisesti muuttujan nimen perusteella.

Sarjaportin alustus

Sarjaportin alustusosa on uart.c:

Soita sitten päätoiminnon uart_init -komento alustamaan sarjaportin baudinopeus 115200. Nastat käyttävät PA9/PA10

PWM -alustus

Erityiset vaiheet:

1. Aseta RCC -kello;

2. Aseta GPIO -kello; GPIO -tilaksi on asetettava GPIO_Model_AF_PP tai GPIO_PinRemapConfig () -toiminto, jos nastan uudelleenmuodostus on tarpeen.

3. Aseta asiaankuuluvat TIMx -ajastimen rekisterit;

4. Aseta TIMx -ajastimen PWM -rekisteri;

A. Aseta PWM -tila

Aseta käyttöjakso (kaavan laskenta)

Aseta lähtövertailun napaisuus (aiemmin käyttöön otettu)

D. Mikä tärkeintä, ota käyttöön TIMx: n lähtötila ja ota käyttöön TIMx: n PWM -lähtö; Kun tarvittavat asetukset on suoritettu, TIMx_Cmd () kytkee TIMx -ajastimen päälle PWM -lähdön saamiseksi. Kutsu tätä TIM3_PWM_Init päätoiminnosta.

Vaihe 3: Loogisen koodin kirjoittaminen

Loogisen koodin kirjoittaminen
Loogisen koodin kirjoittaminen
Loogisen koodin kirjoittaminen
Loogisen koodin kirjoittaminen
Loogisen koodin kirjoittaminen
Loogisen koodin kirjoittaminen

Näytä komponentin osoitteen määritys

Näytön osilla on erilliset osoitteet, ja olen kirjoittanut ne kaikki makromäärittelyiksi: Sarjadatan vastaanotto

Tarkasteltaessa STONE -näytön tietoja näet, että kun painiketta painetaan, näytön sarjaportti lähettää protokollat sopivassa muodossa, jotka käyttäjän MCU voi vastaanottaa ja jäsentää. Kun painiketta painetaan, näytön sarjaportti lähettää yhdeksän tavua dataa, mukaan lukien käyttäjätiedot. Sarjatietojen vastaanotto on kirjoitettu käsittelijälle: Vastaanotetut tiedot tallennetaan "USART_RX_BUF" -matriisiin. Tässä projektissa vastaanottopituus on kiinteä. Kun vastaanottopituus on yli 9 tavua, vastaanottopää arvioidaan.

Ohjaa lampun kytkentätilaa

Päätoiminnossa kirjoitin jonkin logiikkakoodin lampun kytkimen tilan ohjaamiseksi: Kuten näemme, koodi määrittää ensin, onko sarjaporttitiedot vastaanotettu, ja kun sarjaporttitiedot vastaanotetaan, määrittää, mitä painiketta käyttäjä käyttää painaa näyttöruudussa. Näytön eri painikkeilla on eri osoitteet, jotka näkyvät STONE TOOL -ohjelmistossa: Kun käyttäjä painaa "Olohuone" -painiketta, näyttöruudun sarjaportin lähettämien tietojen neljäs ja viides bitti ovat painikkeen osoite. Koska kaikkien tässä asetettujen painikkeiden neljäs bitti on 0x00, voimme arvioida, mitä painiketta käyttäjä painaa, arvioimalla suoraan viidennen bitin tiedot. Kun olemme saaneet käyttäjän painetun painikkeen, meidän on arvioitava painiketta painettaessa vastaanotetut käyttäjätiedot, joka on näyttöruudusta lähetettyjen tietojen kahdeksas numero. Siksi teemme seuraavan ohjauksen: kirjoita painikkeen osoiteparametri ja käyttäjätiedot "Light_Contral" -toimintoon valon päälle / pois-tilan ohjaamiseksi. Light_Contral-toiminnon kokonaisuus on seuraava: Kuten huomaat, jos painikkeen osoite on "Olohuone" ja käyttäjätiedot "LightOn", MCU: n PB0-nasta on asetettu korkean tason lähtöön ja valo palaa. Muut kolme painiketta ovat samanlaisia, mutta en jatka tässä.

PWM -lähtö

Suunnittelemassani käyttöliittymässä on liukuva säädin, jota käytetään "Lastenhuoneen" valon kirkkauden säätämiseen. MCU toteutetaan PWM: llä. PWM -lähtötappi on PB5. Koodi on seuraava: Liukuva säädin on asetettu minimiarvoon 0x00 ja enimmäisarvoon 0x64. Kun liukuu, näyttöruudun sarjaportti lähettää myös asiaankuuluvat osoitteet ja tiedot ja asettaa sitten PWM -ulostulon käyttöasteen kutsumalla seuraavaa toimintoa:

Vaihe 4: Anturin hankinta

Anturin hankinta
Anturin hankinta
Anturin hankinta
Anturin hankinta
Anturin hankinta
Anturin hankinta

Näytön "Sensor" -sivulla on neljä anturitietoa.

Datalla on myös tallennusosoite näytössä, ja voimme muuttaa todellista sisältöä yksinkertaisesti kirjoittamalla dataa näihin osoitteisiin MCU: n sarjaportin kautta.

Tässä tein yksinkertaisen koodin toteutuksen:

Näytön tiedot päivitetään viiden sekunnin välein, ja kirjoitin vain yksinkertaisen esityksen asiaankuuluvasta anturien keräystoiminnosta, koska minulla ei ole näitä antureita kädessäni.

Todellisessa projektikehityksessä nämä anturit voivat olla ADC: n keräämiä tietoja tai IIC-, UART- ja SPI -viestintärajapintojen keräämiä tietoja. Sinun tarvitsee vain kirjoittaa nämä tiedot vastaavaan funktioon palautusarvona.

Vaihe 5: Todellinen toimintatehoste

Suositeltava: