Sisukord:

STONE Display +STM32 +kohvimasin: 6 sammu
STONE Display +STM32 +kohvimasin: 6 sammu

Video: STONE Display +STM32 +kohvimasin: 6 sammu

Video: STONE Display +STM32 +kohvimasin: 6 sammu
Video: PH meter circuit for micro controllers (arduino, stm32, rpi Pico, etc) 2024, November
Anonim
STONE Display +STM32 +kohvimasin
STONE Display +STM32 +kohvimasin

Olen MCU tarkvarainsener, hiljuti sain projekti, et olla kohvimasin, majapidamisnõuded puutetundliku ekraaniga, funktsioon on hea, ekraanivaliku kohal ei pruugi olla väga hea, õnneks saan selle projektiga otsustada, mida MCU kasutada ise, samuti saab kasutada, et otsustada, milline ekraan, nii et ma valisin STM32 sellist lihtsat ja hõlpsasti kasutatavat MCU -d, ekraani valisin STONE puutetundliku ekraani, ekraan on lihtne ja hõlpsasti kasutatav, Minu STM32 MCU ainult UART -side kaudu on sellega korras.

STONE seeria LCD -ekraan, mis suudab suhelda MCU jadapordi kaudu. Samal ajal saab selle ekraaniekraani kasutajaliidese loogilist disaini kujundada otse, kasutades STONE ametliku veebisaidi pakutavat STONE TOOL Boxi, mis on väga mugav. Nii et ma kasutan seda selle kohvimasina projekti jaoks. Samas jäädvustan lihtsalt põhiarengu. Kuna see on minu ettevõtte projekt, salvestan ainult lihtsa demo ja ei kirjuta täielikku koodi. Mõned põhilised õpetused kiviekraani kohta võivad minna veebisaidile: https://www.stoneitech.com/ Veebisaidil on mitmesugust teavet mudeli, kasutamise ja kujundusdokumentatsiooni kohta ning videoõpetusi. Ma ei hakka siin liiga detailidesse laskuma.

1. samm: kohvimasina kuvaekraani funktsiooni tutvustus

Sellel projektil on järgmised funktsioonid: l

  • Kuvab praeguse kellaaja ja kuupäeva
  • Ekraanil on neli nuppu americano, latte, cappuccino ja espresso jaoks.
  • Kuvab järelejäänud kohviubade, piima ja kohvisuhkru praeguse koguse
  • Tekstiekraan kuvab praeguse oleku

Neid mõisteid silmas pidades saate kujundada kasutajaliidese liidese. STONE puutetundlikest ekraanidest kasutajaliidese kujunduses on suhteliselt lihtne, kasutaja kujundab PhotoShopi tarkvara kaudu hea kasutajaliidese ja nupuefekti, STONE TOOL Boxi kaudu kujundab ekraanile häid pilte ja lisab oma nupud STONE TOOL Box loogika ja seeriaandmed tagastamisväärtus on ok, teil on seda väga lihtne arendada.

2. samm: tehke kasutajaliidese pildid STONE Display jaoks

Tehke STI -ekraani jaoks kasutajaliidese pilte
Tehke STI -ekraani jaoks kasutajaliidese pilte
Tehke STI -ekraani jaoks kasutajaliidese pilte
Tehke STI -ekraani jaoks kasutajaliidese pilte
Tehke STI -ekraani jaoks kasutajaliidese pilte
Tehke STI -ekraani jaoks kasutajaliidese pilte

Vastavalt funktsionaalsetele nõuetele tegin järgmised kaks kasutajaliidese kuvariliidest, millest üks on põhiliides ja teine nupu efekt.

STONE TOOL Boxi kasutamine Praegu pakub STONE TOOL. Uue projekti loomiseks avage see TOOL, seejärel importige kujundatud kasutajaliides piltide kuvamiseks ja lisage oma nupud, tekstiekraanid jne. STONE ametlikul veebisaidil on väga täielik õpetus selle tarkvara kasutamiseks : https:/ /www.stoneitech.com/support/download/video

Nuppude STONE TOOL Box lisamise ja komponentide kuvamise efektid on järgmised:

STONE TOOL Boxil on simulatsiooniekraani funktsioon, mille kaudu näete kasutajaliidese tööefekti:

