Talaan ng mga Nilalaman:

RC Plane Altimeter (katugma sa Spektrum Telemetry): 7 Mga Hakbang
RC Plane Altimeter (katugma sa Spektrum Telemetry): 7 Mga Hakbang

Video: RC Plane Altimeter (katugma sa Spektrum Telemetry): 7 Mga Hakbang

Video: RC Plane Altimeter (katugma sa Spektrum Telemetry): 7 Mga Hakbang
Video: Estes Model Rocket Altimeter test in my RC airplane. 2024, Setyembre
Anonim
RC Plane Altimeter (katugma sa Spektrum Telemetry)
RC Plane Altimeter (katugma sa Spektrum Telemetry)

Ginawa ko ang altimeter na ito upang malaman ng piloto na nasa ilalim sila ng 400 talampakan na limitasyon sa sasakyang panghimpapawid RC sa US. Nag-aalala ang aking kaibigan dahil hindi niya masabi nang tiyak na palagi siyang nasa ilalim ng 400 ft, at nais ang dagdag na katiyakan na ibibigay ang isang sensor na may data ng telemetry. Oo, maaari kang bumili ng isang sensor mula sa Spektrum, ngunit maaari mong buuin ang proyektong ito nang mas mababa sa $ 20 sa mga breakout board (na napalaki na ng presyo). Kung mayroon ka ng programmer ng J-link, maaari mo itong maitayo sa isang pasadyang board para sa ilang dolyar. Hindi banggitin kapag naintindihan mo ang Xbus protocol, maaari kang gumawa ng alinman sa iba pang mga sinusuportahang sensor! Ngunit sasaklawin ko lang ang isang altimeter sa proyektong ito …

Listahan ng mga bahagi:

  • Gumamit ako ng isang board ng microcontroller ng Seeeduino XIAO para sa proyektong ito dahil maliit ito, gumagamit ng isang M0 processor na may maraming lakas para sa proyektong ito, may parehong I2C at SPI na handa nang lumabas sa kahon, at gumagamit ng 3.3v na lohika kaya walang antas ng paglilipat ang kailangan.

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

  • Para sa sensing ng presyon ng hangin, bumili ako ng isang breakout board ng BMP388 mula sa Adafruit. Ang board ay may parehong I2C at SPI na nasira, at maaaring gumana sa 3.3v o 5v na lohika.

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

  • Protoboard para sa mga kable sa circuit
  • Panghinang / panghinang na bakal
  • Mga header ng lalaki / babae na pin upang madali kong matanggal ang sensor / microcontroller.
  • Maliit na pindutan. Ginagamit ko ito para sa pag-reset ng altitude ng pagsisimula.
  • 10k risistor para sa isang pull-down sa pindutan.
  • Ang JST-XH 4 pin na babaeng konektor upang mai-plug sa port ng telemetry ng tatanggap ng Spektrum
  • SEGGER programmer ng J-Link EDU upang i-flash ang M0 nang walang isang bootloader.

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

  • Adafruit SWD 10-pin breakout board

    www.adafruit.com/product/2743

Mga gamit

  • Nag-print din ako ng 3D ng isang maliit na enclosure para sa aking altimeter, ngunit hindi ito kinakailangan.
  • Oscilloscope- Kung wala kang isa, lubos kong inirerekumenda ang isang ito:

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

Hakbang 1: Alamin ang Spektrum Telemetry Protocol

Alamin ang Spektrum Telemetry Protocol
Alamin ang Spektrum Telemetry Protocol
Alamin ang Spektrum Telemetry Protocol
Alamin ang Spektrum Telemetry Protocol
Alamin ang Spektrum Telemetry Protocol
Alamin ang Spektrum Telemetry Protocol

Karamihan ito ay ginawa para sa akin ni Raymond Domingo. Gumawa na sila ng isang altimeter na katugma sa Spektrum, kaya't ang pagsunod sa source code na iyon ay talagang nakatulong. Ang datosheet ng telemetry na Spektrum ay napunan ang natitirang mga puwang. Ang pagsukat sa mga antas ng data sa labas ng tatanggap ay ipinapakita na kakailanganin ko ng 3.3v na lohika.

Ipinapadala ng tatanggap ang address ng aparato, at pagkatapos ay inaasahan ang isang 16-byte na tugon. Ipinapakita ng datasheet ang mga istraktura para sa lahat ng iba't ibang mga sensor. Kahit na ang istraktura ay hindi 16 bytes ang haba, inaasahan ng tatanggap ang 16 na byte pabalik bawat oras.

Spektrum Datasheet:

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

Proyekto ni Raymond Domingo:

www.aerobtec.com/download/altisSpektrumInte…

Hakbang 2: Piliin ang Hardware

Piliin ang Hardware
Piliin ang Hardware
Piliin ang Hardware
Piliin ang Hardware
Piliin ang Hardware
Piliin ang Hardware

