Go up one level.

AR1010 FM Radio Interfaced to a Linux PC over USB


This is an FM radio implementation based on the Sparkfun AR1010 FM Receiver breakout board, interfaced to a PC over USB using the Sparkfun FTDI RS232R breakout board.

The AR1010 FM radio chip works extremely well. Here, it picks up just about all of the local stations without any antenna at all, other than the breadboard that it is plugged into!

This design utilizes 3 CBUS (GPIO) pins from the FTDI board to directly control the FM radio.
First, use my Linux ft232r_prog utility to convert the FT232R CBUS 0/1/2/3 pins into "I/O Mode" from their default assignments.

Then connect the control wires:

  • CBUS0(TXLED) to the AR1010 DATA pin, and remove the Rx/Tx LEDs from the FTDI board.
  • CBUS1(RXLED) to the AR1010 CLOCK pin,
  • CBUS2(TXDEN) to the AR1010 BUSEN/CS pin,
  • GND to the AR1010 GND pin, and
  • VCCIO to the AR1010 VCC (power) pin. This works best with VCCIO as +3.3V (default).
  • Use the L/R audio + GND directly as line-in to the PC sound card.
  • Optional: connect an LED + 470-ohm resistor in series between GND and CBUS3(PWREN).

    Remove the Rx/Tx LEDs from the FT232R board; otherwise they will prevent communicating with the radio chip.

    Enable 3wire I/O mode: Remove the solder blob from the AR1010 BUSMODE pad, so that it is then pulled up to Vcc rather than down to ground. This puts the chip into "3wire" mode rather than "2wire/I2C" mode.

    Download the full source + docs: fmradio_module-1.02.tgz (or fmradio_module-1.02.zip)
    Or just the latest AR1000F Programmers' Guide v0.81 (extracted from the manufacturer's public website).

    List of files included with fmradio_module-0.02:


    README.txt		-- This file
    docs/			-- useful documentation, including Programmers' Guide v0.81.
    Makefile		-- Linux makefile for fmradio_bitbang program.
    fmradio_bitbang		-- pre-compiled register read/write program: needs libusb and libftdi libraries.
    fmradio_bitbang.c	-- source code for register read/write program.
    fmradio_control.sh	-- Linux/bash shell script to initialize/program the radio module.
    fmradio_record.sh	-- Linux/bash shell script for use from /etc/crontab for scheduled recording.
    breadboard.jpg		-- photograph of my original breadboard implementation for this.

    The code includes a routine to perform the high/low LO "autotune" as described in the datasheet.
    This more than doubles the received signal strength indication (RSSI) for many of the stations here.

    Cheers!