Skip to content

Comunicação com Python

O que esse código faz?

Este código de exemplo demonstra como realizar a comunicação serial entre um arduino e um computador, neste exeplo vamos usar um script python.

Um pouquinho de teoria

  • Definição de comunicação serial: A comunicação serial é um método de comunicação de dados em que os bits de informações são transmitidos sequencialmente, um após o outro, através de um único canal de comunicação. É uma abordagem simples e comum para transferir dados entre dispositivos, como microcontroladores e computadores.

  • Taxa de transmissão (baud rate): A taxa de transmissão, ou baud rate, é a velocidade na qual os bits são transmitidos através do canal de comunicação serial. É medida em bits por segundo (bps). Taxas de transmissão comuns comumente utilizadas incluem 9600, 19200 e 115200 bps. A taxa de transmissão deve ser configurada corretamente em ambos os dispositivos de comunicação (transmissor e receptor) para garantir que os dados sejam transmitidos e recebidos com precisão.

  • Protocolos de comunicação serial: Existem vários protocolos de comunicação serial disponíveis, cada um com suas próprias especificações e características. Alguns dos protocolos mais comuns incluem UART (Universal Asynchronous Receiver/Transmitter), SPI (Serial Peripheral Interface) e I2C (Inter-Integrated Circuit). Neste tutorial, estamos usando a comunicação UART através da porta serial disponível no Arduino.

  • Aplicações da comunicação serial: A comunicação serial é amplamente utilizada em várias aplicações, como comunicação entre microcontroladores e periféricos (por exemplo, sensores, displays, etc.), comunicação entre computadores e dispositivos eletrônicos (por exemplo, impressoras, modems, etc.), e até mesmo em redes de comunicação industrial (por exemplo, Modbus, Profibus, etc.).

  • Vantagens da comunicação serial: Algumas das principais vantagens da comunicação serial incluem sua simplicidade, baixo custo, capacidade de transmitir dados a longas distâncias e baixa contagem de pinos nos dispositivos envolvidos.

Códigos

O código funciona como um "Eco", o script Python enviará a mensagem para o Arduino, que a lerá e a enviará de volta. A mensagem será exibida no terminal ou prompt de comando.

void setup() {
  Serial.begin(9600); // Inicia a comunicação serial com uma taxa de transmissão de 9600 bps
}

void loop() {
  if (Serial.available() > 0) { // Verifica se há dados disponíveis para leitura
    String message = Serial.readString(); // Lê a mensagem enviada pelo Python
    Serial.println(message); // Envia a mensagem de volta para o Python
  }
}

A segunda parte é o código python (lembre-se de criar um arduino_serial.py)

import serial
import time

def main():
    ser = serial.Serial('COM3', 9600) # Altere 'COM3' para a porta serial do seu Arduino
    time.sleep(2) # Dá tempo para a conexão ser estabelecida

    while True:
        msg = input("Digite uma mensagem para enviar ao Arduino: ")
        ser.write(msg.encode()) # Envia a mensagem para o Arduino
        time.sleep(1) # Aguarda a resposta do Arduino

        while ser.inWaiting() > 0:
            response = ser.readline().decode().strip() # Lê a resposta do Arduino
            print("Resposta do Arduino:", response)

if __name__ == "__main__":
    main()

Executando o script

  • Abra o terminal ou prompt de comando e navegue até a pasta onde o arquivo "arduino_serial.py" está localizado.
  • Execute o seguinte comando: python arduino_serial.py
  • Digite a mensagem que deseja enviar para o Arduino e pressione Enter.
  • O script Python enviará a mensagem para o Arduino, que a lerá e a enviará de volta. A mensagem será exibida no terminal ou prompt de comando.

Desafios

Desafio 1

Faça os ajustes necessários para solucionar o checkpoint.