Daftar Isi:

LCD BATU Dengan Rumah Pintar: 5 Langkah
LCD BATU Dengan Rumah Pintar: 5 Langkah

Video: LCD BATU Dengan Rumah Pintar: 5 Langkah

Video: LCD BATU Dengan Rumah Pintar: 5 Langkah
Video: Aku bikin mode neraka biar gak ke kamar pintarku lagi #video #kamaraesthetic 2024, November
Anonim
LCD BATU Dengan Rumah Pintar
LCD BATU Dengan Rumah Pintar

Hari ini, saya mendapatkan tampilan drive port serial STONE, yang dapat berkomunikasi melalui port serial MCU, dan desain logika UI tampilan ini dapat dirancang secara langsung dengan menggunakan perangkat lunak VGUS yang disediakan di situs web resmi STONE, yang sangat nyaman bagi kami. Jadi saya berencana menggunakannya untuk membuat pengontrol alat sederhana, yang mencakup kontrol berbagai lampu (ruang tamu, dapur, kamar anak-anak, kamar mandi). Pada saat yang sama, suhu, kelembaban, dan kualitas udara dalam dan luar ruangan dapat dikumpulkan. Ini hanya demo sederhana, dan Anda dapat melakukan pengembangan sekunder melalui kode yang saya berikan. Beberapa tutorial dasar tentang layar BATU dapat mengunjungi situs web:

Situs web ini memiliki berbagai informasi tentang model, pengguna, dan dokumentasi desain, serta video tutorial. Saya tidak akan membahas terlalu banyak detail di sini.

Langkah 1: Desain Antarmuka UI

Desain Antarmuka UI
Desain Antarmuka UI
Desain Antarmuka UI
Desain Antarmuka UI
Desain Antarmuka UI
Desain Antarmuka UI
Desain Antarmuka UI
Desain Antarmuka UI

Photoshop

Saya mendesain dua halaman UI berikut dengan photoshop:

Proyek ini memiliki dua halaman di atas secara total. "Cahaya" dan "Sensor" di sudut kanan atas adalah tombol sakelar dari dua halaman ini.

Di halaman "Cahaya", Anda dapat mengontrol semua jenis lampu di rumah Anda. Di halaman "Sensor", Anda dapat memeriksa nilai yang terdeteksi oleh berbagai sensor.

Setelah mendesain dua halaman di atas, kita dapat melakukan desain logika tombol melalui software STONE TOOL yang disediakan di website resmi STONE.

Perlu dicatat bahwa sumber jam yang digunakan untuk tampilan waktu di sini adalah sumber jam dari layar tampilan, bukan sumber jam MCU.

Efek pengalihan halaman TAB

Tidak ada komponen pengalihan halaman TAB yang ditemukan dalam perangkat lunak STONE TOOL, jadi saya memikirkan metode lain untuk mencapai efek pengalihan halaman TAB.

Melalui pengamatan yang saya berikan dua gambar UI dapat ditemukan bahwa dua gambar di atas adalah teks "Light" dan "Sensor", perbedaannya adalah ukuran pikselnya berbeda, jadi kita hanya perlu menempatkan posisi dua piksel diatur ke teks yang sama, dan kemudian melalui sudut kiri atas waktu dan tanggal untuk referensi, Anda dapat mencapai TAB untuk beralih efek.

Logika tombol

Ambil tombol "Ruang Tamu" sebagai contoh. Ketika pengguna menekan tombol ini, layar tampilan port serial BATU akan mengirimkan instruksi protokol yang sesuai melalui port serial. Setelah menerima instruksi ini, MCU pengguna akan mengurai protokol untuk mengontrol status switching lampu yang terhubung dengan MCU.

Akuisisi sensor

Ambil "kualitas udara" misalnya: jika Anda ingin mendapatkan kualitas udara dalam ruangan, kita harus memiliki MCU untuk mengumpulkan kualitas udara, sensor kualitas udara ketika numerik MCU dikumpulkan melalui algoritma membandingkan pro dan kontra kualitas udara, dan kemudian MCU dikirim melalui port serial untuk menampilkan area penyimpanan "Baik" atau "Buruk", untuk mengubah konten tampilan "Variabel teks0", dan kemudian pengguna dapat secara intuitif melihat manfaat dari kontrol kualitas. Ini akan dijelaskan nanti dalam kode MCU.

Langkah 2: Komunikasi MCU

Komunikasi MCU
Komunikasi MCU
Komunikasi MCU
Komunikasi MCU
Komunikasi MCU
Komunikasi MCU
Komunikasi MCU
Komunikasi MCU

STM32 adalah MCU yang dikenal semua orang, dan merupakan model MCU yang umum di dunia internasional. Oleh karena itu, model khusus STM32 MCU yang saya gunakan dalam proyek ini adalah STM32F103RCT6.

Ada banyak seri STM32, yang dapat memenuhi berbagai permintaan pasar. Kernel dapat dibagi menjadi korteks-m0, M3, M4, dan M7, dan setiap kernel dapat dibagi menjadi arus utama, kinerja tinggi, dan konsumsi daya rendah.

Murni dari perspektif pembelajaran, Anda dapat memilih F1 dan F4, F1 mewakili tipe dasar, berdasarkan kernel korteks-m3, frekuensi utama adalah 72MHZ, F4 mewakili kinerja tinggi, berdasarkan kernel korteks-m4, utama frekuensi 180M.

Sedangkan untuk F1, F4 (seri 429 ke atas), selain kernel yang berbeda dan peningkatan frekuensi utama, fitur yang jelas dari peningkatan adalah pengontrol LCD dan antarmuka kamera, dukungan untuk SDRAM, perbedaan ini akan diprioritaskan dalam pemilihan proyek. Namun, dari perspektif pengajaran universitas dan pembelajaran awal pengguna, seri F1 masih menjadi pilihan utama. Saat ini, STM32 dari seri F1 memiliki jumlah material dan produk terbesar di pasar.

Tentang instalasi lingkungan pengembangan STM32 SCM dan metode pengunduhan program, saya tidak akan melakukan pendahuluan.

inisialisasi GPIO

Dalam proyek ini, kami menggunakan total 4 GPIO, salah satunya adalah pin output PWM. Mari kita lihat inisialisasi tiga port GPIO biasa:

Fungsi ini menginisialisasi PB0\PB1\PB2 dari STM32F103C8 sebagai pin output dan memanggilnya dari fungsi utama. Setelah inisialisasi, kita perlu memiliki logika untuk mengontrol status output, level tinggi dan rendah dari GPIO ini, jadi saya menulis fungsinya seperti di bawah ini:

Ini adalah fungsi yang secara intuitif dapat Anda pahami dengan nama variabel.

Inisialisasi port serial

Bagian inisialisasi port serial ada di uart.c:

Kemudian panggil uart_init di fungsi utama untuk menginisialisasi baud rate port serial 115200. Pin menggunakan PA9/PA10

inisialisasi PWM

Langkah-langkah spesifik:

1. Atur jam RCC;

2. Atur jam GPIO;Mode GPIO harus disetel ke GPIO_Model_AF_PP, atau ke fungsi GPIO_PinRemapConfig() jika pin remap diperlukan.

3. Atur register timer TIMx yang relevan;

4. Atur register terkait PWM dari timer TIMx;

A. Setel mode PWM

B. Mengatur duty cycle (perhitungan rumus)

C. Mengatur polaritas perbandingan keluaran (diperkenalkan sebelumnya)

D. Yang paling penting, aktifkan status keluaran TIMx dan aktifkan keluaran PWM TIMx; Setelah Pengaturan yang relevan selesai, timer TIMx dihidupkan oleh TIMx_Cmd () untuk mendapatkan output PWM. Panggil TIM3_PWM_Init ini dari fungsi utama.

Langkah 3: Penulisan Kode Logika

Penulisan Kode Logika
Penulisan Kode Logika
Penulisan Kode Logika
Penulisan Kode Logika
Penulisan Kode Logika
Penulisan Kode Logika

Tampilkan definisi alamat komponen

Komponen tampilan memiliki alamat terpisah, dan di sini saya telah menulis semuanya sebagai definisi makro: Penerimaan data serial

Melihat informasi tentang tampilan STONE, Anda dapat melihat bahwa ketika tombol ditekan, port serial pada layar mengirimkan protokol dalam format yang sesuai, yang dapat diterima dan diuraikan oleh pengguna MCU. Saat tombol ditekan, port serial pada layar mengirimkan sembilan byte data, termasuk data pengguna. Penerimaan data serial ditulis dalam Handler: Data yang diterima disimpan dalam larik "USART_RX_BUF". Dalam proyek ini, panjang penerimaan adalah tetap. Ketika panjang penerima lebih dari 9 byte, ujung penerima dinilai.

Kontrol status sakelar lampu

Dalam fungsi utama, saya menulis beberapa kode logika untuk mengontrol status sakelar lampu: Seperti yang dapat kita lihat, kode pertama menentukan apakah data port serial diterima, dan ketika data port serial diterima, menentukan tombol mana yang digunakan pengguna. menekan pada layar tampilan. Tombol yang berbeda pada layar memiliki alamat yang berbeda, yang dapat dilihat pada perangkat lunak STONE TOOL: Ketika pengguna menekan tombol "Ruang Tamu", bit keempat dan kelima dari data yang dikirim oleh port serial layar tampilan adalah alamat tombol. Karena bit keempat dari semua tombol yang diatur di sini adalah 0x00, kita dapat menilai tombol mana yang ditekan pengguna dengan langsung menilai data dari bit kelima. Setelah mendapatkan tombol yang ditekan oleh pengguna, kita perlu menilai data pengguna yang diterima saat tombol ditekan, yang merupakan digit kedelapan dari data yang dikirim dari layar tampilan. Oleh karena itu, kami membuat kontrol berikut: tulis parameter alamat tombol dan data pengguna ke dalam fungsi "Light_Contral" untuk mengontrol status nyala-mati lampu. Entitas fungsi Light_Contral adalah sebagai berikut: Seperti yang Anda lihat, jika alamat tombol adalah "Ruang Tamu" dan data pengguna adalah "LightOn", maka pin PB0 dari MCU diatur ke output tingkat tinggi, dan lampu menyala. Tiga tombol lainnya serupa, tetapi saya tidak akan melanjutkan di sini.

keluaran PWM

Di UI yang saya rancang, ada pengatur geser, yang digunakan untuk mengontrol kecerahan cahaya "Ruang Anak". MCU diimplementasikan dengan pin keluaran PWM. PWM adalah PB5. Kodenya adalah sebagai berikut: Penyetel geser diatur ke nilai minimum 0x00 dan nilai maksimum 0x64. Saat menggeser, port serial layar tampilan juga akan mengirim alamat dan data yang relevan, dan kemudian mengatur rasio tugas output PWM dengan memanggil fungsi berikut:

Langkah 4: Akuisisi Sensor

Akuisisi Sensor
Akuisisi Sensor
Akuisisi Sensor
Akuisisi Sensor
Akuisisi Sensor
Akuisisi Sensor

Di halaman "Sensor" di layar tampilan, ada empat data Sensor.

Data juga memiliki alamat penyimpanan di layar, dan kita dapat mengubah konten sebenarnya hanya dengan menulis data ke alamat ini melalui port serial MCU.

Di sini saya membuat implementasi kode sederhana:

Data tampilan diperbarui setiap 5 detik, dan saya hanya menulis demo sederhana dari fungsi pengumpulan sensor yang relevan, karena saya tidak memiliki sensor ini di tangan saya.

Dalam pengembangan proyek nyata, sensor ini dapat berupa data yang dikumpulkan oleh ADC, atau data yang dikumpulkan oleh antarmuka komunikasi IIC, UART, dan SPI. Yang perlu Anda lakukan adalah menulis data ini ke dalam fungsi yang sesuai sebagai nilai kembalian.

Langkah 5: Efek Operasi Sebenarnya

Direkomendasikan: