URoboBox - бесполезная коробка

ZSeregaA
ZSeregaA аватар
Offline
Зарегистрирован: 21.04.2013

Многие из вас наверняка знают и видели гаджет под названием «Бесполезная коробка». Но коробочка эта, вовсе не бесполезная, игра с ней дает немало положительных эмоций. Решив позабавить своих детей, друзей и знакомых, я сделал URoboBox. Это моя версия легендарной коробки.

URoboBox - Useless Robotic Box (Бесполезная Роботизированная Коробка). Коробочка получилась простая, с минимальной начинкой доступной каждому. Для тех, кто хочет сделать такую коробку, прилагаю подробную инструкцию по сборке и все необходимые файлы. Для начала давайте посмотрим что получилось.

URoboBox демонстрация работы:

http://www.youtube.com/watch?v=syfzV2MEBCM

URoboBox может работать в двух режимах, случайный выбор движений и по порядку. Коробочка имеет 7 движений для отключения тумблера, можно добавлять свои движения. Если рычаг по каким-то причинам не может выключить тумблер, то после трех попыток коробочка переходит в режим ожидания. Работа продолжится после отключение тумблера вручную. Далее идет часть для тех кто желает собрать такую коробочку самостоятельно.

Работа механизма в URoboBox:

http://www.youtube.com/watch?v=f3UQXzMd8FQ

Сделай сам:

http://robocontroller.ru/news/urobobox_bespoleznaja_robotizirovannaja_ko...

Специально для тех, кто захочет сделать такую коробочку, написал подробную инструкцию с фото и видео. Также прилагая все файлы проекта

ustas
Offline
Зарегистрирован: 12.03.2012

Отличная реализация! Надо повторить :)

ustas
Offline
Зарегистрирован: 12.03.2012

https://www.youtube.com/watch?v=i_OkE-DJZ-Y - еще одна реализация :)

karl2233
karl2233 аватар
Offline
Зарегистрирован: 05.07.2015

тут есть кто живой?

тема отличная, сделал одну коробку по инструкции, в смысле по коду.

автор молодец, спасибо!

 

есть замечания, предложения и вопрос:

1. серва, вначале, дергается в крайнее положение.  я устранил это так:

int pos1 = ServoMinPos; // Угол начальной установки серво

2. пытаюсь добавить ИК сенсор и на базе движения 2 его применить.

но что-то плохо получается (((

мож есть энтузазисты и мы продолжим изыскания?

3. автор, если бываешь в теме, мог бы дать комменты к коду? а то неофитам(я про себя) не всё понятно - что и для чего ;)

 

upd.добавил два движения с использованием ИК:

1. рычаг выходит приоткрывая круышку и следит. как только рука тянется к тумблеру - рычаг быстро выключает его.

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

правда в движении №2 не удалось запустить цикл и пришлось тупо копировать движения два раза.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Сначала предварительное замечание:

При ПРАВИЛЬНОЙ реализации коробки тумблер на крышке должен быть тумблером включения питания, а не декоративным тумблером, который на самом деле ничего не отключает кроме цепи, которую опрашивает конороллер. Соответственно, если такую коробку поставить в шкаф но полгода, после извлечения она должна продолжать демонстрировать работоспособность.

 

А теперь о самой реализации: для нее нужно:

- коробка с крышкой - 1 шт,

- тумблер - 1 шт,

- электродвигатель с рычагом - 1 шт,

- источник питания - 1 шт,

- пружина - 1 шт,

- контроллер - 0 шт.

karl2233
karl2233 аватар
Offline
Зарегистрирован: 05.07.2015

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

отдельную кнопку кто мешает? тут засад нет.

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Это вместо пружины?

Тогда появляются две проблемы:

1. Появляется необходимость в еще одной контактной группе.

2. Тумблер перестает быть выключателем питания, а потому коробка перестает быть ПРАВИЛЬНОЙ.

karl2233
karl2233 аватар
Offline
Зарегистрирован: 05.07.2015

какой пружины?! о_О

и что значит "правильная коробка"?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Пружина была в 5-й строке списка. Нужна для возвращения обесточенного устройства в исходное состочние.

А понятие правильного изделия или правильной программы приходит с опытам. Основано на интуиции и трудно формализуемо.

karl2233
karl2233 аватар
Offline
Зарегистрирован: 05.07.2015

andriano пишет:

Пружина была в 5-й строке списка. Нужна для возвращения обесточенного устройства в исходное состочние.

какое устройство?! о_О о чём ты? ты в той теме пишешь? =)

коробка? она на столе стоит, не надо её никуда возвращать, она никуда не деалась и не перемещалась.

рычаг? так его серва вернёт на место, без пружин.

тумблер? так его рычаг выключит, опять же без пружин.

крышку? так она под действием силы тяжести (привет от Ньютона) опустится на своё место, хотя с не сильной пружиной будет конечно не хуже.

в общем, вроде на русском написаны твои слова, но смысл как-то отсутствует в них ))))

