Радар с использованием Arduino, ультразвукового датчика и приложения на Android


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

Внешний вид радара с использованием Arduino и ультразвукового датчика

Проектируемое нами устройство обеспечения безопасности будет основано на использовании ультразвукового датчика и будет способно обнаруживать различные объекты как днем, так и ночью. Дополнительно к этому мы смонтируем ультразвуковой датчик на оси сервомотора, что позволяет либо вращать его в автоматическом режиме для сканирования определенной области, либо в ручном режиме с помощью приложения на смартфоне. Вся информация, собираемая ультразвуковым датчиком, будет передаваться на наш смартфон с помощью Bluetooth модуля HC-05. То есть наше устройство будет работать подобно радару или сонару.

Необходимые компоненты

Аппаратное обеспечение

  1. Плата Arduino Mega (можно использовать любую другую плату Arduino) (купить на AliExpress).
  2. Ультразвуковой датчик HC-SR04 (купить на AliExpress).
  3. Bluetooth модуль HC-05 (купить на AliExpress).
  4. Сервомотор (купить на AliExpress).
  5. Источник питания с напряжением 5 В.
  6. Макетная плата (не обязательно).
  7. Соединительные провода.
  8. Телефон на операционной системе Android.
  9. Компьютер для программирования.

Программное обеспечение

  1. Arduino Software.
  2. Android SDK.
  3. Processing Android (для создания мобильного приложения).

Внешний вид используемых нами компонентов представлен на следующем рисунке.

Внешний вид компонентов для нашего радара

Скачивание и установка необходимого программного обеспечения

Программную среду Arduino IDE можно скачать по этой ссылке, хотя если вы читаете этот материал наверняка она у вас уже есть. Arduino IDE требует драйвера для взаимодействия с платой Arduino. Обычно этот драйвер устанавливается автоматически как только вы подключаете плату Arduino к вашему компьютеру. Но если у вас возникла проблема с этим шагом, то найти ее решение вы можете в полном руководстве по плате Arduino Uno на нашем сайте.

Программную среду Processing IDE можно скачать по этой ссылке. Processing представляет собой отличную программную среду с открытым исходным кодом, хорошо подходящую для многих DIY (сделай сам) проектов. Она имеет несколько режимов работы. В режиме “Java Mode” мы можем создать в ней оконное приложение для операционной системы Windows (.EXE files), в режиме “Android mode” – мобильное приложение для Android (.APK files), в режиме “Python mode” можно писать программы на языке Python. В данной статье мы не будем подробно описывать работу с данной программной средой (для этой цели в сети есть специализированные сайты), но будет приведен текст программы в ней для нашего проекта, который вы можете использовать если не хотите изучать данную программную среду.

Работа схемы

Схема устройства представлена на следующем рисунке.

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

Все компоненты нашей схемы не могут быть запитаны от платы Arduino поскольку все вместе они потребляют достаточно большой ток – если мы их все подключим к одной плате Arduino, то мы можем испортить регулятор напряжения платы. Поэтому рекомендуется использовать внешний источник питания с напряжением +5V. Если у вас нет такого источника, то для этой цели вы можете использовать вторую плату Arduino как мы и сделали в нашем проекте. Мы запитали Bluetooth модуль HC-05 и ультразвуковой датчик HC-SR04 от платы Arduino mega, а сервомотор – от другой платы Arduino (она на фотографиях в статье красного цвета).

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

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

Результирующая конструкция у нас выглядит следующим образом:

Объяснение кода программы для Arduino

Основой кода будет определение расстояния до препятствия с помощью ультразвукового датчика и передача его значения в мобильное приложение. Также необходимо написать код программы, позволяющий управлять сервомотором с помощью команд, получаемых от Bluetooth модуля. Но не думайте что программа будет очень сложной – все будет гораздо проще чем вы думаете, спасибо функционалу Arduino и ее библиотекам. Полный код программы приведен далее в статье.

Следующая функция заставляет сервомотор поворачиваться в автоматическом режиме сначала слева направо (со 170 до 10 градусов), а потом – справа налево (с 10 до 170 градусов). Для этого в программе используются два цикла. Внутри обоих циклов вызывается функция us() для расчета расстояния между ультразвуковым датчиком и объектом и передачи значения этого расстояния по Bluetooth. Задержка в 50 ms нужна чтобы сервомотор вращался медленно. Чем медленнее поворачивается сервомотор, тем более точные данные вы получите.

Как мы уже говорили ранее, в данном проекте мы предусмотрели ручное управление сервомотором со смартфона. В данном случае необходимое значение угла поворота сервомотора будет приниматься Bluetooth модулем и сохраняться в переменной BluetoothData, затем устанавливается позиция оси сервомотора с помощью вызова функции servo.write(BluetoothData).

В следующей функции рассчитывается дистанция до объекта по простой формуле Speed = Distance/time (скорость=расстояние/время). Поскольку мы знаем скорость распространения ультразвуковой волны и время между излучением и приемом отраженного ультразвукового сигнала, то по приведенной формуле мы можем рассчитать расстояние до объекта.

Программа для Android приложения

Если вы не хотите писать собственное Android приложение, то вы можете скачать и установить уже готовое приложение. Для этого необходимо выполнить следующие шаги:

  1. Скачайте APK file приложения по следующей ссылке - Android Application for Ultrasonic Radar. Работает для версии Android 4.4.2 и выше. Извлеките APK файл из zip файла.
  2. Передайте этот .Apk файл с компьютера на ваш смартфон.
  3. Разрешите установку приложения из неизвестного источника в настройках вашего смартфона.
  4. Установите приложение.

Если установка приложения прошла успешно, то вы на экране своего смартфона увидите установленное приложение под именем Zelobt” как показано на следующем рисунке:

Установленное мобильное приложение для управления радаром

Если вы успешно установили это приложение, то можете пропустить следующий раздел нашей статьи.

Программирование своего собственного приложения с использованием Processing

Если наше приложение вас не устраивает и вы хотите написать свое собственное Android приложение для управления рассматриваемым в этой статье радаром, то вы можете сделать это с помощью программной среды Processing. Для этого понадобятся минимальные знания в программировании. Но если у вас совсем не имеется опыта программирования, то лучше вам все таки скачать готовое приложение в предыдущем раздела статьи.

Подобное приложение использует две библиотеки, которые называются “Ketai library” и “ControlP5 library”. Ketai library используется для управления всеми аппаратными средствами вашего смартфона, например, уровнем заряда батареи, значениями с датчика близости (proximity sensor), значениями с датчика ускорения (accelerometer sensor), настройками Bluetooth и т.д. Ко всем этим настройкам можно легко получить доступ с использованием Ketai library. В нашей программе мы используем эту библиотеку для установления связи между Bluetooth смартфона и Bluetooth модулем HC-05, подключенном к Arduino. Библиотека “ControlP5 library” используется для построения графиков на основе данных, получаемых от нашего радара.

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

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

Если вы закончили с написанием программы и успешно скомпилировали ее вы можете соединить ваш смартфон с компьютером соответствующим кабелем и скопировать и установить ее на ваш смартфон.

Объяснение работы проекта

Включите питание устройства (если оно все уже собрано) и включите Bluetooth на вашем смартфоне. Запустите наше приложение “Zelobt” и подождите несколько секунд – ваш Bluetooth модуль HC-05 должен автоматически установить соединение с вашим смартфоном. Как только соединение будет установлено на экране смартфона вы увидите следующую картинку:

Как можно видеть, вверху приложения показывается имя устройства (Device name) с которым мы связаны по Bluetooth. Также отображается текущий угол поворота оси сервомотора и дистанция от ультразвукового датчика до объекта. Также на экран выводится синий график на красном фоне, отображающий расстояние до объекта. На картинке слева показан вид этого графика, когда рядом с ультразвуковым датчиком нет никакого объекта, а справа – когда рядом с датчиком появляется какой либо объект.

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

Исходный код программы для Arduino

В данном разделе приведен полный код программы рассматриваемого проекта радара для платы Arduino. Если у вас возникнут вопросы, то вы можете задать их в комментариях к данной статье.

Видео, демонстрирующее работу схемы

(Проголосуй первым!)
Загрузка...
2 696 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *