Obsah:
- Krok 1: Úvod do funkce displeje kávovaru
- Krok 2: Vytvořte obrázky uživatelského rozhraní pro zobrazení STONE
- Krok 3: STM32F103RCT6
- Krok 4: UART Serial
- Krok 5: Časovač
- Krok 6: Hlídací pes
Video: Displej STONE +STM32 +kávovar: 6 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:19
Jsem softwarový inženýr MCU, nedávno jsem obdržel projekt, který má být kávovarem, požadavky domácnosti s dotykovým ovládáním, funkce je dobrá, nad výběrem obrazovky nemusí být příliš dobrý, naštěstí tento projekt mohu rozhodnout, co MCU použít sám, lze také použít k rozhodování o tom, co na obrazovce, tak jsem si vybral STM32 tohoto druhu jednoduchého a snadného použití MCU, displej displeje jsem si vybral dotykový displej STONE, obrazovka je jednoduchá a snadno použitelná, Moje STM32 MCU pouze prostřednictvím komunikace UART je v pořádku.
Sériový LCD displej STONE, který může komunikovat přes sériový port MCU. Logický design rozhraní uživatelského rozhraní této obrazovky lze současně navrhnout přímo pomocí nástroje STONE TOOL Box poskytovaného oficiálním webem společnosti STONE, což je velmi výhodné. Použiji to tedy pro tento projekt kávovaru. Přitom jednoduše zaznamenám základní vývoj. Protože se jedná o projekt mé společnosti, zaznamenám pouze jednoduché demo a nebudu psát celý kód. Některé základní návody o kamenné obrazovce můžete navštívit na webových stránkách: https://www.stoneitech.com/ Webová stránka obsahuje řadu informací o modelu, použití a dokumentaci designu a také video návody. Nebudu se zde příliš rozepisovat.
Krok 1: Úvod do funkce displeje kávovaru
Tento projekt má následující funkce: l
- Zobrazuje aktuální čas a datum
- Na displeji jsou čtyři tlačítka pro americano, latte, cappuccino a espresso.
- Zobrazuje aktuální množství zbývajících kávových zrn, mléka a kávového cukru
- Textový rámeček zobrazuje aktuální stav
S ohledem na tyto koncepty můžete navrhnout rozhraní uživatelského rozhraní. STONE dotykových obrazovek v designu uživatelského rozhraní je poměrně jednoduchý, uživatel pomocí softwaru PhotoShop navrhne dobré rozhraní a efekt tlačítka, pomocí nástroje STONE TOOL Box navrhne na obrazovku dobré obrázky a přidá vlastní tlačítka s logikou STONE TOOL Box a sériová data, návratová hodnota je v pořádku, velmi snadno se vyvíjí.
Krok 2: Vytvořte obrázky uživatelského rozhraní pro zobrazení STONE
Podle funkčních požadavků jsem vytvořil následující dvě rozhraní zobrazení UI, jedno je hlavní rozhraní a druhé je efekt tlačítka.
Použití STONE TOOL Box V současné době STONE poskytuje NÁSTROJ. Otevřete tento NÁSTROJ a vytvořte nový projekt, poté importujte navržené uživatelské rozhraní pro zobrazení obrázků a přidejte vlastní tlačítka, pole pro zobrazení textu atd. Oficiální web společnosti STONE má velmi kompletní návod, jak tento software používat : https:/ /www.stoneitech.com/support/download/video
Efekty přidávání tlačítek a zobrazování komponent v boxu STONE TOOL Box jsou následující:
STONE TOOL Box má funkci simulačního zobrazení, pomocí kterého můžete vidět účinek operace rozhraní UI:
V tomto okamžiku je moje zobrazení uživatelského rozhraní dokončeno a vše, co musím udělat, je napsat kód MCU. Stáhněte si soubory generované boxem STONE TOOL Box na obrazovku, abyste viděli skutečné výsledky.
Krok 3: STM32F103RCT6
STM32F103RCT6 MCU má výkonné funkce. Zde jsou základní parametry MCU:
- Série: STM32F10X l Kerne
- ARM - COTEX32
- Rychlost: 72 MHZ
- Komunikační rozhraní: CAN, I2C, IrDA, LIN, SPI, UART/USART, USB
- Periferní zařízení: DMA, řízení motoru PWM, PDR, POR, PVD, PWM, teplotní senzor, WDT
- Kapacita úložiště programu: 256 kB
- Typ paměti programu: FLASH
- Kapacita RAM: 48K
- Napětí - napájení (Vcc/Vdd): 2 V ~ 3,6 V
- Oscilátor: interní
- Provozní teplota: -40 ° C ~ 85 ° C
- Balení/bydlení: 64-life
V tomto projektu použiji UART, GPIO, Watch Dog a Timer STM32F103RCT6. Vývoj těchto periferií je dokumentován níže. STM32 POUŽÍVÁ vývoj softwaru Keil MDK, který vám není cizí, proto nebudu představovat způsob instalace tohoto softwaru. STM32 lze simulovat online pomocí j-link nebo st-link a dalších simulačních nástrojů. Následující obrázek je obvodová deska STM32, kterou jsem použil:
Krok 4: UART Serial
STM32F103RCT6 má několik sériových portů. V tomto projektu jsem použil kanál sériového portu PA9/PA10 a přenosová rychlost sériového portu byla nastavena na 115200.
GPIO
V uživatelském rozhraní tohoto projektu jsou celkem čtyři tlačítka, která jsou vlastně přípravou čtyř druhů kávy. V kávovaru je ovládání počtu kávových zrn, spotřeby mléka a toku vody různých káv skutečně realizováno ovládáním senzorů a relé, zatímco já nejprve ovládám pin GPIO.
Krok 5: Časovač
Při inicializaci časovače zadejte koeficient frekvenčního dělení PSC, zde jsou naše systémové hodiny (72 MHz) pro frekvenční dělení
Poté určete hodnotu opětovného načtení arr, což znamená, že když náš časovač dosáhne tohoto arr, časovač znovu načte další hodnoty.
Například když nastavíme časovač na odpočítávání, hodnota počtu časovačů se rovná arr a bude vymazána 0 a přepočítána
Počítadlo časovače se znovu načte a jednou se stane aktualizací
Vypočítejte vzorec doby aktualizace Tout = ((arr +1)*(PSC +1))/Tclk
Odvození vzorce: Talk je hodinový zdroj časovače, zde je 72 MHz
Rozdělíme přidělenou hodinovou frekvenci, zadáme hodnotu frekvenčního dělení jako PSC, poté rozdělíme náš Talk na PSC +1, konečná frekvence našeho časovače je Tclk/(PSC +1) MHz
Frekvencí zde tedy myslíme to, že máme 1 s Talk na číslech PSC +1 M (1M = 10 ^ 6) a čas pro každé číslo je PSC +1 /Talk, a je snadné pochopit, že inverzní frekvence je perioda a perioda pro každé číslo zde je PSC +1 /sekundy hovoru a poté přejdeme od 0 do arr je (arr +1)*(PSC +1) /Tclk
Nastavme například arr = 7199 a PSC = 9999
Rozdělili jsme 72 MHz na 9999+1 se rovná 7200 Hz
To je 9 000 impulzů za sekundu a každý počet je 1/7 200 sekund
Zaznamenáváme tedy 9 000 čísel, abychom mohli přejít na aktualizaci časovače (7199+1)*(1/7200) = 1 s, takže 1 s přejde na aktualizaci.
neplatné TIM3_Int_Init (u16 arr, u16 psc) {
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd (RCC_APB1Periph_TIM3, POVOLIT);
// hodiny 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);
Kontaktujte nás, pokud potřebujete kompletní postup:
www.stoneitech.com/contact
Odpovím vám do 12 hodin.
Krok 6: Hlídací pes
Aby se zabránilo zhroucení systému během běhu programu, přidal jsem hlídacího psa. Ve skutečnosti všechny projekty, které používají MCU, obecně používají hlídacího psa.
STM32 má dva vestavěné hlídače, které poskytují větší bezpečnost, přesnost času a flexibilitu. Ke zjišťování a řešení chyb způsobených chybami softwaru lze použít dvě hlídací zařízení (nezávislý hlídací pes a hlídací pes okna). Když čítač dosáhne dané hodnoty časového limitu, spustí se přerušení (pouze hlídací pes okna) nebo reset systému. Nezávislý hlídací pes (IWDG):
Poháněný vyhrazeným nízkootáčkovým taktem (LSI) funguje, i když hlavní hodiny selžou.
Je vhodný pro použití v situacích, kdy je vyžadováno, aby hlídací pes pracoval zcela nezávisle mimo hlavní program a vyžadoval nízkou časovou přesnost. Hlídač oken (WWDG):
Poháněno hodinami z hodin APB1 po frekvenčním dělení. Detekovat neobvykle pozdní nebo předčasný provoz aplikace prostřednictvím konfigurovatelného časového okna. Vhodné pro programy, které vyžadují funkci watchdogů pro přesné načasování Windows.
int main (neplatné) {
delay_init ();
// zpoždění init NVIC_PriorityGroupConfig (NVIC_PriorityGroup_2);
// NVIC INIT uart_init (115200);
// UART INIT PAD_INIT ();
// Light Init IWDG_Init (4, 625);
zatímco (1) {
pokud (USART_RX_END)
{přepínač (USART_RX_BUF [5])
{
pouzdro Espresso:
CoffeeSelect (Espresso, USART_RX_BUF [8]);
přestávka;
případ Americano:
CoffeeSelect (Americano, USART_RX_BUF [8]);
Hlavní logika ve funkci Main je následující:
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] = mléko ();
Nakonec přidejte kód do přerušení časovače: V přerušení časovače je mým cílem zkontrolovat, kolik kávy a mléka zbývá, a poté odeslat detekovanou hodnotu na obrazovku přes sériový port. Měření zbývajícího množství mléka a kávových zrn se obvykle provádí pomocí senzorů. Mezi jednoduché metody patří tlakové senzory, které měří aktuální hmotnost mléka a kávových zrn, aby určily, kolik zbývá.
Napište poslední
Tento článek zaznamenává pouze jednoduchý vývojový proces mého projektu. Vzhledem k důvěrnosti projektu společnosti jsem také sám vytvořil uživatelské rozhraní zobrazení, nikoli skutečné rozhraní zobrazení tohoto projektu. Část kódu STM32 přidává pouze periferní ovladač MCU a související logický kód. S ohledem na důvěrnost projektu společnosti není uvedena konkrétní klíčová technologická část, prosím pochopte. Podle kódu, který jsem poskytl, však spolupracujte s obrazovkou STONE. mým přátelům, kteří jsou také softwarovými inženýry, stačí strávit několik dní přidáním klíčových technických částí do mého rámce kódu k dokončení projektu.
Chcete -li se o projektu dozvědět více, klikněte zde