I did a quick test with a laptop(Putty) and Arduino in the vehicle and was able to to get OBD info, so I guess the connections are fine. And the 1996 Ram even started afterwards. I added some new handling for 'SEARCHING...' after this. Looks like there's a bunch of parsing to do depending on what you actually want to implement. The data can be bit-fields or values and are dependent on the mode/pid.
*** atsp0 --> OK *** atdp --> AUTO *** 01 00 --> 5000 *** TIMEOUT! SEARCHING... *** 01 00 --> *** send(): chars are still available! 524932484832666932516932665632495232131362*** 41 00 BE 3E B8 14 *** atdp --> AUTO, ISO 9141-2 *** 01 01 --> 41 01 83 07 61 21 *** 01 03 --> 41 03 00 00 *** 01 04 --> 41 04 00 *** 01 05 --> 41 05 31 *** 01 06 --> 41 06 80 *** 01 07 --> 41 07 80 *** 01 0B --> 41 0B 1F *** 01 0C --> 41 0C 00 00 *** 01 0D --> 41 0D 00 ***
I wrote some simple ESP8266 code using the same Arduino OBD library and a basic server to display a log, looping on ATI (info) requests. I loaded it on a NodeMCU board and stuck it on a breadboard with a Sparkfun TXB0104 breakout. It failed - first with spurious resets (forgot about NOT powering from a computer USB port), and then totally bad comm data. I switched to a Sparkfun BOB-12009 level converter, and it's working. I guess that's good enough for now. I assume the TXB0104 is too weak.
This project is leaving the Dark Ages and is going to use websockets for bidi communication. I pulled in an Arduino/ESP8266 lib and made some small changes and it's working pretty well. The initial static data is served normally and then all comm is over a websocket with JSON data. The console is sending commands and receiving responses, but I'll have to get everything running on a single power supply and try it in a vehicle again. Then I can do some looping on real PID commands.
Sorry, I didn't see the latest comments. The websockets library is:
https://github.com/morrissinger/ESP8266-Websocket
I don't have the hardware with me right now to do any more testing/updates, at least for a while.