Isi kandungan:

Papan Antara Muka Universal Terbenam - Kawalan USB / Bluetooth / WIFI: 6 Langkah
Papan Antara Muka Universal Terbenam - Kawalan USB / Bluetooth / WIFI: 6 Langkah

Video: Papan Antara Muka Universal Terbenam - Kawalan USB / Bluetooth / WIFI: 6 Langkah

Video: Papan Antara Muka Universal Terbenam - Kawalan USB / Bluetooth / WIFI: 6 Langkah
Video: USB4 Deep Dive: What Every IT Professional Should Know 2024, November
Anonim
Papan Antara Muka Universal Terbenam - Kawalan USB / Bluetooth / WIFI
Papan Antara Muka Universal Terbenam - Kawalan USB / Bluetooth / WIFI
Papan Antara Muka Universal Terbenam - Kawalan USB / Bluetooth / WIFI
Papan Antara Muka Universal Terbenam - Kawalan USB / Bluetooth / WIFI

Saya sering mendapati saya membuat perpustakaan untuk modul terbenam baru dari awal berdasarkan lembaran data peranti. Dalam menjana perpustakaan, saya mendapati saya terjebak dalam kitaran kod, penyusunan, program dan ujian ketika memastikan semuanya berfungsi dan bebas daripada pepijat. Seringkali masa penyusunan dan program dapat lebih lama daripada waktu yang diperlukan untuk mengedit kod dan cara untuk memotong langkah-langkah ini ketika membangun akan sangat berguna.

Saya juga sering mendapati bahawa saya ingin menghubungkan antara modul tertanam dengan PC. Sekiranya modul tersebut tidak mempunyai sambungan USB secara khusus, biasanya anda harus membeli penukar USB yang terlalu mahal yang akan melakukan satu pekerjaan seperti hanya SPI atau hanya I2C.

Atas sebab inilah saya memutuskan untuk membuat papan antara muka sejagat. Ia direka untuk membolehkan komunikasi berasaskan PC yang mudah dengan modul tertanam.

Ciri-ciri antara muka papan tertanam yang saya tetapkan termasuk.

  • I / O Digital
  • I2C
  • SPI
  • UART
  • PWM
  • Motor Servo
  • Masukan ADC
  • Keluaran DAC

Kesemuanya boleh digunakan sepenuhnya secara bebas.

Papan antara muka dapat dikendalikan melalui sambungan USB ke PC, tetapi juga mempunyai sambungan modul WIFI atau Bluetooth pilihan untuk membolehkan papan digunakan dari jarak jauh atau dalam senario jenis IoT.

Dengan menggunakan header SIL nada 2.54mm standard, adalah mungkin untuk menyambungkan kabel dupont wanita secara langsung antara papan dan modul tertanam yang membolehkan sambungan cepat, boleh dipercayai dan bebas pateri.

Saya juga terfikir untuk menambah perkara seperti CAN, LIN, H-bridge dll tetapi ini mungkin akan datang kemudian dengan semakan v2.

Langkah 1: Merancang PCB

Merangka PCB
Merangka PCB
Merangka PCB
Merangka PCB
Merangka PCB
Merangka PCB
Merangka PCB
Merangka PCB

Semasa merancang PCB, saya suka mencuba dan memastikan perkara-perkara semudah mungkin. Semasa anda akan membina papan dengan tangan, penting untuk hanya menambahkan komponen apabila mereka mempunyai tujuan tertentu dan menggunakan sebilangan besar ciri dalaman mikrokontroler.

Melihat pembekal elektronik pilihan saya, saya dapati sebuah cip yang saya selesa dengan ciri-ciri yang saya cari dan harganya berpatutan. Cip yang saya naiki adalah PIC18F24K50.

Dengan 23 pin I / O yang ada, ini membolehkan saya mempunyai ciri-ciri ini

  • Digtal I / O
  • I2C
  • SPI
  • UART
  • PWM x 2
  • Servo Motor x 6
  • Masukan ADC x 3
  • Output DAC x 1
  • I / O didorong dari 5V atau 3V3
  • LED Status

Satu kelemahan IC yang saya pilih ialah ia hanya mempunyai satu periferal UART dan dengan itu kaedah kawalan Bluetooth atau Wifi akan menghentikan anda dapat menggunakan sambungan UART.

Dalam gambar di atas ditunjukkan skema dan PCB yang telah siap.

Langkah 2: Merangka Protokol

Merangka Protokol
Merangka Protokol

Langkah pertama dalam merancang protokol adalah menentukan secara khusus apa yang anda perlukan. Break break up menambah tahap kawalan yang lebih baik sedangkan menyatukan perkara bersama-sama menyederhanakan antara muka dan mengurangkan lalu lintas komersil antara papan dan PC. Ini adalah permainan mengimbangkan dan sukar untuk disempurnakan.

Untuk setiap fungsi papan anda harus menunjukkan parameter dan pengembalian. Sebagai contoh fungsi untuk membaca input ADC mungkin mempunyai parameter untuk menentukan input mana yang akan diambil sampel dan nilai kembali yang berisi hasilnya.

Dalam reka bentuk saya inilah senarai fungsi yang ingin saya sertakan:

  • I / O Digital

    • SetPin (Nombor Pin, Negeri)
    • Nyatakan = GetPin (PinNumber)
  • SPI

    • Permulaan (Mod SPI)
    • DataIn = Transfer (DataOut)
    • ControlChipSelect (Saluran, Negeri)
    • SetPrescaler (Kadar)
  • I2C

    • Permulaan ()
    • Mulakan ()
    • Mula semula ()
    • Berhenti ()
    • SlaveAck = Hantar (DataOut)
    • DataIn = Terima (Terakhir)
  • UART

    • Permulaan ()
    • TX Byte (DataOut)
    • BytesAvailable = Kiraan RX ()
    • DataIn = RX Byte ()
    • SetBaud (Baud)
  • PWM

    • Dayakan (Saluran)
    • Lumpuhkan (Saluran)
    • SetFrequency (Saluran, Kekerapan)
    • DapatkanMaxDuty (Tugas)
    • SetTugas (Tugas)
  • Servo

    • Dayakan (Saluran)
    • Lumpuhkan (Saluran)
    • SetPosition (Saluran, Kedudukan)
  • ADC

    ADCsample = Contoh (Saluran)

  • DAC

    • Aktifkan
    • Lumpuhkan
    • SetOutput (Voltan)
  • WIFI

    • Tetapkan SSID (SSID)
    • Tetapkan Kata Laluan (Kata Laluan)
    • Status = CheckConnectionStatus ()
    • IP = GetIPAddress ()

Parameter ditunjukkan dalam tanda kurung dan pulangan ditunjukkan sebelum simbol sama.

Sebelum saya memulakan pengekodan, saya memberikan setiap fungsi kod arahan bermula dari 128 (binari 0b10000000) dan berfungsi ke atas. Saya mendokumentasikan protokol sepenuhnya untuk memastikan bahawa apabila kepala saya berada dalam kod, saya mempunyai dokumen yang bagus untuk dirujuk kembali. Dokumen protokol penuh untuk projek ini dilampirkan dan merangkumi kod arahan masuk dan lebar bit.

Langkah 3: Merancang Firmware

Merancang Firmware
Merancang Firmware
Merancang Firmware
Merancang Firmware
Merancang Firmware
Merancang Firmware

Setelah protokol dibuat, ini adalah kes melaksanakan fungsi pada perkakasan.

Saya menggunakan pendekatan jenis mesin keadaan sederhana ketika mengembangkan sistem hamba untuk mencuba dan memaksimumkan potensi perintah dan throughput data sambil memastikan firmware mudah difahami dan debug. Sistem yang lebih maju seperti Modbus dapat digunakan sebagai gantinya jika anda memerlukan interaksi yang lebih baik dengan peranti lain yang bersambung tetapi ini menambahkan overhead yang akan memperlahankan keadaan.

Mesin keadaan terdiri daripada tiga keadaan:

1) Menunggu arahan

2) Parameter penerimaan

3) Balas

Ketiga-tiga keadaan berinteraksi seperti berikut:

1) Kami melalui bait masuk dalam penyangga sehingga kami mempunyai bait yang mempunyai set bit paling signifikan. Sebaik sahaja kami menerima bait seperti itu, kami memeriksanya berdasarkan senarai arahan yang diketahui. Sekiranya kita menjumpai padanan maka kita menetapkan bilangan byte parameter dan mengembalikan bait untuk sepadan dengan protokol. Sekiranya tidak ada bait parameter maka kita boleh melaksanakan perintah di sini dan melangkau ke keadaan 3 atau memulakan semula keadaan 1. Sekiranya terdapat bait parameter maka kita beralih ke keadaan 2.

2) Kami melalui bait masuk yang menyimpannya sehingga kami menyimpan semua parameter. Sebaik sahaja kita mempunyai semua parameter, kita melaksanakan perintah. Sekiranya terdapat bait pengembalian maka kita beralih ke tahap 3. Sekiranya tidak ada bait kembali untuk dihantar, maka kita kembali ke tahap 1.

3) Kami melalui bait masuk dan untuk setiap bait kami menimpa bait gema dengan bait pengembalian yang sah. Setelah kami menghantar semua bait pengembalian, kami kembali ke tahap 1.

Saya menggunakan Flowcode untuk merancang firmware kerana ia menunjukkan secara visual apa yang saya lakukan. Perkara yang sama dapat dilakukan dengan baik dalam bahasa Arduino atau bahasa pengaturcaraan tertanam yang lain.

Langkah pertama adalah mewujudkan komunikasi dengan PC. Untuk melakukan ini mikro perlu dikonfigurasi untuk berjalan pada kelajuan yang betul dan kita harus menambahkan kod untuk memacu periferal USB dan UART. Dalam Flowcode ini semudah menyeret ke dalam projek komponen Serial USB dan komponen UART dari menu komponen Comms.

Kami menambahkan interupsi dan buffer RX untuk menangkap arahan masuk di UART dan kami secara berkala memilih USB. Oleh itu, pada masa lapang kita dapat memproses penyangga.

Projek Flowcode dan kod C yang dihasilkan dilampirkan.

Langkah 4: Interfacing Melalui Flowcode

Interfacing Melalui Flowcode
Interfacing Melalui Flowcode
Interfacing Melalui Flowcode
Interfacing Melalui Flowcode
Interfacing Melalui Flowcode
Interfacing Melalui Flowcode

Simulasi Flowcode sangat kuat dan membolehkan kita membuat komponen untuk bercakap dengan dewan. Dalam membuat komponen, kita sekarang boleh menyeret komponen ke dalam projek kita dan dengan serta-merta mempunyai fungsi papan tersedia. Sebagai bonus tambahan, komponen sedia ada yang mempunyai SPI, periferal I2C atau UART dapat digunakan dalam simulasi dan data comm dapat disalurkan ke Papan Antaramuka melalui komponen Injector. Gambar yang dilampirkan menunjukkan program sederhana untuk mencetak mesej ke paparan. Data koms yang dihantar melalui Papan Antara Muka ke perkakasan paparan sebenar dan penyediaan komponen dengan komponen Paparan I2C, Injektor I2C dan Papan Antaramuka.

Mod SCADA baru untuk Flowcode 8.1 adalah bonus tambahan mutlak kerana kita kemudian boleh mengambil program yang melakukan sesuatu di simulator Flowcode dan mengeksportnya sehingga akan berjalan sendiri di PC mana pun tanpa masalah pelesenan. Ini mungkin bagus untuk projek seperti rig ujian atau kelompok sensor.

Saya menggunakan mod SCADA ini untuk membuat alat konfigurasi WIFI yang dapat digunakan untuk mengkonfigurasi SSID dan kata laluan serta mengumpulkan alamat IP modul. Ini membolehkan saya mengatur semuanya menggunakan sambungan USB dan kemudian beralih ke sambungan rangkaian WIFI setelah semuanya berjalan.

Beberapa contoh projek dilampirkan.

Langkah 5: Kaedah Interfacing Lain

Seperti juga Flowcode, anda boleh menggunakan bahasa pengaturcaraan pilihan anda untuk berkomunikasi dengan papan antara muka. Kami menggunakan Flowcode kerana mempunyai perpustakaan bahagian yang sudah termasuk yang kami dapat bangun dan jalankan dengan segera tetapi ini juga berlaku untuk banyak bahasa lain.

Berikut adalah senarai bahasa dan kaedah untuk berkomunikasi dengan papan antara muka.

Python - Menggunakan pustaka bersiri 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 yang sudah ditulis sebelumnya, secara langsung mengakses port COM atau Windows TCP / IP API

Labview - Menggunakan sama ada DLL yang telah ditulis sebelumnya, komponen VISA Serial atau komponen TCP / IP

Sekiranya ada yang ingin melihat bahasa di atas dilaksanakan, sila beritahu saya.

Langkah 6: Produk Selesai

Produk Selesai
Produk Selesai
Produk Selesai
Produk Selesai
Produk Selesai
Produk Selesai

Produk siap kemungkinan akan menjadi ciri yang menonjol dalam kit alat tertanam saya untuk tahun-tahun akan datang. Sudah membantu saya mengembangkan komponen untuk pelbagai paparan dan sensor Grove. Sekarang saya dapat mendapatkan kodnya sepenuhnya sebelum menggunakan kompilasi atau pengaturcaraan shenanigans.

Saya juga telah memberikan beberapa papan untuk rakan sekerja supaya mereka dapat meningkatkan aliran kerja mereka dan ini telah diterima dengan baik.

Terima kasih kerana membaca Instructable saya. Saya harap anda menganggapnya berguna dan semoga ia dapat memberi inspirasi kepada anda untuk membuat alat anda sendiri untuk meningkatkan produktiviti anda.

Disyorkan: