Module – SI4703 – FM Tuner
Hardware
Informatie (ENG)
This is an evaluation board for the Silicon Laboratories Si4703 FM tuner chip includes an amp and a headphone jack, and that’s everything you need to get up and running! Beyond being a simple FM radio, the Si4703 is also capable of detecting and processing both Radio Data Service (RDS) and Radio Broadcast Data Service (RBDS) information. The Si4703 even does a very good job of filtering and carrier detection. It also enables data such as the station ID and song name to be displayed to the user.
Using this board we are able to pick up multiple stations just as well as with a standard FM radio. The board breaks out all major pins and makes it easy to incorporate this great chip into your next radio project. Also, by plugging headphones into the 3.5mm audio jack, you effectively use the cable in your headphones as an antenna! Therefore, this board does not require an external antenna if using headphones or a 3.5mm audio cable longer than 3 feet.
Pinout
Pin: | Functie: |
---|---|
1 | +3.3V (VCC) |
2 | GND |
3 | SCDO Serial Data I/O |
4 | SCL Serial Clock (line) |
5 | SEN |
6 | RST (reset) |
7 | GPIO1 |
8 | GPIO2 |
Arduino
Wat heb je nodig?
1) Adafruit Si4703 bibliotheek
Sluit de module aan volgens onderstaand overzicht:
Arduino pin: | Si7403 FM module pin: |
---|---|
+3.3V | +3.3V (VCC) |
GND | GND |
A4 | SCDO Serial Data I/O |
A5 | SCL Serial Clock (line) |
D4 | RST (reset) |
Script
Testscript met de functies van de radio:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
#include <Si4703_Breakout.h> #include <Wire.h> int resetPin = 4; int SDIO = A4; int SCLK = A5; Si4703_Breakout radio(resetPin, SDIO, SCLK); int channel; int volume; char rdsBuffer[10]; void setup() { Serial.begin(9600); Serial.println("\n\nSi4703_Breakout Test Sketch"); Serial.println("==========================="); Serial.println("a b Favourite stations"); Serial.println("+ - Volume (max 15)"); Serial.println("u d Seek up / down"); Serial.println("r Listen for RDS Data (15 sec timeout)"); Serial.println("Send me a command letter."); radio.powerOn(); radio.setVolume(0); } void loop() { if (Serial.available()) { char ch = Serial.read(); if (ch == 'u') { channel = radio.seekUp(); displayInfo(); } else if (ch == 'd') { channel = radio.seekDown(); displayInfo(); } else if (ch == '+') { volume ++; if (volume == 16) volume = 15; radio.setVolume(volume); displayInfo(); } else if (ch == '-') { volume --; if (volume < 0) volume = 0; radio.setVolume(volume); displayInfo(); } else if (ch == 'a') { channel = 930; // Rock FM radio.setChannel(channel); displayInfo(); } else if (ch == 'b') { channel = 974; // BBC R4 radio.setChannel(channel); displayInfo(); } else if (ch == 'r') { Serial.println("RDS listening"); radio.readRDS(rdsBuffer, 15000); Serial.print("RDS heard:"); Serial.println(rdsBuffer); } } } void displayInfo() { Serial.print("Channel:"); Serial.print(channel); Serial.print(" Volume:"); Serial.println(volume); } |
Het resultaat
Bron(nen):
learn.sparkfun.com
Arduino Library
Initialiseer met:
1 2 3 4 5 |
int resetPin = 2; int SDIO = A4; int SCLK = A5; Si4703_Breakout radio(resetPin, SDIO, SCLK); |
Kanaal zoeken met:
1 2 |
channel = radio.seekUp(); channel = radio.seekDown(); |
Kanaal instellen:
radio.setChannel(channel);
Volume instellen:
radio.setVolume(volume);
RDS uitlezen:
1 2 3 4 |
Serial.println("RDS listening"); radio.readRDS(rdsBuffer, 15000); Serial.print("RDS heard:"); Serial.println(rdsBuffer); |
Schema
Teardown
GEEN GEGEVENS
Datasheet
Fritzing
Standaard inbegrepen in Fritzing.
Downloads
GEEN GEGEVENS