Съдържание:
- Стъпка 1: Екран на дисплея на кафемашината Функция Въведение
- Стъпка 2: Направете UI снимки за STONE Display
- Стъпка 3: STM32F103RCT6
- Стъпка 4: UART сериен
- Стъпка 5: Таймер
- Стъпка 6: Гледайте куче
Видео: STONE Дисплей +STM32 +Кафемашина: 6 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:50
Аз съм софтуерен инженер на MCU, наскоро получих проект да бъде кафемашина, битови изисквания с работа със сензорен екран, функцията е добра, над екрана е изборът може да не е много добър, за щастие този проект мога да реша какво MCU, за да използвам себе си, също може да се използва за определяне на екрана, затова избрах STM32 от този вид прост и лесен за използване MCU, екран за дисплея Избрах сензорния екран на STONE, екранът е прост и лесен за използване, Моят STM32 MCU само чрез UART комуникация е добре с него.
STONE сериен LCD дисплей, който може да комуникира през серийния порт на MCU. В същото време логическият дизайн на потребителския интерфейс на този дисплей може да бъде проектиран директно с помощта на STONE TOOL Box, предоставен от официалния уебсайт на STONE, което е много удобно. Така че ще го използвам за този проект за кафе машина. В същото време просто ще запиша основното развитие. Тъй като това е проект на моята компания, ще запиша само обикновена демонстрация и няма да напиша пълния код. Някои основни уроци за каменния екран могат да бъдат посетени на уебсайта: https://www.stoneitech.com/ Уебсайтът има разнообразна информация за модела, използването и документацията за проектиране, както и видео уроци. Няма да навлизам в подробности тук.
Стъпка 1: Екран на дисплея на кафемашината Функция Въведение
Този проект има следните функции: l
- Показва текущия час и дата
- На дисплея има четири бутона за американо, лате, капучино и еспресо.
- Показва текущото количество останали кафени зърна, мляко и захар от кафе
- Текстово поле за показване показва текущото състояние
Имайки предвид тези концепции, можете да проектирате интерфейс на потребителския интерфейс. STONE на сензорните екрани в дизайна на потребителския интерфейс е сравнително прост, потребителят чрез софтуера PhotoShop проектира добър интерфейс на потребителския интерфейс и ефект на бутон, чрез STONE TOOL Box, за да проектира добри снимки в екрана и да добави свои собствени бутони с логиката на STONE TOOL Box и серийни данни връщаната стойност е ОК, много лесна за разработване.
Стъпка 2: Направете UI снимки за STONE Display
Според функционалните изисквания направих следните два интерфейса на дисплея на потребителския интерфейс, единият е основният интерфейс, а другият е ефектът на бутона.
Използване на STONE TOOL Box Понастоящем STONE предоставя TOOL. Отворете този ИНСТРУМЕНТ, за да създадете нов проект, след това импортирайте проектирания потребителски интерфейс за показване на снимки и добавете свои собствени бутони, текстови полета за показване и т.н. Официалният уебсайт на STONE има много пълен урок за това как да използвате този софтуер: https:/ /www.stoneitech.com/support/download/video
Ефектите от добавяне на бутони и показване на компоненти в STONE TOOL Box са следните:
STONE TOOL Box има функцията на симулационен дисплей, чрез който можете да видите ефекта от работата на интерфейса на потребителския интерфейс:
В този момент дисплеят на потребителския ми интерфейс е завършен и всичко, което трябва да направя, е да напиша кода на MCU. Изтеглете файловете, генерирани от STONE TOOL Box на екрана, за да видите действителните резултати.
Стъпка 3: STM32F103RCT6
STM32F103RCT6 MCU има мощни функции. Ето основните параметри на MCU:
- Серия: STM32F10X l Kerne
- РЪКА - COTEX32
- Скорост: 72 MHZ
- Комуникационен интерфейс: CAN, I2C, IrDA, LIN, SPI, UART/USART, USB
- Периферно оборудване: DMA, управление на двигателя PWM, PDR, POR, PVD, PWM, температурен сензор, WDT
- Капацитет за съхранение на програмата: 256KB
- Тип памет на програмата: FLASH
- Капацитет на RAM: 48K
- Напрежение - захранване (Vcc/Vdd): 2 V ~ 3.6 V
- Осцилатор: вътрешен
- Работна температура: -40 ° C ~ 85 ° C
- Пакет/корпус: 64-живот
В този проект ще използвам UART, GPIO, Watch Dog и Timer на STM32F103RCT6. Развитието на тези периферни устройства е документирано по -долу. STM32 ИЗПОЛЗВА разработката на софтуер Keil MDK, която не е непозната за вас, така че няма да представя метода за инсталиране на този софтуер. STM32 може да бъде симулиран онлайн чрез j-link или st-link и други инструменти за симулация. Следващата картина е печатната платка STM32, която използвах:
Стъпка 4: UART сериен
STM32F103RCT6 има няколко серийни порта. В този проект използвах канала за сериен порт PA9/PA10 и скоростта на предаване на серийния порт беше зададена на 115200.
GPIO
В потребителския интерфейс на този проект има общо четири бутона, които всъщност са направата на четири вида кафе. В кафемашината контролът на броя на кафените зърна, консумацията на мляко и водния поток на различни кафета всъщност се осъществява чрез управление на сензори и релета, докато аз просто първо контролирам щифта GPIO.
Стъпка 5: Таймер
Когато инициализирате таймера, посочете коефициента на разделяне на честотата PSC, тук е нашият системен часовник (72MHz) за разделяне на честотата
След това посочете стойността за презареждане arr, което означава, че когато нашият таймер достигне този arr, таймерът ще презареди други стойности.
Например, когато настроим таймера за отброяване, стойността на брояча на таймера е равна на arr и ще бъде изчистена от 0 и преизчислена
Броят на таймера се презарежда и веднъж е актуализация
Изчислете формулата за време за актуализация Tout = ((arr +1)*(PSC +1))/Tclk
Формулиране на формулата: Talk е източникът на часовника на таймера, тук е 72Mhz
Разделяме разпределената тактова честота, посочваме стойността на разделяне на честотата като PSC, след това разделяме нашия Talk на PSC +1, крайната честота на нашия таймер е Tclk/(PSC +1) MHz
И така, това, което имаме предвид под честотата тук, е, че имаме 1s Talk през PSC +1 M числа (1M = 10 ^ 6), а времето за всяко число е PSC +1 /Talk и е лесно да се разбере, че обратното от честотата е периодът, а периодът за всяко число тук е PSC +1 /секунди за разговор и след това преминаваме от 0 до arr е (arr +1)*(PSC +1) /Tclk
Например, нека зададем arr = 7199 и PSC = 9999
Разделихме 72MHz на 9999+1 е равно на 7200Hz
Това е 9 000 броя в секунда и всеки брой е 1/7, 200 от секундата
Така че записваме 9 000 номера тук, за да отидем на актуализацията на таймера (7199+1)*(1/7200) = 1s, така че 1s отива на актуализация.
void TIM3_Int_Init (u16 arr, u16 psc) {
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd (RCC_APB1Periph_TIM3, ENABLE);
// часовник 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);
Моля, свържете се с нас, ако имате нужда от пълна процедура:
www.stoneitech.com/contact
Ще ви отговоря в рамките на 12 часа.
Стъпка 6: Гледайте куче
За да предотвратя срив на системата, докато програмата работи, добавих контролния панел. Всъщност всички проекти, които използват MCU, обикновено използват наблюдател.
STM32 има два вградени пазача, осигуряващи по-голяма сигурност, точност на времето и гъвкавост. Две устройства за наблюдение (независим наблюдател и прозорец) могат да се използват за откриване и разрешаване на неизправности, причинени от софтуерни грешки. Когато броячът достигне дадена стойност на изчакване, се задейства прекъсване (само за наблюдение на прозореца) или възстановяване на системата. Независим наблюдател (IWDG):
Задвижван от специален нискоскоростен часовник (LSI), той работи дори ако главният часовник се повреди.
Подходящ е за използване в ситуации, при които наблюдателят трябва да работи напълно независимо извън основната програма и изисква ниска точност на времето. Прозорец за наблюдение (WWDG):
Задвижван от часовника от часовника APB1 след разделяне на честотата. Открийте необичайно късна или преждевременна работа на приложението чрез конфигурируем времеви прозорец. Подходящ за програми, които изискват наблюдатели, за да функционират в Windows с точен график.
int main (void) {
delay_init ();
// забавяне при стартиране NVIC_PriorityGroupConfig (NVIC_PriorityGroup_2);
// NVIC INIT uart_init (115200);
// UART INIT PAD_INIT ();
// Light Init IWDG_Init (4, 625);
докато (1) {
ако (USART_RX_END)
{превключвател (USART_RX_BUF [5])
{
калъф еспресо:
CoffeeSelect (еспресо, USART_RX_BUF [8]);
прекъсване;
случай Американо:
CoffeeSelect (Americano, USART_RX_BUF [8]);
Основната логика във функцията Main е следната:
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 ++;
ако (timer_cnt> = 200)
{
milk_send [6] = мляко ();
И накрая, добавете кода в прекъсването на таймера: Целта ми е в прекъсването на таймера да проверя колко кафе и мляко е останало и след това да изпратя откритата стойност на дисплея през сериен порт. Измерването на остатъците от мляко и кафе на зърна обикновено се извършва от сензори. Простите методи включват сензори за налягане, които измерват текущото тегло на млякото и кафе на зърна, за да определят колко остава.
Впишете в последното
Тази статия записва само простия процес на разработка на моя проект. Като се има предвид конфиденциалността на проекта на компанията, интерфейсът на дисплея на потребителския интерфейс, който използвах, също беше направен от мен, а не истинският интерфейс на дисплея на потребителския интерфейс на този проект. Кодовата част на STM32 добавя само периферния драйвер на MCU и свързания логически код. Като се има предвид и поверителността на проекта на компанията, конкретната ключова технологична част не е дадена, моля, разберете. Въпреки това, според кода, който предоставих, си сътрудничете с екрана на STONE. моите приятели, които също са софтуерни инженери, трябва да отделят само няколко дни, за да добавят ключови технически части към моята кодова рамка, за да завършат проекта.
За да научите повече за проекта, щракнете тук