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:
- Os jogos que irão ocorrer naquele dia
- Horário dos jogos
- Placar em tempo real
- Alerta visual e sonoro em caso de gol
- 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.
Materiais Necessários
Segue abaixo a lista de componentes utilizados para essa aplicação:
- WeMos D1 R1 WiFi ESP8266
- Display LCD Gráfico 128×64
- Barra de Pinos 1×40 180 Graus
- Joystick Arduino 3 Eixos
- Motor de Vibração 1027
- Fonte 5V micro-usb
- Jumpers Macho-Fêmea
- Cola quente para fixação dos componentes
Esquemático Eletrônico
Segue abaixo o circuito eletrônico para esse projeto:
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
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 !
Feito isso, vá novamente em Ferramentas > Placas e selecione ESP8266 Boards e depois WeMos D1 R1 (Ou LOLIN (WeMos) D1 R1).
Bibliotecas adicionais
Precisamos instalar algumas bibliotecas adicionais. Para isso, vá em Ferramentas > Gerenciar de Bibliotecas.
Busque por Arduino Json e clique em instalar.
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.
Insira seu nome, e-mail escolha C#/. NET. Aceite os termos de uso e clique em Create account.
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.
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:
- 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)
- 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.
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.
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 😉
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
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.
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
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.