Sel hetkel on minu kasutajaliidese kuvamine valmis ja mul jääb üle vaid kirjutada MCU -kood. Tegelike tulemuste nägemiseks laadige ekraanile alla STONE TOOL Boxi loodud failid.

Samm: STM32F103RCT6

STM32F103RCT6
STM32F103RCT6

STM32F103RCT6 MCU -l on võimsad funktsioonid. Siin on MCU põhiparameetrid:

  • Seeria: STM32F10X l Kerne
  • Käsivars - COTEX32
  • Kiirus: 72 MHz
  • Kommunikatsiooniliides: CAN, I2C, IrDA, LIN, SPI, UART/USART, USB
  • Välisseadmed: DMA, mootori juhtimine PWM, PDR, POR, PVD, PWM, temperatuuriandur, WDT
  • Programmi mälumaht: 256KB
  • Programmi mälu tüüp: FLASH
  • RAM -i maht: 48K
  • Pinge - toide (Vcc/Vdd): 2 V ~ 3,6 V
  • Ostsillaator: sisemine
  • Töötemperatuur: -40 ° C ~ 85 ° C
  • Pakend/korpus: 64 eluiga

Selles projektis kasutan UART, GPIO, Watch Dog ja STM32F103RCT6 taimerit. Nende välisseadmete areng on dokumenteeritud allpool. STM32 KASUTAB Keil MDK tarkvaraarendust, mis pole teile võõras, seega ei hakka ma selle tarkvara installimisviisi tutvustama. STM32 saab veebis simuleerida j-lingi või st-lingi ja muude simulatsioonivahendite abil. Järgmisel pildil on kasutatud STM32 trükkplaat:

4. samm: UART -seeria

Seriaal UART
Seriaal UART
Seriaal UART
Seriaal UART
Seriaal UART
Seriaal UART

STM32F103RCT6 -l on mitu jadaporti. Selles projektis kasutasin jadaporti kanalit PA9/PA10 ja jadapordi edastuskiiruseks määrati 115200.

GPIO

Selle projekti kasutajaliideses on kokku neli nuppu, mis on tegelikult nelja sorti kohvi valmistamine. Kohvimasinas realiseeritakse kohviubade arvu, piimatarbimise ja erinevate kohvide veevoolu juhtimine tegelikult andurite ja releede juhtimise kaudu, samal ajal kui ma lihtsalt kontrollin kõigepealt GPIO tihvti.

Samm: taimer

Taimer
Taimer
Taimer
Taimer

Taimeri lähtestamisel määrake sagedusjaotustegur PSC, siin on meie süsteemikell (72 MHz) sageduse jagamiseks

Seejärel määrake uuesti laadimise väärtus arr, mis tähendab, et kui meie taimer selle arr -ni jõuab, laadib taimer teisi väärtusi uuesti.

Näiteks kui seadsime taimerit loendama, on taimerite arvu väärtus võrdne arr ja see kustutatakse nulliga ning arvutatakse uuesti

Taimerite arv laaditakse uuesti ja üks kord on värskendus

Arvutage värskendamise aja valem Tout = ((arr +1)*(PSC +1))/Tclk

Valemi tuletamine: Talk on taimerite kellaallikas, siin on 72Mhz

Jagame eraldatud taktsageduse, määrame sagedusjaotuse väärtuseks PSC, seejärel jagame oma kõne PSC +1 -ks, meie taimeri lõplik sagedus on Tclk/(PSC +1) MHz

Seega peame siin sageduse all silmas seda, et meil on 1 sekundit kõne üle PSC +1 miljoni numbri (1 miljon = 10 ^ 6) ja iga numbri aeg on PSC +1 /kõne ning on lihtne mõista, et vastupidine sagedusest on periood ja iga numbri periood on siin PSC +1 /Kõnesekundid ja siis liigume 0 -st arr -ni (arr +1)*(PSC +1) /Tclk

Näiteks seadistame arr = 7199 ja PSC = 9999

Jagasime 72 MHz sageduseks 9999+1 võrdub 7200 Hz -ga

See on 9 000 loendit sekundis ja iga arv 1/7 200 sekundit

Seega salvestame siia 9 000 numbrit, et minna taimeriuuendusele (7199+1)*(1/7200) = 1 s, seega 1s läheb värskendusele.