Gumamit ako ng isang breakout board ng BMP388 mula sa Adafruit para sa sensing ng presyon. Nagbibigay ang breakout ng mga breakout ng I2C at SPI, at gumagana sa 3.3v o 5v na lohika. Laging gumagawa ang Adafruit ng isang kamangha-manghang trabaho sa kanilang mga breakout board, kaya binili ko ito. Gumamit ako ng isang board na DFRobot Gravity BMP388 sa halip na sa aking pagbuo dahil ginamit na ang aking board ng Adafruit.

Dahil sa ang aparato ng host ng I2C ay gumagamit ng 3.3v lohika, kailangan ko ng isang 3.3v microcontroller, at nais kong maging maliit ito. Gagamitin ko ang isang Adafruit Trinket M0, ngunit ang mga ito ay medyo mahal, at walang napakaraming mga pin na naputol. Pagkatapos ay nahanap ko ang board na Seeeduino XIAO. Ito ay isang board ng M0 na may parehong I2C at SPI na handang pumunta, na may isang konektor sa USB-C. Gayundin, napakaliit talaga nito! Sa pangkalahatan ay talagang gusto ko ang board na ito (kahit na ang mabagal na kristal ng startup ay kinuha ako magpakailanman upang malaman).

Gumagamit ang Spektrum ng isang JST-XH laki na 4-pin male konektor sa receiver para sa port na "Xbus" na mai-taping namin. Gumamit ako ng isang 4-pin na JST-XH female plug sa altimeter at ito ay ganap na gumana.

Hakbang 3: Sumulat ng Software

Ginamit ko ang Arduino IDE upang isulat ang lahat ng code. Kinopya ko ang Spektrum telemetry protocol mula sa kanilang datasheet at idinagdag ito sa aking Arduino library. Dahil palaging may magagandang aklatan ang Adafruit para sa kanilang mga breakout, ginamit ko ang kanilang library ng BMP3XX para sa sensor ng BMP388.

Ang mga pangunahing takeaway mula sa aking disenyo ay:

  • I-setup ang I2C upang kumilos bilang isang aparato ng client at tumugon sa Spektrum altimeter address (0x12).
  • Basahin ang BMP388 barometro sa pamamagitan ng SPI.
  • I-save ang data ng altitude sa dalawang magkakaibang buffer upang ang isang kahilingan sa I2C mula sa tatanggap ay hindi masisira ang data, at kahalili sa pagitan ng dalawang buffer kapag kinukuha ang data. Tinitiyak nito na ang data na ipinadala sa tatanggap ay laging kumpleto.
  • Gumagamit ng isang pindutan upang zero ang altimeter.

Para sa higit pang mga detalye at pagtatasa ng code, panoorin ang video.

Hakbang 4: Wire the Circuit

Wire ang Circuit
Wire ang Circuit
Wire ang Circuit
Wire ang Circuit
Wire ang Circuit
Wire ang Circuit
Wire ang Circuit
Wire ang Circuit

Gumamit ako ng protoboard, ngunit kung nais mong maglaan ng oras upang mag-disenyo ng isang pasadyang milled board, maaari mong gawing mas malinis ang circuit.

Ikinonekta ko ang konektor ng JST-XH sa mga I2C na pin ng XIAO. Dahil ang tatanggap ay naglabas ng 5 volts sa telemetry bus, ang positibo mula sa bus ay napunta sa VCC pin ng XIAO. Sa ganoong paraan ang onboard 3.3v regulator ay ginagamit upang paandarin ang sensor ng BMP388.

Hakbang 5: Mag-compile Nang Walang isang Bootloader

Compile Nang Walang isang Bootloader
Compile Nang Walang isang Bootloader
Compile Nang Walang isang Bootloader
Compile Nang Walang isang Bootloader
  1. Hanapin ang iyong boards.txt file (para sa anumang board na iyong ginagamit).

    Sa aking kaso, matatagpuan ito dito: C: / Users / AppData / Local / Arduino15 / packages / Seeeduino / hardware / samd / 1.7.7 / boards.txt

  2. Kopyahin ang iyong board, at palitan ang pangalan ng unang key upang tukuyin ang isang walang bersyon ng bootloader. Nagdagdag lang ako ng _nbl sa orihinal na pangalan.

    • Luma: seeed_XIAO_m0
    • Bago: seeed_XIAO_m0_nbl
  3. Baguhin ang.name halaga:

    • Luma: seeed_XIAO_m0_nbl.name = Seeeduino XIAO
    • Bago: seeed_XIAO_m0_nbl.name = Seeeduino XIAO Walang Bootloader
  4. Baguhin ang linker sa flash nang walang bootloader sa pamamagitan ng pagbabago ng script ng builder ld:

    • Luma: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts / gcc / flash_with_bootloader.ld
    • Bago: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts / gcc / flash_with out _bootloader.ld
  5. I-restart ang Arduino IDE.
  6. Piliin ang bagong board na "Seeeduino XIAO No Bootloader" mula sa menu ng boards.
  7. Piliin ang "I-export ang Pinagsamang Binary"
  8. Kapag naipon, ang.bin file ay nasa iyong folder ng proyekto ng Arduino.

Hakbang 6: Flash MCU Sa J-Link

Flash MCU Sa J-Link
Flash MCU Sa J-Link
Flash MCU Sa J-Link
Flash MCU Sa J-Link
Flash MCU Sa J-Link
Flash MCU Sa J-Link

Ang Adafruit ay may kamangha-manghang gabay sa muling pagprogram ng isang bootloader sa isang aparato na M0 / M4. Sa aming kaso, nais naming mapupuksa ang bootloader, ngunit gumagana ito sa parehong paraan.

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

Kapag ginawa mo ito, hindi ka makakapag-upload ng code sa pamamagitan ng USB. Maaari mong sundin ang gabay sa itaas upang i-flash ang bootloader pabalik sa aparato upang mag-upload ng code sa pamamagitan ng USB muli tulad ng nagawa mo mula sa pabrika.

Ang patnubay sa Adafruit ay napaka masusing, ngunit ito ang mga pangunahing hakbang:

  1. Ang mga solder jumper wires sa likod ng board ng XIAO.

    • Hindi sinabi ng gabay ng Adafruit na ang RST pin sa 2x5 breakout board ay kailangang maikonekta sa reset pin sa mga board ng Adafruit. Ngunit para sa XIAO, kailangan kong kumonekta sa lahat ng apat na pad sa likod ng board.
    • Ang VREF pin ay kailangang maiugnay sa XIAO 3.3v pin. Sinasabi nito sa debugger na ang lohika ng aparato ay 3.3v. Kung wala ito, kung pinili mo ang maling pagpipilian, maaari mong mapinsala ang microcontroller.
  2. Ikonekta ang mga jumper wires sa J-Link.
  3. Lakas sa board ng XIAO na may isang USB cable.
  4. Buksan ang Atmel Studio.
  5. Piliin ang Programming ng Device Tools
  6. Piliin ang iyong board ng M0. Sa kasong ito, ang ATSAMD21G18A
  7. Piliin ang SWD.
  8. Basahin ang pagsasaayos mula sa target.
  9. Kung gumagamit ka ng EDU J-Link, sumang-ayon sa mga tuntunin ng paggamit (kung sumusunod ka sa mga tuntunin ng paggamit).
  10. I-verify na ang nabasa sa boltahe ay tama sa kanang sulok sa itaas. Kung hindi ito 3.3v, maaari mong masira ang iyong board!
  11. I-clear ang boot protektahan ang piyus (itakda ang laki ng bootloader sa 0 bytes), at pagkatapos ay piliin ang programa.
  12. Sa seksyon ng mga alaala, piliin ang iyong naipong.bin o.hex file, at piliin ang programa.

Nagkaproblema sa Pamamaril:

Kapag nabasa mo ang pagsasaayos ng aparato, kung nakakakuha ka ng isang boltahe sa labas ng saklaw na error, tiyakin na ang MCU ay naka-plug sa lakas at ang J-Link VREF pin ay konektado sa 3.3 volts

Hakbang 7: Magkumpuni Nang Wala ang Panlabas na Crystal

Magkumpuni Nang Wala ang Panlabas na Crystal
Magkumpuni Nang Wala ang Panlabas na Crystal

Ang board ng XIAO ay may isang panlabas na kristal na tumatagal ng mahabang panahon upang magsimula. Ang tatanggap ng Spektrum ay gumagawa ng isang pagtuklas ng aparato sa telemetry bus na 350 milliseconds pagkatapos ng power up, kaya kailangan nating sabihin sa tagatala na gamitin ang panloob na oscillator sa halip na magpapasimula nang mabilis.

  1. Hanapin ang file ng boards.txt na binago mo nang mas maaga (oo, ma-save ka sana ng hakbang na ito nang mas maaga, ngunit ito ay isang proseso ng pag-aaral para sa akin)
  2. Idagdag ang "-DCRYSTALLESS" sa nakita na string na_tanong_XIAO_m0_nbl.build.extra_flags. Sasabihin nito sa tagatala na gamitin ang panloob na oscillator.
  3. Ipunin muli ang code.
  4. Muling i-flash ang MCU.
  5. I-verify ang oras ng pagsisimula ay sapat na mabilis gamit ang isang oscilloscope.

Tulad ng nakikita mo mula sa larawan, ang dilaw na channel 1 ay ang supply ng kuryente. Ang cyan channel 2 ay ang handa na pin sa microcontroller. Mga 10 milliseconds pagkatapos ng power-up, ang dalawa sa channel ay hinila ng mataas ng microcontroller na nagsasaad na nasa setup loop ito. Kapag tapos na ang pag-set up, naka-code ang MCU upang hilahin ang pin na mababa, na nagpapahiwatig na nagsisimula ang pangunahing loop. Ipinapakita ng saklaw na ang pag-set up ay tumatagal ng halos 3 milliseconds. Sa pangkalahatan ang microcontroller ay tumatagal ng 13 milliseconds pagkatapos ng power-up upang maging handa na upang pumunta.

Inirerekumendang: