Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
Este Instructable irá percorrer o processo de criação de um jogo Infrared Laser Tag usando um computador servidor de base e um Raspberry Pi zero para cada jogador. O projeto depende muito de uma conexão Wifi para se comunicar com o servidor, o que torna o Pi um ótimo candidato.
O servidor usado neste projeto era um computador desktop antigo com Linux. O computador não precisa ser nada especial e provavelmente poderia até ser executado a partir de um Raspberry Pi 3. O servidor e cada um dos pi zeros devem estar conectados à mesma rede durante o jogo.
Etapa 1: Materiais
A descrição e alguns links para os materiais necessários são mostrados abaixo. A lista de materiais abaixo é para 3 armas.
- Computador Servidor (1)
- Raspberry Pi Zero W (3) Adafruit
- Cartão SD de pelo menos 4GB (3) Amazon
- Transmissor IR LED (3)
- Receptor IR (6) Amazon
- LED vermelho (3)
- LED azul (3)
- LED verde (3)
- Buzzer Passivo (3) Amazon
- Botão (6)
- Tela LCD 16x2 com adaptador I2C (3) Amazon
- Pacote de bateria portátil (3) Amazon
- Cabo USB Micro para Regular (3) Amazon
- Transistor PN2222 (3)
- Resistor 100Ω (3)
- Resistor 1kΩ (9)
Itens opcionais:
- Colete (3) Amazon
- Extensão de cabo de fita (3) Amazon
Neste projeto, acabamos pegando o transmissor IR LED de um antigo conjunto de armas de laser tag que tinha um cone preto ao redor do transmissor para ajudar a estreitar o disparo de cada arma. No entanto, qualquer transmissor geral deve funcionar.
Além dos itens listados acima, as próprias armas laser foram impressas em 3D. Este projeto, portanto, também exigiria acesso a uma impressora 3D e filamento. No geral, para três armas, o total chegou a cerca de US $ 350.
Etapa 2: configuração do servidor
A primeira coisa necessária para configurar o servidor é instalar o Mosquitto MQTT Broker Service. Mosquitto é o serviço que fornece uma estrutura para a comunicação entre cada um dos dispositivos do jogo. Isso permite que o servidor envie mensagens para cada um dos Pis conectados ao serviço. No terminal, execute os seguintes comandos.
sudo apt-get update
sudo apt-get upgrade sudo apt-get install mosquitto -y sudo apt-get install python3-pip -y sudo pip3 install paho-mqtt
Algumas das GUI's para o servidor foram criadas usando um designer de GUI chamado Pygubu. Isso pode ser instalado executando:
pip3 install pygubu
Mais informações sobre pygubu podem ser encontradas em
Depois que o MQTT e o Pygubu estiverem instalados, crie um novo diretório e copie os arquivos anexados. O diretório deve incluir:
- ltag.py
- pregame.py
- game_statistics.py
- gvars.py
- pygubu.ui
- pygubu_limited.ui
- home.png
- self.png
- inimigos.png
- laser.jpg
Nota: As imagens anexas usadas neste projeto não foram criadas pela equipe de desenvolvimento e, portanto, não reivindicam a autoria.
Etapa 3: configuração do Raspberry Pi
Esta etapa precisará ser repetida em cada um dos Raspberry Pis.
1. Instale o sistema operacional
Primeiro, comece com uma nova instalação do Raspbian. Recomendamos usar a versão Lite, pois é menos para o Pi manipular, mas qualquer uma das versões deve funcionar bem. O download pode ser encontrado em
2. Instale MQTT
Em seguida, precisamos instalar o serviço do broker MQTT. Estaremos usando Mosquitto para isso. No terminal, execute os seguintes comandos.
sudo apt-get update
sudo apt-get upgrade sudo apt-get install mosquitto -y sudo apt-get install python3-pip -y sudo pip3 install paho-mqtt
Mosquitto é o serviço que fornece uma estrutura para a comunicação entre cada um dos dispositivos do jogo. Isso permite que o servidor envie mensagens para cada um dos Pis conectados ao serviço.
3. Instale as ferramentas I2C
O comando a seguir instalará bibliotecas que são usadas para a tela LCD.
sudo apt-get install -y python3-smbus i2c-tools
sudo apt-get install rpi.gpio -y
O endereço i2c pode precisar ser alterado no arquivo lcddriver.py. O endereço pode ser encontrado digitando o seguinte comando.
i2cdetect -y 1
4. Instale e configure o LIRC
Crie um novo diretório e baixe os arquivos anexados neste local.
A maioria dos navegadores de Internet não baixa arquivos sem extensões. Para contornar isso, dois dos arquivos foram carregados com extensões temporárias. Ambos "lircrc.deleteExtension" e "modules.deleteExtension" devem de fato ser sem extensão e os arquivos devem ser renomeados para "lircrc" e "módulos" após terem sido baixados com sucesso.
Esta etapa instala e configura as dependências do pacote Linux Infrared Remote Control (LIRC). Para obter mais informações, consulte o tutorial para configurar o LIRC em:
Primeiro instale a biblioteca e, em seguida, copie os arquivos incluídos em seus respectivos diretórios, conforme mostrado nos comandos abaixo. Finalmente, reinicie o serviço lircd.
sudo apt-get install python3-lirc -y
No diretório recém-criado, execute os seguintes comandos para mover os arquivos de configuração para seus locais corretos.
sudo mv lircd.conf hardware.conf lircrc lirc_options.conf / etc / lirc /
módulos sudo mv / etc /
Em seguida, reinicie o serviço lircd executando:
sudo /etc/init.d/lircd restart
Em seguida, edite o arquivo /boot/config.txt e adicione a seguinte linha
dtoverlay = lirc-rpi, gpio_in_pin = 18, gpio_out_pin = 25
Reinicie seu pi para permitir que as alterações tenham efeito.
sudo reboot
5. Habilite I2C e edite CLIENTE para cada jogador
A seguir, vamos habilitar a interface I2C. Isso pode ser feito usando
sudo raspi-config
e habilitar o I2C no menu "opções de interface".
6. Editar Player CLIENT e LTSERVER
O diretório do jogo agora deve incluir os quatro arquivos restantes.
- i2c_lib.py
- lcddriver.py
- ltsounds.py
- player.py
A última etapa da configuração do pi é atribuir a cada pi um número de CLIENTE e adicionar a localização do servidor. Isso é feito editando o arquivo "player.py" incluído para cada pi, de modo que todos tenham um número de CLIENTE diferente. O número do CLIENTE é atribuído na linha 3 de player.py. Atribua o primeiro pi como cliente "1", o segundo como "2" e o terceiro como cliente "3".
A linha LTSERVER deve ser alterada para o endereço IP do servidor. Isso é encontrado digitando 'ifconfig | grep "inet addr" 'no terminal do computador servidor.
Etapa 4: montagem da arma
Prossiga com a fiação de cada uma das armas de acordo com o diagrama de fiação e o esquema acima.
Cada um dos periféricos está conectado aos seguintes pinos GPIO no Pi Zero:
- Campainha: GPIO5
- Gatilho: GPIO26
- Recarregar: GPIO12
- Transmissor IR: GPIO25
- Receptores IR: GPIO18
- LED VERMELHO: GPIO17
- LED VERDE: GPIO27
- LED AZUL: GPIO22
- I2C_SDA: GPIO2
- I2C_SCL: GPIO3
Veja o esquema para mais detalhes.
Se desejado, as armas a laser podem ser impressas em 3D usando os arquivos de modelo de etapas incluídos. Lembre-se de que dois dos arquivos "front1STL. STL" devem ser impressos.
Etapa 5: jogo
O jogo é iniciado executando o arquivo "ltag.py" no servidor. Feito isso, cada um dos jogadores pode se conectar ao servidor executando seu respectivo arquivo "player.py".
Observação: depois de conectar a bateria, pode levar até um minuto para que o pi seja inicializado.
Também pode ser útil adicionar um cron job que executa automaticamente o arquivo player.py assim que o pi é iniciado. Tivemos muita dificuldade em fazer isso funcionar e acabamos adicionando uma linha ao arquivo "/etc/rc.local" em cada um dos Pis para executar o arquivo "player.py". Isso permite que o jogo seja iniciado sem a necessidade de SSH no Pi para executar o script do jogador.
Uma vez que o jogo tenha sido iniciado com os jogadores prontos, uma GUI aparecerá que permite que algumas das configurações do jogo sejam configuradas. O jogo começa depois que o botão Iniciar é pressionado.
Após cada jogo, uma GUI final aparecerá com estatísticas sobre o jogo anterior, incluindo tags, porcentagens globais e duração do jogo.
Nota: Devido às limitações nas bibliotecas de software, as localizações das etiquetas do relatório de precisão não são representativas das etiquetas a laser reais. Na versão atual, a imagem do Relatório de precisão do jogador é puramente estética, na esperança de uma versão futura com implementação de localização de tag real.
Etapa 6: melhorias futuras
No geral, o projeto foi um grande sucesso. Ao longo do caminho, pensamos em alguns recursos adicionais que podem ser adicionados a uma edição futura.
- Design de gatilho mais resistente para armas impressas em 3D
- Encerrando o menu suspenso da GUI para exibir estatísticas de jogos anteriores
- Mais receptores infravermelhos que podem ser anexados aos coletes dos jogadores
- Modos de jogo adicionais que podem ser escolhidos na GUI do Pregame
- Algoritmo de localização de tag mais preciso na página de estatísticas dos jogadores