Isi kandungan:

Paparan BATU + STM32 + Pembuat Kopi: 6 Langkah
Paparan BATU + STM32 + Pembuat Kopi: 6 Langkah

Video: Paparan BATU + STM32 + Pembuat Kopi: 6 Langkah

Video: Paparan BATU + STM32 + Pembuat Kopi: 6 Langkah
Video: SULTAN MEDAN INDRAKENZ NAIK JET PRIBADI KE PULAU PRIBADI!! 2024, Julai
Anonim
Paparan BATU + Pembuat Kopi STM32 +
Paparan BATU + Pembuat Kopi STM32 +

Saya seorang jurutera perisian MCU, baru-baru ini menerima projek untuk menjadi mesin kopi, keperluan rumah tangga dengan operasi skrin sentuh, fungsinya bagus, di atas pemilihan skrin mungkin tidak begitu baik, untungnya, projek ini saya dapat memutuskan apa MCU untuk menggunakan diri saya, juga dapat digunakan untuk menentukan layar apa, jadi saya memilih STM32 jenis MCU yang sederhana dan mudah digunakan, layar paparan Saya memilih paparan layar sentuh STONE, layarnya mudah dan mudah digunakan, My STM32 MCU hanya melalui komunikasi UART yang sesuai dengannya.

Layar paparan bersiri LCD BATU, yang dapat berkomunikasi melalui port bersiri MCU. Pada masa yang sama, reka bentuk logik antara muka UI skrin paparan ini dapat direka secara langsung dengan menggunakan Kotak BATU ALAT yang disediakan oleh laman web rasmi STONE, yang sangat mudah. Oleh itu, saya akan menggunakannya untuk projek mesin kopi ini. Pada masa yang sama, saya hanya akan merakam perkembangan asasnya. Oleh kerana ini adalah projek syarikat saya, saya hanya akan merakam demo ringkas dan tidak menulis kod yang lengkap. Beberapa tutorial asas mengenai layar paparan batu boleh pergi ke laman web: https://www.stoneitech.com/ Laman web mempunyai pelbagai maklumat mengenai model, penggunaan, dan dokumentasi reka bentuk, serta tutorial video. Saya tidak akan membahas dengan terperinci di sini.

Langkah 1: Fungsi Skrin Paparan Mesin Kopi Pengenalan

Projek ini mempunyai fungsi berikut: l

  • Memaparkan masa dan tarikh semasa
  • Terdapat empat butang pada paparan untuk americano, latte, cappuccino, dan espresso.
  • Memaparkan jumlah baki kopi, susu, dan gula kopi yang tinggal
  • Kotak paparan teks memaparkan keadaan semasa

Dengan konsep ini, anda boleh merancang antara muka UI. BATU layar sentuh dalam reka bentuk UI agak mudah, pengguna melalui perisian PhotoShop merancang antara muka UI dan kesan butang yang baik, melalui Kotak ALAT BATU untuk merancang gambar yang bagus ke dalam skrin, dan tambahkan butang anda sendiri dengan logik Kotak BATU BATU dan data bersiri nilai pulangannya ok, sangat mudah untuk anda kembangkan.

Langkah 2: Buat Gambar UI untuk Paparan BATU

Buat Gambar UI untuk Paparan BATU
Buat Gambar UI untuk Paparan BATU
Buat Gambar UI untuk Paparan BATU
Buat Gambar UI untuk Paparan BATU
Buat Gambar UI untuk Paparan BATU
Buat Gambar UI untuk Paparan BATU

Mengikut keperluan fungsi, saya membuat dua antara muka paparan UI berikut, satu adalah antara muka utama dan yang lain adalah kesan butang.

Penggunaan Kotak ALAT BATU Pada masa ini, BATU menyediakan ALAT. Buka ALAT ini untuk membuat projek baru, kemudian import UI yang dirancang untuk memaparkan gambar, dan tambahkan butang anda sendiri, kotak paparan teks, dll. Laman web rasmi STONE mempunyai tutorial yang sangat lengkap tentang cara menggunakan perisian ini: https: / /www.stoneitech.com/support/download/video

Kesan menambahkan butang dan memaparkan komponen dalam Kotak BATU ALAT adalah seperti berikut:

STONE TOOL Box mempunyai fungsi paparan simulasi, di mana anda dapat melihat kesan operasi antara muka UI:

