Serial connection to S500

I’m working on connecting a raspberry Pi to the S500 but I want to use my own software so that I can incorporate other devices like GNSS and maybe a water velocity sensor. I program in c++ (using QT) and have connected several devices using serial ports. This leaves me with some questions about where to start with the S500.

  1. I think that I prefer USB to serial so that I don’t have to build any wire harnesses. I have connected to the USB ports of other devices as serial ports, might that also work with the S500?
  2. If USB to USB does not work, I have a usb to serial port that I frequently use with my PI through the USB port…can I connect this type of serial port to the 3.3 v serial port of the S500 or will differences in voltages be a problem? - I suspect that the serial port converter has a MAX 232 or similar IC in it.
  3. what are the serial settings? I read somewhere in the docs that 115 kB is the transfer rate, but what are the data bits, stop bits and other serial protocol?
  4. I haven’t used the ping protocol before, but it looks fairly simple if I make the connection - just send ‘B’ and ‘R’ and the appropriate command structure and then listen for the response from the S500 controller, right? It would be nice to have a simple example message that I could send for a test to see if the controller is speaking the same language as my PI.
  5. It looks like testing should be done with the transducer in water to prevent damage to the transducer - can I simply put the sensor in a dish of water while I am doing preliminary software testing (just testing for response and not valid depths)? Can the wire / entrance to the transducer be submerged without risking damage, or is it best to mount the transducer with O-ring installed first (I realize that the controller should not get wet, but I don’t see this as a risk because of the long transducer cable)?

I would love to use ethernet because I know data transfer will be fast if I want to look at a waterfall signal, but I don’t I have the skill set for that yet.

Thanks in advance to your answers to my many confusing questions. Hopefully, I’m not going about this all wrong. :slight_smile:

You’re right on. The USB on the S500 is looks like a COM/serial device so that should work fine. USB is 12 Mbps so reasonably decent speed. You can set put the serial port in QT for 115kbaud, 8, N, 1 but there is actually no serial physically, so it runs at USB speed. It’s also pretty easy to use Ethernet UDP via QT. I’ll try to jump on later with further info, but my plane is landing now.

Fantastic.
I’ll wait to see an answer to question 5 before I hook up so that I don’t damage a transducer, but I’ll start writing some test code to insert in my existing software to communicate with the S500. I might even dabble with the UDP once I get things up and running, but it sounds like I’ll easily be able to do what I want to do with USB since most of my depths are fairly shallow (Maybe a couple of meters max). Even at high resolution, I don’t expect that collecting profiles will require lightning data rates.
Thanks for your quick response.

Dish of water is fine. You can run in air for several minutes with no worries.

Thanks. Just for cooling then, I presume.
I’ll give it a shot once I have a good power source set up.

Yes just for cooling. I’ve often put it at one end of a pan of water maybe 14" long and aimed it at the other end and you can get some reasonable profiles.

I used to do a lot of Qt, and here is some BR packet parsing code. As is with no guarantees and will probably have some undefined things, but might be helpful.

Just to be certain, it sounds like it isn’t a problem if the cable entrance to the transducer is submerged. Is that correct? I like your 14" pan idea.

Thanks a bunch for the code. This should be very useful for assembling and disassembling packets. You don’t happen to have the header files qdlprofiler.h or dl_types.h handy? I’m guessing that dl_types.h is probably just a generic data type definition header, but qdlprofiler.h is maybe a definition file for profiler variables and is more application specific? Anyway, no worries if they aren’t readily available.

Cheers,

DA