Índice:

Placar de críquete usando NodeMCU: 9 etapas (com imagens)
Placar de críquete usando NodeMCU: 9 etapas (com imagens)

Vídeo: Placar de críquete usando NodeMCU: 9 etapas (com imagens)

Vídeo: Placar de críquete usando NodeMCU: 9 etapas (com imagens)
Vídeo: Как создать игру в крикет с помощью MIT App Inventor 2 [Часть - 1] 2024, Novembro
Anonim
Image
Image
O plano
O plano

Olá! Recentemente, fui apresentado ao mundo da IoT (Internet of Things) quando descobri o dispositivo mais popular nessa área, o ESP8266. Fiquei surpreso com o número final de possibilidades que foram abertas por este dispositivo minúsculo e barato. Como atualmente sou novo nisso, decidi fazer um projeto usando e aprendendo ao longo do caminho. Então, comecei a pesquisar na internet por projetos e ideias.

Me deparei com um projeto incrível chamado Arduino Cricket Score Ticker, de W. A. Smith. Neste projeto, o Arduino junto com o Ethernet Shield e o cartão SD são usados para exibir pontuações de críquete ao vivo do Cricbuzz. Este projeto me fez pensar.

Eu sou da Índia e a primeira coisa que vem à mente depois de ouvir a Índia é Cricket. Aqui, o críquete é religião. Às vezes é difícil sentar em frente a uma TV para acompanhar a partida inteira. Então, por que não fazer algo que torne a visualização de partituras fácil, sem fio e portátil. Um pequeno dispositivo dedicado que mostra informações suficientes para mantê-lo atualizado com apenas uma olhada.

Não é fã de críquete? Sem problemas! O código contém o analisador XML que pode ser usado para obter dados de qualquer arquivo XML. Basta usar as funções corretas para obter os dados.

Etapa 1: O Plano

O plano
O plano

O plano é usar o NodeMCU Development Board (com módulo ESP-12E) para acessar a internet e solicitar o código XML da Cricbuzz que contém todas as informações sobre as partidas em andamento / futuras. Este código é salvo no cartão SD como um arquivo.xml. O arquivo é então lido do cartão SD para analisar os dados necessários do código XML. Usarei o código de W. A. Smith para analisar as informações. Graças aos seus esforços. Confira o projeto dele se quiser fazer o mesmo usando Arduino e Ethernet Shield.

Minha ideia é torná-lo o mais pequeno possível, construir um PCB personalizado e um case para ele. Por enquanto, vamos fazer um protótipo. Mas primeiro, vamos nos familiarizar com os componentes usados neste projeto.

Vamos começar

Etapa 2: display OLED

Display OLED
Display OLED
Display OLED
Display OLED

Decidi usar um display OLED por causa de seu tamanho pequeno e eles estão disponíveis por um preço baixo. Estou usando uma tela de 0,96 que será suficiente para exibir as informações da partida. Você pode usar qualquer tamanho de tela.

O monitor que estou usando é monocromático com o driver SSD1306 e interface I2C (2 fios). Versões SPI do display também estão disponíveis. Executá-los é uma tarefa fácil. Baixe as bibliotecas SSD1306 e GFX necessárias para executar os monitores. Obrigado a Adafruit por escrever essas bibliotecas.

As conexões são muito simples.

  • GND para GND
  • VCC para 3,3V
  • SCL para D1
  • SDA em D2.

Etapa 3: cartão SD e adaptador

Cartão SD e Adaptador
Cartão SD e Adaptador

O cartão SD armazena o arquivo XML do Cricbuzz até que todas as informações sejam analisadas. Assim que as informações necessárias forem exibidas, o arquivo será excluído. Usar um cartão SD para armazenar um arquivo XML de 10 - 20 kB é um pouco exagerado, mas torna a análise muito mais fácil e fácil de entender.

Qualquer cartão de memória pode ser usado. Eu escolhi o cartão micro SD por seu formato pequeno. Você pode soldar os fios diretamente no cartão SD, mas o uso de uma placa breakout torna o trabalho mais fácil. Deve-se notar que todos os cartões SD são feitos para funcionar em 3,3V. Isso significa que não só deve ser alimentado com 3,3 V, mas também a comunicação entre o microcontrolador e o cartão SD deve ser de nível lógico de 3,3 V. Tensão acima de 3,3 V MATARÁ! Não vamos nos preocupar com isso no que diz respeito ao NodeMCU porque o próprio NodeMCU roda em 3.3V, o que é bom. Se você está planejando usar qualquer outro microcontrolador com nível lógico de 5 V, certifique-se de que sua placa de breakout tenha um deslocador de nível embutido (conforme mostrado na imagem). Basicamente, ele converte ou 'muda' os 5V do microcontrolador para os 3,3V compatíveis com o cartão SD. Usar o deslocador de nível junto com 3.3V (como eu fiz) não afeta seu funcionamento.

O cartão SD usa interface SPI para comunicação. O pino CS ou Chip Select pode ser conectado a qualquer um dos pinos GPIO. Eu escolhi GPIO15 (D8). Basta fazer as alterações necessárias no código se você usou um pino diferente do GPIO15

  • SCK para D5
  • MISO a D6
  • MOSI para D7
  • CS para D8
  • VCC para 3,3V
  • GND para GND

Formate o seu cartão SD

A biblioteca que usaremos oferece suporte a sistemas de arquivos FAT16 ou FAT32. Certifique-se de formatar o cartão SD no formato correto.

Etapa 4: Fazendo o teclado

Fazendo o teclado
Fazendo o teclado
Fazendo o teclado
Fazendo o teclado
Fazendo o teclado
Fazendo o teclado

Quero manter o projeto o menor possível. Portanto, decidi fazer uma placa separada para o teclado e montá-la acima da placa principal mais tarde. Isso vai economizar espaço.

Uma matriz de chave pronta pode ser comprada, mas eu tinha botões por aí. Além disso, eu queria torná-lo o mais pequeno possível. Um arranjo típico de linhas e colunas conectadas precisaria de um total de 6 pinos GPIO para a matriz 3 x 3. Isso é bastante considerando que o display OLED e o cartão SD também serão conectados.

Em caso de dúvida, procure no Google! Isso é o que eu fiz e encontrei uma maneira que vai precisar de apenas 1 pino para controlar toda a matriz. Isso é possível usando o Voltage Divider Matrix. Os resistores são conectados entre cada linha e coluna. Quando uma tecla é pressionada, uma certa combinação de resistores é conectada em série, o que cria um divisor de tensão. Consulte o diagrama do circuito. A variação da voltagem será lida pelo microcontrolador. Cada tecla produzirá uma voltagem diferente e, portanto, pode ser facilmente descoberto qual tecla foi pressionada lendo a voltagem de saída da matriz. Como queremos ler os níveis de tensão variáveis e agora apenas altos e baixos, precisaremos de um pino analógico. Felizmente, há um pino analógico identificado como A0 no NodeMCU. Problema resolvido!

Se você deseja comprar uma matriz, verifique as conexões internas mostradas no diagrama. Uma matriz de qualquer dimensão pode ser usada. Certifique-se de usar um resistor de 2,2kΩ entre as linhas e um resistor de 680Ω entre as colunas.

Botões de conexão

Os pinos 1 e 2 são conectados internamente. Mesmo com os pinos 3 e 4. Quando o botão é pressionado, todos os pinos são conectados juntos. Consulte a imagem para ter uma ideia de como conectar os interruptores em um perfboard.

Eu conectei um conector macho de 3 pinos para que ele possa ser conectado à placa principal posteriormente.

Etapa 5: juntando tudo

Juntando tudo
Juntando tudo
Juntando tudo
Juntando tudo
Juntando tudo
Juntando tudo

Você pode planejar colocar os componentes onde quiser. Sem restrições sobre isso. Vou mostrar como fiz para ficar compacto porque queria algo que caísse na palma da mão. Pode ficar um pouco bagunçado, então tente do meu jeito se você se sentir confortável com a soldagem. Decidi preencher ambos os lados da placa como faria com uma placa de circuito impresso de duas camadas. Placa de breakout de cartão NodeMCU e SD de um lado e OLED e teclado do outro lado.

O rompimento do cartão SD se encaixa entre os dois conectores fêmeas que são para o NodeMCU. Desoldei os cabeçotes angulares masculinos com os quais a placa de breakout veio, girei-os e soldei novamente de modo que os pinos fiquem perpendicularmente para baixo, como mostrado na imagem. Acessar o slot de cartão SD torna-se mais fácil.

Dobrei os pinos de um conector fêmea de 4 pinos em um ângulo reto e o soldei no lado de cobre da perfboard como mostrado na imagem.

Cubra as juntas de solda sob o teclado para evitar curto-circuitos. Adicione um pedaço fino de espuma dura (cerca de 5 mm de espessura) entre o teclado e a placa-mãe para proteção e rigidez extras. Finalmente, solde o teclado que fizemos anteriormente. Ter um ferro de soldar com ponta pontiaguda certamente tornará seu trabalho mais fácil. Foi um trabalho complicado torná-lo o mais compacto possível, mas finalmente consegui.

Verifique todas as suas conexões para quaisquer curtos-circuitos antes de ligar o dispositivo

Etapa 6: Configurando o teclado

Configurando o teclado
Configurando o teclado

Depois de verificar todas as conexões, você estará pronto para ligar seu dispositivo pela primeira vez. Dedos cruzados! Sem fumaça mágica? Parabéns!

Agora estamos prontos para configurar o teclado. Lembre-se do funcionamento do teclado. Cada pressionamento de tecla produzirá uma tensão diferente que é fornecida ao pino analógico do NodeMCU. O ESP-12E possui um conversor analógico para digital (ADC) de resolução de 10 bits. 2 elevado à potência 10 resultará em 1024. Isso significa que obteremos uma leitura entre 0 e 1024 para cada tecla pressionada. Vamos ver quais leituras obtemos. Mas primeiro, temos que escrever um pequeno programa para obter esses valores. Abra o IDE do Arduino, copie, cole o código a seguir e faça upload para o NodeMCU.

int keypadPin = A0;

void setup () {Serial.begin (115200); } void loop () {int r = analogRead (keypadPin); Serial.println (r); }

  • Abra o monitor serial. Defina a taxa de transmissão para 115200.
  • Agora pressione qualquer botão. Você deve obter uma leitura constante no monitor serial. Pequenas flutuações estão bem. Isso será tratado no código principal. Faça o mesmo para cada chave.
  • Cada chave deve ter uma leitura diferente.
  • Anote todos os valores. Vamos precisar deles mais tarde.

Etapa 7: vamos codificar

Vamos codificar
Vamos codificar
Vamos codificar
Vamos codificar
Vamos codificar
Vamos codificar

Baixe o arquivo Scoreboard.ino fornecido abaixo em seu computador e abra-o usando o Arduino IDE.

Antes de fazer upload

1) Defina o tempo de atualização do placar. Por exemplo, 15L por 15 segundos.

2) Digite o SSID e a senha do roteador para se conectar.

3) Faça as alterações necessárias se você escolheu conectar o pino CS do cartão SD a um pino diferente do GPIO15.

4) Lembra-se dos valores que anotamos para todas as chaves? Temos que atribuir um número chave para cada valor. Eu também falei sobre as flutuações na leitura. Isso ocorre porque os contatos da chave não são perfeitos. No longo prazo, este valor pode desviar-se do valor da corrente devido ao envelhecimento dos contatos que adiciona resistência extra no circuito, alterando assim a tensão. Podemos cuidar desse problema no código.

Adicionaremos um limite superior e um limite inferior do valor com uma margem de 5. Por exemplo, obtive uma leitura de 617 para a chave 1.

  • Subtraia 5 dele. 617 - 5 = 612. Este é o limite inferior.
  • Agora adicione 5 a ele. 617 + 5 = 622. Este é o limite superior.
  • Vá até o final do código. Preencha o espaço fornecido para os dois valores no código conforme mostrado na imagem.
  • Faça isso para cada 9 valores.

if (r> 612 && r <622) {keyNumber = 1; }

O que isto significa?

SE a leitura (r) for maior que 612 E menor que 622, então a tecla 1 é pressionada. Qualquer valor entre 612 e 622 será tratado como chave 1. Isso resolve o problema da leitura flutuante.

Etapa 8: Construindo o Caso

Construindo o Caso
Construindo o Caso
Construindo o Caso
Construindo o Caso
Construindo o Caso
Construindo o Caso
Construindo o Caso
Construindo o Caso

Isso é totalmente opcional. Achei que o projeto ficaria bem organizado e completo com uma caixa ao redor. Sem ferramentas adequadas para este trabalho, seria uma tarefa enorme para mim. O case é construído em acrílico.

Preparou as peças para colagem alisando as bordas com lixa. Usei Fevi Kwik (Super Cola) para juntar todas as peças. A super cola deixa um resíduo branco após a cura. Portanto, aplique-o apenas entre as articulações. Você tem que ser rápido e preciso ao trabalhar com super cola, pois ela endurece rapidamente. O cimento acrílico é o mais adequado para este trabalho.

Fez uma pequena abertura para acessar a porta USB usando um arquivo. Deve ser grande o suficiente para inserir o cabo USB.

Criou uma grade 3x3 na capa para os botões de pressão. Isso tornará os botões de difícil acesso. Para resolver esse problema, cortei pedaços quadrados para cada tecla, de forma que seus botões agora estivessem estendidos até a superfície.

Depois de tanto lixar, cortar, consertar e ajustar, estava finalmente pronto!

Etapa 9: Divirta-se

Divirta-se!
Divirta-se!

Finalmente, todo o trabalho árduo está feito. Aumente o seu mini placar e fique atualizado com o jogo.

Depois de ligar, ele primeiro se conecta ao ponto de acesso. Inicializa o cartão SD. Ele mostrará um erro se o cartão SD não for inicializado.

Uma lista de todas as partidas será exibida junto com o número da partida.

Selecione o número correspondente usando o teclado.

As pontuações serão exibidas. Você pode personalizar todas as coisas que deseja ver na tela. Eu não iria me aprofundar muito na explicação do código. Você pode encontrar uma explicação detalhada aqui sobre como funciona a análise.

Para voltar ao menu, segure o botão VOLTAR (tecla 8) até que a página "Buscando pontuações …" seja exibida.

Planos futuros

  • Projete um PCB personalizado com o módulo ESP8266 12-E.
  • Adicione uma bateria recarregável.
  • Melhore o código com novos recursos.

Espero que você tenha gostado da construção. Faça você mesmo e divirta-se! Sempre há espaço para melhorias e muito para aprender. Tenha suas próprias ideias. Sinta-se à vontade para comentar qualquer sugestão sobre a construção. Obrigado por ficar até o fim.

Recomendado: