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”
Now this is what Hack A Day is about. Amazing! What we need now is someone to apply this idea to do something. [Other then me that is.]
like this drone?:
problem with android is audio lag, as bad as >100ms between sending something and hearing it on the speaker
I think the previously-featured sparrow is even more impressive.
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.
Take a look at the mechanisms for restoring old tape storage for the Apple II families. Oddly enough they are using WAV formatted files. And according to the website, it is encoded.
hi..a nice project.
a simple question: on the circuit diagram, there are 4 transistors, but on the pcb, looks there are only 2. is it a 2-side pcb??
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.
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.
Please be kind and respectful to help make the comments section excellent. (Comment Policy)