PDA

View Full Version : Si4703 FM Tuner on Teensy 3.0



ZTiK.nl
02-26-2013, 06:05 AM
One of the products I ordered at sparkfun was the Si4703 FM Tuner (https://www.sparkfun.com/products/10663).

I have made the following connections:
3.3v to 3.3v
GND to GND
SDIO to A4 / SDA
SCLK to A5 / SCL
RST to GP0.7

RST probably needs some explaining:
I am out of digital pins at the moment, so I used an MCP23016 I/O expander to connect the reset to its pin #7 on port #0 (GP0.7)

The supplied example works straight out of the box, but I made a small adjustment to support my I/O expander so I don't think its really useful to upload it here.
However if you are interested, let me know and I'll upload it :)

Same as with most of my stuff, it hasn't been really tested, just tried to run the example and see what I get with it.
I'm sure there are many optimizations to be made but I'll look into that another time, this post is mainly for those interested that it works on a T3 ;)



Initializing I2C and Si4703
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Waiting...
Waiting...
Waiting...

Si4703 Configuration
Current station: 97.3MHz
1) Tune to 97.3
2) Mute On/Off
3) Display status
4) Seek up
5) Seek down
6) Poll for RDS
r) Print registers
8) Turn GPIO1 High
9) Turn GPIO1 Low
v) Volume
w) Tune up
s) Tune down
: Tune to 97.3
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Waiting...
Waiting...
Waiting...

Si4703 Configuration
Current station: 97.3MHz
1) Tune to 97.3
2) Mute On/Off
3) Display status
4) Seek up
5) Seek down
6) Poll for RDS
r) Print registers
8) Turn GPIO1 High
9) Turn GPIO1 Low
v) Volume
w) Tune up
s) Tune down
: Mute toggle

Si4703 Configuration
Current station: 97.3MHz
1) Tune to 97.3
2) Mute On/Off
3) Display status
4) Seek up
5) Seek down
6) Poll for RDS
r) Print registers
8) Turn GPIO1 High
9) Turn GPIO1 Low
v) Volume
w) Tune up
s) Tune down
: Mute toggle

Si4703 Configuration
Current station: 97.3MHz
1) Tune to 97.3
2) Mute On/Off
3) Display status
4) Seek up
5) Seek down
6) Poll for RDS
r) Print registers
8) Turn GPIO1 High
9) Turn GPIO1 Low
v) Volume
w) Tune up
s) Tune down
:
Radio Status:
(No RDS) (Seek Successful!) (AFC/Invalid Channel) (Mono) (RSSI=40 of 75)

Si4703 Configuration
Current station: 97.3MHz
1) Tune to 97.3
2) Mute On/Off
3) Display status
4) Seek up
5) Seek down
6) Poll for RDS
r) Print registers
8) Turn GPIO1 High
9) Turn GPIO1 Low
v) Volume
w) Tune up
s) Tune down
: Trying station:973
Trying station:973
Trying station:975
Trying station:975
Trying station:975
Trying station:975
Trying station:975
Trying station:975
Trying station:975
Trying station:975
Trying station:977
Trying station:977
Trying station:977
Trying station:977
Trying station:977
Trying station:977
Trying station:977
Trying station:977
Trying station:977
Trying station:979
Trying station:979
Trying station:979
Trying station:979
Trying station:979
Trying station:979
Trying station:979
Trying station:979
Trying station:981
Trying station:981
Trying station:981
Trying station:981
Trying station:981
Trying station:981
Trying station:981
Trying station:981
Waiting...
Waiting...
Waiting...
Seek complete

Si4703 Configuration
Current station: 98.1MHz
1) Tune to 97.3
2) Mute On/Off
3) Display status
4) Seek up
5) Seek down
6) Poll for RDS
r) Print registers
8) Turn GPIO1 High
9) Turn GPIO1 Low
v) Volume
w) Tune up
s) Tune down
: Trying station:981
Trying station:981
Trying station:979
Trying station:979
Trying station:979
Trying station:979
Trying station:979
Trying station:979
Trying station:979
Trying station:979
Trying station:977
Trying station:977
Trying station:977
Trying station:977
Trying station:977
Trying station:977
Trying station:977
Trying station:977
Trying station:977
Trying station:975
Trying station:975
Trying station:975
Trying station:975
Trying station:975
Trying station:975
Trying station:975
Trying station:975
Trying station:973
Trying station:973
Trying station:973
Trying station:973
Trying station:973
Trying station:973
Trying station:973
Trying station:973
Trying station:973
Trying station:971
Trying station:971
Trying station:971
Trying station:971
Trying station:971
Trying station:971
Trying station:971
Trying station:971
Trying station:971
Trying station:969
Trying station:969
Trying station:969
Trying station:969
Trying station:969
Trying station:969
Trying station:969
Trying station:969
Trying station:967
Trying station:967
Trying station:967
Trying station:967
Trying station:967
Trying station:967
Trying station:967
Trying station:967
Waiting...
Waiting...
Waiting...
Seek complete

Si4703 Configuration
Current station: 96.7MHz
1) Tune to 97.3
2) Mute On/Off
3) Display status
4) Seek up
5) Seek down
6) Poll for RDS
r) Print registers
8) Turn GPIO1 High
9) Turn GPIO1 Low
v) Volume
w) Tune up
s) Tune down
:
Volume:
+) Up
-) Down
x) Exit
Volume: 2
Volume: 3
Volume: 4
Volume: 5
Volume: 6
Volume: 7
Volume: 8
Volume: 9
Volume: 8
Volume: 7
Volume: 6
Volume: 5
Volume: 4
Volume: 3
Volume: 2
Volume: 1
Volume: 0
Volume: 1

Si4703 Configuration
Current station: 96.7MHz
1) Tune to 97.3
2) Mute On/Off
3) Display status
4) Seek up
5) Seek down
6) Poll for RDS
r) Print registers
8) Turn GPIO1 High
9) Turn GPIO1 Low
v) Volume
w) Tune up
s) Tune down
: Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Tuning
Waiting...
Waiting...
Waiting...

Si4703 Configuration
Current station: 96.9MHz
1) Tune to 97.3
2) Mute On/Off
3) Display status
4) Seek up
5) Seek down
6) Poll for RDS
r) Print registers
8) Turn GPIO1 High
9) Turn GPIO1 Low
v) Volume
w) Tune up
s) Tune down
: Choice = a

Si4703 Configuration
Current station: 96.9MHz
1) Tune to 97.3
2) Mute On/Off
3) Display status
4) Seek up
5) Seek down
6) Poll for RDS
r) Print registers
8) Turn GPIO1 High
9) Turn GPIO1 Low
v) Volume
w) Tune up
s) Tune down
: Choice = a

Si4703 Configuration
Current station: 96.9MHz
1) Tune to 97.3
2) Mute On/Off
3) Display status
4) Seek up
5) Seek down
6) Poll for RDS
r) Print registers
8) Turn GPIO1 High
9) Turn GPIO1 Low
v) Volume
w) Tune up
s) Tune down
:

I still need to change some code for the RDS because I have not found a way to stop polling yet.
I have to restart my program/Teensy to stop polling at the moment.


Haha, I'm listenening to crystal clear radio via my Teensy ...
Honestly, a few months ago I would have never believed a simple guy like me could do this amazing stuff :)
Since I started with the Teensy I have started learning about basic electronics, advanced electronics, C, and it has allowed me(!) to create something which is coming really close to something high-tech like an iPhone. (my opinion ofcourse!)

Paul, you ROCK!
You have made a wonderful product which has exceeded my expectations in every way and more!

ZTiK.nl
02-26-2013, 06:12 AM
Ow, if you start with this, make sure the volume is set to 1!

0 = off, 1 = lowest volume, 9 = loudest

On my normal (non-powered) headphone volume level 1 is quite loud, at level 7 I cannot put the headphone on without getting a headache within a few seconds.
While listening now, I am comfortably listening to level 2.
Increasing the volume doesn't seem to reduce audio quality at all though.


Last thing I should mention:
I am NOT using an external antenna, my headphone IS the antenna :cool:

DavidColburn
03-19-2013, 12:18 AM
Is there a way to connect a RTL-SDR for broadband listening?

What about adding a Ham-It UpConverter to add Amateur Radio & SW to the RTL-SDR?

ZTiK.nl
03-19-2013, 11:17 AM
Hi DavidColburn,

At first I should mention that I am very new to electronics, so whats written below could be very wrong, please doublecheck before believing this to be true!

As far as I can see, the RTL-SDR requires a USB connection, which will not work unless the Teensy has USB-HOST capabilities.
Also, it seems to depend on gnu-radio or similar software, which I think will be too much for a Teensy.
When googling (http://qi.qi.reddit.com/r/RTLSDR/comments/173lrd/websdr_arduino_an_idea/), it even seems too much for a RPi, unless the Pi only forwards the data to a computer which runs software to demodulate.

Would love to be proven wrong though :)

DavidColburn
03-19-2013, 02:39 PM
Based on this it's no problem with a Raspberry Pi http://m3php.com/2012/10/10/remote-sdr-using-raspberry-pi-rtl_tcp/

So, based on what has been done there, may it also be done with a Teensy?

And beyond that, might a Ham It Up v1.0 – RF Upconverter be handled to add HF bands?

This would result in a very portable and inexpensive DC-daylight receiver.

The next challenge would be the TX side ...

ZTiK.nl
03-20-2013, 01:01 AM
I wish I could tell you, but it's outside my (small) area of experience and understanding.
I'm afraid that I do not understand the inner workings (of the Teensy as well as any kind of receiver) well enough, sry.