Hackeo de comunicación serial Arduino

Recientemente compré una silla de masaje Chines con la esperanza de poder interceptar la comunicación en serie entre su control remoto con cable y la silla en sí, corté el cable y conecté el Rxd y Txd de la silla a mi arduino pin 3 y 4 y por supuesto el pin de tierra , utilicé un código de serie de software como se muestra a continuación, pero no pude dejar de obtener ningún valor legible. en algún momento, incluso cuando la silla no está conectada, el programa muestra algún valor 255, 128, 128... en el monitor serie, ¿podría ser un problema de velocidad de transmisión? cuando conecto el control remoto, todas sus almohadillas se iluminan al principio y solo algunas con el botón de encendido parpadeando continuamente en aproximadamente un segundo,

El control remoto con cable tiene cuatro líneas conectadas a la placa con las marcas Vcc, Gnd, Txd y Rxd, lo que muestra claramente que la comunicación es una especie de protocolo en serie.

Código utilizado.

#include <SoftwareSerial.h>
#define rxPin 3
#define txPin 4
SoftwareSerial softSerial =  SoftwareSerial(rxPin, txPin);
void setup()  {

 pinMode(rxPin, INPUT);
 pinMode(txPin, OUTPUT);
 softSerial.begin(9600);
 Serial.begin(9600);
}
void loop() {

 int data = softSerial.read();
 Serial.println(data);

 delay (1000);
podría ser la velocidad en baudios, esos números parecen problemas de velocidad en baudios. pero también podrían ser datos reales.
Debe determinar los niveles de voltaje y el método de señalización. conectar un osciloscopio suele ser la mejor manera de hacerlo.
¿Por qué supone que el control remoto con cable envía datos en serie?
Improvisar un analizador lógico es difícil. Una herramienta mucho mejor para esto sería un analizador lógico conectado por USB basado en CY7C68013A barato, ejecutado con sigrok/pulseview.

Respuestas (1)

Estás haciendo esto de la manera incorrecta. Es dudoso que incluso pueda estar seguro de la conexión de la interfaz serie y el protocolo utilizado. Hacer una conjetura a ciegas total es casi inútil.

La forma correcta de hacer esto es dejar las cosas conectadas de la manera normal y luego investigar qué está pasando. Usando un osciloscopio puede determinar la información esencial de la siguiente manera:

  1. Niveles de tensión utilizados para la señalización.
  2. Temporización de pulsos incluso hasta el punto de determinar la velocidad en baudios.
  3. Comprender la señalización para ver si en realidad es una serie asíncrona de algún otro protocolo serie.
  4. Determine si la señalización es de polaridad normal o invertida.
  5. Observe cuándo ocurre la señalización, como todo el tiempo, periódicamente o solo bajo comando.
  6. Calcule la dirección de la señal en varios cables.

Solo después de haber recopilado dicha información sería razonable conectarse a su MCU.

De hecho, un osciloscopio es un excelente lugar para comenzar, si está disponible, en particular para determinar rangos de voltaje. Pero la decodificación funciona mejor con un analizador lógico barato basado en USB, incluso si el alcance tiene decodificación en serie, por lo general es doloroso trabajar con él y no puede manejar volúmenes de datos, mientras que la memoria del analizador lógico es del tamaño del disco duro de su computadora portátil . Y el analizador lógico cuesta alrededor de $12 en comparación con los osciloscopios reales a partir de quizás $275. En última instancia, ambas son herramientas clave.