How to use the Audio Jack as Data Interface on Android Systems

As one of the interfaces on mobile devices and tablets, the key function of the audio jack is to play music. However, its other usage cannot be ignored—the audio jack can also be used to transmit data.

More usages of the audio jack to connect devices are being developed all the time. Peripherals like iHealth Lab’s Glucometer (blood sugar calculator), the Irdroid (provides infrared remote functions to control TVs, set-top boxes, and audio components), and Flojack, an NFC reader (creates near-field-communications functionality for interaction with NFC tags or mobile devices) are made possible through audio jack connectivity.

Since wearable devices and peripherals have broad market prospects, I believe that the audio jack will be the prime data communication portal. In this article I will explain more details of this new feature.

( How to fix 5 common PC emergencies )

Introduction

The audio jack interface has two standards: OMTP and CTIA.  OMTP is an international standard; ATIS is an American standard, which is used on the Apple iPhone and iPad. They are different with V-Mic and GND position, the difference are shown in Figure 1.


OMPT and CTIA
Figure 1.   OMTP & CTIA


How to transmit data

When we send a 0x00FF data value, the first step is to convert the digital data value to an analog signal. We need to modulate the data value. Normally, we use a sine wave carrier for the analog signal.


FSK modulation signal
Figure 2. FSK[5] modulation signal[6]


The second step, in Android systems, is to call the audioTrack API[7] function to play the buffer. The following code sends data to the buffer using the audioTrack function.


01public void send(byte[] bytes_pkg) {
02        int bufsize = AudioTrack.getMinBufferSize(8000,
03                AudioFormat.CHANNEL_OUT_MONO,
04                AudioFormat.ENCODING_PCM_16BIT);
05        AudioTrack trackplayer = new AudioTrack(AudioManager.STREAM_MUSIC,
06                8000, AudioFormat.CHANNEL_OUT_MONO,
07                AudioFormat.ENCODING_PCM_16BIT, bufsize,
08AudioTrack.MODE_STREAM);
09        trackplayer.play();
10        trackplayer.write(bytes_pkg, 0, bytes_pkg.length);
11    }


How to receive data

As a receiver, we need to translate the analog signal to a data value, demodulate the signal to remove the carrier signal, and decode the data by protocol. The protocol can be a public data format or private definition protocol.


Demodulate the signal
Figure 3. Demodulate the signal6]



In Android systems, we use the audioRecord API[8] function to record the audio


https://software.intel.com/en-us/articles/using-the-audio-jack-as-data-interface-on-android-systems

How to harvest energy from audio signals

Obviously, power is required to drive the circuit for audio jack peripherals. For example, the L-channel sends data information. The R-channel sends sustained square or sine waveforms. These waveforms can be transformed to power that enables the MCU (Micro Controller Unit) and several sensors.


Case study: infrared peripherals

Androlirc is a Github-based project. Its function is to use the audio jack interface to send infrared commands. We can study this project to understand audio jack data communication. Androlirc uses the LIRC library to create a data buffer. This library is a Linux infrared library that supports several types of interfaces, for example: USB, audio jack, etc. Androlirc can use the LIRC library as a data encapsulation or data capsulation. Across the marketplace, you can find many infrared coding types, such as the RC-5 and RC-6 protocols. In the example, we use the RC-5 protocol to control a TV set. First, we need to modulate the data value using a 38k frequency sine waveform to generate buffer data; then we use the Android audio API function to play the audio buffer data. Meanwhile we can use one of two channels to play a sine or square waveform to power on the peripherals hardware.


Case study: audio jack development tools

NXP Semiconductors’ new smartphone solution, Quick-Jack, is a tool/development board based on a prototype project called Hijack. Hijack is a University of Michigan student project. The Hijack platform enables a new class of small, cheap, phone-centric sensor peripherals that support plug-and-play operations. We can use the NXP Quick-Jack developed board to help build our prototype product design. Figure 4 shows a smartphone displaying the indoor temperature from the audio jack-based peripheral temperature sensor.


Temperature value from Quick-Jack
Figure 4. Temperature value from Quick-Jack



Figure 5 shows how we can control the peripheral’s LED using an Android-based application.



Controlling the LED on the Quick-Jack
Figure 5. Controlling the LED on the Quick-Jack

Summary

Wearables and smart device peripherals are becoming more prevalent in the consumer market. The audio jack as a data communication function is being adopted by more and more ODMs and iMakers. Perhaps in the future, audio jack data communication functions will be universally supported by smartphone OSs.

Share this Article

You May Like

Comments

Popular Articles

Actor Ajith Car and Bike collection

Titile

Tamil actor Ajith kumar. who is popularly known for his passion to ride and Drive.Here folks have...

5 Ways to Reduce Noise in Diesel Cars

Titile

One of the biggest issues with diesel cars is their noise levels. Even the most refined diesel ...

How to wash your car without Water and ...

Titile

5 Steps to wash your car without waterIf it's not practical to wash your car at home or you have ...

12 Easy Tips To Increase Car Mileage

Titile

In the days ever rising fuel prices, the fuel bills are digging deep into the pockets of a comm...