From f41de0468e5e10a81b76c549fb2381fd7ec4190a Mon Sep 17 00:00:00 2001 From: Christophe Jacquet Date: Sun, 6 Apr 2014 22:06:32 +0200 Subject: [PATCH] Documentation++ --- README.md | 9 ++++++--- doc/vfd_display.jpg | Bin 0 -> 18709 bytes 2 files changed, 6 insertions(+), 3 deletions(-) create mode 100644 doc/vfd_display.jpg diff --git a/README.md b/README.md index 7387e87..d7cb5af 100644 --- a/README.md +++ b/README.md @@ -8,12 +8,15 @@ This program generates an FM modulation, with RDS (Radio Data System) data gener It is based on the FM transmitter created by [Oliver Mattos and Oskar Weigl](http://www.icrobotics.co.uk/wiki/index.php/Turning_the_Raspberry_Pi_Into_an_FM_Transmitter), and later adapted to using DMA by [Richard Hirst](https://github.com/richardghirst). Christophe Jacquet adapted it and added the RDS transmitter. +

+PI-FMRDS +

## How to use it? To build Pi-FM-RDS, depends on the `sndfile` library. On Debian-like distributions, for instance Raspbian, run `sudo apt-get install libsndfile1-dev`. -Then run `make` in the `src` directory: +Then clone the source repository and run `make` in the `src` directory: ```bash git clone https://github.com/ChristopheJacquet/PiFmRds.git @@ -56,7 +59,7 @@ All arguments are optional: By default the PS changes back and forth between `Pi-FmRds` and a sequence number, starting at `00000000`. The PS changes around one time per second. -### Calibration +### Clock calibration (if experiencing difficulties) The RDS standards states that the error for the 57 kHz subcarrier must be less than ± 6 Hz, i.e. less than 105 ppm (parts per million). The Raspberry Pi's oscillator error may be above this figure. That is where the `-ppm` parameter comes into play: you specify your Pi's error and Pi-FM-RDS adjusts the clock dividers accordingly. @@ -68,7 +71,7 @@ One way to measure the ppm error is to play the `pulses.wav` file: it will play ## Diclaimer Never use this program to transmit VHF-FM data through an antenna, as it is -illegal in most countries. This code is for testing purposes only. +illegal in most countries. This code is for experimental purposes only. Always connect a shielded transmission line from the RaspberryPi directly to a radio receiver, so as **not** to emit radio waves. diff --git a/doc/vfd_display.jpg b/doc/vfd_display.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3148d257d9863443466b554731121d3ea1ac3e08 GIT binary patch literal 18709 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%0A%_ibylZ$sxGjX_;eqs&k=35s#$t|XLc8En7k zd6~0De{QD|Wh`aG3!iyWZSvLh=a-XDAbP7T+uw98Pd>|Ig)N{IAJ)8MO#|#`1;Olc9{? zG<~@ELwn8;Z2rBf<~mIv7Pps3=6?ha0`UDKp0&#A1Lv-TTD&r3o=NI!oW7KjdsoF` zYAH(R>a-zcshv3aj!)97Nx(H`b~!aw&&+Z8SDxf{C1MHAK+QxwPbQ|D=NL5+RTf+K!;^r*?nqKf5X5ObfcIX|rwRuTbQ{aN5q8Ns58 zlqb6;X8BDdE_3)%MIA_Fvizft;834CbJ~h2!(%D*99W3@_r(ygZ0FL7D_Cr2Eya8K>Ci8Ek{?n~I#XEu-;ESh zt;>H2Av_LoO=kJ1qKCMN0pxSqqh}&YD5nw2WJ(yEpF>Doozzi4nE06fl;{g8pl-Rvr7C1c`>Dqi8xYB@iROs;z7iYSu^ z4OtE|S{965hJQ*ZshixmElHw~tMGc9RoEqB0Vk3_#)>Nz^)y=-EoWtsao)8p?&MH# z$B{)9(H6{F)JMFNX*-T;rQO_xTjuFS6y+yv!kR`E{mXf+)1_tIIbw4~6~!m1+YO2n lADq+-eqt!1v6jZDf?nSA!^S?eQCWnABc3RtifBn6|Jh=1WV8SP literal 0 HcmV?d00001