1
\$\begingroup\$

I recently bought a Chines massaging chair hoping i can intercept the serial communication between its wired remote and the chair itself, I've cut the wire and connect the Rxd and Txd of the chair to my arduino pin 3 and 4 and ofcourse the ground pin, i used a software-serial code as below but couldn't quit get any readable value. at some point even when the chair is not connected the program shows some value 255, 128, 128...on the serial monitor, could this be a baud rate issue? when i plug the remote all its pads light up at first and only a few with the power button led continuously blinking in about a second, but when i give 5V power to the remote all the pad light light up and freeze so by this i know that the chair sends some signal through its Rxd for the remote (same thing happen when i connect all wires except the Rxd of the remote, which is the Txd of the chair. am I doing something silly here or totally wrong ? am new to this SO Please help.

The wired remote has four lines connected to the board with markings Vcc, Gnd, Txd amd Rxd which clearly shows the communication to be some sort of serial protocol

Code used.

#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);
\$\endgroup\$
  • 1
    \$\begingroup\$ could be baud rate, those numbes look like baud rate problems. but they could be actual data too. \$\endgroup\$ – Jasen Dec 22 '18 at 21:42
  • 1
    \$\begingroup\$ You need to deterimine the voltage levels and signalling method. connecting an oscilloscope is usually the best way to do that. \$\endgroup\$ – Jasen Dec 22 '18 at 21:45
  • \$\begingroup\$ why are you assuming that the wired remote control sends serial data? \$\endgroup\$ – jsotola Dec 22 '18 at 22:53
  • \$\begingroup\$ Improvising a logic analyzer is hard. A much better tool for this would be a cheap CY7C68013A-based USB-connected logic analyzer, run with sigrok/pulseview. \$\endgroup\$ – Chris Stratton Dec 23 '18 at 15:07
3
\$\begingroup\$

You are going about this the wrong way. It is doubtful that you can even be sure of the serial interface connection and protocol used. Making a total blind guess is almost pointless.

The way to do this the proper way is to leave things connected the normal way and then investigate what is going on. Using an oscilloscope you can determine essential information as follows:

  1. Voltage levels used for signalling.
  2. Timing of pulses even to the extent of determining baud rate.
  3. Understanding the signalling to see if it is actually async serial of some other serial protocol.
  4. Determine if the signalling is normal polarity or inverted.
  5. Observe when signalling happens such as all the time, periodically or just under command.
  6. Figure out signal direction on various wires.

Only after you have collected such information would it be reasonable to connect to your MCU.

\$\endgroup\$
  • 1
    \$\begingroup\$ A scope is indeed a great place to start, if available, in particular to determine voltage ranges. But decoding works better with a cheap USB-based logic analyzer, even if the scope has serial decode it's usually painful to work with and can't handle volumes of data, wheras the memory of the logic analyzer is the size of your laptop's hard drive. And the logic analyzer costs about $12 vs real scopes starting at maybe $275. Ultimately both are key tools. \$\endgroup\$ – Chris Stratton Dec 23 '18 at 15:08

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.