Montagem de “Caixa Inútil” (Useless Box)

Jefferson Proesi 0

Este tutorial serve pra você, apaixonado por eletrônica, montar sua caixa inútil, no formato e com o material que estiver à sua disposição, como você pode facilmente achar alguns layouts para impressão, e desenvolver com papelão, de forma mais pratica, ou desenvolver com uma caixa de madeira que foi o caminho que escolhemos. É um projeto simples em seu desenvolvimento, e demanda de poucos materiais.

Material:

Na internet, existem outros tutorias que ensinam montar caixas sem o ursinho, só com o braço mecânico. Para começar a montagem, calculamos o espaço que o arduino iria ocupar junto com o braço e o arduino, conseguimos posicionar no centro da caixa. A preparação do ursinho é a parte mais dolorosa.

Ursinho escolhido e preparação

 

A cabeça do urso fica colada na tampa e o tecido preto, serve para dar um acabamento quando a caixa estiver funcionando. Agora montamos o urso e o arduino para definir o tamanho dos suportes, disposição da placa e do botão.

inicio da montagem

 

Para facilitar, montamos gabaritos em papel para depois poder fazer as montagens. Você não vai acertar as posições de primeira, no nosso caso foram montados 3 gabaritos antes de acertar no tamanho da pata. Depois da peças montadas, botão fixado, cabeça do urso colada, o resultado será este.

Desenhos e colagem

 

Detalhes importantes, o tecido da pata foi usado o tecido do braço do ursinho, sobre conjunto para fazer a abertura da tampa, vários tutorias usam somente uma madeira deslizando pela tampa, optamos por algo fixo na tampa, mais trabalhoso, porém não corre o risco da tampa cair sozinha durante os movimentos ou de ser aberto manualmente. Terminado a parte mecânica, agora montamos o arduino e suas ligações.

Os servos, até podem ser alimentado pelo próprio arduino, porém não é recomendado, ideal é usar alimentação externa, por isso que usamos capacitor na 470 uf antes do LM 7805 e na saída um de 330uf montados numa placa ilhada para ficar organizado. Depois da caixa montada, os servos quando energizados se deslocavam para a posição de 90 graus e acabavam por se trancar, para isso não acontecer, foi montado um transistor BD139 como chave (enable) dos servos.

Montagem da placa

 

Para o arduino, saem os pinos de controle dos servos, da chave alavanca, da base do BD139. Voce vai começar a programar e vai alterando os angulos dos servos, evite batidas fortes das peças ou que os servos trabalhem forçados de mais, isso vai evitar desgate ou quebra dos servos.

 

Para Poupar tempo ou servir como exemplo, segue o programa usado. As interações podem ser programadas como você bem entender. Nosso programa foi programado para ter 5 interações diferentes e após isto, o programa se encerra.

Você pode baixar este Sketch (programa) direto do nosso GitHub:
Ver pagina no Github

/*
* Projeto caixa inútil - Unsless box
* Projeto desenvolvido por Venancio Miranda e Proesi Componentes

#include <Servo.h>
#define enablePin  11
#define botao      10
#define servo_pata  9
#define servo_tampa 8

// Posições da tampa

#define fecha   152
#define meio     70
#define abre      0
#define bate    165
#define fresta  140
#define Tbatida 100

// Posições pata

#define guarda 180
#define aceno   60
#define desl    10

boolean limite = true;
int count = 0, button = 0 , enable = 0;

Servo pata;
Servo tampa;

// Função que orienta posição dos servos e delay entre nova movimentação

void comando (Servo nome_servo,int grau ,int tempo)

{
nome_servo.write(grau);
delay(tempo);
}

void setup()
{
pinMode(botao , INPUT_PULLUP);
pinMode(enablePin , OUTPUT);
digitalWrite(enablePin,LOW);
pata.attach(servo_pata);
tampa.attach(servo_tampa);
}

void loop()
{
while(limite)                     //While que executa limite de execuções
{
digitalWrite(enablePin,LOW);
button = digitalRead(botao);

if(button == LOW)
{
switch(count)                 // contagem e sequencia dos movimentos
{
case 0:
digitalWrite(enablePin,HIGH);
delay(500);
comando(tampa , abre , 750);
comando(pata , desl, 1000);
comando(pata , guarda , 1000);
comando(tampa, fecha , 2000);
count++;
break;

case 1:
digitalWrite(enablePin,HIGH);
delay(1000);
comando(tampa , meio, 2000);
comando(tampa, fecha, 1000);
comando(tampa , abre , 1000);
comando(pata , desl, 1000);
comando(pata , guarda , 1000);
comando(tampa, fecha , 2000);
count++;
break;

case 2:
digitalWrite(enablePin,HIGH);
delay(2000);
comando(tampa , fresta , Tbatida);
comando(tampa , bate   , Tbatida);
comando(tampa , fresta , Tbatida);
comando(tampa , bate   , Tbatida);
comando(tampa , fresta , Tbatida);
comando(tampa , bate   , Tbatida);
comando(tampa , fresta , Tbatida);
comando(tampa , bate   , Tbatida);
comando(tampa , fresta , Tbatida);
comando(tampa , bate   , Tbatida);
comando(tampa , fresta , Tbatida);
comando(tampa , bate   , Tbatida);
comando(tampa , fresta , Tbatida);
comando(tampa , bate   , Tbatida);
comando(tampa , fresta , Tbatida);
comando(tampa , bate   , Tbatida);
comando(tampa , abre , 1000);
comando(pata , desl, 1000);
comando(pata,aceno,300);
comando(pata,desl,300);
comando(pata,aceno,300);
comando(pata,desl,300);
comando(pata,aceno,300);
comando(pata,desl,2000);
comando(pata , guarda , 1000);
comando(tampa, fecha , 2000);
count++;
break;

case 3:
digitalWrite(enablePin,HIGH);
delay(3000);
comando(tampa , abre , 750);
comando(pata , desl, 1000);
comando(pata , guarda , 1000);
comando(tampa, fecha , 1500);
comando(tampa , abre , 1500);
comando(pata,desl,300);
comando(pata,aceno,300);
comando(pata,desl,300);
comando(pata,aceno,300);
comando(pata,desl,2000);
comando(pata,guarda,1000);
comando(tampa, fecha , 2000);
comando(tampa , meio, 2000);
comando(tampa, fecha, 1000);
count++;
break;

case 4:
digitalWrite(enablePin,HIGH);
comando(tampa , fresta , Tbatida);
comando(tampa , bate   , Tbatida);
comando(tampa , fresta , Tbatida);
comando(tampa , bate   , Tbatida);
comando(tampa , fresta , Tbatida);
comando(tampa , bate   , Tbatida);
comando(tampa , fresta , Tbatida);
comando(tampa , bate   , Tbatida);
comando(tampa , fresta , Tbatida);
comando(tampa , bate   , Tbatida);
comando(tampa , fresta , Tbatida);
comando(tampa , bate   , Tbatida);
comando(tampa , fresta , Tbatida);
comando(tampa , bate   , Tbatida);
comando(tampa , fresta , Tbatida);
comando(tampa , bate   , Tbatida);
comando(tampa , fresta , Tbatida);
comando(tampa , bate   , Tbatida);
comando(tampa , fresta , Tbatida);
comando(tampa , bate   , Tbatida);
comando(tampa , fresta , Tbatida);
comando(tampa , bate   , Tbatida);
comando(tampa , fresta , Tbatida);
comando(tampa , bate   , Tbatida);
comando(tampa , fresta , Tbatida);
comando(tampa , bate   , Tbatida);
comando(tampa , fresta , Tbatida);
comando(tampa , bate   , Tbatida);
comando(tampa , fresta , Tbatida);
comando(tampa , bate   , Tbatida);
comando(tampa , fresta , Tbatida);
comando(tampa , bate   , Tbatida);
comando(tampa, abre, 750);
comando(tampa, bate, 750);
comando(tampa, abre, 1250);
comando(pata , desl, 1000);
comando(pata , guarda , 1000);
comando(tampa, fecha , 2000);
limite = false;                         //encerra while
break;

}

}

}

}

Nosso resultado final foi este, já com os devidos acabamentos.

foto5

Gostou?
Deixe seu comentário
Até a Próxima !

Escrito por: Venâncio Miranda
Revisão por: Jefferson Proesi


Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

2  +  8  =