andriano пишет:

А понятие правильного изделия или правильной программы приходит с опытам. Основано на интуиции и трудно формализуемо.

не надо ничего формализовывать! надо просто сказать что такое "правильная" коробка.

зачем плодить сущности сверх меры? мой вопрос был прост как три копейки  -"что такое правильная коробка".

в общем, опять буквы в твоём сообщении знакомые, а смысла чуть меньше чем нет вообще))))

как тебе удаётся такое? )))))) или ты поклялся на учебнике С++ свято хранить секрет "правильной коробки"?

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

karl2233 пишет:
какое устройство?! о_О о чём ты? ты в той теме пишешь? =)
Лично я пишу о сабже.

А Вы о чем подумали?

Цитата:

коробка? она на столе стоит, не надо её никуда возвращать, она никуда не деалась и не перемещалась.

рычаг? так его серва вернёт на место, без пружин.

тумблер? так его рычаг выключит, опять же без пружин.

Рычаг выключает тумблер питания, в результате чего устройство обесточивается.

Объясните мне, как обесточенная серва что-то куда-то сможет вернуть?

И кто будет управлять сервой, чтобы она хоть что-то делала?

Цитата:

в общем, вроде на русском написаны твои слова, но смысл как-то отсутствует в них ))))

"Я не вижу смысла" и "смысла нет" - отнюдь не тождественные утверждения.
Цитата:

не надо ничего формализовывать! надо просто сказать что такое "правильная" коробка.

Правильная коробка - та, что не содержит лишних деталей, и у которой тумблер на крышке - это выключатель питания.

karl2233
karl2233 аватар
Offline
Зарегистрирован: 05.07.2015

чё так скромно - "лишние детали"? надо развить тему, сделав коробку ещё более правильной: вообще всё убрать из неё.

а если же убрать саму коробку то будет по-нашему, по-бразильски, и тут наступит Сатори.

в общем ясно всё, каникулы такие каникулы. прочитав два раза твоё сообшение понимаю что не только в школе.

жги ещё )))) 

*popcorn*

andriano пишет:
Пружина была в 5-й строке списка. Нужна для возвращения обесточенного устройства в исходное состочние.

А понятие правильного изделия или правильной программы приходит с опытам. Основано на интуиции и трудно формализуемо.

andriano пишет:
Правильная коробка - та, что не содержит лишних деталей, и у которой тумблер на крышке - это выключатель питания.

я понял!!!! 

правильная коробка - это коробка содержащая одну пружину! и действительно, к чему эти сложности - Ардуино, мотор, тумблер программы эти дурацкие...

открыл коробку, а пружинка крышку вернула на место.

а чё? простенько и со вкусом. главное руку убарть - а то если пружина сильная так и прищемить может.

*ушел патентовать

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Боюсь, если убрать из коробки мотор и тумблер (Ардуино с программами там и так нету), то коробка перестанет соответствовать своему определению, а превратится в полезную коробку, в которой можно хранить еще более полезные вещи.

DDL
Offline
Зарегистрирован: 17.10.2015

Доброго времени суток всем! Люди добрые помогите. Пока я собирал эту коробочку с инета исчез код для Ардуино((((Если есть у кого киньте пожалуйсто. 

P.s Заранее благодарен.

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

совсем народ обленился...

http://goo.gl/z79BZX

DDL
Offline
Зарегистрирован: 17.10.2015

Я трое суток гуглю((( И в итоге всё кончается на странице автора((( А там его удолили(

DDL
Offline
Зарегистрирован: 17.10.2015

Tomasina Спасибо за ссыль. Но возникла сразу другая проблема с механикой( Сделал всё как указанно в инструкции Но серва не справляется с тумблером( упирается и жужжит. Перепробовал 3 вида тумблеров но результат тот-же. Может кто встречался с этой досадной неприятностью?

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

Надо более мощную серву. Или тумблер с длинным рычажком.

karl2233
karl2233 аватар
Offline
Зарегистрирован: 05.07.2015

DDL пишет:

Tomasina Спасибо за ссыль. Но возникла сразу другая проблема с механикой( Сделал всё как указанно в инструкции Но серва не справляется с тумблером( упирается и жужжит. Перепробовал 3 вида тумблеров но результат тот-же. Может кто встречался с этой досадной неприятностью?

пять вариантов:

1. другой тумблер нужен, с более мягким ходом.

2. рычаг должен толкать строго в верхнюю часть тумблера.

3. неудачная форма рычага, вызывающая неправилбную(ослабленную) передачу усилия.

4. регулировать серву, т.е. подобрать угол который будет при выключении - идеально 165-170.

5. различные комбинации п.1-п.4.

karl2233
karl2233 аватар
Offline
Зарегистрирован: 05.07.2015

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

Sergant
Offline
Зарегистрирован: 24.03.2016

Немного оживим тему...

Решил сделать подобную штуку, обсуждаемй здесь автор скетч удалил, и перешел на коммерческое распространение (не знаю успешно или нет), нашел другую схема ниже схема и скетч под спойлером, но работает как то криво, через несколько отработак начинает медлено работать серва и зависает, кто разбирается в коде подскажите где могут быть проблемы. Спасибо.

 

#include <Servo.h> //используем библиотеку для работы с сервоприводом
Servo servo; //объявляем переменную servo типа Servo
const int BUTTON=5;
int i=10;
int r=0;//
int n=0;//начальное положение  
int v=50;//выглянул
int p=80;//недошёл
int k=120;//конечное 
int t=350; //время до дотягивания
int y=0;
int x=1;
void setup() //процедура setup
 
{
pinMode (BUTTON,INPUT);
servo.attach(10); // привязываем серву к порту 10

}

void loop() //процедура loop

{servo.write(n);
  if (digitalRead(BUTTON)== HIGH)
 { y=n; x=1;

r = random(0,11); //генерируем случайное число jот 0 до 11
     Serial.println(r);
  if (r == 0) { move_0(); }  //вызов функции по случайному числу
  else if (r == 1) { move_1(); }  
  else if (r == 2) { move_2(); }
  else if (r == 3) { move_3(); }
  else if (r == 4) { move_4(); }
  else if (r == 5) { move_7(); }
  else if (r == 6) { move_0(); }
  else if (r == 7) { move_1(); }
  else if (r == 8) { move_2(); }
  else if (r == 9) { move_6(); }
  else if (r == 10) { move_0(); }
  else if (r == 11) { move_7(); }

 }
     }  

// Библиотека характеров

  void move_0()//обычный
  { servo.write(k); delay(t);
  servo.write(n); delay(t);}
  
   void move_1()
  { servo.write(v); delay(t);  delay(1000);
  servo.write(n); delay(t);  
  servo.write(k); delay(t);
  servo.write(n); delay(t);
  }
  void move_2()// бесится
  { servo.write(k); delay(t);  
  servo.write(p); delay(t);
  servo.write(p); delay(t);servo.write(k);delay(t);
  servo.write(p); delay(t);servo.write(k);delay(t);
  servo.write(p); delay(t);servo.write(k);delay(t);
  servo.write(p); delay(t);servo.write(k);
   
 
 }
void move_3() // переключение медленное 
  { { for (int y = n; y < k; y = y + x ){
      servo.write(y);
     
      delay(50);
      if (y == 110) x = -1;            
      delay(10);

      }
     
   
}
  }
  
   void move_4()// держит тумблер
  { servo.write(k); delay(3000);  
  servo.write(n); delay(t);}

   void move_5()// выключает с задержкой 
  {delay(2000); 
  servo.write(n); delay(t);}

  void move_6()// трясётся, тут нужно покапатся что б он стукался об крышку
  {servo.write(v-20); delay(50); servo.write(v-40); delay(50);
 servo.write(v-20); delay(50); servo.write(v-40); delay(50);
 servo.write(v-20); delay(50); servo.write(v-40); delay(50);
 servo.write(v-20); delay(50); servo.write(v-40); delay(50);
 servo.write(v-20); delay(50); servo.write(v-40); delay(50);
 servo.write(v-20); delay(50); servo.write(v-40); delay(50);
 servo.write(v-20); delay(50); servo.write(v-40); delay(50);
 servo.write(v-20); delay(50); servo.write(v-40); delay(50);
 servo.write(v-20); delay(50); servo.write(v-40); delay(50);
 servo.write(v-20); delay(50); servo.write(v-40); delay(50);
 servo.write(v-20); delay(50); servo.write(v-40); delay(50);
 servo.write(v-20); delay(50); servo.write(v-40); delay(50);
 servo.write(v-20); delay(50); servo.write(v-40); delay(50);
 servo.write(v-20); delay(50); servo.write(v-40); delay(50);
 servo.write(v-20); delay(50); servo.write(v-40); delay(50);
 
    
    servo.write(k);delay(t);
    }
    
     void move_7()// недошёл и вернулся
  {
  servo.write(p); delay(3000); servo.write(n);delay(t);
  }
  

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Sergant пишет:

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

Проблема не в коде, проблема в кроне.

Sergant
Offline
Зарегистрирован: 24.03.2016

На самом деле это понятно, я больше 4-5 вольт не запитывал, и при подаче на gnd+vin и при питании от USB одна ситуация

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

На Vin надо подавать не менее 7В.
5В подается на пин +5В

vashahov
Offline
Зарегистрирован: 02.03.2018

Всем добрый день . Ссылка на код удалена. Кто может скинуть ? Спасибо.

pev0270
Offline
Зарегистрирован: 02.11.2015

vashahov пишет:

Всем добрый день . Ссылка на код удалена. Кто может скинуть ? Спасибо.

Вот ведь не ленится народ поднимать такие темы... Учти в устройстве нужна Мега, иначе работать не будет :) в первоисточнике видел наверно...

А вот китайцы както извратильсь без ардуино сделать https://ru.aliexpress.com/item/Useless-Box-DIY-Kit-Useless-Machine-Birthday-Gift-Toy-Geek-Gadget-gags-Joke-Broad-game-Tricky/32686598879.html?spm=a2g0v.search0302.3.3.27d76ee2hDLoJT&ws_ab_test=searchweb0_0,searchweb201602_0_10152_10151_10618_10059_10534_10313_10084_100031_10083_10624_10623_10307_10626_10627_10341_10065_10340_10068_10343_10342_10125_10301_10543_10103_10620_10344_10622_10621,searchweb201603_0,ppcSwitch_0&algo_pvid=beef489c-f0a6-479a-909f-f620b04cb915&algo_expid=beef489c-f0a6-479a-909f-f620b04cb915-0

А вот видимо где они это дело подсмотрели https://www.drive2.ru/c/2987248/

Напишу код для включения лампочки в холодильнике, дорого... :)