Manual
do
Maker
.
com
Eu andei pensando em como fazer uma bomba com Arduino para meu irmão utilizar em campo de airsoft (veja aqui o que é airsoft, se não conhece). Daí lembrei que há muitos anos, em uma era remota onde utilizava-se papel e caneta em brincadeiras familiares, eu conheci o jogo "pico ou tombo". Era muito divertido e suscetível a falha humana, mas ainda assim uma bela brincadeira. Tive uma ideia então; recriar o jogo para os tempos modernos, transformando-o em digital, mas de uma maneira totalmente diferente, desarmando uma bomba feita com Arduino. Prontos para diversão?
Esse tutorial é para brincadeira, para os makers e entusiastas do mundo digital. No máximo, um produto para brincar em airsoft. Não utilize esse projeto para pregar peças ou para se tornar um iniciante em terrorismo. Todo o problema causado por suas atitudes são de responsabilidade exclusivamente sua, esse tutorial tem apenas o propósito didático.
Voltando à diversão, para desarmar a bomba, será necessário descobrir uma combinação de 4 dígitos determinada no momento em que a bomba é armada. O timer está programado hardcoded, mas você pode implementar um código pra definir o tempo antes de coletar uma senha para a bomba. O feedback é dado em um display, que mostrará o quão perto você está do número inserido tão logo a bomba é ligada. Se você não acertar a seqüência, mas acertar um dígito em sua respectiva posição, você fez um pico. Se você não identificar a seqüência mas acertar um dígito fora de sua posição original, você fez um tombo. Vamos a um exemplo:
Senha definida para ativar a bomba: 4567
Você: 1234 - o digito 4 está contido fora de sua posição, então você tem 1 tombo.
Você: 5647 - o digito 4 ainda está fora da posição, você tem 1 tombo. O 5 e 6 também estão fora da posição, são mais 2 tombos. O 7 está na posição, então você tem um total de 1 pico e 3 tombos. Você já saberá quais são os números quando chegar nesse ponto, restará descobrir as posições para ter 4 picos, então desarma-se a bomba. O feedback seria exibido no display como 1P3T, que é 1 pico e 3 tombos.
A última regra é que nem na senha e nem nas tentativas poderá se repetir um número, ou seja, a senha é composta por 4 dígitos diferentes.
Pra jogar, será necessário um papel e caneta, para ir anotando as tentativas. Você anota o número antes de colocá-lo no display. No canto superior esquerdo aparecerão os picos e tombos, daí você anota no papel ao lado do número que você experimentou, até que chegará um momento em que você acertará a senha. Eu normalmente acerto com uma média de 8 ou 10 tentativas quando a senha é muito boa.
Ao acertar o número o buzzer é desligado, o timer é interrompido e a senha é exibida na tela. Porém, sem você não conseguir descobrir esse número em tempo hábil, a bomba "explodirá", acendendo um LED vermelho (foi o melhor que pude pensar pra agora). No final do artigo você verá um video tutorial com a bomba.
Primeiramente, o projeto lógico. Estou escrevendo esse artigo como roteiro para o projeto, e ao terminar esse artigo, o projeto também estará finalizado, então enquanto você lê é como se eu estivesse fazendo um lab. A idéia requererá duas vertentes; a parte física (a bomba propriamente dita) e a parte logica (programação). Vou descrever o projeto e então iniciamos a composição do objetivo.
Dá pra utilizar qualquer display suportado pelo Arduino e apesar de não ser comum vê-lo em bombas reais, estou utilizando um display OLED, mas você pode substituir por qualquer outro que desejar - e claro, redefinindo todo o controle do display. Um teclado numérico é a primeira coisa que vem à cabeça, mas dessa vez não. Aqui utilizo um potenciômetro com a sensibilidade ajustada para os 10 dígitos (0 à 9). Isso é interessante porque você tem que ajustar cuidadosamente a posição e com um teclado tiraria essa emoção causada pela pressa. O Arduino utilizado é o Nano com a base de acesso aos pinos, de modo que não precisei soldar nada. Um buzzer para ativar seu sistema nervoso será fundamental, um pack de bateria li-ion para alimentá-lo, um LED vermelho, 2 resistores, um potenciômetro 10K e assim concluímos a parte física. Descrevo os materiais mais adiante, inclusive indico os fornecedores.
Eu montei o circuito dentro de uma caixinha de papelão que depois pode ser disposta ao lado de um pacote fake de C4 e alguns fios de enfeite, tudo isso dentro de uma maleta de alumínio. Eu tenho a maleta de alumínio, então vou tentar dar uma caprichada na bomba, mas você pode fazer simplesmente o circuito preso a um pacote fake de C4. O material fica sendo:
1 maleta de alumínio.
1 buzzer. Contido no kit da GBK, é mais legal que o meu porque tem um LED.
1 power bank para alimentar o Arduino dentro da caixa.
1 potenciômetro - recomendo esse kit da GBK Robotics, ideal para evitar protoboard.
1 botão de estado temporário
1 Arduino Nano - que já vem nesse kit que recomendo "mesmo".
1 resistor de 330ohms
1 resistor de 100ohms
1 LED vermelho 5mm
jumpers femea-femea para fazer o wiring
As únicas partes que vão solda são o buzzer e o LED, sendo que o resistor de 330ohms vai para uma das pernas do LED e o resistor de 100ohms vai para uma perna do buzzer. Eu não tinha um resistor de 100ohms, então usei um de 140.
O programa ficou bastante longo, dando um total de 877 linhas. Por isso, invés de colocar trechos de código aqui no artigo, vou deixar apenas o link para o código no github, basta você clicar aqui para pegá-lo.
Uma das coisas mais importantes desse código está relacionado a esse artigo, onde falo de interrupções e timer com Arduino. Utilizei ambos os recursos.
A montagem é básica, dá pra ver melhor no video. Aliás, se você ainda não se inscreveu no canal Manual do Maker Brasil no youtube, pode ser um bom momento para fazê-lo e assim me motivar a fazer mais projetos como esse.
Basicamente, a conexão com o display está disposta no início do código, não tem como errar. Os demais pinos utilizados estão dispostos da seguinte maneira:
Potenciômetro | A0 |
Botão de estado | D2 |
Buzzer | D4 |
LED | D5 |
Aprecie o resultado.
Inscreva-se no nosso canal Manual do Maker no YouTube.
Também estamos no Instagram.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.