LittleArm 2C: 3D-печатаемый робот-манипулятор на Arduino для STEM-обучения
Компоненты и материалы
| Arduino Nano R3 | 1 |
| Сервоприводы MG90S (Tower Pro MG996R) | 4 |
| Плата Meped Board | 1 |
Инструменты
| 3D-принтер |
О проекте
LittleArm 2C — набор для детей, чтобы STEM-классы могли внедрять робототехнику. Конструкция усилена и упрощена: вся рука печатается на 3D-принтере, дизайн минималистичный, менее 15 винтов.
Управление: Windows-приложение (изначально на Python) или Bluetooth через Android-приложение.
Полная инструкция по сборке: здесь.
3D-модели для печати: здесь.
Код
LittleArm 2C Arduino Sketch (C/C++)
// LittleArm 2C arduino code // Позволяет последовательное управление 3D-печатаемой рукой LittleArm 2C // Created by Slant Concepts #include#include #define PI 3.141 Servo baseServo; Servo shoulderServo; Servo elbowServo; Servo gripperServo; // Глобальные переменные struct jointAngle { int base; int shoulder; int elbow; }; struct jointAngle desiredAngle; int desiredGrip; int gripperPos; int command; int desiredDelay; int servoParallelControl(int thePos, Servo theServo, int theSpeed); void setup() { Serial.begin(9600); baseServo.attach(5); shoulderServo.attach(4); elbowServo.attach(3); gripperServo.attach(2); Serial.setTimeout(50); Serial.println("started"); baseServo.write(90); shoulderServo.write(100); elbowServo.write(110); } void loop() { if (Serial.available()) { desiredAngle.base = Serial.parseInt(); desiredAngle.shoulder = Serial.parseInt(); desiredAngle.elbow = Serial.parseInt(); desiredGrip = Serial.parseInt(); desiredDelay = Serial.parseInt(); if (Serial.read() == '\n') { Serial.flush(); Serial.print('d'); // 'd' = done executing } } int status1 = 0, status2 = 0, status3 = 0, status4 = 0; int done = 0; while (done == 0) { status1 = servoParallelControl(desiredAngle.base, baseServo, desiredDelay); status2 = servoParallelControl(desiredAngle.shoulder, shoulderServo, desiredDelay); status3 = servoParallelControl(desiredAngle.elbow, elbowServo, desiredDelay); status4 = servoParallelControl(desiredGrip, gripperServo, desiredDelay); if (status1 == 1 && status2 == 1 && status3 == 1 && status4 == 1) { done = 1; } } } int servoParallelControl(int thePos, Servo theServo, int theSpeed) { int startPos = theServo.read(); int newPos = startPos; if (startPos < (thePos - 5)) { newPos = newPos + 1; theServo.write(newPos); delay(theSpeed); return 0; } else if (newPos > (thePos + 5)) { newPos = newPos - 1; theServo.write(newPos); delay(theSpeed); return 0; } else { return 1; // в пределах ±5 от цели } }
Схемы
При использовании Meped Board (под которую спроектирован LittleArm) нужно всего 4 соединения.
Производственный процесс
- Создание Bluetooth-робота на Raspberry Pi с аудио-обратной связью
- Создание интернет-управляемого видеostreaming-робота на Arduino и Raspberry Pi
- Haddington Dynamics: открытый, высокопроизводительный 3D-печатный робот Dexter
- Двухрукие SCARA-роботы: передовые решения для сборки и производства
- Роботизированная рука MeArm V1.0 — сборка на Arduino и Raspberry Pi
- Автономный линий-следующий робот на Arduino UNO
- Сборка функционального 3D-печатного манипулятора на Arduino: пошаговое руководство
- Роботизированная рука 6 степеней свободы на Arduino Mega с управлением через Nunchuk
- Голосовой робот на Arduino Nano: Управление речью через Bluetooth
- Управление манипулятором по Ethernet: Arduino 101 + WIZ750SR + Android-приложение