Sadržaj:
- Korak 1: Funkcija prikaza ekrana aparata za kafu Uvod
- Korak 2: Napravite slike korisničkog sučelja za STONE Display
- Korak 3: STM32F103RCT6
- Korak 4: UART serijski
- Korak 5: Tajmer
- Korak 6: Posmatrajte psa
Video: STONE Display +STM32 +Aparat za kafu: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:04
Ja sam softverski inženjer MCU -a, nedavno sam dobio projekt da bude aparat za kavu, zahtjevi kućanstva s ekranom osjetljivim na dodir, funkcija je dobra, iznad ekrana odabir možda nije jako dobar, na sreću, ovaj projekt mogu odlučiti što MCU za osobnu upotrebu, također se može koristiti za odlučivanje o ekranu, pa sam odabrao STM32 za ovu vrstu jednostavnog i lakog MCU -a za korištenje, za prikaz ekrana odabrao sam STONE -ov ekran osjetljiv na dodir, ekran je jednostavan i lagan za korištenje, Moje STM32 MCU je samo u redu putem UART komunikacije.
STONE serijski LCD ekran, koji može komunicirati preko serijskog porta MCU -a. U isto vrijeme, logički dizajn korisničkog sučelja ovog ekrana može se izravno izraditi pomoću STONE TOOL Box -a koji se nalazi na službenoj web stranici STONE -a, što je vrlo zgodno. Zato ću ga upotrijebiti za ovaj projekt aparata za kavu. U isto vrijeme, jednostavno ću zabilježiti osnovni razvoj. Budući da je ovo projekt moje kompanije, snimit ću samo jednostavan demo, a ne napisati cijeli kod. Neke osnovne upute o kamenom ekranu mogu otići na web stranicu: https://www.stoneitech.com/ Web stranica ima razne informacije o modelu, upotrebi i dokumentaciji o dizajnu, kao i video vodiče. Neću ovde ulaziti u previše detalja.
Korak 1: Funkcija prikaza ekrana aparata za kafu Uvod
Ovaj projekat ima sljedeće funkcije: l
- Prikazuje trenutno vrijeme i datum
- Na ekranu se nalaze četiri dugmeta za američko, latte, kapućino i espreso.
- Prikazuje trenutnu količinu preostalih zrna kave, mlijeka i šećera u kafi
- Okvir za prikaz teksta prikazuje trenutno stanje
Imajući na umu ove koncepte, možete dizajnirati korisničko sučelje. STONE ekrana osjetljivih na dodir u dizajnu korisničkog sučelja relativno je jednostavan, korisnik putem softvera PhotoShop dizajnira dobro korisničko sučelje i efekt gumba, preko STONE TOOL Box -a za oblikovanje dobrih slika na ekranu i dodavanje vlastitih gumba s logikom STONE TOOL Box i serijski podaci povratna vrijednost je u redu, vrlo lako za razvoj.
Korak 2: Napravite slike korisničkog sučelja za STONE Display
Prema funkcionalnim zahtjevima, napravio sam sljedeća dva interfejsa za prikaz korisničkog sučelja, jedan je glavni interfejs, a drugi je efekt dugmeta.
Upotreba STONE TOOL Box -aTrenutno STONE pruža ALAT. Otvorite ovaj ALAT za stvaranje novog projekta, zatim uvezite dizajnirano korisničko sučelje za prikaz slika i dodajte vlastite tipke, okvire za prikaz teksta itd. Službena web stranica STONE -a ima vrlo kompletan vodič o tome kako koristiti ovaj softver: https:/ /www.stoneitech.com/support/download/video
Učinci dodavanja gumba i prikaza komponenti u STONE TOOL Boxu su sljedeći:
STONE TOOL Box ima funkciju simulacijskog prikaza, kroz koji možete vidjeti učinak rada sučelja korisničkog sučelja:
U ovom trenutku moj korisnički interfejs je završen i sve što treba da uradim je da napišem MCU kôd. Preuzmite datoteke koje generiše STONE TOOL Box na ekran da vidite stvarne rezultate.
Korak 3: STM32F103RCT6
STM32F103RCT6 MCU ima moćne funkcije. Evo osnovnih parametara MCU -a:
- Serija: STM32F10X l Kerne
- ARM - COTEX32
- Brzina: 72 MHZ
- Komunikacijsko sučelje: CAN, I2C, IrDA, LIN, SPI, UART/USART, USB
- Periferna oprema: DMA, kontrola motora PWM, PDR, POR, PVD, PWM, senzor temperature, WDT
- Kapacitet skladišnog prostora programa: 256KB
- Tip memorije programa: FLASH
- Kapacitet RAM -a: 48K
- Napon - napajanje (Vcc/Vdd): 2 V ~ 3.6 V
- Oscilator: unutrašnji
- Radna temperatura: -40 ° C ~ 85 ° C
- Paket/kućište: 64 života
U ovom projektu koristit ću UART, GPIO, Watch Dog i Timer STM32F103RCT6. Razvoj ovih perifernih uređaja dokumentiran je u nastavku. STM32 KORISTI razvoj softvera Keil MDK, koji vam nije stran, pa vam neću predstavljati način instalacije ovog softvera. STM32 se može simulirati na mreži pomoću j-linka ili st-linka i drugih simulacijskih alata. Sljedeća slika je ploča STM32 koju sam koristio:
Korak 4: UART serijski
STM32F103RCT6 ima nekoliko serijskih portova. U ovom projektu koristio sam kanal serijskog porta PA9/PA10, a brzina prijenosa serijskog porta je postavljena na 115200.
GPIO
U korisničkom interfejsu ovog projekta postoje ukupno četiri dugmeta koja zapravo prave četiri vrste kafe. U aparatu za kavu, kontrola broja zrna kave, potrošnje mlijeka i protoka vode različitih kava zapravo se kontrolira senzorima i relejima, dok ja jednostavno jednostavno kontroliram GPIO pin.
Korak 5: Tajmer
Prilikom inicijalizacije tajmera navedite koeficijent frekvencijske podjele PSC, evo našeg sistemskog takta (72MHz) za podjelu frekvencija
Zatim navedite vrijednost ponovnog učitavanja arr, što znači da će, kada naš tajmer dosegne ovaj arr, tajmer ponovno učitati druge vrijednosti.
Na primjer, kada postavimo tajmer za odbrojavanje, vrijednost brojača vremena je jednaka arr i bit će izbrisana s 0 i ponovno izračunata
Brojač tajmera se ponovo učitava i jednom se ažurira
Izračunajte formulu vremena ažuriranja Tout = ((arr +1)*(PSC +1))/Tclk
Izvođenje formule: Razgovor je izvor takta tajmera, ovdje je 72Mhz
Podijelimo dodijeljenu frekvenciju sata, specificiramo vrijednost podjele frekvencije kao PSC, zatim dijelimo naš Talk na PSC +1, konačna frekvencija našeg tajmera je Tclk/(PSC +1) MHz
Dakle, ono što ovdje podrazumijevamo pod frekvencijom je da imamo 1s razgovora preko PSC +1 M brojeva (1M = 10 ^ 6), a vrijeme za svaki broj je PSC +1 /Talk, i lako je razumjeti da je obrnuto frekvencije je period, a period za svaki broj ovdje je PSC +1 /sekunde za razgovor, a zatim idemo od 0 do arr je (arr +1)*(PSC +1) /Tclk
Na primjer, postavimo arr = 7199 i PSC = 9999
Podijelili smo 72MHz na 9999+1 je jednako 7200Hz
Ovo je 9 000 brojeva u sekundi, a svaki broj je 1/7 200 sekunde
Dakle, ovdje bilježimo 9 000 brojeva kako bismo otišli na ažuriranje mjerača vremena (7199+1)*(1/7200) = 1 s, pa 1s ide na ažuriranje.
void TIM3_Int_Init (u16 arr, u16 psc) {
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd (RCC_APB1Periph_TIM3, ENABLE);
// sat 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);
Molimo kontaktirajte nas ako vam je potrebna potpuna procedura:
www.stoneitech.com/contact
Odgovorit ću vam u roku od 12 sati.
Korak 6: Posmatrajte psa
Da bih spriječio pad sistema tokom rada programa, dodao sam nadzornog psa. Zapravo, svi projekti koji koriste MCU općenito koriste nadzornog psa.
STM32 ima dva ugrađena čuvara, koji pružaju veću sigurnost, točnost vremena i fleksibilnost. Dva uređaja za nadzor (nezavisni nadzornik i prozor za nadgledanje prozora) mogu se koristiti za otkrivanje i rješavanje grešaka uzrokovanih softverskim greškama. Kada brojač dosegne zadanu vrijednost vremenskog ograničenja, aktivira se prekid (samo nadzornik prozora) ili resetiranje sistema. Nezavisni čuvar (IWDG):
Pokreće ga namjenski sat niske brzine (LSI), radi čak i ako glavni sat otkaže.
Pogodan je za upotrebu u situacijama kada se od nadzornika traži da radi potpuno nezavisno izvan glavnog programa i zahtijeva nisku vremensku preciznost. Čuvar prozora (WWDG):
Pokreće sat sa sata APB1 nakon podjele frekvencije. Otkrijte abnormalno kasne ili preuranjene operacije aplikacije kroz konfigurirani vremenski prozor. Pogodno za programe koji zahtijevaju nadzorne službe za funkcioniranje u Windowsima s preciznim vremenskim rasporedom.
int main (void) {
delay_init ();
// odgoda init NVIC_PriorityGroupConfig (NVIC_PriorityGroup_2);
// NVIC INIT uart_init (115200);
// UART INIT PAD_INIT ();
// Light Init IWDG_Init (4, 625);
dok (1) {
ako (USART_RX_END)
{prekidač (USART_RX_BUF [5])
{
kutija za espresso:
CoffeeSelect (Espresso, USART_RX_BUF [8]);
break;
case Americano:
CoffeeSelect (Americano, USART_RX_BUF [8]);
Glavna logika u funkciji Main je sljedeća:
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 ++;
if (timer_cnt> = 200)
{
milk_send [6] = mlijeko ();
Na kraju, dodajte kôd u prekidu timera: U prekidu timera cilj mi je provjeriti koliko je kave i mlijeka preostalo, a zatim poslati otkrivenu vrijednost na ekran preko serijskog porta. Mjerenje količine preostalog mlijeka i zrna kave obično se vrši pomoću senzora. Jednostavne metode uključuju senzore pritiska, koji mjere trenutnu težinu mlijeka i zrna kave kako bi utvrdili koliko je preostalo.
Upiši zadnji
Ovaj članak samo bilježi jednostavan razvojni proces mog projekta. S obzirom na poverljivost projekta kompanije, interfejs za prikaz korisničkog interfejsa koji sam koristio takođe sam napravio sam, a ne pravi interfejs za prikaz interfejsa ovog projekta. Kodni dio STM32 dodaje samo periferni upravljački program MCU -a i srodni logički kod. Uzimajući u obzir i povjerljivost projekta kompanije, specifični ključni dio tehnologije nije dat, molimo vas da razumijete. Međutim, prema kodu koji sam dao, sarađujte sa STONE ekranom. mojim prijateljima koji su takođe softverski inženjeri potrebno je samo nekoliko dana da dodaju ključne tehničke dijelove u moj kodni okvir kako bi dovršili projekat.
Za više informacija o projektu kliknite ovdje