{"id":1017,"date":"2015-06-04T15:07:29","date_gmt":"2015-06-04T15:07:29","guid":{"rendered":"http:\/\/www.blog.exrockets.com\/blog\/?p=1017"},"modified":"2018-03-15T04:41:03","modified_gmt":"2018-03-15T04:41:03","slug":"gps-receiver-to-fm-radio-88-107-mhz-audio-tracking","status":"publish","type":"post","link":"http:\/\/www.blog.exrockets.com\/blog\/gps-receiver-to-fm-radio-88-107-mhz-audio-tracking\/","title":{"rendered":"GPS RECEIVER TO FM RADIO (88-107 MHz) AUDIO + RDS TRACKING V2"},"content":{"rendered":"<p><a href=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2014\/12\/FM_GPS_PCB_TOP.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1231\" src=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2014\/12\/FM_GPS_PCB_TOP.jpg\" alt=\"FM_GPS_PCB_TOP\" width=\"1800\" height=\"682\" srcset=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2014\/12\/FM_GPS_PCB_TOP.jpg 1800w, http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2014\/12\/FM_GPS_PCB_TOP-300x114.jpg 300w, http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2014\/12\/FM_GPS_PCB_TOP-1024x388.jpg 1024w\" sizes=\"auto, (max-width: 1800px) 100vw, 1800px\" \/><\/a><\/p>\n<p>Today I made some modifications to this is a new project for a GPS to FM radio tracking device for rockets i.e. the V2. The initial design lacked the antenna impedance matching circuit which caused problems with the end amplifier. Also I increased the possible choices of frequencies, see the table further down. Now instead of soldering and de-soldering tiny resistors, the frequency and the transmitting modes are selected via a DIP switch.<\/p>\n<p>Another change is the addition of FM RDS functionality \u2013 the GPS coordinates are simultaneously transmitted via the RDS channel. However this function is not really reliable and as any RDS system, it needs a strong signal for error-free RDS text.<\/p>\n<p><a href=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/FM_RDS.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1259\" src=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/FM_RDS.jpg\" alt=\"FM_RDS\" width=\"1100\" height=\"690\" srcset=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/FM_RDS.jpg 1100w, http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/FM_RDS-300x188.jpg 300w, http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/FM_RDS-1024x642.jpg 1024w\" sizes=\"auto, (max-width: 1100px) 100vw, 1100px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-1293\" src=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/1.jpg\" alt=\"1\" width=\"266\" height=\"639\" \/><\/a><a href=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-1295\" src=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/2.jpg\" alt=\"2\" width=\"323\" height=\"777\" \/><\/a><\/p>\n<p>As an aid for calculating the RDS 8 bytes I made an <a href=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/RDS_CALCULATOR.xlsx\">Excel spreadsheet<\/a> that can give the 8 bytes in a binary form, which makes it easier to read and calculate the RDS words. More information about the RDS standard you can find in the pdf file at the bottom of the page.<\/p>\n<p><a href=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/RDS.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1296\" src=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/RDS.jpg\" alt=\"RDS\" width=\"1266\" height=\"528\" srcset=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/RDS.jpg 1266w, http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/RDS-300x125.jpg 300w, http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/RDS-1024x427.jpg 1024w\" sizes=\"auto, (max-width: 1266px) 100vw, 1266px\" \/><\/a><\/p>\n<p>What is interesting in this project is that the device will actually speak the coordinates over the FM radio in the 88-107 MHz band so you won\u2019t need a special receiver to track the rocket.<\/p>\n<p>for example if the GPS coordinates are: &#8220;Latitude: 42 59.6281N, Longitude: 024 51.5161E, Altitude: 0850.7m&#8221;<\/p>\n<p>what you actually will hear on your ordinary FM radio receiver (depending on what data mode you selected \u2013 see down) will be: &#8220;FOUR, TWO, FIVE, NINE, POINT, SIX, TWO, EIGHT, ONE, NORTH, ZERO, TWO, FOUR, FIVE, ONE, POINT, FIVE, ONE, SIX, ONE, EAST, EIGHT, FIVE, ZERO, POINT, SEVEN&#8221;<\/p>\n<p>&nbsp;<\/p>\n<p>This device has four functional modules as shown on the general diagram:<\/p>\n<p><a href=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/BAS.bmp\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1286\" src=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/BAS.bmp\" alt=\"BAS\" width=\"926\" height=\"236\" srcset=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/BAS.bmp 926w, http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/BAS-300x76.bmp 300w\" sizes=\"auto, (max-width: 926px) 100vw, 926px\" \/><\/a><\/p>\n<p>1. GPS module \u2013 decodes the satellite information and sends the NMEA messages to the microcontroller<br \/>\n2. Microcontroller \u2013 Decodes the NMEA message from the GPS and generates the audio signal, that is being sent to the FM modulator<br \/>\n3. FM modulator \u2013 generates the FM signal and carrier frequency<br \/>\n4. RF amplifier \u2013 amplifies the FM signal that is being transmitted<\/p>\n<p>And the actual schematic looks like this:<\/p>\n<p><a href=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/sch.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1287\" src=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/sch.png\" alt=\"sch\" width=\"4779\" height=\"3048\" srcset=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/sch.png 4779w, http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/sch-300x191.png 300w, http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/sch-1024x653.png 1024w\" sizes=\"auto, (max-width: 4779px) 100vw, 4779px\" \/><\/a><\/p>\n<p>More information about each part of the design:<\/p>\n<p>1. The GPS module (Quectel L80) is a very inexpensive GPS module from China while having excellent reception. After a cold start, the time to first fix is about 60-90 seconds. For the moment I have tested this module only on the open ground or in a plastic box while the antenna was facing down. So far I haven\u2019t seen any difference in the time to first fix or degradation in the accuracy. However I plan to conduct more tests.<\/p>\n<p>2. The MCU is Microchip PIC18LF2550. This microcontroller decodes the NMEA messages from the GPS module and generates the audio signal (speech) that will be transmitted from the FM modulator according the jumper settings. Instead of the ordinary PC jumpers this time I am using small 0-Ohm resistors to save space. These jumpers can set the Data Transmission Mode, FM Frequency and Message Frequency (how often to transmit the coordinates over the radio):<\/p>\n<p style=\"padding-left: 30px;\">a) DM (Data Mode) switch (SW8) \u2013 set two transmission modes:<\/p>\n<p style=\"padding-left: 60px;\">&#8211; Full (DM jumper off) \u2013 if selected then the MCU will generate audio for the full set of coordinates and altitude i.e. degrees and minutes + heading + altitude.\u00a0 For example if\u00a0 (Latitude: 42 59.6281N, Longitude: 024 51.5161E, Altitude: 0850.7m), you will hear (FOUR, TWO, FIVE, NINE, POINT, SIX, TWO, EIGHT, ONE, NORTH, ZERO, TWO, FOUR, FIVE, ONE, POINT, FIVE, ONE, SIX, ONE, EAST, EIGHT, FIVE, ZERO, POINT, SEVEN)<\/p>\n<p style=\"padding-left: 60px;\">&#8211; Short (DM jumper on) \u2013 if selected the MCU will generate audio only for the minutes and heading from the set of coordinates.\u00a0 For example if\u00a0 (Latitude: 42 59.6281N, Longitude: 024 51.5161E, Altitude: 0850.7m), you will hear (FIVE, NINE, POINT, SIX, TWO, EIGHT, ONE, NORTH, FIVE, ONE, POINT, FIVE, ONE, SIX, ONE, EAST)<\/p>\n<p style=\"padding-left: 30px;\">b) TR1 (SW6) and TR2 (SW7) selects the transmission period as follows:<\/p>\n<p style=\"padding-left: 30px;\">TR1=ON and TR2=ON \/every 60 seconds<br \/>\nTR1=ON and TR2=OFF \/every 45 seconds<br \/>\nTR1=OFF and TR2=ON \/every 30 seconds<br \/>\nTR1=OFF and TR2=OFF \/every 15 seconds<\/p>\n<p style=\"padding-left: 30px;\">c) SW1, SW2, SW3, SW4 and SW5 (FM frequency) set the FM transmission frequency as follows:<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2014\/12\/FREQ_FM.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1234\" src=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2014\/12\/FREQ_FM.jpg\" alt=\"FREQ_FM\" width=\"385\" height=\"661\" srcset=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2014\/12\/FREQ_FM.jpg 385w, http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2014\/12\/FREQ_FM-175x300.jpg 175w\" sizes=\"auto, (max-width: 385px) 100vw, 385px\" \/><\/a><\/p>\n<p style=\"padding-left: 30px;\">I have selected in my MCU firmware those 32 frequencies in equal intervals from 88 to 107 MHz but in practice I could have set any frequency from 76 to 116 MHz.<\/p>\n<p>3. The FM modulator (QN8027) is very inexpensive, less than 50 cents, complete FM radio transmitter on a single chip that requires only two external components \u2013 a 12\/24 MHz crystal and any low quality single value chip inductor with inductance anywhere between 150nH and 400nH.<\/p>\n<p>After some testing I was amazed from the quality of those FM modulators. The frequency s extremely stable and even touching the IC and the RF paths didn\u2019t cause a change in the frequency more than 0.005MHz. In addition this chip offers the possibility to send RDS information as well and it can be used to send the coordinates too.<\/p>\n<p>4. RF amplifier \u2013 this is a two stage amplifier consisting of one MMG3007NT1 and one ADL5324 Class A amplifiers.\u00a0 The output power is about 600-750mW or near 28dBm.\u00a0 The ADL5324 is not rated for such power output but because the transmission bursts are only between 2.5 and 5 second it is holding well.<\/p>\n<p><a href=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2014\/12\/FM_GPS_PCB_TOP1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-1235\" src=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2014\/12\/FM_GPS_PCB_TOP1.jpg\" alt=\"FM_GPS_PCB_TOP\" width=\"271\" height=\"248\" \/><\/a> <a href=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2014\/12\/FM_GPS_PCB_BOT.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-1236\" src=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2014\/12\/FM_GPS_PCB_BOT.jpg\" alt=\"FM_GPS_PCB_BOT\" width=\"245\" height=\"247\" \/><\/a><\/p>\n<p>PIC18F2550 Audio playback:<\/p>\n<p>Audio playback is realized by a PWM technique where the MCU output pin is being held HIGH or LOW for a predetermined period of time, the signal is being shaped by a low pass RC filter and then fed through a DC blocking capacitor to the FM modulator.<\/p>\n<p><a href=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2014\/12\/picso_00.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1035\" src=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2014\/12\/picso_00.png\" alt=\"picso_00\" width=\"286\" height=\"146\" \/><\/a><\/p>\n<p>So how to make our PIC MCU able to speak the coordinates, the actual procedure look like:<\/p>\n<p>1. Generate your *.wav files that will be used for creating the speech\u00a0 dictionary (in my case the digits from 0 to 9, North, South, East, West, Point and No Fix)<\/p>\n<p>2. Convert the *wav files into 1 bit audio stream using the BTc Sound Compression Algorithm\u00a0 from Roman Black, more information and the conversion software can be found <a href=\"http:\/\/romanblack.com\/btc_alg.htm\">here<\/a>. Then every word in the dictionary can be written to the memory as a byte series with a start and an end address. Looks like that, but much larger string (\u2026$5a,$d5,$ab,$55,$29,$4a,$4a,$48, $84,$21,$65,$ef,$df,$b6,$aa,$69,$52,$a5,$29,$4a,$59,$ad,$b6,$ed,$b5,$55,$49,$21,$0, $40,$63,$d7,$ef,$fc,$d9,$65,$55,$2a,$55,$55,$56,$ad,$55,$ac,$a9, \u2026)<\/p>\n<p>3. Once the digits and headings from the GPS NMEA message have been decoded it is time to create the sentence.\u00a0 What it means is to determine what words and the sequence in which the words from the dictionary will be played.\u00a0 The actual programming can be different depending on what language you are using but the general idea is as follows:<\/p>\n<p>From WORD_START_ADDRESS to WORD_END_ADDRESS read Byte0. Then from Bit.7 to Bit.0 in Byte.0 set the output pin equal to Bit.7, wait N microseconds, then set the output pin equal to Bit.6, wait N microseconds \u2026. set the output pin equal to Bit.0, wait N microseconds. Then read Byte1 and from Bit.7 to Bit.0 in Byte.1 set the output pin equal to Bit.7, wait N microseconds, then set the output pin equal to Bit.6, wait N microseconds \u2026. set the output pin equal to Bit.0, wait N microseconds\u2026 and so on until you reach the WORD_END_ADDRESS.<\/p>\n<p>*N microseconds \u2013 this waiting period depends on your *.wav file sampling rate. If it is 16kHz then the waiting period N=1\/F or N=1\/16000 = 62.5 usec.<\/p>\n<p>Because the PIC18LF2550 MCU that I am using has only 32kB programing memory I was able to fit only one language dictionary. But in case I decide to implement more or larger dictionaries it could be done by adding and external I2C or SPI memory that can be pre-programmed with the dictionaries.<\/p>\n<p>This tracking device has small dimensions only 25&#215;70 mm. While transmitting, the power consumption is significant \u2013 about 130 -150mA, where in idle it is draining about 15mA. Although the power need, while transmitting is quite high, the RF amplifiers are on only for 2.5 \u2013 5sec every transmission period or every 60\/45\/30\/15 seconds.<\/p>\n<p>I made a test on the field placing the transmitter on the ground and started driving away from the tracking device while listening on my car radio. The reception range was between 1.5 and 2 km, depending on which direction I was going away. I think with a good quality FM radio receiver and good antenna this reception range can be increased.<\/p>\n<p>I run another set of tests to determine the GPS signal reception while the device is covered by different materials. The results are that the reception is good even in a thick ABS tube while the GPS antenna is pointing the ground, however a thin metal is sufficient to hinder the reception. So the conclusion is that the tracking device can be used in any non-metallic tubing, regardless its actual place in the rocket.<\/p>\n<p><a href=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2014\/12\/B_ABS_1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-1238\" src=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2014\/12\/B_ABS_1.jpg\" alt=\"B_ABS_1\" width=\"222\" height=\"400\" \/> <\/a><a href=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2014\/12\/B_ABS_2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-1239\" src=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2014\/12\/B_ABS_2.jpg\" alt=\"B_ABS_2\" width=\"222\" height=\"401\" \/><\/a><\/p>\n<p><a href=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2014\/12\/B_AL_1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-1240\" src=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2014\/12\/B_AL_1.jpg\" alt=\"B_AL_1\" width=\"222\" height=\"400\" \/><\/a> <a href=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2014\/12\/B_AL_2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-1241\" src=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2014\/12\/B_AL_2.jpg\" alt=\"B_AL_2\" width=\"222\" height=\"400\" \/><\/a><\/p>\n<p>One last note, because this device exceeds the permitted power ratings in the FM 88-107MHz band it is not advisable to be used close to inhabited areas because it could interfere with some of the local stations if the same frequency is selected, besides you will be effectively transmitting your own GPS coordinates to everyone who is listening his radio on the same frequency. But anyway who will be launching rockets that need GPS tracking so close to inhabited places.<br \/>\n<a href=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2014\/12\/GPS_FM_TRACKING-CADCAM.zip\">PCB_DESIGN_CADCAM<\/a><br \/>\n<a href=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/FM-GPS-TRACKING-QN8027.zip\">ENGLISH_VOICE_FIRMWARE<\/a><br \/>\n<a href=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/FM-GPS-TRACKING-QN8027_RU.zip\">RUSSIAN_ VOICE_FIRMWARE<\/a><br \/>\n<a href=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/RDS_CALCULATOR.xlsx\">RDS_CALCULATOR.xlsx<\/a><br \/>\n<a href=\"http:\/\/www.blog.exrockets.com\/blog\/wp-content\/uploads\/2015\/06\/RDS_STANDARD.pdf\">RDS_STANDARD.pdf<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today I made some modifications to this is a new project for a GPS to FM radio tracking device for rockets i.e. the V2. The initial design lacked the antenna impedance matching circuit which caused problems with the end amplifier. Also I increased the possible choices of frequencies, see the table further down. Now instead [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"gallery","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-1017","post","type-post","status-publish","format-gallery","hentry","category-electronics","post_format-post-format-gallery"],"_links":{"self":[{"href":"http:\/\/www.blog.exrockets.com\/blog\/wp-json\/wp\/v2\/posts\/1017","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.blog.exrockets.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.blog.exrockets.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.blog.exrockets.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.blog.exrockets.com\/blog\/wp-json\/wp\/v2\/comments?post=1017"}],"version-history":[{"count":22,"href":"http:\/\/www.blog.exrockets.com\/blog\/wp-json\/wp\/v2\/posts\/1017\/revisions"}],"predecessor-version":[{"id":1310,"href":"http:\/\/www.blog.exrockets.com\/blog\/wp-json\/wp\/v2\/posts\/1017\/revisions\/1310"}],"wp:attachment":[{"href":"http:\/\/www.blog.exrockets.com\/blog\/wp-json\/wp\/v2\/media?parent=1017"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.blog.exrockets.com\/blog\/wp-json\/wp\/v2\/categories?post=1017"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.blog.exrockets.com\/blog\/wp-json\/wp\/v2\/tags?post=1017"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}