Kazalo:

STONE Display +STM32 +Aparat za kavo: 6 korakov
STONE Display +STM32 +Aparat za kavo: 6 korakov

Video: STONE Display +STM32 +Aparat za kavo: 6 korakov

Video: STONE Display +STM32 +Aparat za kavo: 6 korakov
Video: "Ridiculous" Espresso Workflow Ever! #coffeegrinder #coffeemachine #espresso 2024, December
Anonim
STONE Display +STM32 +Aparat za kavo
STONE Display +STM32 +Aparat za kavo

Sem inženir programske opreme MCU, pred kratkim sem prejel projekt naj bo aparat za kavo, gospodinjske zahteve z delovanjem na zaslonu na dotik, funkcija je dobra, nad zaslonom izbira morda ni zelo dobra, na srečo se ta projekt lahko odločim, kaj MCU, ki ga lahko uporabljam tudi sam, se lahko uporabi tudi za odločitev, kateri zaslon, zato sem izbral STM32 te vrste enostavnega in enostavnega MCU -ja za uporabo, zaslon za zaslon sem izbral STONE -ov zaslon na dotik, zaslon je preprost in enostaven za uporabo, My STM32 MCU je le v redu s komunikacijo UART.

STONE serijski LCD zaslon, ki lahko komunicira prek serijskih vrat MCU. Hkrati je mogoče logično zasnovo vmesnika uporabniškega vmesnika tega zaslona prikazati neposredno z uporabo STONE TOOL Box na uradni spletni strani STONE, kar je zelo priročno. Zato ga bom uporabil za ta projekt aparata za kavo. Hkrati bom preprosto zapisal osnovni razvoj. Ker je to projekt mojega podjetja, bom posnel le preprost demo in ne bom napisal celotne kode. Nekaj osnovnih vadnic o kamnitem zaslonu lahko obiščete na spletnem mestu: https://www.stoneitech.com/ Spletno mesto vsebuje različne informacije o modelu, uporabi in oblikovalni dokumentaciji ter video vaje. Tu se ne bom preveč spuščal v podrobnosti.

1. korak: Uvodna funkcija zaslona zaslona aparata za kavo

Ta projekt ima naslednje funkcije: l

  • Prikaže trenutni čas in datum
  • Na zaslonu so štirje gumbi za americano, latte, cappuccino in espresso.
  • Prikaže trenutno količino preostalih zrn kave, mleka in kavnega sladkorja
  • Polje za prikaz besedila prikazuje trenutno stanje

Ob upoštevanju teh konceptov lahko oblikujete vmesnik uporabniškega vmesnika. STONE zaslonov na dotik v zasnovi uporabniškega vmesnika je sorazmerno preprost, uporabnik s pomočjo programske opreme PhotoShop oblikuje dober vmesnik uporabniškega vmesnika in učinek gumba, prek STONE TOOL Box za oblikovanje dobrih slik na zaslonu ter dodajanje lastnih gumbov z logiko STONE TOOL Box in serijski podatki, vrnjena vrednost je v redu, zelo enostavno za razvoj.

2. korak: Naredite slike uporabniškega vmesnika za STONE Display

Naredite slike uporabniškega vmesnika za STONE Display
Naredite slike uporabniškega vmesnika za STONE Display
Naredite slike uporabniškega vmesnika za STONE Display
Naredite slike uporabniškega vmesnika za STONE Display
Naredite slike uporabniškega vmesnika za STONE Display
Naredite slike uporabniškega vmesnika za STONE Display

Glede na funkcionalne zahteve sem naredil naslednja dva vmesnika za prikaz uporabniškega vmesnika, eden je glavni vmesnik, drugi pa učinek gumba.

Uporaba STONE TOOL Box -a STONE trenutno ponuja TOOL. Odprite to ORODJE, da ustvarite nov projekt, nato uvozite oblikovan uporabniški vmesnik za prikaz slik in dodajte svoje gumbe, polja za prikaz besedila itd. Uradna spletna stran STONE ima zelo popolno vadnico o uporabi te programske opreme: https:/ /www.stoneitech.com/support/download/video

Učinki dodajanja gumbov in prikazovanja komponent v STONE TOOL Boxu so naslednji:

STONE TOOL Box ima funkcijo simulacijskega prikaza, skozi katerega lahko vidite učinek delovanja vmesnika uporabniškega vmesnika:

Na tem mestu je moj prikaz uporabniškega vmesnika končan in vse kar moram storiti je, da napišem kodo MCU. Datoteke, ki jih ustvari STONE TOOL Box, naložite na zaslon za prikaz dejanskih rezultatov.

Korak: STM32F103RCT6

STM32F103RCT6
STM32F103RCT6

STM32F103RCT6 MCU ima zmogljive funkcije. Tu so osnovni parametri MCU:

  • Serija: STM32F10X l Kerne
  • ARM - COTEX32
  • Hitrost: 72 MHZ
  • Komunikacijski vmesnik: CAN, I2C, IrDA, LIN, SPI, UART/USART, USB
  • Periferna oprema: DMA, krmiljenje motorja PWM, PDR, POR, PVD, PWM, temperaturni senzor, WDT
  • Prostor za shranjevanje programa: 256 KB
  • Vrsta pomnilnika programa: FLASH
  • Kapaciteta RAM -a: 48K
  • Napetost - napajanje (Vcc/Vdd): 2 V ~ 3,6 V
  • Oscilator: notranji
  • Delovna temperatura: -40 ° C ~ 85 ° C
  • Paket/ohišje: 64-life

V tem projektu bom uporabil UART, GPIO, Watch Dog in Timer STM32F103RCT6. Razvoj teh zunanjih naprav je dokumentiran spodaj. STM32 UPORABLJA razvoj programske opreme Keil MDK, ki vam ni tuja, zato ne bom predstavil načina namestitve te programske opreme. STM32 je mogoče na spletu simulirati z j-link ali st-link in drugimi simulacijskimi orodji. Naslednja slika je tiskano vezje STM32, ki sem ga uporabil:

Korak 4: Serija UART

Serija UART
Serija UART
Serija UART
Serija UART
Serija UART
Serija UART

STM32F103RCT6 ima več zaporednih vrat. V tem projektu sem uporabil kanal serijskih vrat PA9/PA10, hitrost prenosa serijskih vrat pa je bila nastavljena na 115200.

GPIO

V uporabniškem vmesniku tega projekta so skupaj štirje gumbi, ki dejansko pripravljajo štiri vrste kave. V aparatu za kavo se nadzor števila kavnih zrn, porabe mleka in pretoka vode v različnih kavah dejansko uresniči s krmiljenjem senzorjev in relejev, medtem ko najprej preprosto kontroliram pin GPIO.

5. korak: Časovnik

Časovnik
Časovnik
Časovnik
Časovnik

Pri inicializaciji časovnika določite koeficient frekvenčne delitve PSC, tukaj je naša sistemska ura (72MHz) za delitev frekvence

Nato določite vrednost ponovnega nalaganja arr, kar pomeni, da bo časovnik, ko naš časovnik doseže ta arr, znova naložil druge vrednosti.

Ko na primer nastavimo časovnik za štetje, je vrednost števca časovnika enaka arr in se počisti z 0 in ponovno izračuna

Števec časovnika se znova naloži in enkrat je posodobitev

Izračunajte formulo za čas posodobitve Tout = ((arr +1)*(PSC +1))/Tclk

Izpeljava formule: Talk je vir ure za časovnik, tukaj je 72Mhz

Dodeljeno urno frekvenco razdelimo, vrednost frekvenčne delitve določimo kot PSC, nato Talk razdelimo na PSC +1, končna frekvenca našega časovnika je Tclk/(PSC +1) MHz

Torej s frekvenco tukaj mislimo, da imamo 1 sekund pogovora prek PSC +1 M številk (1M = 10 ^ 6), čas za vsako številko pa je PSC +1 /pogovor, zato je enostavno razumeti, da je obratno frekvence je obdobje, obdobje za vsako številko pa je PSC +1 /sekunde pogovora, nato pa gremo od 0 do arr je (arr +1)*(PSC +1) /Tclk

Na primer, nastavimo arr = 7199 in PSC = 9999

72MHz smo razdelili na 9999+1 je enako 7200Hz

To je 9000 točk na sekundo, vsako štetje pa 1/7, 200 sekunde

Tako zabeležimo 9000 številk, da gremo na posodobitev časovnika (7199+1)*(1/7200) = 1 s, torej 1s gre na posodobitev.

void TIM3_Int_Init (u16 arr, u16 psc) {

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

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

Če potrebujete celoten postopek, nas kontaktirajte:

www.stoneitech.com/contact

Odgovoril vam bom v 12 urah.

6. korak: Oglejte si psa

Watch Dog
Watch Dog
Watch Dog
Watch Dog

Da preprečim zrušitev sistema med izvajanjem programa, sem dodal nadzornega psa. Pravzaprav vsi projekti, ki uporabljajo MCU, običajno uporabljajo nadzornika.

STM32 ima dva vgrajena nadzornika, ki zagotavljata večjo varnost, časovno natančnost in prilagodljivost. Za odkrivanje in odpravljanje napak, ki jih povzročajo programske napake, lahko uporabite dve napravi za nadzor (neodvisni nadzornik in okenski nadzornik). Ko števec doseže določeno vrednost časovne omejitve, se sproži prekinitev (samo nadzornik oken) ali ponastavitev sistema. Neodvisni nadzornik (IWDG):

Poganja ga namenska ura z nizko hitrostjo (LSI), deluje tudi, če glavna ura ne uspe.

Primeren je za uporabo v situacijah, ko mora nadzornik delovati popolnoma neodvisno zunaj glavnega programa in zahteva nizko časovno natančnost. Nadzornik oken (WWDG):

Poganja ga ura iz ure APB1 po delitvi frekvence. Zaznajte nenormalno pozno ali prezgodnje delovanje aplikacije skozi nastavljivo časovno okno. Primerno za programe, ki zahtevajo, da nadzorniki delujejo v sistemu Windows z natančnim časovnim razporedom.

int main (void) {

delay_init ();

// zakasnitev init NVIC_PriorityGroupConfig (NVIC_PriorityGroup_2);

// NVIC INIT uart_init (115200);

// UART INIT PAD_INIT ();

// Light Init IWDG_Init (4, 625);

medtem ko (1) {

če (USART_RX_END)

{switch (USART_RX_BUF [5])

{

kovček Espresso:

CoffeeSelect (Espresso, USART_RX_BUF [8]);

zlom;

primer Americano:

CoffeeSelect (Americano, USART_RX_BUF [8]);

Glavna logika v funkciji Main je naslednja:

u8 timer_cnt = 0;

void TIM3_IRQHandler (void) // TIM3

{

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

{

TIM_ClearITPendingBit (TIM3, TIM_IT_Update);

timer_cnt ++;

če (timer_cnt> = 200)

{

milk_send [6] = mleko ();

Nazadnje, dodajte kodo v časovni prekinitvi: V časovni prekinitvi je moj cilj preveriti, koliko kave in mleka je ostalo, nato pa zaznano vrednost poslati na zaslon na zaslonu prek serijskih vrat. Merjenje količine mleka in kavnih zrn običajno opravijo senzorji. Enostavne metode vključujejo senzorje tlaka, ki merijo trenutno težo mleka in kavnih zrn, da ugotovijo, koliko je ostalo.

Napišite zadnji

Ta članek beleži le preprost razvojni proces mojega projekta. Glede na zaupnost projekta podjetja sem uporabniški vmesnik za uporabniški vmesnik, ki sem ga uporabil, izdelal sam, ne pa pravi vmesniški prikazovalnik uporabniškega vmesnika tega projekta. Kodni del STM32 dodaja le periferni gonilnik MCU in z njim povezano logično kodo. Ob upoštevanju zaupnosti projekta podjetja poseben ključni tehnološki del ni podan, prosim za razumevanje. V skladu s kodo, ki sem jo navedel, pa sodelujte z zaslonom STONE. moji prijatelji, ki so tudi programski inženirji, potrebujejo le nekaj dni, da v svoj kodni okvir dodajo ključne tehnične dele, da dokončajo projekt.

Če želite izvedeti več o projektu, kliknite tukaj