Съдържание:
- Консумативи
- Стъпка 1: Научете протокола за телеметрия на Spektrum
- Стъпка 2: Изберете Хардуер
- Стъпка 3: Напишете софтуер
- Стъпка 4: Свържете веригата
- Стъпка 5: Компилирайте без буутлоудър
- Стъпка 6: Flash MCU с J-Link
- Стъпка 7: Прекомпилирайте без външен кристал
Видео: RC Plane Altimeter (съвместим със Spectrum Telemetry): 7 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:50
Направих този висотомер, за да може пилотът да знае, че те са под ограничението от 400 фута на RC самолети в САЩ. Приятелят ми беше притеснен, тъй като не можеше да каже със сигурност, че винаги е под 400 фута, и искаше допълнителна гаранция, че сензор с телеметрични данни ще осигури. Да, можете да закупите сензор от Spektrum, но можете да изградите този проект за по -малко от $ 20 с пробивни платки (които вече са завишени в цената). Ако вече имате програмист J-link, можете да изградите това на персонализирана дъска за няколко долара. Да не говорим, след като разберете протокола Xbus, можете да направите някой от другите поддържани сензори! Но просто ще покрия висотомер в този проект …
Списък с части:
-
Използвах платка за микроконтролер Seeeduino XIAO за този проект, тъй като е малък, използва процесор M0, който има много мощност за този проект, има I2C и SPI готов да излезе от кутията и използва 3.3v логика, така че не се променя нивото задължително.
https://www.seeedstudio.com/Seeeduino-XIAO-Arduino…
-
За измерване на въздушното налягане закупих BMP388 пробивна дъска от Adafruit. Платката има I2C и SPI разбити и може да работи на 3.3v или 5v логика.
https://www.adafruit.com/product/3966
- Прото платка за свързване на веригата
- Припой/поялник
- Мъжки/женски щифтове, за да мога лесно да откачам сензора/микроконтролера.
- Малък бутон. Използвам това за нулиране на началната височина.
- 10k резистор за изтегляне на бутона.
- JST-XH 4-пинов женски конектор за включване в порта за телеметрия на приемника Spektrum
-
SEGGER J-Link EDU програмист да мига M0 без буутлоудър.
https://www.adafruit.com/product/3571
-
Адапрутна SWD 10-пинова пробивна дъска
www.adafruit.com/product/2743
Консумативи
- Отпечатах също 3D корпус за моя висотомер, но това не е необходимо.
-
Осцилоскоп- Ако нямате такъв, силно препоръчвам този:
https://store.digilentinc.com/analog-discovery-2-1…
Стъпка 1: Научете протокола за телеметрия на Spektrum
Това беше направено най -вече от мен от Реймънд Доминго. Те вече бяха направили висотомер, съвместим със Spektrum, така че спазването на този изходен код наистина помогна. Информационният лист за телеметрия на Spektrum попълва останалите празнини. Измерването на нивата на данни от приемника показа, че ще ми трябва 3.3v логика.
Получателят изпраща адреса на устройството и след това очаква отговор от 16 байта. Информационният лист показва структурите за всички различни сензори. Дори ако структурата не е дълга 16 байта, приемникът очаква 16 байта обратно всеки път.
Спецификация на Spektrum:
www.spektrumrc.com/ProdInfo/Files/SPM_Tele…
Проектът на Реймънд Доминго:
www.aerobtec.com/download/altisSpektrumInte…
Стъпка 2: Изберете Хардуер
Използвах пробивна платка BMP388 от Adafruit за измерване на налягането. Пробивът осигурява I2C и SPI пробиви и работи при 3.3v или 5v логика. Adafruit винаги върши невероятна работа с техните пробивни дъски, затова го купих. Вместо това използвах платка DFRobot Gravity BMP388 в моята конструкция, тъй като моята дъска Adafruit вече беше използвана.
Като се има предвид, че хост I2C устройството използва 3.3v логика, имах нужда от 3.3v микроконтролер и исках той да е малък. Щях да използвам Adafruit Trinket M0, но те са сравнително скъпи и нямат много избити щифтове. Тогава намерих дъската Seeeduino XIAO. Това е платка M0 с I2C и SPI готов за работа, с USB-C конектор. Освен това е наистина мъничко! Като цяло много харесвам тази дъска (въпреки че бавният стартиращ кристал ми отне завинаги, за да разбера).
Spektrum използва 4-пинов мъжки конектор с размер JST-XH на приемника за порта „Xbus“, към който ще се включим. Използвах 4-пинов женски щепсел JST-XH на висотомера и той работи перфектно.
Стъпка 3: Напишете софтуер
Използвах IDE на Arduino, за да напиша целия код. Копирах протокола за телеметрия на Spektrum от техния лист и го добавих към моята библиотека Arduino. Тъй като Adafruit винаги има хубави библиотеки за техните пробиви, използвах тяхната библиотека BMP3XX за сензора BMP388.
Основните изводи от моя дизайн са:
- Настройте I2C да се държи като клиентско устройство и да отговаря на адреса на висотомера Spektrum (0x12).
- Прочетете барометъра BMP388 чрез SPI.
- Запишете данните за височината в два различни буфера, така че I2C заявка от приемника да не повреди данните и да се редува между двата буфера при извличане на данните. Това гарантира, че данните, изпратени до приемника, винаги са пълни.
- Използва бутон за нулиране на висотомера.
За повече подробности и анализ на кода, гледайте видеото.
Стъпка 4: Свържете веригата
Използвах протоборд, но ако искате да отделите време за проектиране на персонализирана фрезована дъска, можете да направите веригата много по -чиста.
Свързах JST-XH конектора към I2C щифтовете на XIAO. Тъй като приемникът извежда 5 волта към телеметричната шина, положителният сигнал от шината отива към VCC щифта на XIAO. По този начин бордовият 3.3v регулатор се използва за захранване на сензора BMP388.
Стъпка 5: Компилирайте без буутлоудър
-
Намерете вашия файл files.txt (за каквато и дъска да използвате).
В моя случай той се намираше тук: C: / Users / AppData / Local / Arduino15 / packages / Seeeduino / hardware / samd / 1.7.7 / board.txt
-
Копирайте дъската си и преименувайте първия ключ, за да посочите версия без буутлоудъра. Току -що добавих _nbl към оригиналното име.
- Стар: seeed_XIAO_m0
- Ново: seeed_XIAO_m0_nbl
-
Променете стойността на.name:
- Стар: seeed_XIAO_m0_nbl.name = Seeeduino XIAO
- Ново: seeed_XIAO_m0_nbl.name = Seeeduino XIAO No Bootloader
-
Променете свързващото устройство, за да мига без буутлоудъра, като промените ld скрипта на builder:
- Стар: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with_bootloader.ld
- Ново: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with out _bootloader.ld
- Рестартирайте Arduino IDE.
- Изберете новата платка "Seeeduino XIAO No Bootloader" от менюто на дъските.
- Изберете „Експортиране на компилиран двоичен файл“
- След като бъде компилиран,.bin файлът ще бъде в папката на вашия проект Arduino.
Стъпка 6: Flash MCU с J-Link
Adafruit има фантастично ръководство за препрограмиране на буутлоудъра на устройство M0/M4. В нашия случай искаме да се отървем от буутлоудъра, но той работи по същия начин.
learn.adafruit.com/how-to-program-samd-boo…
След като направите това, няма да можете да качвате код през USB. Можете да следвате горното ръководство, за да прехвърлите буутлоудъра обратно на устройството, за да качите отново код през USB, както сте успели от фабриката.
Ръководството на Adafruit е много задълбочено, но това са основните стъпки:
-
Запоявайте проводниците на джъмпера към задната част на платката XIAO.
- Ръководството на Adafruit не казва, че RST щифтът на разглобяващата платка 2x5 трябва да бъде свързан към щифта за нулиране на платките Adafruit. Но за XIAO трябваше да се свържа и с четирите подложки на гърба на платката.
- Щифтът VREF трябва да бъде свързан към XIAO 3.3v щифт. Това казва на инструмента за отстраняване на грешки, че логиката на устройството е 3.3v. Без него, ако изберете грешна опция, можете да повредите микроконтролера.
- Свържете проводниците на джъмпера към J-Link.
- Включете платката XIAO с USB кабел.
- Отворете студио Atmel.
- Изберете Инструменти Програмиране на устройства
- Изберете вашата M0 платка. В този случай ATSAMD21G18A
- Изберете SWD.
- Прочетете конфигурацията от целта.
- Ако използвате EDU J-Link, приемете условията за ползване (ако спазвате условията за ползване).
- Проверете дали напрежението на отчитане е правилно в горния десен ъгъл. Ако не е 3.3v, можете да счупите дъската си!
- Изчистете предпазителя за защита при зареждане (задайте размера на буутлоудъра на 0 байта) и след това изберете програма.
- В секцията спомени изберете вашия компилиран.bin или.hex файл и изберете програма.
Отстраняване на неизправности:
Когато четете конфигурацията на устройството, ако получите грешка в напрежението извън обхвата, уверете се, че MCU е включен в захранването и че щифтът J-Link VREF е свързан към 3,3 волта
Стъпка 7: Прекомпилирайте без външен кристал
Платката XIAO има външен кристал, чието стартиране отнема много време. Приемникът Spektrum открива устройство на телеметричната шина 350 милисекунди след включване, така че трябва да кажем на компилатора да използва вместо това вътрешния осцилатор, което ще направи стартирането почти мигновено.
- Намерете файла Board.txt, който сте променили по -рано (да, можех да ви спестя тази стъпка по -рано, но това беше процес на обучение за мен)
- Добавете „-DCRYSTALLESS“към низа seeed_XIAO_m0_nbl.build.extra_flags. Това ще каже на компилатора да използва вътрешния осцилатор.
- Прекомпилирайте кода.
- Повторно мигане на MCU.
- Проверете дали времето за стартиране е достатъчно бързо с помощта на осцилоскоп.
Както можете да видите от снимката, жълтият канал 1 е захранването. Циановият канал 2 е готовият щифт на микроконтролера. Около 10 милисекунди след включване, втори канал се изтегля високо от микроконтролера, което показва, че е в контура за настройка. След като настройката приключи, MCU се кодира, за да издърпа щифта ниско, което показва, че основният контур започва. Обхватът показва, че настройката отнема около 3 милисекунди. Като цяло микроконтролерът отнема 13 милисекунди след включването, за да бъде готов за работа.
Препоръчано:
Създаване на съвместим хуманоиден робот: 11 стъпки
Създаване на съвместим хуманоиден робот: Актуализиране & Страница: 17.1.2021 Глава, Лице и т.н. - добавена уеб камераTendons & Мускули - добавки с PTFE Нерви & Кожа - резултатите от проводящата гума "Какво е това нещо на снимката?" Това е част от роботизирано тяло - по -специално прототип spi
Ardubuino (съвместим с Arduboy клон): 5 стъпки
Ardubuino (съвместим с Arduboy клон): Arduboy е конзола за игри с отворен код с размер на кредитна карта, която има активна общност не само в софтуера си, където много хора разработват собствена игра за платформата, но и в хардуера, където има и много хората са измислили
DIY Arduino-съвместим клон: 21 стъпки (със снимки)
DIY Arduino-съвместим клон: Arduino е най-добрият инструмент в арсенала на Maker. Трябва да можете да създадете свой собствен! В първите дни на проекта, около 2005 г., дизайнът беше изцяло на части и комуникацията беше чрез RS232 сериен кабел. Файловете все още са
Евтин, съвместим с Arduino робот за рисуване: 15 стъпки (със снимки)
Евтин, съвместим с Arduino робот за рисуване: Забележка: Имам нова версия на този робот, който използва печатна платка, е по-лесен за изграждане и има откриване на IR препятствия! Проверете го на http://bit.ly/OSTurtle Проектирах този проект за 10-часов семинар за ChickTech.org, чиято цел е да
UDuino: Много ниска цена Arduino съвместим съвет за разработка: 7 стъпки (със снимки)
UDuino: Много ниска цена Arduino съвместим съвет за разработка: Arduino дъските са чудесни за прототипиране. Те обаче стават доста скъпи, когато имате няколко едновременни проекта или се нуждаете от много контролни платки за по -голям проект. Има някои страхотни, по -евтини алтернативи (Boarduino, Freeduino), но