Isi kandungan:

RC Plane Altimeter (serasi dengan Spektrum Telemetry): 7 Langkah
RC Plane Altimeter (serasi dengan Spektrum Telemetry): 7 Langkah

Video: RC Plane Altimeter (serasi dengan Spektrum Telemetry): 7 Langkah

Video: RC Plane Altimeter (serasi dengan Spektrum Telemetry): 7 Langkah
Video: Spektrum AR637T Programming Series | Part 2 - Registration & Updates 2024, Julai
Anonim
RC Plane Altimeter (serasi dengan Spektrum Telemetry)
RC Plane Altimeter (serasi dengan Spektrum Telemetry)

Saya membuat altimeter ini supaya juruterbang dapat mengetahui bahawa mereka berada di bawah had 400 kaki pada pesawat RC di AS. Rakan saya bimbang kerana dia tidak dapat mengatakan dengan pasti bahawa dia selalu berada di bawah 400 kaki, dan mahukan jaminan tambahan yang akan diberikan oleh sensor dengan data telemetri. Ya, anda boleh membeli sensor dari Spektrum, tetapi anda boleh membina projek ini dengan harga kurang dari $ 20 dengan papan pemecah (yang harganya sudah melambung tinggi). Sekiranya anda sudah mempunyai programmer J-link, anda boleh membuatnya di papan ubahsuaian dengan harga beberapa dolar. Belum lagi apabila anda memahami protokol Xbus, anda boleh membuat sensor yang disokong lain! Tetapi saya akan merangkumi altimeter dalam projek ini …

Senarai bahagian:

  • Saya menggunakan papan mikrokontroler Seeeduino XIAO untuk projek ini kerana ia kecil, menggunakan pemproses M0 yang mempunyai banyak kuasa untuk projek ini, mempunyai I2C dan SPI siap untuk keluar dari kotak, dan menggunakan logik 3.3v sehingga tidak ada perubahan tahap diperlukan.

    https://www.seeedstudio.com/Seeeduino-XIAO-Arduino…

  • Untuk pengesanan tekanan udara, saya membeli papan pemecah BMP388 dari Adafruit. Papan mempunyai I2C dan SPI yang pecah, dan boleh berfungsi pada logik 3.3v atau 5v.

    https://www.adafruit.com/product/3966

  • Protoboard untuk memasang litar
  • Pateri / besi pematerian
  • Header pin lelaki / wanita supaya saya dapat melepaskan sensor / mikrokontroler dengan mudah.
  • Butang kecil. Saya menggunakan ini untuk menetapkan semula ketinggian permulaan.
  • Perintang 10k untuk penarikan butang.
  • Penyambung wanita JST-XH 4 pin untuk dipasang ke port telemetri penerima Spektrum
  • Pengaturcara SEGGER J-Link EDU untuk menyalakan M0 tanpa pemuat but.

    https://www.adafruit.com/product/3571

  • Adafruit SWD 10-pin breakout board

    www.adafruit.com/product/2743

Bekalan

  • Saya juga 3D mencetak kandang kecil untuk altimeter saya, tetapi ini tidak diperlukan.
  • Osiloskop- Sekiranya anda tidak memilikinya, saya sangat mengesyorkan yang ini:

    https://store.digilentinc.com/analog-discovery-2-1…

Langkah 1: Pelajari Protokol Telemetri Spektrum

Ketahui Protokol Telemetri Spektrum
Ketahui Protokol Telemetri Spektrum
Pelajari Protokol Telemetri Spektrum
Pelajari Protokol Telemetri Spektrum
Pelajari Protokol Telemetri Spektrum
Pelajari Protokol Telemetri Spektrum

Ini kebanyakan dilakukan untuk saya oleh Raymond Domingo. Mereka telah membuat altimeter yang serasi dengan Spektrum, jadi mengikuti kod sumber itu sangat membantu. Lembar data telemetri Spektrum mengisi jurang yang selebihnya. Mengukur tahap data dari penerima menunjukkan bahawa saya memerlukan logik 3.3v.

Penerima menghantar alamat peranti, dan kemudian mengharapkan balasan 16-bait. Lembar data menunjukkan struktur untuk semua pelbagai sensor. Walaupun strukturnya tidak panjang 16 byte, penerima menjangkakan 16 bait setiap kali.

Lembaran Data Spektrum:

www.spektrumrc.com/ProdInfo/Files/SPM_Tele…

Projek Raymond Domingo:

www.aerobtec.com/download/altisSpektrumInte…

Langkah 2: Pilih Perkakasan

Pilih Perkakasan
Pilih Perkakasan
Pilih Perkakasan
Pilih Perkakasan
Pilih Perkakasan
Pilih Perkakasan

Saya menggunakan papan pemecah BMP388 dari Adafruit untuk pengesan tekanan. Breakout menyediakan pelarian I2C dan SPI, dan berfungsi pada logik 3.3v atau 5v. Adafruit selalu melakukan pekerjaan yang luar biasa dengan papan iklan mereka, jadi saya membelinya. Saya menggunakan papan DFRobot Gravity BMP388 sebagai gantinya di papan saya kerana papan Adafruit saya sudah digunakan.

Memandangkan peranti I2C host menggunakan logik 3.3v, saya memerlukan pengawal mikro 3.3v, dan saya mahu ia kecil. Saya akan menggunakan Adafruit Trinket M0, tetapi harganya agak mahal, dan tidak banyak pin yang putus. Kemudian saya terjumpa papan Seeeduino XIAO. Ia adalah papan M0 dengan I2C dan SPI yang siap digunakan, dengan penyambung USB-C. Ia juga sangat kecil! Secara keseluruhan saya sangat menyukai papan ini (walaupun kristal permulaan yang perlahan membawa saya selamanya untuk mengetahui).

Spektrum menggunakan penyambung lelaki 4-pin saiz JST-XH pada penerima untuk port "Xbus" yang akan kita gunakan. Saya menggunakan palam wanita JST-XH 4-pin di altimeter dan ia berfungsi dengan sempurna.

Langkah 3: Tulis Perisian

Saya menggunakan Arduino IDE untuk menulis semua kod. Saya menyalin protokol telemetri Spektrum dari lembar data mereka dan menambahkannya ke perpustakaan Arduino saya. Oleh kerana Adafruit selalu mempunyai perpustakaan yang bagus untuk latihan mereka, saya menggunakan perpustakaan BMP3XX mereka untuk sensor BMP388.

Hasil utama dari reka bentuk saya adalah:

  • Siapkan I2C untuk berkelakuan sebagai peranti pelanggan dan bertindak balas ke alamat spektrum altimeter (0x12).
  • Baca barometer BMP388 melalui SPI.
  • Simpan data ketinggian dalam dua penyangga yang berbeza sehingga permintaan I2C dari penerima tidak akan merosakkan data, dan bergantian antara dua penyangga ketika mengambil data. Ini memastikan bahawa data yang dihantar ke penerima sentiasa lengkap.
  • Menggunakan butang untuk memusatkan altimeter.

Untuk maklumat lebih terperinci dan analisis kod, tonton videonya.

Langkah 4: Kabel Litar

Kawat Litar
Kawat Litar
Kawat Litar
Kawat Litar
Kawat Litar
Kawat Litar
Kawat Litar
Kawat Litar

Saya menggunakan protoboard, tetapi jika anda ingin meluangkan masa untuk merancang papan gilingan khas, anda boleh menjadikan litar lebih bersih.

Saya menyambungkan penyambung JST-XH ke pin I2C XIAO. Oleh kerana penerima mengeluarkan 5 volt ke bas telemetri, positif dari bas menuju ke pin VCC XIAO. Dengan cara itu pengatur 3.3v onboard digunakan untuk menghidupkan sensor BMP388.

Langkah 5: Kompilasi Tanpa Bootloader

Menyusun Tanpa Pemuat Boot
Menyusun Tanpa Pemuat Boot
Menyusun Tanpa Pemuat Boot
Menyusun Tanpa Pemuat Boot
  1. Cari fail boards.txt anda (untuk papan apa sahaja yang anda gunakan).

    Dalam kes saya, ia terletak di sini: C: / Users / AppData / Local / Arduino15 / package / Seeeduino / hardware / samd / 1.7.7 / boards.txt

  2. Salin papan anda, dan namakan semula kunci pertama untuk menentukan versi tanpa bootloader. Saya baru sahaja menambahkan _nbl pada nama asalnya.

    • Lama: seeed_XIAO_m0
    • Baru: seeed_XIAO_m0_nbl
  3. Tukar nilai.name:

    • Lama: seeed_XIAO_m0_nbl.name = Seeeduino XIAO
    • Baru: seeed_XIAO_m0_nbl.name = Seeeduino XIAO Tanpa Bootloader
  4. Ubah pautan ke flash tanpa bootloader dengan menukar skrip pembangun ld:

    • Lama: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts / gcc / flash_with_bootloader.ld
    • Baru: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts / gcc / flash_dengan keluar _bootloader.ld
  5. Mulakan semula Arduino IDE.
  6. Pilih papan "Seeeduino XIAO No Bootloader" yang baru dari menu papan.
  7. Pilih "Eksport Binari Disusun"
  8. Setelah disusun, fail.bin akan berada di folder projek Arduino anda.

Langkah 6: Flash MCU Dengan J-Link

Flash MCU Dengan J-Link
Flash MCU Dengan J-Link
Flash MCU Dengan J-Link
Flash MCU Dengan J-Link
Flash MCU Dengan J-Link
Flash MCU Dengan J-Link

Adafruit mempunyai panduan hebat untuk memprogramkan semula bootloader pada peranti M0 / M4. Dalam kes kami, kami ingin menyingkirkan bootloader, tetapi ia berfungsi dengan cara yang sama.

learn.adafruit.com/how-to-program-samd-boo…

Setelah anda melakukan ini, anda tidak akan dapat memuat naik kod melalui USB. Anda boleh mengikuti panduan di atas untuk mem-flash bootloader kembali ke peranti untuk memuat naik kod melalui USB lagi seperti yang anda dapat dari kilang.

Panduan Adafruit sangat teliti, tetapi ini adalah langkah asas:

  1. Kabel pelompat solder ke bahagian belakang papan XIAO.

    • Panduan Adafruit tidak mengatakan pin RST pada papan pelarian 2x5 perlu disambungkan ke pin tetapan semula pada papan Adafruit. Tetapi untuk XIAO, saya perlu menyambung ke keempat-empat pad di bahagian belakang papan.
    • Pin VREF perlu disambungkan ke pin XIAO 3.3v. Ini memberitahu debugger bahawa logik peranti adalah 3.3v. Tanpa itu, jika anda memilih pilihan yang salah, anda boleh merosakkan mikrokontroler.
  2. Sambungkan wayar pelompat ke J-Link.
  3. Hidupkan papan XIAO dengan kabel USB.
  4. Buka Atmel Studio.
  5. Pilih Alat Pengaturcaraan Peranti
  6. Pilih papan M0 anda. Dalam kes ini, ATSAMD21G18A
  7. Pilih SWD.
  8. Baca konfigurasi dari sasaran.
  9. Sekiranya anda menggunakan EDU J-Link, setuju dengan syarat penggunaan (jika anda mematuhi syarat penggunaan).
  10. Sahkan bahawa bacaan voltan betul di sudut kanan atas. Sekiranya tidak 3.3v, anda boleh merosakkan papan anda!
  11. Kosongkan sekering pelindung boot (tetapkan ukuran pemuat but ke 0 bait), dan kemudian pilih program.
  12. Di bahagian kenangan, pilih fail.bin atau.hex yang disusun, dan pilih program.

Penyelesaian masalah:

Apabila anda membaca konfigurasi peranti, jika anda mendapat ralat voltan di luar jangkauan, pastikan MCU dipasang ke kuasa dan pin J-Link VREF disambungkan ke 3.3 volt

Langkah 7: Susun semula Tanpa Kristal Luaran

Kumpulkan semula Tanpa Kristal Luaran
Kumpulkan semula Tanpa Kristal Luaran

Papan XIAO mempunyai kristal luaran yang memerlukan masa yang lama untuk dimulakan. Penerima Spektrum melakukan penemuan peranti pada bas telemetri 350 milisaat setelah daya hidup, jadi kita perlu memberitahu penyusun untuk menggunakan pengayun dalaman sebaliknya yang akan menjadikan permulaan hampir seketika.

  1. Cari fail boards.txt yang anda ubahsuai lebih awal (ya, saya boleh menyelamatkan anda langkah ini lebih awal, tetapi ini adalah proses pembelajaran bagi saya)
  2. Tambahkan "-DCRYSTALLESS" ke rentetan seeed_XIAO_m0_nbl.build.extra_flags. Ini akan memberitahu penyusun untuk menggunakan pengayun dalaman.
  3. Kumpulkan semula kod.
  4. Nyalakan semula MCU.
  5. Pastikan masa permulaan cukup pantas menggunakan osiloskop.

Seperti yang anda lihat dari gambar, saluran kuning 1 adalah bekalan kuasa. Saluran sian 2 adalah pin siap pada mikrokontroler. Kira-kira 10 milisaat setelah power-up, saluran dua ditarik tinggi oleh mikrokontroler yang menunjukkan bahawa ia berada dalam gelung persediaan. Setelah persediaan selesai, MCU dikodekan untuk menarik pin rendah, menunjukkan gelung utama sedang bermula. Skop menunjukkan bahawa penyediaan mengambil masa kira-kira 3 milisaat. Secara keseluruhan mikrokontroler mengambil masa 13 milisaat setelah power-up untuk siap.

Disyorkan: