Crie um Bot no Telegram com Arduino MKR WiFi 1010: Guia Inicial de IoT
Componentes e Materiais
| Componente | Quantidade |
|---|---|
| Arduino MKR WiFi 1010 | 1 |
Sobre o Projeto
Este projeto demonstra como interligar o Arduino com as APIs do Telegram Bot. O projeto é construído em torno da nova placa MKR WiFi 1010 equipada com um módulo ESP32 da U-BLOX.
Nesta fase, o projeto não é mais do que uma prova de conceito, apenas para mostrar o que você poderia fazer, então para isso você precisa apenas da placa Arduino.
Mas o que é um bot do Telegram?
Bots são simplesmente contas do Telegram operadas por software – não por pessoas – e muitas vezes têm recursos de IA. Eles podem fazer qualquer coisa – ensinar, jogar, buscar, transmitir, lembrar, conectar, integrar com outros serviços, ou até mesmo passar comandos para a Internet das Coisas. (créditos ao Telegram: telegram.org/blog/bot-revolution)
No nosso caso, passaremos comandos para o Arduino construindo um simples dispositivo IoT. Ele responderá a comandos simples e também ligará/desligará o LED embutido. Deixo sua imaginação fazer mais com isso... (imagine conectar um ou mais relés aos pinos I/O e ligar/desligar um aquecedor ou sistema de ar condicionado com seu smartphone, por exemplo).
Passo 1: O Que Você Precisa
- Arduino MKR WiFi 1010 na loja Arduino: store.arduino.cc
- Arduino IDE 1.8.5 ou superior: arduino.cc
- Um cabo micro-USB para conectar o Arduino ao PC
- Uma conexão com a internet, requer SSID e senha. Melhor se usar seu próprio roteador doméstico para garantir que não está bloqueado.
- App Telegram instalado no seu smartphone, não importa a marca. Confira aqui para versões PC e Web também!
Passo 2: Instalando a IDE
Sim, eu sei, a maioria de vocês já tem a Arduino IDE instalada no PC, mas este tutorial também é destinado a iniciantes.
- Baixe a Arduino IDE 1.8.5 de sua escolha (arquivo zip para 'não administradores' ou exe).
- A versão 1.8.5 é recomendada; não testei versões antigas e a nova placa usada no projeto pode não ser suportada.
- Inicie a IDE.
- No menu Ferramentas escolha Placas e, no topo da lista de processadores, escolha Gerenciador de Placas.
- Role a nova janela até encontrar as placas Arduino SAMD que incluem o novo MKR WiFi 1010.
- Clique nessa aba ou em "Mais informações" dentro da aba, escolha a versão mais recente e instale.
- Aguarde a instalação completar. Ela cuidará também da instalação dos drivers.
- Você também precisa de uma nova biblioteca WiFi para esta placa: escolha Sketch > Incluir Biblioteca > Gerenciar Bibliotecas. Procure por WiFiNINA e instale como fez com o processador acima.
Agora conecte sua nova placa Arduino e aguarde o Windows completar a instalação do driver.
No menu Ferramentas > Placa você encontrará as novas placas, escolha a MKR WiFi 1010.
Outra biblioteca especial é necessária para este projeto: a biblioteca ESP8266TelegramBot de Giancarlo Bacchio. A biblioteca foi ligeiramente modificada para funcionar com esta placa, então ela está incluída na pasta do sketch.
Escolha a porta COM correta e teste a placa com o comando Obter Informações da Placa.
Parabéns, você terminou com a IDE!
Passo 3: Criando o Bot do Telegram
- Abra o app Telegram e, na barra de pesquisa, digite @BotFather e inicie um chat com ele. O BotFather é a... fábrica de bots. Ele ajudará você a criar um novo bot e alterar suas configurações.
- Após o comando /start, você verá a lista de ajuda.
- Digite /newbot. Agora digite o nome do seu bot. O nome é exibido nos detalhes do contato e em outros lugares.
- O BotFather pedirá um Nome de Usuário (Username). O Username é um nome curto, para ser usado em menções e links telegram.me. Usernames têm 5-32 caracteres, não diferenciam maiúsculas/minúsculas, mas podem incluir apenas caracteres latinos, números e sublinhados. O username do seu bot deve terminar em 'bot', ex: 'tetris_bot' ou 'TetrisBot'.
- Se tanto o nome quanto o username forem válidos, você receberá uma longa string de caracteres chamada TOKEN. Esta é sua 'chave' pessoal usada para comunicar com os servidores do Telegram. Copie e cole em um arquivo de texto no seu PC por enquanto. Usaremos isso depois no código do Arduino. Se perder, não se preocupe, apenas reabra o chat e digite /token para gerar um novo.
Todos os passos são descritos aqui: core.telegram.org/bots
Avançado (opcional)
- Reabra o chat e digite /help
- Clique (ou digite) /setuserpic para carregar uma imagem para seu bot.
- Clique (ou digite) /setabouttext para definir a seção "Sobre" do seu bot.
- Clique (ou digite) /setdescription para definir uma seção de descrição para seu bot.
Passo 4: Modificar, Carregar e Testar o Sketch
É hora de carregar o software no Arduino MKR WiFi 1010.
Baixe o sketch anexado e descompacte, por favor não altere nomes e pastas a menos que saiba o que está fazendo.
Modificar
Abra o sketch, precisamos preencher algumas informações:
- Vá para a aba
arduino_secrets.h: - Localize as informações da rede WiFi e digite o nome da sua rede (SSID) e senha.
- Localize as informações do Bot do Telegram e digite o nome, username e token fornecidos pelo @BotFather.
Carregar
Certifique-se de que a placa está correta na IDE e conectada, então tente compilar o código. Se a compilação for bem-sucedida, carregue na placa, levará apenas alguns segundos.
Em caso de problemas, verifique por erros de digitação e tente novamente.
Testar
[IMPORTANTE!] O sketch envia logs para a IDE. O processador tem uma porta USB nativa (como placas Leonardo). Uma vez ligado, o código esperará até que o monitor serial esteja rodando. Então, mantenha conectado ao PC e abra o monitor serial. O Arduino primeiro conectará à internet, então começará a fazer polling no servidor do Telegram por novas mensagens.
Agora abra o Telegram no seu dispositivo preferido e, na caixa de pesquisa, digite o nome do seu bot (não o username que termina com 'bot'). Abra um chat com ele.
O primeiro comando para iniciar um chat com um bot é /start, nosso Arduino responderá com uma mensagem de boas-vindas. Agora digite help (sem barra), ele responderá com uma lista de comandos suportados, você pode testar todos.
Você terminou o teste, se algo não estiver funcionando, verifique as informações inseridas no sketch (nome, username, token...)
Certificados Se você estiver enfrentando erros de conexão com o servidor do Telegram (log: Bot not connected):
- Abra Ferramentas > Atualizador WiFi101/WiFiNINA
- Certifique-se de que sua placa está conectada, verifique as portas à esquerda do atualizador, a placa deve estar lá
- Clique em Abrir sketch do atualizador e carregue na placa
- Após o upload, no atualizador, escolha o firmware mais recente para sua placa e clique em Atualizar firmware
- Após a atualização, no atualizador, seção Certificados SSL, clique em Adicionar domínio, no diálogo escreva
telegram.org:443e pressione OK. - Clique em Carregar certificados para módulo WiFi
- Carregue este sketch na placa
Passo 5: Melhorias
Olhando para o código, é muito simples implementar novos comandos e responder ao usuário.
Novos Comandos
Você pode escrever uma sub-rotina para cada novo comando. Cada sub cuidará de completar o comando e (eventualmente) retornar uma informação de status ao usuário.
Limitando Usuários
Claro, este projeto é apenas uma demonstração. Qualquer usuário do Telegram pode se conectar à sua casa e enviar comandos indesejados. Você não quer isso!
Olhe a imagem, ela mostra 2 usuários conectados. Como você pode ver, cada usuário tem seu próprio ID de usuário. Com um pouco de trabalho no lado do código, você pode filtrar (ou construir uma lista) para usuários autorizados apenas. Estude o código e tente interceptar o número do ID do usuário. Então execute comandos apenas de usuários conhecidos.
Hardware
Do lado do hardware, muitos sensores e relés podem ser conectados aos pinos I/O do Arduino.
Cuidado: a placa usada neste projeto é tolerante a 3.3V!!! Use um conversor de nível de tensão onde necessário! Para mais informações e dicas sobre esta placa, leia aqui: Guia MKR WiFi 1010
É isso, divirta-se!
Código
MKR1010Bot_V1_02.zip (C/C++)
Sketch do Bot Telegram (download apenas, sem prévia).
Processo de manufatura
- Estendendo GoPiGo v2 no Windows 10 IoT Core para Raspberry Pi 3
- Mealheiro Inteligente: Controlar Aceitador de Moedas com Arduino Nano
- Detector de Frequência de Áudio com Arduino – Meça Picos de Som com Módulo de Alta Sensibilidade
- Controlar um LED via Bluetooth com Arduino – Guia DIY Simples
- Jogo da Velha com Arduino, Matriz LED MAX7219 e Caixa de Papelão
- Construa um Voltímetro DIY com Arduino e Display Nokia 5110 – Guia Passo a Passo
- Construa um Temporizador Regressivo Confiável com Arduino e Display de 7 Segmentos SparkFun
- Eletrodomésticos Ativados por Voz: Controle Bluetooth com Google Assistant
- Construa o App Fridgeye com Display Nextion: Guia Passo a Passo
- Construa Seu Próprio Carro RC Porsche com Arduino: Guia Passo a Passo