Índice:

CheminElectrique (jogo de habilidades) - SRO2002: 9 etapas
CheminElectrique (jogo de habilidades) - SRO2002: 9 etapas

Vídeo: CheminElectrique (jogo de habilidades) - SRO2002: 9 etapas

Vídeo: CheminElectrique (jogo de habilidades) - SRO2002: 9 etapas
Vídeo: MANEATER - TODAS AS EVOLUÇÕES MÁXIMAS | SET DAS SOMBRAS, BIOELÉTRICO E ÓSSEO 2024, Julho
Anonim
CheminElectrique (jogo de habilidades) - SRO2002
CheminElectrique (jogo de habilidades) - SRO2002
CheminElectrique (jogo de habilidades) - SRO2002
CheminElectrique (jogo de habilidades) - SRO2002
CheminElectrique (jogo de habilidades) - SRO2002
CheminElectrique (jogo de habilidades) - SRO2002

Hoje apresento para vocês o making of de um jogo que fiz para a festa de fim de ano escolar do meu filho. Na França chamamos esses festivais de "kermesses", não sei se existem em outros países e como são chamados …

Nessas festas costuma haver os mesmos jogos, é o que chamo de jogos clássicos, e este ano decidi fazer uma versão mais moderna de um desses jogos clássicos: o "Chemin electrique" ou "Main chaude".

O objetivo do jogo é muito simples, há um fio por onde passa uma corrente elétrica, então você tem um "joystick" composto por um círculo de metal em sua extremidade que passa ao redor do fio elétrico e o objetivo do jogo é atravessar o fio de uma extremidade à outra sem tocá-lo, caso contrário, uma luz de advertência e / ou som apaga-se e você perde.

Tradicionalmente não há realmente nenhuma eletrônica para criar este jogo, uma simples bateria de 12V com uma lâmpada e um pouco de fio elétrico é o suficiente, mas eu tive algumas idéias legais para tornar o jogo mais moderno.

Então, vamos ver o que adicionei como funcionalidade!

Etapa 1: Recursos

Como acabei de dizer este jogo simplesmente acende uma luz quando o jogador inadvertidamente toca o fio com o "joystick", também acontece com bastante frequência que o jogo produza um som durante o contato. Na minha versão do jogo haverá um total de 6 blocos de 4 LEDs (verde-amarelo-amarelo-vermelho) que acenderão simultaneamente, uma campainha que produzirá um som e também um vibrador integrado no controlador que ativará quando houver contato entre o fio elétrico e o “joystick”.

Os LEDs acenderão gradualmente de verde a vermelho dependendo de quanto tempo dura o contato entre o fio e o controlador.

Também adicionei uma seleção do nível de dificuldade (fácil-normal-difícil), bem como a capacidade de ativar / desativar o vibrador e o som. O volume do som também pode ser ajustado com um potenciômetro.

A escolha da dificuldade é, na verdade, simplesmente um atraso mais ou menos longo entre o momento em que há um contato entre o fio e o joystick e o momento em que o jogo começa a acender / tocar / vibrar. Eu defino tempos predefinidos por programação, por exemplo, no modo fácil o jogo espera 1 segundo antes de acionar os avisos, enquanto no modo difícil os avisos são acionados imediatamente.

Desenhei o jogo de forma a ser fácil de desmontar, fiável e sobretudo que não apresente qualquer perigo para as crianças que o irão utilizar. Na verdade, uma vez que o fio elétrico é atravessado por uma corrente e que está despojado, tive que me certificar de que não apresenta nenhum perigo para os usuários do jogo.

Etapa 2: isenção de responsabilidade e informações adicionais

Isenção de responsabilidade e informações adicionais
Isenção de responsabilidade e informações adicionais

Isenção de responsabilidade:

O jogo será alimentado por 4 baterias de 1,5 V, uma tensão total de 6 V, também limite a corrente que atravessa o fio a apenas alguns microamperes. Estamos, portanto, no campo da tensão de segurança muito baixa (SELV) com um valor de corrente extremamente baixo acessível ao usuário.

