Acompanhe o Brasileirão com ESP8266 3

O Campeonato Brasileiro Série A é um dos mais acompanhados pelas torcidas dos clubes de futebol no Brasil e no mundo. E para celebrar esse início de umas das maiores competições nacionais, desenvolvemos um projeto utilizando uma Placa WeMos D1 R1 Wifi para você acompanhar os jogos do brasileirão com ESP8266 em tempo real através de uma API.

Já está atualizado para o Brasileirão 2024!

Nesse projeto é possível visualizar através de um display LCD:

  1. Os jogos que irão ocorrer naquele dia
  2. Horário dos jogos
  3. Placar em tempo real
  4. Alerta visual e sonoro em caso de gol
  5. Alerta visual caso a partida tenha terminado

O intuito dessa aplicação é fazer o usuário poder acompanhar em tempo real com atualização constante (média de 6 segundos por partida) o jogo do seu time ou dos times que estão disputando posições semelhantes na tabela. Bastando apenas o dispositivo estar conectado a uma rede WiFi.

Para os assinantes da HeroBox que possuíam assinatura no período da copa, é possível aproveitar a HeroBox 24, bastando apenas gravar o novo código referente ao Brasileirão 2023.

Materiais Necessários

Segue abaixo a lista de componentes utilizados para essa aplicação:

Esquemático Eletrônico

Segue abaixo o circuito eletrônico para esse projeto:

 

Esquemático eletrônico: Projeto Brasileirão com ESP8266
Esquemático eletrônico: Projeto Brasileirão com ESP8266

Programação

Segue abaixo o passo a passo para a programação do WeMos D1 R1 WiFi:

Preparação da Arduino IDE – Placa WeMos D1 R1 WiFi

Para essa aplicação, iremos utilizar a IDE da Arduino. Para isso, precisamos instalar algumas bibliotecas:

Primeiramente, vá em Arquivo > Preferências e no campo “URLs Adicionais para Gerenciadores de Placas” cole o link abaixo.

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Arquivo > Preferências
Arquivo > Preferências
URLs Adicionais para Gerenciadores de Placas
URLs Adicionais para Gerenciadores de Placas

Após isso, vá em Ferramentas > Placa > Gerenciador de Placas e busque por esp8266.

IMPORTANTE: Faça instalação da versão 2.7.4 !

Ferramentas > Placa > Gerenciador de Placas
Ferramentas > Placa > Gerenciador de Placas
Gerenciador de Placas
Gerenciador de Placas

Feito isso, vá novamente em Ferramentas > Placas e selecione ESP8266 Boards e depois WeMos D1 R1 (Ou LOLIN (WeMos) D1 R1).

Ferramentas > Placas > ESP8266 Boards > WeMos D1 R1 (Ou LOLIN (WeMos) D1 R1).
Ferramentas > Placas > ESP8266 Boards > WeMos D1 R1 (Ou LOLIN (WeMos) D1 R1).

Bibliotecas adicionais

Precisamos instalar algumas bibliotecas adicionais. Para isso, vá em Ferramentas > Gerenciar de Bibliotecas.

Ferramentas > Gerenciar de Bibliotecas
Ferramentas > Gerenciar de Bibliotecas

Busque por Arduino Json e clique em instalar.

Instalando a Biblioteca Arduino Json
Instalando a Biblioteca Arduino Json
Instalando a Biblioteca U8G2
Instalando a Biblioteca U8G2
NTPClient
Instalando a Biblioteca NTPClient

Código

Você pode fazer o download do código no seguinte link: Código Brasileirão com ESP8266

No código, precisamos alterar três informações. A primeira delas é o nome da rede WiFi que o dispositivo estará conectado. O nome deve ser inserido dentro das aspas. Depois é necessário inserir a senha da rede WiFi, também dentro das aspas:

// informações da rede WiFi
const char *ssid     = "Nome-da-rede";
const char *password = "senha-da-rede";

E por último a chave da API.

IMPORTANTE:Utilize uma rede 2.4 GHz. Pois o ESP8266 não consegue conectar com rede 5 GHz !

Para finalizar, precisamos inserir a chave API no código. Para obter a chave, no seu navegador, busque por football-data.org e clique em Get started.

Página inicial do site football-data.org
Página inicial do site football-data.org

Insira seu nome, e-mail escolha C#/. NET. Aceite os termos de uso e clique em Create account.

Cração de conta no football-data.org
Cração de conta no football-data.org

Após isso, você deve receber um e-mail confirmando a criação da sua conta. No seu e-mail procure por “Your API Token” e copie o código com letras e números que estará após os dois pontos.

// Informações sobre a API football-data.org
#define API_KEY "INsira-Aqui-Sua-API-KEY"

Por fim, conecte a placa Wemos D1 R1 no seu computador usando o cabo USB. Vá em Ferramentas > Porta e selecione a porta que a placa está conectada.

Seleção de porta na Arduino IDE
Seleção de porta na Arduino IDE

Feito isso, clique no botão Carregar e aguarde o processo ser finalizado (Não é necessário apertar botões para carregar o código).

Funcionamento – Atualização dos jogos

Uma vez por dia o sistema faz o download por meio da API e seleciona os jogos que irão ocorrer naquele dia. Esse download leva em média 45 minutos.

O download é feito de duas formas:

  1. Em horário pré determinado – Se o sistema ficar ligado 24hrs por dia, o download ocorre todo dias às 02:30 da madrugada (devido ao fato de não costumar ter jogo nesse horário)
  2. Ao ligar- Ou, toda vez que o sistema é energizado/ligado.

Caso o usuário opte por desligar o sistema todo dia, deve-se levar em consideração que, ao ligar, o mesmo irá demorar aproximadamente 45 minutos para mostrar os jogos daquele dia. 

Tela de download de jogos: Projeto Brasileirção com ESP8266
Tela de download de jogos: Projeto Brasileirão com ESP8266

Acompanhamento dos jogos em tempo real

Após feito o download dos jogos, caso haja ao menos um jogo, o sistema irá mostrar os times da rodada, placar (caso o jogo esteja finalizado ou em andamento), status da partida (se o jogo finalizou, ficará escrito (FIM)),  horário e irá avisar caso algum time faça um gol.

O tempo de atualização dos placares depende da quantidade de jogos que há no dia. Exemplos: 1 jogo = 6 segundos, 3 jogos = 18 segundos, 6 jogos = 36 segundos e etc.

Jogos de hoje no projeto: Projeto Brasileirão com ESP8266
Jogos de hoje no projeto: Projeto Brasileirão com ESP8266
Tela de gol do projeto Brasileirão com ESP8266
Tela de gol do projeto Brasileirão com ESP8266

E em dias que não há jogos?

Em dias em que não há jogos, o usuário poderá alternar a tela entre três opções: logo do Brasileirão, relógio grande e tela mostrando que não há jogos hoje. Para alterar as telas, utilize o analógico para a esquerda ou para a direita.

 

Observações finais

  • Se o display ficar mostrando “Tentando conectar…” por muito tempo, significa que o dispositivo não está conseguindo conectar com a rede WiFi. Caso isso ocorra, confirme se a rede e senha foram digitados corretamente e se a rede é 2.4 GHz. O ESP8266 não consegue conectar em redes 5 GHz.
  • Não é previsto que em nenhuma parte do código o display fique sem informação escrita (em branco/azul). Portanto, caso isso ocorra, verifique se há algum erro de ligação. Outra sugestão é verificar o ajuste de contraste com o trimpot que fica na parte traseira do display. 
  • A API que fornece as informações dos jogos possui, no plano gratuito, uma limitação de até 10 requisições por minuto. Visto isso,  o tempo de download de cada jogo deve ser de no mínimo 6 segundos. Caso sejam feitas 11 ou mais requisições no intervalo de 1 minuto, a API dá erro, o que pode comprometer o funcionamento do código. Isso justifica o tempo inicial de download dos 380 jogos ser aproximadamente 40 minutos. Lembrando que esse tempo é apenas uma vez por dia, às 02:30 da madrugada. O acompanhamento dos gols em tempo real demora no máximo 1 minuto.
  • É possível utilizar o mesmo código para outros campeonatos com rodadas de pontos corridos? Sim, porém, será necessário modificar a ID inicial (“int id” no código) com os códigos do outro campeonato. Além de alterar o limite de “i” no “for” da “void update” conforme a quantidade máxima de jogos. E por último, deve-se modificar os nomes no void “baixar_times_rodada”.

Ficou animado com esse projeto? Conta para nós nos comentários. E não esqueça de nos seguir no Instagram para ficar por dentro de todas as novidades do universo Maker 😉

Faça seu comentário

Acesse sua conta e participe

3 Comentários

  1. Continua dando erro apos aceitar a sugestao do compilador, pode corrigor por favor
    // Rotina que faz o acesso a uma url (no nosso caso será a API)
    String download(String url)
    {
    HTTPClient http;
    // http.begin(url);
    http.begin(WiFiClient, url);
    http.addHeader(“X-Auth-Token”, API_KEY);
    int httpCode = http.GET();
    if (httpCode <= 0) {
    Serial.printf("[HTTP] GET… failed, error: %s\n", http.errorToString(httpCode).c_str());
    http.end();
    return "";
    }
    ERRO:
    C:\Users\Bastos\Downloads\jogos_brasileirao_v2\jogos_brasileirao_v2.ino: In function 'String download(String)':
    jogos_brasileirao_v2:2071:24: error: expected primary-expression before ',' token
    2071 | http.begin(WiFiClient, url);
    | ^
    exit status 1
    expected primary-expression before ',' token

    1. Olá.

      Vou responder aqui os seus dois últimos comentários.

      Aparentemente parece ser alguma questão de versão de biblioteca, o seu primeiro erro acusa “API obsoleta”, porém acabei de testar o meu e está rodando.

      Primeiramente, desinstale todo o Arduino e apague todas pastas.

      Em seguida, tente instalar a versão da placa e das bibliotecas exatamente na versão que é mostrada no tutorial. Exemplo: versão da placa esp8266 2.7.4.

      Experimenta fazer isso e caso persista no problema, favor entrar em contato comigo no WhatsApp (48) 3307-3495.

      Att.
      Vitor Mattos.
      Suporte Técnico Makerhero.

  2. Boa Noite!
    Pode me ajudar?
    Esta dando ess Erro:
    C:\Users\Bastos\Downloads\jogos_brasileirao_v2\jogos_brasileirao_v2.ino: In function ‘String download(String)’:
    jogos_brasileirao_v2:2070:13: error: call to ‘HTTPClient::begin’ declared with attribute error: obsolete API, use ::begin(WiFiClient, url)
    2070 | http.begin(url);
    | ~~~~~~~~~~^~~~~
    exit status 1
    call to ‘HTTPClient::begin’ declared with attribute error: obsolete API, use ::begin(WiFiClient, url)

    url: http://arduino.esp8266.com/stable/package_esp8266com_index.json