Робот на Arduino, управляемый с помощью жестов

Share Button
Название проекта: Робот на Arduino, управляемый с помощью жестов
Платформа: Arduino

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

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

Потребуется:

  • Плата Arduino
  • Два двигателя постоянного тока
  • Акселерометр ADXL335
  • Кодер HT12D
  • Декодер HT12E
  • Радиопередатчик и радиоприёмник
  • Драйвер двигателей L293D
  • Батарейка 9 В
  • Разъем для батарейки
  • USB-кабель
  • Шасси робота

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

Акселерометр ADXL335 имеет по аналоговому выходу на каждую ось (X-OUT, Y-OUT, Z-OUT) и питается напряжением 5 В.

Аксельрометр для Arduino

Робот совершает перемещения на основе положения руки. Если наклонить руку вперёд, робот начнёт движение прямо и будет продолжать, пока не будет дана другая команда. Отклонение руки назад позволит роботу двигаться назад. Наклоны руки вправо или влево заставит робота поворачивать направо или налево соответственно. Для остановки робота нужно держать руку в горизонтальном положении.

На представленном ниже видео показано функционирование простого робота с жестовым управлением с помощью акселерометра:

Проект робота состоит из двух частей: передающей части и принимающей части. В передающей части основными элементами являются акселерометр и радиопередатчик. Поскольку акселерометр передаёт аналоговые сигналы, их необходимо преобразовать в цифровые. Для этой цели вместо АЦП используется 4-канальный компаратор. С помощью опорного напряжения мы получаем необходимые цифровые сигналы, которые впоследствии подводим к шифратору HT12E для получения последовательных данных для последующей их отправки по радиоканалу.

Робот на Arduino, управляемый с помощью жестов

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

Управляемый жестами робот Arduino

Таблица состояний для управления роботом:

 таблица состояний для управления роботом:

Код для Arduino:


//определяем выходные пины для двигателей
#define FD 16
#define BD 17
#define LD 18
#define RD 19
#define m11 3
#define m12 4
#define m21 5
#define m22 6
void forward()
{
digitalWrite(m11, HIGH);
digitalWrite(m12, LOW);
digitalWrite(m21, HIGH);
digitalWrite(m22, LOW);
}
void backward()
{
digitalWrite(m11, LOW);
digitalWrite(m12, HIGH);
digitalWrite(m21, LOW);
digitalWrite(m22, HIGH);
}
void left()
{
digitalWrite(m11, HIGH);
digitalWrite(m12, LOW);
digitalWrite(m21, LOW);
digitalWrite(m22, LOW);
}
void right()
{
digitalWrite(m11, LOW);
digitalWrite(m12, LOW);
digitalWrite(m21, HIGH);
digitalWrite(m22, LOW);
}
void Stop()
{
digitalWrite(m11, LOW);
digitalWrite(m12, LOW);
digitalWrite(m21, LOW);
digitalWrite(m22, LOW);
}
//определяем направления для пинов
void setup()
{
pinMode(FD, INPUT);
pinMode(BD, INPUT);
pinMode(LD, INPUT);
pinMode(RD, INPUT);
pinMode(m11, OUTPUT);
pinMode(m12, OUTPUT);
pinMode(m21, OUTPUT);
pinMode(m22, OUTPUT);
}
void loop()
{
//считываем входы
int temp1=digitalRead(FD);
int temp2=digitalRead(BD);
int temp3=digitalRead(LD);
int temp4=digitalRead(RD);
if(temp1==1 && temp2==0 && temp3==0 && temp4==0)
backward();
else if(temp1==0 && temp2==1 && temp3==0 && temp4==0)
forward();
else if(temp1==0 && temp2==0 && temp3==1 && temp4==0)
left();
else if(temp1==0 && temp2==0 && temp3==0 && temp4==1)
right();
else
Stop();
}

Использованные компоненты: Плата Arduino, Два двигателя постоянного тока, Акселерометр ADXL335, Кодер HT12D, Декодер HT12E ,Радиопередатчик и радиоприёмник, Драйвер двигателей L293D, Батарейка 9 В, Разъем для батарейки, USB-кабель, Шасси робота



Сайт проекта: http://circuitdigest.com/microcontroller-projects/accelerometer-based-hand-gesture-controlled-robot-using-arduino, http://digitrode.ru/computing-devices/mcu_cpu/296-robot-na-arduino-upravlyaemyy-s-pomoschyu-zhestov.html

Другие проекты на этой платформе:

Перейти в каталог DIY-проектов роботов

Как добавить робопроект в каталог?
Share Button

Нет комментариев.

Оставить комментарий

© 2014-2024 Занимательная робототехника, Гагарина Д.А., Гагарин А.С., Гагарин А.А. All rights reserved / Все права защищены. Копирование и воспроизведение в любой форме запрещено. Политика конфиденциальности. Соглашение об обработке персональных данных.
Наверх