Serial Data From The Web To An Arduino

In the old days, a serial port often connected to an acoustic coupler that gripped a phone handset and allowed a remote connection to a far away serial port (via another phone and acoustic coupler) at a blistering 300 baud or less. The acoustic coupler would do the job of converting serial data to audio and reconstituting it after its trip through the phone lines. Modems advanced, but have mostly given way to DSL, Cable, Fiber, and other high speed networking options.

In a decidedly retro move, [James Halliday] and [jerky] put a modern spin on that old idea. They used the webaudio API to send serial data to a remote Arduino. The hack uses a FET, a capacitor, and a few resistors. They didn’t quite build a real modem with the audio. Instead, they basically spoof the audio port into sending serial data and recover it with the external circuitry. They also only implement serial sending (so the Arduino receives) so far, although they mention the next step would be to build the other side of the connection.

They say the data transmission is finicky, but it works (see the video below). We imagine using proper modem tones and decoders might work better, but would be a lot more effort. We’ve covered a 1200 baud modem before. We’ve also covered a bit of the theory behind them.

8 thoughts on “Serial Data From The Web To An Arduino

  1. Probably needs some kind of encoding (carrier signal). If you just try to dump straight data as WAV high-low pulses, periods of repeated 0 or 1 tend to get destroyed by lowpass filter on output.

    Simplest scheme is something like Kansas City Standard as they used on old cassette tapes for early home computers.

  2. I actually did exactly this – in both directions – over a year ago. I think HaD featured it? http://www.espruino.com/Headphone

    There’s a full syntax-highlighted IDE and a blockly-based editor there with a VT100(ish) terminal that runs in the browser and uses the WebAudio API for TX and RX.

    It turns out you don’t really need the FET (at least I haven’t found anything that needs it). With 3.3v devices, you can add a capacitor, bias to 1.6v, and you’re basically sorted. On the receive end it’s even easier (a potential divider) as you can do a lot in software.

  3. Actually DSL and Cable terminals are modems. They modulate and demodulate. The only difference betwern them and the POST modems is several MHz wide bandwidth instead of a 3kHz one.

Leave a Reply to drwho8 (@drwho8)Cancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.