Pada ketika ini, paparan UI saya sudah lengkap, dan yang harus saya buat hanyalah menulis kod MCU. Muat turun fail yang dihasilkan oleh Kotak BATU BATU ke skrin paparan untuk melihat hasil sebenar.

Langkah 3: STM32F103RCT6

STM32F103RCT6
STM32F103RCT6

STM32F103RCT6 MCU mempunyai fungsi yang hebat. Berikut adalah parameter asas MCU:

  • Siri: STM32F10X l Kerne
  • ARM - COTEX32
  • Kelajuan: 72 MHZ
  • Antara muka komunikasi: CAN, I2C, IrDA, LIN, SPI, UART / USART, USB
  • Peralatan persisian: DMA, kawalan motor PWM, PDR, POR, PVD, PWM, sensor suhu, WDT
  • Kapasiti simpanan program: 256KB
  • Jenis memori program: FLASH
  • Kapasiti RAM: 48K
  • Voltan - bekalan kuasa (Vcc / Vdd): 2 V ~ 3.6 V
  • Pengayun: dalaman
  • Suhu operasi: -40 ° C ~ 85 ° C
  • Pakej / perumahan: 64-hayat

Dalam projek ini, saya akan menggunakan UART, GPIO, Watch Dog, dan Timer STM32F103RCT6. Perkembangan periferal ini didokumentasikan di bawah. STM32 MENGGUNAKAN pengembangan perisian Keil MDK, yang tidak asing bagi anda, jadi saya tidak akan memperkenalkan kaedah pemasangan perisian ini. STM32 boleh disimulasikan secara dalam talian dengan j-link atau st-link dan alat simulasi lain. Gambar berikut adalah papan litar STM32 yang saya gunakan:

Langkah 4: UART Serial

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

STM32F103RCT6 mempunyai beberapa port bersiri. Dalam projek ini, saya menggunakan saluran port bersiri PA9 / PA10, dan kadar baud port siri ditetapkan pada 115200.

GPIO

Di antara muka pengguna projek ini, terdapat empat butang, yang sebenarnya adalah pembuatan empat jenis kopi. Di mesin kopi, mengawal bilangan biji kopi, penggunaan susu, dan aliran air kopi yang berbeza sebenarnya dapat dicapai dengan mengawal sensor dan relay, sementara saya hanya mengawal pin GPIO terlebih dahulu.

Langkah 5: Pemasa

Pemasa
Pemasa
Pemasa
Pemasa

Semasa memulakan pemasa, tentukan pekali pembahagian frekuensi PSC, berikut adalah jam sistem kami (72MHz) untuk pembahagian frekuensi

Kemudian tentukan nilai tambah nilai arr, yang bermaksud bahawa apabila pemasa kita mencapai arr ini, pemasa akan memuatkan semula nilai lain.

Sebagai contoh, apabila kita menetapkan pemasa untuk mengira, nilai kiraan pemasa sama dengan arr dan akan dihapus dengan 0 dan dikira semula

Kiraan pemasa dimuat semula dan sekali adalah Kemas kini

Hitung formula Masa kemas kini Tout = ((arr + 1) * (PSC +1)) / Tclk

Pembentukan formula: Bicara adalah sumber jam pemasa, berikut adalah 72Mhz

Kami membahagikan frekuensi jam yang diperuntukkan, menentukan nilai pembahagian frekuensi sebagai PSC, kemudian membahagikan Talk kami ke PSC +1, frekuensi akhir pemasa kami adalah Tclk / (PSC +1) MHz

Jadi apa yang kita maksudkan dengan frekuensi di sini ialah kita mempunyai 1s Bicara melalui Nombor PSC +1 M (1M = 10 ^ 6), dan masa untuk setiap nombor adalah PSC +1 / Talk, dan mudah difahami bahawa kebalikannya frekuensi adalah noktah, dan noktah untuk setiap nombor di sini adalah PSC +1 / Bual saat dan kemudian kita pergi dari 0 ke arr adalah (arr + 1) * (PSC +1) / Tclk

Sebagai contoh, mari tetapkan arr = 7199 dan PSC = 9999

Kami membahagikan 72MHz menjadi 9999 + 1 sama dengan 7200Hz

Ini adalah 9, 000 kiraan sesaat, dan setiap kiraan adalah 1/7, 200 sesaat

