Мазмуну:

STONE Display +STM32 +Coffee Maker: 6 кадам
STONE Display +STM32 +Coffee Maker: 6 кадам

Video: STONE Display +STM32 +Coffee Maker: 6 кадам

Video: STONE Display +STM32 +Coffee Maker: 6 кадам
Video: "Ridiculous" Espresso Workflow Ever! #coffeegrinder #coffeemachine #espresso 2024, Июль
Anonim
STONE Display +STM32 +Coffee Maker
STONE Display +STM32 +Coffee Maker

Мен MCU программалык камсыздоо инженеримин, жакында кабыл алынган долбоор - бул кофе машинасы, сенсордук экрандын иштөөсү менен үйдүн талаптары, функциясы жакшы, экрандын үстүндө тандоо анча жакшы болбошу мүмкүн, бактыга жараша, бул проект мен эмнени чече алам Өзүмдү колдонуу үчүн MCU, ошондой эле экрандын кандай экенин чечүү үчүн колдонсо болот, ошондуктан мен STM32дин жөнөкөй жана оңой MCU түрүн тандадым, дисплей экраны STONE сенсордук экранын тандадым, экран жөнөкөй жана колдонууга оңой, Менин STM32 MCU UART аркылуу гана байланышта.

STU сериялык ЖК дисплейи, ал MCUнын сериялык порту аркылуу баарлаша алат. Ошол эле учурда, бул дисплей экрандын UI интерфейсинин логикалык дизайны STONE расмий сайты тарабынан берилген STONE TOOL Boxтун жардамы менен түздөн -түз иштелип чыгышы мүмкүн, бул абдан ыңгайлуу. Ошентип, мен аны бул кофе машинасы долбоору үчүн колдоном. Ошол эле учурда, мен жөн эле негизги өнүгүүнү жазам. Бул менин компаниямдын долбоору болгондуктан, мен жөнөкөй демо жаздырам жана толук кодду жазбайм. Таш дисплей экраны жөнүндө кээ бир негизги окуу куралдары веб -сайтка кире алат: https://www.stoneitech.com/ Веб -сайтта модель, колдонуу жана дизайн документтери, ошондой эле видео сабактары жөнүндө ар кандай маалыматтар бар. Мен бул жерде өтө майда -чүйдөсүнө чейин токтолбойм.

1 -кадам: Coffee Machine Display Screen Function Киришүү

Бул долбоор төмөнкү функцияларды аткарат: l

  • Учурдагы убакытты жана күндү көрсөтөт
  • Дисплейде америка, латте, капучино жана эспрессо үчүн төрт баскыч бар.
  • Калган кофе буурчактары, сүт жана кофе шекеринин учурдагы суммасын көрсөтөт
  • Текстти көрсөтүү кутучасы учурдагы абалды көрсөтөт

Бул түшүнүктөрдү эске алуу менен, сиз UI интерфейсин түзө аласыз. UI дизайнындагы сенсордук экрандардын STONE салыштырмалуу жөнөкөй, PhotoShop программасы аркылуу колдонуучу жакшы UI интерфейси жана баскыч эффекти, STONE TOOL Box аркылуу экранга жакшы сүрөттөрдү иштеп чыгуу жана STONE TOOL Box логикасы менен өз баскычтарын кошуу. сериялык маалыматтар кайтаруу мааниси жакшы, сиз иштеп чыгуу үчүн абдан оңой.

2 -кадам: STONE Display үчүн UI сүрөттөрүн жасаңыз

STONE дисплейи үчүн UI сүрөттөрүн жасаңыз
STONE дисплейи үчүн UI сүрөттөрүн жасаңыз
STONE дисплейи үчүн UI сүрөттөрүн жасаңыз
STONE дисплейи үчүн UI сүрөттөрүн жасаңыз
STONE дисплейи үчүн UI сүрөттөрүн жасаңыз
STONE дисплейи үчүн UI сүрөттөрүн жасаңыз

Функционалдык талаптарга ылайык, мен төмөнкү UI дисплей интерфейстерин жасадым, бири негизги интерфейс, экинчиси баскыч эффекти.

STONE TOOL Box колдонуу Азыркы учурда STONE TOOL менен камсыз кылат. Жаңы долбоорду түзүү үчүн бул куралды ачыңыз, андан кийин сүрөттөрдү көрсөтүү үчүн иштелип чыккан интерфейсти импорттоңуз жана өзүңүздүн баскычтарыңызды, текст дисплей кутучаларын ж. /www.stoneitech.com/support/download/video

STONE TOOL кутусуна баскычтарды кошуунун жана компоненттерди көрсөтүүнүн эффекттери төмөнкүдөй:

