Робот с жестовой управлением: сборка бота с акселерометром ADXL335 и RF-433
Компоненты и материалы
| Компонент | Количество |
|---|---|
| Arduino UNO (база робота) | 1 |
| Arduino Nano R3 (на руке) | 1 |
| RF-433 Передатчик/Приёмник | 1 пара |
| Кодировщик/декодер HT12E / HT12D | 1 пара |
| Аналоговый акселерометр ADXL335 (Adafruit) | 1 |
| Motor Shield для Uno (Adafruit) | 1 |
| DC-моторы (колёса) | 4 (2 пары параллельно) |
Инструменты
- Паяльник
О проекте
Жестово-управляемый робот: наклон ладони с акселерометром ADXL335 на Arduino Nano передаёт команды по RF-433 на Arduino Uno с Motor Shield, управляющую 4 моторами. Классический учебный проект для понимания микроконтроллеров, беспроводной связи и управления двигателями.
1. ADXL335 — Акселерометр
Измеряет ускорение (в т.ч. гравитацию g) по 3 осям. Наклон руки меняет проекцию g на оси X/Y — аналоговый выход (0–3.3В) считывается Nano на A0/A1/A2 (10-бит ADC → 0–1023). Разные наклоны = разные значения → команды движения.
Тестовый скетч для калибровки:
void setup() {
pinMode(A0, INPUT); // X
pinMode(A1, INPUT); // Y
pinMode(A2, INPUT); // Z
Serial.begin(9600);
}
void loop() {
Serial.print(" X= "); Serial.println(analogRead(A0));
Serial.print(" Y= "); Serial.println(analogRead(A1));
Serial.print(" Z= "); Serial.println(analogRead(A2));
delay(1000);
}
Запустите, наклоняйте руку — запомните пороги для вперёд/назад/влево/вправо.
2. RF-433 Передатчик и Приёмник
Работают на 433 МГц, АМ, до 10 м. Передают 4 бита команд (HT12E кодирует, HT12D декодирует). Адресные пины A0–A7 на обоих заземлены (одинаковый адрес).
Передатчик (на Nano)
- HT12E Data In пины → D6–D9 Nano
- D6=HIGH → Вперёд, D7=HIGH → Назад, D8=HIGH → Влево, D9=HIGH → Вправо
- Все LOW → Стоп
Приёмник (на Uno)
- HT12D Data Out пины → A0–A3 Uno (аналоговые пины, читаются как цифровые)
- LED на 17м пине HT12D (через 1кОм) — индикатор связи
3. Motor Shield (Adafruit)
Библиотека AFMotor (GitHub). Моторы подключены к M3 и M4 (левые/правые пары параллельно). Питание: 2–3 батареи 9В параллельно на вход щита.
4. Итоговая схема и код
Arduino Nano (передатчик):
int x_axis = 0, y_axis = 0;
int forward = 6, backward = 7, right = 8, left = 9; // Пины HT12E
void setup() {
pinMode(A0, INPUT); pinMode(A1, INPUT);
pinMode(forward, OUTPUT); pinMode(backward, OUTPUT);
pinMode(right, OUTPUT); pinMode(left, OUTPUT);
Serial.begin(9600);
}
void loop() {
x_axis = analogRead(A0);
y_axis = analogRead(A1);
Serial.print(" X = "); Serial.println(x_axis);
Serial.print(" Y = "); Serial.println(y_axis);
// Пороги подбирайте после калибровки!
if (y_axis >= 390) { digitalWrite(forward, HIGH); Serial.println("Forward"); }
else if (y_axis <= 310) { digitalWrite(backward, HIGH); Serial.println("BACK"); }
else if (x_axis >= 380) { digitalWrite(right, HIGH); Serial.println("RIGHT"); }
else if (x_axis <= 320) { digitalWrite(left, HIGH); Serial.println("LEFT"); }
else {
digitalWrite(forward, LOW); digitalWrite(backward, LOW);
digitalWrite(right, LOW); digitalWrite(left, LOW);
}
delay(200);
}
Arduino Uno (приёмник + моторы):
#include <AFMotor.h>
AF_DCMotor motor_right(3); // M3
AF_DCMotor motor_left(4); // M4
int forward=0, backward=0, right=0, left=0;
void setup() {
pinMode(A0, INPUT); pinMode(A1, INPUT);
pinMode(A2, INPUT); pinMode(A3, INPUT);
Serial.begin(9600);
motor_right.setSpeed(255);
motor_left.setSpeed(255);
motor_right.run(RELEASE);
motor_left.run(RELEASE);
}
void loop() {
forward = digitalRead(A0);
backward = digitalRead(A1);
right = digitalRead(A2);
left = digitalRead(A3);
if (forward == HIGH) {
motor_right.run(FORWARD); motor_left.run(FORWARD); Serial.println("Forward");
}
if (backward == HIGH) {
motor_right.run(BACKWARD); motor_left.run(BACKWARD); Serial.println("Reverse");
}
if (right == HIGH) {
motor_right.run(FORWARD); motor_left.run(RELEASE); Serial.println("RIGHT");
}
if (left == HIGH) {
motor_right.run(RELEASE); motor_left.run(FORWARD); Serial.println("LEFT");
}
if (forward==LOW && backward==LOW && right==LOW && left==LOW) {
motor_right.run(RELEASE); motor_left.run(RELEASE);
}
delay(100);
}
Фото и видео
См. оригинал проекта — там множество фото сборки и демонстрации работы.
Производственный процесс
- Умная копилка: управление монетоприёмником на Arduino Nano
- Arduino Power Control Center: N-FET, P-FET, реле и RTC
- Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
- Автономный линий-следующий робот на Arduino UNO
- Простой калькулятор на Arduino UNO — базовый проект для начинающих
- DIY-контроллер увлажнителя на Arduino с реле: безопасная работа с высоким напряжением
- Голосовой робот на Arduino Nano: Управление речью через Bluetooth
- Сборка портативного дисплея на основе эффекта сохранения изображения с Arduino UNO и ATtiny85
- Удалённое управление автомобилем на Arduino Uno и Bluetooth: пошаговое руководство
- Управление 4-пиновым PWM-вентилятором 25 кГц на Arduino Uno — Сборка, код и тесты