Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Робот с жестовой управлением: сборка бота с акселерометром 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)

Приёмник (на Uno)

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);
}

Фото и видео

См. оригинал проекта — там множество фото сборки и демонстрации работы.

Производственный процесс

  1. Умная копилка: управление монетоприёмником на Arduino Nano
  2. Arduino Power Control Center: N-FET, P-FET, реле и RTC
  3. Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
  4. Автономный линий-следующий робот на Arduino UNO
  5. Простой калькулятор на Arduino UNO — базовый проект для начинающих
  6. DIY-контроллер увлажнителя на Arduino с реле: безопасная работа с высоким напряжением
  7. Голосовой робот на Arduino Nano: Управление речью через Bluetooth
  8. Сборка портативного дисплея на основе эффекта сохранения изображения с Arduino UNO и ATtiny85
  9. Удалённое управление автомобилем на Arduino Uno и Bluetooth: пошаговое руководство
  10. Управление 4-пиновым PWM-вентилятором 25 кГц на Arduino Uno — Сборка, код и тесты