STONE TOOL Box симуляция дисплейинин функциясына ээ, ал аркылуу сиз UI интерфейсинин иштөө эффектин көрө аласыз:

Бул учурда, менин UI дисплейим бүтүп калды, мен MCU кодун жазуум керек. STONE TOOL Box тарабынан түзүлгөн файлдарды дисплей экранына түшүрүп, чыныгы жыйынтыктарды көрүңүз.

3 -кадам: STM32F103RCT6

STM32F103RCT6
STM32F103RCT6

STM32F103RCT6 MCU күчтүү функцияларга ээ. Бул жерде MCUнын негизги параметрлери:

  • Сериялар: STM32F10X l Kerne
  • ARM - COTEX32
  • Ылдамдыгы: 72 МГц
  • Байланыш интерфейси: CAN, I2C, IrDA, LIN, SPI, UART/USART, USB
  • Перифериялык жабдуулар: DMA, моторду башкаруу PWM, PDR, POR, PVD, PWM, температура сенсору, WDT
  • Программанын сыйымдуулугу: 256 KB
  • Программанын эс тутуму: FLASH
  • RAM сыйымдуулугу: 48K
  • Voltage - электр менен камсыздоо (Vcc/Vdd): 2 V ~ 3.6 V
  • Осциллятор: ички
  • Иштөө температурасы: -40 ° C ~ 85 ° C
  • Топтом/турак жай: 64-жашоо

Бул долбоордо мен UART, GPIO, Watch Dog жана STM32F103RCT6 таймерин колдоном. Бул перифериялык түзүлүштөрдүн өнүгүүсү төмөндө документтештирилген. STM32 Keil MDK программалык камсыздоону колдонот, бул сизге чоочун эмес, ошондуктан мен бул программаны орнотуу ыкмасын киргизбейм. STM32 онлайн режиминде j-link же st-link жана башка симуляция куралдары менен окшоштурулушу мүмкүн. Төмөндөгү сүрөт мен колдонгон STM32 схемасы:

4 -кадам: UART Serial

UART Serial
UART Serial
UART Serial
UART Serial
UART Serial
UART Serial

STM32F103RCT6 бир нече сериялык портторго ээ. Бул долбоордо мен PA9/PA10 сериялык порттук каналын колдондум жана сериялык порттун берүүлүк ылдамдыгы 115200 деп белгиленди.

GPIO

Бул долбоордун колдонуучу интерфейсинде төрт баскыч бар, алар кофенин төрт түрүн жасашат. Кофе машинасында кофенин дандарынын санын, сүттүн керектелишин жана ар кандай кофелердин суу агымын көзөмөлдөө сенсорлорду жана релелерди көзөмөлдөө аркылуу ишке ашат, мен болсо GPIO пинди биринчи башкарам.

5 -кадам: Таймер

Таймер
Таймер
Таймер
Таймер

Таймерди инициализациялоодо, жыштыктын бөлүнүү коэффициентин көрсөтүңүз, бул жерде жыштыкты бөлүштүрүү үчүн биздин системалык саат (72МГц)

Андан кийин arr жүктөөнүн маанисин көрсөтүңүз, бул биздин таймер бул массивге жеткенде, таймер башка баалуулуктарды кайра жүктөйт.

Мисалы, биз таймерди эсептөө үчүн койгондо, таймердин санынын мааниси arrга барабар болот жана 0 менен тазаланат жана кайра эсептелет

Таймердин саны кайра жүктөлөт жана бир жолу Жаңыртуу болуп саналат

Жаңыртуу убактысынын формуласын эсептеңиз Tout = ((arr +1)*(PSC +1))/Tclk

Формуланын келип чыгышы: Talk таймердин саат булагы, бул жерде 72Mhz

Биз бөлүнгөн саат жыштыгын бөлүштүрөбүз, жыштыктын бөлүнүү маанисин ПСК катары көрсөтөбүз, андан кийин биздин сүйлөшүүнү PSC +1ге бөлөбүз, биздин таймердин акыркы жыштыгы Tclk/(PSC +1) MHz

Демек, бул жердеги жыштык деген эмнени билдирет: бизде PSC +1 M Сандарынын 1с сүйлөшүүсү бар (1M = 10 ^ 6), жана ар бир сан үчүн убакыт PSC +1 /Talk, жана тескери экенин түшүнүү оңой жыштыктын мезгили болуп саналат жана бул жердеги ар бир сан үчүн мезгил - PSC +1 /Talk секунддары, андан кийин биз 0дон arrга чейин барабыз (arr +1)*(PSC +1) /Tclk

Мисалы, келгиле arr = 7199 жана PSC = 9999

Биз 72МГцти 9999го бөлдүк+1 7200Гцке барабар

Бул секундасына 9 000 эсептөө, жана ар бир эсептөө 1/7, 200 секунда

Ошентип, биз бул жерде таймерди жаңыртуу үчүн (7199+1)*(1/7200) = 1с баруу үчүн бул жерде 9 000 Сандарды жаздырып жатабыз, андыктан 1s жаңыртууга өтөт.

жараксыз TIM3_Int_Init (u16 arr, u16 psc) {

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd (RCC_APB1Periph_TIM3, ИШТЕТҮҮ);

// саат 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 -кадам: Watch Dog

Watch Dog
Watch Dog
Watch Dog
Watch Dog

Программа иштеп жатканда системанын бузулушуна жол бербөө үчүн мен күзөтчүнү коштум. Чынында, MCUду колдонгон бардык долбоорлордо көбүнчө күзөтчү колдонулат.

STM32де коопсуздукту, убакыттын тактыгын жана ийкемдүүлүктү камсыз кылган эки камтылган күзөтчү бар. Программалык каталардан келип чыккан мүчүлүштүктөрдү аныктоо жана чечүү үчүн эки күзөтчү түзмөк (көз карандысыз күзөтчү жана терезе күзөтчүсү) колдонулушу мүмкүн. Эсептегич күтүү убактысынын маанисине жеткенде, үзгүлтүккө учуроо (терезе күзөтчүсү гана) же системаны баштапкы абалга келтирүү ишке киргизилет. Көз карандысыз күзөтчү (IWDG):

Атайын ылдамдыкта иштөөчү саат (LSI) менен иштейт, ал мастер саат иштебесе дагы иштейт.

Бул күзөтчү негизги программанын сыртында толугу менен өз алдынча иштеши керек болгон учурларда колдонууга ылайыктуу жана аз убакыт тактыгын талап кылат. Терезе күзөтчүсү (WWDG):

APB1 сааттан жыштыкка бөлүнгөндөн кийин саат менен башкарылат. Конфигурациялануучу убакыт терезеси аркылуу анормалдуу түрдө кеч же эрте колдонуу ишин аныктаңыз. Windowsтун так убактысында иштеши үчүн күзөтчүлөрдү талап кылган программаларга ылайыктуу.

int main (жараксыз) {

delay_init ();

// кечигүү 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 (Espresso, USART_RX_BUF [8]);

тыныгуу;

Case Americano:

CoffeeSelect (Americano, USART_RX_BUF [8]);

Негизги функциядагы негизги логика төмөнкүчө:

u8 timer_cnt = 0;

жараксыз TIM3_IRQHandler (жараксыз) // TIM3

{

эгерде (TIM_GetITStatus (TIM3, TIM_IT_Update)! = КАЛПЫНА КЕЛТИРҮҮ)

{

TIM_ClearITPendingBit (TIM3, TIM_IT_Update);

timer_cnt ++;

эгер (timer_cnt> = 200)

{

milk_send [6] = сүт ();

Акырында, таймердин үзүлүшүнө кодду кошуңуз: Таймердин үзүлүшүндө менин максатым канча кофе жана сүт калганын текшерүү, андан кийин табылган маанини сериялык порт аркылуу дисплей экранына жөнөтүү. Сүт менен кофенин дандарынын калганын өлчөө адатта сенсорлор тарабынан жүргүзүлөт. Жөнөкөй ыкмаларга басымдын сенсорлору кирет, алар сүт жана кофе буурчактарынын учурдагы салмагын өлчөп, канча калганын аныкташат.

Акыркысына жаз

Бул макалада менин долбоорумдун жөнөкөй өнүгүү процесси жазылган. Компаниянын долбоорунун купуялуулугун эске алып, мен колдонгон UI дисплей интерфейси бул долбоордун чыныгы UI дисплей интерфейси эмес, өзүм тарабынан жасалган. STM32 код бөлүгү MCU жана ага байланыштуу логикалык коддун перифериялык драйверин гана кошот. Ошондой эле компаниянын долбоорунун купуялыгын эске алып, конкреттүү негизги технологиялык бөлүк берилген эмес, түшүнүңүз. Бирок, мен берген кодго ылайык, STONE дисплейи менен кызматташыңыз. досторум, ошондой эле программалык камсыздоо инженерлери, долбоорду аягына чыгаруу үчүн коддун алкагына негизги техникалык бөлүктөрдү кошуу үчүн бир нече күн коротушу керек.

Долбоор жөнүндө көбүрөөк билүү үчүн бул жерди басыңыз