Мазмуну:

RC Plane Altimeter (Spektrum телеметриясы менен шайкеш): 7 кадам
RC Plane Altimeter (Spektrum телеметриясы менен шайкеш): 7 кадам

Video: RC Plane Altimeter (Spektrum телеметриясы менен шайкеш): 7 кадам

Video: RC Plane Altimeter (Spektrum телеметриясы менен шайкеш): 7 кадам
Video: Spektrum Vario meter/altimeter setup 2024, Ноябрь
Anonim
RC Plane Altimeter (Spektrum телеметриясы менен шайкеш)
RC Plane Altimeter (Spektrum телеметриясы менен шайкеш)

Мен бул бийиктикти учкуч АКШдагы RC учактарынын 400 фут чегинде экенин билиши үчүн жасадым. Досум тынчсызданып жатты, анткени ал дайыма 400 футтан төмөн экенин так айта алган жок жана телеметрикалык маалыматтары бар сенсор камсыздай тургандыгын кошумчалады. Ооба, сен Spektrumдан сенсор сатып алсаң болот, бирок бул проекти 20 долларга арзан баада (мурунтан эле баасы көтөрүлүп кеткен) кура аласың. Эгерде сизде J-link программисти бар болсо, сиз муну бир нече долларга ыңгайлаштырылган тактага кура аласыз. Xbus протоколун түшүнгөнүңүздөн кийин, башка колдоого алынган сенсорлорду жасай аласыз! Бирок мен бул долбоордо жөн эле бийиктикти жабам …

Бөлүктөрдүн тизмеси:

  • Мен бул долбоор үчүн Seeeduino XIAO микроконтроллер тактасын колдондум, анткени ал кичинекей, бул долбоор үчүн көп күчкө ээ болгон M0 процессорун колдонот, I2C жана SPI экөө тең кутудан чыгууга даяр жана 3.3v логикасын колдонот, андыктан деңгээл өзгөрбөйт талап кылынат.

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

  • Аба басымын сезүү үчүн мен Adafruitтен BMP388 сындыруучу тактасын сатып алдым. Такта I2C жана SPI экиге бөлүнгөн жана 3.3v же 5v логикасында иштей алат.

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

  • Районду зым менен камсыздоо үчүн протобер
  • Лак/темир
  • Эркек/ургаачы пин баштары, ошондуктан мен сенсорду/микроконтроллерди оңой ажырата алам.
  • Кичинекей баскыч. Мен муну баштапкы бийиктикти баштапкы абалга келтирүү үчүн колдоном.
  • Баскычты түшүрүү үчүн 10k каршылык.
  • Spektrum алуучунун телеметрикалык портуна туташтыруу үчүн JST-XH 4 pin аял коннектору
  • SEGGER J-Link EDU программисти жүктөгүчсүз M0 жаркылдайт.

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

  • Adafruit SWD 10-пин туташтыруу тактасы

    www.adafruit.com/product/2743

Жабдуулар

  • Мен дагы 3D бийиктигим үчүн кичинекей корпусту басып чыгардым, бирок бул кереги жок.
  • Осциллограф- Эгерде сизде жок болсо, мен муну сунуштайм:

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

1 -кадам: Spektrum телеметрия протоколун үйрөнүңүз

Spektrum телеметриялык протоколун үйрөнүңүз
Spektrum телеметриялык протоколун үйрөнүңүз
Spektrum телеметриялык протоколун үйрөнүңүз
Spektrum телеметриялык протоколун үйрөнүңүз
Spektrum телеметриялык протоколун үйрөнүңүз
Spektrum телеметриялык протоколун үйрөнүңүз

Бул көбүнчө мен үчүн Раймонд Доминго тарабынан жасалган. Алар буга чейин Spektrum менен шайкеш келген бийиктикти түзүшкөн, андыктан бул кодду ээрчүү чындап жардам берди. Калган боштуктарды Spektrum телеметриясынын маалыматы толтурат. Кабыл алгычтан маалыматтын деңгээлин өлчөө мен 3.3v логикасына муктаж экенимди көрсөттү.

Алуучу түзмөктүн дарегин жөнөтөт, андан кийин 16 байттык жоопту күтөт. Маалыматтар барагы ар кандай сенсорлордун түзүлүшүн көрсөтөт. Структура 16 байт болбосо дагы, алуучу ар бир жолу 16 байтты кайра күтөт.

Spektrum маалымат жадыбалы:

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

Раймонд Домингонун долбоору:

www.aerobtec.com/download/altisSpektrumInte…

2 -кадам: Аппараттыкты тандоо

Тандоо Аппараттык
Тандоо Аппараттык
Тандоо Аппараттык
Тандоо Аппараттык
Тандоо Аппараттык
Тандоо Аппараттык

Мен басым сезүү үчүн Adafruitтен BMP388 сындыруучу тактасын колдондум. Breakout I2C жана SPI үзүлүштөрүн камсыз кылат жана 3.3v же 5v логикасында иштейт. Adafruit ар дайым алардын сынык такталары менен укмуштуудай жумуш аткарат, ошондуктан мен аны сатып алдым. Мен DFRobot Gravity BMP388 тактасын колдондум, анткени менин Adafruit тактайым колдонулуп жүргөн.

Кабыл алуучу I2C түзмөгү 3.3v логикасын колдонорун эске алып, мага 3.3v микроконтроллери керек болчу, мен анын кичинекей болушун кааладым. Мен Adafruit Trinket M0 колдонгон болчумун, бирок алар салыштырмалуу кымбат жана анча көп казыктары жок. Андан кийин Seeeduino XIAO тактасын таптым. Бул USB-C туташтыргычы бар I2C жана SPI экөө тең даяр болгон M0 такта. Ошондой эле, бул чындыгында кичинекей! Жалпысынан мага бул такта абдан жагат (жай башталган кристалл мени түшүнүүгө түбөлүккө созулганына карабай).

Spektrum, биз таптай турган "Xbus" портунун ресивериндеги JST-XH өлчөмүндөгү 4 пиндүү эркек коннекторун колдонот. Мен бийиктикке 4-пин JST-XH ургаачы сайгычын колдондум жана ал эң сонун иштеди.

3 -кадам: Программаны жазыңыз

Мен бардык кодду жазуу үчүн Arduino IDE колдондум. Мен Spektrum телеметрия протоколун алардын маалымат барагынан көчүрүп, Arduino китепканама коштум. Adafruitте ар дайым жакшы китепканалар болгондуктан, мен алардын BMP3XX китепканасын BMP388 сенсоруна колдондум.

Менин дизайнымдан алынган негизги нерселер:

  • I2Cди кардар түзмөгү катары алып жүрүү жана Spektrum altimeter дарегине (0x12) жооп берүү үчүн орнотуңуз.
  • BMP388 барометрин SPI аркылуу окуңуз.
  • Бийиктиктин маалыматын эки башка буферде сактаңыз, андыктан ресиверден I2C сурамы маалыматтарды бузбашы үчүн жана маалыматтарды алып жатканда эки буфердин ортосунда алмашуу. Бул алуучуга жөнөтүлгөн маалыматтын дайыма толук болушун камсыз кылат.
  • Альтиметрди нөлгө салуу үчүн баскычты колдонот.

Көбүрөөк маалымат жана код анализи үчүн видеону көрүңүз.

4 -кадам: Райондук зым

Circuit Wire
Circuit Wire
Circuit Wire
Circuit Wire
Circuit Wire
Circuit Wire
Circuit Wire
Circuit Wire

Мен протоборд колдондум, бирок эгер сиз атайын фрезерленген тактаны иштеп чыгууга убакыт бөлгүңүз келсе, анда схеманы бир топ таза кыла аласыз.

Мен JST-XH коннекторун XIAOнун I2C казыктарына туташтырдым. Алуучу телеметрикалык автобуска 5 вольтту чыгаргандыктан, автобустун позитиви XIAOнун VCC пинине түштү. Ошентип, борттогу 3.3v жөндөгүч BMP388 сенсорун иштетүү үчүн колдонулат.

5 -кадам: Жүктөгүчсүз компиляция

Жүктөөчү жок түзүңүз
Жүктөөчү жок түзүңүз
Жүктөгүчсүз компиляциялоо
Жүктөгүчсүз компиляциялоо
  1. Board.txt файлыңызды табыңыз (сиз колдонгон такта үчүн).

    Менин учурда, ал бул жерде болгон: C: / Users / AppData / Local / Arduino15 / packages / Seeeduino / hardware / samd / 1.7.7 / board.txt

  2. Тактаңызды көчүрүңүз жана жүктөгүч жок версиясын көрсөтүү үчүн биринчи ачкычтын атын өзгөртүңүз. Мен жөн эле баштапкы атка _nbl коштум.

    • Эски: seeed_XIAO_m0
    • Жаңы: seeed_XIAO_m0_nbl
  3. . Name маанисин өзгөртүү:

    • Эски: seeed_XIAO_m0_nbl.name = Seeeduino XIAO
    • Жаңы: seeed_XIAO_m0_nbl.name = Seeeduino XIAO жүктөгүч жок
  4. Шилтеменин жүктөөчүсү жок жаркылдатып, куруучу ld скриптин өзгөртүү менен:

    • Эски: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with_bootloader.ld
    • Жаңы: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with _bootloader.ld
  5. Arduino IDEди өчүрүп күйгүзүңүз.
  6. Такталар менюсунан жаңы "Seeeduino XIAO No Bootloader" тактасын тандаңыз.
  7. "Түзүлгөн экилик файлды экспорттоону" тандаңыз
  8. Түзүлгөндөн кийин.bin файлы Arduino долбооруңуздун папкасында болот.

6-кадам: Flash MCU J-Link менен

J-Link менен Flash MCU
J-Link менен Flash MCU
J-Link менен Flash MCU
J-Link менен Flash MCU
J-Link менен Flash MCU
J-Link менен Flash MCU

Adafruit M0/M4 түзмөгүндө жүктөгүчтү кайра программалоо боюнча фантастикалык колдонмого ээ. Биздин учурда, биз жүктөгүчтөн кутулууну каалайбыз, бирок ал дагы ушундай иштейт.

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

Муну кылгандан кийин, USB аркылуу кодду жүктөй албай каласыз. Сиз жүктөгүчтү кайра USB аркылуу кодду жүктөө үчүн фабрикадан кайра жүктөп алуу үчүн жогорудагы көрсөтмөнү аткарсаңыз болот.

Adafruit колдонмосу абдан кылдат, бирок бул негизги кадамдар:

  1. XIAO тактайынын арт жагындагы Solder jumper зымдары.

    • Adafruit жол көрсөткүчү 2x5 сынык тактасындагы RST пини Adafruit такталарындагы баштапкы абалга келтирүүчү пинге туташтырылышы керек деп айткан эмес. Бирок XIAO үчүн мен тактанын артындагы төрт подкладка туташуум керек болчу.
    • VREF пин XIAO 3.3v төөнөгүчкө туташтырылышы керек. Бул мүчүлүштүктөрдү оңдоочуга түзмөктүн логикасы 3.3v экенин айтат. Ансыз, эгер сиз туура эмес жолду тандасаңыз, микроконтроллерди бузуп алышыңыз мүмкүн.
  2. J-Linkке секирүүчү зымдарды туташтырыңыз.
  3. USB кабели менен XIAO тактасын күйгүзүңүз.
  4. Atmel студиясын ачуу.
  5. Аспаптар Программасын тандоо
  6. M0 тактаңызды тандаңыз. Бул учурда, ATSAMD21G18A
  7. SWD тандаңыз.
  8. Максаттан конфигурацияны окуңуз.
  9. Эгерде сиз EDU J-Link колдонуп жатсаңыз, колдонуу шарттарына макул болуңуз (эгер сиз колдонуу шарттарына баш ийип жатсаңыз).
  10. Жогорку оң бурчта чыңалуудагы окуу туура экенин текшериңиз. Эгерде ал 3.3v болбосо, тактаңызды сындырып алышыңыз мүмкүн!
  11. Жүктөө коргоочу сактандыргычты тазалаңыз (жүктөгүчтүн өлчөмүн 0 байтка коюңуз), анан программаны тандаңыз.
  12. Эстутум бөлүмүндө,.bin же.hex файлыңызды түзүңүз жана программаны тандаңыз.

Кыйынчылыктарды чечүү:

Түзмөктүн конфигурациясын окуп жатканда, эгер сиз чыңалуудан ката кетсеңиз, анда MCU электр кубатына туташтырылганын жана J-Link VREF пин 3.3 вольтко туташканын текшериңиз

7 -кадам: Тышкы кристаллсыз кайра компиляциялоо

Тышкы кристаллсыз кайра түзүңүз
Тышкы кристаллсыз кайра түзүңүз

XIAO тактасы баштоо үчүн көп убакытты талап кылган тышкы кристаллга ээ. Spektrum алгычы телеметрикалык автобуста 350 миллисекунддан кийин түзмөктүн ачылышын жасайт, андыктан компиляторго ички осцилляторду колдонууну айтуубуз керек, бул стартты дээрлик заматта кылат.

  1. Сиз мурда өзгөрткөн board.txt файлын табыңыз (ооба, мен сизди бул кадамды эртерээк сактап калмакмын, бирок бул мен үчүн үйрөнүү процесси болчу)
  2. Seeed_XIAO_m0_nbl.build.extra_flags сабына "-DCRYSTALLESS" кошуңуз. Бул компиляторго ички осцилляторду колдонууну айтат.
  3. Кодду кайра түзүңүз.
  4. MCUду кайра күйгүзүңүз.
  5. Иштөө убактысы осциллограф аркылуу жетишерлик тез экендигин текшериңиз.

Сүрөттөн көрүнүп тургандай, сары канал 1 - энергия булагы. Көгүш канал 2 - микроконтроллердеги даяр пин. Күйгүзүлгөндөн кийин болжол менен 10 миллисекундтан кийин, экинчи канал микроконтроллер тарабынан жогору тартылат, бул анын орнотуу циклинде экенин көрсөтөт. Орнотуу бүткөндөн кийин, MCU негизги цикл башталганын көрсөтүп, пинти төмөн түшүрүү үчүн коддолгон. Орнотуу көрсөткөндөй, орнотуу 3 миллисекундка созулат. Жалпысынан микроконтроллер ишке кирүүгө даяр болгондон кийин 13 миллисекунд алат.

Сунушталууда: