Talaan ng mga Nilalaman:

Display ng BATO + STM32 + Gumagawa ng Kape: 6 na Hakbang
Display ng BATO + STM32 + Gumagawa ng Kape: 6 na Hakbang

Video: Display ng BATO + STM32 + Gumagawa ng Kape: 6 na Hakbang

Video: Display ng BATO + STM32 + Gumagawa ng Kape: 6 na Hakbang
Video: BTT Octopus V1.1 - Klipper Configuration 2024, Disyembre
Anonim
Display ng BATO + STM32 + Gumagawa ng Kape
Display ng BATO + STM32 + Gumagawa ng Kape

Ako ay isang MCU software engineer, kamakailang nakatanggap ng isang proyekto ay upang maging isang machine ng kape, mga kinakailangan sa sambahayan na may isang operasyon ng touch screen, ang pagpapaandar ay mabuti, sa itaas ng pagpili ng screen ay maaaring hindi masyadong maganda, mabuti na lang, ang proyektong ito ay maaari akong magpasya kung ano Ang MCU upang magamit ang aking sarili, maaari ring magamit upang magpasya kung ano ang screen, kaya pinili ko ang STM32 ng ganitong uri ng simple at madaling gamitin na MCU, display screen na pinili ko ang display ng touch screen ng STONE, ang screen ay simple at madaling gamitin, Aking Ang STM32 MCU sa pamamagitan lamang ng komunikasyon ng UART ay ok dito.

BATO serial LCD display screen, na maaaring makipag-usap sa pamamagitan ng serial port ng MCU. Sa parehong oras, ang disenyo ng lohika ng interface ng UI ng display screen na ito ay maaaring idinisenyo nang direkta sa pamamagitan ng paggamit ng STONE TOOL Box na ibinigay ng opisyal na website ng STONE, na napakadali. Kaya't gagamitin ko ito para sa proyektong ito ng machine machine. Sa parehong oras, itatala ko lamang ang pangunahing pag-unlad. Dahil ito ay isang proyekto ng aking kumpanya, magtatala lamang ako ng isang simpleng demo at hindi isulat ang kumpletong code. Ang ilang mga pangunahing tutorial tungkol sa display ng bato ay maaaring mapunta sa website: https://www.stoneitech.com/ Ang website ay may iba't ibang impormasyon tungkol sa modelo, paggamit, at dokumentasyon ng disenyo, pati na rin mga video tutorial. Hindi ko na idedetalye dito.

Hakbang 1: Panimula ng Pag-andar ng Screen ng Display ng Coffee Machine

Ang proyektong ito ay may mga sumusunod na pagpapaandar: l

  • Ipinapakita ang kasalukuyang oras at petsa
  • Mayroong apat na mga pindutan sa display para sa americano, latte, cappuccino, at espresso.
  • Ipinapakita ang kasalukuyang dami ng natitirang mga beans ng kape, gatas, at asukal sa kape
  • Ipinapakita ng isang kahon ng pagpapakita ng teksto ang kasalukuyang estado

Sa mga kaisipang konsepto na ito, maaari kang magdisenyo ng isang interface ng UI. Ang BATO ng mga touch screen sa disenyo ng UI ay medyo simple, ang gumagamit sa pamamagitan ng disenyo ng software ng PhotoShop ay mahusay na interface ng UI at epekto ng pindutan, sa pamamagitan ng STONE TOOL Box upang magdisenyo ng magagandang mga larawan sa screen, at idagdag ang iyong sariling mga pindutan na may lohika ng BATONG TOOL Box at serial data ang pagbalik halaga ay ok, napakadali para sa iyo upang bumuo.

Hakbang 2: Gumawa ng Mga Larawan sa UI para sa STONE Display

Gumawa ng Mga Larawan sa UI para sa STONE Display
Gumawa ng Mga Larawan sa UI para sa STONE Display
Gumawa ng Mga Larawan sa UI para sa STONE Display
Gumawa ng Mga Larawan sa UI para sa STONE Display
Gumawa ng Mga Larawan sa UI para sa STONE Display
Gumawa ng Mga Larawan sa UI para sa STONE Display

Ayon sa mga kinakailangang pag-andar, ginawa ko ang sumusunod na dalawang mga interface ng pagpapakita ng UI, ang isa ang pangunahing interface at ang isa pa ay ang epekto ng pindutan.

Paggamit ng STONE TOOL BoxKasalukuyan, ang BATO ay nagbibigay ng TOOL. Buksan ang TOOL na ito upang lumikha ng isang bagong proyekto, pagkatapos ay i-import ang idinisenyo na UI upang ipakita ang mga larawan, at idagdag ang iyong sariling mga pindutan, mga kahon ng display ng teksto, atbp. Ang opisyal na website ng STONE ay may isang kumpletong tutorial sa kung paano gamitin ang software na ito : https: / /www.stoneitech.com/support/download/video

Ang mga epekto ng pagdaragdag ng mga pindutan at pagpapakita ng mga sangkap sa STONE TOOL Box ay ang mga sumusunod:

Ang STONE TOOL Box ay may pagpapaandar ng pagpapakita ng simulation, kung saan maaari mong makita ang epekto ng operasyon ng interface ng UI:

Sa puntong ito, kumpleto ang aking display sa UI, at ang kailangan ko lang gawin ay isulat ang MCU code. I-download ang mga file na nabuo ng STONE TOOL Box papunta sa display screen upang makita ang aktwal na mga resulta.

Hakbang 3: STM32F103RCT6

STM32F103RCT6
STM32F103RCT6

Ang STM32F103RCT6 MCU ay may malakas na pag-andar. Narito ang mga pangunahing parameter ng MCU:

  • Serye: STM32F10X l Kerne
  • ARM - COTEX32
  • Bilis: 72 MHZ
  • Interface ng komunikasyon: CAN, I2C, IrDA, LIN, SPI, UART / USART, USB
  • Mga kagamitan sa paligid: DMA, kontrol sa motor PWM, PDR, POR, PVD, PWM, sensor ng temperatura, WDT
  • Kapasidad sa pag-iimbak ng programa: 256KB
  • Uri ng memorya ng programa: FLASH
  • Kapasidad ng RAM: 48K
  • Boltahe - power supply (Vcc / Vdd): 2 V ~ 3.6 V
  • Oscillator: panloob
  • Temperatura sa pagpapatakbo: -40 ° C ~ 85 ° C
  • Pakete / pabahay: 64-buhay

Sa proyektong ito, gagamitin ko ang UART, GPIO, Watch Dog, at Timer ng STM32F103RCT6. Ang pagpapaunlad ng mga peripheral na ito ay naitala sa ibaba. Gumagamit ang STM32 ng pag-unlad ng software ng Keil MDK, na hindi estranghero sa iyo, kaya hindi ko ipakikilala ang paraan ng pag-install ng software na ito. Ang STM32 ay maaaring kunwa online sa pamamagitan ng j-link o st-link at iba pang mga tool sa simulation. Ang sumusunod na larawan ay ang STM32 circuit board na ginamit ko:

Hakbang 4: UART Serial

Serye ng UART
Serye ng UART
UART Serial
UART Serial
Serye ng UART
Serye ng UART

Ang STM32F103RCT6 ay may maraming mga serial port. Sa proyektong ito, ginamit ko ang serial port channel PA9 / PA10, at ang serial port baud rate ay itinakda sa 115200.

GPIO

Sa interface ng gumagamit ng proyektong ito, mayroong isang kabuuang apat na mga pindutan, na talagang gumagawa ng apat na uri ng kape. Sa machine ng kape, ang pagkontrol sa bilang ng mga beans ng kape, pagkonsumo ng gatas, at daloy ng tubig ng iba't ibang mga kape ay talagang natanto sa pamamagitan ng pagkontrol sa mga sensor at relay, habang kontrolado ko lang muna ang GPIO pin.

Hakbang 5: Timer

Timer
Timer
Timer
Timer

Kapag pinasimulan ang timer, tukuyin ang koepisyent ng dibisyon ng dalas ng PSC, narito ang aming orasan ng system (72MHz) para sa dibisyon ng dalas

Pagkatapos ay tukuyin ang halaga ng muling pag-load arr, na nangangahulugang kapag naabot ng aming timer ang arr na ito, muling mai-load ng timer ang iba pang mga halaga.

Halimbawa, kapag itinakda namin ang timer upang mabilang, ang halaga ng bilang ng timer ay katumbas ng arr at malilinaw ng 0 at muling kalkulahin

Ang bilang ng timer ay na-reload at isang beses ay isang Update

Kalkulahin ang formula ng oras ng Pag-update Tout = ((arr + 1) * (PSC +1)) / Tclk

Pag-derivate ng formula: Ang pag-uusap ang mapagkukunan ng orasan ng timer, narito ang 72Mhz

Hinahati namin ang inilalaan na dalas ng orasan, tinukoy ang halaga ng paghahati ng dalas bilang PSC, pagkatapos ay hatiin ang aming Talk sa PSC +1, ang huling dalas ng aming timer ay Tclk / (PSC +1) MHz

Kaya kung ano ang ibig sabihin namin sa dalas dito ay mayroon kaming 1s ng Talk sa PSC +1 M Mga Numero (1M = 10 ^ 6), at ang oras para sa bawat numero ay PSC +1 / Talk, at madaling maunawaan na ang kabaligtaran ng dalas ay ang panahon, at ang panahon para sa bawat numero dito ay PSC +1 / Talk segundo at pagkatapos ay pumunta kami mula 0 hanggang arr ay (arr + 1) * (PSC +1) / Tclk

Halimbawa, itakda natin ang arr = 7199 at PSC = 9999

Hinati namin ang 72MHz sa 9999 + 1 ay katumbas ng 7200Hz

Ito ay 9, 000 na bilang bawat segundo, at ang bawat bilang ay 1/7, 200 ng isang segundo

Kaya nagtatala kami ng 9, 000 Mga Numero dito upang pumunta sa pag-update ng timer (7199 + 1) * (1/7200) = 1s, kaya't ang 1s ay napupunta sa isang pag-update.

walang bisa TIM3_Int_Init (u16 arr, u16 psc) {

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd (RCC_APB1Periph_TIM3, I-ENABLE);

// orasan 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);

Mangyaring makipag-ugnay sa amin kung kailangan mo ng isang kumpletong pamamaraan:

www.stoneitech.com/contact

Tutugon ako sa iyo sa loob ng 12 oras.

Hakbang 6: Panoorin ang Aso

Panoorin ang Aso
Panoorin ang Aso
Manood ng Aso
Manood ng Aso

Upang maiwasan ang pag-crash ng system habang tumatakbo ang programa, idinagdag ko ang watchdog. Sa katunayan, lahat ng mga proyekto na gumagamit ng MCU sa pangkalahatan ay gumagamit ng isang watchdog.

Ang STM32 ay may dalawang built-in na mga bantayan, na nagbibigay ng higit na seguridad, kawastuhan sa oras, at kakayahang umangkop. Maaaring magamit ang dalawang mga aparato ng bantayan (independiyenteng tagapagbantay at window watchdog) upang makita at malutas ang mga pagkakamali sanhi ng mga error sa software. Kapag naabot ng counter ang isang naibigay na halaga ng pag-timeout, isang nakakagambala (window watchdog lamang) o pag-reset ng system ay na-trigger. Independent watchdog (IWDG):

Hinihimok ng isang nakalaang mababang bilis na orasan (LSI), gumagana ito kahit na nabigo ang master orasan.

Ito ay angkop para magamit sa mga sitwasyon kung saan kinakailangan ang tagapagbantay upang gumana nang ganap na nakapag-iisa sa labas ng pangunahing programa at nangangailangan ng mababang katumpakan ng oras. Window watchdog (WWDG):

Hinihimok ng orasan mula sa APB1 na orasan pagkatapos ng paghati sa dalas. Makitang abnormal na huli o napaaga ang pagpapatakbo ng aplikasyon sa pamamagitan ng isang nai-configure na window ng oras. Angkop para sa mga program na nangangailangan ng mga watchdog upang gumana sa tumpak na oras ng Windows.

int main (walang bisa) {

delay_init ();

// antala init NVIC_PriorityGroupConfig (NVIC_PriorityGroup_2);

// NVIC INIT uart_init (115200);

// UART INIT PAD_INIT ();

// Light Init IWDG_Init (4, 625);

habang (1) {

kung (USART_RX_END)

{switch (USART_RX_BUF [5])

{

kaso Espresso:

CoffeeSelect (Espresso, USART_RX_BUF [8]);

pahinga;

kaso Americano:

CoffeeSelect (Americano, USART_RX_BUF [8]);

Ang Pangunahing lohika sa Pangunahing pagpapaandar ay ang mga sumusunod:

u8 timer_cnt = 0;

walang bisa TIM3_IRQHandler (walang bisa) // TIM3

{

kung (TIM_GetITStatus (TIM3, TIM_IT_Update)! = RESET)

{

TIM_ClearITPendingBit (TIM3, TIM_IT_Update);

timer_cnt ++;

kung (timer_cnt> = 200)

{

milk_send [6] = milk ();

Sa wakas, idagdag ang code sa timer makagambala: Sa timer makagambala, ang aking layunin ay upang suriin kung magkano ang natitirang kape at gatas, at pagkatapos ay ipadala ang napansin na halaga sa display screen sa pamamagitan ng isang serial port. Ang pagsukat kung magkano ang natitirang gatas at kape ng kape ay karaniwang ginagawa ng mga sensor. Ang mga simpleng pamamaraan ay may kasamang mga sensor ng presyon, na sumusukat sa kasalukuyang bigat ng gatas at mga beans ng kape upang matukoy kung magkano ang natira.

Sumulat sa huling

Itinatala lamang ng artikulong ito ang simpleng proseso ng pag-unlad ng aking proyekto. Isinasaalang-alang ang pagiging kompidensiyal ng proyekto ng kumpanya, ang interface ng pagpapakita ng UI na ginamit ko ay ginawa din ng aking sarili, hindi ang tunay na interface ng pagpapakita ng UI ng proyektong ito. Ang bahagi ng code ng STM32 ay nagdaragdag lamang ng peripheral driver ng MCU at kaugnay na code ng lohika. Isinasaalang-alang din ang pagiging kompidensiyal ng proyekto ng kumpanya, ang partikular na pangunahing bahagi ng teknolohiya ay hindi ibinigay, mangyaring maunawaan. Gayunpaman, alinsunod sa ibinigay kong code, makipagtulungan sa screen ng display na BATO. ang aking mga kaibigan na mga inhinyero ng software ay kailangan lamang gumastos ng ilang araw upang magdagdag ng mga pangunahing bahagi ng teknikal sa aking balangkas ng code upang makumpleto ang proyekto.

Upang matuto nang higit pa tungkol sa pag-click sa proyekto dito