Умная трость для слабовидящих людей на основе Arduino

В этой статье мы рассмотрим «умную» трость (посох) для слабовидящих (слепых) людей на основе платы Arduino, которая будет более функциональна чем обычная трость.

Внешний вид умной трости для слабовидящих людей на основе Arduino

Наша умная трость будет включать в себя ультразвуковой датчик для определения расстояния до препятствия, фоторезистор для измерения условий освещенности и модуль удаленного управления, с помощью которого слабовидящий человек может удаленно определять местоположение этой трости. Обратная связь со слабовидящим человеком обеспечивается при помощи зуммера (Buzzer). Вместо зуммера можно также использовать какое-нибудь другое вибрационное устройство – на ваш выбор.

Внешний вид компонентов умной трости

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

  1. Плата Arduino Nano (другой тип платы также подойдет).
  2. Ультразвуковой датчик HC-SR04.
  3. Фоторезистор.
  4. Зуммер и светодиод.
  5. Регулятор напряжения 7805.
  6. Радиочастотный передатчик и приемник на частоте 433 МГц.
  7. Резисторы.
  8. Конденсаторы.
  9. Кнопка.
  10. Перфорированная плата.
  11. Набор для пайки.
  12. Батарейка на 9 В

Работа схемы

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

Схема приемной части умной трости для слабовидящих людей на основе ArduinoНа этой схеме плата Arduino Nano используется для управления всеми процессами. Вся схема запитывается от батарейки на 9 В и регулятора напряжения 7805, который обеспечивает стабильное напряжение +5V. Ультразвуковой датчик запитывается от 5V, а его контакты trigger и Echo подключены к контактам 2 и 3 платы Arduino. Фоторезистор и резистор 10 кОм образуют делитель напряжения, с выхода которого напряжение подается на аналоговый контакт A1 (для последующего АЦП) платы Arduino. Аналоговый контакт A0 платы Arduino используется для считывания сигнала с радиочастотного приемника. Зуммер подключен к контакту 12 платы Arduino.

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

Схема передающей части умной трости для слабовидящих людей на основе Arduino

Здесь мы использовали небольшой «лайфхак» чтобы наши радиочастотные части схемы заработали так, как это нам необходимо. В обычном режиме для работы радиочастотных модулей 433 МГц необходимы шифратор (кодер) и дешифратор (декодер), либо же два узла управления многосторонней связью (MCU). Но в нашем проекте приемной части необходимо лишь обнаруживать передает ли передатчик какие либо сигналы. Поэтому контакт данных (Data pin) нашего радиочастотного передатчика мы подключили к корпусу (земле).

Контакт данных (data pin) радиочастотного приемника через RC фильтр подается на плату Arduino как показано на схеме. Теперь при нажатии кнопки на схеме передатчика приемник будет часто подавать на вход аналогово-цифрового преобразователя (АЦП) на контакте A0 платы Arduino определенный уровень напряжения. Эти повторяющиеся уровни напряжения нельзя будет наблюдать на входе контакта A0 платы Arduino когда кнопка в передающей части не нажата. То есть мы в программе для Arduino должны будем проверять поступление этих повторяющихся значений на вход контакта A0 платы Arduino чтобы определить нажата кнопка в передающей части или нет. Таким образом слабовидящий человек сможет находить свою трость.

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

Внешний вид собранных компонентов трости (вид сверху)

Внешний вид собранных компонентов трости (вид снизу)

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

После того как вы соберете всю аппаратную часть проекта можно будет приступать к программированию платы Arduino. Полный код программы приведен в конце статьи, здесь же мы обсудим его наиболее важные фрагменты.

Сначала в функции void setup() мы инициализируем входные и выходные контакты платы Arduino. В нашем проекте контакты, к которым подключаются Buzzer и Trigger pin, будут выходными, а контакт, к которому подключается Echo pin, входным. Мы также инициализируем монитор последовательной связи (serial monitor) для целей отладки.

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

Далее мы проверяем данные от радиочастотного приемника. Мы будем использовать переменную similar_count чтобы проверить сколько раз повторялись одни и те же значения от радиочастотного приемника. Поступление этих повторяющихся данных возможно только когда нажата кнопка на передающей части. Мы будем инициировать сигнал тревоги (то есть сигнал о том, что человек ищет трость) от радиочастотного приемника когда этот счетчик повторяющихся данных превысит значение 100.

Также значение переменной similar_count можно будет проверять в окне монитора последовательной связи.

Значение переменной similar_count в окне монитора последовательной связи

Далее мы будем проверять интенсивность света (освещенность) вокруг слабовидящего человека. Если с выхода фоторезистора мы получим значение менее 200 мы будем полагать что вокруг очень темно и мы с помощью зуммера сформируем специальный предупреждающий сигнал об этом длительностью 200 мс. Если значение с выхода фоторезистора более 800, то это будет означать, что вокруг очень светло – мы в этом случае сформируем предупреждающий сигнал другой тональности. Вы можете самостоятельно изменить границы срабатывания этих сигналов в программе.

Значение интенсивности света в окне монитора последовательной связи

И затем, в самом конце, мы будем измерять расстояние до любого препятствия. Если расстояние до препятствия более 50 см, то никакого сигнала тревоги формироваться не будет. А если расстояние до препятствия менее 50 см, то будет выдаваться сигнал тревоги с помощью зуммера. Чем ближе будет становиться расстояние до препятствия, тем более часто будет звучать сигнал зуммера. Это достигается с помощью изменения задержки между сигналами зуммера пропорционально расстоянию до препятствия. Поскольку функция задержки delay () в Arduino не допускает использование переменной в качестве входного параметра мы для организации изменяющихся задержек будем использовать специальный цикл:

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

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

Работа проекта

Наконец, настало время протестировать работу проекта. Удостоверьтесь в том, что все необходимые соединения в схеме сделаны, и программа успешно загружена в плату Arduino. После этого подайте питание на обе схемы с помощью батареек 9 В и после этого вы должны уже начать наблюдать результаты работы проекта. Пододвиньте препятствие к ультразвуковому датчику на расстояние менее 50 см – после этого вы должны услышать сигнал зуммера, частота звучания сигнала зуммера будет возрастать по мере дальнейшего сокращения расстояния между препятствием и ультразвуковым датчиком. Если рядом с устройством слишком темно или слишком светло, то также будет звучать предупреждающий сигнал зуммера. Если все нормально, то сигнал зуммера звучать не будет.

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

Тестирование работы умной трости

Если ваш зуммер постоянно издает звуковой сигнал это значит что какая то из анализируемых тревог срабатывает ложно (то есть ее на самом деле нет, а она срабатывает). В этом случае вам необходимо посмотреть на данные, печатаемые в окне монитора последовательной связи, и на основе анализа этих данных определить в чем кроется ошибка при работе проекта.

Более подробно работа проекта показана на видео, приведенном в конце статьи.

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

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

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

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

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