Indholdsfortegnelse:

STONE Display +STM32 +kaffemaskine: 6 trin
STONE Display +STM32 +kaffemaskine: 6 trin

Video: STONE Display +STM32 +kaffemaskine: 6 trin

Video: STONE Display +STM32 +kaffemaskine: 6 trin
Video: PH meter circuit for micro controllers (arduino, stm32, rpi Pico, etc) 2024, Juli
Anonim
STONE Display +STM32 +Kaffemaskine
STONE Display +STM32 +Kaffemaskine

Jeg er en MCU -softwareingeniør, har for nylig modtaget et projekt, der skal være en kaffemaskine, husstandskrav med en berøringsskærmbetjening, funktionen er god, er over skærmvalget måske ikke særlig god, heldigvis kan dette projekt bestemme hvad MCU til at bruge mig selv, også kan bruges til at bestemme, hvad skærmen, så jeg valgte STM32 af denne form for enkel og let MCU at bruge, skærm Jeg valgte STONE's touch screen display, skærmen er enkel og let at bruge, Min STM32 MCU kun via UART -kommunikation er ok med det.

STONE seriel LCD -skærm, som kan kommunikere gennem den serielle port på MCU. På samme tid kan det logiske design af UI -grænsefladen på denne skærm designes direkte ved hjælp af STONE TOOL Box fra STONE's officielle websted, hvilket er meget bekvemt. Så jeg vil bruge den til dette kaffemaskine projekt. Samtidig vil jeg simpelthen registrere den grundlæggende udvikling. Da dette er et projekt af mit firma, vil jeg kun optage en simpel demo og ikke skrive den komplette kode. Nogle grundlæggende vejledninger om stenskærmen kan gå til webstedet: https://www.stoneitech.com/ Webstedet har en række oplysninger om modellen, brugen og designdokumentationen samt videotutorials. Jeg vil ikke gå for meget i detaljer her.

Trin 1: Kaffemaskine Displayskærm Funktion Introduktion

Dette projekt har følgende funktioner: l

  • Viser den aktuelle tid og dato
  • Der er fire knapper på displayet til americano, latte, cappuccino og espresso.
  • Viser den aktuelle mængde resterende kaffebønner, mælk og kaffesukker
  • Et tekstdisplay viser den aktuelle tilstand

Med disse begreber i tankerne kan du designe en UI -grænseflade. STEN af berøringsskærmene i UI -designet er relativt enkel, brugeren via PhotoShop software design god UI -grænseflade og knapeffekt, gennem STONE TOOL Box til at designe gode billeder ind på skærmen, og tilføj dine egne knapper med STONE TOOL Box logik og serielle data returværdien er ok, meget let for dig at udvikle.

Trin 2: Lav UI -billeder til STONE Display

Lav UI -billeder til STONE Display
Lav UI -billeder til STONE Display
Lav UI -billeder til STONE Display
Lav UI -billeder til STONE Display
Lav UI -billeder til STONE Display
Lav UI -billeder til STONE Display

I henhold til funktionelle krav lavede jeg følgende to UI -skærmgrænseflader, den ene er hovedgrænsefladen og den anden er knapeffekten.

Brug af STONE TOOL Box I øjeblikket leverer STONE TOOL. Åbn dette VÆRKTØJ for at oprette et nyt projekt, importer derefter det designede brugergrænseflade til visning af billeder og tilføj dine egne knapper, tekstdisplaybokse osv. Det officielle websted for STONE har en meget komplet tutorial om, hvordan du bruger denne software: https:/ /www.stoneitech.com/support/download/video

Virkningerne af at tilføje knapper og vise komponenter i STONE TOOL Box er som følger:

STONE TOOL Box har funktionen simuleringsdisplay, hvorigennem du kan se driftseffekten af UI -grænsefladen:

På dette tidspunkt er min UI -skærm færdig, og alt jeg skal gøre er at skrive MCU -koden. Download de filer, der er genereret af STONE TOOL Box på skærmen for at se de faktiske resultater.

Trin 3: STM32F103RCT6

STM32F103RCT6
STM32F103RCT6

STM32F103RCT6 MCU har kraftfulde funktioner. Her er de grundlæggende parametre for MCU:

  • Serie: STM32F10X l Kerne
  • ARM - COTEX32
  • Hastighed: 72 MHZ
  • Kommunikationsgrænseflade: CAN, I2C, IrDA, LIN, SPI, UART/USART, USB
  • Periferiudstyr: DMA, motorstyring PWM, PDR, POR, PVD, PWM, temperatursensor, WDT
  • Program lagerkapacitet: 256KB
  • Programhukommelsestype: FLASH
  • RAM -kapacitet: 48K
  • Spænding - strømforsyning (Vcc/Vdd): 2 V ~ 3,6 V
  • Oscillator: intern
  • Driftstemperatur: -40 ° C ~ 85 ° C
  • Pakke/hus: 64-levetid

I dette projekt vil jeg bruge UART, GPIO, Watch Dog og Timer af STM32F103RCT6. Udviklingen af disse eksterne enheder er beskrevet nedenfor. STM32 BRUGER Keil MDK softwareudvikling, som ikke er fremmed for dig, så jeg vil ikke introducere installationsmetoden for denne software. STM32 kan simuleres online med j-link eller st-link og andre simuleringsværktøjer. Følgende billede er STM32 -printkortet, jeg brugte:

Trin 4: UART Serial

UART Seriel
UART Seriel
UART Seriel
UART Seriel
UART Seriel
UART Seriel

STM32F103RCT6 har flere serielle porte. I dette projekt brugte jeg den serielle portkanal PA9/PA10, og den serielle ports baudhastighed blev indstillet til 115200.

GPIO

I brugergrænsefladen til dette projekt er der i alt fire knapper, som faktisk er fremstilling af fire slags kaffe. I kaffemaskinen realiseres styringen af antallet af kaffebønner, mælkeforbrug og vandstrømning af forskellige kaffe faktisk ved at styre sensorer og relæer, mens jeg ganske enkelt styrer GPIO -stiften først.

Trin 5: Timer

Timer
Timer
Timer
Timer

Ved initialisering af timeren angives frekvensdelingskoefficienten PSC, her er vores systemur (72MHz) til frekvensdeling

Angiv derefter genindlæsningsværdien arr, hvilket betyder, at når vores timer når denne arr, vil timeren genindlæse andre værdier.

Når vi f.eks. Indstiller timeren til at tælle op, er værdien af timertallet lig med arr og vil blive slettet med 0 og genberegnet

Timertallet genindlæses, og en gang er en opdatering

Beregn opdateringstidsformlen Tout = ((arr +1)*(PSC +1))/Tclk

Formelafledning: Talk er urets kilde til timeren, her er 72Mhz

Vi deler den tildelte urfrekvens, angiver frekvensopdelingsværdien som PSC, derefter deler vi vores Talk i PSC +1, den endelige frekvens af vores timer er Tclk/(PSC +1) MHz

Så hvad vi mener med frekvensen her er, at vi har 1s Talk over PSC +1 M -tal (1M = 10 ^ 6), og tiden for hvert nummer er PSC +1 /Talk, og det er let at forstå, at det inverse af frekvensen er perioden, og perioden for hvert nummer her er PSC +1 /Talesekunder, og derefter går vi fra 0 til arr er (arr +1)*(PSC +1) /Tclk

Lad os f.eks. Indstille arr = 7199 og PSC = 9999

Vi delte 72MHz i 9999+1 er lig med 7200Hz

Dette er 9.000 tællinger pr. Sekund, og hver tælling er 1/7, 200 sekund

Så vi optager 9.000 numre her for at gå til timeropdateringen (7199+1)*(1/7200) = 1s, så 1s går til en opdatering.

ugyldig TIM3_Int_Init (u16 arr, u16 psc) {

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

// ur 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 og TIM_TimeBaseStructure);

Kontakt os venligst, hvis du har brug for en komplet procedure:

www.stoneitech.com/contact

Jeg svarer dig inden for 12 timer.

Trin 6: Watch Dog

Vagthund
Vagthund
Vagthund
Vagthund

For at forhindre systemet i at gå ned, mens programmet kørte, tilføjede jeg vagthunden. Faktisk bruger alle projekter, der bruger MCU, generelt en vagthund.

STM32 har to indbyggede vagthunde, der giver større sikkerhed, tidsnøjagtighed og fleksibilitet. To vagthundsenheder (uafhængig vagthund og vinduesvagthund) kan bruges til at opdage og løse fejl forårsaget af softwarefejl. Når tælleren når en given timeout -værdi, udløses en afbrydelse (kun vinduesovervågningshund) eller systemnulstilling. Uafhængig vagthund (IWDG):

Drevet af et dedikeret lavhastighedsur (LSI) fungerer det, selvom hoveduret fejler.

Den er velegnet til brug i situationer, hvor vagthunden skal arbejde helt uafhængigt uden for hovedprogrammet og kræver lav tidsnøjagtighed. Vinduesvagthund (WWDG):

Drevet af uret fra APB1 -uret efter frekvensdeling. Registrer unormalt sen eller for tidlig applikationsdrift gennem et konfigurerbart tidsvindue. Velegnet til programmer, der kræver vagthunde til at fungere i præcis timing Windows.

int main (void) {

delay_init ();

// forsink init initIC_PriorityGroupConfig (NVIC_PriorityGroup_2);

// NVIC INIT uart_init (115200);

// UART INIT PAD_INIT ();

// Light Init IWDG_Init (4, 625);

mens (1) {

hvis (USART_RX_END)

{switch (USART_RX_BUF [5])

{

kasse Espresso:

CoffeeSelect (Espresso, USART_RX_BUF [8]);

pause;

case Americano:

CoffeeSelect (Americano, USART_RX_BUF [8]);

Hovedlogikken i hovedfunktionen er som følger:

u8 timer_cnt = 0;

void TIM3_IRQHandler (void) // TIM3

{

hvis (TIM_GetITStatus (TIM3, TIM_IT_Update)! = NULSTIL)

{

TIM_ClearITPendingBit (TIM3, TIM_IT_Update);

timer_cnt ++;

hvis (timer_cnt> = 200)

{

milk_send [6] = milk ();

Endelig tilføj koden i timer -afbrydelsen: I timer -afbrydelsen er mit mål at kontrollere, hvor meget kaffe og mælk der er tilbage, og derefter sende den registrerede værdi til displayet gennem en seriel port. Måling af, hvor meget mælk og kaffebønner der er tilovers, foretages normalt med sensorer. Enkle metoder omfatter tryksensorer, som måler mælkens og kaffebønnernes aktuelle vægt for at bestemme, hvor meget der er tilbage.

Skriv i det sidste

Denne artikel registrerer kun den enkle udviklingsproces for mit projekt. I betragtning af fortroligheden af virksomhedens projekt blev UI -skærmgrænsefladen, jeg brugte, også lavet af mig selv, ikke den virkelige UI -skærmgrænseflade for dette projekt. Kodedelen af STM32 tilføjer kun den perifere driver til MCU og tilhørende logisk kode. I betragtning af fortroligheden af virksomhedens projekt er den specifikke nøgleteknologidel ikke givet, vær venlig at forstå. I henhold til den kode, jeg har givet, skal du dog samarbejde med STONE -skærmen. mine venner, der også er software ingeniører, behøver kun bruge et par dage på at tilføje vigtige tekniske dele til min kode ramme for at fuldføre projektet.

For at lære mere om projektet klik her