Eu quero comunicar o Arduino com este módulo Brand-Yanpodo, modelo RU5102K
, que usa comunicação serial para trocar informações. O Arduino envia um comando para o módulo Brand-Yanpodo, modelo RU5102K, que é um leitor RFID, e depois o leitor retorna o valor de uma tag, mas isso não está acontecendo e estou com dificuldades para fazer isso. Alguém pode me ajudar com isso? Deixei as imagens das ligações e também a programação do Arduino, além de um código em Python que deu certo para realizar a comunicação, pois estou me baseando nele para criar o código do Arduino.
Código Python:
import serial
from time import sleep
Configura a porta serial
with serial.Serial(‘/dev/ttyUSB0’, 57600, timeout=1) as ser:
comando = bytes.fromhex(‘040001db4b’)
while True:
# Envia o comando pela porta serial
ser.write(comando)
print(f"Enviado: {comando.hex()}")
# Aguarda um momento para garantir que a resposta esteja disponível
sleep(0.05)
# Lê todos os bytes disponíveis na resposta
resposta = ser.read(ser.in_waiting)
# Se a resposta estiver disponível, processa e exibe
if resposta:
# Filtragem ou processamento adicional pode ser necessário
# Exemplo: removendo um prefixo ou bytes de cabeçalho específicos
processed_response = resposta.hex()
print(f"Recebido: {processed_response}")
# Adiciona uma pequena pausa para evitar sobrecarga na comunicação
sleep(0.5) # Pausa de 500 ms antes de enviar o próximo comando
Resultados no terminal:
Enviado: 040001db4b
Recebido: 050001fbf23d
Enviado: 040001db4b
Recebido: 050001fbf23d
Enviado: 040001db4b
Recebido: 050001fbf23d
Código Arduino:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(6, 5); // RX, TX
byte comando = {0x04, 0x00, 0x01, 0xDB, 0x4B}; // Comando em hexadecimal
void setup() {
// Inicializa a comunicação serial com velocidade de 57600
Serial.begin(57600);
mySerial.begin(57600);
delay(500); // Pausa para estabilização
}
void loop() {
// Envia o comando pela porta serial
mySerial.write(comando, sizeof(comando));
Serial.print("Enviado: ");
// Exibe o comando enviado no monitor serial
for (int i = 0; i < sizeof(comando); i++) {
Serial.print(comando[i], HEX);
Serial.print(" ");
}
Serial.println();
delay(50); // Pausa para garantir que a resposta esteja disponível
// Verifica se há dados recebidos
if (mySerial.available()) {
Serial.print("Recebido: ");
// Lê e exibe todos os dados recebidos
while (mySerial.available()) {
byte resposta = mySerial.read();
Serial.print(resposta, HEX);
Serial.print(" ");
}
Serial.println();
}
delay(500); // Pausa de 500 ms antes de enviar o próximo comando
}
Resultado no console do Arduino IDE:
19:07:00.531 → Enviado: 4 0 1 DB 4B
19:07:02.585 → Enviado: 4 0 1 DB 4B
19:07:03.133 → Enviado: 4 0 1 DB 4B
19:07:03.680 → Enviado: 4 0 1 DB 4B