Mas atenção, eu especifico bem que nenhum valor de corrente elétrica é inofensivo, uma corrente fraca pode em certos casos ser perigosa para a pessoa que está eletrificada. Pesquisei muito sobre isso durante a criação deste projeto, e embora não haja consenso científico sobre o valor limite antes do qual a corrente não tem impacto no corpo humano, a corrente de algum microampere que atravessa o cabo elétrico tem muito pouco chance de machucar uma pessoa.

Mas atenção, não poderei ser responsabilizado em caso de acidente! Deve-se sempre ter cuidado ao manusear condutores elétricos energizados, mesmo com valores de corrente muito baixos. Aconselho vivamente que se informe o máximo possível sobre os riscos da eletricidade e as boas precauções a tomar

Mais informações:

Este projeto funciona muito bem e tem todos os recursos que eu queria, mas tem algumas falhas. Quando crio um projeto eletrônico procuro que tudo seja o mais otimizado possível em termos de custo, número de componentes, espaço e principalmente que o funcionamento do todo seja o mais "lógico" possível.

Enquanto fazia este projeto e depois de concluí-lo, acho que algumas escolhas que fiz não são as melhores, mas fui pressionado pelo tempo, só tive 2 semanas para fazer tudo do zero (design, programação, pedidos de componentes, criação de estrutura e, principalmente, a montagem de todos os elementos).

Vou indicar ao longo das etapas de fabricação o que acho que poderia ser otimizado se eu tivesse que criar este jogo novamente. Mas repito que o projeto é bastante funcional assim, mas sou perfeccionista…

Também me arrependo de não ter tirado mais fotos das diferentes etapas do projeto, mas preferi me dedicar ao máximo ao projeto para poder concluí-lo a tempo.

Estou feliz com este projeto porque foi um grande sucesso na festa da escola do meu filho, então vamos ver o que está na barriga da fera;)

Etapa 3: Obrigações

- Deve ser alimentado por bateria (para segurança e mobilidade) - O jogo deve ser seguro (será usado por crianças de 2 a 10 anos)

- As configurações devem estar disponíveis (escolha de ativação de som / vibrador e escolha de dificuldade)

- As configurações devem ser simples de entender e de fácil acesso (deve-se presumir que quem vai cuidar do jogo durante a festa não sabe nada de eletrônica / técnica)

- O som deve ser alto o suficiente (o jogo será usado ao ar livre em um ambiente bastante barulhento).

- O sistema deve ser removível ao máximo para armazenamento e peças físicas facilmente substituíveis (joystick, fio elétrico …)

- Deve ser atraente para as crianças (esse é o objetivo principal pelo qual elas jogam …:))

Etapa 4: Componentes (BOM)

Para o caso: - prancha de madeira

- quadro

- algumas ferramentas para furar e cortar….

Para o "joystick": - 1 vibrador

- conector de cabo 3,5 (estéreo)

- conector jack 3,5 (estéreo)

- fio elétrico 2,5 mm²

- um pequeno tubo de PVC

Componentes eletrônicos:

- 16F628A

- 12F675

- ULN2003A

- 2 x 2N2222A

- diodo Zener 2.7V

- 12 LEDs azuis

- 6 LEDs verdes

- 6 LEDs vermelhos

- 12 LEDs amarelos

- 5 resistores 10K

- 2 resistores 4,7K

- 1 resistor 470 ohm

- 6 resistores 2.2K

- 6 resistores 510 ohm

- 18 resistores 180 ohm

- 1 potenciômetro 1K

- 1 interruptor ON-OFF

- 2 interruptores ON-OFF-ON

- 1 campainha

- 1 conversor de reforço DC

- fio elétrico 2,5 mm²

- 2 conectores banana macho

- 2 conectores banana fêmea

- conector jack 3,5 (estéreo)

- suporte para 4 baterias LR6

- algumas placas de prototipagem PCB

Ferramentas eletrônicas: - Um programador para injetar o código em um Microchip 16F628A e 12F675 (por exemplo, PICkit 2) -

