Робот-копилка

Technomagic
Technomagic аватар
Offline
Зарегистрирован: 13.01.2022

Приветствую форумчан. Представляем вашему вниманию робокопилку. В роботе применен всего один сервопривод, датчик расстояния и контроллер. Проект подходит для сборки начинающим разработчикам при условии, что у вас есть паяльник, 3д-принтер и большой адронный коллайдер.

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

Детали для печати корпуса на 3д-принтере лежат на thingiverse.

[​IMG]

Для сборки проекта понадобится:

  • Arduino pro mini
  • Ультразвуковой дальномер HC-SR04
  • Сервопривод SG90 или аналогичный
  • Блок питания 5V или аккумуляторы
  • Корпус напечатанный на 3D-принтере
  • Светодиод и резистор 220 Ом (опционально)

Схема:

Код для Arduino:

01// Пины для подключения дальномера, светодиода, сервопривода//
02#define trigPin 9   //
03#define echoPin 8   //
04#define led 10      //
05#define servopin 7  //
06 
07//основные параметры
08#define chewing 4   // Сколько раз пережёвываем проглоченное
09#define blizost 10  // Расстояние, до которого будет реагировать датчик (в сантиметрах)
10 
11//состояния открытия рта. Всего их три: закрыт, открыт, приоткрыт.
12//Настраиваются индивидуально под каждый сервопривод (значения от 0 до 180 градусов).
13#define mouthClose 90 // Рот закрыт
14#define mouthOpen 30  // Рот открыт
15#define mouthAjar 70  // Рот приоткрыт
16 
17#include <Servo.h>    // Подключаем библиотеку сервопривода
18Servo Sergo;     
19 
20void setup() {
21  Serial.begin(9600);      //Инициализируем последовательный порт чтобы выводить в него расстояния определенное датчиком
22  
23  pinMode(trigPin, OUTPUT); //
24  pinMode(echoPin, INPUT);
25 
26  Sergo.attach(servopin);   // в скобках номера пина к которому подключен сервопривод
27  sleep();                  // установим сервопривод в исходное положение, т.е. рот закрыт
28}
29 
30void loop() {
31  int duration, distance;
32  digitalWrite(trigPin, LOW);     // Для большей точности установим значение LOW на пине Trig
33  delayMicroseconds(2);
34  digitalWrite(trigPin, HIGH);    // Теперь установим высокий уровень на пине Trig
35  delayMicroseconds(10);       
36  digitalWrite(trigPin, LOW);
37  duration = pulseIn(echoPin, HIGH); // Узнаем длительность высокого сигнала на пине Echo
38  //Переводим скорость звука из 343 м/с в см/мкс: s = duration/29
39  //Поскольку расстояние пройдено дважды, то s = duration / (29*2)
40 
41  distance = duration / 58;       // Рассчитываем расстояние в сантиметрах
42  Serial.print(distance);         // Выведем значение в Serial Monitor
43  Serial.println(" cm");
44 
45  if (distance < blizost) {       // Если расстояние до предмета меньше заданного, то проглатываем
46    om_nom_nom();
47    digitalWrite(led, HIGH);
48  }
49  delay(100);
50}
51 
52void om_nom_nom() {
53  digitalWrite(led, HIGH);  // Зажигаем лампочкой
54  Sergo.attach(servopin);   // Подключаем сервопривод
55  delay(200);
56 
57  Sergo.write(mouthOpen);          // открываем рот и ждем пока предмет свалится в него
58  delay(700);
59 
60  // жуем //
61  for (int x = 0; x < chewing; x++) {
62    Sergo.write(mouthAjar);
63    delay(250);
64    Sergo.write(mouthOpen);
65    delay(250);
66    Serial.println("nyam");
67  }
68  sleep();  //спим
69}
70 
71void sleep(){
72  Sergo.write(mouthClose);
73  delay(250);
74 
75  Sergo.detach();         // отключаем питание сервопривода, иначе он будет жужжать
76  digitalWrite(led, LOW); // гасим светодиод
77}

Видео с процессом изготовления и демонстрация работы робота на YouTube. https://youtu.be/6AjMIHM4uXA

FoxJone
Offline
Зарегистрирован: 19.04.2019

Красивое...

Но 3Д-принтера, увы, нету... В принципе, я так понимаю, что подойдет любая банка с открывающейся крышкой + подобрать какой то совок.

lilik
Offline
Зарегистрирован: 19.10.2017

Тема хорошая - образовательная.

И печать, и программирование, и оформление проекта.

Вот тут идеи как можно робота-копилку сделать:

http://roboforum.ru/forum10/topic18094-210.html

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

для экономии батарей в спячку отправлять еще бы

Morroc
Offline
Зарегистрирован: 24.10.2016

Да вообще лучше микрик под "ковш" и просто по нажатию закидывать. Правда МК этой штуке вроде как и не нужен, ну да пофиг )

sadman41
Offline
Зарегистрирован: 19.10.2016

C ультразвуковым датчиком он может рот заранее приоткрывать при приближении объекта. 

FoxJone
Offline
Зарегистрирован: 19.04.2019

Morroc пишет:
Правда МК этой штуке вроде как и не нужен, ну да пофиг )

Ну как же...

Приходит молодой хакер к матерому и спрашивает -Гуру, научи как взломать банкомат?

-Ну берешь ноутбук и кувалду, подходишь к банкомату, бьешь его кувалдой, он разбивается, хватаешь бабки и смываешься.

-А ноутбук то зачем?

-А какой ты хакер без ноутбука?

Technomagic
Technomagic аватар
Offline
Зарегистрирован: 13.01.2022

Ардуинофобы детектед)