
Сегодня управление жестами нельзя назвать новинкой. Данная функция присутствует во многих современных смартфонах, планшетах и других мобильных устройствах. Никого не удивишь, если смартфон переключает видеозаписи или сменяет фотографии на экране по движению руки. Но как сделать нечто подобное самому? Как заставить игрушку понимать жесты? С этим вопросом мы и постараемся разобраться сегодня.
В основе данной технологии лежит обычный акселерометр. С его помощью мы сделаем робота, который будет реагировать на движение рук и двигаться в соответствии с ними. Этот проект поможет нам разобраться с работой данного датчика в более интересной и ненавязчивой форме.
Для трансмиттера:
Для ресивера:
Работа нашего робота начинается с акселерометра. Он дает аналоговый сигнал в пределах от 0 до 5 вольт или нуля до 1023 на микроконтроллер ATmega328/8.Данный микроконтроллер можно назвать сердцем всего проекта. Он и заставляет перемещаться робота в зависимости от движения руки. После считывания движения руки, через RF трансмиттер, контроллер передает данные роботу, по средствам беспроводной связи. Для ее создания и необходима микросхема HT12E IC.
Собранные данные принимаются RF ресивером и декодируются микросхемой HT12D IC. Микросхема имеет 4 контакта, которые подключаются к шилду управления L293D. Он в свою очередь и запускает двигатели.


Акселерометр: – прибор,измеряющий проекцию кажущегося ускорения (разности между истинным ускорением объекта и гравитационным ускорением) в трех направлениях – X, Y, Z
Arduino – плата микроконтроллера, к которой подключается акселерометр. Датчик передает на контроллер аналоговый сигнал, который позже преобразуется в цифровой, при помощи встроенного 10-битного АЦП
Микросхема HT12E IC – кодер, который может преобразовать параллельный сигнал в последовательный. Основная причина его применения в том,что RF трансмиттер не может передать параллельный сигнал. Последовательный сигнал может быть передан и непосредственно через микроконтроллер, но тогда встанет необходимость его наличия и на стороне приемника.
RF трансмиттер – собственно он и передает последовательный сигнал.

RF ресивер: принимает данные с передатчика и передает декодеру HT12DIC.
HT12D IC: преобразует последовательный сигнал, полученный с приемника, в параллельный, как на выходе из контроллера.
L293D: микросхема питания, которая используется для усиления сигнала, поступающего с декодера.
Двигатели используются для перемещения робота. Количество оборотов можно менять, но стоит учесть, что на высоких оборотах, робота довольно сложно контролировать.
Источник питания: аккумуляторная батарея для работы двигателей.
Осталось только вставить код в Arduino IDE и загрузить его на плату.
int inx = A0; //x pin of accelerometer
int iny = A1; //y pin of accelerometer
int out1 = 8; //output1 for HT12E IC
int out2 = 9; //output1 for HT12E IC
int out3 = 10; //output1 for HT12E IC
int out4 = 11; //output1 for HT12E IC
void setup() {
pinMode(inx,INPUT);
pinMode(iny,INPUT);
pinMode(out1,OUTPUT);
pinMode(out2,OUTPUT);
pinMode(out3,OUTPUT);
pinMode(out4,OUTPUT);
}
void loop() {
if (analogRead(inx) < 305) {
digitalWrite(out1, HIGH);
digitalWrite(out2, LOW);
digitalWrite(out3, HIGH);
digitalWrite(out4, LOW);
} else if (analogRead(inx) > 365) {
digitalWrite(out1, LOW);
digitalWrite(out2, HIGH);
digitalWrite(out3, LOW);
digitalWrite(out4, HIGH);
} else if (analogRead(iny) < 305) {
digitalWrite(out1, HIGH);
digitalWrite(out2, LOW);
digitalWrite(out3, LOW);
digitalWrite(out4, LOW);
} else if (analogRead(iny) > 365) {
digitalWrite(out1, LOW);
digitalWrite(out2, LOW);
digitalWrite(out3, HIGH);
digitalWrite(out4, LOW);
} else {
digitalWrite(out1, LOW);
digitalWrite(out2, LOW);
digitalWrite(out3, LOW);
digitalWrite(out4, LOW);
}
}
Данная статья является авторским переводом с сайта http://clgproject.com
Данная статья является собственностью Amperkot.ru. При перепечатке данного материала активная ссылка на первоисточник, не закрытая для индексации поисковыми системами, обязательна.
Комментарии