Turinys:

STONE ekranas +STM32 +kavos virimo aparatas: 6 žingsniai
STONE ekranas +STM32 +kavos virimo aparatas: 6 žingsniai

Video: STONE ekranas +STM32 +kavos virimo aparatas: 6 žingsniai

Video: STONE ekranas +STM32 +kavos virimo aparatas: 6 žingsniai
Video: STONE screen of the medical ventilator application 2024, Lapkritis
Anonim
STONE ekranas +STM32 +kavos virimo aparatas
STONE ekranas +STM32 +kavos virimo aparatas

Esu MCU programinės įrangos inžinierius, neseniai gavau projektą būti kavos aparatu, buitiniai reikalavimai su jutikliniu ekranu, funkcija yra gera, virš ekrano pasirinkimas gali būti nelabai geras, laimei, šis projektas galiu nuspręsti, ką MCU, kad galėčiau naudoti save, taip pat gali būti naudojamas nuspręsti, koks ekranas, todėl aš pasirinkau tokio paprasto ir lengvai naudojamo MCU STM32, ekrano ekraną pasirinkau STONE jutiklinį ekraną, ekranas yra paprastas ir lengvai naudojamas, Mano STM32 MCU tik per UART ryšį yra tinkamas.

STONE serijinis LCD ekranas, kuris gali bendrauti per MCU nuoseklųjį prievadą. Tuo pačiu metu šio ekrano UI sąsajos loginį dizainą galima sukurti tiesiogiai naudojant STONE TOOL Box, pateiktą oficialioje STONE svetainėje, o tai yra labai patogu. Taigi aš ketinu jį naudoti šiam kavos aparato projektui. Tuo pačiu metu aš tiesiog įrašysiu pagrindinę raidą. Kadangi tai yra mano įmonės projektas, aš įrašysiu tik paprastą demonstraciją ir nerašysiu viso kodo. Kai kurios pagrindinės pamokos apie akmeninį ekraną gali būti pateiktos svetainėje: https://www.stoneitech.com/ Svetainėje yra įvairios informacijos apie modelį, naudojimą ir dizaino dokumentus, taip pat vaizdo įrašų vadovėliai. Čia per daug nesileisiu į detales.

1 žingsnis: kavos aparato ekrano ekrano funkcijos įvadas

Šis projektas turi šias funkcijas: l

  • Rodo dabartinį laiką ir datą
  • Ekrane yra keturi mygtukai „americano“, „latte“, „cappuccino“ir espresso.
  • Rodo esamą likusių kavos pupelių, pieno ir kavos cukraus kiekį
  • Teksto rodymo laukelyje rodoma dabartinė būsena

Turėdami omenyje šias sąvokas, galite sukurti vartotojo sąsają. JUO dizaino jutiklinių ekranų akmuo yra gana paprastas, vartotojas per „PhotoShop“programinę įrangą sukuria gerą vartotojo sąsajos ir mygtukų efektą, per „STONE TOOL Box“, kad sukurtų geras nuotraukas į ekraną, ir pridėkite savo mygtukus su „STONE TOOL Box“logika ir serijos duomenys, grąžinimo vertė yra gera, jums labai lengva sukurti.

2 veiksmas: sukurkite UI paveikslėlius akmeniniam ekranui

Sukurkite UI paveikslėlius akmeniniam ekranui
Sukurkite UI paveikslėlius akmeniniam ekranui
Sukurkite UI paveikslėlius akmeniniam ekranui
Sukurkite UI paveikslėlius akmeniniam ekranui
Sukurkite UI paveikslėlius akmeniniam ekranui
Sukurkite UI paveikslėlius akmeniniam ekranui

Pagal funkcinius reikalavimus sukūriau šias dvi vartotojo sąsajos ekrano sąsajas, viena yra pagrindinė sąsaja, o kita - mygtukų efektas.

STONE TOOL Box naudojimas Šiuo metu STONE siūlo TOOL. Atidarykite šį ĮRANKĮ, kad sukurtumėte naują projektą, tada importuokite sukurtą vartotojo sąsają, kad būtų rodomos nuotraukos, ir pridėkite savo mygtukus, teksto rodymo laukelius ir tt Oficialioje STONE svetainėje yra labai išsami šios programinės įrangos naudojimo pamoka : https:/ /www.stoneitech.com/support/download/video

Mygtuko pridėjimo ir komponentų rodymo STONE TOOL dėžutėje poveikis yra toks:

„STONE TOOL Box“turi simuliacinio ekrano funkciją, per kurią galite pamatyti UI sąsajos veikimo efektą:

Šiuo metu mano vartotojo sąsajos ekranas baigtas, ir viskas, ką turiu padaryti, yra parašyti MCU kodą. Atsisiųskite STONE TOOL Box sukurtus failus į ekrano ekraną, kad pamatytumėte faktinius rezultatus.

3 žingsnis: STM32F103RCT6

STM32F103RCT6
STM32F103RCT6

STM32F103RCT6 MCU turi galingų funkcijų. Čia yra pagrindiniai MCU parametrai:

  • Serija: STM32F10X l Kerne
  • ARM - COTEX32
  • Greitis: 72 MHz
  • Ryšio sąsaja: CAN, I2C, IrDA, LIN, SPI, UART/USART, USB
  • Išorinė įranga: DMA, variklio valdymas PWM, PDR, POR, PVD, PWM, temperatūros jutiklis, WDT
  • Programos talpa: 256 KB
  • Programos atminties tipas: Blykstė
  • RAM talpa: 48 tūkst
  • Įtampa - maitinimo šaltinis (Vcc/Vdd): 2 V ~ 3,6 V
  • Osciliatorius: vidinis
  • Darbinė temperatūra: -40 ° C ~ 85 ° C
  • Pakuotė/korpusas: 64 gyv

Šiame projekte naudosiu UART, GPIO, Watch Dog ir STM32F103RCT6 laikmatį. Šių periferinių įrenginių raida aprašyta žemiau. STM32 NAUDO „Keil MDK“programinės įrangos kūrimą, kuris jums nėra svetimas, todėl nesu pristatysiu šios programinės įrangos diegimo metodo. STM32 galima imituoti internete naudojant „j-link“arba „st-link“ir kitus modeliavimo įrankius. Šis paveikslėlis yra mano naudojama STM32 plokštė:

4 žingsnis: UART serialas

Serialas UART
Serialas UART
Serialas UART
Serialas UART
Serialas UART
Serialas UART

STM32F103RCT6 turi kelis nuoseklius prievadus. Šiame projekte naudojau nuoseklaus prievado kanalą PA9/PA10, o nuoseklaus prievado perdavimo sparta buvo nustatyta 115200.

GPIO

Šio projekto vartotojo sąsajoje iš viso yra keturi mygtukai, kurie iš tikrųjų yra keturių rūšių kavos ruošimas. Kavos virimo aparate kavos pupelių skaičiaus, pieno suvartojimo ir vandens srauto valdymas iš tikrųjų realizuojamas valdant jutiklius ir relės, o aš tiesiog pirmiausia valdau GPIO kaištį.

5 žingsnis: laikmatis

Laikmatis
Laikmatis
Laikmatis
Laikmatis

Inicijuodami laikmatį, nurodykite dažnio padalijimo koeficientą PSC, čia yra mūsų sistemos laikrodis (72MHz) dažnių dalijimui

Tada nurodykite perkrovimo reikšmę arr, o tai reiškia, kad mūsų laikmačiui pasiekus šį arr, laikmatis perkraus kitas vertes.

Pavyzdžiui, kai laikmatį nustatome skaičiuoti, laikmačio skaičiaus vertė yra lygi arr ir bus išvalyta 0 ir perskaičiuota

Laikmatis vėl įkeliamas ir vieną kartą atnaujinamas

Apskaičiuokite atnaujinimo laiko formulę Tout = ((arr +1)*(PSC +1))/Tclk

Formulės išvedimas: „Talk“yra laikmačio laikrodžio šaltinis, čia yra 72 MHz

Mes padalijame paskirtą laikrodžio dažnį, nurodome dažnio padalijimo vertę kaip PSC, tada padalijame pokalbį į PSC +1, galutinis mūsų laikmačio dažnis yra Tclk/(PSC +1) MHz

Taigi, mes turime omenyje dažnumą, kad mes turime 1 pokalbį per PSC +1 M skaičių (1 M = 10 ^ 6), o kiekvieno skaičiaus laikas yra PSC +1 /pokalbis, ir lengva suprasti, kad atvirkštinis dažnio yra laikotarpis, o kiekvieno skaičiaus laikotarpis čia yra PSC +1 /pokalbio sekundės, o tada pereiname nuo 0 iki arr yra (arr +1)*(PSC +1) /Tclk

Pavyzdžiui, nustatykime arr = 7199 ir PSC = 9999

Mes padalijome 72 MHz į 9999+1 yra lygus 7200 Hz

Tai yra 9 000 skaičiavimų per sekundę, ir kiekvienas skaičius yra 1/7, 200 sekundės

Taigi čia įrašome 9 000 skaičių, norėdami pereiti prie laikmačio atnaujinimo (7199+1)*(1/7200) = 1 s, taigi 1s eina į atnaujinimą.

void TIM3_Int_Init (u16 arr., u16 psc) {

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd (RCC_APB1Periph_TIM3, ĮJUNGTI);

// laikrodis 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);

Prašome susisiekti su mumis, jei jums reikia visos procedūros:

www.stoneitech.com/contact

Aš jums atsakysiu per 12 valandų.

6 žingsnis: stebėkite šunį

Žiūrėti šunį
Žiūrėti šunį
Žiūrėti šunį
Žiūrėti šunį

Kad sistema nesugestų, kol programa veikė, pridėjau stebėtoją. Tiesą sakant, visuose projektuose, kuriuose naudojamas MCU, paprastai naudojamas stebėtojas.

STM32 turi du integruotus stebėtojus, kurie užtikrina didesnį saugumą, laiko tikslumą ir lankstumą. Programinės įrangos klaidų sukeltiems gedimams aptikti ir pašalinti gali būti naudojami du stebėtojų įrenginiai (nepriklausomas ir langų sargas). Kai skaitiklis pasiekia nurodytą skirtojo laiko reikšmę, suaktyvinamas pertraukimas (tik langų stebėtojas) arba iš naujo nustatoma sistema. Nepriklausomas sargas (IWDG):

Važiuojant specialiu mažo greičio laikrodžiu (LSI), jis veikia, net jei pagrindinis laikrodis sugenda.

Jis tinka naudoti situacijose, kai prižiūrėtojas turi dirbti visiškai savarankiškai ne pagrindinėje programoje ir reikalauja mažo laiko tikslumo. Langų stebėtojas (WWDG):

Važiuoja laikrodis iš APB1 laikrodžio po dažnio padalijimo. Nustatykite neįprastai vėlyvą ar per ankstyvą programos veikimą per konfigūruojamą laiko langą. Tinka programoms, kurioms reikia, kad stebėtojai veiktų tiksliai „Windows“.

int main (void) {

delay_init ();

// uždelsimo inicijavimas NVIC_PriorityGroupConfig (NVIC_PriorityGroup_2);

// NVIC INIT uart_init (115200);

// UART INIT PAD_INIT ();

// Light Init IWDG_Init (4, 625);

nors (1) {

jei (USART_RX_END)

{jungiklis (USART_RX_BUF [5])

{

Espresso dėklas:

„CoffeeSelect“(espreso kava, USART_RX_BUF [8]);

pertrauka;

atvejis Americano:

„CoffeeSelect“(„Americano“, USART_RX_BUF [8]);

Pagrindinės funkcijos pagrindinė logika yra tokia:

u8 laikmatis_cnt = 0;

void TIM3_IRQHandler (negalioja) // TIM3

{

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

{

TIM_ClearITPendingBit (TIM3, TIM_IT_Update);

timer_cnt ++;

jei (timer_cnt> = 200)

{

milk_send [6] = pienas ();

Galiausiai pridėkite kodą laikmačio pertraukoje: Laikmačio pertraukime mano tikslas yra patikrinti, kiek liko kavos ir pieno, ir tada nusiųsti nustatytą vertę į ekrano ekraną per nuoseklųjį prievadą. Išmatuoti, kiek liko pieno ir kavos pupelių, dažniausiai atlieka jutikliai. Paprasti metodai apima slėgio jutiklius, kurie matuoja esamą pieno ir kavos pupelių svorį, kad nustatytų, kiek liko.

Rašykite paskutiniame

Šiame straipsnyje įrašomas tik paprastas mano projekto kūrimo procesas. Atsižvelgiant į įmonės projekto konfidencialumą, mano naudojamą vartotojo sąsajos ekrano sąsają taip pat sukūriau aš, o ne tikroji šio projekto sąsaja. STM32 kodo dalis prideda tik periferinę MCU tvarkyklę ir susijusį loginį kodą. Taip pat, atsižvelgiant į įmonės projekto konfidencialumą, konkreti pagrindinių technologijų dalis nėra pateikta, prašome suprasti. Tačiau pagal mano pateiktą kodą bendradarbiaukite su STONE ekranu. mano draugams, kurie taip pat yra programinės įrangos inžinieriai, reikia tik kelių dienų, kad pridėtų pagrindines technines dalis prie mano kodo sistemos, kad užbaigtų projektą.

Norėdami sužinoti daugiau apie projektą, spustelėkite čia