|
Smart Stick помощь слабовидящим
Статьи публикуются по мере поступления. Для упорядоченного тематического
поиска воспользуйтесь блоком "Карта сайта"
Обнаружение препятствий - одна из основных проблем для полностью или частично слепого человека (например, человека, страдающего куриной слепотой, катарактой, глаукомой, альбинизмом или травмой). Здесь представлен смарт-джойстик, использующий Arduino Uno. В палке используются ультразвуковые датчики для обнаружения препятствий. Основная цель этого проекта - обнаружить близлежащее препятствие и уведомить пользователя о направлении этого препятствия, тем самым позволяя пользователю определить корректирующее направление движения.
Список компонентов
Микроконтроллер |
|
Ультразвуковые трансиверы |
|
SNR1 |
HC-SR04 |
SNR2 |
HC-SR04 |
SNR3 |
HC-SR04 |
Зуммеры и вибраторы |
|
SND1 |
Пьезоэлектрический зуммер |
SND2 |
Вибрационный мотор |
Переключатели |
|
S1 |
Переключить переключатель |
Схема, показанная ниже, работает с использованием источника питания постоянного тока минимум 5 В (через выводы Vcc и GND Arduino UNO). Самому Arduino для работы требуется всего 5 В, но, учитывая тот факт, что он должен питать три ультразвуковых датчика, один пьезоэлектрический зуммер и вибрационный двигатель, мы использовали источник питания 9 В. Arduino имеет встроенный стабилизатор напряжения 5 В, поэтому у нас также есть возможность запитать его от источника питания 6 В или 12 В. Мозгом схемы является плата микроконтроллера Arduino Uno (Board1). Три ультразвуковых датчика «HC-SR04» используются для обнаружения препятствий с помощью ультразвуковых волн. Эти датчики требуют источника питания 3,3 В каждый для работы на расстоянии до 3 м и могут обнаруживать препятствия в пределах среднего угла 25 градусов в сфере.
Smart Stick с использованием Arduino: принципиальная схема
Два из четырех контактов этих трех датчиков, а именно Vcc и GND, подключены к выходу питания 3,3 В. Arduino. Остальные два контакта - TRIG и ECHO подключаются к Arduino следующим образом.
№ датчика |
Триггер |
Эхо |
SNR1 |
2 |
3 |
SNR2 |
4 |
5 |
SNR3 |
6 |
7 |
Кроме того, к нему подключены пьезоэлектрический зуммер SND1 и вибрационный двигатель SND2, так что он может направлять пользователя с помощью различных тонов и вибрации. Кроме того, тумблер S1 используется для экономии энергии, когда устройство не используется или когда у человека с ограниченными возможностями есть поддержка других, чтобы направлять его / ее. Arduino запрограммирован таким образом, что при включении Arduino он посылает сигнал LOW to HIGH на контакте TRIG всех трех ультразвуковых датчиков. Эти ультразвуковые датчики будут посылать ультразвуковую волну с помощью ультразвукового передатчика датчика. Эти ультразвуковые волны проходят через воздух и при столкновении с препятствием отражаются обратно. Программирование выполнено таким образом, что, когда это препятствие находится в диапазоне 1,4 м от датчика, Arduino будет воспроизводить зуммер с разной задержкой для препятствий, расположенных по бокам, и без задержки для прямых. Для дальнейшего повышения производительности, если препятствие находится слишком близко (менее 0,7 м от датчика), также включается вибрационный двигатель. Датчик будет давать электрический отклик на выводе ECHO датчика. Этот отклик представляет собой время, за которое волна совершает круговой обход от датчиков до препятствия и обратно к датчикам. Для нашего расчета нам понадобится только одностороннее расстояние. Это может быть рассчитано Arduino по следующей формуле:
Здесь Duration = Echo output;
а поскольку нам нужно только расстояние в одну сторону, мы делим эту продолжительность на 2.
Здесь константа 29.1 выводится следующим образом:
·Скорость звука составляет 343,5 м / с или 0,0345 см / микросекунды.
·1 / 0,0345 см / микросекунда составляет 29,1 микросекунды / см.
·Разделив длительность (мс) на 29,1 (микросекунд / см), мы получим расстояние в (см).
Чтобы различить направление нахождения препятствия, используется следующий механизм:
·Для местоположений в левом и правом направлениях задержка составляет 500 мс.
·Для локации в прямом направлении задержка равна нулю.
Дополнительное обеспечение двигателя, который вибрирует ручку, вставлено в сборку для очень близких препятствий. Экспериментальные исследования показывают, что оптимальное расстояние сборки стойки составляет 0,7 м.
Реализация схемы на печатной плате не будет плодотворной, поскольку большинство деталей схемы будет реализовано на деревянном шасси / картоне / пластике. Мы не можем закрепить датчики на печатной плате, так как они были бы в вертикальном положении; и более того, расположенные по кругу / полукругу. Окончательно собранное устройство помещается на палку примерно посередине. После сборки схемы проверьте ее в контрольных точках, указанных в таблице ниже.
Контрольные точки |
Подробности |
TP0 |
3,3 В |
TP1-TP3 |
3,3 В |
TP4-TP6 |
Форма волны 1 |
TP6-TP9 без каких-либо препятствий |
Форма волны 2 |
ТП6-ТП9 с препятствием |
Форма волны 3 |
После этого сделайте картонную коробку или пластиковую коробку с 8 круглыми отверстиями в ней. 6 из 8 отверстий должны быть размером с передатчик / приемник ультразвуковых датчиков, и они должны быть пробиты на стенке коробки. Оставшиеся 2 отверстия должны быть больше диаметра деревянной палки, которую вы выберете, и они должны быть пробиты сверху и снизу коробки, а также коллинеарны друг к другу. Верх коробки должен быть съемным, если нам понадобится доступ к цепи. Для справки рассмотрите приведенный ниже рисунок.
Smart Stick с использованием окончательного вывода Arduino
Как только схема будет собрана, поместите Arduino и датчик вместе с соединительными проводами в картонную коробку. Через шесть отверстий, пробитых на поверхности, извлеките из коробки комплект передатчика и приемника каждого датчика. Значение этой сборки состоит в том, чтобы избежать ложных срабатываний, поскольку сама коробка будет вести себя как препятствие для датчиков. Правильная установка и выравнивание очень важны. Обеспечьте правильную установку, оптимально разместив зуммер, вибромотор, выключатель и аккумулятор после их извлечения из коробки. Теперь протестируйте сборку на различных препятствиях на разных расстояниях. Блок-схема программы представлена ниже. Для этого проекта используется Arduino версии 1.6.6, но поскольку изменения в каталоге не производятся, то же самое можно сделать с помощью любой из последних версий Arduino IDE. IDE доступна здесь . В следующем разделе дается краткое описание определения контактов и деталей порта ввода-вывода.[stextbox id=’grey’ caption=’Defining the pins and variables in the program’]#define trig1 3
#define echo1 2
#define trig2 4
#define echo2 5
#define trig3 7
#define echo3 8
#define motor 12
#define buzzer 11
long duration1,distance1,duration2,distance2,distance3,duration3;[/stextbox]
[stextbox id=’grey’ caption=’Defining which pins to be used as Input or Output’]void setup()
{
pinMode(trig1, OUTPUT);
pinMode(echo1, INPUT);
pinMode(trig2, OUTPUT);
pinMode(echo2, INPUT);
pinMode(trig3, OUTPUT);
pinMode(echo3, INPUT);
pinMode(motor, OUTPUT);
pinMode(buzzer, OUTPUT);
}[/stextbox]
[stextbox id=’grey’ caption=’Initialize ultrasonic waves via sensors and interfacing I/P ports to corresponding variables:’]void loop()
{
//For sensor 1
digitalWrite(trig1, LOW);
delayMicroseconds(2);
digitalWrite(trig1, HIGH);
delayMicroseconds(10);
duration1 = pulseIn(echo1, HIGH);
//For sensor 2
digitalWrite(trig2, LOW);
delayMicroseconds(2);
digitalWrite(trig2, HIGH);
delayMicroseconds(10);
duration2 = pulseIn(echo2, HIGH);
//For sensor 3
digitalWrite(trig3, LOW);
delayMicroseconds(2);
digitalWrite(trig3, HIGH);
delayMicroseconds(10);[/stextbox]
[stextbox id=’grey’ caption=’Calculate the distances and save them to variables.’]distance1 = (duration1/2)/29.1;
distance2 = (duration2/2)/29.1;
distance3 = (duration3/2)/29.1;[/stextbox]
[stextbox id=’grey’ caption=’Calculate the distances and save them to variables.’]if ( distance1 < 120 || distance2 < 120 || distance3 < 120 )
{
if ( distance1 <= 60 || distance2 <= 60 || distance3 <= 60 )
{
digitalWrite(buzzer, HIGH);
digitalWrite(motor,HIGH);
delay(50);
digitalWrite(buzzer,LOW);
digitalWrite(motor,LOW);
delay(50);
}[/stextbox]
Расстояние |
Операция |
Для расстояния> 1,4 м |
Без зуммера |
Для 0,7 м <расстояние <1,4 м |
Зуммер |
расстояние <0,7 м |
Зуммер + Вибрация |
[stextbox id=’grey’ caption=’apart from the buzzer a vibrating motor informs the user of a nearby obstacle in the corresponding direction ‘]else if ( distance1 > 60 && distance1 < distance2 && distance1 < distance3 )
{
digitalWrite(buzzer, HIGH);
delay(500);
digitalWrite(buzzer,LOW);
delay(500);
}
else if ( distance2 > 60 && distance2 < distance1 && distance2 < distance3 )
{
digitalWrite(buzzer, HIGH);
delay(500);
digitalWrite(buzzer,LOW);
delay(500);
}
else if ( distance3 > 60 && distance3 < distance2 && distance3 < distance2 )
{
digitalWrite(buzzer, HIGH);
}
}
digitalWrite(buzzer,LOW);
}[/stextbox]