Мазмұны:

STONE дисплейі +STM32 +кофеқайнатқыш: 6 қадам
STONE дисплейі +STM32 +кофеқайнатқыш: 6 қадам

Бейне: STONE дисплейі +STM32 +кофеқайнатқыш: 6 қадам

Бейне: STONE дисплейі +STM32 +кофеқайнатқыш: 6 қадам
Бейне: Ninja Pods & Grounds Single Serve K-Cup Coffee Maker Review Makes Great Iced Coffee! 2024, Қараша
Anonim
STONE дисплейі +STM32 +кофеқайнатқыш
STONE дисплейі +STM32 +кофеқайнатқыш

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

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

1 -қадам: Кофеқайнатқыштың дисплей экранының функциясы Кіріспе

Бұл жобаның келесі функциялары бар: l

  • Ағымдағы уақыт пен күнді көрсетеді
  • Дисплейде американо, латте, капучино және эспрессоға арналған төрт түйме бар.
  • Қалған кофе дәндерінің, сүт пен кофе қантының ағымдағы мөлшерін көрсетеді
  • Мәтінді көрсету терезесі ағымдағы күйді көрсетеді

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

2 -қадам: STONE дисплейі үшін UI суреттерін жасаңыз

STONE дисплейі үшін UI суреттерін жасаңыз
STONE дисплейі үшін UI суреттерін жасаңыз
STONE дисплейі үшін UI суреттерін жасаңыз
STONE дисплейі үшін UI суреттерін жасаңыз
STONE дисплейі үшін UI суреттерін жасаңыз
STONE дисплейі үшін UI суреттерін жасаңыз

Функционалды талаптарға сәйкес, мен келесі екі интерфейс интерфейсін жасадым, олардың бірі - негізгі интерфейс, екіншісі - түйме әсері.

STONE TOOL Box қолдану Қазіргі уақытта STONE TOOL ұсынады. Жаңа жобаны құру үшін осы құралды ашыңыз, содан кейін суреттерді көрсету үшін жасалынған интерфейсті импорттаңыз және өзіңіздің түймелеріңізді, мәтінді көрсету қораптарын және т.б. қосыңыз. STONE ресми сайтында бұл бағдарламалық қамтамасыз етуді пайдалану туралы толық нұсқаулық бар: https:/ /www.stoneitech.com/support/download/video

STONE TOOL Box ішіндегі түймелерді қосу мен компоненттерді көрсету әсерлері келесідей:

STONE TOOL Box модельдеу дисплейінің функциясына ие, ол арқылы интерфейс интерфейсінің жұмыс әсерін көруге болады:

Бұл кезде 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 КБ
  • Бағдарлама жадының түрі: FLASH
  • ЖЖҚ сыйымдылығы: 48K
  • Кернеу - қуат көзі (Vcc/Vdd): 2 В ~ 3,6 В
  • Осциллятор: ішкі
  • Жұмыс температурасы: -40 ° C ~ 85 ° C
  • Пакет/тұрғын үй: 64 қызмет мерзімі

Бұл жобада мен UART, GPIO, Watch Dog және STM32F103RCT6 таймерін қолданамын. Бұл қосымша құрылғылардың дамуы төменде құжатталған. STM32 Keil MDK бағдарламалық жасақтамасын қолданады, ол сізге бөтен емес, сондықтан мен бұл бағдарламалық жасақтаманы орнату әдісін енгізбеймін. STM32 онлайн режимінде j-link немесе st-link және басқа модельдеу құралдары арқылы модельдеуге болады. Келесі сурет - мен қолданған STM32 схемасы:

4 -қадам: UART сериялық

UART сериясы
UART сериясы
UART сериясы
UART сериясы
UART сериясы
UART сериясы

STM32F103RCT6 бірнеше сериялық порттарға ие. Бұл жобада мен PA9/PA10 сериялық порттық каналын қолдандым, ал сериялық портты беру жылдамдығы 115200 деңгейінде орнатылды.

GPIO

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

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

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

Таймерді инициализациялау кезінде жиіліктің бөліну коэффициентін көрсетіңіз, мұнда біздің жүйелік сағат (72 МГц) жиілікті бөлуге арналған.

Содан кейін arr қайта жүктеу мәнін көрсетіңіз, яғни біздің таймер осы массивке жеткенде, таймер басқа мәндерді қайта жүктейді.

Мысалы, біз таймерді санауды орнатқан кезде, таймерді санау мәні arr -ге тең және ол 0 -ге тазартылады және қайта есептеледі.

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

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

Формуланы шығару: сөйлесу - таймердің сағат көзі, мұнда 72 МГц

Біз бөлінген сағат жиілігін бөлеміз, жиілікті бөлу мәнін PSC ретінде көрсетеміз, содан кейін біздің сөйлесуді PSC +1 -ге бөлеміз, біздің таймердің соңғы жиілігі Tclk/(PSC +1) МГц

Бұл жерде біз жиілік деп отырғанымыз - бізде PSC +1 M (1M = 10 ^ 6) сандары бойынша 1 сөйлесу бар, және әр санның уақыты - PSC +1 /Talk, және керісінше екенін түсіну оңай. жиіліктің кезеңі - бұл әр санның периоды - бұл PSC +1 /Сөйлесу секундтары, содан кейін біз 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с өту үшін 9000 нөмірді жазамыз, сондықтан 1с жаңартуға өтеді.

жарамсыз 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 -қадам: Қарауыл иті

Ит қарау
Ит қарау
Ит қарау
Ит қарау

Бағдарлама жұмыс істеп тұрған кезде жүйенің бұзылуын болдырмау үшін мен күзетшіге қостым. Шын мәнінде, MCU пайдаланатын барлық жобаларда әдетте күзетші қолданылады.

STM32-де қауіпсіздікті, уақыт дәлдігін және икемділікті қамтамасыз ететін екі бекітілген күзетші бар. Бағдарламалық жасақтаманың қателіктерінен туындаған ақауларды анықтау және жою үшін екі бақылау құралын (тәуелсіз қарауыл және терезе күзетшісі) пайдалануға болады. Есептегіш берілген күту уақытына жеткенде, үзіліс (тек терезені бақылаушы) немесе жүйені қалпына келтіру іске қосылады. Тәуелсіз бақылаушы (IWDG):

Арнайы төмен жылдамдықты сағат (LSI) арқылы басқарылады, ол негізгі сағат істен шықса да жұмыс істейді.

Ол қарауылшы негізгі бағдарламадан тыс толықтай дербес жұмыс істеуі қажет болатын және уақыттың дәлдігін талап ететін жағдайларда қолдануға жарамды. Терезе бақылаушысы (WWDG):

APB1 сағаттан жиілікке бөлінгеннен кейін. Конфигурацияланатын уақыт терезесі арқылы әдеттен тыс кеш немесе уақытынан бұрын қолданбаның жұмысын анықтаңыз. Windows -тің дәл уақытында жұмыс істеуін қадағалауды қажет ететін бағдарламалар үшін қолайлы.

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

delay_init ();

// 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 (Espresso, USART_RX_BUF [8]);

үзіліс;

американдық жағдай:

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] = сүт ();

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

Соңына жазыңыз

Бұл мақалада менің жобамның қарапайым даму процесі ғана жазылған. Компания жобасының құпиялылығын ескере отырып, мен қолданған интерфейс интерфейсін осы жобаның нақты интерфейсінің интерфейсі емес, өзім жасадым. STM32 кодтық бөлігі MCU перифериялық драйверін және соған сәйкес логикалық кодты қосады. Сондай -ақ, компания жобасының құпиялылығын ескере отырып, нақты технологиялық бөлік берілмеген, түсінуіңізді сұраймыз. Дегенмен, мен берген код бойынша STONE дисплей экранымен жұмыс жасаңыз. менің бағдарламалық жасақтама инженерлері болып табылатын менің достарым жобаны аяқтау үшін менің кодтық құрылымыма негізгі техникалық бөліктерді қосу үшін бірнеше күн ғана жұмсауы керек.

Жоба туралы көбірек білу үшін мына жерді басыңыз