Daftar Isi:

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

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

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

Saya seorang insinyur perangkat lunak MCU, baru-baru ini menerima proyek untuk menjadi mesin kopi, kebutuhan rumah tangga dengan operasi layar sentuh, fungsinya bagus, di atas pemilihan layar mungkin tidak terlalu bagus, untungnya, proyek ini saya bisa memutuskan apa MCU untuk digunakan sendiri, juga dapat digunakan untuk memutuskan apa layarnya, jadi saya memilih STM32 dari jenis MCU yang sederhana dan mudah digunakan, tampilan layar Saya memilih tampilan layar sentuh STONE, layarnya sederhana dan mudah digunakan, My STM32 MCU hanya melalui komunikasi UART tidak masalah.

Layar tampilan LCD serial BATU, yang dapat berkomunikasi melalui port serial MCU. Pada saat yang sama, desain logika antarmuka UI layar tampilan ini dapat dirancang secara langsung dengan menggunakan STONE TOOL Box yang disediakan oleh situs web resmi STONE, yang sangat nyaman. Jadi saya akan menggunakannya untuk proyek mesin kopi ini. Pada saat yang sama, saya hanya akan merekam perkembangan dasar. Karena ini adalah proyek perusahaan saya, saya hanya akan merekam demo sederhana dan tidak menulis kode lengkapnya. Beberapa tutorial dasar tentang tampilan layar batu dapat mengunjungi situs web: https://www.stoneitech.com/ Situs web ini memiliki berbagai informasi tentang model, penggunaan, dan dokumentasi desain, serta video tutorial. Saya tidak akan membahas terlalu banyak detail di sini.

Langkah 1: Pengenalan Fungsi Layar Tampilan Mesin Kopi

Proyek ini memiliki fungsi sebagai berikut: l

  • Menampilkan waktu dan tanggal saat ini
  • Ada empat tombol di layar untuk americano, latte, cappuccino, dan espresso.
  • Menampilkan jumlah biji kopi, susu, dan gula kopi yang tersisa saat ini
  • Kotak tampilan teks menampilkan status saat ini

Dengan mengingat konsep-konsep ini, Anda dapat mendesain antarmuka UI. BATU layar sentuh dalam desain UI relatif sederhana, pengguna melalui perangkat lunak PhotoShop mendesain antarmuka UI yang baik dan efek tombol, melalui Kotak ALAT BATU untuk merancang gambar yang bagus ke layar, dan menambahkan tombol Anda sendiri dengan logika Kotak ALAT BATU dan data serial nilai pengembaliannya ok, sangat mudah untuk Anda kembangkan.

Langkah 2: Buat Gambar UI untuk Tampilan BATU

Buat Gambar UI untuk Tampilan BATU
Buat Gambar UI untuk Tampilan BATU
Buat Gambar UI untuk Tampilan BATU
Buat Gambar UI untuk Tampilan BATU
Buat Gambar UI untuk Tampilan BATU
Buat Gambar UI untuk Tampilan BATU

Menurut persyaratan fungsional, saya membuat dua antarmuka tampilan UI berikut, satu adalah antarmuka utama dan yang lainnya adalah efek tombol.

Penggunaan STONE TOOL BoxSaat ini STONE menyediakan TOOL. Buka ALAT ini untuk membuat proyek baru, lalu impor UI yang dirancang untuk menampilkan gambar, dan tambahkan tombol Anda sendiri, kotak tampilan teks, dll. Situs web resmi STONE memiliki tutorial yang sangat lengkap tentang cara menggunakan perangkat lunak ini: https:/ /www.stoneitech.com/support/download/video

Efek penambahan tombol dan tampilan komponen pada STONE TOOL Box adalah sebagai berikut:

STONE TOOL Box memiliki fungsi tampilan simulasi, di mana Anda dapat melihat efek operasi antarmuka UI:

Pada titik ini, tampilan UI saya selesai, dan yang harus saya lakukan hanyalah menulis kode MCU. Unduh file yang dihasilkan oleh STONE TOOL Box ke layar tampilan untuk melihat hasil sebenarnya.

Langkah 3: STM32F103RCT6

STM32F103RCT6
STM32F103RCT6

STM32F103RCT6 MCU memiliki fungsi yang kuat. Berikut adalah parameter dasar MCU:

  • Seri: STM32F10X l Kerne
  • LENGAN - COTEX32
  • Kecepatan: 72 MHz
  • Antarmuka komunikasi: CAN, I2C, IrDA, LIN, SPI, UART/USART, USB
  • Peralatan periferal: DMA, kontrol motor PWM, PDR, POR, PVD, PWM, sensor suhu, WDT
  • Kapasitas penyimpanan program: 256KB
  • Jenis memori program: FLASH
  • Kapasitas RAM: 48K
  • Tegangan - catu daya (Vcc/Vdd): 2 V ~ 3,6 V
  • Osilator: internal
  • Suhu pengoperasian: -40 °C ~ 85 °C
  • Paket/perumahan: 64-hidup

Dalam proyek ini, saya akan menggunakan UART, GPIO, Watch Dog, dan Timer STM32F103RCT6. Pengembangan periferal ini didokumentasikan di bawah ini. STM32 MENGGUNAKAN pengembangan perangkat lunak Keil MDK, yang tidak asing bagi Anda, jadi saya tidak akan memperkenalkan metode instalasi perangkat lunak ini. STM32 dapat disimulasikan secara online dengan j-link atau st-link dan alat simulasi lainnya. Gambar berikut adalah papan sirkuit STM32 yang saya gunakan:

Langkah 4: Serial UART

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

STM32F103RCT6 memiliki beberapa port serial. Dalam proyek ini, saya menggunakan saluran port serial PA9/PA10, dan baud rate port serial ditetapkan pada 115200.

GPIO

Dalam antarmuka pengguna proyek ini, ada total empat tombol, yang sebenarnya adalah pembuatan empat jenis kopi. Di mesin kopi, mengontrol jumlah biji kopi, konsumsi susu, dan aliran air kopi yang berbeda sebenarnya diwujudkan dengan mengontrol sensor dan relay, sedangkan saya hanya mengontrol pin GPIO terlebih dahulu.

Langkah 5: Timer

pengatur waktu
pengatur waktu
pengatur waktu
pengatur waktu

Saat menginisialisasi pengatur waktu, tentukan koefisien pembagian frekuensi PSC, berikut adalah jam sistem kami (72MHz) untuk pembagian frekuensi

Kemudian tentukan nilai reload arr, yang berarti ketika timer kita mencapai arr ini, timer akan memuat ulang nilai lainnya.

Misalnya, ketika kita mengatur timer untuk menghitung, nilai hitungan timer sama dengan arr dan akan dihapus oleh 0 dan dihitung ulang

Hitungan pengatur waktu dimuat ulang dan sekali adalah Pembaruan

Hitung rumus waktu Update Tout = ((arr+1)*(PSC +1))/Tclk

Derivasi rumus: Bicara adalah sumber jam pengatur waktu, ini 72Mhz

Kami membagi frekuensi clock yang dialokasikan, menentukan nilai pembagian frekuensi sebagai PSC, kemudian membagi Talk kami menjadi PSC +1, frekuensi akhir timer kami adalah Tclk/(PSC +1) MHz

Jadi yang kami maksud dengan frekuensi di sini adalah bahwa kami memiliki 1s Talk over PSC +1 M Numbers (1M=10 ^ 6), dan waktu untuk setiap nomor adalah PSC +1 /Talk, dan mudah dipahami bahwa kebalikannya dari frekuensi adalah periode, dan periode untuk setiap angka di sini adalah PSC +1 /Talk detik dan kemudian kita beralih dari 0 ke arr adalah (arr+1)*(PSC +1)/Tclk

Sebagai contoh, mari kita atur arr=7199 dan PSC =9999

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

Ini adalah 9.000 hitungan per detik, dan setiap hitungan adalah 1/7.200 detik

Jadi kami merekam 9.000 Angka di sini untuk menuju pembaruan pengatur waktu (7199+1)*(1/7200)=1s, jadi 1s digunakan untuk pembaruan.

batal TIM3_Int_Init(u16 arr, u16 psc){

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

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

Silahkan hubungi kami jika Anda membutuhkan prosedur lengkap:

www.stoneitech.com/contact

Saya akan membalas Anda dalam waktu 12 jam.

Langkah 6: Awasi Anjing

Anjing penjaga
Anjing penjaga
Anjing penjaga
Anjing penjaga

Untuk mencegah sistem mogok saat program sedang berjalan, saya menambahkan pengawas. Padahal, semua proyek yang menggunakan MCU umumnya menggunakan watchdog.

STM32 memiliki dua pengawas built-in, memberikan keamanan yang lebih besar, akurasi waktu, dan fleksibilitas. Dua perangkat pengawas (pengawas independen dan pengawas jendela) dapat digunakan untuk mendeteksi dan menyelesaikan kesalahan yang disebabkan oleh kesalahan perangkat lunak. Ketika penghitung mencapai nilai batas waktu tertentu, interupsi (hanya pengawas jendela) atau reset sistem dipicu. Pengawas Independen (IWDG):

Didorong oleh jam kecepatan rendah khusus (LSI), ia bekerja bahkan jika jam master gagal.

Sangat cocok untuk digunakan dalam situasi di mana pengawas diharuskan bekerja sepenuhnya secara independen di luar program utama dan membutuhkan akurasi waktu yang rendah. Pengawas jendela (WWDG):

Didorong oleh jam dari jam APB1 setelah pembagian frekuensi. Mendeteksi operasi aplikasi yang terlambat atau prematur secara tidak normal melalui jendela waktu yang dapat dikonfigurasi. Cocok untuk program yang membutuhkan pengawas untuk berfungsi dalam waktu yang tepat Windows.

int utama(kosong) {

delay_init();

//tunda init NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

//NVIC INIT uart_init(115200);

//UART INIT PAD_INIT();

//Init Ringan IWDG_Init(4, 625);

sementara(1) {

jika(USART_RX_END)

{ sakelar (USART_RX_BUF[5])

{

kasus Espresso:

CoffeeSelect(Espresso, USART_RX_BUF[8]);

merusak;

kasus Americano:

CoffeeSelect(Americano, USART_RX_BUF[8]);

Logika Utama dalam fungsi Utama adalah sebagai berikut:

u8 timer_cnt=0;

batal TIM3_IRQHandler(batal) //TIM3

{

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

{

TIM_ClearITPendingBit(TIM3, TIM_IT_Update);

timer_cnt++;

jika(timer_cnt>=200)

{

milk_send[6]=susu();

Terakhir, tambahkan kode di interupsi timer: Dalam interupsi timer, tujuan saya adalah memeriksa berapa banyak kopi dan susu yang tersisa, dan kemudian mengirim nilai yang terdeteksi ke layar tampilan melalui port serial. Mengukur berapa banyak susu dan biji kopi yang tersisa biasanya dilakukan oleh sensor. Metode sederhana termasuk sensor tekanan, yang mengukur berat susu dan biji kopi saat ini untuk menentukan berapa banyak yang tersisa.

Tulis yang terakhir

Artikel ini hanya mencatat proses pengembangan sederhana dari proyek saya. Mempertimbangkan kerahasiaan proyek perusahaan, antarmuka tampilan UI yang saya gunakan juga dibuat sendiri, bukan antarmuka tampilan UI nyata dari proyek ini. Bagian kode STM32 hanya menambahkan driver periferal MCU dan kode logika terkait. Juga mempertimbangkan kerahasiaan proyek perusahaan, bagian teknologi kunci khusus tidak diberikan, harap dipahami. Namun, sesuai dengan kode yang saya berikan, bekerja sama dengan tampilan layar BATU. teman-teman saya yang juga insinyur perangkat lunak hanya perlu menghabiskan beberapa hari untuk menambahkan bagian teknis utama ke kerangka kode saya untuk menyelesaikan proyek.

Untuk mempelajari lebih lanjut tentang proyek klik di sini