Daftar Isi:
- Langkah 1: Merancang PCB
- Langkah 2: Merancang Protokol
- Langkah 3: Merancang Firmware
- Langkah 4: Antarmuka Melalui Flowcode
- Langkah 5: Metode Antarmuka Lainnya
- Langkah 6: Produk Jadi
Video: Papan Antarmuka Universal Tertanam - Kontrol USB/Bluetooth/WIFI: 6 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:56
Saya sering menemukan saya membuat perpustakaan untuk modul tertanam baru dari awal berdasarkan lembar data perangkat. Dalam menghasilkan perpustakaan, saya menemukan saya terjebak dalam siklus kode, kompilasi, program, dan pengujian ketika memastikan semuanya berfungsi dan bebas bug. Seringkali waktu kompilasi dan program bisa lebih lama daripada waktu yang dibutuhkan untuk mengedit kode dan cara untuk memotong langkah-langkah ini saat mengembangkan akan sangat berguna.
Saya juga sering ingin menghubungkan modul tertanam dengan PC. Jika modul tidak secara khusus memiliki koneksi USB yang sering terjadi maka Anda biasanya harus membeli konverter USB yang mahal yang akan melakukan satu pekerjaan seperti hanya SPI atau hanya I2C.
Karena alasan inilah saya memutuskan untuk membuat papan antarmuka universal. Ini dirancang untuk memungkinkan komunikasi berbasis PC yang mudah dengan modul tertanam.
Fitur antarmuka tertanam dari papan yang saya pilih termasuk.
- I/O Digital
- I2C
- SPI
- UART
- PWM
- Motor servo
- masukan ADC
- keluaran DAC
Semuanya dapat digunakan sepenuhnya secara mandiri.
Papan antarmuka dapat dikontrol melalui koneksi USB ke PC, tetapi juga memiliki koneksi modul WIFI atau Bluetooth opsional untuk memungkinkan papan digunakan dari jarak jauh atau dalam skenario tipe IoT.
Dengan menggunakan header SIL pitch 2.54mm standar, dimungkinkan untuk secara langsung menghubungkan kabel dupont betina antara papan dan modul tertanam yang memungkinkan koneksi yang cepat, andal, dan bebas solder.
Saya juga berpikir untuk menambahkan hal-hal seperti CAN, LIN, H-bridge dll tapi ini mungkin bisa datang nanti dengan revisi v2.
Langkah 1: Merancang PCB
Saat mendesain PCB, saya suka mencoba dan membuat semuanya sesederhana mungkin. Saat Anda akan membuat papan dengan tangan, penting untuk hanya menambahkan komponen ketika mereka melakukan tujuan tertentu dan menggunakan sebanyak mungkin fitur internal mikrokontroler.
Melihat pemasok elektronik pilihan saya, saya menemukan sebuah chip yang saya rasa nyaman dengan fitur yang saya cari dan dengan biaya yang masuk akal. Chip tempat saya mendarat adalah PIC18F24K50.
Dengan 23 pin I/O yang tersedia, ini memungkinkan saya untuk memiliki fitur-fitur ini
- I/O Digital
- I2C
- SPI
- UART
- PWM x 2
- Motor Servo x 6
- Masukan ADC x 3
- Keluaran DAC x 1
- I/O didorong dari 5V atau 3V3
- LED status
Salah satu kelemahan dari IC yang saya pilih adalah hanya memiliki satu perangkat UART sehingga menggunakan metode kontrol Bluetooth atau Wifi akan menghentikan Anda untuk dapat menggunakan koneksi UART.
Tampak pada gambar di atas adalah skema dan PCB yang sudah jadi.
Langkah 2: Merancang Protokol
Langkah pertama dalam merancang protokol adalah memutuskan apa yang secara spesifik Anda perlukan untuk dapat dilakukan oleh dewan. Memecah hal-hal menambah tingkat kontrol yang lebih baik sedangkan menyisir hal-hal bersama-sama menyederhanakan antarmuka dan mengurangi lalu lintas komunikasi antara papan dan PC. Ini adalah permainan penyeimbang dan sulit untuk disempurnakan.
Untuk setiap fungsi papan, Anda harus menunjukkan parameter dan pengembalian apa pun. Misalnya fungsi untuk membaca input ADC mungkin memiliki parameter untuk menentukan input mana yang akan diambil sampelnya dan nilai balik yang berisi hasilnya.
Dalam desain saya di sini adalah daftar fungsi yang ingin saya sertakan:
-
I/O Digital
- SetPin (PinNumber, Negara)
- Status = GetPin (PinNumber)
-
SPI
- Inisialisasi (Mode SPI)
- Data Masuk = Transfer (Data Keluar)
- ControlChipSelect (Saluran, Negara Bagian)
- SetPrescaler (Tarif)
-
I2C
- Inisialisasi ()
- Awal ()
- Mengulang kembali ()
- Berhenti ()
- SlaveAck = Kirim (DataOut)
- DataIn = Terima (Terakhir)
-
UART
- Inisialisasi()
- TX Byte (Data Keluar)
- BytesAvailable = Hitungan RX ()
- DataIn = RX Byte ()
- SetBaud (Baud)
-
PWM
- Aktifkan (Saluran)
- Nonaktifkan (Saluran)
- SetFrequency (Saluran, Frekuensi)
- GetMaxDuty (Tugas)
- SetDuty (Tugas)
-
Servo
- Aktifkan (Saluran)
- Nonaktifkan (Saluran)
- AturPosition (Saluran, Posisi)
-
ADC
ADCsample = Sampel (Saluran)
-
DAC
- Memungkinkan
- Cacat
- SetOutput (Tegangan)
-
WIFI
- SetSSID (SSID)
- Setel Kata Sandi (Password)
- Status = PeriksaKoneksiStatus ()
- IP = GetIPAddress()
Parameter ditampilkan dalam tanda kurung dan pengembalian ditampilkan sebelum simbol sama dengan.
Sebelum saya mulai coding saya menetapkan setiap fungsi kode perintah mulai dari 128 (biner 0b10000000) dan bekerja ke atas. Saya mendokumentasikan protokol sepenuhnya untuk memastikan bahwa begitu kepala saya berada di dalam kode, saya memiliki dokumen yang bagus untuk dirujuk kembali. Dokumen protokol lengkap untuk proyek ini terlampir dan termasuk kode perintah yang masuk dan lebar bit.
Langkah 3: Merancang Firmware
Setelah protokol dibuat, maka kasus penerapan fungsionalitas pada perangkat keras.
Saya mengadopsi pendekatan tipe mesin keadaan sederhana saat mengembangkan sistem budak untuk mencoba dan memaksimalkan potensi perintah dan throughput data sambil menjaga agar firmware tetap mudah dipahami dan di-debug. Sistem yang lebih maju seperti Modbus dapat digunakan sebagai gantinya jika Anda membutuhkan interaksi yang lebih baik dengan perangkat lain yang terhubung tetapi ini menambah overhead yang akan memperlambat segalanya.
Mesin negara terdiri dari tiga negara:
1) Menunggu perintah
2) Menerima parameter
3) Balas
Tiga negara berinteraksi sebagai berikut:
1) Kami melewati byte yang masuk dalam buffer sampai kami memiliki byte yang memiliki set bit paling signifikan. Setelah kami menerima byte seperti itu, kami memeriksanya dengan daftar perintah yang diketahui. Jika kami menemukan kecocokan maka kami menetapkan jumlah byte parameter dan mengembalikan byte agar sesuai dengan protokol. Jika tidak ada byte parameter maka kita dapat melakukan perintah di sini dan melompat ke keadaan 3 atau memulai kembali keadaan 1. Jika ada byte parameter maka kita pindah ke keadaan 2.
2) Kami melewati byte yang masuk menyimpannya sampai kami menyimpan semua parameter. Setelah kami memiliki semua parameter, kami melakukan perintah. Jika ada return byte maka kita pindah ke tahap 3. Jika tidak ada return byte untuk dikirim maka kita kembali ke tahap 1.
3) Kami melewati byte yang masuk dan untuk setiap byte kami menimpa byte gema dengan byte kembali yang valid. Setelah kami mengirim semua byte yang dikembalikan, kami kembali ke tahap 1.
Saya menggunakan Flowcode untuk mendesain firmware karena ini menunjukkan secara visual apa yang saya lakukan. Hal yang sama dapat dilakukan dengan baik di Arduino atau bahasa pemrograman tertanam lainnya.
Langkah pertama adalah menjalin komunikasi dengan PC. Untuk melakukan ini mikro perlu dikonfigurasi untuk berjalan pada kecepatan yang tepat dan kita harus menambahkan kode untuk menggerakkan periferal USB dan UART. Dalam Flowcode ini semudah menyeret ke dalam proyek komponen USB Serial dan komponen UART dari menu komponen Comms.
Kami menambahkan interupsi RX dan buffer untuk menangkap perintah yang masuk di UART dan kami secara rutin melakukan polling pada USB. Kami kemudian dapat memproses buffer di waktu luang kami.
Proyek Flowcode dan kode C yang dihasilkan dilampirkan.
Langkah 4: Antarmuka Melalui Flowcode
Simulasi Flowcode sangat kuat dan memungkinkan kita membuat komponen untuk berbicara dengan papan. Dalam membuat komponen, sekarang kita cukup menyeret komponen ke dalam proyek kita dan langsung memiliki fungsi papan yang tersedia. Sebagai bonus tambahan, setiap komponen yang ada yang memiliki periferal SPI, I2C atau UART dapat digunakan dalam simulasi dan data komunikasi dapat disalurkan ke Papan Antarmuka melalui komponen Injektor. Gambar terlampir menunjukkan program sederhana untuk mencetak pesan ke layar. Data komunikasi yang dikirim melalui Papan Antarmuka ke perangkat keras tampilan aktual dan pengaturan komponen dengan komponen Layar I2C, Injektor I2C, dan Papan Antarmuka.
Mode SCADA baru untuk Flowcode 8.1 adalah bonus tambahan mutlak karena kami kemudian dapat mengambil program yang melakukan sesuatu di simulator Flowcode dan mengekspornya sehingga akan berjalan sendiri di PC mana pun tanpa masalah lisensi. Ini bisa bagus untuk proyek seperti rig uji atau kluster sensor.
Saya menggunakan mode SCADA ini untuk membuat alat konfigurasi WIFI yang dapat digunakan untuk mengkonfigurasi SSID dan kata sandi serta mengumpulkan alamat IP modul. Ini memungkinkan saya untuk mengatur semuanya menggunakan koneksi USB dan kemudian mentransfer ke koneksi jaringan WIFI setelah semuanya berjalan.
Beberapa contoh proyek terlampir.
Langkah 5: Metode Antarmuka Lainnya
Selain Flowcode, Anda dapat menggunakan bahasa pemrograman pilihan Anda untuk berkomunikasi dengan papan antarmuka. Kami menggunakan Flowcode karena memiliki pustaka bagian yang sudah disertakan yang dapat kami bangun dan jalankan segera, tetapi ini juga berlaku untuk banyak bahasa lain.
Berikut adalah daftar bahasa dan metode untuk berkomunikasi dengan papan Antarmuka.
Python - Menggunakan perpustakaan serial untuk mengalirkan data ke port COM atau alamat IP
Matlab - Menggunakan perintah File untuk mengalirkan data ke port COM atau alamat IP
C++ / C# / VB - Menggunakan DLL pra-tertulis, langsung mengakses port COM atau Windows TCP/IP API
Labview - Menggunakan DLL yang telah ditulis sebelumnya, komponen VISA Serial atau komponen TCP/IP
Jika ada yang ingin melihat bahasa di atas diimplementasikan, beri tahu saya.
Langkah 6: Produk Jadi
Produk jadi kemungkinan akan menjadi fitur yang menonjol dalam tool kit tertanam saya selama bertahun-tahun yang akan datang. Sudah membantu saya mengembangkan komponen untuk berbagai tampilan dan sensor Grove. Saya sekarang bisa mendapatkan kode sepenuhnya dipaku sebelum beralih ke kompilasi atau pemrograman shenanigans.
Saya bahkan telah membagikan beberapa papan untuk rekan kerja sehingga mereka dapat meningkatkan alur kerja mereka juga dan ini telah diterima dengan sangat baik.
Terima kasih telah membaca Instructable saya, semoga bermanfaat dan semoga menginspirasi Anda untuk membuat alat sendiri untuk mempercepat produktivitas Anda.
Direkomendasikan:
Manajer Jendela Tertanam: 10 Langkah
Embedded Window Manager: Proyek ini menunjukkan bagaimana menerapkan window manager dengan jendela tumpang tindih yang dapat dipindahkan pada mikrokontroler tertanam dengan panel LCD dan layar sentuh. Ada paket perangkat lunak yang tersedia secara komersial untuk melakukan ini tetapi harganya mahal dan hampir
Loker Tertanam.: 4 Langkah
Loker Tertanam.: Dalam aura kebahagiaan, menyimpan barang-barang di dalam adalah sesuatu yang seperti percikan kegembiraan yang besar. Nama 'Lock of Lock' benar-benar merupakan bagian mendalam dari artikel harian saya yang ada di mana-mana karena sifatnya, tetapi apa fungsinya? Sederhana
Memulai Dengan Antarmuka Sensor I2C?? - Antarmuka MMA8451 Anda Menggunakan ESP32: 8 Langkah
Memulai Dengan Antarmuka Sensor I2C?? - Antarmuka MMA8451 Anda Menggunakan ESP32: Dalam tutorial ini, Anda akan mempelajari semua tentang Cara memulai, menghubungkan, dan membuat perangkat I2C (Akselerometer) bekerja dengan pengontrol (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Pohon Natal Cetak 3D LED Tertanam: 10 Langkah (dengan Gambar)
Pohon Natal Cetak 3D LED Tertanam: Ini adalah pohon Natal cetak 3D dengan LED beralamat tertanam di dalamnya. Jadi dimungkinkan untuk memprogram LED untuk efek cahaya yang bagus dan menggunakan struktur cetak 3D sebagai diffusor. Pohon dipisahkan dalam 4 tahap dan elemen dasar (pohon
Cahaya Cosmic Dengan LED Tertanam dalam Resin: 11 Langkah (dengan Gambar)
Cosmic Light With LEDs Embedded in Resin: Saya ingin membuat lampu dari resin yang menggunakan LED tetapi tidak menyolder (saya tahu banyak orang tidak menyolder, dan mungkin ada beberapa orang seperti saya yang bisa melakukannya tetapi tidak' saya sangat suka melakukannya.) Ini didukung oleh beberapa baterai koin sehingga mudah