Простой и доступный робот, которого можно изготовить при помощи 3D-печати.
В качестве контроллера, используется Arduino-совместимая плата (Adafruit Pro Trinket).
В качестве двигателей — два шаговых двигателя с редуктором (28YBJ48), только вместо драйвера ULN2003, используется драйвер ULN2803.
Для подъёма-опускания фломастера, используется мини-сервомашинка (похожа на SG-90).
Тестовый скетч — TIRL_Trinket_TEST.ino:
// Download and install Trinket Pro drivers from // https://learn.adafruit.com/introducing-pro-trinket/starting-the-bootloader // [Tools] -> [Programmer] -> "USBtinyISP" // [Tools] -> [Board] -> "Pro Trinket 3V/12 Mhz (USB)" #include <Servo.h> // setup servo int servoPin = 8; int PEN_DOWN = 170; // angle of servo when pen is down int PEN_UP = 80; // angle of servo when pen is up Servo penServo; int wheel_dia=66.25; // # mm (increase = spiral out) int wheel_base=112; //, # mm (increase = spiral in) int steps_rev=128; //, # 512 for 64x gearbox, 128 for 16x gearbox int delay_time=6; // # time between steps in ms // Stepper sequence org->pink->blue->yel int L_stepper_pins[] = {10, 12, 13, 11}; int R_stepper_pins[] = {3, 5, 6, 4}; int fwd_mask[][4] = {{1, 0, 1, 0}, {0, 1, 1, 0}, {0, 1, 0, 1}, {1, 0, 0, 1}}; int rev_mask[][4] = {{1, 0, 0, 1}, {0, 1, 0, 1}, {0, 1, 1, 0}, {1, 0, 1, 0}}; void setup() { randomSeed(analogRead(1)); // put your setup code here, to run once: Serial.begin(9600); for(int pin=0; pin<4; pin++){ pinMode(L_stepper_pins[pin], OUTPUT); digitalWrite(L_stepper_pins[pin], LOW); pinMode(R_stepper_pins[pin], OUTPUT); digitalWrite(R_stepper_pins[pin], LOW); } penServo.attach(servoPin); Serial.println("setup"); } void loop(){ // draw a calibration box 4 times pendown(); for(int x=0; x<12; x++){ forward(100); left(90); } penup(); done(); // releases stepper motor while(1); // wait for reset } // ----- HELPER FUNCTIONS ----------- int step(float distance){ int steps = distance * steps_rev / (wheel_dia * 3.1412); //24.61 /* Serial.print(distance); Serial.print(" "); Serial.print(steps_rev); Serial.print(" "); Serial.print(wheel_dia); Serial.print(" "); Serial.println(steps); delay(1000);*/ return steps; } void forward(float distance){ int steps = step(distance); Serial.println(steps); for(int step=0; stepЭлементы для 3D-печати:
1 x Держатель шарика
1 x Шасси робота
2 x Колёса для шагового двигателя 28BYJ-48
2 x Держатель шагового двигателя
1 x Держатель фломастера и сервомашинки
1 x Упор-ограничитель для фломастераСсылки
Low-Cost, Arduino-Compatible Drawing Robot
http://mirobot.ioПо теме
LogoBot - простой робот для изготовления при помощи 3D-печати
Изготовление виброботов при помощи 3D-печати
PANDA - самодельный робот-чистильщик на базе Arduino и 3D-печати
Простой Arduino-робот на одном моторе и сервомашинке
Простой робот из китайских игрушек на базе CraftDuino