Como fazer uma bomba com Arduino

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?

Como fazer uma bomba com Arduino

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.

Pico ou tombo





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 pico3 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 digitos 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.

Projeto

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.

Parte física

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.

Parte lógica

  • Quando o Arduino é ligado, a senha para ativar a bomba é solicitada e o buzzer e timer ainda não serão ativados.
  • O número correspondente à posição do potenciômetro é sempre exibido na tela, portanto sempre volte o potenciômetro para a posição 0 quando tiver selecionado o último digito da senha.
  • Após armar a bomba, sempre que o quarto dígito for selecionado, a sequência é comparada com a senha. Pico e Tombo são então exibidos ao lado do contador regressivo.
  • Se a senha não for descoberta dentro do tempo limite,  todo o processo é desarmado e o LED vermelho acende. Para rearmar, deve-se fazer um reset no Arduino
  • Se a senha for descoberta, o timer é desativado e a senha é exibida na tela. O último estado de Pico e Tombo são mantidos na tela, assim como o contador regressivo, para a eventualidade de querer tirar uma foto para marcar os recordes de agilidade no desarme da bomba.

Materiais

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 display OLED.

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 base para acesso aos GPIO

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.

Programa





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.

Montagem

Montagem da bomba com Arduino
Montagem da bomba com Arduino

A montagem é básica, dá pra ver melhor no video. Aliás, se você ainda não se inscreveu no canal Do bit Ao Byte 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.

Vá até o final da página e veja se os artigos relacionados lhe interessam.

1 Star2 Stars3 Stars4 Stars5 Stars (987 votes, average: 5,00 out of 5)
Loading...

Inscreva-se no nosso newsletter, alí em cima à direita e receba novos posts por email.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do bit Ao Byte – https://www.facebook.com/groups/dobitaobyte/

Projetos Arduino e Eletrônica – https://www.facebook.com/groups/projetosarduinoeletronica/

ESP8266 BR – https://www.facebook.com/groups/ESP8266BR/

Próximo post a caminho!

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.