tühine TIM3_Int_Init (u16 arr, u16 psc) {

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd (RCC_APB1Periph_TIM3, LUBATUD);

// kell TIM_TimeBaseStructure. TIM_Period = arr;

TIM_TimeBaseStructure. TIM_Prescaler = psc; TIM_TimeBaseStructure. TIM_ClockDivision = 0;

// TDTS = Tck_tim TIM_TimeBaseStructure. TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit (TIM3, & TIM_TimeBaseStructure);

Palun võtke meiega ühendust, kui vajate täielikku protseduuri:

www.stoneitech.com/contact

Vastan teile 12 tunni jooksul.

6. samm: valvekoer

Vahtkoer
Vahtkoer
Vahtkoer
Vahtkoer

Et vältida süsteemi jooksmist programmi töötamise ajal, lisasin valvekoera. Tegelikult kasutavad kõik MCU -d kasutavad projektid üldiselt valvekoera.

STM32-l on kaks sisseehitatud valvekoera, mis pakuvad suuremat turvalisust, aja täpsust ja paindlikkust. Tarkvaravigadest põhjustatud rikete avastamiseks ja lahendamiseks saab kasutada kahte valvekoera seadet (sõltumatu valve- ja aknavalvekoer). Kui loendur jõuab määratud ajalõpu väärtuseni, käivitatakse katkestus (ainult akna valvur) või süsteemi lähtestamine. Sõltumatu valvekoer (IWDG):

Tänu spetsiaalsele väikese kiirusega kellale (LSI) töötab see isegi siis, kui peakell ebaõnnestub.

See sobib kasutamiseks olukordades, kus valvekoer peab põhiprogrammist väljaspool töötama täiesti iseseisvalt ja nõuab vähest aja täpsust. Akende valvur (WWDG):

Juhib kella pärast APB1 kella pärast sagedusjaotust. Tuvastage ebanormaalselt hiline või enneaegne rakenduse töö konfigureeritava ajaakna kaudu. Sobib programmidele, mis nõuavad, et valvekoerad toimiksid Windowsi täpse ajastusega.

int main (tühine) {

delay_init ();

// viivituse algatamine NVIC_PriorityGroupConfig (NVIC_PriorityGroup_2);

// NVIC INIT uart_init (115200);

// UART INIT PAD_INIT ();

// Light Init IWDG_Init (4, 625);

samas (1) {

kui (USART_RX_END)

{lüliti (USART_RX_BUF [5])

{

kast Espresso:

CoffeeSelect (Espresso, USART_RX_BUF [8]);

murda;

juhtum Americano:

CoffeeSelect (Americano, USART_RX_BUF [8]);

Põhifunktsiooni põhiloogika on järgmine:

u8 taimer_cnt = 0;

tühine TIM3_IRQHandler (tühine) // TIM3

{

if (TIM_GetITStatus (TIM3, TIM_IT_Update)! = RESET)

{

TIM_ClearITPendingBit (TIM3, TIM_IT_Update);

taimer_cnt ++;

kui (timer_cnt> = 200)

{

milk_send [6] = piim ();

Lõpuks lisage taimeri katkestusse kood: Taimeri katkestuses on minu eesmärk kontrollida, kui palju kohvi ja piima on jäänud, ning seejärel saata tuvastatud väärtus jadaporti kaudu ekraanile. Piima ja kohviubade järelejäänud koguse mõõtmist teevad tavaliselt andurid. Lihtsad meetodid hõlmavad rõhuandureid, mis mõõdavad piima ja kohviubade hetkekaalu, et teha kindlaks, kui palju jääb järele.

Kirjutage viimasesse

See artikkel salvestab ainult minu projekti lihtsa arendusprotsessi. Arvestades ettevõtte projekti konfidentsiaalsust, valmistasin ka kasutajaliidese kuva liidese ise, mitte selle projekti tegelikku kasutajaliidese kuvamisliidest. STM32 koodiosa lisab ainult MCU perifeerse draiveri ja sellega seotud loogikakoodi. Arvestades ka ettevõtte projekti konfidentsiaalsust, ei anta konkreetset võtmetehnoloogia osa, palun mõistke. Kuid minu esitatud koodi kohaselt tehke koostööd STONE ekraaniga. mu sõbrad, kes on ka tarkvarainsenerid, peavad projekti lõpuleviimiseks kulutama vaid paar päeva, et lisada minu koodraamistikku peamised tehnilised osad.

Projekti kohta lisateabe saamiseks klõpsake siin