fm_transmitter/README.md

75 wiersze
3.7 KiB
Markdown
Czysty Zwykły widok Historia

# FM Transmitter
Use the Raspberry Pi as an FM transmitter. Works on every Raspberry Pi board.
2019-01-08 12:36:11 +00:00
2020-07-29 07:35:40 +00:00
Just get an FM receiver, connect a 20 - 40 cm plain wire to the Raspberry Pi's GPIO4 (PIN 7 on GPIO header) to act as an antenna, and you are ready for broadcasting.
2019-01-08 12:36:11 +00:00
This project uses the general clock output to produce frequency modulated radio communication. It is based on an idea originally presented by [Oliver Mattos and Oskar Weigl](http://icrobotics.co.uk/wiki/index.php/Turning_the_Raspberry_Pi_Into_an_FM_Transmitter) at [PiFM project](http://icrobotics.co.uk/wiki/index.php/Turning_the_Raspberry_Pi_Into_an_FM_Transmitter).
## How to use it
To use this project you will have to build the executable. First, clone this repository, then use `make` command as shown below:
2015-08-07 04:39:55 +00:00
```
git clone https://github.com/markondej/fm_transmitter
cd fm_transmitter
2015-08-07 04:39:55 +00:00
make
```
After a successful build you can start transmitting by executing the "fm_transmitter" program:
2015-07-22 15:38:41 +00:00
```
sudo ./fm_transmitter -f 102.0 acoustic_guitar_duet.wav
2015-07-22 15:38:41 +00:00
```
Where:
2019-01-05 03:17:19 +00:00
* -f frequency - Specifies the frequency in MHz, 100.0 by default if not passed
* acoustic_guitar_duet.wav - Sample WAV file, you can use your own
2019-01-08 14:45:37 +00:00
Other options:
* -d dma_channel - Specifies the DMA channel to be used (0 by default), type 255 to disable DMA transfer, CPU will be used instead
* -b bandwidth - Specifies the bandwidth in kHz, 100 by default
* -r - Loops the playback
2019-01-08 14:45:37 +00:00
2019-01-08 08:54:44 +00:00
After transmission has begun, simply tune an FM receiver to chosen frequency, You should hear the playback.
2020-03-21 20:45:31 +00:00
### Raspberry Pi 4
On Raspberry Pi 4 other built-in hardware probably interfers somehow with this software making transmitting not possible on all standard FM broadcasting frequencies. In this case it is recommended to:
1. Compile executable with option to use GPIO21 instead of GPIO4 (PIN 40 on GPIO header):
```
make GPIO21=1
```
2020-07-29 07:35:40 +00:00
2. Change either ARM core frequency scaling governor settings to "performance" or to change ARM minimum and maximum core frequencies to one constant value (see: https://www.raspberrypi.org/forums/viewtopic.php?t=152692 ).
2020-03-21 20:45:31 +00:00
```
echo "performance"| sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
```
3. Using lower FM broadcasting frequencies (below 93 MHz) when transmitting.
2018-12-29 02:31:10 +00:00
### Supported audio formats
You can transmitt uncompressed WAV (.wav) files directly or read audio data from stdin, eg.:
2015-07-22 15:38:41 +00:00
```
2019-01-10 11:24:31 +00:00
sudo apt-get install sox
2020-03-21 20:45:31 +00:00
sox acoustic_guitar_duet.wav -r 22050 -c 1 -b 16 -t wav - | sudo ./fm_transmitter -f 100.6 -
```
2021-01-09 13:57:11 +00:00
Please note only uncompressed WAV files are supported. If you receive the "corrupted data" error try converting the file, eg. by using FFMPEG:
```
ffmpeg -i not_wav_song.webm -f wav -bitexact -acodec pcm_s16le -ar 22050 -ac 1 song.wav
sudo ./fm_transmitter -f 100.6 song.wav
```
Or you could also use SoX:
```
sudo apt-get install sox libsox-fmt-mp3
sox my-audio.mp3 -r 22050 -c 1 -b 16 -t wav my-converted-audio.wav
sudo ./fm_transmitter -f 100.6 my-converted-audio.wav
```
### Microphone support
In order to use a microphone live input use the `arecord` command, eg.:
```
arecord -D hw:1,0 -c1 -d 0 -r 22050 -f S16_LE | sudo ./fm_transmitter -f 100.6 -
2015-07-22 15:38:41 +00:00
```
In cases of a performance drop down use ```plughw:1,0``` instead of ```hw:1,0``` like this:
```
arecord -D plughw:1,0 -c1 -d 0 -r 22050 -f S16_LE | sudo ./fm_transmitter -f 100.6 -
```
2018-11-30 23:42:19 +00:00
## Legal note
2015-07-22 15:38:41 +00:00
Please keep in mind that transmitting on certain frequencies without special permissions may be illegal in your country.
## New features
2019-01-05 03:19:30 +00:00
* DMA peripheral support
2019-01-08 08:54:44 +00:00
* Allows custom frequency and bandwidth settings
* Works on every Raspberry Pi model
* Reads mono and stereo files
* Reads data from stdin
2019-01-08 14:45:37 +00:00
Included sample audio was created by [graham_makes](https://freesound.org/people/graham_makes/sounds/449409/) and published on [freesound.org](https://freesound.org/)