Oleh itu, kami merakam 9, 000 Nombor di sini untuk pergi ke kemas kini pemasa (7199 + 1) * (1/7200) = 1s, jadi 1s pergi ke kemas kini.

batal TIM3_Int_Init (u16 arr, u16 psc) {

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

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

Sila hubungi kami sekiranya anda memerlukan prosedur yang lengkap:

www.stoneitech.com/hubungi

Saya akan membalas anda dalam masa 12 jam.

Langkah 6: Tonton Anjing

Tonton Anjing
Tonton Anjing
Tonton Anjing
Tonton Anjing

Untuk mengelakkan sistem tidak berfungsi semasa program berjalan, saya menambahkan pengawas. Sebenarnya, semua projek yang menggunakan MCU umumnya menggunakan pengawas.

STM32 mempunyai dua pengawas terbina dalam, memberikan keselamatan, ketepatan masa, dan fleksibiliti yang lebih besar. Dua peranti pengawas (pengawas bebas dan pengawas tingkap) dapat digunakan untuk mengesan dan menyelesaikan kesalahan yang disebabkan oleh kesalahan perisian. Apabila penghitung mencapai nilai batas waktu tertentu, gangguan (tetingkap pengawas tetingkap sahaja) atau tetapan semula sistem akan dicetuskan. Pengawas bebas (IWDG):

Didorong oleh jam berkelajuan rendah khusus (LSI), ia berfungsi walaupun jam induk gagal.

Ia sesuai digunakan dalam situasi di mana pengawas dikehendaki bekerja sepenuhnya secara bebas di luar program utama dan memerlukan ketepatan masa yang rendah. Pengawal tingkap (WWDG):

Didorong oleh jam dari jam APB1 selepas pembahagian frekuensi. Kesan operasi aplikasi lewat atau awal yang tidak normal melalui tetingkap waktu yang boleh dikonfigurasi. Sesuai untuk program yang memerlukan pengawas berfungsi dengan tepat pada Windows.

int utama (tidak sah) {

kelewatan_init ();

// kelewatan init NVIC_PriorityGroupConfig (NVIC_PriorityGroup_2);

// NVIC INIT uart_init (115200);

// UART INIT PAD_INIT ();

// Light Init IWDG_Init (4, 625);

semasa (1) {

jika (USART_RX_END)

{suis (USART_RX_BUF [5])

{

kes Espresso:

Pilih Kopi (Espresso, USART_RX_BUF [8]);

rehat;

kes Americano:

Pilih Kopi (Americano, USART_RX_BUF [8]);

Logik utama dalam fungsi Utama adalah seperti berikut:

u8 timer_cnt = 0;

batal TIM3_IRQHandler (tidak sah) // TIM3

{

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

{

TIM_ClearITPendingBit (TIM3, TIM_IT_Update);

pemasa_cnt ++;

jika (pemasa_cnt> = 200)

{

milk_send [6] = susu ();

Akhirnya, tambahkan kod dalam interup pemasa: Pada interup pemasa, tujuan saya adalah untuk memeriksa berapa banyak kopi dan susu yang tinggal, dan kemudian mengirim nilai yang dikesan ke skrin paparan melalui port bersiri. Mengukur berapa banyak susu dan biji kopi yang tinggal biasanya dilakukan oleh sensor. Kaedah mudah termasuk sensor tekanan, yang mengukur berat susu dan biji kopi semasa untuk menentukan berapa banyak yang tersisa.

Tulis pada yang terakhir

Artikel ini hanya mencatat proses pembangunan mudah projek saya. Mengingat kerahsiaan projek syarikat, antara muka paparan UI yang saya gunakan juga dibuat oleh saya sendiri, bukan antara muka paparan UI projek ini. Bahagian kod STM32 hanya menambah pemacu persisian MCU dan kod logik yang berkaitan. Dengan mempertimbangkan kerahsiaan projek syarikat, bahagian teknologi utama tidak diberikan, harap difahami. Namun, mengikut kod yang saya berikan, bekerjasama dengan skrin paparan BATU. rakan-rakan saya yang juga jurutera perisian hanya perlu menghabiskan beberapa hari untuk menambahkan bahagian teknikal utama pada kerangka kod saya untuk menyelesaikan projek.

Untuk mengetahui lebih lanjut mengenai projek tersebut, klik di sini