Умная робо-рука на Arduino: простое DIY-руководство
Компоненты и материалы
| Arduino UNO | 1 |
| Микросервоприводы (SG90 или аналоги) | 5 |
| Потенциометры 10 кОм | 5 |
| Макетная плата | 1 |
| Материал для руки: палочки для мороженого / картон / пластик | 1 компл. |
| Источник питания 5 В (адаптер или батарея) | 1 |
О проекте
Роботизированная рука с «мастер-рукой» для обучения движениям. Рука запоминает последовательность позиций и воспроизводит их. Идея вдохновлена проектом «mini robotic arm» от Stoerpeak. Реализация максимально простая и дешёвая.
Шаг 1: Необходимые детали
См. таблицу выше. Также нужен Arduino IDE.
Шаг 2: Изготовление руки
Автор использовал палочки для мороженого и двусторонний скотч. Сервоприводы крепятся винтами. Мастер-рука: потенциометры клеятся на палочки. Всё установлено на базе формата А4.
Шаг 3: Подключение
- Все сервоприводы параллельно к питанию: красный — +5 В, чёрный/коричневый — GND. Желтый/оранжевый (сигнал) — на PWM-пины 3, 5, 6, 9, 10.
- Потенциометры: крайние выводы — +5 В и GND (параллельно), средние — на аналоговые входы A0–A4.
- Важно: GND сервоприводов должен быть соединён с GND Arduino.
Соответствие: серво на пине 3 ↔ потенциометр на A0, пин 5 ↔ A1, пин 6 ↔ A2, пин 9 ↔ A3, пин 10 ↔ A4.
Шаг 4: Программирование
Логика: значения потенциометров считываются, маппятся в углы 1–179°, сервоприводы следуют за ними. При команде 'R' (Record) позиции сохраняются в массив Storage[600] с кодировкой номера серво (сотни) и угла (единицы). При 'P' (Play) массив воспроизводится последовательно.
Основные фрагменты кода
#include <Servo.h>
Servo Servo_0, Servo_1, Servo_2, Servo_3, Servo_4;
int Pot_0, Pot_1, Pot_2, Pot_3, Pot_4;
int Servo_0_Pos, Servo_1_Pos, Servo_2_Pos, Servo_3_Pos, Servo_4_Pos;
int Prev_0_Pos, Prev_1_Pos, Prev_2_Pos, Prev_3_Pos, Prev_4_Pos;
int Current_0_Pos, Current_1_Pos, Current_2_Pos, Current_3_Pos, Current_4_Pos;
int Servo_Position, Servo_Number;
int Storage[600];
int Index = 0;
char data = 0;
void setup() {
Serial.begin(9600);
Servo_0.attach(3); Servo_1.attach(5); Servo_2.attach(6); Servo_3.attach(9); Servo_4.attach(10);
Servo_0.write(100); Servo_1.write(100); Servo_2.write(100); Servo_3.write(100); Servo_4.write(100);
Serial.println("Press 'R' to Record and 'P' to play");
}
void Map_Pot() {
Pot_0 = analogRead(A0); Servo_0_Pos = map(Pot_0, 0, 1023, 1, 179); Servo_0.write(Servo_0_Pos);
Pot_1 = analogRead(A1); Servo_1_Pos = map(Pot_1, 0, 1023, 1, 179); Servo_1.write(Servo_1_Pos);
Pot_2 = analogRead(A2); Servo_2_Pos = map(Pot_2, 0, 1023, 1, 179); Servo_2.write(Servo_2_Pos);
Pot_3 = analogRead(A3); Servo_3_Pos = map(Pot_3, 0, 1023, 1, 179); Servo_3.write(Servo_3_Pos);
Pot_4 = analogRead(A4); Servo_4_Pos = map(Pot_4, 0, 1023, 1, 179); Servo_4.write(Servo_4_Pos);
}
void loop() {
Map_Pot();
while (Serial.available() > 0) {
data = Serial.read();
if (data == 'R') Serial.println("Recording Moves...");
if (data == 'P') Serial.println("Playing Recorded Moves...");
}
if (data == 'R') {
// сохранение изменений позиций в Storage с кодировкой серво
// ... (подробный код в исходнике)
}
if (data == 'P') {
for (int i = 0; i < Index; i++) {
Servo_Number = Storage[i] / 100;
Servo_Position = Storage[i] % 100;
switch (Servo_Number) {
case 0: Servo_0.write(Servo_Position); break;
case 1: Servo_1.write(Servo_Position); break;
case 2: Servo_2.write(Servo_Position); break;
case 3: Servo_3.write(Servo_Position); break;
case 4: Servo_4.write(Servo_Position); break;
}
delay(50);
}
}
}
Шаг 5: Тестирование
- Загрузите скетч, откройте Serial Monitor (9600).
- Управляйте мастер-рукой — слейв повторяет движения.
- Введите 'R' — начните запись движений.
- Выполните желаемую последовательность.
- Введите 'P' — рука воспроизведёт записанное до сброса платы.
Проект открыт для улучшений: сглаживание движений, более надёжная механика, оптимизация кода.
Схемы
Схема подключения на фото: сервоприводы и потенциометры к Arduino UNO.
Производственный процесс
- Надежная система учета рабочего времени на Arduino с RFID и Python
- Универсальный Android-пульт на Arduino, 1Sheeld и ИК-управлении
- Умный вольтметр на Arduino и смартфоне — простое DIY-проект
- Удаленное IoT-управление самодельной манипулятором
- Умная банка на ESP8266 + Arduino: мониторинг наполненности в реальном времени
- Точное измерение частоты и коэффициента заполнения на Arduino UNO
- Сборка функционального 3D-печатного манипулятора на Arduino: пошаговое руководство
- Умные самозавязывающиеся туфли с встроенной сборкой энергии
- Роботизированная рука 6 степеней свободы на Arduino Mega с управлением через Nunchuk
- WiFi-умный замок на Arduino и ESP8266 — открывание с телефона