Съдържание:
- Консумативи
- Стъпка 1: Преследването …
- Стъпка 2: Първи стъпки - Настройка на Arduino -Breadboard
- Стъпка 3: Свържете LV-MaxSonar-EZ
- Стъпка 4: Свържете HC-SR04
- Стъпка 5: Свържете селектора на опциите „HC-SR04“
- Стъпка 6: Накарайте всичко да работи…
- Стъпка 7: Оформление на проекта
- Стъпка 8: Въвеждане на код…
- Стъпка 9: Софтуерно-сериен Arduino …
- Стъпка 10: Код - Настройка
- Стъпка 11: Код - Цикъл
- Стъпка 12: Код - Активирайте MaxSonar. Прочетете стойността на PW
- Стъпка 13: Код - Прочетете серийната стойност на MaxSonar
- Стъпка 14: Код - Прочетете MaxSonar аналогова стойност
- Стъпка 15: Код - Задействайте и прочетете HC -SR04
- Стъпка 16: Код - Поддръжка на сериен плотер на Arduino IDE
- Стъпка 17: Код - отстраняване на грешки …
- Стъпка 18: Заключение
- Стъпка 19: Алтернативна MaxSonar връзка (използваща 180 ° заглавка)
- Стъпка 20: Arduino код
Видео: Сравняване на сонарни далекомери LV-MaxSonar-EZ и HC-SR04 с Arduino: 20 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:51
Намирам, че много проекти (особено роботи) изискват или могат да се възползват от измерването на разстоянието до обект в реално време. Сонарните далекомери са сравнително евтини и могат лесно да бъдат свързани към микроконтролер като Arduino.
Този Instructable сравнява две лесни за придобиване сонарни далекомери, показвайки как да ги свържете с Arduino, какъв код е необходим за четене на стойности от тях и как те „се измерват“един с друг в различни ситуации. От това се надявам, че ще получите представа за плюсовете и минусите на двете устройства, които ще ви помогнат да използвате най -подходящото устройство в следващия си проект.
Исках да сравня изключително популярното устройство HC-SR04 (бъг-око) с по-рядкото устройство LV-MaxSonar-EZ, за да видя кога може да искам да използвам едно, а не другото. Исках да споделя моите открития и настройка, за да можете да експериментирате с двете и да решите кое да използвате в следващия си проект.
Защо тези двамата…
Защо HC-SR04? „Bug-Eye“HC-SR04 е изключително популярен-по няколко причини:
- Той е евтин - 2 долара или по -малко, ако се купува на едро
- Той е сравнително лесен за взаимодействие
- Много, много проекти го използват - така че е добре познат и добре разбран
Защо LV-MaxSonar-EZ?
- Свързването с него е много лесно
- Той има добър/лесен форм-фактор за включване в проект
- Той има 5 версии, които отговарят на различни изисквания за измерване (вижте листа с данни)
- Той (обикновено) е много по-точен и надежден от HC-SR04
- Той е достъпен - от 15 до 20 долара
Освен това се надявам да намерите частички в кода на Arduino, който написах за сравнението, полезен във вашите проекти, дори извън приложенията за търсене на обхват.
Предположения:
- Запознати сте с Arduino и Arduino IDE
- Arduino IDE е инсталиран и работи на предпочитаната от вас машина за разработка (PC/Mac/Linux)
- Имате връзка от IDE на Arduino към вашия Arduino, за да качвате и стартирате програми и да комуникирате
Има инструкции и други ресурси, които да ви помогнат при това, ако е необходимо.
Консумативи
- HC-SR04 далекомер "Bug-Eye"
- LV-MaxSonar-EZ (0, 1, 2, 3, 4-използвам „1“, но всички версии имат един и същ интерфейс)
- Arduino UNO
- Непояна дъска
- Pin Header - 7 пинов 90 ° (за устройството MaxSonar вижте * по -долу за използване на 180 °)
- Джампер от лентов кабел - 5 жичен, мъжки -мъжки
- Джампер от лентов кабел - 2 жичен, мъжки -мъжки
- Джъмпер тел - мъжки -мъжки
- Кабел за свързване - червен и черен (за захранване от Arduino до макет и платка към устройства)
- Компютър с Arduino IDE и USB кабел за свързване към Arduino UNO
* MaxSonar не се доставя със заглавка, така че можете да използвате заглавка, която е най -подходяща за вашия проект. За този Instructable използвах 90 ° заглавка, за да улесня включването в платката. В някои проекти 180 ° (прав) заглавие може да е по -добре. Включвам снимка, за да покажа как да го свържете, така че да не се налага да ги превключвате. Ако предпочитате да използвате заглавка на 180 °, ще ви е необходим допълнителен 7-жилен мъжки-женски лентов кабелен джъмпер, за да се свържете, както показва моята снимка.
Хранилище на Git Hub: Файлове на проекти
Стъпка 1: Преследването …
Преди да се впуснем в детайлите как да свържем нещата, за да можете сами да експериментирате с тези две фантастични устройства, исках да опиша няколко неща, с които се надявам, че този Instructable ще ви помогне.
Тъй като устройството MaxSonar е по-малко използвано и по-малко разбираемо в сравнение с устройството HC-SR04, исках да покажа:
- Как да свържете устройството MaxSonar към микроконтролер (в този случай Arduino)
- Как да правите измервания от различните изходи на устройството MaxSonar
- Сравнете свързването на устройството MaxSonar с устройството HC-SR04
- Тествайте способността да измервате разстоянието на обекти с различни повърхности
- Защо можете да изберете едно устройство пред другото (или да използвате и двете в тандем)
Надявам се, че този Instructable ви помага в това преследване …
Стъпка 2: Първи стъпки - Настройка на Arduino -Breadboard
Ако сте правили прототипи с Arduino, вероятно вече имате настройка на Arduino-Breadboard, която ви е удобна. Ако е така, сигурен съм, че можете да го използвате за тази инструкция. Ако не, ето как съм настроил моя - не се колебайте да го копирате за този и бъдещите проекти.
- Прикачвам Arduino UNO и малка безжична платка към 3-3/8 "x 4-3/4" (8.6 x 12.0 cm) парче пластмаса с гумени крачета на дъното.
- Използвам червен и черен 22-AWG свързващ проводник, за да свържа +5V и GND от Arduino към разпределителната лента за захранване
- Включвам 10 µF танталов кондензатор върху разпределителната лента за заземяване, за да помогна за намаляване на шума на захранването (но този проект не го изисква)
Това осигурява хубава платформа, с която е лесно да се създава прототип.
Стъпка 3: Свържете LV-MaxSonar-EZ
С 90 ° заглавка, запоена върху устройството MaxSonar, е лесно да го включите в макетната платка. След това 5 -пиновият лентов кабел свързва MaxSonar към Arduino, както се вижда на диаграмата. В допълнение към лентовия кабел използвам къси парчета червен и черен свързващ проводник от шината за разпределение на захранването, за да осигуря захранване на устройството.
Електрически инсталации:
MaxSonar | Arduino | Цвят |
---|---|---|
1 (ЧБ) | Захранване-GND | Жълто |
2 (PW) | Цифров-5 | Зелено |
3 (AN) | Аналог-0 | Син |
4 (RX) | Цифров-3 | Лилаво |
5 (TX) | Цифров-2 | Сив |
6 (+5) | +5 BB-PWR релса | червен |
7 (GND) | GND BB-PWR релса | Черен |
Забележка:
Не позволявайте на броя на връзките, използвани в тази инструкция, да ви попречат да вземете предвид MaxSonar за вашия проект. Този Instructable използва всички опции на интерфейса MaxSonar, за да илюстрира как работят и да ги сравнява помежду си и с устройството HC-SR04. За дадена употреба (използвайки една от опциите на интерфейса) един проект обикновено ще използва един или два от интерфейсните щифтове (плюс захранване и заземяване).
Стъпка 4: Свържете HC-SR04
HC-SR04 обикновено се доставя с 90 ° заглавка, която вече е прикрепена, така че е лесно да го включите в макета. 2-пиновият лентов кабел след това свързва HC-SR04 към Arduino, както се вижда на диаграмата. В допълнение към лентовия кабел използвам къси парчета червен и черен свързващ проводник от шината за разпределение на захранването, за да осигуря захранване на устройството.
HC-SR04 | Arduino | Цвят |
---|---|---|
1 (VCC) | +5 BB-PWR релса | червен |
2 (TRIG) | Цифров-6 | Жълто |
3 (ECHO) | Цифров-7 | Оранжево |
4 (GND) | GND BB-PWR релса | Черен |
Стъпка 5: Свържете селектора на опциите „HC-SR04“
Когато стартирах този проект, намерението ми беше просто да тествам различните опции за интерфейс на устройството MaxSonar. След като го стартирах и реших, реших, че би било хубаво да го сравня с вездесъщото устройство HC-SR04 (bugeye). Исках обаче да мога да стартирам/тествам без включено, затова добавих опция/тест в кода.
Кодът проверява входния щифт, за да види дали устройството HC-SR04 трябва да бъде включено в показанията за измерване и изхода.
На диаграмата това е показано като превключвател, но на макета просто използвам джъмпер проводник (както се вижда на снимките). Ако проводникът е свързан към GND, HC-SR04 ще бъде включен в измерванията. Кодът „издърпва“(прави входа висок/истинен) в Arduino, така че ако не е изтеглен ниско (свързан към GND), HC-SR04 няма да бъде измерен.
Въпреки че този Instructable се превърна в сравнение на двете устройства, реших да го оставя на място, за да илюстрирам как можете да включите/изключите различни устройства/опции във вашия проект.
Платка | Arduino | Цвят |
---|---|---|
GND BB-PWR релса | Цифров-12 | Бял |
Стъпка 6: Накарайте всичко да работи…
Сега, когато всичко е свързано - време е да накараме нещата да работят!
Както бе споменато в „Предположения“- няма да обяснявам как работи Arduino IDE или как да програмирате Arduino (подробно).
Следващите раздели разбиват кода на Arduino, включен в този проект.
Моля, разархивирайте пълния архив на място, което използвате за вашата разработка на Arduino. Заредете кода `MaxSonar-outputs.ino` във вашата Arduino IDE и нека започнем!
Стъпка 7: Оформление на проекта
Проектът съдържа информация за устройството LV-MaxSonar-EZ, електрическата схема, README и кода на Arduino. Схемата е във формат Fritzing, както и-p.webp
Стъпка 8: Въвеждане на код…
В този Instructable не мога да премина през всеки аспект на кода. Обхващам някои от детайлите на високо ниво. Препоръчвам ви да прочетете коментара от най-високо ниво в кода и да се впуснете в методите.
Коментарите предоставят много информация, която няма да повтарям тук.
Има няколко неща, които искам да посоча в кода за „настройка“…
- Операторите `_DEBUG_OUTPUT` - променливи и #define
- Определения на „щифтовете“на Arduino, използвани за интерфейса
- Определения на коефициентите на преобразуване, използвани при изчисленията
Отстраняването на грешки се използва в целия код и ще покажа как може да се включва/изключва динамично.
„Дефинициите“се използват за щифтовете и преобразуванията на Arduino, за да улеснят използването на този код в други проекти.
Отстраняване на грешки …
Разделът „Отстраняване на грешки“дефинира променлива и някои макроси, които улесняват включването на информация за отстраняване на грешки в серийния изход при поискване.
Логическата променлива `_DEBUG_OUTPUT` е зададена на false в кода (може да бъде зададена на true) и се използва като тест в макросите` DB_PRINT … `. Може да се променя динамично в кода (както се вижда в метода `setDebugOutputMode`).
Глобали…
След дефинициите кодът създава и инициализира няколко глобални променливи и обекти.
- SoftwareSerial (вижте следващия раздел)
- _loopCount - Използва се за извеждане на заглавка на всеки 'n' ред
- _inputBuffer - Използва се за събиране на сериен/терминален вход за опции за обработка (отстраняване на грешки вкл./изкл.)
Стъпка 9: Софтуерно-сериен Arduino …
Една от опциите на интерфейса MaxSonar е сериен поток от данни. Въпреки това, Arduino UNO осигурява само единична серийна връзка за данни и тя се използва/споделя с USB порта за комуникация с Arduino IDE (хост компютър).
За щастие, има библиотечен компонент, включен в Arduino IDE, който използва чифт Arduino цифрово-I/O пинове за реализиране на сериен-i/o интерфейс. Тъй като серийният интерфейс на MaxSonar използва 9600 BAUD, този „софтуерен“интерфейс е напълно способен да управлява комуникацията.
За тези, които използват Arduino-Mega (или друго устройство, което има множество HW серийни портове), не се колебайте да коригирате кода, за да използвате физически сериен порт и да премахнете нуждата от SW-Serial.
Методът „setup“инициализира интерфейса „SoftwareSerial“, който да се използва с устройството MaxSonar. Необходим е само прием (RX). Интерфейсът е „обърнат“, за да съответства на изхода на MaxSonar.
Стъпка 10: Код - Настройка
Както е описано по -горе, методът „setup“инициализира интерфейса „SoftwareSerial“, както и физическия сериен интерфейс. Той конфигурира I/O пиновете на Arduino и изпраща заглавка.
Стъпка 11: Код - Цикъл
Кодът `loop 'преминава през следното:
- Изведете заглавка (използва се за отстраняване на грешки и плотер)
- Задействайте MaxSonar, за да направите измерване
- Прочетете стойността на MaxSonar Pulse-Width
- Прочетете стойността на MaxSonar Serial-Data
- Прочетете аналоговата стойност на MaxSonar
-
Проверете опцията „HC-SR04“и ако е активирана:
Спуснете и прочетете устройството HC-SR04
- Изведете данните във формат, разделен с раздели, който може да се използва от серийния плотер
- Изчакайте, докато изтече достатъчно време, за да може да се направи друго измерване
Стъпка 12: Код - Активирайте MaxSonar. Прочетете стойността на PW
MaxSonar има два режима: „задействан“и „непрекъснат“
Този Instructable използва „задействан“режим, но много проекти могат да се възползват от използването на „непрекъснат“режим (вижте листа с данни).
Когато използвате режима „задействане“, първият валиден изход е от изхода Pulse-Width (PW). След това останалите изходи са валидни.
`TiggerAndReadDistanceFromPulse` пулсира задействащия щифт на устройството MaxSonar и отчита получената стойност на разстоянието на ширината на импулса
Имайте предвид, че за разлика от много други сонарни устройства, MaxSonar се справя с преобразуването в двете посоки, така че разчетеното разстояние е разстоянието до целта.
Този метод също забавя достатъчно дълго време, за да бъдат валидни другите изходи на устройството (сериен, аналогов).
Стъпка 13: Код - Прочетете серийната стойност на MaxSonar
След задействане на MaxSonar (или когато е в режим „непрекъснат“), ако опцията за сериен изход е активирана (чрез контрола „BW - Pin -1“), се изпраща сериен поток от данни под формата „R nnn“чрез ВРЪЩАНЕ НА КАРИАР '\ r'. 'Nnn' е стойността на инчовете към обекта.
Методът „readDistanceFromSerial“чете серийните данни (от софтуерния сериен порт) и преобразува стойността „nnn“в десетична. Той включва безопасно изчакване, само в случай, че не е получена серийна стойност.
Стъпка 14: Код - Прочетете MaxSonar аналогова стойност
Аналоговият порт MaxSonar непрекъснато осигурява изходно напрежение, пропорционално на последното измерено разстояние. Тази стойност може да бъде прочетена по всяко време след инициализиране на устройството. Стойността се актуализира в рамките на 50 mS от последното отчитане на разстоянието (задействан или непрекъснат режим).
Стойността е (Vcc/512) на инч. Така че, с Vcc от Arduino от 5 волта, стойността ще бъде ~ 9.8mV/in. Методът "readDistanceFromAnalog" чете стойността от аналоговия вход на Arduino и я преобразува в "инчова" стойност.
Стъпка 15: Код - Задействайте и прочетете HC -SR04
Въпреки че има библиотеки за четене на HC-SR04, открих, че някои от тях са ненадеждни с различни устройства, с които съм тествал. Открих, че кодът, който съм включил в метода `sr04ReadDistance`, е прост и по-надежден (колкото е възможно и евтиното устройство HC-SR04).
Този метод задава и след това задейства устройството HC-SR04 и след това чака да измери ширината на обратния импулс. Измерването на ширината на импулса включва изчакване за справяне с проблема с HC-SR04 с много дълга продължителност на импулса, когато той не може да намери цел. Предполага се, че ширината на импулса, по -голяма от целевото разстояние от ~ 10 фута, не е обект или обект, който не може да бъде разпознат. Ако времето за изчакване е достигнато, стойността „0“се връща като разстоянието. Това „разстояние“(ширина на импулса) може да се регулира с помощта на стойностите #define.
Ширината на импулса се преобразува в кръгово разстояние, преди да се върне като разстоянието до обекта.
Стъпка 16: Код - Поддръжка на сериен плотер на Arduino IDE
Сега за изхода!
Методът `loop 'задейства събирането на измерването на разстоянието от двете устройства - но какво да правим с него?
Е, разбира се, ще го изпратим, за да може да се види на конзолата - но ние искаме повече!
Arduino IDE също осигурява интерфейс за сериен плотер. Ще използваме това, за да предоставим графика в реално време на разстоянието до нашия обект от изходите на двете ни устройства.
Серийният плотер приема заглавка, която съдържа етикети на стойности и след това множество редове с разделени стойности, които да бъдат нанесени като графика. Ако стойностите се извеждат редовно (веднъж на всеки „толкова секунди“), графиката осигурява визуализация на разстоянието до обекта във времето.
Методът „loop“извежда трите стойности от MaxSonar и стойността от HC-SR04 във формат, разделен с табулатори, който може да се използва със серийния плотер. Веднъж на всеки 20 реда извежда заглавката (само в случай, че серийният плотер е активиран в средата на потока).
Това ви позволява да визуализирате разстоянието до препятствието, а също и да видите разликата в стойностите, върнати от двете устройства.
Стъпка 17: Код - отстраняване на грешки …
Отстраняването на грешки е необходимост. Как можете да проследите проблем, когато нещо не работи според очакванията?
Първият ред на разбиране често са някои „прости“текстови изходи, които могат да показват какво се случва. Те могат да бъдат добавени към кода, когато и където е необходимо за проследяване на проблем, и след това да бъдат премахнати, след като проблемът бъде решен. Добавянето и премахването на кода обаче отнема много време и само по себе си може да доведе до други проблеми. Понякога е по -добре да можете да го активирате и деактивирате динамично, като оставите изходния код сам.
В тази инструкция съм включил механизъм за активиране и деактивиране на отстраняване на грешки на отчети за печат (сериен изход) динамично от вход, прочетен от Arduino IDE Serial Monitor (в предстоящо издание серийният плотер се очаква да предостави и този вход).
Логиката `_DEBUG_OUTPUT` се използва в редица #define методи за печат, които могат да се използват в кода. Стойността на променливата _DEBUG_OUTPUT се използва за разрешаване на печат (изпращане на изход) или не. Стойността може да се променя динамично в кода, както прави методът `setDebugOutputMode`.
Методът `setDebugOutputMode` се извиква от` цикъла` въз основа на вход, получен от сериен вход. Входът се анализира, за да се види дали съответства на „отстраняване на грешки вкл./Изкл.
Стъпка 18: Заключение
Надявам се тази проста хардуерна настройка и примерният код да ви помогнат да разберете разликите между устройствата HC-SR04 и LV-MaxSonar-EZ. И двете са много лесни за използване и вярвам, че всеки има своите предимства. Знанието кога да използвате един, а не друг може да бъде от полза за успешен проект.
BTW-Намекнах за много лесен за използване начин за точно измерване на разстоянието до обект с помощта на LV-MaxSonar-EZ … Можете да използвате аналоговия изход (един проводник) и режима на непрекъснато измерване, за да прочетете разстоянието, когато е необходимо, като използвате простото код в `readDistanceFromAnalog` директно от аналоговия вход на Arduino. Един проводник и (кондензиран) един ред код!
Стъпка 19: Алтернативна MaxSonar връзка (използваща 180 ° заглавка)
Както споменах, MaxSonar не идва със свързан заглавие. Така че можете да използвате всяка връзка, която е най -подходяща за вашия проект. В някои случаи 180 ° (права) заглавка може да бъде по -подходяща. Ако случаят е такъв, исках бързо да покажа как можете да го използвате с този Instructable. Тази илюстрация показва MaxSonar с права заглавка, свързана към макетната платка с мъжки-женски лентов кабел и след това свързана към Arduino, както е описано в останалата част на статията.
Стъпка 20: Arduino код
Кодът на Arduino е в папката „MaxSonar-outputs“на проекта в сравнение на сонарния обхват
Препоръчано:
LED светлина (и) със захранване от батерията със слънчево зареждане: 11 стъпки (със снимки)
LED светлини (и), захранвани от батерии, със слънчево зареждане: Жена ми учи хората как да правят сапун, повечето от часовете й бяха вечер и тук през зимата се стъмва около 16:30 ч. Някои от нейните ученици имаха проблеми с намирането на нашите къща. Имахме табела отпред, но дори и с улично осветление
Лек хак за стая със зрителни увреждания със слухови увреждания: 7 стъпки (със снимки)
Лек хак на стаята със слухови увреждания на вратата: Проблем: баща ми е регистриран като глух, а майка ми е с увреден слух и поради това често им е трудно да чуят звънеца на вратата. Това би могло да бъде проблем, претърпян и от много други.Купиха мигащ светлинен звънец на вратата, за да им помогнат с
Сонарни слушалки: 6 стъпки
Слушалки за сонар: Тази слушалка за сонар позволява на потребителя да „вижда“обекти на ниво глава, използващи ултразвуков сензор и зумер. В медиите често виждате тропа на мъдър слеп монах, който изглежда може да се ориентира перфектно без зрение. Това вдъхновява
Висящи бижута със слънчево захранване на сърцето със светкавици: 11 стъпки (със снимки)
Висящи бижута със слънчево захранване за сърце: Тази инструкция е за сърце със слънчева енергия с пулсиращ червен светодиод. Той измерва около 2 " до 1,25 ", включително USB раздела. Той има една дупка през горната част на дъската, което улеснява окачването. Носете го като огърлица, обеци, връзки на щифт
Персонализиран часовник със стрелки за снимки: 5 стъпки (със снимки)
Персонализиран часовник със стрелки за снимки: Някои хора наблюдават часовника. Сега всеки може да бъде часовник. Други проекти персонализират лицето на часовника. Този персонализира стрелките на часовника. Изглежда скъп, но е по -малко от 5 долара и около 30 минути на часовник. Перфектен за Chr