Aconselho você a usar Microchip MPLAB IDE (freeware) se quiser modificar o código, mas também precisará do Compilador CCS (shareware). Você também pode usar outro compilador, mas precisará de muitas alterações no programa.

Mas eu vou te fornecer. Arquivos HEX para que você possa injetá-los diretamente nos microcontroladores.

Etapa 5: Análise da Função

Análise de Função
Análise de Função
Análise de Função
Análise de Função

Microcontrolador 16F628A (Func1): É o "cérebro" de todo o sistema, é este componente que detecta a posição dos interruptores de configuração, que detecta se há contato entre o "joystick" e o fio elétrico, e que aciona o avisos (luz, som e vibrador). Escolhi este componente porque tenho um estoque bastante grande e porque estou acostumado a programar com ele, e como não tive muito tempo para fazer este projeto, preferi pegar um material que conheço bem.

Interface de energia ULN2003A (Func2): Este componente serve como uma interface de energia entre o 16F628A e os circuitos que consomem mais energia do que o microcontrolador pode fornecer (LED, campainha, vibrador).

Controle da campainha (Func3):

O PIC 16F628A não pode fornecer corrente suficiente para alimentar a campainha, especialmente porque a campainha deve ser alimentada por um conversor de reforço para aumentar sua potência sonora.

De fato, como o conjunto é fornecido em 6V e o buzzer precisa de 12V para funcionar no máximo, utilizo um conversor para obter a tensão adequada. Então eu uso um transistor como uma chave (modo de comutação) para controlar a fonte de alimentação da campainha. O componente que escolhi é um 2N2222A clássico, muito adequado para esse uso.

Aqui estão os recursos da campainha: 12 V 25 mA, isso significa que precisa de uma potência teórica de P = UI = 12 x 25 mA = 0,3 W

Portanto, há um requisito de energia de 0,3 W do conversor CC boost, o módulo CC boost tem uma eficiência de 95%, portanto, há cerca de 5% de perda. Portanto, uma potência mínima de 0,3W + 5% = 0,315W é necessária na entrada do conversor.

Podemos agora deduzir o Ic atual que cruzará o transistor Q1:

P = U * Ic

Ic = P / U

Ic = P / Vcc-Vcesat

Ic = 0, 315 / 6-0, 3

Ic = 52mA

Agora calculamos o resistor de base permitindo que o transistor seja bem saturado:

Ibsatmin = Ic / Betamin

Ibsatmin = 52mA / 100

Ibsatmin = 0,5mA

Ibsat = K x Ibsatmin (eu escolho um coeficiente de sursaturação K = 2)

Ibsat = 2 x Ibsatmin

Ibsat = 1mA

R12 = Ur12 / Ibsat

R12 = Vcc - Vbe

R12 = (6 - 0,6) / 1mA

R12 = 5,4K

Valor normalizado (E12) para R12 = 4,7K

Controle do vibrador (Func4):

Quanto ao buzzer, o 16F628A não pode fornecer corrente suficiente ao vibrador que requer uma corrente de 70mA, além disso, deve ser fornecido ao máximo com uma tensão de 3V. Então, escolhi usar um diodo zener acoplado a um transistor para fazer um regulador de tensão de 2,7 V para o vibrador. A operação da associação zener-transistor é simples, o zener fixa a tensão de 2,7 V na base do transistor e o transistor "copia" essa tensão e fornece a energia.

A corrente que vai cruzar o transistor Q2 é, portanto, igual a Ic = 70mA

Agora calculamos a resistência de base permitindo que o transistor seja bem saturado:

Ibsatmin = Ic / Betamin

Ibsatmin = 70mA / 100

Ibsatmin = 0, 7mA

Ibsat = K x Ibsatmin (eu escolho um coeficiente de sursaturação K = 2) Ibsat = 2 x Ibsatmin

Ibsat = 1, 4mA

A corrente mínima no diodo zener deve ser de pelo menos Iz = 1mA para sua operação, então podemos deduzir a corrente que passa pelo resistor R13:

Ir13 = Ibsat + Iz

Ir13 = 1, 4mA + 1mA

