Índice:
- Suprimentos
- Etapa 1: os sensores sem fio
- Etapa 2: o controlador do jogo
- Etapa 3: Raspberry Pi
- Etapa 4: configure o jogo
Vídeo: Jogo de tiro Arduino V3: 4 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-31 10:23
Este jogo é para você que usa airsoft ou co2 para atirar em alvos. É um jogo.
Para informações atualizadas sobre o jogo e suporte:
www.facebook.com/arduinoshooting/
Para minha página de blog sobre o jogo:
shootinggameblog.wordpress.com
Para os códigos sobre o jogo:
github.com/shootinggame82/Shooting-game-v3
O jogo de tiro é x alvos sem fio, cada alvo tem um sensor de vibração que sente a vibração que recebe quando um acerto é feito. Os sensores wireless são um chip Atmega328 (chip Arduino Uno) e possuem bateria Li-Po recarregável.
O controlador principal deste jogo é controlado por um Arduino e é controlado serialmente a partir de um Raspberry Pi.
Então, como este jogo está funcionando? Bem, são três modos de jogo:
Quicktime: Jogue X rodadas e atire o mais rápido que puder em cada alvo.
Modo de tempo: atire em quantos alvos puder em X segundos.
Rapidfire: Atire X tiros no tempo mais rápido.
O sistema usa transmissores NRF24L01 para obter uma boa distância do controlador principal. Eles funcionam em 2,6 GHz (o mesmo que o WiFi funciona)
Em meus projetos anteriores, usei o Piezo para a vibração, mas agora o interruptor do sensor de vibração é usado. Mas você ainda pode usar o Piezo se tiver feito minha versão antiga deste jogo.
O jogo tem uma tela de toque do Raspberry Pi 7 que contém o sistema da web por meio do qual você controla o jogo. Uma impressora de terminal imprime os resultados.
Suprimentos
Para transmissores:
- X Atmega328 com Arduino Bootloader (dependendo de quantos destinos)
- Chave do sensor de vibração X
- X Azul Led
- X Led Verde
- X Led Vermelho
- Bateria Li-Po X 3,7v
- Módulo carregador Li-Po X FC-75 (ou outro modelo)
- Capacitor X 100 uF
- Casos X para os sensores
- X LD1117V33 (Torna 3,3 V seguro para o transmissor)
- Módulos X NRF24L01
- X x 3 resistores de 220 Ohm (3 são necessários para um alvo)
- Cristal X 16 MHz
- X x 2 Capacitores não plorizados 22 pF (2 são necessários para um alvo)
Para o Arduino principal:
- 1 Arduino (Nano ou Uno é recomendado, precisa ter USB)
- 1 Módulo NRF24L01
- 1 capacitor 10 uF
Para framboesa Pi:
- Raspberry Pi (usei 3B)
- 7 "Touch Screen
- ATXRaspi (opcional, mas um bom módulo do botão liga / desliga)
- RTCRaspi (opcional, mas um bom módulo RTC para manter a hora e a data)
- Impressora térmica (opcional, mas precisava ser capaz de imprimir)
- Leitor de código de barras (versão USB que funciona como um teclado, opcional)
- Boa alimentação de 5 V (usei um antigo USB de 12 V com alimentação de 2,5 A)
Outras coisas:
- Potência 12v (tenho um a 12 Ah)
- Soquete de rede (facilita a conexão à rede)
- Cabos
Etapa 1: os sensores sem fio
Vamos começar a fazer os sensores. Eu uso 4 sensores para este jogo. Mas você pode adicionar mais sensores facilmente. Os sensores se comunicam com um código de 4 números quando o sistema principal envia o código com qual função o sensor com o código certo acenderá e estará pronto para o alvo. A luz azul é para informar que é esse alvo que você vai acertar.
Também temos um led verde e um led vermelho. O verde sempre acende para informar que o sensor está ligado. O vermelho só acenderá quando a bateria estiver abaixo de 3,1 V (ele usa a função embutida no chip para calcular quanto há na bateria.
O sensor de vibração é conectado ao pino analógico e lê seu valor. Quando o valor está afundando, o sensor captou uma vibração e é aí que registramos o acerto.
O alvo possui uma função à prova de falhas, que caso você não acerte em X segundos (o padrão é 15 segundos) ou se a transmissão não puder ser feita eles voltarão à posição inicial.
Não vou explicar como você vai fazer a fiação, verifique a ficha elétrica para ver como você vai fazer isso. A única coisa que não está nela é a bateria, o botão liga / desliga e o carregador. Cabe a você decidir como deseja.
IMPORTAÇÃO SOBRE O Módulo NRF24L +:
Pode ser difícil … mantê-los estáveis, combinado com boa potência e isolamento ao redor, e o código que você fará com que funcionem. Para mim, um capacitor de 10 uF me dará uma conexão estável e boa, mas tente primeiro caso você precise, por exemplo, de um capacitor de 100 uF. Também embrulhe-os primeiro com folha de plástico e depois com folha de alumínio para protegê-los de interferências
Também no código, a taxa de dados que você não precisa mais do que 250 Kb, então esse não será o problema. Mas o PA: myRadio.setPALevel (RF24_PA_MIN);
No código que defini como MIN (isso é durante o teste), é o mais baixo e não usará tanta energia, mas o alcance não será tão longo. Se você os tiver estável e com boa potência, pode ir até RF24_PA_MAX para obter o maior alcance, MAS eles precisam de GOOOOOD potência estável para isso. Tente também LOW E HIGH (alterar apenas o texto MAX) para ver se você consegue uma boa comunicação. Além disso, você terá um bom alcance em BAIXO e ALTO, a menos que seja um atirador de elite
Além disso, mantenha os transmissores a pelo menos um metro de distância, pois fechar pode tornar o sinal ruim
Teste a comunicação com algum exemplo de ping na biblioteca NRF24 (link no GitHub)
No código, você precisa definir o número de identificação exclusivo para esse alvo:
int targID = 3401; // Este é o ID de destino
int sendID = 2401; // Este é o ID da resposta
Existem também 3 funções DEFINE:
#define DEBUG
#define BATERIA
#define SHAKE // SE SHAKE SWITCH FOR USADO EM VEZ DO ANTIGO PIEZO
DEPURAR:
Durante o teste, é bom ter definido isso. Mas quando você estiver disponibilizando-os, não os tenha ativado.
BATERIA:
Se você não quiser ter um verificador de bateria para os alvos, você precisa remover esta definição.
SACUDIR:
Se você construiu minha versão antiga, tem sensores piezoelétricos, remova-os para obter o código correto para eles.
Chip ATMEGA328
Em vez de um Arduino nano, decidi usar o chip ATMEGA328 (com carregador de boot Uno), eles são simples de programar, basta remover o chip de um Arduino Uno e adicionar esse chip e fazer o upload do código. Verifique o esquema elétrico sobre como construir os alvos.
O código
Eu escrevi o código com PlatformIO em vez de Arduino IDE. É um software melhor para programar. Portanto, o código é um pouco diferente. Eu recomendo usar este software ao invés.
O alvo e a caixa do transmissor
Fixei o sensor e o led azul no alvo e com um cabo fono de 3,5 mm em 2 m eu os conecto na caixa do transmissor que contém o chip atmega, o carregador de bateria e o led verde e vermelho. Isso é feito para protegê-lo de ser atingido por balas de aço.
Etapa 2: o controlador do jogo
A próxima coisa que precisamos fazer é criar o controlador para os sensores. É um Arduino que usa um módulo NRF24L01 para se comunicar com os sensores. Nada mais. O Arduino é então conectado com USB no raspberry pi para funcionar.
É assim que vai funcionar. Ele usa serial para saber o que fazer. O pi enviará comandos seriais. Primeiro, durante a configuração, ele envia quantos alvos você adicionou e os números de identificação dos alvos. Em seguida, ele fará a função de teste e informará ao framboesa pi se eles se comunicam.
Quando você joga o jogo, ele enviará de pi que tipo de jogo e quantas rodadas / acertos usar. É isso.
É possível usar os módulos NRF24L01 no raspberry pi, mas para mim o Arduino é a melhor opção, mas nunca os uso no raspberry então não sei o quão bons eles funcionam a longo prazo
Há um módulo de energia que usa 5 V para tornar a energia estável correta para os transmissores. Você pode usá-los com seu Arduino (veja a imagem), o nome é Socket Adapter Module Board
Quando você joga, os alvos serão ativados aleatoriamente um por um. Quando um é atingido, outro será ativado.
Durante o teste, você pode ativar o #DEFINE DEBUG para ver como funciona, mas não quando o usar no computador pi, ele não funcionará.
Baixe o código na página GitHub.
Etapa 3: Raspberry Pi
Chegamos agora ao Raspberry Pi.
Eu adicionei algumas funções extras para que eu possa ter um botão liga / desliga. O ATXRaspi 3 é um ótimo módulo, você pode ligar, desligar e reiniciar o pi com um botão. Também um RTCRaspi para manter a hora e a data no pi. Também tornou possível apenas conectar um cabo de rede no caso de eu precisar fazer algumas atualizações no sistema. Você os encontrará no Lowpowerlab
A impressora térmica você encontra no sparkfun e o leitor de código de barras está disponível na amazon.
O computador Pi é executado em modo quiosque, de modo que o navegador será aberto na inicialização. Primeiramente, você precisa ter um servidor web com PHP 7 e mysql no computador pi. (Existem muitos guias na web para isso)
ATENÇÃO: se você for usar uma impressora térmica com raspberry pi que tem bluetooth embutido, você precisa desabilitá-la primeiro
O script python precisa do pyserial e você o instala: sudo apt-get install python-serial
Para fazer o mysql funcionar, instale o seguinte:
sudo apt-get install mysql-python sudo apt-get install python-mysql.connector
suso apt-get install pymysql
Agora você pode controlar seu Arduino através de serial e também atualizar o banco de dados mysql.
O próximo passo é fazer o script python se conectar ao mysql.
Em todos os três scripts python, altere a conexão com seu banco de dados mysql.
A próxima etapa é fazer com que o script python seja executado no início.
Existem três python script.game.py é o mais importante de todos, aquele contém o jogo function.print.py isso só é necessário se você for usar uma impressora térmica para print.ean.py só é necessário se você for vai usar o leitor de código de barras.
Para fazê-los iniciar automaticamente, eu edito:
sudo nano /etc/rc.local
e adicione o seguinte na parte inferior antes da saída 0:
sudo python /home/pi/Gamefiles/game.py & sudo python /home/pi/Gamefiles/print.py & sudo python /home/pi/Gamefiles/ean.py &
Por favor, mude para o local correto para o seu script python e não se esqueça do sinal & no final
Agora precisamos fazer um modo quiosque para o navegador da web, primeiro remova o cursor:
sudo apt-get install unclutter
sudo nano / etc / xdg / lxsession / LXDE-pi / autostart
agora nesse arquivo encontre e comente:
@xscreensaver -no-splash # comente esta linha para desativar o protetor de tela
Abaixo disso, adicione:
@xset s off @xset -dpms @xset s noblank @ chromium-browser --noerrdialogs --force-device-scale-factor = 1,25 --kiosk https:// localhost
O próximo passo para remover todos os textos de inicialização e outras coisas também adicionar sua própria tela de inicialização aqui é um guia rápido:
sudo nano /boot/config.txt e na parte inferior adddisable_splash = 1
Remova a mensagem de texto da imagem inicial:
sudo nano /usr/share/plymouth/themes/pix/pix.script
Encontre e remova (ou comente):
message_sprite = Sprite (); message_sprite. SetPosition (screen_width * 0.1, screen_height * 0.9, 10000);
e:
my_image = Image. Text (text, 1, 1, 1); message_sprite. SetImage (my_image);
Agora removemos as mensagens de inicialização:
sudo nano /boot/cmdline.txt
substitua “console = tty1” por “console = tty3”
e no final da linha adicione:
splash quiet plymouth.ignore-serial-consoles logo.nologo vt.global_cursor_default = 0
E substitua o respingo de pi pelo seu próprio:
sudo cp ~ / my_splash-p.webp" />
Agora você tem sua própria tela de inicialização personalizada para o seu jogo. Seu computador pi agora está pronto para lidar com o jogo. Vá para a próxima etapa!
Etapa 4: configure o jogo
Neste ponto, você já criou o jogo.
Primeiro você precisa fazer é configurar o webbsystem. Faça upload do banco de dados para o seu servidor mysql. O arquivo está na pasta includes e é denominado database.sql
O próximo passo é editar o arquivo de configuração, você o encontra na pasta inclui o nome config.php. Altere as informações de login do banco de dados para que o script funcione.
O sistema da web é baseado em vários idiomas e é escrito em inglês. Há uma tradução sueca disponível. Para disponibilizar mais idiomas, você precisa de um software chamado Poedit.
Para adicionar mais linguagem ao sistema da web, você precisa editar i18n_setup.php e adicionar o array:
return in_array ($ locale, ['en_US', 'sv_SE']); (Linha 23)
Além disso, para alterar o idioma padrão, você precisa alterar na linha 27: $ lang = 'en_US'; mude o en_US para o seu idioma.
os arquivos de idioma devem ser colocados em locales / LANGCODE / LC_MESSAGES / e ser nomeados main.mo (alterar o código de idioma para o seu idioma)
para mudar o teclado no arquivo selectplayers.php você muda o idioma: "en", // en para inglês sv para layout sueco: 'qwerty', // qwerty para inglês swedish-qwerty para sueco
Você os encontra nas linhas 218 e 219
Os idiomas disponíveis estão na pasta: assets / js / keyboard / languages & layouts estão em assets / js / keyboard / layouts e adicione os arquivos corretos às linhas 118 e 119 (substitua o que você encontra lá agora)
Adicionar alvos
Para adicionar alvos, vá para localhost / admin / e clique em adicionar alvos.
Você precisa adicionar um nome para o alvo e o ID de alvo exclusivo e enviar ID, adicionar quantos alvos você tiver.
Adicionar jogos
Você também precisa adicionar alguns jogos. Vá para localhost / admin / e clique em adicionar jogo
Você precisa adicionar um nome para o jogo, uma descrição, jogadores mínimos e máximos que tipo de jogo, e também quão difícil o jogo é entre 1 a 5. E como o jogo é, então para o jogo rapidfire você adiciona quantos acertos (exemplo 30) para o sorteio rápido quantas rodadas (por exemplo 8) e por quanto tempo eles vão jogar (por exemplo 60 por um minuto)
Comece o jogo
Quando você ligar o jogo, ele fará o teste de destino. Portanto, os alvos precisam estar ativados antes de iniciar o sistema principal. Se tudo passar no teste, você pode usar o sistema, mas se não passar, você não pode usá-lo. Ele tentará se comunicar até obter uma resposta.
Boa sorte
Bem, é sobre isso, para suporte e informações sobre atualização no código, siga minha página no Facebook para este jogo, para que eu possa responder rapidamente. Você encontrará links no topo aqui.
Recomendado:
ARDUINO + SCRATCH Jogo de tiro: 6 etapas
ARDUINO + SCRATCH Shooting Game: Salve seu bolo !!! Está em perigo. Há quatro moscas se aproximando. Você tem apenas 30 segundos para atirar nas moscas e salvar seu bolo
Jogo de tiro a laser (Star Wars): 5 etapas
Jogo de tiro a laser (Star Wars): Neste artigo, compartilharei o projeto de guerra nas estrelas baseado em arduino que você pode fazer com um orçamento limitado. Este projeto é um jogo de tiro a laser que se adequará a você como um produto caseiro. Este projeto consiste em 2 subprojetos: fazer o blaster de papelão um
Jogo eletrônico do jogo da velha em uma caixa de madeira: 5 etapas
Jogo eletrônico do jogo da velha em uma caixa de madeira: Olá, eu apresento o jogo engraçado do jogo da velha em uma nova edição. Pesquisei na web por projetos semelhantes, mas a ideia aqui é única. ESPERO:) Então, vamos começar agora
Controlador de jogo DIY baseado em Arduino - Controlador de jogo Arduino PS2 - Jogando Tekken com gamepad Arduino DIY: 7 etapas
Controlador de jogo DIY baseado em Arduino | Controlador de jogo Arduino PS2 | Jogando Tekken com DIY Arduino Gamepad: Olá pessoal, jogar é sempre divertido, mas jogar com seu próprio controlador de jogo DIY personalizado é mais divertido. Portanto, faremos um controlador de jogo usando arduino pro micro neste instructables
Controlador de jogo Arduino com luzes que respondem ao seu jogo Unity :: 24 etapas
Controlador de jogo Arduino com luzes que respondem ao seu jogo Unity :: Primeiro, escrevi isso em palavras. Esta é a primeira vez que uso instructable so sempre que digo: escreva código assim, saiba que estou me referindo à imagem no topo dessa etapa. Neste projeto eu uso 2 arduino ’ s para executar 2 bits separados