Pull to refresh

Датчик движения для переключения радиостанций — часть I

Reading time 7 min
Views 21K
Привет, Хабр! Из этого текста ты поймёшь, что я стала читать «Юного радиолюбителя» и влюбилась в эту книгу и её автора, и теперь очень хочу сделать что-то похожее для тех, кто делает первые шаги с Ардуино — чтобы это было просто и понятно.


Принцип эхолокации для определения расстояния до объекта положен в основу датчика движения, который мы будем использовать.

Надеюсь, статья будет интересна не только новичкам, но также сэкономит время и более продвинутым пользователям, так как я постаралась собрать в одном месте информацию по ультразвуковому дальномеру, включая даташиты, ТТХ, спеки, иллюстрации и библиотеки из различных источников.

В прошлом посте мы почти машинально собрали пару шилдов и перепрограммировали наш МК под одну и под другую. Это было не сложнее, чем загрузить новую песню в плеер. Таким образом, мы узнали, как в принципе можно играть с этим конструктором, и можем так играть и дальше, меняя уже готовые шилды и скетчи. Но хочется собрать что-то своё.

Так что давайте попробуем почти всерьёз и без страха взглянуть в глаза схемотехнике и программированию, и самостоятельно добавить дополнительный датчик в готовую схему. За всё время текста вам придётся примерно на 10 секунд взять в руки паяльник, извините если что.

Что мы узнаем по ходу сборки нового устройства:
1. Как прочитать готовую схему устройства (т. наз. принципиальную схему) и найти там то, что нам нужно.
2. Какие пины есть на Ардуино и зачем. Как выбрать нужный.
3. Как пинговать новый компонент с компьютера (монитор порта в IDE). Как вообще проверить, что новый компонент — рабочий.
4. Мы немного познакомимся с тем, как написан один из скетчей.
5. Как добавить ультразвуковой датчик к готовой схеме радио.

Задача: добавить в готовое устройство радио новый компонент: ультразвуковой датчик расстояния для того, чтобы с его помощью переключать станции.

Если у вас есть только сама Ардуино и этот датчик, вы тоже можете поучаствовать в этом проекте и почти полностью повторить все шаги, описанные в тексте. В этом случае вы остановитесь в тот момент, когда настроите интересную такую ультразвуковую линейку. Я же хочу пойти дальше и попробовать настраивать радиостанции при помощи взмаха руки. Итак.

Решение:

Как вы помните, у меня есть набор новичка, в который входит готовая плата расширения для Ардуино со всем необходимым набором компонентов, чтобы собрать радио. Собирается радио не сложнее конструктора Lego по инструкции, или даже без, т.к. большинство компонентов просто невозможно посадить на плату «неправильно» — так удобно у них расположены ножки. На начальном этапе радио выглядит так:



Что само по себе прекрасно. Недавняя горсть «деталек» заиграла у меня живой музыкой. Однако, мне этого мало и я хочу добавить сюда вот этот датчик, знакомьтесь:



Название: ультразвуковой дальномер типа HC-SR05
Для гугления: 5 pin ultrasonic, ultra-sonic ranger SRF05
Библиотеки:
NoBlind_Ultrasonic, которую я использую в своём проекте
NewPing, которая, как обещает автор, отличается более высокой скоростью работы
Даташит на русском: ТТХ в pdf
Отличный даташит: спецификация на английском, наиболее полная
Wiki-сайт, даташит: кратко, на английском языке
Обозначение на схеме:


Для начала, немного занимательной физики.

Что нужно знать об ультразвуковых датчиках расстояния




Они работают по принципу дельфинов, летучих мышей и китов. У кого-то из этих ребят слабое зрение, кому-то в воде или ночью не особо видно, как любому нормальному человеку. Поэтому они полагаются на звук. Принцип этот — эхолокация: отправляют звук, он доходит до объекта и, отразившись от него, возвращается обратно. Т.к., грубо говоря*, скорость звука фиксированная, таким образом, можно понять, сколько до объекта, если знать, за сколько вернулся звук.


Этот парень может летать ночью и не врезаться в вас и другие деревья, потому что измеряет расстояние до объектов ультразвуком.=)

Человек так может узнать, как далеко гроза: сначала мы видим молнию (потому что скорость света быстрее), а потом слышим гром. Если отсчитать, сколько секунд расстояние между вспышкой и раскатом грома, и знать скорость звука — 340,29 м/с, то можно рассчитать расстояние до грозы в метрах:
Скорость = Время*Расстояние
Например:
20с*340м/с=6800м=6,8 км

Мы не слышим звук, который используется датчиком, так как наше ухо не слышит вибрации на частотах выше 20 кГц. Но этот звук слышат животные.


Диапазон слышимых для нас звуков — от 20 Гц до 20 кГц, т.е. наше ухо отсекает инфразвук и ультразвук.

На этом принципе устроены отпугиватели грызунов. Чтобы не огорчать своих домашних питомцев, не тычьте им работающим датчиком в ухо, т.к. для них он работает очень громко. К счастью, он отправляет звук на дистанцию не дальше 200-400 см, т.е. животное может просто отойти от источника звука и не слушать его. Также, звук из датчика «льётся» не во все стороны, а, преимущественно, вперёд, рассеиваясь по бокам — вы это почувствуете, когда при настройке радио будете стараться подносить руку строго над самим датчиком, чтобы вашу руку лучше «видело» устройство:



В любом случае, если дома есть животные, то для стационарных проектов, возможно, вам лучше использовать другие датчики движения. Так, например, расстояние можно измерять и при помощи инфракрасных лучей, в этом случае берите ИФК датчик.

И ещё один важный момент. Вы не сможете переключать радиостанции, например, котом. Дело в том что от пушистых предметов звук отражается кое-как, а именно — он поглощается ими. Именно поэтому на репбазе стены обиты чем-нибудь мягким: это звукоизоляция, чтобы музыкантов не было слышно, пока они во всю громкость играют в студии (ну, или бьются об стену головой — это как пойдёт).

image
Мягкий пол на репетиционной базе не только собирает пыль, но и поглощает звук.

*Более точно говоря, на скорость звука влияет ещё и температура, и плотность той среды, в которой он распространяется.

Чем горячее воздух, тем быстрее распространяется звук, потому что скорость звука в газах увеличивается с повышением температуры. При повышении температуры воздуха на 1 ° скорость звука в нем увеличивается на 0,59 м/с. В нашей ситуации с грозой разброс значений скорости звука не такой уж и большой, поэтому скорость звука для нас более-менее фиксированная: зимой, когда морозы, грозы не бывает, а летом, когда +50 — +100 — не бывает, как правило, нас. =) Если вы хотите больше узнать о распространении звуковых волн, то мне, например, понравилась эта статья.


Как видно из таблицы, мы не сильно ошибёмся, если, рассчитывая расстояние до грозы, примем скорость звука за 340 м/с.


Хотя мне сложно полностью понять это видео о принципах работы непосредственно УЗ датчиков из-за множества терминов и быстрого темпа, но смотреть и слушать его очень приятно.

Задание: если вам удалось посмотреть видео выше, то попробуйте ответить на вопрос, почему у нашего датчика как будто два датчика на одной плате и напишите ваш вариант ответа в комментариях.

Теперь всё. Поздравляю, вы эксперт в распространении звука и эхолокации! Можно двигаться дальше.

Монтаж датчика на плату расширения для Ардуино


Куда подсоединять датчик? Как выбрать для него место? Есть ли вообще на нашей плате расширения свободное место? Сразу оговорюсь, что датчик можно посадить как на плату расширения, так и непосредственно на сами ножки Ардуино. А как их выбрать, мы сейчас узнаем. Итак.

Возьмём схему нашего готового шилда отсюда из раздела «схемы». Вот как это выглядит:



Это называется принципиальная схема. Принципиальная потому, что здесь в принципе показано, что к чему подключено, но реального расположения компонентов на плате эта схема не отражает. Зато её, по идее, легко и удобно читать. Мне изначально было неудобно, т.к. на торце у Ардуино по факту нет ни одной ножки, а на этой схеме мы видим на нём ножки D2-D6, что по началу просто рвало мне шаблон. Но если к этому привыкнуть, что схема настолько принципиальная, что упрощает всё до состояния «квадратиков» и просто отвечает на вопрос «что к чему подключено» — тогда работать с ней становится уже легче.

Чтобы читать условные обозначения, вы можете воспользоваться кратким «словарём», но я рекомендую сделать это не сейчас, тем более что на нашей схеме отражены по большей части готовые компоненты, а не детали платы, для каждой из которых существует своё условное обозначение на схеме. Сейчас, не пугайтесь, мы попробуем найти на этой схеме «место» только для одного нового датчика. Обратите внимание, внизу схемы обозначены кнопки:



В комплекте их три, К1-К3. Мы их уже «втыкали» куда нужно, когда собирали радио по инструкции. Однако на плате есть ещё 2 гнезда «под кнопки»: К4 и К5. Выглядят они просто как четыре отверстия, однако обозначенные неодинаково. Нас интересует только те из пар отверстий, которые обозначены на плате квадратным контактом.

Хозяйке на заметку:

Почему у кнопок по два контакта, а мы используем по одному?
  • Квадратные контакты ведут к линиям D5 и D6 Ардуино. Круглые – это «земля.»
  • Для подключения кнопок нужны два контакта, т.к. при нажатии кнопки замыкается сигнальная линия (подтянута к питанию через резистор) и земля.
  • При подключении датчика земля нужна только для питания. Землю мы чуть позже возьмём с разъёма Ардуино, поэтому в нашем случае вторые контакты не понадобятся
.



Вот так мы дополним схему датчиком (фотошоп мэд скиллз)

Задание: посмотрите на принципиальную схему всего устройства радио ещё раз. Сколько и каких ножек у Ардуино ещё «свободны»? Можем ли мы повесить на этот Ардуино что-то ещё в рамках данного устройства, помимо нашего ультразвукового датчика? Ждём ваши ответы в комментариях.

Паять!


Там, где на плате расширения для Aрдуино есть отверстия, мы можем добавить т. называемые штырьковые разъемы\соединители\штырьки, которые обозначаются буквами PLS-XXX, где вместо XXX нужная цифра, в зависимости от количества штырков. Продаются они в виде длинных гребёнок, от которых самостоятельно можно отделить PLS-1, PLS-2 и т.д. Выглядят они так:

image

Незаменимая в хозяйстве вещь! Если завелась Ардуино. Итак, контакты К4 и К5 имеют по два отверстия, значит называются PLS-2. Мы добавим по одному штырьку в квадратную их часть и таким образом откусим себе две штуки PLS-1. Теперь можно паять.


Вместо тысячи слов: вот это же место с кнопками со схемы выше, но теперь вы его видите на плате.

Пины датчика


У датчика 5 пинов. Они позволят нам «задать ему вопрос», получить «ответ». Ну и подключить его к питанию. Информацию, какой пин что означает, можно брать из даташитов либо на сайте магазина, где вы покупали датчик. Жаль, что ни там ни там, как правило, подробно ничего не расписывается, поэтому специально для нашей статьи — знакомьтесь, пины датчика:


МК — это микроконтроллер. Наша Ардуино — это микроконтроллер, который мы можем запрограммировать как хотим.

Что характерно, предназначение пина Oc даже на самых заморских сайтах остаётся туманно. Там так и пишут: «предназначение пина Oc ещё нужно хакнуть». «Хакнуть» мне это удалось через несколько минут гугления. В официальном даташите прописано, что этот контакт ни к чему не подключен, lol.

Здесь всё просто и даже предсказуемо: два контакта для питания и два для того, чтобы присылать\получать сигнал. Поэтому берём 4 провода «мама-мама» и готовим датчик к посадке на плату:


До сего момента всё шло хорошо, однако, куда подключать каждый из 4 проводов и почему?

Есть такой анекдот: один человек захотел научиться делать мёртвую петлю. Он купил авиационный журнал, где это было описано в статье, сел в самолёт и полетел. Сначала всё шло хорошо: он выполнял инструкцию, описанную в журнале и успешно вошёл в мёртвую петлю. Потом перелистнул страницу, а там: выход из мёртвой петли читайте в следующем номере.

Нам с вами повезло, что мы не учимся делать мёртвую петлю по моим статьям. Потому что сейчас я дам вам небольшой отдых. Надеюсь, до сих пор читать было понятно и интересно. Теперь у вас есть немного времени, пока я подготовлю вторую, заключительную часть поста, где мы разберёмся:
  • к каким пинам Ардуино подключить датчик и почему
  • как проверить новый компонент на работоспособность
  • какие скетчи и библиотеки нам понадобятся для того, чтобы переключать радиостанции при помощи ультразвука.

Мы ответим на оставшиеся вопросы и соберём готовое устройство, а также запрограммируем его. Подписывайтесь на обновления — мне будет приятно.

Прямо сейчас я предлагаю вам ответить на такой вопрос: что вам больше интересно в Ардуино — собирать компоненты или программировать устройство? Почему?
Only registered users can participate in poll. Log in, please.
Что тебе, Хабр, интереснее при работе с Ардуино?
10.94% Собирать компоненты 14
11.72% Программировать устройство 15
71.88% Всё вместе 92
5.47% Моего варианта здесь нет, я напишу в комментариях 7
128 users voted. 36 users abstained.
Tags:
Hubs:
+8
Comments 27
Comments Comments 27

Articles

Information

Website
masterkit.ru
Registered
Founded
Employees
Unknown
Location
Россия