Съдържание:
- Стъпка 1: Проектиране на функционалността на проекта
- Стъпка 2: Настройка и диаграма на проводника
- Стъпка 3: Тестване на компоненти и основен код
- Стъпка 4: Калибриране на MPU
- Стъпка 5: Окончателен код
Видео: Цифров компас и търсач на курса: 6 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:49
Автори:
Кълън Уилън
Андрю Луфт
Блейк Джонсън
Благодарности:
Калифорнийска морска академия
Еван Чанг-Сиу
Въведение:
Основата на този проект е цифров компас с проследяване на заглавията. Това позволява на потребителя да следва посока на дълги разстояния с помощта на цифров апарат. Разговорно заглавието е ъгъл, измерен по посока на часовниковата стрелка от север, който се счита за нула градуса, както е посочено от компаса. Устройството има две основни функции: първата е показване на текущото заглавие на устройството върху справка за цифров дисплей, а втората е възможността за въвеждане на заявена от потребителя заглавка, която ще се показва на пръстен от светодиоди в горната част на корпус на компас. След това потребителят ще регулира ориентацията на устройството, свързана със светещия светодиод. С промяната на посоката на устройството светодиодът ще се придвижва към централния светодиод, като по този начин показва, че е установено правилното заглавие.
Консумативи:
- DIYmall 6M GPS модул
- HiLetgo MPU9250/6500 9-ос 9 DOF 16 бита
- Пръстен Adafruit NeoPixel 16
- MakerFocus 4бр 3.7V литиева акумулаторна батерия
- дъска ELEGOO MEGA 2560 R3
- Adafruit Mini Lipo w/Mini -B USB жак - USB LiIon/LiPoly зарядно устройство - v1
- 2.8 TFT LCD с тъчскрийн пробивна платка с гнездо за MicroSD
Стъпка 1: Проектиране на функционалността на проекта
Първата стъпка е разбирането на логиката и окончателната оперативна функционалност. Тази логическа диаграма изобразява трите състояния на устройството и двете състояния на сензора.
Състояние 1: Състояние на зареждане
Състоянието на зареждане се използва, за да позволи на Arduino Mega да получи данни от двата сензора при стартиране. Устройството ще покаже натоварването на екрана, ще изчисти всички стойности на числото на екрана, а светодиодите на пръстена NeoPixel ще светнат в кръг.
Състояние 2: Режим на компас
В това състояние устройството ще действа като цифров компас. Пръстенът NeoPixel ще светне, за да посочи посоката на север по отношение на ориентацията на устройството. Истинското заглавие на устройството също ще бъде показано на LCD екрана заедно с географската ширина и дължина на устройството. Също така в това състояние потребителят ще може да въведе заглавието на потребителя, което да се показва в състояние 3.
Състояние 3: Режим на проследяване на заглавие
В това състояние устройството вече ще помогне на потребителя да се установи на желаната от него позиция. Устройството вече ще показва курса на устройствата и заглавията на потребителите на LCD екрана заедно с данните за географската ширина и дължина. Пръстенът NeoPixel сега ще светне, за да посочи посоката на потребителите по отношение на ориентацията на устройствата.
Както в състояние 2, така и в състояние 3 има две състояния на сензора, които позволяват на устройството да извлича данни от сензора, който предоставя най -точните данни в зависимост от експлоатационното състояние на устройството.
Състояние на сензора 1: MPU
Ако устройството не се движи, данните от заглавието ще бъдат изтеглени от MPU, тъй като това са най -точните данни, когато устройството не се движи.
Състояние на сензора 2: GPS
Ако устройството се движи, данните за заглавието ще бъдат изтеглени от GPS чипа, тъй като това са най -точните данни в това състояние.
Устройството може да превключва между тези състояния на сензора по всяко време, за да отчете условията на използване на променящия се уред. Това е важно за работата на устройството, тъй като и двата сензора, използвани в устройството, имат условия, които влияят върху точността на предоставените от тях данни. В случая на MPU чипът може лесно да бъде повлиян от локални магнитни полета, причинени от автомобили и метални строителни материали в сгради. По този начин се използва GPS чип, който може да осигури много по -точна позиция, която не се влияе от същите влияния. Въпреки това, GPS може да предоставя данни само за посоката, когато се движи, тъй като изчислява посоката, като използва промяната в данните за географската ширина и дължина. Следователно чиповете се допълват взаимно и с помощта на двете състояния на сензора осигуряват най -точната и надеждна функционалност на устройството.
Стъпка 2: Настройка и диаграма на проводника
Проектът използва и дъска за клониране на Arduino Mega, подобна на горната дъска. Всички компоненти в проекта ще бъдат свързани към тази платка. По -горе са подробни схеми за това как да свържете компонентите за този проект. Бутоните нямат подробна схема, тъй като те могат да бъдат настроени по много начини. В този проект те използват 100K издърпващ резистор и обикновен бутон за изпращане на 3 -волтов сигнал към назначения му пин.
Стъпка 3: Тестване на компоненти и основен код
Проектът ще извлича данни както от MPU, така и от GPS чипа, както е описано по -рано. Прикачени са три кода, които позволяват тестване на данни от MPU, GPS и MPU с екран за проверка на функционалността на частите. Важно е да се задействат компонентите на този етап, тъй като кодът е отделен за всеки чип и всички проблеми могат да бъдат решени без страх да не причинят непредвидени грешки в крайния код.
Задължителни библиотеки:
Adafruit_ILI9341_Albert.h
SPI.h
Adafruit_GFX.h
Adafruit_ILI9341.h
TinyGPS ++. H
Adafruit_NeoPixel.h
MPU9250.h
Всичко това може да бъде намерено чрез търсене в заглавията по -горе. Няма да публикувам връзки, тъй като има много копия на тези библиотеки от множество източници и придържайки се към стандарта на общността за свързване само с оригинали, ще ви позволя да ги намерите сами.
Стъпка 4: Калибриране на MPU
Заглавието, открито чрез MPU в състояние 2 и състояние 3, беше разделено на четири квадранта. Това беше необходимо, защото нашият метод за калибриране изискваше намирането на минималната и максималната величини от магнитометъра по осите му x и y. Това стана чрез завъртане на устройството на случаен принцип около трите му оси, без никакви значителни електромагнитни полета, различни от това на Земята. След това взехме минималните и максималните стойности по оста x и y и ги включихме в уравнение за мащабиране, за да ограничим величините между стойностите на отрицателни единица и единица. На горната фигура BigX и BigY са максималните стойности на данните от магнитометъра съответно по оста x и y, LittleX и LittleY са минималните стойности на данните от магнитометъра по х и y съответно, IMU.getMagX_uT () и IMU.getMagY_uT () са стойностите, които се изтеглят от магнитометъра по всяко време по оста x и y съответно, а Mx и My са новите мащабирани стойности, използвани за изчисляване на заглавието.
Стъпка 5: Окончателен код
Последната стъпка е създаването на окончателния код. Приложих копие от окончателния код на проектите. В рамките на бележките са направени, за да се улесни навигацията в кода. Най -голямото предизвикателство на този раздел беше да накарате квадрантите да работят правилно. Изпълнението на квадрантите се оказа по-досадно и противоречиво на логиката, отколкото бихме могли да очакваме. Първоначално внедрихме основен арктан (My/Mx) и след това преобразувахме от радиани в градуси, тъй като Arduino извежда в радиани по подразбиране. Единственият квадрант, в който работи, беше от 90 градуса до 180 градуса, което ни даде отрицателен резултат и в крайна сметка беше квадрант III. Решението на това приемаше абсолютната стойност, тъй като все още се увеличаваше правилно. След това тази стойност беше извадена от 360, за да светне правилния светодиод NeoPixel в състояние 2 и подобна математическа операция беше използвана в състояние 3 въз основа на това дали заглавието е по -голямо или по -малко от заглавието на потребителя, и двете могат да се видят в горния код. На горните фигури Heading съответства на NeoPixel светлината, която ще светне въз основа на разликата между заглавието на устройството и отклонението от север в случай на състояние 2 и от това на заглавието на потребителя. В този случай 90 до 180 градуса съответстват на квадрант III. И в двата случая tft.print кара екрана да чете посоката на устройството от север.
За другите три квадранта внедряването на arctan (My/Mx) доведе до инверсия на инкрементацията при завъртане на устройството, т.е. Решението на този проблем беше да обърнем арктангенса до формата на арктан (Mx/My). Въпреки че това реши инверсията на увеличаване, то не даде правилното заглавие на устройството, където се появиха квадрантите. Простото решение за това беше добавянето на промяна въз основа на съответния квадрант. Това може да се види на следващите фигури, които отново са парчета код от състояния 2 и 3 от всеки квадрант.
Първият оператор if се извършва, ако заглавието, изчислено чрез уравнението на MPU, е по -голямо от заглавието на потребителя. При това условие входната заглавие на потребителя се добавя към заглавието на устройството и съответната стойност се изважда от 360. Ако се изпълнява операторът else, уравнението на заглавието на MPU се изважда от входното заглавие на потребителя. Тези условия бяха приложени с цел не само да се получи точна стойност за NeoPixel, но и да се избегне получаване на стойност извън допустимия диапазон, който е от 0 до 359 градуса.
Препоръчано:
Как да съборите цифров апарат и как работи цифров апарат: 4 стъпки
Как да съборите цифров апарат и как работи цифров апарат: Много хора знаят как да използват шублери за измерване. Този урок ще ви научи как да съборите цифров шублер и обяснение как работи цифровият апарат
ESPcopter и Visuino - Конвертирайте курса на компаса в 3D ъгъл: 6 стъпки
ESPcopter и Visuino - Конвертирайте заглавието на компаса в 3D ъгъл: ESPcopter сега се поддържа изцяло от най -новата версия на Visuino и това го прави може би най -лесното програмиране на безпилотни самолети, които съществуват! :-) С поддръжката на Visuino можете да управлявате двигателите, LED, работи с акселерометър, Gyr
Цифров компас с помощта на магнитометър Arduino и HMC5883L: 6 стъпки
Цифров компас, използващ магнитометър Arduino и HMC5883L: Здравейте, момчета, Този сензор може да посочи географския север, юг, изток и запад, ние хората също бихме могли да го използваме, когато е необходимо. Така. В тази статия нека се опитаме да разберем как работи сензорът за магнитометър и как да го свържем с микроконтролер
Как да използвате модул GY511 с Arduino [Направете цифров компас]: 11 стъпки
Как да използваме модул GY511 с Arduino [Направете цифров компас]: Общ преглед В някои проекти за електроника трябва всеки момент да знаем географското местоположение и съответно да извършим конкретна операция. В този урок ще научите как да използвате модула за компас LSM303DLHC GY-511 с Arduino за направата на цифрови компаси
Проект за цифров компас на Arduino: 3 стъпки
Проект за цифров компас на Arduino: Здравейте! В тази инструкция ще видите как можете да направите цифров компас, използвайки Arduino и IDE за обработка. Това е доста прост, но интересен и готин Arduino проект. Можете да гледате демонстрационния пример на този урок във видеото