12 de abril de 2021

Do bit Ao Byte

Embarcados, Linux e programação

Como fazer uma bomba com Arduino

Bomba com arduino

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ômetroA0
Botão de estadoD2
BuzzerD4
LEDD5

Aprecie o resultado.

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

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!