Жестово-управляемый робот на Raspberry Pi
Устали от кнопочного управления? Представьте управление роботом простыми жестами рук, отдыхая на диване. Это руководство показывает, как построить двухмоторного робота, реагирующего на движения рук с использованием Raspberry Pi, акселерометра и RF-связи.
Обзор
Используем Raspberry Pi 3 на стороне передатчика для чтения данных акселерометра, кодирования их модулем HT12E и передачи сигнала через 434 МГц RF-пару. На стороне робота 12 В батарея питает декодер HT12D и драйвер моторов L293D, управляющий двумя DC-моторами на основе принятых жестовых команд.
Компоненты
| Компонент | Спецификация | Кол-во |
|---|---|---|
| Raspberry Pi | Model 3 | 1 |
| MicroSD Card | ≥ 8 GB | 1 |
| Акселерометр | ADXL345 или MPU6050 | 1 |
| RF Модуль | TX & RX 434 MHz | 1 |
| Блок питания | 5 V USB для Pi; 12 V батарея для робота | 1 |
| Провода | Female-to-male & male-to-female | 10 каждая |
| Энкодер | HT12E (модуль предпочтительнее) | 1 |
| Декодер | HT12D (модуль предпочтительнее) | 1 |
| Драйвер моторов | L293D (модуль предпочтительнее) | 1 |
Блок-схема
Сторона передатчика
Акселерометр подает сырые данные движения на Pi. Python обрабатывает показания, маппит их в команды движения и отправляет 4-битный код на энкодер HT12E через GPIO. Энкодер сериализует код, RF-передатчик вещает его.
Сторона приемника
RF-приемник ловит сигнал и передает декодеру HT12D. Декодированный 4-битный код управляет L293D драйвером моторов, который контролирует левый и правый моторы робота для достижения движений вперед, назад, влево, вправо или стоп.
Основы акселерометра
Акселерометр измеряет ускорение по трем осям. Статическое ускорение (гравитация) раскрывает наклон; динамическое — детектирует движение. Цифровые модели вроде ADXL345 или MPU6050 общаются по I²C, давая низкошумные надежные данные. MPU6050 также включает гироскоп, полезный для более сложного детектирования движений.
Подключение акселерометра к Raspberry Pi
Используйте I²C шину: соедините SDA и SCL пины Pi с SDA и SCL сенсора, питайте сенсор 3.3 В и GND. Включите I²C в Raspbian: sudo raspi-config → Interface Options → I²C. Установите SMBus утилиты:
sudo apt-get install python-smbus i2c-toolsДетектируйте устройство:
sudo i2c-detect -y 1 — ADXL345 на 0x53; MPU6050 на 0x68 или 0x69. Клонируйте библиотеку и запустите пример:
git clone https://github.com/pimoroni/adxl345-python cd adxl345-python sudo python example.pyДля MPU6050 используйте
pip install mpu6050-raspberrypi и тестируйте: from mpu6050 import mpu6050 sensor = mpu6050(0x69) print(sensor.get_accel_data())
Калибровка жестовых порогов
Поместите сенсор в каждую желаемую позу (вперед, влево, вправо, назад, стоп) и запишите сырые X, Y, Z значения. Вычислите среднее и установите полосу толерантности; когда живые показания попадают в полосу, триггерите соответствующую моторную команду. Сохраните эти пороги в Python-скрипте для принятия решений в реальном времени.
С этой настройкой у вас будет надежный, беспроводной жестово-управляемый робот на базе Raspberry Pi.
Дополнительные ресурсы
Производственный процесс
- Точный температурный профиль Raspberry Pi с Python, SQLite и LabVIEW
- Raspberry Pi управляемая аквапоника: гайд по сборке и код
- Построение многоканального логгера данных на Raspberry Pi — Часть 1: Требования и архитектура
- Создание удалённого датчика температуры на Raspberry Pi и Python — пошаговое руководство
- Удалённый мониторинг погоды на Raspberry Pi 3 с PubNub
- Интеграция TI SensorTag с Blynk через Node‑RED на Raspberry Pi Zero
- Управление светодиодом с PIR-датчиком движения на Raspberry Pi
- Создание умного робота с Bridge Shield — интеграция Raspberry Pi и Arduino
- DIY робот в стиле Wall‑E на Raspberry Pi из коробки от CD
- Создание Bluetooth-робота на Raspberry Pi с аудио-обратной связью