+7-960-0655211 (Билайн)
+7-987-4207734 (МТС)

интернет-магазин
доставка по России и СНГ
работаем с 2010 года

Поедатель монет

Поедатель монет


01.jpg


Это еще одна версия "Голодного робота", который был сделан в 2018 году. Вы можете сделать этого робота без 3D-принтера. Все, что вам нужно, это коробка из-под чипсов, сервопривод, инфракрасный дальномер, Arduino и немного инструментов.

ПОДГОТОВКА


02.jpg
 

Список основных деталей:

• 1 х Arduino Nano
• 1 х инфракрасный датчик расстояния GP2Y0A21YK0F
• 1 х микросервопривод MG90 или подобный (FS90MG и т.д.)
• 2 х наклеиваемые глаза (могут быть к примеру, в магазинах, где продают бисер), не обязательно – можно и нарисовать
• нейлоновые стяжки
• соединительные провода
• 6 х пластиковые заглушки для провода или термоусадка
• 1 х клеевой пистолет
• немного картона или плотной бумаги

ПЕЧАТЬ ВЫКРОЙКИ



03.jpg
 

Чертежи для распечатки можно скачать по ссылке.

PDF с выкройкой распечатайте в оригинальном размере без перемасштабирования.

В зависимости от Вашего принтера интерфейс может отличаться, для примера приведу пару скриншотов, как может выглядеть настройка масштабирования:


04.jpg

05.jpg
 
 

ДЕЛАЕМ КОРПУС

Приклейте выкройку к картону или плотной бумаге и вырежьте по контуру. Эти две части предназначены для разделения пространства внутри робота.


06.jpg
07.jpg
08.jpg
   

Теперь отрезаем прямоугольник по линии, как показано на следующем фото:


09.jpg

Приклеиваем его на банку с помощью клея и потом липкой лентой по краям:


10.jpg
    

Теперь нужно обрезать банку. Канцелярским ножом немного не удобно точно отрезать, поэтому сначала отрежем чуть больше и потом ножницами вырежем более точно. Будьте осторожны, канцелярским ножом можно очень сильно порезаться, т.к. при разрезании банки он очень легко может соскочить. Большим пальцем не следует обхватывать банку, как показано на следующем фото:


11.jpg

Более безопасно прижать палец к ладони и прижать банку к столу рукой сверху:

 

12.jpg

Теперь ножницами отрежем по шаблону:

 
13.jpg

Теперь делаем отверстия для сервопривода и USB-шнура:


14.jpg
15.jpg
16.jpg
17.jpg
18.jpg

С выкройки отрезаем следующую полоску и делаем верхнюю часть:


19.jpg
20.jpg
21.jpg
22.jpg
   

Для рук вырезаем следующую часть выкройки:


23.jpg


Приклеиваем:


24.jpg

Вырезаем:


25.jpg
 

Делаем по шаблону четыре отверстия: 


26.jpg

27.jpg

28.jpg


Теперь прорезаем и сгибаем:


29.jpg
30.jpg
31.jpg
32.jpg 
  

Вставляем качалку сервопривода и затем с помощью клеевого пистолета закрепляем:

 
 33.jpg
34.jpg
35.jpg
 

Делаем деталь, которая будет приподымать голову:


36.jpg
37.jpg
38.jpg
39.jpg

  

Такие инфракрасные дальномеры обычно идут в комплекте с проводами, на одном конце которых есть разъём для подключения к дальномеру, а на обратной стороне провода ничего нет. Обрежем соединительные провода мама-мама и припаяем их к проводам дальномера, что бы его можно было подключить к Arduino. В зависимости, что у Вас есть в наличии и удобней (термоусадка, специальные колпачки, изолента и т.д.), то и используйте. В данном случае использовались колпачки:


40.jpg


Для подключения сервопривода можно сделать также:


41.jpg


Что бы не портить шнур, можно использовать соединительные провода папа-мама:


42.jpg


ПРОШИВКА

Если у Вас ещё не установлена Arduino IDE, загрузите её с на официального сайта и установите.

Если у Вас версия Arduino Nano c USB-UART на CH340 или CH341, драйвера для него можно скачать по ссылке.

Скетч для Arduino:

#include <Servo.h>

// let's make an instance of Servo
Servo armServo;

// this function automatically runs only once when the Arduino's power up
void setup() {

  // we use pin number 12 for control the robot.
  armServo.attach(12);
  // move the motor to default angle
  armServo.write(90);

  // pin A7 is for the distance sensor
  pinMode(A7, INPUT);

  // these 3 pins (pin0, pin1, pin13) are for turning on LEDs
  // Arduino nano already has 3 LEDs on these pins.
  pinMode(13, OUTPUT);
  pinMode(0, OUTPUT);
  pinMode(1, OUTPUT);
}

// in order to check coming hand,
// we will keep the sensor value these variables
int sensorValue = 0;
int prevSensorValue = 0;

// When the sensor value is hight than the THRESHOLD value,
// The code will call action();
const int THRESHOLD = 360;

void loop() {

  // read A7's analog value and asign the value into sensorValue
  sensorValue = analogRead(A7);

  // these two lines means that some object has come
  // from outside of Threshold to inside of it.
  if (prevSensorValue <= THRESHOLD) {
    if (sensorValue > THRESHOLD) {
      // It's time to action
      action();
    }
  }

  // regardless the action, save current sensor value prevSensorValue
  // so that we can check the direction
  prevSensorValue = sensorValue;

  // this delay controls how often this loop is running
  // without this delay, this loop runs too fast
  // then, the differences between previous and current sensor value
  // can not be meaningful.
  delay(10);
}


void action() {
  // call this function for turning on three LEDs all together
  led(true);

  // eating sequence
  // wait 1000ms (1 second)
  delay(1000);

  // let's use pin12 for motor control
  armServo.attach(12);
  // let's move the motor to degree '10' (move the arm up)
  armServo.write(10);

  // wait 300 ms
  delay(300);

  // let's move the motor to degree '70' (move the arm down)
  armServo.write(70);
  delay(500);

  // after ate
  delay(100);
  armServo.write(50);
  delay(250);
  armServo.write(70);
  delay(250);
  armServo.write(50);
  delay(250);
  armServo.write(70);
  delay(250);
  armServo.write(50);
  delay(250);
  armServo.write(70);
  delay(250);
  armServo.write(50);
  delay(250);
  armServo.write(90);
  delay(250);

  // release arm's torque
  armServo.detach();

  // call this function for turning off three LEDs all together
  led(false);
}

void led(bool onOff) {
  // pin 13's LED turns on when it is high
  // pin 0, 1's LED turn on when it is low
  if (onOff) {
    digitalWrite(13, HIGH);
    digitalWrite(0, LOW);
    digitalWrite(1, LOW);
  } else {
    digitalWrite(13, LOW);
    digitalWrite(0, HIGH);
    digitalWrite(1, HIGH);
  }
}

Загрузив скетч в Arduino Nano, переходим к установке деталей внутри корпуса.

С помощью клеевого пистолета закрепляем сервопривод и инфракрасный дальномер:


43.jpg

44.jpg

45.jpg


Подключаем Arduino Nano и размещаем её на дне корпуса:

 
46.jpg
47.jpg
48.jpg
 

Наденьте качалку на сервопривод, подключите питание Arduino с помощью USB-кабеля и отрегулируйте угол руки. Поскольку этот робот очень маленького размера, такие детали как подшипники, использовать не имеет смысла, поэтому руки закреплять будем с помощью нейлоновых стяжек закрепляем руки.  Что бы не замкнуть монетами электронику и монета не проваливалась и прикрываем Arduino сверху диском:


 49.jpg
50.jpg
51.jpg
52.jpg
53.jpg
 
   

Прикрепляем верх, приклеиваем или рисуем глаза:


54.jpg

55.jpg

56.jpg


На этом всё, наш робот, поедающий монеты готов:


57.jpg
58.jpg

Возможно некоторые моменты по фотографиям могут быть непонятны, поэтому в видео кроме демонстрации работы также добавил видеолог по сборке.






Автор: HappyThingsMaker (Eunchan Park)
Перевод и адаптация: RobotoTehnika.ru