2
\$\begingroup\$

I recently purchased a Amcrest ProHD IP2M-841W 1080P camera where the initial configuration is done over some kind of audio signal, a companion app for mobile phones which, at the end of the configuration phase plays a masked "sonar ping"ish sound, barely audible were some kind of clicks and whistles which reminded me of 90s-era dial-up internet.

I've heard this technology is sometimes used in TV ads and similar, paired with malware in phones to track people's viewing habits but I'd never imagined it useful for programming hardware settings into a difficult-to-access device.

I tried researching programming using audio signals, serial and SPI modulators/demodulators and turned up nearly nothing, anything mentioning ultrasound yielded results about ultrasonic depth sensors and CV topics.

What is this technique of programming using audio(& visual?) signals called, and does it require (or benefit from) special hardware, is it reliable, etc?

It seems ideal for first-time configuration of embedded systems, or diagnostics.

\$\endgroup\$
  • \$\begingroup\$ One could compare this communications method (audio tone detection) with the DTMF (en.wikipedia.org/wiki/Dual-tone_multi-frequency_signaling) system used in many countries to facilitate dialling when making a phone call. It is possible to use custom hardware (tuned band pass filters and level detectors) to detect the specific tone combinations, but it is also practically trivial these days to use a software algorithm (Goertzel or DFT/FFT) to perform the detection. The only difference here is that DTMF is designed for very low speed reliable data transfer. DTMF is highly robust. \$\endgroup\$ – Wossname Mar 17 '17 at 10:20
2
\$\begingroup\$

I did some research and found out that there's some really simple solutions. There's a software project by the name of minimodem which allows two computers to communicate over audio signals transmitted either over a cable, or over speakers and a mic.

This minimodem project is compatible with another project Arduino RTTY (Radio TTY) which literally gives the API RTTY.tx('Hello World'), from which the data can be picked up on a PC with a soundcard.

Going in reverse (transmitting from a PC/smartphone/etc to an Arduino) is significantly less well documented.

The general concept is called (Audio) Frequency Key Shifting ((A)FSK) and there are guides from TI and other manufactures of how to do it. Most solutions attach a small daughter board to handle the ADC, however it's documented that for low bit rates, the Arduino can handle this using the on-board hardware alone.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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