Ir13 = 2, 4mA

Para garantir que a corrente do diodo zener Iz esteja sempre na faixa operacional correta, uma margem de segurança é obtida com um: Ir13_fixed = 5mA (escolha completamente arbitrária de valor)

Agora vamos calcular o valor de R13:

R13 = U13 / Ir13_fixado

R13 = VCC-Vz / Ir13_fixed

R13 = 6-2, 7 / 5mA

R13 = 660 ohm

Valor normalizado (E12) para R13 = 470 ohm

Eu poderia ter escolhido 560 ohm na série E12, mas não tinha esse valor, então peguei o valor anterior …

Pode ser otimizado

Quando fiz o design do projeto não pensei no Vbe do transistor, então ao invés de ter 2,7 V para alimentar o vibrador eu só tenho 2,7 V-0,6 V = 2,1 V. Eu deveria ter pegado um zener 3,3V por exemplo, o vibrador teria ficado um pouco mais potente mesmo que o resultado fosse bastante satisfatório, não aproveito toda a potência do vibrador …

LEDs de advertência (Func5):

Os LEDs são posicionados verticalmente como se formassem um medidor: Vermelho

Amarelo2

Amarelo1

Verde

Quando um contato é detectado entre o "joystick" e o fio elétrico, eles gradualmente acendem de verde para vermelho.

Os LEDs são conectados ao VCC em grupos de acordo com sua cor:

- Todos os ânodos dos LEDs verdes estão conectados juntos

- Todos os ânodos dos LEDs amarelos1 estão conectados juntos

- Todos os ânodos dos LEDs amarelos2 estão conectados juntos

- Todos os ânodos dos LEDs vermelhos estão conectados juntos

O microcontrolador então os ativa aterrando seu cátodo por meio do ULN2003A.

Observação:

No esquema há apenas um LED de cada cor com um símbolo "X6" ao lado porque eu uso uma versão gratuita do Cadence Capture e estou limitado por um número máximo de componentes por diagrama, então não pude fazer todos os LEDS aparecerem …

Gerenciamento do nível de som da campainha (Func6):

É simplesmente um potenciômetro em série com a campainha que permite ajustar o volume do som.

LEDs "Decoração" (Func7 - Esquema / Página 2):

O objetivo desses LEDs é criar uma perseguição para a decoração do jogo. Eles acendem da esquerda para a direita. Há um total de 12 LEDs azuis: 6 no início do percurso representando a linha de partida e 6 no final do percurso representando a linha de chegada

Eu escolhi fazer uma multiplexação de display para esses LEDs porque seriam necessários muito mais pinos para encomendá-los (6 pinos com multiplexação, 12 pinos sem multiplexação).

Além disso está indicado em seu datasheet que o Vf é 4V portanto não poderia colocar 2 LEDs em série (VCC é 6V), e também não poderia colocar em paralelo porque TEORICAMENTE precisam de 20 mA e que o microcontrolador pode fornecer apenas 25 mA máximo por pino, portanto, 40mA teria sido impossível.

Para resumir não consegui fazer uma associação de LED (colocado em série ou paralelo) e não tinha pino suficiente no microcontrolador para acioná-los de qualquer maneira … Então optei por usar outro microcontrolador (12F675) de 8 pinos para poder para acioná-los. Graças a este microcontrolador eu controlo a ativação dos LEDs configurando um alto nível lógico (VCC) em seus ânodos e uso o PIC 16F628A e ULN2003A para realizar a multiplexação.

Pode ser otimizado:

Percebi durante a realização dos testes em uma placa de ensaio que para a mesma corrente I = 20mA os LEDs tinham uma grande diferença de brilho de acordo com suas cores. Por exemplo, com 20mA os LEDs azuis eram muito mais brilhantes do que os verdes. Não achei estético que alguns LEDs fossem muito mais brilhantes do que outros, então variei a resistência em série com os LEDs azuis até obter a mesma potência luminosa dos LEDs verdes alimentados com uma corrente de 20mA.

E percebi que os LEDs azuis tinham o mesmo brilho que os LEDs verdes com corrente de apenas 1mA! O que significa que se eu soubesse disso antes, poderia ter escolhido colocar os LEDs azuis em série (em grupos de 2). E eu só precisava de mais 3 pinos no 16F675A (que estão disponíveis), então não precisei adicionar outro microcontrolador dedicado para gerenciar esses LEDs.

Mas nessa época do projeto eu não sabia, às vezes há uma diferença não desprezível entre as características das documentações técnicas e as características reais dos componentes …

Limitando a corrente (Func0):

Eu não tinha planejado essa parte na hora do design, só adicionei no final do projeto, quando tudo já estava concluído. No início eu simplesmente conectava o VCC diretamente ao fio elétrico com um simples resistor pull-down para colocar a entrada do microcontrolador que detecta o contato ao solo.

Mas, como eu disse antes, pesquisei muito para descobrir se a corrente que flui através do fio elétrico pode ser perigosa se entrar em contato entre o fio e um corpo humano.

Não encontrei uma resposta precisa sobre este assunto, então preferi adicionar uma resistência entre o VCC e o fio elétrico para reduzir ao máximo a corrente que atravessa o fio.

Então eu queria colocar um resistor de alto valor a fim de reduzir a corrente para o menor valor possível, mas como eu já tinha finalizado o projeto e portanto todo soldado e conectado as diferentes placas não consegui mais remover o resistor pulldown de 10Kohm. Portanto, tive que escolher um valor de resistência para obter 2/3 de VCC no pino BR0 (pino 6 de 16F628A) para que o microcontrolador detecte embora seja um nível lógico alto quando houver contato entre o joystick e o fio elétrico. Se eu tivesse adicionado muita resistência, teria corrido o risco de o microcontrolador não detectar a mudança entre o estado lógico baixo e o estado lógico alto.

Por isso optei por adicionar uma resistência de 4,7K para obter uma tensão de cerca de 4V no pino quando há contato entre o joystick e o fio elétrico. Somando-se a isso a resistência da pele humana em caso de contato do fio elétrico com a mão, por exemplo, a corrente que flui pelo corpo seria inferior a 1mA.

E mesmo que uma pessoa toque no fio ela só estará em contato com o terminal positivo das baterias e não entre o terminal positivo e negativo mas como falei no aviso de isenção SEMPRE preste atenção no que faz com a corrente elétrica.

Obs: Hesitei por muito tempo em adicionar esta resistência pois a corrente elétrica possivelmente acessível ao usuário (via fio elétrico) é fraca e que o conjunto é alimentado por bateria com apenas 6V de tensão e talvez seja estritamente desnecessário limitar a corrente das baterias, mas como é para crianças, preferi tomar o máximo de precauções possível.

Etapa 6: Programação

Programação
Programação

Os programas são escritos em linguagem C com MPLAB IDE e o código é compilado com o CCS C Compiler.

O código é totalmente comentado e bastante simples de entender, mas explicarei rapidamente as principais funções dos 2 códigos (para 16F628A e 12F675).

O primeiro programa -CheminElectrique.c- (16F628A):

Gerenciamento de multiplexação de LED: Função: RTCC_isr ()

Eu uso o timer0 do microcontrolador para causar um overflow a cada 2ms que permite gerenciar a multiplexação dos LEDs.

Gerenciamento de detecção de contato:

Função: void main ()

Este é o loop principal, o programa detecta se há contato entre o joystick e o fio elétrico e aciona os leds / buzzer / vibrador de acordo com o tempo de contato.

Gerenciamento de configuração de dificuldade:

Função: long GetSensitivityValue ()

Esta função permite verificar a posição do interruptor que permite selecionar a dificuldade e devolve uma variável que representa o tempo de espera antes de ativar os alarmes.

Gerenciamento de configuração de alarme:

Função: int GetDeviceConfiguration ()

Esta função é utilizada para verificar a posição da chave que seleciona o acionamento da campainha e do vibrador e retorna uma variável que representa os alarmes que devem estar ativos.

O segundo programa -LedStartFinishCard.c- (12F675):

Gerenciamento de ativação do LED azul: Função: void main ()

Este é o loop principal do programa, ele ativa os LEDs um após o outro da esquerda para a direita (para criar um chase)

Veja abaixo um arquivo zip do projeto MPLAB:

Etapa 7: Solda e montagem

Solda e Montagem
Solda e Montagem
Solda e Montagem
Solda e Montagem
Solda e Montagem
Solda e Montagem
Solda e Montagem
Solda e Montagem

Parte "Física": comecei criando a caixa, então cortei tábuas de madeira com cerca de 5mm de espessura para a parte superior e laterais e escolhi uma tábua de 2cm de espessura para fazer com que o fundo tivesse mais peso e que o jogo não se movesse.

Montei as tábuas entre ficar com cola de madeira, não coloquei nenhum parafuso ou prego e é muito sólido!

Para tornar o jogo mais atraente do que uma simples caixa pintada, pedi à minha esposa que criasse uma decoração para a parte superior da caixa (porque eu sou péssimo em design gráfico …). Pedi a ele que fizesse uma estrada sinuosa (para ter relação com o fio…) Com latas / painel nas bordas das curvas para que eu possa incorporar meus leds de advertência. Os LEDs azuis das decorações serão como as linhas de partida e chegada. Ela criou um cenário no estilo “Rota 66”, com uma estrada que atravessa uma espécie de deserto, e após várias impressões para encontrar a boa localização dos LEDs ficamos bastante felizes com o resultado!

Em seguida, fiz furos para todos os conectores, interruptores e, claro, os LEDs.

O fio elétrico é trançado para criar zigue-zagues para aumentar a dificuldade do jogo, e cada extremidade é aparafusada em um conector banana macho. Os conectores serão então conectados aos conectores banana fêmea que estão fixados na tampa da caixa.

Parte eletrônica:

Dividi a parte eletrônica em vários pequenos cartões de protótipo.

Existem:

- um cartão para 16F628A

- um cartão para 12F675

- 6 placas de LED de aviso

- 4 cartões para LEDs decorativos (linha de partida e linha de chegada)

Fixei todos esses cartões sob a tampa da caixa e coloquei o porta-bateria na parte inferior da caixa com a campainha e o módulo de reforço DC.

Todos os elementos eletrônicos são conectados por fios de embrulho, agrupei-os tanto quanto possível de acordo com sua direção e os torci e fixei com cola quente para que fiquem o mais "limpos" possível e, principalmente, que haja sem contatos falsos ou fios que se desconectam. Realmente demorei muito para cortar / descascar / soldar / posicionar os fios corretamente!

Parte "Joystick":

Para o joystick peguei um pequeno pedaço de tubo de PVC (1,5cm de diâmetro e 25cm de comprimento). E então eu soldei o conector fêmea assim:

- um terminal conectado ao fio no final do joystick (ContactWire no esquema)

- um terminal conectado ao terminal positivo do vibrador (2A no conector J1A no esquema)

- um terminal conectado ao terminal negativo do vibrador (1A no conector J1A no esquema)

Em seguida, integrei o fio, o vibrador e o conector jack dentro do tubo e fixei o jack com cola quente para ter certeza de que nada se move ao conectar o cabo jack entre o joystick e a outra parte do sistema.

Etapa 8: Vídeo

Etapa 9: Conclusão

Agora que o projeto acabou, foi muito legal fazer este projeto, embora eu me arrependa de ter muito pouco tempo para fazê-lo. Permitiu-me assumir um novo desafio;) Espero que este jogo funcione durante muitos anos e que divirta muitas crianças que vão festejar o final do ano escolar!

Eu forneço um arquivo que contém todos os documentos que usei / criei para o projeto.

Não sei se o meu estilo de escrita estará correto porque estou parcialmente usando um tradutor automático para ir mais rápido e como não falo inglês nativamente, acho que algumas frases provavelmente serão estranhas para pessoas que escrevem em inglês perfeitamente.

Se você tiver alguma dúvida ou comentário sobre este projeto, por favor me avise!

Recomendado: