Pular para o conteúdo principal

Bot Telegram com Python e Arduino

Cobra e uma placa Arduino UNO ao lado de um robô segurando uma carta

Olá pessoal, hoje vamos criar um bot no Telegram e implementar um código feito na linguagem de programação Python para ligar/desligar um led na placa arduino. Os procedimentos serão realizados no Sistema Operacional Xubuntu 18.04.

Segundo a Wikipédia, Bot é definido como:

Bot, diminutivo de robot, também conhecido como Internet bot ou web robot, é uma aplicação de software concebido para simular ações humanas repetidas vezes de maneira padrão, da mesma forma como faria um robô.

Abra o aplicativo Telegram e inicie uma conversa com o @botfather:

BotFather

Execute o comando /start e serão listados vários comandos:

Iniciando conversa com o BotFather

Execute o comando /newbot, digite o nome de apresentação do bot e após digite o username com sufixo bot, será disponibilizado o token para acessar a API do bot:

Criando bot e atribuindo nome

Abra o terminal com as teclas de atalho CTRL + ALT+ T e instale o telepot, que será utilizado para permitir interagir com o bot do Telegram:

pip install telepot

Instale o pyFirmata, para que seja possível controlar o Arduíno via programação utilizando o protocolo firmata:

pip install pyfirmata

Com o Arduino IDE aberta, selecione File > Examples > Frimata > StardardFirmata e realize o Upload do programa para a placa arduino.

IDE Arduino selecionando o exemplo firmata

Crie um arquivo com o nome bot.py e adicione o conteúdo abaixo:

# -*- coding: utf-8 -*-
import telepot
import os
from pyfirmata import Arduino, util
  
def handleCommad(content) :
  try:
    chat_id = content['chat']['id']
    command = content['text']

    if command == 'Hi' :
      mensage = 'Hello, how are you?'
      bot.sendMessage(chat_id, mensage)

    if command == '/on' :
      setDigitalPinState(my_board, 13, 1)
      sendMessage(chat_id, 'Led turn on')

    if command == '/off' :
      setDigitalPinState(my_board, 13, 0)
      sendMessage(chat_id,'Led turn off')

  except :
     bot.sendMessage(chat_id, 'There was an error!!!')

def configBoard(port) :
  return Arduino(port)

def setDigitalPinState(board, pin, state) :
  board.digital[pin].write(state)

def sendMessage(chat, mensage) :
  bot.sendMessage(chat, mensage)

token_telegram = os.environ["TELEGRAM_TOKEN"]
my_board = configBoard('/dev/ttyACM0')
bot = telepot.Bot(token_telegram)
bot.message_loop(handleCommad)

try:
  print('press CTRL + C to cancel')

  while True :
    pass
    
except KeyboardInterrupt :
  print('Bye')

Crie a variável de ambiente TELEGRAM_TOKEN com o valor do seu token utilizando o terminal:

export TELEGRAM_TOKEN="seu-token"

Execute o script python:

python bot.py

Acesse o bot criado anteriormente e execute o comando /on para ligar ou /off para desligar o led na placa arduino:

Ligando e desligando o led com o bot

Valeu pessoal 😃✌️, código fonte do projeto está disponível em https://github.com/franciscojsc/bot-telegram-arduino-python.

Referências

ALVES, G. F. O. Python: Como ler variavel de ambiente. DICAS DE PYTHON. Disponível em: https://dicasdepython.com.br/python-como-ler-variavel-de-ambiente. Acesso em: 7 dez. 2019.

FARIA, W. C. Programando Arduino em Python [PyFirmata]. MEDIUM. 16 mar. 2019. Disponível em: https://medium.com/@wellingtoncfaria/programando-arduino-em-python-pyfirmata-acf77af2240. Acesso em: 7 dez. 2019.

Como criar um bot simples no Telegram. TUDO SOBRE TELEGRAM. 16 set. 2016. Disponível em: http://tudosobretelegram.com.br/2016/09/16/como-criar-um-bot-simples-no-telegram. Acesso em: 7 dez. 2019.

Postagens mais visitadas deste blog

Calcular raiz quadrada e cúbica em Python

Olá pessoal, hoje vamos criar um script para imprimir no console a raiz quadrada e cúbica em Python.Abra o terminal com as teclas de atalho CTRL + ALT +B.Vamos criar um script chamado de calcularRaizQC.py nano calcularRaizQC.py Para criar esse algoritmo, temos que saber que um número elevado a 1/2 é igual à raiz quadrada e se elevamos a 1/3 será igual à raiz cúbica, com estas informações vamos codificarAo executar o script, será exibido o resultado como esperado.

Calcular a circunferência e área de um círculo em Python

Olá pessoal, hoje vamos criar dois script Python para calcular a circunferência e área de um círculo, será utilizada a IDE PyCharm para codificar os scripts. Para obter a circunferência e área de um círculo precisamos conhecer a medida do raio(r)
Fórmula para obter comprimento da circunferência do círculo:
C = 2π · r
Fórmula para obter a área do círculo:
A = π · r2
Crie um script com o nome circuloCircuferencia.py e digite o código abaixo.Resultado da execução do programa.Crie um script com o nome circuloArea.py e digite o código abaixo.Resultado da execução do programa.ReferênciaRIBEIRO, Amanda Gonçalves. "Comprimento da Circunferência e Área de um Círculo"; Brasil Escola. Disponível em https://brasilescola.uol.com.br/matematica/comprimento-area-circunferencia.html. Acesso em 10 de fevereiro de 2018.

Tabuada em Python

Olá pessoal, hoje vamos realizar a codificação da tabuada em Python, irei utilizar a IDE PyCharm para nosso exemplo.Crie um script Python com o nome tabuada.pyDigite o código abaixo.Pronto, o resultado será exibido como esperado :)