Daftar Isi:

RC Plane Altimeter (kompatibel Dengan Spektrum Telemetri): 7 Langkah
RC Plane Altimeter (kompatibel Dengan Spektrum Telemetri): 7 Langkah

Video: RC Plane Altimeter (kompatibel Dengan Spektrum Telemetri): 7 Langkah

Video: RC Plane Altimeter (kompatibel Dengan Spektrum Telemetri): 7 Langkah
Video: Spektrum Vario meter/altimeter setup 2024, Juli
Anonim
RC Pesawat Altimeter (kompatibel Dengan Spektrum Telemetri)
RC Pesawat Altimeter (kompatibel Dengan Spektrum Telemetri)

Saya membuat altimeter ini agar pilot dapat mengetahui bahwa mereka berada di bawah batas 400 kaki pada pesawat RC di AS. Teman saya khawatir karena dia tidak bisa mengatakan dengan pasti bahwa dia selalu di bawah 400 kaki, dan menginginkan jaminan tambahan yang akan disediakan oleh sensor dengan data telemetri. Ya, Anda dapat membeli sensor dari Spektrum, tetapi Anda dapat membangun proyek ini dengan harga kurang dari $20 dengan papan breakout (yang harganya sudah meningkat). Jika Anda sudah memiliki programmer J-link, Anda dapat membuatnya di papan khusus dengan beberapa dolar. Belum lagi setelah Anda memahami protokol Xbus, Anda dapat membuat sensor lain yang didukung! Tapi saya hanya akan membahas altimeter dalam proyek ini…

Daftar bagian:

  • Saya menggunakan papan mikrokontroler Seeeduino XIAO untuk proyek ini karena ukurannya kecil, menggunakan prosesor M0 yang memiliki banyak daya untuk proyek ini, memiliki I2C dan SPI yang siap digunakan, dan menggunakan logika 3.3v sehingga tidak ada perubahan level. yg dibutuhkan.

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

  • Untuk penginderaan tekanan udara, saya membeli papan breakout BMP388 dari Adafruit. Papan memiliki I2C dan SPI yang rusak, dan dapat bekerja pada logika 3.3v atau 5v.

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

  • Protoboard untuk memasang kabel sirkuit
  • Solder / besi solder
  • Header pin pria/wanita sehingga saya dapat dengan mudah melepas sensor/mikrokontroler.
  • Tombol kecil. Saya menggunakan ini untuk mengatur ulang ketinggian awal.
  • Resistor 10k untuk pull-down pada tombol.
  • Konektor JST-XH 4 pin female untuk dicolokkan ke port telemetri penerima Spektrum
  • SEGGER J-Link EDU programmer untuk mem-flash M0 tanpa bootloader.

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

  • Papan breakout 10-pin Adafruit SWD

    www.adafruit.com/product/2743

Perlengkapan

  • Saya juga mencetak 3D enklosur kecil untuk altimeter saya, tetapi ini tidak diperlukan.
  • Osiloskop- Jika Anda tidak memilikinya, saya sangat merekomendasikan yang ini:

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

Langkah 1: Pelajari Protokol Telemetri Spektrum

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

Ini sebagian besar dilakukan untuk saya oleh Raymond Domingo. Mereka telah membuat altimeter yang kompatibel dengan Spektrum, jadi mengikuti kode sumber itu sangat membantu. Lembar data telemetri Spektrum mengisi kekosongan lainnya. Mengukur level data dari receiver menunjukkan bahwa saya membutuhkan logika 3.3v.

Penerima mengirimkan alamat perangkat, dan kemudian mengharapkan balasan 16-byte. Lembar data menunjukkan struktur untuk semua berbagai sensor. Bahkan jika strukturnya tidak sepanjang 16 byte, penerima mengharapkan 16 byte kembali setiap kali.

Lembar Data Spektrum:

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

Proyek Raymond Domingo:

www.aerobtec.com/download/altisSpektrumInte…

Langkah 2: Pilih Perangkat Keras

Pilih Perangkat Keras
Pilih Perangkat Keras
Pilih Perangkat Keras
Pilih Perangkat Keras
Pilih Perangkat Keras
Pilih Perangkat Keras

Saya menggunakan papan breakout BMP388 dari Adafruit untuk penginderaan tekanan. Breakout memberikan breakout I2C dan SPI, dan bekerja pada logika 3.3v atau 5v. Adafruit selalu melakukan pekerjaan yang luar biasa dengan papan breakout mereka, jadi saya membelinya. Saya menggunakan papan DFRobot Gravity BMP388 sebagai gantinya di build saya karena papan Adafruit saya sudah digunakan.

Mengingat bahwa perangkat host I2C menggunakan logika 3.3v, saya membutuhkan mikrokontroler 3.3v, dan saya ingin itu menjadi kecil. Saya akan menggunakan Adafruit Trinket M0, tetapi harganya relatif mahal, dan tidak banyak pin yang putus. Kemudian saya menemukan papan Seeeduino XIAO. Ini adalah papan M0 dengan I2C dan SPI yang siap digunakan, dengan konektor USB-C. Juga, itu sangat kecil! Secara keseluruhan saya sangat menyukai papan ini (walaupun kristal startup yang lambat membawa saya selamanya untuk mencari tahu).

Spektrum menggunakan konektor male 4-pin ukuran JST-XH pada receiver untuk port "Xbus" yang akan kita tap. Saya menggunakan konektor perempuan JST-XH 4-pin pada altimeter dan bekerja dengan sempurna.

Langkah 3: Tulis Perangkat Lunak

Saya menggunakan Arduino IDE untuk menulis semua kode. Saya menyalin protokol telemetri Spektrum dari lembar data mereka dan menambahkannya ke perpustakaan Arduino saya. Karena Adafruit selalu memiliki library yang bagus untuk breakout mereka, saya menggunakan library BMP3XX mereka untuk sensor BMP388.

Takeaways utama dari desain saya adalah:

  • Atur I2C untuk berperilaku sebagai perangkat klien dan merespons alamat altimeter Spektrum (0x12).
  • Baca barometer BMP388 melalui SPI.
  • Simpan data ketinggian di dua buffer berbeda sehingga permintaan I2C dari penerima tidak merusak data, dan bergantian di antara dua buffer saat mengambil data. Ini memastikan bahwa data yang dikirim ke penerima selalu lengkap.
  • Menggunakan tombol untuk meniadakan altimeter.

Untuk detail lebih lanjut dan analisis kode, tonton videonya.

Langkah 4: Kawat Sirkuit

Kawat Sirkuit
Kawat Sirkuit
Kawat Sirkuit
Kawat Sirkuit
Kawat Sirkuit
Kawat Sirkuit
Kawat Sirkuit
Kawat Sirkuit

Saya menggunakan protoboard, tetapi jika Anda ingin meluangkan waktu untuk mendesain papan giling khusus, Anda dapat membuat sirkuitnya jauh lebih bersih.

Saya menghubungkan konektor JST-XH ke pin I2C XIAO. Karena penerima mengeluarkan 5 volt ke bus telemetri, positif dari bus masuk ke pin VCC XIAO. Dengan begitu regulator 3.3v onboard digunakan untuk memberi daya pada sensor BMP388.

Langkah 5: Kompilasi Tanpa Bootloader

Kompilasi Tanpa Bootloader
Kompilasi Tanpa Bootloader
Kompilasi Tanpa Bootloader
Kompilasi Tanpa Bootloader
  1. Temukan file boards.txt Anda (untuk papan apa pun yang Anda gunakan).

    Dalam kasus saya, itu terletak di sini: C:\Users\AppData\Local\Arduino15\packages\Seeeduino\hardware\samd\1.7.7\boards.txt

  2. Salin papan Anda, dan ganti nama kunci pertama untuk menentukan versi tanpa bootloader. Saya baru saja menambahkan _nbl ke nama aslinya.

    • Lama: seed_XIAO_m0
    • Baru: seeed_XIAO_m0_nbl
  3. Ubah nilai.name:

    • Lama: seeed_XIAO_m0_nbl.name=Seeeduino XIAO
    • Baru: seeed_XIAO_m0_nbl.name=Seeeduino XIAO Tanpa Bootloader
  4. Ubah linker menjadi flash tanpa bootloader dengan mengubah skrip builder 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_tanpa _bootloader.ld
  5. Mulai ulang Arduino IDE.
  6. Pilih papan "Seeeduino XIAO No Bootloader" baru dari menu papan.
  7. Pilih "Ekspor Biner yang Dikompilasi"
  8. Setelah dikompilasi, file.bin akan berada di folder proyek 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 memiliki panduan fantastis tentang memprogram ulang bootloader pada perangkat M0/M4. Dalam kasus kami, kami ingin menyingkirkan bootloader, tetapi cara kerjanya sama.

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

Setelah Anda melakukan ini, Anda tidak akan dapat mengunggah kode melalui USB. Anda dapat mengikuti panduan di atas untuk mem-flash bootloader kembali ke perangkat untuk mengunggah kode melalui USB lagi seperti yang dapat Anda lakukan dari pabrik.

Panduan Adafruit sangat menyeluruh, tetapi ini adalah langkah-langkah dasarnya:

  1. Solder kabel jumper ke bagian belakang papan XIAO.

    • Panduan Adafruit tidak mengatakan bahwa pin RST pada papan breakout 2x5 perlu dihubungkan ke pin reset pada papan Adafruit. Tetapi untuk XIAO, saya perlu menghubungkan keempat bantalan di bagian belakang papan.
    • Pin VREF perlu dihubungkan ke pin XIAO 3.3v. Ini memberitahu debugger bahwa logika perangkat adalah 3.3v. Tanpa itu, jika Anda memilih opsi yang salah, Anda dapat merusak mikrokontroler.
  2. Hubungkan kabel jumper ke J-Link.
  3. Nyalakan papan XIAO dengan kabel USB.
  4. Buka Atmel Studio.
  5. Pilih Pemrograman Perangkat Alat
  6. Pilih papan M0 Anda. Dalam hal ini, ATSAMD21G18A
  7. Pilih SWD.
  8. Baca konfigurasi dari target.
  9. Jika Anda menggunakan EDU J-Link, setujui persyaratan penggunaan (jika Anda mematuhi persyaratan penggunaan).
  10. Pastikan tegangan baca di sudut kanan atas sudah benar. Jika bukan 3.3v, Anda bisa merusak papan Anda!
  11. Kosongkan sekering pelindung boot (atur ukuran bootloader ke 0 byte), lalu pilih program.
  12. Di bagian memori, pilih file.bin atau.hex yang telah dikompilasi, dan pilih program.

Penyelesaian masalah:

Ketika Anda membaca konfigurasi perangkat, jika Anda mendapatkan kesalahan tegangan di luar jangkauan, maka pastikan MCU terhubung ke daya dan pin J-Link VREF terhubung ke 3,3 volt

Langkah 7: Kompilasi Ulang Tanpa Kristal Eksternal

Kompilasi Ulang Tanpa Kristal Eksternal
Kompilasi Ulang Tanpa Kristal Eksternal

Papan XIAO memiliki kristal eksternal yang membutuhkan waktu lama untuk memulai. Penerima Spektrum melakukan penemuan perangkat pada bus telemetri 350 milidetik setelah dinyalakan, jadi kita perlu memberi tahu kompiler untuk menggunakan osilator internal yang akan membuat startup hampir seketika.

  1. Temukan file boards.txt yang Anda modifikasi sebelumnya (ya, saya bisa menyelamatkan Anda dari langkah ini sebelumnya, tetapi ini adalah proses pembelajaran bagi saya)
  2. Tambahkan "-DCRYSTALLESS" ke string seeed_XIAO_m0_nbl.build.extra_flags. Ini akan memberitahu compiler untuk menggunakan osilator internal.
  3. Kompilasi ulang kode.
  4. Flash ulang MCU.
  5. Pastikan waktu startup cukup cepat menggunakan osiloskop.

Seperti yang Anda lihat dari gambar, saluran kuning 1 adalah catu daya. Saluran cyan 2 adalah pin ready pada mikrokontroler. Sekitar 10 milidetik setelah power-up, saluran dua ditarik tinggi oleh mikrokontroler yang menunjukkan itu dalam loop pengaturan. Setelah penyetelan selesai, MCU diberi kode untuk menarik pin ke posisi rendah, yang menunjukkan bahwa loop utama sedang dimulai. Cakupan menunjukkan bahwa penyiapan membutuhkan waktu sekitar 3 milidetik. Secara keseluruhan mikrokontroler membutuhkan waktu 13 milidetik setelah power-up untuk siap digunakan.

Direkomendasikan: