MediaWiki to Wordpres Migrator http://analogrithems.com/rant/mediawiki2wordpress en http://new.george-smart.co.uk 1.1 http://new.george-smart.co.uk 100W UHF Linear Amplifier http://new.george-smart.co.uk/100w_uhf_linear_amplifier 0 2013-04-10 14:46:35 page closed closed 4299 draft 100w_uhf_linear_amplifier This page details my building of Carlo Gnaccarini (VK3PY, formerly VK3BRZ)'s 100 Watt Power Amplifier for the 432 MHz Band based on two <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/Motorola_MRF646_Datasheet.pdf">Motorola MRF646</a> transistors. Initially the information was obtained from <a href="http://www.emartin.it/it9vky/Risorse/uhfpa/uhfpa.htm"> Eugenio Martinetti (IT9VKY)'s site</a>. The amplifier was straight forward to build. Some foolish mistakes (detailed later) prevented it from working immediately but a few emails with Carlo (Chas) quickly had the amplifier up and running. A few optimisations later and I was way! I added some relay change-over circuits and make a few measurements and arrived at the amplifier presented on this page. This project is in no way my design or work. It is entirely the work of those stated above. I offer this page as my experience in building their design! <h1>The Design</h1> The original article uses <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/Motorola_MRF646_Datasheet.pdf">Motorola MRF646</a> transistors. I managed to salvage two from old PMR equipment, but some quick searching shows the following transistors may also be suitable. I cannot guarantee these, and so you are urged to check yourself. <ul> <li> MRF646 (recommended)</li> <li> NTE367</li> <li> 2SC2905</li> <li> ULBM45</li> </ul> The design uses two transistors running as separate amplifiers (not push-pull). Each transistor is delivering half the power of the amplifier. <a href="http://en.wikipedia.org/wiki/Wilkinson_power_divider">Wilkinson Power Dividers/Combiners</a> are then used to split the input through both halves of the amplifier and then rejoin the output. This is done in <a href="http://en.wikipedia.org/wiki/Microstrip">microstrip</a> on the PCB. For a thorough explanation of the theory behind Wilkinson hybrids, see Ham Radio, January 1982, “Wilkinson Hybrids” by Ernie Franke WA2EWT. Using two discrete amplifiers and matching networks as opposed to push-pull pairs has some advantages: <ul> <li> No requirement for matched transistor pairs which eliminates crossover distortion issues.</li> <li> Good port isolation. If one transistor pops, the other should survive.</li> <li> Ease of design: "The Wilkinsons were the easiest way to obtain 100W without totally re-calculating all the matching networks (a very time-consuming job!)".</li> <li> The two seperate amplifiers can be tested independently, fixed, debugged, tested, and then connected to the combiner.</li> </ul> The board also contains the biasing circuit for each transistor. These can be set up independently to aid unmatched transistors. IT9VKY claims that the amplifier construction is very repeatable and I completely agree. I have built two of these boards and both performed very well. <h1>Board Layouts</h1> The following two images are for illustration only. Ensure that both sides of the board match. It sounds silly, but I make this mistake and etched a board where the sides of the board weren't complimentary. Check with the biasing supply on the bottom of the board. The bump on the bar with the 22R resistors should match on both sides (of course)! <center><table > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_Top.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_Top.png" width="300" alt="Top Copper" class="aligncenter"></a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_Bottom.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_Bottom.png" width="300" alt="Bottom Copper" class="aligncenter"></a></tr> </table> </center> <ul> <li> PNG image of both board sides, scaled at 300 DPI.</li> <li> PDF of both board sides, print at 100% (unscaled).</li> <li> <a href="http://www.cadsoftusa.com/">Eagle</a> board layout from IT9VKY's site, here: <a href="http://www.emartin.it/it9vky/Risorse/uhfpa/uhfpa.zip">uhfpa.zip</a>. I have made some slight modifications from this file.</li> </ul> <h1>Schematics</h1> These schematics come directly from <a href="http://www.emartin.it/it9vky/Risorse/uhfpa/uhfpa.htm">Eugenio Martinetti (IT9VKY)'s website</a>: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_Sch_Bias.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_Sch_Bias.png" width="600" alt="Biasing Schematic" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_Sch_Amp.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_Sch_Amp.png" width="700" alt="Amplifier Schematic" class="aligncenter"></a> <h1>Construction</h1> Some image from when I made the double sided board at home: <center><table > <tr><td> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_Board_Resist.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_Board_Resist.png" width="120" alt="Making the PCB - Resist" class="aligncenter"></a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_Board_Drill.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_Board_Drill.png" width="120" alt="Making the PCB - Drilling" class="aligncenter"></a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_Board_Nibble.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_Board_Nibble.png" width="120" alt="Making the PCB - Nibbling" class="aligncenter"></a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_Board_Board.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_Board_Board.png" width="120" alt="Making the PCB - Board" class="aligncenter"></a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_Board_Holes.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_Board_Holes.png" width="120" alt="Making the PCB - Holes" class="aligncenter"></a></tr> </table> </center> I followed <a href="http://www.emartin.it/it9vky/Risorse/uhfpa/uhfpa.htm">Eugenio Martinetti (IT9VKY)'s notes</a> pretty much to the word. My advice is to construct the biasing circuit first off, test that, then process on to the amplifier part. That saves any issues in the bias circuit from blowing the Base-Emitter junction of the MRF646s. At the very least disconnect the inductors to the MRF646 bases. The diodes in the bias circuit are used to track the <i><a href="http://en.wikipedia.org/wiki/Thermal_runaway#Bipolar_junction_transistors_.28BJTs.29">thermal runaway</a></i> of the MRF646s. I used two 1N4148 diodes in series as this gave me the closest to 1.2V that the circuit requires. It is quite important to get this right as it's what stops your transistors from blowing up if they get too hot - that and being careful! They're mounted in thermal contact with the heatsink. Treat them as if they get hot like the transistors. You want them to! The initial board I made I had made in work with plate-through holes. These holes were hollow and the plating only very thin. This proved to be a slight problem in the current handling of the board. I added some copper wire through the board around the MRF646s and some tick copper wire on the underside of the board. This greatly improved the current handling and therefore the maximum CW power. Copper film around the transistor emitter flanges is a must, as this helps the current dissipate into the board. The second version of this board I made at home and omitted the plate through holes in favour of drilling the holes and passing wire through. When tested, this method achieved the same higher power output without the added copper wiring. The placement of capacitors on the microstrip lines is important. You have to tap in at the correct impedance. This was something else I found out the hard way. I put them where they fitted best, but it was a mistake which compromised power output considerably. Below the red lines show the placement of the trimmer capacitors. Make sure the screw is connected to the ground side. All trimmers are 9 pF mylar. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_TrimmerCaps.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_TrimmerCaps.png" width="400" alt="Trimmers" class="aligncenter"></a> The capacitors on the base of the transistor need to go as close to it as possible. As already mentioned, I used salvaged second hand <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/Motorola_MRF646_Datasheet.pdf">Motorola MRF646</a> devices. I used <a href="http://www.atceramics.com/">ATC ceramic capacitors</a> around the transistors, and metal-clad mica elsewhere but the PMR will have many of the capacitor values you require. I used two drill bits to give me the correct diameters for the base and collector inductors. I never measured their inductance, simply wound the correct dimensions: 3 turns of 4 mm diameter on the base, 2 turns of 5 mm diameter on the collector. Other pictures show 3 turns on the collector also. I opted for 3 turns on my boards, and they both work well. I can't say if 2 turns would be better. The ferrite beeds are 3 turns through a 6 hole ferrite. <h1>Adjustment</h1> Don't do this until you have the board mounted on a heatsink. Even with bias currents, the transistors will get hot and the results are meaningless. When powering up the amp for the first time, I suggest using a current limited supply. Disconnect the base and collector inductors from the transistor so they have no power supply. Ensure the bias circuit is working correctly and that varying the bias pot adjusts the bias current in the 4.7&Omega; resistor. Set the bias pots to their minimum and then reconnect the base and collector inductors to ONE transistor. Now when powering up the circuit, increase the bias pot for a collector current of 100 mA - do this with an ammeter in line with the collector (preferred) or by adding (possibly just over for base current) 100 mA to the current draw with no transistor connected. This puts the transistor into its linear region. Repeat for the second transistor. At this point your transistors are biased and ready for some RF. Still with only one transistor, apply a signal to the base of the transistor. <i>Note</i>, you cannot put the signal in at the input to the combiner circuit as it uses &frac14;&lambda; matching lines which would destroy the signal integrity before it gets to the amplifier. You also need to remove the two 100&Omega; balancing resistors. Inject a test signal as shown below - I used 432.2000 MHz at 100 mW from a Marconi signal generator. If you use a radio, keep the power very low at this stage. The red dots show where the input is for each half while the green dots show the grounding points I used. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_RFTest.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_RFTest.png" width="400" alt="RF Testing" class="aligncenter"></a> With a power meter and 50&Omega; load connected to the output, apply drive and tune the 3 capacitors for the appropriate transistor. Tune for maximum power (maximum smoke as they say!). The capacitors are interlinked, so you will need to go around a few times until you're doing okay. There should be again of around 5 times. My 100 mW becomes 492 mW for example. Tune to maximise the RF output on the frequency you want! Then repeat for the other transistor. Once both halves are tuned, you're ready to connect the power combiner (blue lines) and add the balance resistors (yellow lines). Move the signal source (red/green dots) to the input of the power combiner and connect both transistor base and collector inductors. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_FinalTest.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_FinalTest.png" width="400" alt="RF Testing" class="aligncenter"></a> Still at low power, inject your RF into the splitter network. You should still see a gain of approximately 5 times. You will need to re-tune the capacitors slightly at this point - again tune for maximum power at the output on the desired frequency. Now you can increase the drive power to a maximum of 20 W. You should get around 100 W out. At this stage, carefully monitor the transistor temperatures. Any sudden changes in temperature will show up poor thermal conduction to the case which will surely destroy the devices. At a supply of 14 V for 20 W drive I obtain a clean output of 94 W. It may be worth tweaking the tuning at a slightly larger power, say 5 W input (for ~ 25 W output). I would strongly advice against tuning at high powers as mismatches can destroy the MRF646s. Fingers crossed it will all work. After a fashion, mine did. Sorry the picture is a little out of focus. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_FinishedChassis.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_FinishedChassis.png" width="600" alt="RF Testing" class="aligncenter"></a> <h1>Boxing up</h1> This part of the project is still a work in progress. I used an old Zetagi CB linear amplifier heatsink and remade the front panels using theirs as templates. I used two coax relays as they offered a through-loss of only 0.16 dB (each) as opposed to 4.3 dB for a standard PCB relay. Another PCB relay is used to remove the bias from the transistors when in receive. This removes the linearity of the amplifier, and stops it acting to generate/amplifying noise on receive. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_BlockDia.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_BlockDia.png" width="600" alt="Block Diagram" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_Boxed.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_Boxed.jpg" width="600" alt="Boxed after first contest" class="aligncenter"></a> <b>This section is still being written.</b> <h1>Measurements</h1> Once the amp was deemed to be working okay I wanted to test it on air. I decided that I would measure the harmonic output. Here, I used a HP spectrum analyser to measure the second and third harmonics at the output of the power combiner before the low pass filter. The <a href="http://www.emartin.it/it9vky/Risorse/uhfpa/uhfpa.htm">original article</a> states "the second harmonic is -50 dBc and third harmonic is below -70 dBc. No need for low-pass filters!" Here we see that I achieve similar results for the second but not third harmonics: <center><table > <tr><td> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_Board_2Harmonic.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_Board_2Harmonic.jpg" width="300" alt="Harmonic Output" class="aligncenter"></a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_Board_3Harmonic.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/100WUHFPA_Board_3Harmonic.jpg" width="300" alt="Harmonic Output" class="aligncenter"></a></tr> </table> </center> Here we see that the second harmonic has a level of - 51.90 dBc and the third harmonic has a level of -57.3 dBc. This was okay for a bit of testing on air, but in the long term, I would like to see at least -60 dBc as is recommended. The next thing I wanted to check was the linearity of the device... <b>FIXME_Category :ToDo</b> <b>FIXME_Category :Radio</b> <b>FIXME_Category :Electronics</b> 144MHz Bias Tee http://new.george-smart.co.uk/144mhz_bias_tee page closed closed 0 2017-01-30 15:00:06 draft 144mhz_bias_tee 5655 Placeholder Page. A bias-T for ham radio mast head preamplifiers with PTT switching via solid state transistors. Surface mount design to fit on lid of Hammond Manufacturing 27969PSLA (Farnell 301516) diecast Eddystone box. Project still in development stage. There will likely be a few spare boards for sale once the initial testing is done and verified. <a href="http://new.george-smart.co.uk/contact_me">Contact Me</a>. <h1>Design</h1> These are the design from the PCB Paneliser: <a href="http://blog.thisisnotrocketscience.nl/projects/pcb-panelizer-beta/">PCB Paneliser by ItsNotRocketScience.nl</a> -- fantastic! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/BiasT_PTT_Top.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/BiasT_PTT_Top.png" width="600" alt="Top" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/BiasT_PTT_Bottom.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/BiasT_PTT_Bottom.png" width="600" alt="Bottom" class="aligncenter"></a> 144MHz Bias Tee OLD http://new.george-smart.co.uk/144mhz_bias_tee_old 5654 draft 144mhz_bias_tee_old 2017-01-30 14:56:38 0 closed page closed <b>This design has been superseded by : <a href="http://new.george-smart.co.uk/144mhz_bias_tee">144MHz Bias Tee</a></b> <hr> In the last few weeks, I have stumbled into a few projects that required a Bias Tee. That is, a device for feeding power (DC) along a transmission line along with a signal (AC). This technique is very common, and is used to power LNBs (those little blobs at the centre of satellite dishes) and mast-head pre-amplifiers commonly used on VHF/UHF antennas to overcome cable losses. To avoid running a separate power cable to the mast-head pre-amp or to the LNB, I decided to design a Bias Tee. Something that will inject the DC on to the feeder, and also separate the RF signal from the DC power for feeding into my radio. It's easy to design something that meets this criteria, so here goes: <ul> <li> An inductor will have a low impedance to DC, but a high impedance to AC. This will inject the DC power.</li> <li> A capacitor exhibits the reverse frequency characteristics; high impedance for DC, and low for AC. This will separate the AC signal.</li> </ul> By selecting the values of L and C correctly, we can design for any impedance ratio we like. I have gone for an impedance ratio of 100 times at 144.3 MHz, so X_{L}=5 k&Omega; \longrightarrow L = 5.5\mu H and X_{C}=0.5 &Omega; \longrightarrow C = 2.2 nF. Some extra capacitors will provide a bit of extra AC filtering after the inductor. Finally, I have added a relay and transistor to be able to switch any preamp out for transmitting. This means that when the PTT line is grounded, the power is disconnected from the remote device and any mast-head relays are returned to their normally-closed state for receiving. Finally, a 250mA fuse is added, just in case the cable becomes short circuit or there is another problem. The diode protects the switching transistor against relay coil back EMF, and the 10k R2 drops the gain of Q1 slightly, so it's less susceptible to RF and requires a little more current to operate. LEDs can/will also be added for diagnostic purposes. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/144MHz_Bias_Tee_M1GEO.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/144MHz_Bias_Tee_M1GEO.png" width="500" alt="Bias Tee for 144 MHz and up" class="aligncenter"></a> If faster operation is required, the relay could be swapped for a different configuration of PNP and NPN transistor. Although somewhat slower, the relay provided me with a more definite "click" showing the changeover had happened. As a quick test, I built the bias tee into a small extruded aluminium box, and tested it's functionality with my <a href="http://www.ifwtech.co.uk/g3sek/vhfdx/dg8-preamp-v7-3.pdf">DG8 144 MHz mast-head preamp</a> (homebrew by me, design by Ian White GM3SEK). Before people start crying in the streets and writing in to complain, I know the physical construction is poor. However, this was just an initial test build, to see if everything was going to work (and that it didn't blow the preamp to pieces). All was fine! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/144MHz_Bias_Tee_M1GEO_V1_Inside.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/144MHz_Bias_Tee_M1GEO_V1_Inside.jpg" width="600" alt="Bias Tee for 144 MHz Built" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/144MHz_Bias_Tee_M1GEO_V1_Boxed.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/144MHz_Bias_Tee_M1GEO_V1_Boxed.jpg" width="600" alt="Bias Tee for 144 MHz Built" class="aligncenter"></a> <i>This story will continue... Thu 15 October 2015</i> 144MHz Yagi http://new.george-smart.co.uk/144mhz_yagi 0 2012-04-21 01:22:26 page closed closed 3373 draft 144mhz_yagi Over the past few years I seemed to have amassed a vast number of antennas, all of which were stored on <a href="http://new.george-smart.co.uk/the_shack">the workshop</a> roof. Recently when looking for a 2 metre beam I found I had two beams on the roof. A quick measurement with the <a href="http://www.mfjenterprises.com/Product.php?productid=MFJ-269">MFJ Antenna Analyser</a> revealed these antennas were either broken completely or tuned for the American 2-metre band, centring on about 146MHz. I intended to use my beam for 2-metre SSB and so a frequency of 144.3MHz was required. I decided to go about designing a new antenna for the frequency required both to learn about antennas and to end up with an antenna meeting my needs. I had enough parts and pieces of metal lying about, so I figured why not have a go. This page documents the design, making and testing of this antenna. I have also made a <a href="http://new.george-smart.co.uk/432mhz_yagi">432MHz Yagi</a>, which you may also be interested in. <h1>Designing</h1> The Yagi was designed using <a href="http://www.k7mem.150m.com/Electronic_Notebook/antennas/yagi_vhf.html">Martin Meserve's VHF/UHF Yagi Antenna Design</a> tools. The beam was designed for a resonant frequency of 144.3000 MHz at a drive impedance of 50&Omega;. This is typical for 2-metre SSB operation and is nicely compatible with my <a href="http://new.george-smart.co.uk/yaesu_ft_857d">Yaesu FT-857D</a> that I use for <a href="http://new.george-smart.co.uk/hf_portable">portable operation</a>. A target gain of 7dBd was used to keep the beam a small size, although in theory the beam made calculates to 8.2dBd. It has 1 Reflector, 1 Driven and 4 Director Elements. ARRL standards were adopted for reflector and element spacing, with all elements having an outer diameter of 9mm. A boom diameter of 32mm was used, due to me already having it. The design shown below is for a bonded beam, meaning the elements are electrically connected to the boom at the element centre. The image below shows the design of the beam, and contains both the element length and cumulative spacing - everything you need to have ago! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/2mYagi_Design.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/2mYagi_Design.png" width="600" alt="2-metre, 6-element Yagi design" class="aligncenter"></a> Note that this diagram is not to scale. <h2>Specifications</h2><table border="1" cellspacing="3" align="center" > <tr><td>Frequency</td><td>Gain</td><td>Horizontal B.W</td><td>Vertical B.W</td><td>Electrical Boom Length</td><td>Boom Diameter</td><td>Element Diameter</td><td>Dimensional Tolerance</td></tr><tr><td>144.3 MHz</td><td>8.243 dBd<br>(10.393 dBi)</td><td>49.9&deg;</td><td>55.1&deg;</td><td>1605mm</td><td>32mm</td><td>9mm</td><td>6.2mm</tr> </table> B.W = beam width. Boom must be <i>at least</i> the electrical boom length long. <h1>Making</h1> <h2>Dimensions Table</h2><table border="1" cellspacing="3" align="center" > <tr><td></td><td>REFL</td><td>Driver</td><td>Director 1</td><td>Director 2</td><td>Director 3</td><td>Director 4</td></tr><tr><td><b>Element Length (mm)</b></td><td>1024.3</td><td>999.56</td><td>926.97</td><td>917.99</td><td>908.00</td><td>898.36 </td></tr><tr><td><b>Cumulative Spacing (mm)</b></td><td>0</td><td>311.64</td><td>446.68</td><td>698.06</td><td>1047.09</td><td>1566.49</tr> </table> Making the beam was fairly straight forward. I marked two lines down the boom, one on each side, exactly opposite each other. Mark the position of the reflector (REFL on the above diagram). This is the reference of zero - everything else is measured along this line with respect to the reflector. From this, measure the other element locations, marking them out based on the dimensions table, above. Then repeat this on the other side of the boom. Drill the holes required to fit your chosen size bolts - care should be taken that the size of hole does not weaken the smaller diameter elements. Cut the elements to length as specified in the dimensions table, above. Also mark the centre of each element as you will need to drill a hole there to fix the beam to the boom. Once you've drilled the cut elements, go ahead and fix them to the boom. Your beam should have taken shape, and at least look like an antenna... Now to get some RF into it! <h1>Gamma Matching</h1> A gamma matching section provides a way to drive the antenna at the correct place and present the correct impedance to the RF source. There are many ways to achieve this, and many of these ways are suitable here; however, I chose the gamma match as it is well suited to the Yagi - it is physically simple to create and calibration is straight forward. It is cheap too, and requires few parts! <h2>Gamma Match Design</h2> <a href="http://www.ve3sqb.com/">Alan, VE3SQB</a> has written a great <a href="http://www.ve3sqb.com/gamma2002.exe">program for designing gamma matches</a>. The image below is the design suitable for our antenna created by his software - it is very simple to use! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/2mYagi_GammaDesign.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/2mYagi_GammaDesign.png" width="600" alt="Gamma network Design" class="aligncenter"></a> I've opted for method B. This uses a thicker coax's centre to make a capacitor. I used some RG213. Taking the centre conductor and dielectric, and inserting it into a section of 9mm tube creates a capacitor. The coax centre is soldered to the hot pin of the SO239. The tube over the dielectric becomes our <i>gamma rod</i>. This is connected by a clamp to the driven element. The clamp is fixed to the driven rod at the <i>tap point</i> as calculated by the program above. The capacitance is then adjusted by moving the gamma rod to cover the coax dielectric more (increased capacitance) or less (decreased capacitance). If this sounds a little complicated, I hope the diagram below and the picture of my gamma match will help clarify. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/2mYagi_GammaSchematic.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/2mYagi_GammaSchematic.png" alt="Gamma Network Schematic" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/2mYagi_GammaBuild.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/2mYagi_GammaBuild.jpg" width="600" alt="My Gamma Network" class="aligncenter"></a> I've opted to mount my gamma network on the right side of the antenna, as it seemed most natural. A small piece of folded aluminium is used to hold the SO239 connector. You can see that the placement of the SO239 connector depends on the spacing between the driven element and the gamma rod. Here the spacing is 62.2mm, as specified by the software above. The coax centre soldered to the SO239 hot pin is then aligned to give the required spacing. The SO239 socket is then mounted on the boom, ensuring an electrical connection between the ground of the SO239 and the boom. The tap point is located 118.3mm from the boom/driven element fixing. This is where the clamp meets the driven element. The value given is a suggestion as a starting point - this is of course an adjustment for the antenna. A clamp where it is possible to adjust grip on both tubes independently allows for much easier adjustment. I folded a strip of aluminium as follows: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/2mYagi_GammaClamp.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/2mYagi_GammaClamp.png" width="600" alt="Gamma Network Clamp" class="aligncenter"></a> <h2>The Antenna</h2> The image below is of the completed Yagi, end up. Note here that the gamma tube is longer than the design specifies. This was before calibration of the antenna occurred; I wanted to be sure not to unnecessarily cut the tube. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/2mYagi_EndUp.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/2mYagi_EndUp.jpg" width="600" alt="My Antenna, End Up" class="aligncenter"></a> <h1>Calibration</h1> Calibration is pretty simple. Starting with the clamp at the default tap point, ensure that the clamp is tight on the driven element. Then adjust the gamma capacitance by moving the gamma tube to exposing more or less of the coax centre dielectric. This should be adjusted for the lowest SWR at the desired frequency. This can be done using a Vector Network Analyser, an Antenna Analyser, or by means of radio and SWR bridge. Start with minimal capacitance (minimal overlap) and gradually increase the overlap by pushing the gamma tube over the coax dielectric. You should notice a dip in SWR. If the SWR dip isn't low enough for your application, then try adjusting the driven element tapping point; you will need to re-adjust the capacitance afterwards, however. As general rules; <ul> <li> The driven element length sets the resonant frequency</li> <li> The driven element tapping point sets the feed impedance</li> <li> The gamma capacitance offsets the inductance bought about by the tapping offset, and so alters the SWR of the antenna.</li> </ul> These rules are just guidelines, and in reality all factors are interlinked. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/2mYagi_AA_Matched.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/2mYagi_AA_Matched.jpg" width="500" alt="Good SWR and 50 ohm feed impedance" class="aligncenter"></a> From the antenna analyser, we see that the antenna is a near perfect match at 144.4 MHz, with an SWR of very close to unity (1-to-1) and a drive impedance of 50&Omega;. Exactly what I wanted! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/2mYagi_EndUpCal.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/2mYagi_EndUpCal.jpg" width="600" alt="My Antenna, End Up" class="aligncenter"></a> <h1>Testing</h1> Once the antenna measured up well on the antenna analyser, I connected it to the vector network analyser for a more detailed and in depth look at its functionality. These are based on <i>S11</i> (reflection) measurements of the antenna - i.e. looking at the reflected power from the antenna. The JPEG compression on these images has lost the colour contrast. Be aware that both the horizontal and vertical scales change between some images. This first graph shows the VSWR, feed impedance and antenna reflection gain as a function of frequency. On this graph, the frequency was swept from 140 to 160 MHz and the antenna measured. The blue trace shows the SWR, the red trace shows the feed impedance, and the green trace shows the 'antenna's loss' (radiated power shows up as a loss in reflected power - the energy is lossed in transmission and not reflected back). The bottom line serves as a reference for VSWR (representing a perfect match, 1:1) and for drive impedance (representing 0&Omega; feed impedance). The VSWR scale increases linearly vertically once per division. The feed impedance increases in intervals of 50&Omega; per linear vertical division. Finally, the dB Loss graph (green trace) serves no quantitive purpose other than to show the sharpness of the antenna response. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/2mYagi_VNA_AllPlotted.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/2mYagi_VNA_AllPlotted.jpg" width="600" alt="Key Parameters Plotted" class="aligncenter"></a> This graph again shows VSWR (blue trace) and feed impedance (red trace). Here the VSWR scale increases in divisions of 0.1, and the feed impedance remains 50&Omega; per interval. We see that at the two markers (<a href="1]">144.3 and [2</a> 144.05) the VSWR is 1.12:1 and 1.08:1 which are respectable values. The graph serves to show that the antenna behaves well over the UK 2-metre band (144-146 MHz) of interest. The VSWR fluctuates very slightly, and the feed impedance wobbles slightly around the 50&Omega; mark, which is ideal for my requirements. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/2mYagi_VNA_2mBand.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/2mYagi_VNA_2mBand.jpg" width="600" alt="2-metre band, 144-146 MHz" class="aligncenter"></a> The Smith Chart shows a lot of information about the antenna. Marker 1 shows the point at which the antenna is used, and shows that the antenna is a resistive load (on the bisecting line through the chart). <b>To add more info here</b>. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/2mYagi_VNA_SmithChart.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/2mYagi_VNA_SmithChart.jpg" width="600" alt="Smith Chart" class="aligncenter"></a> <h1>Co-axial Cable</h1> I decided also to examine the loss of the cable I was using to link the antenna and VNA. It is important to note that the graphs above were plotted in such a way as to eliminate the effects of the coax. However, I was interested in how coax responded at various frequencies. I performed an S21 (through power loss) test on 10 metres of brand new RG58. The top of the graph is normalised to a reference of 0 dB. Each division represents a loss of 3 dB. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/10m_RG58_VNA.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/10m_RG58_VNA.jpg" width="600" alt="10 metres, RG58 swept 1-1500 MHz" class="aligncenter"></a> <b>FIXME_Category :Antenna</b> <b>FIXME_Category :Radio</b> <b>FIXME_Category :Electronics</b> 14MHz Yagi http://new.george-smart.co.uk/14mhz_yagi 2012-09-17 15:45:58 0 closed page closed 3606 draft 14mhz_yagi This page will be updated when I get some more time with the design of the beam. But for now, here's a few pictures of the beam in operation. Initial results seem very very good! You can click on the pictures to go to their page. Click on them again to get the full resolution version. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/09/20mBeam_2.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/09/20mBeam_2.jpg" width="500" alt="20 metre HF beam" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/09/20mBeam_1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/09/20mBeam_1.jpg" width="500" alt="20 metre HF beam" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/09/20mBeam_3.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/09/20mBeam_3.jpg" width="500" alt="20 metre HF beam" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/09/20mBeam_4.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/09/20mBeam_4.jpg" width="500" alt="20 metre HF beam" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/09/20mBeam_5.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/09/20mBeam_5.jpg" width="500" alt="20 metre HF beam" class="aligncenter"></a> 1W PA for 10MHz http://new.george-smart.co.uk/1w_pa_for_10mhz 1w_pa_for_10mhz draft 3372 closed page closed 0 2012-04-21 01:21:00 This 1 watt class-C amplifier was designed for use on the 10 MHz (30 metre) band. It has been used with my <a href="http://new.george-smart.co.uk/arduino_rtty">RTTY</a> and <a href="http://new.george-smart.co.uk/arduino_qrss">QRSS</a> projects. Anything that does not require it to be linear. I have not yet had time to digitise the schematic, so it's offered here as a hand-drawn diagram. The output matching network is also a first-order low-pass filter. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/1W_PA_Hand_Schematic.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/1W_PA_Hand_Schematic.jpg" width="600" alt="Schematic" class="aligncenter"></a> To test the design worked in concept, I make a version of the amplifier in <i>Manhattan</i> style, and can confirm it does indeed work. I added a slightly larger heat-sink to the 2N3866 to better cool it. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/1W_PA_Picture.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/1W_PA_Picture.jpg" width="600" alt="Picture" class="aligncenter"></a> <b>FIXME_Category :Radio</b> <b>FIXME_Category :Electronics</b> 2.4GHz Antenna Comparison http://new.george-smart.co.uk/2_4ghz_antenna_comparison 2012-05-20 19:41:00 0 closed closed page 3477 2_4ghz_antenna_comparison draft This page started out as an analysis of my 2.4GHz cantenna. I made a cantenna for Wireless-LAN as part of my <a href="Wireless">Cracking|wireless cracking experiment</a> and it worked well. It was a much better improvement to my Netgear's dipole stub antenna. However, it wasn't as good as I hoped it would be. I had read reports online of these antennas achieving very large distances, and showing 10dB gain over other antenna types. At most, my cantenna seemed <i>slightly better</i> than other antennas. I decided, with the addition of some expensive equipment, I could see what was going on. One day when I didn't have much to do at <a href="http://new.george-smart.co.uk/university">university</a> I took the antennas in and decided to give the antennas a test. These tests were fairly crude, just looking at the frequency response and VSWR of the antennas throughout the range of frequencies I was interested in. Around 2.45 GHz - where WiFi lives. The 3 antennas tested, the Cantenna, the Netgear dipole, and a stacked colinear antenna I picked up at a radio rally. <h1>The Cantenna</h1> The antenna I built was based on a design from the internet. There are many designs about, and I forget which mine is based on. <table align="center" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/2.4GHzAntenna_Cantenna1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/2.4GHzAntenna_Cantenna1.jpg" width="320" alt="Cantenna" class="aligncenter"></a></tr> </table> The main purpose of this exercise was to see why the cantenna wasn't as good as I had expected it to be, and to see if I could make it better. I set off to measure the VSWR of the antenna and it's frequency response. These are presented below: <table align="center" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/2.4GHzAntenna_CantennaFRES_Orig.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/2.4GHzAntenna_CantennaFRES_Orig.png" width="300" alt="Cantenna Frequency Response" class="aligncenter"></a></tr> </table> I then decided to adjust the element length of inside the cantenna to give the best frequency response and VSWR on the 2.45 GHz band, where WiFi is. This means that the antenna is working optimally on the chosen frequencies. It was not possible to get a perfect (1.0:1) VSWR due to the placing of the element - I believe it is too close to the back of the antenna, and would benefit from being moved forward slightly. You will however notice that the frequency dip is much closer to 2.45 GHz and the VSWR much lower too. The two captures below are both of VSWR. <table align="center" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/2.4GHzAntenna_CantennaVSWR_Opt1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/2.4GHzAntenna_CantennaVSWR_Opt1.png" width="300" alt="Cantenna VSWR" class="aligncenter"></a></tr> </table> <h1>The Netgear Dipole</h1> The Netgear Dipole was measured as a benchmark. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/2.4GHzAntenna_NetgearDipole.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/2.4GHzAntenna_NetgearDipole.jpg" width="500" alt="Netgear Dipole" class="aligncenter"></a> It works well, and I wanted to see how good it measured up. In practise, it measures very well. The antenna is simple, just a sleeve dipole - cheap and cheerful. <table align="center" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/2.4GHzAntenna_NetgearDipoleFRES.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/2.4GHzAntenna_NetgearDipoleFRES.png" width="300" alt="Dipole Frequency Response" class="aligncenter"></a></tr> </table> <h1>The Colinear</h1> I bought the colinear to optimise coverage on my wireless network at home. <table align="center" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/2.4GHzAntenna_Colinear1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/2.4GHzAntenna_Colinear1.jpg" width="550" alt="Colinear" class="aligncenter"></a></tr> </table> It was cheap at a radio rally and I was curious as to how well it would work. I never got around to using it with WiFi, but I kept it with the cantenna and so it made sense to test it too. <table align="center" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/2.4GHzAntenna_ColinearFRES.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/2.4GHzAntenna_ColinearFRES.png" width="300" alt="Colinear Frequency Response" class="aligncenter"></a></tr> </table> 2m WSPR http://new.george-smart.co.uk/2m_wspr 2m_wspr draft 4402 closed page closed 0 2013-04-28 19:55:44 Having done <a href="http://new.george-smart.co.uk/wspr">WSPR</a> on the MF bands, on <a href="http://new.george-smart.co.uk/472_khz">472 kHz</a>, I decided to have a go with WSPR on VHF. There are many challenges opposing the use of WSPR on VHF and this page details my battles with them all. I am a regular VHF/UHF contester in the <a href="http://www.rsgbcc.org/vhf/">RSGB UKAC contests</a> every Tuesday night. During those it's quite easy to get to Germany, Holland, Belgium and France, into Europe from our contest site in <a href="http://f6fvy.free.fr/qthLocator/fullScreen.php?locator=jo01cq">JO01cq</a>. I supposed it would be easy to get there on WSPR considering how much more efficient WSPR is... <h1>Radio Stability</h1> The first thing I did was naively tuned to the correct frequency and starting hammering out WSPR frames. I observed the following results on a local receiver: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_VHF_Drift.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_VHF_Drift.png" width="300" alt="Drifting WSPR transmissions" class="aligncenter"></a> This I put down to the transmitter and receiver having been freshly turned on. I left the radios idle for a few hours to warm up. My <a href="http://new.george-smart.co.uk/icom_ic_7000">Icom IC-7000</a> has always shown to be very stable - not to mention the heat that it's high stability oscillator makes! After the transmitter and receiver had been on for a while, I tried again, and this time the results were better. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_VHF_Drift2.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_VHF_Drift2.png" width="200" alt="Almost decodable WSPR transmissions" class="aligncenter"></a> I was getting around a 50% success ratio with decoded frames (locally). Nobody ever received a frame despite people all over the country looking for me (in no particular order and by no means complete, 2E0GPU, M0PAX, MW0DNK, MW0IAN, G4VXE). I decided to use <a href="http://www.g0afh.com/gb3vhf/">GB3VHF 144.430MHz amateur radio beacon</a> which I know to be GPS frequency locked [http://www.g0afh.com/gb3vhf/GB3VHFtechnicaldetails.html]. Here I tune the radio using the WSPR-X program for a CW carrier tone of 144.430000 MHz with an audio frequency of 1,500 Hz as used by WSPR. From the dial frequency that gives an exact 1,500 Hz beat tone for 144.430000 MHz USB I can work the offset of the radio. And this works... in the short term. In the image below, you see GB3VHF's transmit cycle over and over, CW, JT65, phase-pulses, and so on, over and over. So I tuned the receiver to GB3VHF and went to get a tea. When I come back, the done had drifted up by around 30 Hz: The yellow circle shows me re-tuning again... The big wide bits are the JT65 transmission. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_VHF_Drift3.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_VHF_Drift3.png" width="200" alt="Aligning to GB3VHF" class="aligncenter"></a> Still I had no idea. The shack temperature was very constant so maybe it was the computer sound card drifting? Seems unlikely? What can I try? the next idea was to transmit on a constant frequency (not over GB3VHF) and see if I could measure the frequency of the radio accurately? I chose to swap to an Icom IC-7400 and used a Racal-Dana 1998 frequency counter as it's got a 10-digit counter and I locked it to a Rubidium frequency standard that had been given ample time to lock up and stabilise. (My <a href="http://new.george-smart.co.uk/gps_frequency_standard">GPS Frequency Standard</a> was somewhat buried). Here's what I see: <center><table > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_VHF_FreqC.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_VHF_FreqC.jpg" width="400" alt="Real TX Frequency" class="aligncenter"></a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_VHF_IC7400.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_VHF_IC7400.jpg" width="200" alt="IC7400 Display" class="aligncenter"></a></td></tr><tr><td>Counter showing 144.489,746 MHz </td><td>Radio showing 144.490,000 MHz</tr> </table> </center> Between the two there is a difference of around 254 Hz, or, in other words, more than the entire WSPR band on 2 meters! More worrying is the range of numbers I could achieve by varying the transmit power (causing varying degrees of internal heating). I adjusted the radio's VFO to give a transmit output of 144.490,000 MHz, noting the radio's display of 144.490,214 MHz (after some fashion. <center><table > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_VHF_FreqC2.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_VHF_FreqC2.jpg" width="400" alt="Real TX Frequency" class="aligncenter"></a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_VHF_IC74002.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_VHF_IC74002.jpg" width="200" alt="IC7400 Display" class="aligncenter"></a></td></tr><tr><td>Counter showing 144.490,000 MHz </td><td>Radio showing 144.490,214 MHz</tr> </table> </center> Experimenting, I notice that the radio's frequency output increases at a rate of 1 Hz every 2 seconds at a power output of 100W (worst case). After around 30 seconds this drift stabilised. I fiddled around for a further 20 minutes to get an idea of figured in my head, then scaled the transmit power back to 30 watts and decided to go for an on air test. From the radio's final display of 144.490,250 MHz, it's a +250 Hz offset to the real frequency of 144.490,000 MHz. This means that we add 250 Hz to the WSPR frequency, making it 144.489,250 MHz. Good. <h1>Testing</h1> I left the transmitter running for a few hours into a dual-band colinear whitestick, cross polarised (vertical) and received 2 spots from G4SMX. My first spots! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_VHF_Map1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_VHF_Map1.png" width="400" alt="G4SMX Map" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_VHF_Spots1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_VHF_Spots1.png" width="600" alt="G4SMX Spots" class="aligncenter"></a> While pleased that someone had heard me at all, I wanted to see what I could do with a proper setup. At this point I decided to try the VHF contest location, in <a href="http://f6fvy.free.fr/qthLocator/fullScreen.php?locator=jo01cq">JO01cq</a>. I packed my stuff away, and decided to give it a go. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_VHF_Map2.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_VHF_Map2.png" width="500" alt="DJ9AE Map" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_VHF_Spots2.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_VHF_Spots2.png" width="600" alt="DJ9AE Spots" class="aligncenter"></a> <b>FIXME_Category :ToDo</b> <b>FIXME_Category :Radio</b> <b>FIXME_Category :Computers</b> 2N7000 PA http://new.george-smart.co.uk/2n7000_pa draft 2n7000_pa 3200 page closed closed 0 2012-02-26 01:44:48 This page has not yet been written. You may be interested in my <a href="http://new.george-smart.co.uk/1w_pa_for_10mhz">1W PA for 10MHz</a>. This page will come soon, once I've finished the <a href="http://new.george-smart.co.uk/arduino_wspr">Arduino WSPR</a> project. 3rdYrProject http://new.george-smart.co.uk/3rdyrproject closed page closed 0 2011-02-25 22:21:26 draft 3rdyrproject 1715 = About This Report =<table cellpadding="4" > <tr><td><b>Title</b></td><td>Software Defined Radio for Cognitive Wireless Sensor Networks</td></tr><tr><td><b>Author</b></td><td>George Smart</td></tr><tr><td><b>Supervisor</b></td><td><a href="http://www.ee.ucl.ac.uk/staff/academic/jmitchel">Dr John Mitchell</a></td></tr><tr><td><b>Second Assessor</b></td><td><a href="http://www.ee.ucl.ac.uk/staff/academic/pbrennan">Prof Paul Brennan</a></td></tr><tr><td><b>Institution</b></td><td><a href="http://www.ee.ucl.ac.uk/">Department of Electronic and Electrical Engineering</a>, <a href="http://www.ucl.ac.uk/">University College London</a></td></tr><tr><td><b>Date</b></td><td>Friday, 26th March 2010</td></tr><tr><td><b>Download</b></td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/ThirdYearProject.pdf">Download in PDF Format</a></tr> </table> <h1>Abstract</h1> The Software Defined Radio for Cognitive Wireless Sensor Systems project aims to design and build an activity monitoring device for ZigBee-based cognitive wireless sensor networks. This report explains the evolution of the activity monitor, detailing both the hardware and software aspects of the design. The complete hardware design uses an FPGA to execute the algorithm in real time. Due to timeconstraints, the project has not progressed to this stage. At the current stage of development, the user is able to import a comma separated variable (CSV) file containing a sampled waveform at an IF into MathWork's MATLAB. The MATLAB functions, written by myself, are able to detect if a given channel is busy or clear, and to output this information in a user friendly manner. Functions are able to plot calibrated frequency spectral density graphs to visually show the working. The user is able to specify the sample rate of the waveform and the busy threshold level as arguments to the function, as well as set more in-depth parameters for filter order and bandwidth inside the function. The functions also include some simple error checking to ensure that the user operates them correctly, and that results are reliable. <h1>List of Terms</h1> This section lists the abbreviations used in this document. <i>Section omitted from Website. See PDF, linked at the top of this page.</i> <h1>List of Graphs & Illustrations</h1> This section lists the abbreviations used in this document. <i>Section omitted from Website. See PDF, linked at the top of this page.</i> <h1>Introduction</h1> Wireless sensor networks (WSNs) are finding their way into many areas of modern life. Applications include home automation and industrial process monitoring, with use extending to battlefield surveillance in military applications [17]. As WSNs become more common the need to have a self adapting network increases too. WSNs are often deployed into electrically noisy environments where conditions are regularly changing. A cognitive wireless sensor network is a solution. In order to control a cognitive wireless sensor network efficiently, the network controller would need to be well informed of the environment. The ability to receive data from all channels at any time could greatly improve data throughput. This removes the channel choice from the network controller to the end node. Nodes can transmit on any clear channel and data will be routed to the network controller, changing channel if required. This project allows a person to see how the WSN is using the frequency spectrum available to it. <h2>Aim</h2> The aim of this project is to design and build a device to concurrently monitor the spectral usage of a ZigBee system concurrently. This will incorporate RF front end hardware, digital sampling of the down-converted IF and demodulation of the ZigBee data. These topics are discussed in more detail in subsequent sections. <h2>Objectives</h2> The overall objective is to digitally capture and decode the ZigBee band. This is broken down into separate steps. <ul> <li> <b>Down-conversion</b> is necessary to shift the ZigBee band from 2.4GHz to a frequency range usable by the sampling electronics.</li> <li> <b>Sampling</b> converts the down-converted analogue signal to a digital signal suitable for processing.</li> <li> <b>Decoding</b> the sampled data allows us to acquire information from the sampled ZigBee band. This allows us to deduce if a specific channel is in use. This could be further extended in order to decipher the frame headers and potentially the entire frame.</li> </ul> These steps are discussed in greater detail in the relevant sections further on in this document. <h2>Report Layout</h2> This report contains 10 chapters detailing work on the project. It also includes two appendices, which include extra graphs, data-tables, and raw results, as well as source code for functions written by myself and used in this report. References to functions are given in Courier font, for example fft, while references to documents or literature are made using the standard superscript square brackets[x]. Each chapter has an introduction and several subsections. These are presented in the order that best aids understanding, with latter sections building on content of earlier sections. A conclusion and future work chapters toward the end of the report detail how well the project went, and where improvements could be made. <b>Please note, some formatting may be lost in the conversion to webpage. Please use the PDF if the formatting is important.</b> <h1>Background</h1> The background section explains the theory and technicalities of the overall system. It gives an overall idea of the field, including ZigBee, Software Defined Radio, Cognitive Radio and Concurrency. <h2>ZigBee</h2> ZigBee is a specification for wireless personal area networks (commonly referred to as WPANs). The standard is managed by the ZigBee Alliance, whom describe ZigBee to be “the global wireless language connecting dramatically different devices to work together and enhance everyday life”[1]. It is a software layer built on the IEEE 802.15.4 standard. ZigBee style networks were originally devised when engineers realised that existing Wi-Fi and Bluetooth standards were unsuitable for some applications. There was a need for self managing digital networks with the ability to work without infrastructure (device to device, or ad-hoc). ZigBee can provide this kind network. This work concerns itself primarily with the Physical Layer described in section 6.1.6. Other sections are provided as a background to the work, and for completeness. <h3>Devices</h3> There are 3 types of ZigBee device:[2] <ul> <li> A Network Coordinator is responsible for holding the entire network information including security and trust keys. It is the device that originally started the network and there can only be one coordinator device in a network. It is the most complex device on the network, requiring the most amount of memory and processing power.</li> <li> A Full Functionality Device (FFD) supports all the features detailed in the IEEE 802.15.4 standard, making it ideal for network coordinators (ZC) and routing (ZR). It can also be used to run an application layer for use in an end device (ZED).</li> <li> A Reduced Functionality Device (RFD) supports less features than a FFD. The reduced functionality is defined in the IEEE 802.15.4 standard. As a result, RFDs are cheaper and simpler to build and are typically used as end devices (ZEDs).</li> </ul> Typically, a network coordinator (ZC) will initiate a network. End devices, typically RFDs, run software to perform the required operations, for example sensing. They are designed to meet the required hardware and software specifications to perform the task reliably and nothing more. Designing them to a tight specification makes them cheap to manufacture, yet reliable. FFDs can also run software to perform specific tasks, as with the end devices. FFDs are also able to route packets around the network, functioning as routers (ZRs). <h3>Channel Accessing and Device Addressing</h3> The IEEE 802.15.4 standard includes two methods for channel-accessing: <ul> <li>In non-beaconing networks, ALOHA carrier-sense multiple-access with collision avoidance (CSMA/CA) is used, with an acknowledgement for received packets: This means that if a node has data to be sent, it will first listen on the channel for any traffic. If the channel is busy, the transmitting node must wait a arbitrarily random amount of time. This decreases the chances of collisions on the channel. Once the channel is clear, and the node has decided to transmit the data, the transmitting node must then wait for an acknowledgement frame from the destination. If it does not receive one within a given time, it is assumed the data was lost and is resent 'later'.</li> <li>In beaconing networks, a super-frame structure is used to control channel access. This optional set up allocates nodes with time critical data a specific regular time-slot. The super-frames are set up by the network coordinator to transmit beacons at predetermined intervals (multiples of 15.38ms, up to 252 seconds)[3]. This provides 16 equal-length time-slots between beacons, used for channel access. This guarantees nodes a low latency and dedicated bandwidth channel.</li> </ul> For communications systems there are two resources available: time and frequency. Devices are either given a specific frequency for all of the time, called frequency division multiple access (FDMA); or, they are given a specific time-slot to transmit in, and they can use a wide range of frequencies, called time division multiple access (TDMA). ZigBee uses code division multiple access (CDMA) as a channel access method, allowing many nodes to use the same frequency and timeslots. Individual nodes are recoverable by from their code – a unique identifier for the node. Device addresses are either 64-bit (extended) addresses, with the option for a 16-bit (short) address. The network makes use of the media access controller's (MAC's) ability to encode the source and destination addresses twice into the same packet, to reduce failure in the network. <h3>Power Consumption and Beaconing Modes</h3> Slave nodes are in a sleep mode for most of the duty cycle, waking up only to refresh their presence on the network. Waking from sleep to the point the node is ready to transmit data takes approximately 15ms, and enumeration of a new device onto the network takes approximately 30ms[3]. ZigBee networks may be configured in beacon or non-beacon modes: <ul> <li> Non-beacon mode operates like traditional multi-node networks. Each node operates independently, and decides when to transmit without outside control. From this, the possibility of nodes doubling (transmitting over each other) arises. This mode is typically used for systems where the slave node should sleep for as long as possible. The device wakes up with regularity to confirm its existence on the network, and then returns to sleep. It also wakes up to transmit any events, for example to transmit the sensor sample data. As the network coordinator is typically mains powered, it is able to have its receiver running continuously and so can receive the random transmissions of the nodes as events occur.</li> <li> Beacon mode provides a method for each client to know when to communicate with another. In this mode, the network coordinator organises communications. The main advantage of this is reduced power consumption. This is suitable for when the network coordinator also has power constraints. In this mode, the coordinator wakes up, and transmits a beacon. Each node listens for any data addressed to it. The network coordinator listens for any replies based on the super-frame structure, and then resumes sleeping itself. It is evident that this design is energy efficient, and is useful when devices are running from batteries. Long sleep intervals between beacons mean that the timing systems in the devices have to either be very accurate or come on slightly earlier, to ensure that a beacon is not missed. Both of these options make the network more expensive in terms of energy or hardware quality.</li> </ul> <h3>Security</h3> ZigBee boasts data security as a key benefit, over older networking techniques. The IEEE 802.15.4 MAC sub-layer offers four security services:[3] <ul> <li> Access Control: The network coordinator holds a list of trusted devices on the network. Only pre-approved (enumerated) devices may talk in the network.</li> <li> Data Encryption: 128-bit AES (advanced encryption standard) symmetric keys. Data, commands, or beacons cannot be read by parties without the cryptographic key.</li> <li> Frame Integrity: MIC (message integrity code) protects data. Data cannot be modified by parties without the cryptographic key.</li> <li> Sequential Freshness: Freshness number determines if frames should be ignored. Prevents a party from recording an encrypted frame and replaying it, as the freshness number must be incremented for successive commands.</li> </ul> <h3>Network Layer</h3> The network layer is an interface between the MAC layer of the IEEE 802.15.4 standard and the application layer, ensuring that applications adhere to the standard. The ZigBee network layer also provides services typical of a network layer, including frame routing (AODV), device association (including address assigning of new devices) and disassociation. The network layer of the ZigBee stack supports 3 topologies: [4] <ul> <li> Star: All nodes communicate with one central hub node (typically a router or coordinator).</li> <li> Mesh: Nodes can communicate with other nodes in the network, as well as the central node.</li> <li> Cluster/Tree: A Hybrid where end devices communicate with a local router in a star topology and routers communicate with each other (and the coordinator) in a mesh topology.</li> These topologies are shown graphically in Illustration 1.</ul> <table align="center" cellpadding="10" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Topology_Star.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Topology_Star.png" alt="Illustration 1" class="aligncenter"></a></td></tr><tr><td>A</td><td>B</td><td>C</tr> </table> The star (a) topology is a point-to-point set up. Each device communicates with the parent router/coordinator directly. This has the advantage of simplicity and potentially low power requirements. In the mesh (b) topology, any device can communicate with any other device, providing they are within radio range of each other. This has the advantage of extending the physical area the network can be used over, and may be used to provide fault resistance if a certain node in the network goes down. The cluster/tree (c) topology attempts to take the advantages of both star and mesh topologies. It maintains the fault tolerance of the mesh topology, and gains back the simplicity and reduced energy requirements of the star topology for devices on the edge of the network. <h3>Physical Layer</h3> The ZigBee physical layer is as specified in the IEEE 802.15.4 standard. For the 2.45GHz band, the operating frequency range is from 2400–2483.5MHz, with a fixed symbol rate of 62,500 symbols/second<a href="3].">Four input bits are grouped together to make one symbol[3</a>. Combining these two values together, we obtain a value for data-rate, given by: <center>R = 4 \cdot 62.5 \times 10^3 = 250KBit/s</center> Direct-sequence spread spectrum (DSSS) is used with the 2.45GHz ZigBee physical layer[3] to perform spectral spreading. There are several benefits to using this technique, most importantly: <ul> <li> Resistance to signal jamming, that is, it is difficult for parties to block communications (either intentionally or unintentionally), and;</li> <li> The sharing of a single channel amongst several devices, so multiple nodes can transmit on the same channel simultaneously.</li> </ul> o achieve this spectral spreading, DSSS maps each symbol (4-bits) into a chipping sequence (32- bits) resulting in a spreading factor, <i>SF</i>, of 32 times[3]. With the fixed symbol rate of 62.5Ksymbols per second, we get a channel bandwidth as follows: <center>BW = SF \times SymbolRate = 32 \times 62.5 \times 10^3 = 2\times 10^6 = 2MHz</center> This chip sequence is then modulated onto the carrier using offset quadrature phase shift keying (OQPSK) with half-sine pulse shaping and 2 chip bits per symbol [3]. The entire process is shown in Illustration 2. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Modulation_Block_Diagram.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Modulation_Block_Diagram.png" alt="Illustration 2" class="aligncenter"></a> The IEEE 802.15.4 standard (section 6.1.2 Channel Assignments & Numbering) gives the following formula for the calculation of carrier frequency for a given channel number, [3]. <center>F_C = 2405 + 5(k-11) for k \in {11,12,\dots,26}</center> Illustration 3 shows the 2.45GHz industrial, scientific and medical (ISM) band. It shows the frequencies of the 16 channels, their respective channel numbers, and their spectral position and spacing. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Channel_Spacing.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Channel_Spacing.png" alt="Illustration 3" class="aligncenter"></a> The 2.45GHz physical layer (PHY) supports channel numbers in the range 11 ... 26. Channel 0 is provided by the 868MHz PHY, and channels in the range 1 ... 10 by the 915MHz PHY. The 868/915MHz PHYs have different bit/symbol rates and different modulation techniques. This work does not concern itself with these PHYs, and so their specifications are not mentioned. From the carrier frequency formula, we can deduce that ZigBee has a channel spacing of 5MHz on the 2.45GHz band. There is therefore no overlap of channels in the frequency spectrum. <h2>Software Defined Radio</h2> Software defined radio (SDR) is rapidly becoming the new method for radio signal processing. It offers several advantages over traditional radio processing systems. It allows for existing radio hardware to be replaced by digital signal processing (DSP) algorithms, offering a performance closer to ideal. In the receiver, the incoming signal is converted into the digital domain as soon as possible. This has the major advantage of reducing the amount of fixed hardware in a radio transceiver system. By processing the signal in software, we eliminate the need to modify the hardware to reflect new modes or features, and so new radio protocols can be implemented by simply changing software. This eliminates the cost of designing and manufacturing. Software defined radio is the obvious choice here, as we require the system to work for cognitive wireless sensor networks. As we also wish for the system to monitor all channels concurrently, a digital approach is more suitable. <h3>Cognitive Networks</h3> A cognitive wireless sensor network is one in which parameters relating to the physical wireless link are changed in real-time by the nodes in order to achieve the best communication. This is well defined by the quote: <blockquote> “Cognition, a continuous process involving sensing, reasoning, understanding and reacting, can be applied to wireless networks in order to adapt the system to the highly dynamic wireless ecosystem.” [13] </blockquote> This means that parameters of the radio transceiver are adjusted autonomously to achieve the best link. Software defined radio is paramount here, as it allows for easy control of the radio used for the link layer. <h3>Concurrency</h3> Existing hardware is able to monitor a single channel, but to monitor all of the channels on the 2.45GHz PHY simultaneously would require either 16 separate receivers or several receivers scanning through channels quickly. Having 16 separate receivers would result in a bulky device which would be expensive to build. It would also be time consuming to calibrate each of the individual receivers. The scanning approach requires less hardware and so would result in a cheaper and smaller device. However, scanning the receiver through 16 channels would be a slow process: after the channel is changed, the system must wait for the radio receiver to lock to the new channel, listen for a short time, and move on. As frame lengths are short, there is a large possibility that some data would be missed by the monitoring device. SDR allows us to overcome this problem by implementing all 16 receivers inside one DSP chip. We are able to have the speed and reliability of 16 separate receivers with the size and cost of one DSP chip. In using a high specification general purpose field programmable gate array (FPGA), we are able to perform DSP for 16 separate radios and control a universal serial bus (USB) interface to transfer data to and from a host personal computer (PC). <h1>Approach</h1> The approach chapter details how the complete system solution is achieved, and how this system is broken down into smaller individually testable parts. <h2>Complete System</h2> As the aim of this project is relatively complex, it is split into 3 major steps. Each of these is explained in subsequent sections of this report. Illustration 4 shows the complete block diagram for the system. The highlighted sections roughly match the chapters of this document. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Complete_System.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Complete_System.png" width="800" alt="Illustration 4" class="aligncenter"></a> <center><i>Click image for a larger version</i></center> The yellow section corresponds to the RF input, and is not considered in this report. In later stages of the project's development, it will be a tuned RF amplifier and antenna. For testing purposes, this is replaced with a ChipCon CC2400 Evaluation Board is used, as explained in the testing sections of subsequent chapters. The pink section is the down-converter (Ch8) and includes the anti-aliasing filter. The purple section is the analogue to digital converter, and is responsible for the sampling (Ch9). The green section is the decoding (Ch10) section. This is where the digital signal is processed. The blue section is the interface section, supplying the user with a graphical user interface. The system operates as follows: <ul> <li> A transmitting node is received via the antenna, and input into the tuned RF front end amplifier. This amplifies the signal so it has enough power to operate the mixer in the linear region. It is important that this amplifier is a low-noise amplifier, as this plays a fundamental role in setting the maximum sensitivity of the receiver.</li> <li> This amplified signal is then fed to the down-converter, which takes the 2.45GHz signal from the RF front end and moves it down in frequency. This is done to overcome limitations in analogue to digital converters (ADCs). See chapter 8 for more detail.</li> <li> The ADC samples this down-converted signal, turning it from an analogue waveform into a digital discretised quantised data-stream. See chapter 9.</li> <li> This data-stream is then processed along the top path of the signal processing chain. Sampled radio-waves go into the DSP section from the ADC, and ultimately re-appear as binary data at the end of the processing chain. The USB interface controller collects the processed binary data from the end of the processing path, and packages it up to be sent off to the host PC. Aside from this, the USB interface also allows for settings and parameters from the host PC to be passed to individual blocks in the signal processing chain.</li> </ul> <h2>Development System</h2> A simplified system was used to develop the device. This involved swapping some parts for commercially available parts to enable other system sections to be designed, calibrated and set up. To do this, the block diagram in Illustration 4 from section 7.1 was changed to the one shown in Illustration 5. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Development_System.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Development_System.png" width="800" alt="Illustration 5" class="aligncenter"></a> <center><i>Click image for a larger version</i></center> The analogue to digital conversion is done with an Agilent Infiniium oscilloscope. The MathWork's MATLAB provides a good environment to develop algorithms for signal processing. MATLAB also provides a graphical user interface (GUI) with graphing ability, allowing me to see the interim stages of the signal processing. The individual chapters in this document are based around the block diagram shown in Illustration 5. <h1>Down Conversion</h1> The process of reducing the frequency of a signal is referred to as down-conversion. This is typically done when converting an radio frequency (RF) signal to intermediate frequency (IF); or, when converting from IF to base band (BB). Here we use down-conversion to move from the 2.45GHz ISM band where ZigBee is used to an IF much lower in frequency. In doing this, we remove the need for very high specification ADCs allowing this system to use a much cheaper and widely available ADC. <h2>Theory</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Mixer.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Mixer.png" alt="Illustration 6" class="aligncenter"></a> An RF mixer is used to perform the down-conversion. Illustration 6 shows the RF mixer symbol. A double-balance mixer takes an RF input at frequency F_{RF} and a local oscillator (LO) input at frequency F_{LO} and produces an IF output consisting of the sum and difference frequencies, F_{IF} = F_{RF} \pm F_{LO}. The mixer output is typically fed through a filter to remove either the sum (+) or the difference (-) frequency. Graph 5 in Appendix A Graphs & Tables shows this. <h2>Application</h2> An IF of 20MHz was picked. Using low-side injection (f_{LO}<f_{RF}) combined with the principles of operation for an RF mixer, it is possible to calculate a suitable value for the local oscillator: : Assuming and ideal mixer :: f_{IF} = f_{RF} \pm f_{LO} : We're concerned with the difference frequency :: f_{IF} = f_{RF} - f_{LO} <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Mixer_Output.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Mixer_Output.png" alt="Illustration 7" class="aligncenter"></a> From the IEEE 802.15.4 standard, the first channel supported by the 2.45GHz PHY has a carrier of 2405MHz. Using this, and our choice of IF frequency, 20MHz, we are able to calculate the IF: : f_{LO} = f_{RF} - f_{IF} = 2405 - 20 = 2385MHz The output of the mixer will need to be followed by an image rejection filter and an anti-aliasing filter. Illustration 7 shows the output of the mixer. IF1 is the desired difference frequency. IF2, the image (sum) frequency. LO and RF are the two input frequencies. A double-balanced mixer should reduce the powers of LO and RF, but the signals still exist. <h2>Testing</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Mixer_Test_HW.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Mixer_Test_HW.png" alt="Illustration 8" class="aligncenter"></a> The Mini-Circuits ZFM-2000 mixers have an operating frequency range of 100-2000MHz. As I will be using them outside this specified operating range, I thought it important to verify the functionality of the devices and assess their suitability for use in the RF front end. <h3>Mixer Frequency Response</h3> The first test carried out was to establish the frequency response of the system. The two electronic signal generators (ESGs) were used as RF and LO inputs – an electronic spectrum analyser (ESA) was connected at the IF output. Illustration 8 gives a graphical representation of the hardware configuration – numerical values can be found in Appendix A, table 2. The RF and LO inputs were frequency-swept at constant power, such that: : f_{IF} = f_{RF} - f_{LO} = 200MHz and P_{IN(RF)} = P_{IN(LO)} = +7dBm <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_ZFM2000_F_Response.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_ZFM2000_F_Response.png" width="800" alt="Graph 1" class="aligncenter"></a> <center><i>Click image for a larger version</i></center> Graph 1 shows the frequency response of the mixer under the test conditions given above. Graph 3 in Appendix A Graphs & Tables shows similar results from a RF vector network analyser (VNA). <h3>Mixer 3rd Order Intercept Point (IIP3)</h3> The 3rd order input intercept point (3IIP) is a figure of merit for intermodulation product suppression – ideally, it should be as high as possible. As RF input power increases, so do the levels of the intermodulation products – these are unwanted signals. The levels of the intermodulation products increase at 3 times the speed of the RF input. The theoretical point at which the difference product is equal in level to the 3 rd order harmonics is the known as the intercept point. The test is usually done with two-tone intermodulation products. If two RF signals f_{RF_{1}} and f_{RF_{2}} are mixed with LO frequency, f_{LO}, then the following output signals will exist at the IF output: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Mixer_TT_Test.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Mixer_TT_Test.png" alt="Illustration 9" class="aligncenter"></a> : (2f_{RF_{1}} \pm f_{RF_{2}}) \pm f_{LO} and (2f_{RF_{2}} \pm f_{RF_{1}}) \pm f_{LO} Of these outputs, the following two are likely to cause us problems, as they will be close to the desired IF signals: : (2f_{RF_{1}} - f_{RF_{2}}) - f_{LO} and (2f_{RF_{2}} - f_{RF_{1}}) - f_{LO} With this in mind, we are able to devise a test to carry out a two-tone test on the mixer. Using three ESGs, a Mini- Circuits RF power combiner and an ESA, we are able to determine the characteristics of the Mini-Circuits ZFM-2000 mixer. Two of the ESGs are connected via the power combiner into the RF input of the mixer under test – these are the 'two-tones' used in the two-tone test. The third ESG is connected to the LO input of the mixer under test – this serves as our local oscillator. The IF output of the mixer is then connected to the ESA – this gives a graphical representation of the output of the mixer in the frequency domain. The block diagram in Illustration 9 shows the equipment configuration. With a fixed LO input power, the RF input power was increased in 1dBm increments. The IF fundamental difference frequencies f_{RF_{1}} - f_{LO} and f_{RF_{2}} - f_{LO} were recorded along with the 3rd order intermodulation products 2f_{RF_{1}} - f_{RF_{2}} - f_{LO} and 2f_{RF_{1}} - f_{RF_{2}} - f_{LO}. Graph 2 shows the results obtained from the two-tone test, and allows for the calculation of the 3 rd order input intercept point (3IIP), circled green. Data for graph 2 can be found in Appendix A, table 1. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Mixer_IIP3_Graph.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Mixer_IIP3_Graph.png" width="800" alt="Graph 2" class="aligncenter"></a> <center><i>Click image for a larger version</i></center> Taking only the linear part of the data set, two linear trend lines were added to graph 2. The theoretical point at which the fundamental and the 3 rd order intermodulation products intercept, is the 3IP. The input power required to achieve this is referred to as the 3IIP and similarly the output power at which this occurs, the 3OIP. We can calculate the 3IIP by simply equating the two formulae to obtain their interception. From graph 2 we get the formulas for both of the trend lines: : y_1(x) = 0.95x - 16.88 : y_3(x) = 3.49x - 43.75 At the intercept point: : y_1(x) = y_3(x) So, we can solve for x. The calculation is omitted here, but is included inside the PDF, linked at the top of this page. : x = \frac{26.87}{2.54} = 10.543307087 dBm : IIP3 = 10.543dBm This is a little lower than expected. The 3IIP is a measure of how much distortion the mixer creates at a given input power, and how linear the mixer is. It shows how well the mixer handles power[10]. If this value is low, as ours is, it indicates that the mixer may distort the output when high input levels are applied. <h2>Anti-Alias Filter</h2> As the mixer is not perfect, the two input signals, RF and LO will be present at the output, along with the sum and difference frequencies. As we are only interested in the difference frequency, the other three signals must be removed. Illustration 10 shows this pictorially: 10a shows the input to the filter, and 10b shows the filter output. <table align="center" cellpadding="10" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Mixer_Output.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Mixer_Output.png" alt="Illustration 7" class="aligncenter"></a></td></tr><tr><td>(A) Filter Input</td><td>(B) Filter Output</tr> </table> As the device will be tested in a controlled environment, the antialiasing filter is used primarily to suppress the image frequencies. The source data is sent from a ChipCon CC2400EB evaluation board, and so the output is clean. Aside from harmonics, there is only ever one channel at a time being sent. There is no chance that there will be signals greater in frequency than half of the sample rate, and so I have chosen to use a standard part from the lab. The part used was a HP 1GHz low pass filter (LPF). Although this is not ideal, it serves the primary purpose of removing the LO, RF and image signals. Graph 6 in Appendix A Graphs & Tables shows the passband of the HP 1GHz LPF. <h1>Sample & Capture</h1> Sampling is the process of converting a continuous-time analogue signal into a discrete-time signal. The sampling provides the interface between the analogue domain and the digital domain. I have used an Agilent Infiniium oscilloscope as it provides an easy way of capturing waveforms for testing. <h2>Theory</h2> The continuous-time signal is discretised, so the signal only changes at specific intervals of time. It is then quantised, that is, rounded to a numerical value close to that of the analogue signal. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Analogue_Sample.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Analogue_Sample.png" alt="Illustration 11" class="aligncenter"></a> Illustration 11 shows a continuous-time analogue signal (black trace). This is sampled every seconds, or, every T_S seconds, the current signal level (length of blue arrow) is read and output digitally. A real ADC will have a fixed and finite resolution, and so the signal level is rounded to the closest digital level. The signal therefore suffers from quantisation distortion. Once accuracy is lost, it cannot be recovered. The sampling time, shown in Illustration 11 as T_S, is very important. Usually referred to in terms of frequency,F_S = \frac{1}{T_S}, relates to the maximum frequency that can be sampled. The Nyquist-Shannon sampling theorem guarantees that a bandwidth limited signal can be reconstructed from the sampled version, providing that the sample frequency F_S is more than twice the maximum frequency present in the bandwidth limited signal. <h2>Application</h2> The IEEE 802.15.4 standard specifies that there are 16 channels (11 to 26) ranging from 2405MHz to 2480MHz. The Agilent Infiniium oscilloscope has a maximum sample-rate of 100MSa/second, which was used. From the Nyquist-Shannon sampling theorem, we can calculate the maximum input bandwidth: : BW < \frac{F_S}{2} : BW < \frac{100\times 10^6}{2} : BW < 50 \times 10^6 Hz So the maximum input frequency must be less than 50MHz. By using principles of oversampling it is possible to get a better resolution, an improved signal to noise ratio, and to reduce cut-off steepness required on the antialias filter [9]. The Infiniium scope is able to store a maximum of 65536 samples. From this, we can obtain the observation period, or the period of time of which will be captured: : T = \frac{65536}{100\times 10^6} = 655.36\times 10^{-6} = 655.36\mu S With a symbol rate of 62.5Ksymbols per second, we can calculate the number of symbols that will be captured: : N_{symbols} = (62.5\times 10^3) \times (655.36 \times 10^{-6}) = 40.96 A sample of 40 symbols is more than enough to serve as a set of test signals for filter design. However, 40 symbols would not represent a complete frame and so it would be difficult to decode data from the capture. <h2>Test Captures</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Capture_HW.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Capture_HW.png" width="500" alt="Illustration 12" class="aligncenter"></a> To allow the development of the DSP algorithms in MATLAB, I needed to acquire some test captures. Illustration 12 shows how the equipment was set up to make such captures. Channels 11 to 15 were captured Illustration 12: Equipment Configuration for Test Captures using the Agilent Infiniium scope, and serve as test signals. Along side these test frames, sinusoidal signals of varied power were input into the system in place of the ChipCon CC2400EB. These enabled me to calibrate the graphs and to make a meaningful comparison with the user input threshold level. Both the ZigBee and the power calibration signals were sampled at 100MSa/second with 65536 samples, as explained in section 9.2 (Application), above. <h1>Decoding</h1> Once the IF has been sampled and converted into the digital domain, it is then necessary to begin the process of recovering the original signal. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Implemented_Decoder.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Implemented_Decoder.png" width="800" alt="Illustration 13" class="aligncenter"></a> Illustration 13 shows the complete block diagram from section 7.1. The blocks with black outlines show the stages which have been implemented, those in green are reserved for future work. I started by getting the received signal strength indicator (RSSI) to work. I wanted this to be calibrated, so that meaningful values were displayed. The first step of the project was to assess which channels are in use at any given time. The RSSI is an ideal way of doing this. Comparing this value to a threshold value will give a good indication if the specified channel is in use. <h2>Theory</h2> <h3>Fast Fourier Transform (FFT)</h3> The sampled data is first converted into the frequency domain by fast Fourier transform (FFT). The FFT is a complex algorithm to compute the discrete Fourier transform. There are many different approaches to computing an FFT. Mathwork's MATLAB fft function is based on the FFTW algorithm[14][15]. The fast Fourier transform is used to convert the time domain waveform capture from the oscilloscope into the frequency domain. Illustration 14 shows how a sine wave in the time domain can be converted using a FFT into the frequency domain. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_FFT.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_FFT.png" width="800" alt="Illustration 14" class="aligncenter"></a> <h3>Digital Filtering</h3> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_DFilter_Passband.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_DFilter_Passband.png" width="300" alt="Illustration 15" class="aligncenter"></a> Digital Filtering enables us to extract the frequency range of interest. I needed to filter out the frequency range for each given channel. Knowing the channel spacing and the carrier frequency, I was able to work out the stop and start frequency for each channel. From section 6.1.6, the channel bandwidth is 2MHz. Adding 500KHz to the filter bandwidth to allow for filter rolloff and to ensure that no part of the signal is lost gives a workable filter bandwidth of 2.5MHz. I then derived a formula for the start and stop frequencies, centred around the carrier frequency. These two formulas are given: :f_{START} = f_C - \frac{f_{BW}}{2} :f_{STOP} = f_C + \frac{f_{BW}}{2} Where f_{START} and f_{STOP} are the stop and start frequencies of the bandpass filter, respectively. Remembering that we have down- Illustration 15: Passband converted to an IF of 20MHz, we are able to combine the above formulae with the formula for the carrier frequency, to obtain the following two formulae: :f_{CARRIER} = 5(k-11)+20MHz (adapted for down-converted IF as discussed in previous sections) :f_{START} = 5(k-11) - \frac{f_{BW}}{2}+20MHz :f_{STOP} = 5(k-11) + \frac{f_{BW}}{2}+20MHz :Where k \in {11, \dots, 26} From these formulae, it is possible to calculate the stop and start frequencies for the digital filter from channel number, k. In MATLAB, a linear phase Finite Impulse Response (FIR) filter can be made using the MATLAB function fir1. fir1 creates a normalised filter so that the passband response is 0dB. By default, a Hamming-window based linear phase filter is created[16]. This is explained in more detail in the testing of the digital filter, section 10.3.2. <h2>Application</h2> Illustration 16 shows a block diagram of the internal workings of my MATLAB functions. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_MATLAB_Blocks.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_MATLAB_Blocks.png" alt="Illustration 16" class="aligncenter"></a> User supplied inputs are marked with blue arrows, and outputs created by the function are marked with red arrows. Appendix B shows the MATLAB source code for the functions written. These functions take the test captures from section 9.3 and are able to determine which channels are clear and which are busy, based on certain user input parameters. The bullet points below describe the signal flow through my zigbee function: <ul> <li> The function is called with parameters specifying the user threshold (minimum signal level to be regarded as busy), channel number (for single channel analysis) and graph plotting (to enable a behind-the-scenes view). The user must also specify the input waveform (as an array of samples) and sample rate (in Hz).</li> <li> The channel number is checked for validity and converted to carrier frequency and filter start/stop frequencies.</li> <li> Input waveform is converted to frequency domain by means of FFT. This is then shifted to represent the continuous-time transform, using the fftshift function, and the magnitude calculated using the abs function.</li> <li> A digital filter is then created from the fir1 function which takes normalised start and stop parameters. freqz and abs are used to get the frequency response of the normalised digital filter.</li> <li> The filter is then applied by means of multiplying the frequency domain passband of the filter with the frequency domain of the signal. This is convolution in the time domain.</li> <li> Data for the calibration signal of 0dBm is loaded from a .mat file. These powers are also transformed into the frequency domain, and then their peak value plotted for all frequencies. This provides a fixed line of known power.</li> <li>If the user requests a graph is plotted:</li> <li>* All of the remaining calibration power levels are imported, converted, and plotted at maximum for all frequencies. This gives us a calibrated scale. These scalings are used to calibrate the -axis of the graph as power in dB.</li> <li>* A figure is initialised and split into two vertically stacked graphs using the subplot function.</li> <li>* The top graph shows the raw input data and the bottom graph shows the filtered data.</li> <li>* Graphs are scaled with the power calibration levels.</li> <li>* Axes titles and a graph title is applied to the figure.</li> <li> A comparison is made between the maximum power of the filtered signal and the user input threshold. If the channel power exceeds the user threshold, then the channel is regarded as busy. If not, then the channel is regarded as clear.</li> <li> Function ends.</li> </ul> To scan all channels, the scan function calls the zigbee function recursively in a for loop. Again, the function outline is given in bullet points below: <ul> <li> A for loop is set up to run from channels 11 to 15 (test channels).</li> <li> The zigbee function (described above) is called repetitively with an incremented channel number.</li> <li> The return value is analysed and the result presented to the user in a tidy way.</li> </ul> <h2>Testing</h2> To ensure the functions operate as intended, tests had to be carried out. Functionality is broken into separate components each of which are tested separately. Each section below shows the testing. <h3>Time to Frequency Domain</h3> Illustration 17 shows channel 11 in both the time and frequency domain. The time waveform has been magnified in so that the waveform is visible. This was created using an early revision of the code, and so the x-axis for the frequency domain is uncalibrated. <table align="center" cellpadding="10" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_DConv_ML.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_DConv_ML.png" width="400" alt="Illustration 17a" class="aligncenter"></a></td></tr><tr><td>(a) MATLAB time & frequency domains after downconversion</td><td>(b) Spectrum analyser view of ChipCon CC2400EB output</tr> </table> As can be seen from Illustration 17, the frequency domain output from the MATLAB function (a) replicates exactly that of the spectrum analyser (b). We can therefore except that the MATLAB fft function provides reliable results for our needs with the default settings. <h3>Digital Filter</h3> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_DigitalFilter_PB.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_DigitalFilter_PB.png" width="400" alt="Illustration 18" class="aligncenter"></a> The normalised digital filter used was of order 500 and FIR type. This order was used as it was found to give the best functionality. A FIR filter was used because it is inherently stable, with the output returning to zero one sample after the last input. This is in contrast to infinite impulse response (IIR) filters, which require feedback to stabilise the filter. Illustration 18 shows the transfer function of the digital filter. This filter was created by my function for use on channel 11, and so we can see that it has the parameters set out by the formulae in section 10.1.2. Due to the Hamming windowing technique used, there is ripple outside of the passband – these ripples are ringing artifacts. These can be eliminated using a rectangular window, but this causes greater distortion to the signal passing through the filter because of Gibbs phenomenon. Gibbs phenomenon causes considerable ripple in the passband as a result of discontinuity bought about by the sudden step in the filter. The Hamming function is one of a variety of different windowing techniques used. It reaches a good compromise between roll-off and ringing artifacts. <h3>Filtering Channels</h3> Illustration 19 shows an input of channel 13 (top plot), and the same waveform after it has been filtered using the digital filter (bottom plot). It can be seen that much of the noise has been removed from the signal. Notice the y-axis scale changes between the top and bottom plots. The red lines are the calibrated power levels, staring at 0dBm at -5dBm intervals. The green line is the user input threshold of -30dBm which covers the red line for the same power. We can see, the signal (in blue) exceeds the threshold level (green line) by more than 15dBm, and so the channel is regarded as busy. <table align="center" cellpadding="10" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Filtering.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Filtering.png" width="500" alt="Illustration 19a" class="aligncenter"></a></td></tr><tr><td>(a) Unfiltered (top) and filtered (bottom) data from channel 13</td><td>(b) Enlargement of filtered data</tr> </table> Illustration 20 shows similar to Illustration 19 above. However, this time channels 11, 12, 14 and 15 are present while the filter is tuned to channel 13, which is not present. Here we see that, although there is some signal from the sidebands of channel 12 and 14, there is not enough signal present to exceed the threshold level and so the channel is regarded as clear. <table align="center" cellpadding="10" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Filtering2.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Filtering2.png" width="500" alt="Illustration 20a" class="aligncenter"></a></td></tr><tr><td>(a) Unfiltered (top) and filtered (bottom) data from channel 13</td><td>(b) Enlargement of filtered data</tr> </table> <h3>Scanning Functionality</h3> A scanning function, scan, is provided to allow a user to see what channels are in use for a given input waveform. Although this is not executed concurrency, the FPGA implementation will be able to run the same filter function 16 times (for each channel) in parallel, so this will not be a problem. Therefore this scanning function is provided for the non real-time solution. This method will be changed when the system is implemented in hardware and therefore run in real-time. <table align="center" cellpadding="10" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Scanning_A.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Scanning_A.png" alt="Illustration 21a" class="aligncenter"></a></td></tr><tr><td>(a) Channels 11, 13 & 15 Busy</td><td>(b) Channels 12 & 14 Busy</tr> </table> From Illustration 21 we can see two examples of the scan function. (a) shows the scan function with input of channels 11, 13 and 15. MATLAB's command window shows those channels as being busy, while the other channels are regarded as clear. (b) shows the opposite, with channels 12 and 14 being reported as busy and the remaining channels clear. <h1>Conclusion</h1> The solution provided in this document meets the aim of the project. The functions written by myself are able to identify which channels are in use for a given time domain capture. The functions provide a base from which to build the FPGA implementation. Evolving the project from these algorithms in MATLAB to a concurrent hardware based solution would start the move to real-time processing. The solution here uses only the first five channels of the ZigBee spectrum. This is for convenience and there is no hard-coded limiting factor. Extending the code to support all 16 channels on the 2.45GHz PHY would require a few simple changes. The functions are not capable of distinguishing between ZigBee data and any other signal in the ISM band – they are, for example, unable to tell the difference between Bluetooth, Wireless LAN and ZigBee. The project did not develop as quickly as I had hoped or liked, due to my lack of knowledge in the area. I found myself spending long periods of time familiarising myself with software such as MATLAB and Simulink. These are widely used in industry and so a good knowledge of them will prove to be very useful as I progress in my career. I also learned a lot regarding the use of test equipment such as signal generators, spectrum analysers, and vector network analysers. Again, these are commonly used in RF engineering and so a good knowledge of their usage is important. Extensions to this project are discussed in the Future Work chapter, following this. <h1>Future Work</h1> This project has great scope for extension. It is a complex project with many different parts, all of which must be fine tuned before the overall system will work as desired. Persons wishing to further this work will need to have a good understanding of digital signal processing. Competency in MathWork's MATLAB and Simulink would also be of great benefit. For the real-time evolution to FPGA, a knowledge of FPGAs and familiarity with Xilinx development tools would greatly benefit the project. Extending the project to decode frame headers would be the next obvious step, as it would add a lot of information to the system. It was suggested that a real-time user interface be developed such that data frames appear as blocks on the relevant channel showing the source device's ID. Illustration 22 shows this. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Proposed_Interface.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Proposed_Interface.png" class="aligncenter"></a> Extending the device to decode the header would require a phase locked loop locked (PLL) to the carrier of the incoming signal. This would provide a carrier of the exact same frequency but without modulation which could be used to detect phase changes in the modulated signal. Considerations of phase noise and jitter must be taken into account if this approach is used. An RF front end would need to be developed before the system could be put to proper use. This would involve the design of a low noise amplifier and tuned circuits to filter out the ISM band and amplify it. Commercially available filters, such as surface acoustic wave (SAW) filters may be suitable as they are cheap to purchase and are already tuned. <h1>References</h1><table > <tr><td>[1]</td><td>ZigBee Alliance, “ZigBee Alliance” Homepage, retrieved 24/11/2009 (http://www.zigbee.org)</td></tr><tr><td>[2]</td><td>Mikhail Galeev, “Home networking with Zigbee,” Embedded.com Technical Insights, retrieved 24/11/2009 (http://www.embedded.com/columns/technicalinsights/18902431)</td></tr><tr><td>[3]</td><td>“IEEE Standard 802.15.4: Wireless Medium Access Control (MAC) and Physical Layer (PHY) Specifications for Low-Rate Wireless Personal Area Networks (LR-WPANs)”, 2003. (http://standards.ieee.org/getieee802/download/802.15.4-2003.pdf)</td></tr><tr><td>[4]</td><td>ZigBee Alliance, “ZigBee Specification”, Document 053474r17, Jan 2008 (http://www.zigbee.org/ZigBeeSpecificationDownloadRequest/tabid/311/Default.aspx)</td></tr><tr><td>[5]</td><td>Rosemount Wireless Instrumentation, “Self-Organizing Networks: Wireless Topologies for In-Plant Applications ”, Technical Note, Document 00840-0200-4180/Rev AA, 2007. (http://www.emersonprocess.com/Rosemount/document/notes/00840-0200-4180.pdf)</td></tr><tr><td>[6]</td><td>UMTSWorld.com, “CDMA Overview” (http://www.umtsworld.com/technology/cdmabasics.htm)</td></tr><tr><td>[7]</td><td>Liam Devlin, “Mixers” (http://www.plextek.com/papers/mixers2.pdf)</td></tr><tr><td>[8]</td><td>Mini Circuits, “Coaxial Frequency Mixer”, Mini Circuits ZFM-2000+ Datasheet (http://www.minicircuits.com/pdfs/ZFM-2000+.pdf)</td></tr><tr><td>[9]</td><td>John Watkinson, “The Art of Digital Audio” ISBN: 0240513207</td></tr><tr><td>[10]</td><td>Janine Sullivan Love, “RF Front-end: World Class Design”, Newnes ISBN: 9781856176224</td></tr><tr><td><a href="11]</td><td>Khaled">Shuaib, Maryam Alnuaimi, Mohamed Boulmalf, Imad Jawhar, Farag Sallabi, Abderrahmane Lakas, “Performance Evaluation of IEEE 802.15.4: Experimental and Simulation Results ”, JOURNAL OF COMMUNICATIONS, VOL. 2, NO. 4, JUNE 2007</td></tr><tr><td>[12</a></td><td>Unknown Author, “Nallatech FPGA Board and System Generator Tutorial” Supplied by Dr John Mitchell, Dept of Electronic & Electrical Engineering, University College London</td></tr><tr><td>[13]</td><td>Frank H. P. Fitzek, Marcos D. Katz, “Cognitive Wireless Networks” ISBN: 9781402059780</td></tr><tr><td>[14]</td><td>The MathWorksInc, “Discrete Fourier Transform – MATLAB”, retrieved 21/02/2010 (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/fft.html)</td></tr><tr><td>[15]</td><td>Matteo Frigo, Steven G. Johnson, “FFTW Home Page”, retrieved 21/02/2010 (http://www.fftw.org/)</td></tr><tr><td>[16]</td><td>The MathWorksInc, “Window-based finite impulse response filter design – MATLAB”, retrieved 22/03/2010 (http://www.mathworks.com/access/helpdesk/help/toolbox/signal/fir1.html)</td></tr><tr><td>[17]</td><td>T Bokareva, W Hu, S Kanhere, B Ristic, N Gordon, T Bessell M Rutten, S Jha, “Wireless Sensor Networks for Battlefield Surveillance”, Proceedings of The Land Warfare Conference, 2006. (http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.88.8223)</tr> </table> <h2>Software</h2> All diagrams were made with Dia, a GPL program for creating nice diagrams. The PDF and Graphs were produced using Sun Microsystems' Open Office. MathWorks, Inc's MATLAB was used for much of the simulation, as well as Simulink (a MATLAB sub-program). Geany was used to tidy up source code for presentation and publication - it is also GPL. <h1>Appendix A: Data, Graphs and Tables</h1> The online (website) version of this document is missing the data tables. Please refer to the PDF for these. Graph 3 shows the ZFM-2000 frequency response as measured by a VNA. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_ZFM2K_FRes_VNA.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_ZFM2K_FRes_VNA.png" width="800" alt="Graph 3" class="aligncenter"></a> Graph 4 shows the Two-Tone test, and associated Intermodulation Products. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_ZFM2K_TTT.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_ZFM2K_TTT.png" width="800" alt="Graph 4" class="aligncenter"></a> Graph 5 shows ZFM-2000 Mixing and Intermodulation Products. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_ZFM2K_MIX_INTERMOD.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_ZFM2K_MIX_INTERMOD.png" width="800" alt="Graph 5" class="aligncenter"></a> Graph 6 shows the HP 1GHz low pass filter (LPF) used for Anti-Aliasing/Image Rejection. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_HP1GHZ_LPF.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_HP1GHZ_LPF.png" width="800" alt="Graph 6" class="aligncenter"></a> <h1>Appendix B: MATLAB Source Code</h1> Please consider copying the source code from the PDF, linked at the top of this page. <h2>fft_data</h2> The fft_data function takes one argument, samples_in, which is an array of time-domain samples. There is no way to calibrate the axes, as no information about time is input. From this, the frequency domain is calculated and plotted. Illustration 17a from section 10.3.1 was created using this function. <html> <head> <meta name="generator" content="Geany 0.18" /> <meta name="date" content="2010-10-09T00:58:12+0100"> <style type="text/css"> .style_1 { color: #808080; background-color: #ffffff; } .style_3 { color: #007f00; background-color: #ffffff; } .style_4 { color: #001a7f; background-color: #ffffff; font-weight: bold; } .style_5 { color: #ff901e; background-color: #ffffff; } .style_6 { color: #301010; background-color: #ffffff; } .style_7 { color: #000000; background-color: #ffffff; } </style> </head> <body> <p> <span class="style_4">function&nbsp;</span><span class="style_6">[]&nbsp;=&nbsp;</span><span class="style_7">fft_data</span><span class="style_6">(</span><span class="style_7">samples_in</span><span class="style_6">)</span><br /> <span class="style_1">%&nbsp;Show&nbsp;FFT&nbsp;of&nbsp;Input</span><br /> <span class="style_1">%</span><br /> <span class="style_1">%&nbsp;George&nbsp;Smart</span><br /> <span class="style_1">%&nbsp;Department&nbsp;of&nbsp;Electronic&nbsp;&amp;&nbsp;Electrical&nbsp;Engineering</span><br /> <span class="style_1">%&nbsp;University&nbsp;College&nbsp;London</span><br /> <br /> <span class="style_1">%&nbsp;Setup&nbsp;Parameters&nbsp;Below</span><br /> <span class="style_7">close&nbsp;all</span><span class="style_6">;</span><br /> <span class="style_7">data&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">samples_in</span><span class="style_6">;</span><br /> <span class="style_7">fSampling&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_3">100e6</span><span class="style_6">;&nbsp;</span><span class="style_1">%&nbsp;in&nbsp;samples/second</span><br /> <span class="style_7">Samples&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_3">65536</span><span class="style_6">;&nbsp;</span><span class="style_1">%&nbsp;total&nbsp;number&nbsp;of&nbsp;samples</span><br /> <br /> <span class="style_1">%&nbsp;Script&nbsp;Below&nbsp;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span><br /> <span class="style_1">%&nbsp;Compute&nbsp;Time&nbsp;&amp;&nbsp;Frequency&nbsp;Vectors</span><br /> <span class="style_7">tIncrement&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_3">1</span><span class="style_6">/</span><span class="style_7">fSampling</span><span class="style_6">;&nbsp;</span><span class="style_1">%&nbsp;sample&nbsp;time&nbsp;is&nbsp;reciprocal&nbsp;of&nbsp;sampling&nbsp;freq</span><br /> <span class="style_7">tVector</span><span class="style_6">=<a href="</span><span">class="style_3">0</span><span class="style_6">:</span><span class="style_7">tIncrement</span><span class="style_6">:(</span><span class="style_7">tIncrement</span><span class="style_6">*(</span><span class="style_7">Samples</span><span class="style_6">-</span><span class="style_3">1</span><span class="style_6">))</a>;</span><br /> <span class="style_7">fVector</span><span class="style_6">=<a href="(-</span><span">class="style_7">fSampling</span><span class="style_6">/</span><span class="style_3">2</span><span class="style_6">):(</span><span class="style_7">fSampling</span><span class="style_6">/</span><span class="style_7">Samples</span><span class="style_6">):((</span><span class="style_7">fSampling</span><span class="style_6">-</span><span class="style_3">1</span><span class="style_6">)/</span><span class="style_3">2</span><span class="style_6">)</a>;</span><br /> <br /> <span class="style_1">%&nbsp;Compute&nbsp;Fast-Fourier&nbsp;Transform</span><br /> <span class="style_7">dataFFT&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">fft</span><span class="style_6">(</span><span class="style_7">data</span><span class="style_6">(:,</span><span class="style_3">2</span><span class="style_6">));&nbsp;</span><span class="style_1">%&nbsp;do&nbsp;the&nbsp;fft</span><br /> <span class="style_7">dataFFT&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">fftshift</span><span class="style_6">(</span><span class="style_7">dataFFT</span><span class="style_6">);&nbsp;</span><span class="style_1">%&nbsp;shift&nbsp;the&nbsp;result,&nbsp;to&nbsp;resemble&nbsp;continuous</span><br /> <span class="style_7">mag_dataFFT&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">abs</span><span class="style_6">(</span><span class="style_7">dataFFT</span><span class="style_6">);&nbsp;</span><span class="style_1">%&nbsp;magnitude&nbsp;of&nbsp;FFT,&nbsp;to&nbsp;remove&nbsp;complex&nbsp;parts</span><br /> <br /> <span class="style_1">%&nbsp;Render&nbsp;Graphs</span><br /> <span class="style_7">subplot</span><span class="style_6">(</span><span class="style_3">2</span><span class="style_6">,&nbsp;</span><span class="style_3">1</span><span class="style_6">,&nbsp;</span><span class="style_3">1</span><span class="style_6">)</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">plot</span><span class="style_6">(</span><span class="style_7">tVector</span><span class="style_6">/</span><span class="style_3">1e6</span><span class="style_6">,&nbsp;(</span><span class="style_7">data</span><span class="style_6">(:,</span><span class="style_3">2</span><span class="style_6">)));&nbsp;</span><span class="style_1">%&nbsp;plot&nbsp;fft&nbsp;of&nbsp;unfiltered&nbsp;data</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">axis</span><span class="style_6">(<a href="</span><span">class="style_3">0&nbsp;0.65536e-9&nbsp;</span><span class="style_6">(</span><span class="style_7">min</span><span class="style_6">(</span><span class="style_7">data</span><span class="style_6">(:,</span><span class="style_3">2</span><span class="style_6">))+</span><span class="style_3">0.1</span><span class="style_6">*</span><span class="style_7">min</span><span class="style_6">(</span><span class="style_7">data</span><span class="style_6">(:,</span><span class="style_3">2</span><span class="style_6">)))&nbsp;(</span><span class="style_7">max</span><span class="style_6">(</span><span class="style_7">data</span><span class="style_6">(:,</span><span class="style_3">2</span><span class="style_6">))+</span><span class="style_3">0.1</span><span class="style_6">*</span><span class="style_7">max</span><span class="style_6">(</span><span class="style_7">data</span><span class="style_6">(:,</span><span class="style_3">2</span><span class="style_6">)))</a>);&nbsp;</span><span class="style_1">%&nbsp;scale&nbsp;the&nbsp;graph&nbsp;nicely&nbsp;:)</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">title</span><span class="style_6">(</span><span class="style_5">'Input&nbsp;Data&nbsp;in&nbsp;Time&nbsp;Domain'</span><span class="style_6">);&nbsp;</span><span class="style_1">%&nbsp;"Always&nbsp;title&nbsp;graphs"</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">xlabel</span><span class="style_6">(</span><span class="style_5">'Time&nbsp;/&nbsp;Seconds'</span><span class="style_6">);&nbsp;</span><span class="style_1">%&nbsp;"...&nbsp;and&nbsp;label&nbsp;axis"</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">ylabel</span><span class="style_6">(</span><span class="style_5">'Input&nbsp;Voltage/Volts'</span><span class="style_6">);</span><br /> <br /> <span class="style_7">subplot</span><span class="style_6">(</span><span class="style_3">2</span><span class="style_6">,&nbsp;</span><span class="style_3">1</span><span class="style_6">,&nbsp;</span><span class="style_3">2</span><span class="style_6">)</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">semilogy</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">/</span><span class="style_3">1e6</span><span class="style_6">,&nbsp;(</span><span class="style_7">mag_dataFFT</span><span class="style_6">));&nbsp;</span><span class="style_1">%&nbsp;plot&nbsp;fft&nbsp;of&nbsp;unfiltered&nbsp;data</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">axis</span><span class="style_6">(<a href="</span><span">class="style_3">0&nbsp;</span><span class="style_7">max</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">)/</span><span class="style_3">1e6&nbsp;10e-3&nbsp;10e3</span><span class="style_6"></a>);&nbsp;</span><span class="style_1">%&nbsp;scale&nbsp;the&nbsp;graph&nbsp;nicely&nbsp;:)</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">title</span><span class="style_6">(</span><span class="style_5">'Input&nbsp;Data&nbsp;in&nbsp;Frequency&nbsp;Domain'</span><span class="style_6">);&nbsp;</span><span class="style_1">%&nbsp;"Always&nbsp;title&nbsp;graphs"</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">xlabel</span><span class="style_6">(</span><span class="style_5">'Frequency&nbsp;/&nbsp;MegaHertz'</span><span class="style_6">);&nbsp;</span><span class="style_1">%&nbsp;"...&nbsp;and&nbsp;label&nbsp;axis"</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">ylabel</span><span class="style_6">(</span><span class="style_5">'Spectral&nbsp;Density&nbsp;/&nbsp;Uncalibrated&nbsp;Units.'</span><span class="style_6">);</span><br /> <br /> <span class="style_1">%&nbsp;End&nbsp;of&nbsp;Script&nbsp;(EOF)</span><br /> <span class="style_4">end</span><br /> </p> </body> </html> <h2>zigbee</h2> This zigbee function is the main function of those written by myself. It takes 5 arguments, listed below along with their definitions: <ul> <li> waveform - input array of time data from the sampled waveform.</li> <li> fSample - sample rate frequency in Hz</li> <li> channel - channel number to tune filter to, in range 11 ... 26.</li> <li> squelch - user defined input threshold level, in dB.</li> <li> plotgraph - instruct function to plot graph: true or false.</li> </ul> All of these arguments must be included when the function is called. <html> <head> <meta name="generator" content="Geany 0.18" /> <meta name="date" content="2010-10-09T00:58:12+0100"> <style type="text/css"> .style_1 { color: #808080; background-color: #ffffff; } .style_3 { color: #007f00; background-color: #ffffff; } .style_4 { color: #001a7f; background-color: #ffffff; font-weight: bold; } .style_5 { color: #ff901e; background-color: #ffffff; } .style_6 { color: #301010; background-color: #ffffff; } .style_7 { color: #000000; background-color: #ffffff; } </style> </head> <body> <p> <span class="style_4">function&nbsp;</span><span class="style_6"><a href="</span><span">class="style_7">busy</span><span class="style_6"></a>&nbsp;=&nbsp;</span><span class="style_7">zigbee</span><span class="style_6">(</span><span class="style_7">waveform</span><span class="style_6">,&nbsp;</span><span class="style_7">fSample</span><span class="style_6">,&nbsp;</span><span class="style_7">channel</span><span class="style_6">,&nbsp;</span><span class="style_7">squelch</span><span class="style_6">,&nbsp;</span><span class="style_7">plotgraph</span><span class="style_6">)</span><br /> <span class="style_1">%</span><br /> <span class="style_1">%&nbsp;George&nbsp;Smart</span><br /> <span class="style_1">%&nbsp;Department&nbsp;of&nbsp;Electronic&nbsp;&amp;&nbsp;Electrical&nbsp;Engineering</span><br /> <span class="style_1">%&nbsp;University&nbsp;College&nbsp;London</span><br /> <span class="style_1">%</span><br /> <span class="style_1">%&nbsp;What&nbsp;it&nbsp;does:</span><br /> <span class="style_1">%&nbsp;This&nbsp;function&nbsp;takes&nbsp;the&nbsp;following&nbsp;variables,&nbsp;and&nbsp;decided&nbsp;if&nbsp;within&nbsp;the</span><br /> <span class="style_1">%&nbsp;specified&nbsp;parameters,&nbsp;the&nbsp;channel&nbsp;given&nbsp;is&nbsp;busy.</span><br /> <span class="style_1">%</span><br /> <span class="style_1">%&nbsp;Inputs:</span><br /> <span class="style_1">%&nbsp;&nbsp;&nbsp;waveform&nbsp;(an&nbsp;array&nbsp;of&nbsp;sample&nbsp;values)</span><br /> <span class="style_1">%&nbsp;&nbsp;&nbsp;fSample&nbsp;(Sampling&nbsp;frequency&nbsp;in&nbsp;Hz)</span><br /> <span class="style_1">%&nbsp;&nbsp;&nbsp;channel&nbsp;(ZigBee&nbsp;channel,&nbsp;11-26)</span><br /> <span class="style_1">%&nbsp;&nbsp;&nbsp;squelch&nbsp;(Signal&nbsp;Threshold&nbsp;for&nbsp;Busy)</span><br /> <span class="style_1">%&nbsp;&nbsp;&nbsp;plotgraph&nbsp;(true&nbsp;if&nbsp;the&nbsp;user&nbsp;would&nbsp;like&nbsp;a&nbsp;graph&nbsp;plotted&nbsp;showing&nbsp;details,</span><br /> <span class="style_1">%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;false&nbsp;if&nbsp;not)</span><br /> <span class="style_1">%</span><br /> <span class="style_1">%&nbsp;Outputs:</span><br /> <span class="style_1">%&nbsp;&nbsp;&nbsp;busy&nbsp;(1=busy,&nbsp;0=clear)</span><br /> <br /> <span class="style_1">%%&nbsp;Preliminary&nbsp;Tests</span><br /> <span class="style_1">%&nbsp;Check&nbsp;for&nbsp;sensible&nbsp;channel&nbsp;number</span><br /> <span class="style_1">%&nbsp;ZigBee&nbsp;channels&nbsp;are&nbsp;in&nbsp;the&nbsp;range&nbsp;11&nbsp;to&nbsp;26&nbsp;-&nbsp;This&nbsp;Script&nbsp;works&nbsp;only&nbsp;for</span><br /> <span class="style_1">%&nbsp;channels&nbsp;11-15,&nbsp;for&nbsp;proof&nbsp;of&nbsp;concept.&nbsp;If&nbsp;sampling&nbsp;was&nbsp;adjusted&nbsp;it&nbsp;would</span><br /> <span class="style_1">%&nbsp;cope&nbsp;with&nbsp;all&nbsp;channels&nbsp;easily.</span><br /> <span class="style_4">if&nbsp;</span><span class="style_6">((</span><span class="style_7">channel&nbsp;</span><span class="style_6">&gt;&nbsp;</span><span class="style_3">15</span><span class="style_6">)&nbsp;</td><td>&nbsp;(</span><span class="style_7">channel&nbsp;</span><span class="style_6">&lt;&nbsp;</span><span class="style_3">11</span><span class="style_6">))</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">error</span><span class="style_6">(</span><span class="style_5">'zigbee:InvalidChannel'</span><span class="style_6">,</span><span class="style_5">'Valid&nbsp;Channels&nbsp;Range&nbsp;from&nbsp;11&nbsp;to&nbsp;15&nbsp;for&nbsp;this&nbsp;example&nbsp;function'</span><span class="style_6">)</span><br /> <span class="style_4">end</span><br /> <br /> <span class="style_1">%&nbsp;Discard&nbsp;Sample&nbsp;Time&nbsp;data&nbsp;(throw&nbsp;away&nbsp;column&nbsp;1/keep&nbsp;column&nbsp;2)</span><br /> <span class="style_7">waveform</span><span class="style_6">=</span><span class="style_7">waveform</span><span class="style_6">(:,</span><span class="style_3">2</span><span class="style_6">);</span><br /> <br /> <span class="style_1">%%&nbsp;Compute&nbsp;Frequency&nbsp;Ranges&nbsp;for&nbsp;Filtering</span><br /> <span class="style_1">%&nbsp;Calculate&nbsp;the&nbsp;IF&nbsp;Frequency&nbsp;for&nbsp;given&nbsp;channel&nbsp;(in&nbsp;Hz)</span><br /> <span class="style_7">fCarrier&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_3">20e6&nbsp;</span><span class="style_6">+&nbsp;</span><span class="style_3">5e6</span><span class="style_6">*(</span><span class="style_7">channel&nbsp;</span><span class="style_6">-&nbsp;</span><span class="style_3">11</span><span class="style_6">);&nbsp;</span><span class="style_1">%&nbsp;Set&nbsp;Filter&nbsp;Bandwidth&nbsp;in&nbsp;Hz</span><br /> <span class="style_7">FilterBandwidth&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_3">2.5e6</span><span class="style_6">;&nbsp;</span><span class="style_1">%&nbsp;Calculate&nbsp;the&nbsp;number&nbsp;of&nbsp;samples</span><br /> <span class="style_7">Samples</span><span class="style_6">=</span><span class="style_7">length</span><span class="style_6">(</span><span class="style_7">waveform</span><span class="style_6">);&nbsp;</span><span class="style_1">%&nbsp;Calculate&nbsp;Frequency&nbsp;Vector&nbsp;-&nbsp;Defines&nbsp;the&nbsp;frequency&nbsp;each&nbsp;sample&nbsp;in&nbsp;the&nbsp;FFT&nbsp;relates&nbsp;to.</span><br /> <span class="style_7">fVector</span><span class="style_6">=<a href="(-</span><span">class="style_7">fSample</span><span class="style_6">/</span><span class="style_3">2</span><span class="style_6">):(</span><span class="style_7">fSample</span><span class="style_6">/</span><span class="style_7">Samples</span><span class="style_6">):((</span><span class="style_7">fSample</span><span class="style_6">-</span><span class="style_3">1</span><span class="style_6">)/</span><span class="style_3">2</span><span class="style_6">)</a>;&nbsp;</span><span class="style_1">%Calculate&nbsp;Start&nbsp;and&nbsp;Stop&nbsp;Frequencies&nbsp;for&nbsp;the&nbsp;filter,&nbsp;in&nbsp;both&nbsp;Hz&nbsp;and&nbsp;Normalised&nbsp;(from&nbsp;0&nbsp;to&nbsp;1).</span><br /> <span class="style_7">BandStart&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">fCarrier</span><span class="style_6">-(</span><span class="style_7">FilterBandwidth</span><span class="style_6">/</span><span class="style_3">2</span><span class="style_6">);&nbsp;</span><span class="style_1">%&nbsp;Hz</span><br /> <span class="style_7">BandStop&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">fCarrier</span><span class="style_6">+(</span><span class="style_7">FilterBandwidth</span><span class="style_6">/</span><span class="style_3">2</span><span class="style_6">);</span><br /> <span class="style_7">DigitalStart&nbsp;</span><span class="style_6">=&nbsp;((</span><span class="style_7">BandStart</span><span class="style_6">/</span><span class="style_7">max</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">-</span><span class="style_3">1</span><span class="style_6">))/</span><span class="style_3">2</span><span class="style_6">)+</span><span class="style_3">0.5</span><span class="style_6">;&nbsp;</span><span class="style_1">%&nbsp;normalised</span><br /> <span class="style_7">DigitalStop&nbsp;</span><span class="style_6">=&nbsp;((</span><span class="style_7">BandStop</span><span class="style_6">/</span><span class="style_7">max</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">-</span><span class="style_3">1</span><span class="style_6">))/</span><span class="style_3">2</span><span class="style_6">)+</span><span class="style_3">0.5</span><span class="style_6">;</span><br /> <br /> <span class="style_1">%%&nbsp;Compute&nbsp;Fast-Fourier&nbsp;Transform</span><br /> <span class="style_1">%&nbsp;Execute&nbsp;a&nbsp;Fast&nbsp;Fourier&nbsp;Transform&nbsp;on&nbsp;input&nbsp;waveform</span><br /> <span class="style_7">dataFFT&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">fft</span><span class="style_6">(</span><span class="style_7">waveform</span><span class="style_6">);</span><br /> <span class="style_1">%&nbsp;Shift&nbsp;the&nbsp;resulting&nbsp;FFT&nbsp;from&nbsp;0-2Fs&nbsp;to&nbsp;-Fs/2&nbsp;to&nbsp;Fs/2,&nbsp;to&nbsp;resemble&nbsp;continuous&nbsp;transform&nbsp;results.</span><br /> <span class="style_7">dataFFT&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">fftshift</span><span class="style_6">(</span><span class="style_7">dataFFT</span><span class="style_6">);</span><br /> <span class="style_1">%&nbsp;Find&nbsp;the&nbsp;magnitude&nbsp;of&nbsp;he&nbsp;FFT</span><br /> <span class="style_7">dataFFT&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">abs</span><span class="style_6">(</span><span class="style_7">dataFFT</span><span class="style_6">);</span><br /> <br /> <span class="style_1">%%&nbsp;Create&nbsp;and&nbsp;Filter&nbsp;Signal&nbsp;Based&nbsp;on&nbsp;Calculations</span><br /> <span class="style_1">%&nbsp;Define&nbsp;a&nbsp;normalised&nbsp;500&nbsp;order&nbsp;finite&nbsp;impulse&nbsp;response&nbsp;filter</span><br /> <span class="style_7">PassBand&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">fir1&nbsp;</span><span class="style_6">(</span><span class="style_3">500</span><span class="style_6">,&nbsp;<a href="</span><span">class="style_7">DigitalStart&nbsp;DigitalStop</span><span class="style_6"></a>);</span><br /> <span class="style_1">%&nbsp;Determine&nbsp;the&nbsp;filters&nbsp;transfer&nbsp;function,&nbsp;H(e^jw)</span><br /> <span class="style_7">PassBand&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">freqz</span><span class="style_6">(</span><span class="style_7">PassBand</span><span class="style_6">,</span><span class="style_3">1</span><span class="style_6">,</span><span class="style_7">Samples</span><span class="style_6">);</span><br /> <span class="style_1">%&nbsp;Find&nbsp;the&nbsp;magnitude&nbsp;of&nbsp;the&nbsp;transfer&nbsp;function</span><br /> <span class="style_7">PassBand&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">abs</span><span class="style_6">(</span><span class="style_7">PassBand</span><span class="style_6">);</span><br /> <span class="style_1">%&nbsp;Multiply&nbsp;input&nbsp;data&nbsp;by&nbsp;transfer&nbsp;function,&nbsp;element-wise,&nbsp;to&nbsp;gain&nbsp;filtered</span><br /> <span class="style_1">%&nbsp;data.</span><br /> <span class="style_7">dataFIR&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">dataFFT&nbsp;</span><span class="style_6">.*&nbsp;</span><span class="style_7">PassBand</span><span class="style_6">;</span><br /> <br /> <span class="style_1">%%&nbsp;Scale&nbsp;data&nbsp;for&nbsp;plotting.</span><br /> <span class="style_7">Scale</span><span class="style_6">.</span><span class="style_7">Ref&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_3">0</span><span class="style_6">;</span><br /> <span class="style_7">Scale</span><span class="style_6">.</span><span class="style_7">Div&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_3">0.49</span><span class="style_6">;</span><br /> <span class="style_7">Datum</span><span class="style_6">.</span><span class="style_7">Ref&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_3">12</span><span class="style_6">;</span><br /> <span class="style_7">Datum</span><span class="style_6">.</span><span class="style_7">Div&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_3">1</span><span class="style_6">;</span><br /> <br /> <span class="style_1">%&nbsp;Load&nbsp;data&nbsp;from&nbsp;file</span><br /> <span class="style_7">CalData&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">load</span><span class="style_6">(</span><span class="style_5">'CalibrationData.mat'</span><span class="style_6">);</span><br /> <br /> <span class="style_1">%&nbsp;Load&nbsp;cal&nbsp;data&nbsp;into&nbsp;structure</span><br /> <span class="style_1">%sine.a&nbsp;level</span><br /> <span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">a&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">ones</span><span class="style_6">(</span><span class="style_7">size</span><span class="style_6">(</span><span class="style_7">dataFFT</span><span class="style_6">))&nbsp;.*&nbsp;(</span><span class="style_3">10&nbsp;</span><span class="style_6">.*&nbsp;</span><span class="style_7">log10</span><span class="style_6">(</span><span class="style_7">max</span><span class="style_6">(</span><span class="style_7">abs</span><span class="style_6">(</span><span class="style_7">fftshift</span><span class="style_6">(</span><span class="style_7">fft</span><span class="style_6">(</span><span class="style_7">CalData</span><span class="style_6">.</span><span class="style_7">sine_00dBm</span><span class="style_6">(:,</span><span class="style_3">2</span><span class="style_6">))))))/</span><span class="style_7">Scale</span><span class="style_6">.</span><span class="style_7">Div</span><span class="style_6">)-</span><span class="style_7">Scale</span><span class="style_6">.</span><span class="style_7">Ref</span><span class="style_6">;</span><br /> <span class="style_7">YmaxFFT&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">max</span><span class="style_6">(</span><span class="style_3">20</span><span class="style_6">*</span><span class="style_7">log10</span><span class="style_6">((</span><span class="style_7">dataFFT</span><span class="style_6">)));</span><br /> <span class="style_1">%&nbsp;find&nbsp;maximum&nbsp;y&nbsp;values</span><br /> <span class="style_7">YmaxFIR&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">max</span><span class="style_6">(</span><span class="style_3">20</span><span class="style_6">*</span><span class="style_7">log10</span><span class="style_6">((</span><span class="style_7">dataFIR</span><span class="style_6">)));</span><br /> <span class="style_7">YminFFT&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">min</span><span class="style_6">(</span><span class="style_3">20</span><span class="style_6">*</span><span class="style_7">log10</span><span class="style_6">((</span><span class="style_7">dataFFT</span><span class="style_6">)));</span><br /> <span class="style_1">%&nbsp;find&nbsp;minimum&nbsp;y&nbsp;values</span><br /> <span class="style_7">YminFIR&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">min</span><span class="style_6">(</span><span class="style_3">20</span><span class="style_6">*</span><span class="style_7">log10</span><span class="style_6">((</span><span class="style_7">dataFIR</span><span class="style_6">)));</span><br /> <span class="style_7">squ&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">ones</span><span class="style_6">(</span><span class="style_7">size</span><span class="style_6">(</span><span class="style_7">dataFFT</span><span class="style_6">))&nbsp;.*&nbsp;</span><span class="style_7">squelch</span><span class="style_6">;</span><br /> <span class="style_4">if&nbsp;</span><span class="style_6">(</span><span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">a&nbsp;</span><span class="style_6">&gt;&nbsp;</span><span class="style_7">YmaxFFT</span><span class="style_6">),&nbsp;</span><span class="style_7">YmaxFFT&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">a</span><span class="style_6">;&nbsp;</span><span class="style_4">end&nbsp;</span><span class="style_1">%&nbsp;keep&nbsp;0dBm&nbsp;as&nbsp;Reference</span><br /> <span class="style_4">if&nbsp;</span><span class="style_6">(</span><span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">a&nbsp;</span><span class="style_6">&gt;&nbsp;</span><span class="style_7">YmaxFIR</span><span class="style_6">),&nbsp;</span><span class="style_7">YmaxFIR&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">a</span><span class="style_6">;&nbsp;</span><span class="style_4">end</span><br /> <br /> <span class="style_1">%%&nbsp;Plot&nbsp;Results&nbsp;if&nbsp;Required&nbsp;(plot=true)</span><br /> <span class="style_4">if&nbsp;</span><span class="style_6">(</span><span class="style_7">plotgraph&nbsp;</span><span class="style_6">==&nbsp;</span><span class="style_7">true</span><span class="style_6">)&nbsp;</span><br /> <span class="style_1">%&nbsp;Create&nbsp;a&nbsp;dataset&nbsp;of&nbsp;the&nbsp;right&nbsp;size&nbsp;and&nbsp;level,&nbsp;from&nbsp;each&nbsp;of&nbsp;the&nbsp;calibration&nbsp;values.</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">a&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">ones</span><span class="style_6">(</span><span class="style_7">size</span><span class="style_6">(</span><span class="style_7">dataFFT</span><span class="style_6">))&nbsp;.*&nbsp;(</span><span class="style_3">10&nbsp;</span><span class="style_6">.*&nbsp;</span><span class="style_7">log10</span><span class="style_6">(</span><span class="style_7">max</span><span class="style_6">(</span><span class="style_7">abs</span><span class="style_6">(</span><span class="style_7">fftshift</span><span class="style_6">(</span><span class="style_7">fft</span><span class="style_6">(</span><span class="style_7">CalData</span><span class="style_6">.</span><span class="style_7">sine_00dBm</span><span class="style_6">(:,</span><span class="style_3">2</span><span class="style_6">))))))/</span><span class="style_7">Scale</span><span class="style_6">.</span><span class="style_7">Div</span><span class="style_6">)-</span><span class="style_7">Scale</span><span class="style_6">.</span><span class="style_7">Ref</span><span class="style_6">;</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">b&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">ones</span><span class="style_6">(</span><span class="style_7">size</span><span class="style_6">(</span><span class="style_7">dataFFT</span><span class="style_6">))&nbsp;.*&nbsp;(</span><span class="style_3">10&nbsp;</span><span class="style_6">.*&nbsp;</span><span class="style_7">log10</span><span class="style_6">(</span><span class="style_7">max</span><span class="style_6">(</span><span class="style_7">abs</span><span class="style_6">(</span><span class="style_7">fftshift</span><span class="style_6">(</span><span class="style_7">fft</span><span class="style_6">(</span><span class="style_7">CalData</span><span class="style_6">.</span><span class="style_7">sine_05dBm</span><span class="style_6">(:,</span><span class="style_3">2</span><span class="style_6">))))))/</span><span class="style_7">Scale</span><span class="style_6">.</span><span class="style_7">Div</span><span class="style_6">)-</span><span class="style_7">Scale</span><span class="style_6">.</span><span class="style_7">Ref</span><span class="style_6">;</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">c&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">ones</span><span class="style_6">(</span><span class="style_7">size</span><span class="style_6">(</span><span class="style_7">dataFFT</span><span class="style_6">))&nbsp;.*&nbsp;(</span><span class="style_3">10&nbsp;</span><span class="style_6">.*&nbsp;</span><span class="style_7">log10</span><span class="style_6">(</span><span class="style_7">max</span><span class="style_6">(</span><span class="style_7">abs</span><span class="style_6">(</span><span class="style_7">fftshift</span><span class="style_6">(</span><span class="style_7">fft</span><span class="style_6">(</span><span class="style_7">CalData</span><span class="style_6">.</span><span class="style_7">sine_10dBm</span><span class="style_6">(:,</span><span class="style_3">2</span><span class="style_6">))))))/</span><span class="style_7">Scale</span><span class="style_6">.</span><span class="style_7">Div</span><span class="style_6">)-</span><span class="style_7">Scale</span><span class="style_6">.</span><span class="style_7">Ref</span><span class="style_6">;</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">d&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">ones</span><span class="style_6">(</span><span class="style_7">size</span><span class="style_6">(</span><span class="style_7">dataFFT</span><span class="style_6">))&nbsp;.*&nbsp;(</span><span class="style_3">10&nbsp;</span><span class="style_6">.*&nbsp;</span><span class="style_7">log10</span><span class="style_6">(</span><span class="style_7">max</span><span class="style_6">(</span><span class="style_7">abs</span><span class="style_6">(</span><span class="style_7">fftshift</span><span class="style_6">(</span><span class="style_7">fft</span><span class="style_6">(</span><span class="style_7">CalData</span><span class="style_6">.</span><span class="style_7">sine_15dBm</span><span class="style_6">(:,</span><span class="style_3">2</span><span class="style_6">))))))/</span><span class="style_7">Scale</span><span class="style_6">.</span><span class="style_7">Div</span><span class="style_6">)-</span><span class="style_7">Scale</span><span class="style_6">.</span><span class="style_7">Ref</span><span class="style_6">;</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">e&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">ones</span><span class="style_6">(</span><span class="style_7">size</span><span class="style_6">(</span><span class="style_7">dataFFT</span><span class="style_6">))&nbsp;.*&nbsp;(</span><span class="style_3">10&nbsp;</span><span class="style_6">.*&nbsp;</span><span class="style_7">log10</span><span class="style_6">(</span><span class="style_7">max</span><span class="style_6">(</span><span class="style_7">abs</span><span class="style_6">(</span><span class="style_7">fftshift</span><span class="style_6">(</span><span class="style_7">fft</span><span class="style_6">(</span><span class="style_7">CalData</span><span class="style_6">.</span><span class="style_7">sine_20dBm</span><span class="style_6">(:,</span><span class="style_3">2</span><span class="style_6">))))))/</span><span class="style_7">Scale</span><span class="style_6">.</span><span class="style_7">Div</span><span class="style_6">)-</span><span class="style_7">Scale</span><span class="style_6">.</span><span class="style_7">Ref</span><span class="style_6">;</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">f&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">ones</span><span class="style_6">(</span><span class="style_7">size</span><span class="style_6">(</span><span class="style_7">dataFFT</span><span class="style_6">))&nbsp;.*&nbsp;(</span><span class="style_3">10&nbsp;</span><span class="style_6">.*&nbsp;</span><span class="style_7">log10</span><span class="style_6">(</span><span class="style_7">max</span><span class="style_6">(</span><span class="style_7">abs</span><span class="style_6">(</span><span class="style_7">fftshift</span><span class="style_6">(</span><span class="style_7">fft</span><span class="style_6">(</span><span class="style_7">CalData</span><span class="style_6">.</span><span class="style_7">sine_25dBm</span><span class="style_6">(:,</span><span class="style_3">2</span><span class="style_6">))))))/</span><span class="style_7">Scale</span><span class="style_6">.</span><span class="style_7">Div</span><span class="style_6">)-</span><span class="style_7">Scale</span><span class="style_6">.</span><span class="style_7">Ref</span><span class="style_6">;</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">g&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">ones</span><span class="style_6">(</span><span class="style_7">size</span><span class="style_6">(</span><span class="style_7">dataFFT</span><span class="style_6">))&nbsp;.*&nbsp;(</span><span class="style_3">10&nbsp;</span><span class="style_6">.*&nbsp;</span><span class="style_7">log10</span><span class="style_6">(</span><span class="style_7">max</span><span class="style_6">(</span><span class="style_7">abs</span><span class="style_6">(</span><span class="style_7">fftshift</span><span class="style_6">(</span><span class="style_7">fft</span><span class="style_6">(</span><span class="style_7">CalData</span><span class="style_6">.</span><span class="style_7">sine_30dBm</span><span class="style_6">(:,</span><span class="style_3">2</span><span class="style_6">))))))/</span><span class="style_7">Scale</span><span class="style_6">.</span><span class="style_7">Div</span><span class="style_6">)-</span><span class="style_7">Scale</span><span class="style_6">.</span><span class="style_7">Ref</span><span class="style_6">;</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">h&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">ones</span><span class="style_6">(</span><span class="style_7">size</span><span class="style_6">(</span><span class="style_7">dataFFT</span><span class="style_6">))&nbsp;.*&nbsp;(</span><span class="style_3">10&nbsp;</span><span class="style_6">.*&nbsp;</span><span class="style_7">log10</span><span class="style_6">(</span><span class="style_7">max</span><span class="style_6">(</span><span class="style_7">abs</span><span class="style_6">(</span><span class="style_7">fftshift</span><span class="style_6">(</span><span class="style_7">fft</span><span class="style_6">(</span><span class="style_7">CalData</span><span class="style_6">.</span><span class="style_7">sine_35dBm</span><span class="style_6">(:,</span><span class="style_3">2</span><span class="style_6">))))))/</span><span class="style_7">Scale</span><span class="style_6">.</span><span class="style_7">Div</span><span class="style_6">)-</span><span class="style_7">Scale</span><span class="style_6">.</span><span class="style_7">Ref</span><span class="style_6">;</span><br /> <br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_1">%&nbsp;Render&nbsp;Graphs</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_1">%&nbsp;Plot&nbsp;Filter&nbsp;PassBand</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">figure</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">LogPassBand&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_3">10</span><span class="style_6">*</span><span class="style_7">log10</span><span class="style_6">(</span><span class="style_7">PassBand</span><span class="style_6">);</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">plot</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">/</span><span class="style_3">1e6</span><span class="style_6">,&nbsp;</span><span class="style_7">LogPassBand</span><span class="style_6">,&nbsp;</span><span class="style_5">'r'</span><span class="style_6">)</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">axis</span><span class="style_6">(<a href="</span><span">class="style_3">0&nbsp;</span><span class="style_7">max</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">)/</span><span class="style_3">1e6&nbsp;</span><span class="style_6">(</span><span class="style_7">min</span><span class="style_6">(</span><span class="style_7">LogPassBand</span><span class="style_6">)-</span><span class="style_7">max</span><span class="style_6">(</span><span class="style_7">LogPassBand</span><span class="style_6">))&nbsp;</span><span class="style_3">0</span><span class="style_6"></a>);&nbsp;</span><span class="style_1">%&nbsp;scale&nbsp;the&nbsp;graph&nbsp;nicely&nbsp;:)</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">title</span><span class="style_6">(</span><span class="style_5">'Digital&nbsp;Filter&nbsp;PassBand'</span><span class="style_6">);&nbsp;</span><span class="style_1">%&nbsp;"Always&nbsp;title&nbsp;graphs"</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">xlabel</span><span class="style_6">(</span><span class="style_5">'Frequency&nbsp;/&nbsp;MHz'</span><span class="style_6">);&nbsp;</span><span class="style_1">%&nbsp;"...&nbsp;and&nbsp;label&nbsp;axis"</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">ylabel</span><span class="style_6">(</span><span class="style_5">'Filter&nbsp;Gain&nbsp;/&nbsp;dB'</span><span class="style_6">);</span><br /> <br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_1">%&nbsp;Plot&nbsp;Spectrum,&nbsp;etc.</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">figure</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_1">%&nbsp;Load&nbsp;a&nbsp;new&nbsp;figure</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">subplot</span><span class="style_6">(</span><span class="style_3">2</span><span class="style_6">,&nbsp;</span><span class="style_3">1</span><span class="style_6">,&nbsp;</span><span class="style_3">1</span><span class="style_6">);</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_1">%&nbsp;First&nbsp;of&nbsp;two&nbsp;vertically&nbsp;stacked&nbsp;graphs</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">plot</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">/</span><span class="style_3">1e6</span><span class="style_6">,&nbsp;</span><span class="style_3">20</span><span class="style_6">*</span><span class="style_7">log10</span><span class="style_6">(</span><span class="style_7">dataFFT</span><span class="style_6">)-</span><span class="style_7">YmaxFFT</span><span class="style_6">+</span><span class="style_7">Datum</span><span class="style_6">.</span><span class="style_7">Ref</span><span class="style_6">);&nbsp;</span><span class="style_1">%&nbsp;plot&nbsp;fft&nbsp;of&nbsp;unfiltered&nbsp;data</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">hold&nbsp;on</span><span class="style_6">;&nbsp;</span><span class="style_1">%&nbsp;Plot&nbsp;calibration&nbsp;lines&nbsp;over&nbsp;the&nbsp;FFT</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">plot</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">/</span><span class="style_3">1e6</span><span class="style_6">,&nbsp;</span><span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">a</span><span class="style_6">-</span><span class="style_7">YmaxFFT</span><span class="style_6">,&nbsp;</span><span class="style_5">'r'</span><span class="style_6">);</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">plot</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">/</span><span class="style_3">1e6</span><span class="style_6">,&nbsp;</span><span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">b</span><span class="style_6">-</span><span class="style_7">YmaxFFT</span><span class="style_6">,&nbsp;</span><span class="style_5">'r'</span><span class="style_6">);</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">plot</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">/</span><span class="style_3">1e6</span><span class="style_6">,&nbsp;</span><span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">c</span><span class="style_6">-</span><span class="style_7">YmaxFFT</span><span class="style_6">,&nbsp;</span><span class="style_5">'r'</span><span class="style_6">);</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">plot</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">/</span><span class="style_3">1e6</span><span class="style_6">,&nbsp;</span><span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">d</span><span class="style_6">-</span><span class="style_7">YmaxFFT</span><span class="style_6">,&nbsp;</span><span class="style_5">'r'</span><span class="style_6">);</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">plot</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">/</span><span class="style_3">1e6</span><span class="style_6">,&nbsp;</span><span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">e</span><span class="style_6">-</span><span class="style_7">YmaxFFT</span><span class="style_6">,&nbsp;</span><span class="style_5">'r'</span><span class="style_6">);</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">plot</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">/</span><span class="style_3">1e6</span><span class="style_6">,&nbsp;</span><span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">f</span><span class="style_6">-</span><span class="style_7">YmaxFFT</span><span class="style_6">,&nbsp;</span><span class="style_5">'r'</span><span class="style_6">);</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">plot</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">/</span><span class="style_3">1e6</span><span class="style_6">,&nbsp;</span><span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">g</span><span class="style_6">-</span><span class="style_7">YmaxFFT</span><span class="style_6">,&nbsp;</span><span class="style_5">'r'</span><span class="style_6">);</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">plot</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">/</span><span class="style_3">1e6</span><span class="style_6">,&nbsp;</span><span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">h</span><span class="style_6">-</span><span class="style_7">YmaxFFT</span><span class="style_6">,&nbsp;</span><span class="style_5">'r'</span><span class="style_6">);</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">plot</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">/</span><span class="style_3">1e6</span><span class="style_6">,&nbsp;</span><span class="style_7">squ</span><span class="style_6">,&nbsp;</span><span class="style_5">'g'</span><span class="style_6">);</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">axis</span><span class="style_6">(<a href="</span><span">class="style_3">0&nbsp;</span><span class="style_7">max</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">)/</span><span class="style_3">1e6&nbsp;</span><span class="style_6">(</span><span class="style_7">YminFFT</span><span class="style_6">(</span><span class="style_3">1</span><span class="style_6">)-</span><span class="style_7">YmaxFFT</span><span class="style_6">(</span><span class="style_3">1</span><span class="style_6">))&nbsp;</span><span class="style_3">0</span><span class="style_6"></a>);&nbsp;</span><span class="style_1">%&nbsp;scale&nbsp;the&nbsp;graph&nbsp;nicely&nbsp;:)</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">title</span><span class="style_6">(</span><span class="style_5">'Frequency&nbsp;Content&nbsp;of&nbsp;Input&nbsp;Spectrum'</span><span class="style_6">);&nbsp;</span><span class="style_1">%&nbsp;"Always&nbsp;title&nbsp;graphs"</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">xlabel</span><span class="style_6">(</span><span class="style_5">'Frequency&nbsp;/&nbsp;MHz'</span><span class="style_6">);&nbsp;</span><span class="style_1">%&nbsp;"...&nbsp;and&nbsp;label&nbsp;axis"</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">ylabel</span><span class="style_6">(</span><span class="style_5">'Power&nbsp;/&nbsp;dBm'</span><span class="style_6">);</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">subplot</span><span class="style_6">(</span><span class="style_3">2</span><span class="style_6">,&nbsp;</span><span class="style_3">1</span><span class="style_6">,&nbsp;</span><span class="style_3">2</span><span class="style_6">);</span><br /> <br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_1">%&nbsp;Second&nbsp;of&nbsp;two&nbsp;vertically&nbsp;stacked&nbsp;graphs</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">plot</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">/</span><span class="style_3">1e6</span><span class="style_6">,&nbsp;</span><span class="style_3">20</span><span class="style_6">*</span><span class="style_7">log10</span><span class="style_6">(</span><span class="style_7">dataFIR</span><span class="style_6">)-</span><span class="style_7">YmaxFIR</span><span class="style_6">+</span><span class="style_7">Datum</span><span class="style_6">.</span><span class="style_7">Ref</span><span class="style_6">);&nbsp;</span><span class="style_1">%&nbsp;plot&nbsp;fft&nbsp;of&nbsp;unfiltered&nbsp;data</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">hold&nbsp;on</span><span class="style_6">;&nbsp;</span><span class="style_1">%&nbsp;Plot&nbsp;calibration&nbsp;lines&nbsp;over&nbsp;the&nbsp;FFT</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">plot</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">/</span><span class="style_3">1e6</span><span class="style_6">,&nbsp;</span><span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">a</span><span class="style_6">-</span><span class="style_7">YmaxFIR</span><span class="style_6">,&nbsp;</span><span class="style_5">'r'</span><span class="style_6">);</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">plot</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">/</span><span class="style_3">1e6</span><span class="style_6">,&nbsp;</span><span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">b</span><span class="style_6">-</span><span class="style_7">YmaxFIR</span><span class="style_6">,&nbsp;</span><span class="style_5">'r'</span><span class="style_6">);</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">plot</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">/</span><span class="style_3">1e6</span><span class="style_6">,&nbsp;</span><span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">c</span><span class="style_6">-</span><span class="style_7">YmaxFIR</span><span class="style_6">,&nbsp;</span><span class="style_5">'r'</span><span class="style_6">);</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">plot</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">/</span><span class="style_3">1e6</span><span class="style_6">,&nbsp;</span><span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">d</span><span class="style_6">-</span><span class="style_7">YmaxFIR</span><span class="style_6">,&nbsp;</span><span class="style_5">'r'</span><span class="style_6">);</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">plot</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">/</span><span class="style_3">1e6</span><span class="style_6">,&nbsp;</span><span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">e</span><span class="style_6">-</span><span class="style_7">YmaxFIR</span><span class="style_6">,&nbsp;</span><span class="style_5">'r'</span><span class="style_6">);</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">plot</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">/</span><span class="style_3">1e6</span><span class="style_6">,&nbsp;</span><span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">f</span><span class="style_6">-</span><span class="style_7">YmaxFIR</span><span class="style_6">,&nbsp;</span><span class="style_5">'r'</span><span class="style_6">);</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">plot</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">/</span><span class="style_3">1e6</span><span class="style_6">,&nbsp;</span><span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">g</span><span class="style_6">-</span><span class="style_7">YmaxFIR</span><span class="style_6">,&nbsp;</span><span class="style_5">'r'</span><span class="style_6">);</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">plot</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">/</span><span class="style_3">1e6</span><span class="style_6">,&nbsp;</span><span class="style_7">sine</span><span class="style_6">.</span><span class="style_7">h</span><span class="style_6">-</span><span class="style_7">YmaxFIR</span><span class="style_6">,&nbsp;</span><span class="style_5">'r'</span><span class="style_6">);</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">plot</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">/</span><span class="style_3">1e6</span><span class="style_6">,&nbsp;</span><span class="style_7">squ</span><span class="style_6">,&nbsp;</span><span class="style_5">'g'</span><span class="style_6">);</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">axis</span><span class="style_6">(<a href="</span><span">class="style_3">0&nbsp;</span><span class="style_7">max</span><span class="style_6">(</span><span class="style_7">fVector</span><span class="style_6">)/</span><span class="style_3">1e6&nbsp;</span><span class="style_6">(</span><span class="style_7">YminFIR</span><span class="style_6">(</span><span class="style_3">1</span><span class="style_6">)-</span><span class="style_7">YmaxFIR</span><span class="style_6">(</span><span class="style_3">1</span><span class="style_6">))&nbsp;</span><span class="style_3">0</span><span class="style_6"></a>);&nbsp;</span><span class="style_1">%&nbsp;scale&nbsp;the&nbsp;graph&nbsp;nicely&nbsp;:)</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">title</span><span class="style_6">(</span><span class="style_5">'Frequency&nbsp;Content&nbsp;of&nbsp;Filtered&nbsp;Spectrum'</span><span class="style_6">);&nbsp;</span><span class="style_1">%&nbsp;"Always&nbsp;title&nbsp;graphs"</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">xlabel</span><span class="style_6">(</span><span class="style_5">'Frequency&nbsp;/&nbsp;MHz'</span><span class="style_6">);&nbsp;</span><span class="style_1">%&nbsp;"...&nbsp;and&nbsp;label&nbsp;axis"</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">ylabel</span><span class="style_6">(</span><span class="style_5">'Power&nbsp;/&nbsp;dBm'</span><span class="style_6">);</span><br /> <span class="style_4">end</span><br /> <br /> <span class="style_1">%%&nbsp;Analyse&nbsp;Filtered&nbsp;Data</span><br /> <span class="style_1">%&nbsp;Find&nbsp;the&nbsp;peak&nbsp;value&nbsp;of&nbsp;the&nbsp;filtered&nbsp;data&nbsp;plot.</span><br /> <span class="style_7">maxValue&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_7">max</span><span class="style_6">(</span><span class="style_3">20</span><span class="style_6">*</span><span class="style_7">log10</span><span class="style_6">(</span><span class="style_7">dataFIR</span><span class="style_6">)-</span><span class="style_7">YmaxFIR</span><span class="style_6">+</span><span class="style_7">Datum</span><span class="style_6">.</span><span class="style_7">Ref</span><span class="style_6">);</span><br /> <span class="style_1">%&nbsp;If&nbsp;we&nbsp;exceed&nbsp;the&nbsp;signalThreshold,&nbsp;channel&nbsp;is&nbsp;busy,&nbsp;else,&nbsp;it&nbsp;isnt!</span><br /> <span class="style_4">if&nbsp;</span><span class="style_6">(</span><span class="style_7">maxValue&nbsp;</span><span class="style_6">&gt;&nbsp;</span><span class="style_7">squelch</span><span class="style_6">)</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">busy&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_3">1</span><span class="style_6">;</span><br /> <span class="style_4">else</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">busy&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_3">0</span><span class="style_6">;</span><br /> <span class="style_4">end</span><br /> <span class="style_4">end</span><br /> </p> </body> </html> <h2>scan</h2> The scan function takes 4 arguments; waveform, fSample, squelch, and plotgraph. The channel argument is swept automatically by the function. <html> <head> <meta name="generator" content="Geany 0.18" /> <meta name="date" content="2010-10-09T00:58:12+0100"> <style type="text/css"> .style_1 { color: #808080; background-color: #ffffff; } .style_3 { color: #007f00; background-color: #ffffff; } .style_4 { color: #001a7f; background-color: #ffffff; font-weight: bold; } .style_5 { color: #ff901e; background-color: #ffffff; } .style_6 { color: #301010; background-color: #ffffff; } .style_7 { color: #000000; background-color: #ffffff; } </style> </head> <body> <p> <span class="style_4">function&nbsp;</span><span class="style_7">scan</span><span class="style_6">(</span><span class="style_7">waveform</span><span class="style_6">,&nbsp;</span><span class="style_7">fSample</span><span class="style_6">,&nbsp;</span><span class="style_7">squelch</span><span class="style_6">,&nbsp;</span><span class="style_7">plot</span><span class="style_6">)</span><br /> <span class="style_1">%</span><br /> <span class="style_1">%&nbsp;George&nbsp;Smart</span><br /> <span class="style_1">%&nbsp;Department&nbsp;of&nbsp;Electronic&nbsp;&amp;&nbsp;Electrical&nbsp;Engineering</span><br /> <span class="style_1">%&nbsp;University&nbsp;College&nbsp;London</span><br /> <span class="style_1">%</span><br /> <span class="style_1">%&nbsp;What&nbsp;it&nbsp;does:</span><br /> <span class="style_1">%&nbsp;This&nbsp;function&nbsp;takes&nbsp;the&nbsp;following&nbsp;variables,&nbsp;and&nbsp;prints&nbsp;out&nbsp;if&nbsp;each</span><br /> <span class="style_1">%&nbsp;channel&nbsp;is&nbsp;either&nbsp;clear&nbsp;or&nbsp;busy.</span><br /> <span class="style_1">%</span><br /> <span class="style_1">%&nbsp;Inputs:</span><br /> <span class="style_1">%&nbsp;&nbsp;&nbsp;waveform&nbsp;(an&nbsp;array&nbsp;of&nbsp;sample&nbsp;values)</span><br /> <span class="style_1">%&nbsp;&nbsp;&nbsp;fSample&nbsp;&nbsp;(Sampling&nbsp;frequency&nbsp;in&nbsp;Hz)</span><br /> <span class="style_1">%&nbsp;&nbsp;&nbsp;squelch&nbsp;&nbsp;(Signal&nbsp;Threshold&nbsp;for&nbsp;Busy)</span><br /> <br /> <span class="style_1">%%&nbsp;For&nbsp;Loop</span><br /> <span class="style_4">for&nbsp;</span><span class="style_7">channel&nbsp;</span><span class="style_6">=&nbsp;</span><span class="style_3">11</span><span class="style_6">:</span><span class="style_3">15</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">fprintf</span><span class="style_6">(</span><span class="style_5">'Channel&nbsp;%i:&nbsp;&nbsp;'</span><span class="style_6">,&nbsp;</span><span class="style_7">channel</span><span class="style_6">)</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_4">if&nbsp;</span><span class="style_7">zigbee</span><span class="style_6">(</span><span class="style_7">waveform</span><span class="style_6">,&nbsp;</span><span class="style_7">fSample</span><span class="style_6">,&nbsp;</span><span class="style_7">channel</span><span class="style_6">,&nbsp;</span><span class="style_7">squelch</span><span class="style_6">,&nbsp;</span><span class="style_7">plot</span><span class="style_6">)</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">fprintf</span><span class="style_6">(</span><span class="style_5">'Busy'</span><span class="style_6">)</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_4">else</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style_7">fprintf</span><span class="style_6">(</span><span class="style_5">'Clear'</span><span class="style_6">)</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_4">end</span><br /> &nbsp;&nbsp;&nbsp;<span class="style_7">fprintf</span><span class="style_6">(</span><span class="style_5">'\n'</span><span class="style_6">)&nbsp;</span><br /> <span class="style_4">end</span> </p> </body> </html> <h1>The Lab</h1> Here are a few photographs of the lab this work was carried out in. Click for more image options. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Lab_1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Lab_1.jpg" width="800" alt="Lab Photo 1" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Lab_2.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/Dissertation_Lab_2.jpg" width="800" alt="Lab Photo 2" class="aligncenter"></a> <b>FIXME_Category :Computers</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Academic</b> 432MHz Yagi http://new.george-smart.co.uk/432mhz_yagi 0 2012-01-12 14:06:03 closed page closed 2986 432mhz_yagi draft Having got back into VHF SSB with my <a href="http://new.george-smart.co.uk/144mhz_yagi">144MHz Yagi</a> beam, and having used <a href="http://www.webshed.org">Dave Mills (G7UVW)'s</a> 432MHz <a href="http://en.wikipedia.org/wiki/Log-periodic_antenna#ZL_special.5Bcitation_needed.5D">ZL-special</a> for UHF SSB work, I decided to make my own 432 MHz antenna. <h1>Designing</h1> The Yagi was designed using <a href="http://www.k7mem.150m.com/Electronic_Notebook/antennas/yagi_vhf.html">Martin Meserve's VHF/UHF Yagi Antenna Design</a> tools, as with the <a href="http://new.george-smart.co.uk/144mhz_yagi">144MHz Yagi</a>. The beam was designed for a resonant frequency of 432.2000 MHz at a drive impedance of 50&Omega;. This is typical for 70-centimetre SSB operation and is nicely compatible with my <a href="http://new.george-smart.co.uk/yaesu_ft_857d">Yaesu FT-857D</a> that I use for <a href="http://new.george-smart.co.uk/hf_portable">portable operation</a>. The beam was designed with a boom length of 1700 mm, purely as that is what I had laying on the workshop roof; it was square tube with an outside size of 20 mm square. The designed beam has 1 reflector, 1 driven element and 9 director elements, making a total of 11 elements. ARRL standards were adopted for reflector and element spacing, with all elements having an outer diameter of 6.3 mm, again due to this being the metal I had. The design shown below is for a bonded beam, meaning the elements are electrically connected to the boom at the element centre, which is in turn grounded via the coax shield. The estimated gain is 12.059 dBd. The image below shows the design of the beam, and contains both the element length and cumulative spacing - everything you need to have ago! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/70cmYagi_Design.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/70cmYagi_Design.png" width="700" alt="70-centimetre, 11-element Yagi design" class="aligncenter"></a> Note that this diagram is not to scale. <h2>Specifications</h2><table border="1" cellspacing="3" align="center" > <tr><td>Frequency</td><td>Gain</td><td>Horizontal B.W</td><td>Vertical B.W</td><td>Electrical Boom Length</td><td>Boom Diameter</td><td>Element Diameter</td><td>Dimensional Tolerance</td></tr><tr><td>432.2 MHz</td><td>12.059 dBd<br>(14.21 dBi)</td><td>36.3&deg;</td><td>38.2&deg;</td><td>1700 mm</td><td>20.3 mm<br> square tube</td><td>6.3 mm</td><td>2.1 mm</tr> </table> B.W = beam width. Boom must be <i>at least</i> the electrical boom length long. <h1>Making</h1> <h2>Dimensions Table</h2><table border="1" cellspacing="3" align="center" > <tr><td></td><td>Cumulative Spacing (mm)</td><td>Element Length (mm)</td></tr><tr><td><b>REFL</b></td><td>0</td><td>347.72</td></tr><tr><td><b>D.E.*</b></td><td>104.05*</td><td>330.13*</td></tr><tr><td><b>Director 1</b></td><td>149.13</td><td>307.98</td></tr><tr><td><b>Director 2</b></td><td>233.06</td><td>303.82</td></tr><tr><td><b>Director 3</b></td><td>349.60</td><td>299.71</td></tr><tr><td><b>Director 4</b></td><td>523.01</td><td>295.92</td></tr><tr><td><b>Director 5</b></td><td>717.23</td><td>292.60</td></tr><tr><td><b>Director 6</b></td><td>925.32</td><td>289.74</td></tr><tr><td><b>Director 7</b></td><td>1143.82</td><td>287.27</td></tr><tr><td><b>Director 8</b></td><td>1372.72</td><td>285.10</td></tr><tr><td><b>Director 9</b></td><td>1612.03</td><td>283.18</tr> </table> <ul> <li> * The driven element is made as a folded dipole, and need not be made yet. See the Driven Element section below. I made this element, fixed it in, and then realised it was unnecessary!</li> </ul> Making the beam was fairly straight forward. I marked two lines down the boom, on opposite sides, in the middle. Mark the position of the reflector (REFL on the above diagram). This is the reference of zero - everything else is measured along this line with respect to the reflector. From this, measure the other element locations, marking them out based on the dimensions table, above. Then repeat this on the other side of the boom. Cut the elements to length as specified in the dimensions table, above. For this beam, I drilled the boom to take the elements directly, with a hole 0.1 mm smaller than the element diameter, I then used a clamp to push the element through the hole in the boom, making for a tight fit. As I used aluminium, this was an easy option, as I don't have the tools to weld aluminium. I used a piece of heat-shrink on each side to stop the element sliding through the boom, should the interference fit become loose. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/70cmsYagi_Heatshrink.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/70cmsYagi_Heatshrink.jpg" width="700" alt="Heatshrink cut" class="aligncenter"></a> Centre up your element making sure the same amount is exposed on each side, then heat the heat-shrink tightly to the boom, so the element cannot move. Your beam should have taken shape, and at least look like an antenna... <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/70cmsYagi_Beam_Shaping_up.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/70cmsYagi_Beam_Shaping_up.jpg" width="700" alt="Beam shaping up!" class="aligncenter"></a> As I said above, I made the driven element before I realised that a Gamma Match would not be suitable at UHF. For this reason, do not make the driven element as a normal element, but follow the section below! <h2>Driven Element</h2> On the <a href="http://new.george-smart.co.uk/144mhz_yagi">2 metre</a> beam, I used a gamma matching section to match the 50&Omega; co-axial cable to the feed point of the antenna. However, you quickly run into issues when trying to design one for 432 MHz. The gamma rod length is in the range of 10 mm long - obviously impractical! <a href="http://www.k7mem.150m.com/Electronic_Notebook/antennas/yagi_vhf_feed.html">Martin Meserve's VHF/UHF Yagi Antenna Feed Design</a> explains how to use a folded dipole as the driven element, which works out much better for UHF than the gamma matching section I used before. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/70cmsYagi_FoldedDipole.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/70cmsYagi_FoldedDipole.jpg" width="300" alt="Folded Dipole" class="aligncenter"></a> <center><i>Image from Martin Meserve's VHF/UHF Yagi Antenna Feed Design page, [http://www.k7mem.150m.com/Electronic_Notebook/antennas/yagi_vhf_feed.html]</i></center> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/70cmsYagi_FoldedDipoleParams.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/70cmsYagi_FoldedDipoleParams.png" width="700" alt="Folded Dipole Parameters" class="aligncenter"></a> There are 4 parameters to the folded dipole, and they are shown on the diagram above. These are: <ul> <li> L - The length of the driven element for resonance: here, 330.13 mm.</li> <li> S - The spacing. I used a value of 44.5 mm. This gave me enough room to get around the 20.3 mm boom, into the middle of the box, with a spacer on the back.</li> <li> F - The feed gap. This needs to be as small as possible. I made a spacer for physical support, with a spacing of approximately 5 mm. Should be smaller than the boom diameter (as a guide).</li> <li> D - Driven element diameter. This is in the range 0.681 mm to 13.627 mm from [http://www.k7mem.150m.com/Electronic_Notebook/antennas/yagi_vhf_feed.html]. Mine was 2.5 mm.</li> </ul> A folded dipole has a feed impedance of 300&Omega;, and so clearly something is required to convert from the 300&Omega; of the driven element to the 50&Omega; output of the <a href="http://new.george-smart.co.uk/yaesu_ft_857d">radio</a>. This is done with a &frac12;&lambda; (half-wavelength) matching loop. This matching loop (described below) is built into a plastic mounting box, and attached to the boom, providing support (along with a spacer) for the driven element, as shown below: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/70cmsYagi_DrivenElementFixture.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/70cmsYagi_DrivenElementFixture.png" width="700" alt="Driven Element Fixture" class="aligncenter"></a> <h2>Matching Loop</h2> <a href="http://www.k7mem.150m.com/Electronic_Notebook/antennas/yagi_vhf_feed.html">Martin Meserve's Feed page</a> has a calculator for common co-ax types, but unfortunately mine was not on there. <b>Check <a href="http://www.k7mem.150m.com/Electronic_Notebook/antennas/yagi_vhf_feed.html#Feed_75">Martin Meserve's Feed page</a> for your coax to save yourself this maths</b>. I used UT-141. You need to know the velocity factor for your co-ax, to be able to calculate the physical length required for &frac12;&lambda; at the chosen frequency. The formula is pretty simple: \left [ \left ( \frac{3 \times 10^8}{f \times 10^6} \right) \times V_F \right ] = &lambda;_{coax} Where: <ul> <li> f is the frequency in MHz</li> <li> V_F is the velocity factor for a given type of coax (the manufacturer tells you this)</li> <li> &lambda;_{coax} is the physical wavelength in the coax for a specified V_F </li> </ul> As we're interested in &frac12;&lambda;, we divide &lambda;_{coax} by two. For the UT-141 I had, the velocity factor V_F was given to be 0.694 (69.4%). For a frequency of 432.2 MHz, we can calculate &lambda;_{coax} and thus &frac12;&lambda; for our matching loop: \left [ \left ( \frac{3 \times 10^8}{432.2 \times 10^6} \right) \times 0.694 \right ] = &lambda;_{coax} = 0.481721425 m &frac12;&lambda; = \tfrac{0.481721425}{2} = 0.240860713 m = 241 mm This matching loop is then configured as in the image below: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/70cmsYagi_MatchingLoop.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/70cmsYagi_MatchingLoop.png" alt="Matching Loop" class="aligncenter"></a> The 241 mm of coax (measured straight, over the shielded length only) is looped as shown to get it to fit inside the box. Make sure your coax doesn't kink. Use something round of suitable diameter to coil hard-line coax around, or use cable ties to hold flexible coax in shape. All the coaxes need to have their shields connected together; this is done here by the "grounding bar". This bar is also connected to the boom via a short wire and a solder tag. The feed coax (centre) connects to one side of the folded dipole (driven element) with one end of the matching loop. The other end of the matching loop connects to the other side of the folded dipole. The image below shows the physical construction of my matching loop in it's overly sized box: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/70cmsYagi_MyMatchingLoop.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/70cmsYagi_MyMatchingLoop.png" width="700" alt="Matching Loop" class="aligncenter"></a> Note that the driven element is made from 2.5 mm brass brazing rod, and not from the 6.3 mm aluminium. This appears not to effect the performance too greatly from what I have seen. <h1>Testing</h1> The Yagi was tested in a similar way to that of the <a href="http://new.george-smart.co.uk/144mhz_yagi">2-metre beam</a>. This time, all of the measurements were combined on to one graph. Click on the graph twice to make the image bigger (once to go to the image properties, and again for full resolution). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/432MHzYagi_Testing.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/432MHzYagi_Testing.jpg" width="700" alt="UHF Yagi Testing" class="aligncenter"></a> At the top right of the image, the marker values are displayed: F=432.2 MHz, VSWR=1.25:1, |Z| = 57.8&Omega;. The graph follows the same colour scheme as in the <a href="http://new.george-smart.co.uk/144mhz_yagi">2-metre beam</a> testing. The red trace shows the feed point impedance. The green trace shows the antenna loss (i.e. what power is lost to freespace - or as we call it, radiated). The blue trace shows the VSWR. Marker 1 is visible on the blue (VSWR) trace, and is fixed at a frequency of 432.2 MHz. The frequency of SSB activity on the 70 centimetre band, and the frequency the beam was originally designed for. You can see at this frequency, the beam is radiating the most power (lowest point on the green trace). I also measured the <a href="http://new.george-smart.co.uk/antenna_radiation_pattern">radiation pattern</a> of this antenna as a separate project. <h1>Conclusion</h1> Although I was hoping for a slightly better VSWR, this is not possible. The matching loop does not have any adjustment. The obvious adjustment for the &frac12;&lambda; match is to adjust the length slightly. I suspect that some of the element lengths are very slightly due to the limitations in measuring equipment I have - I was only able to measure to the nearest millimetre, and this was done by eye; there was room for error. Finally, the beam was calculated to have a driven element diameter of 6.3 mm, but it ended up being 2.5 mm. I am unsure what difference this would make. So, I suppose all said and done, I've had a few QSOs on this antenna already (on the day I built it - Tuesday 9th August 2011 - 70CMS UKAC monthly UHF SSB contest) and it performed well. I wasn't able to get to my usual <a href="http://new.george-smart.co.uk/portable_radio">portable</a> location so I had make do with my poor (low down) home QTH (QRA: JO01cn). Ultimately the beam took me about 4 hours to make, 2 more to test, and another 3 to measure the <a href="http://new.george-smart.co.uk/antenna_radiation_pattern">Antenna Radiation Pattern</a> of it. It cost me nothing as it was made from scrap metal and kept me from trouble during the 4th day of <a href="http://www.guardian.co.uk/uk/blog/2011/aug/09/london-uk-riots-day-four-live">London Riots</a>. <b>FIXME_Category :Antenna</b> <b>FIXME_Category :Radio</b> <b>FIXME_Category :Electronics</b> 472 kHz http://new.george-smart.co.uk/472_khz 4357 draft 472_khz 0 2013-04-27 22:07:53 closed page closed <a href="http://www.christopher-smart.co.uk">My Dad (G8OCV)</a> initially got me interested in 472 kHz (630 metres) a few weeks back. Between now and then, we have built <a href="http://new.george-smart.co.uk/472_khz_receive_preamp">a nice preamp</a> for our Icom IC-7400 and a <a href="http://new.george-smart.co.uk/472_khz_transmitter">MF power amplifier</a> to go with my <a href="http://new.george-smart.co.uk/arduino_wspr">Arduino WSPR</a> exciter. Initially, all of my 472 kHz <a href="http://new.george-smart.co.uk/wspr">WSPR</a> gear was on this page, but as the individual topics grew, it made sense to have them on their own seperate pages. 472 KHz WSPR is still documented on this page, but the other topics have moved... <ul> <li> <a href="http://new.george-smart.co.uk/472_khz_antenna">472 kHz Antenna</a>.</li> </ul> <ul> <li> <a href="http://new.george-smart.co.uk/472_khz_receive_preamp">472 kHz Receive Preamp</a>.</li> </ul> <ul> <li> <a href="http://new.george-smart.co.uk/472_khz_transmitter">472 kHz Transmitter</a>.</li> </ul> <ul> <li> <a href="http://new.george-smart.co.uk/472_khz_transverter">472 kHz Transverter</a>.</li> </ul> <h1>The Setup</h1> I fashioned a short YouTube video of the hardware: <center><a href="http://www.youtube.com/watch?v=yrduVaP05u4">Youtube Link</a></center> <html> <center> <iframe width="425" height="349" src="http://www.youtube.com/watch?v=yrduVaP05u4?hl=en&fs=1" frameborder="0" allowfullscreen></iframe> </center> </html> <h1>WSPR Spots</h1> These two images are transmit (left) and receive (right) <a href="http://new.george-smart.co.uk/wspr">WSPR</a> maps from 2012-Jan-28 at 23:00 GMT. <center><table cellpadding="5" > <tr> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_WSPRSpots_20130128_tx.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_WSPRSpots_20130128_tx.png" width="300" alt="WSPR Spots" class="aligncenter"></a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_WSPRSpots_20130128_rx.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_WSPRSpots_20130128_rx.png" width="300" alt="WSPR Spots" class="aligncenter"></a></tr> </table> </center> Some older <a href="http://new.george-smart.co.uk/wspr">WSPR</a> spots from 2012-Jan-20 at 23:00 GMT, when transmitting using the described Transmitter from below. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_WSPRSpots_20130120.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_WSPRSpots_20130120.png" width="600" alt="WSPR Spots" class="aligncenter"></a> By comparing the images over a 8 day interval, it's easy to see that the number of stations on 472 kHz 630 metre band is growing rapidly! <b>FIXME_Category :Radio</b> <b>FIXME_Category :Arduino</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Computers</b> 472 kHz Antenna http://new.george-smart.co.uk/472_khz_antenna 4288 472_khz_antenna draft 0 2013-04-07 02:27:56 closed page closed = EIRP Calculator = I started writing an ERP calculator for low and medium frequency, though it would cover any <i>electrically short</i> antenna. <b>The calculator can be found here: <a href="http://george-smart.co.uk/cgi-bin/lfmf_erp.cgi">LF/MF ERP Calculator</a></b>. More information and notes on the theory can be found here on the <a href="http://new.george-smart.co.uk/electrically_small_antenna_erp">Electrically Small Antenna ERP</a> page. <h1>Antenna</h1> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_Matching.gif"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_Matching.gif" alt="Matching, [http://home.sandiego.edu/~ekim/e194rfs01/jwmatcher/matcher2.html" class="aligncenter"></a> I firstly measured the impedance of the unmatched inverted-L wire and found it to be Z_{u}=58.11-j827.25\; &Omega;. Using these values, it is possible to calculate a matching circuit - you may find a calculator, such as <a href="http://home.sandiego.edu/~ekim/e194rfs01/jwmatcher/matcher2.html">this website</a> helpful. Using the linked website, I settled on a high-pass (because the components worked out nicer) low-to-high matching LC-network. From the matching circuit on the right, I found the values L=133uH and C=437pF worked ideally. We tried with some low power components to check that the values were correct, before winding a big inductor from plastic insulated wire around a 4 inch drainpipe. <a href="http://www.dl5swb.de/html/mini_ring_core_calculator.htm">Mini Ring Core Calculator</a> was used to calculate the number of turns of the given wire for a given pipe diameter. Once that was tested, we lashed up a frame to hold the capacitor and inductor from the ground and inside a box to give a slight amount of cover. The box has a waterproof seal. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_AntennaMatching.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_AntennaMatching.jpg" width="600" alt="Antenna Matching Box" class="aligncenter"></a> Once the matching network was built, the antenna was remeasured. From the plot we can see the VSWR is 1.18:1, with a matched feed impedance of Z_{m}=57.92+j4.03\; &Omega; on 475 kHz. As you can see, the real part of the antenna impedance is close to 50&Omega; while the complex (reactance) part is almost 0&Omega;, which indicates a good match. This is, of course, confirmed with the low SWR. I decided this was close enough to start off with! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_AntennaPlot.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_AntennaPlot.png" width="600" alt="Antenna Plot" class="aligncenter"></a> Below is an awful depiction of the antenna set up. I shall try to make a better one soon; sorry. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_AntennaFigure.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_AntennaFigure.jpg" width="600" alt="Antenna Figure" class="aligncenter"></a> The lower two pictures are a view up the tree where the inverted L runs. At the top the inverted L meets the end of the G5RV, both of which run back to opposite corners of the house. <center><table > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_AntennaTree1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_AntennaTree1.jpg" width="300" alt="Antenna" class="aligncenter"></a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_AntennaTree2.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_AntennaTree2.jpg" width="300" alt="Antenna" class="aligncenter"></a></tr> </table> </center> Finally, the radiation pattern as forecast by <a href="http://hamsoft.ca/pages/mmana-gal.php">MMANA-Gal</a>: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_AntennaPattern.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_AntennaPattern.png" width="600" alt="Antenna Pattern" class="aligncenter"></a> <b>FIXME_Category :Radio</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Computers</b> 472 KHz Antenna http://new.george-smart.co.uk/472_khz_antenna draft 472_khz_antenna 4200 page closed closed 2013-03-21 23:45:21 0 This page was moved here: <a href="http://new.george-smart.co.uk/472_khz_antenna">472 kHz Antenna</a>. <a href="/contact-me">Please report this message to the webmaster</a>. 472 KHz Receive Preamp http://new.george-smart.co.uk/472_khz_receive_preamp closed page closed 2013-03-21 23:45:44 0 472_khz_receive_preamp draft 4204 This page was moved here: <a href="http://new.george-smart.co.uk/472_khz_receive_preamp">472 kHz Receive Preamp</a>. <a href="/contact-me">Please report this message to the webmaster</a>. 472 kHz Receive Preamp http://new.george-smart.co.uk/472_khz_receive_preamp 4215 draft 472_khz_receive_preamp 2013-03-22 00:01:03 0 page closed closed Our 472 KHz 630 metre preamp is based on G3YXM's design from <a href="http://www.rsgbshop.org/acatalog/Online_Catalogue_Low_Frequency_43.html">The RSGB's LF Today</a> book. We adapted it slightly to better suit 472 kHz (630m) from 501 kHz (600m) among other slight changes. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/472KHz_RXPreamp_Schematic.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/472KHz_RXPreamp_Schematic.png" width="600" alt="Receive Preamp Schematic" class="aligncenter"></a> The schematic is as I made mine. Note that the Toko coils T1 and T2 are 455 kHz IF transformers, with the internal capacitors removed as they won't cover 472 kHz alone. C1 and C2 are then selected to resonate with T1 and T2 on 472 kHz. C1 and C2 are usually either 120 pF or 150 pF. 120 pF gives a better range with the ferrite slug on the transformers. Below is my PCB for the receive pre-amplifier: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/472KHz_RXPreamp_Silk.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/472KHz_RXPreamp_Silk.png" width="600" alt="Receive Preamp Silkscreen" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/472KHz_RXPreamp_Mask.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/472KHz_RXPreamp_Mask.png" width="600" alt="Receive Preamp Mask" class="aligncenter"></a> The images above are scaled at 600 DPI. They are also available as correctly scaled PDFs which you can print at 100%. Use these masks to create the boards via <a href="http://new.george-smart.co.uk/toner_transfer_pcbs">toner transfer</a> or photolithographically. I have also included the <a href="http://en.wikipedia.org/wiki/Gerber_format">Gerber files</a> if you are using a plotter/milling machine or having boards made. <center><table cellpadding="10" > <tr><td><b>Bottom Copper</b></td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/472KHz_RXPreamp_Mask.pdf">Bottom Copper PDF</a></td></tr><tr><td><b>Silk Screen</b></td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/472KHz_RXPreamp_Silk.pdf">Silk Screen PDF</a></td></tr><tr><td><b>Gerber Files</b></td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/472KHz_RXPreamp_Gerber.zip">Gerber Files ZIP</a></tr> </table> </center> The image below is of the prototype 472 kHz receive preamp. The masks above have some slight alterations and improvements. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/472KHz_RXPreamp.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/472KHz_RXPreamp.jpg" width="600" alt="Receive Preamp" class="aligncenter"></a> The improved board design was tested out by getting <a href="http://www.webshed.org">Dave (G7UVW)</a> to built it, which he did without problem. Dave seemed to have good results. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/472KHz_RXPreampDave.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/472KHz_RXPreampDave.jpg" width="600" alt="Receive Preamp 2" class="aligncenter"></a> <center><a href="https://twitter.com/DTL/status/293061165595119616">Source</a></center> <b>FIXME_Category :Radio</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Computers</b> 472 kHz Transmitter http://new.george-smart.co.uk/472_khz_transmitter closed closed page 0 2014-03-18 14:53:31 472_khz_transmitter draft 4892 = Exciter = The exciter board is based on my <a href="http://new.george-smart.co.uk/arduino_wspr">Arduino WSPR</a> exciter. I do plan to create a better stand-alone board soon, with one of these Chinese DDS modules that are cheap and easy to get from eBay. At the minute I am using a <a href="http://midnightdesignsolutions.com/dds60/">DDS60 by AmQRP</a>. The output from this amplifier is small (around 980mV unloaded, about 290mV into 47&Omega;). The scope trace below shows what the DDS-60's output looks at 472 kHz. The sinewaves are a little flat-topped but this doesn't matter as it's only at the driver stage. The PA will be class-E and so will completely distort the signal and require cleaning later. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_DDS60.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_DDS60.png" width="400" alt="DDS60 Output on 472 kHz" class="aligncenter"></a> Visit <a href="http://new.george-smart.co.uk/arduino_wspr">this page</a> for help getting this far. <h1>Power Amplifier</h1> <h2>Attempt 1</h2> My first power amplifier was closely based on <a href="http://www.gw3uep.ukfsn.org/25W_QTX/472_25W_QTX/472_kHz_25W_PA.htm">GW3UEP's 25W PA</a>. I adjusted some of the coil inductances and altered the design fractionally to better suit what I had, but it is still in essence GW3UEP's design. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_PA.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_PA.jpg" width="600" alt="PA for 472 kHz" class="aligncenter"></a> From the input waveform above, I have used a <a href="http://www.fairchildsemi.com/ds/CD/CD4069UBC.pdf">CMOS 4069</a> with one of the input gates biased <i>half on</i> to convert the input into a square wave to drive the FET. I used a very crude circuit: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_Sine2TTL.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_Sine2TTL.png" width="600" alt="Sine to TTL converter" class="aligncenter"></a> At the output of the Sine-to-TTL converter, there is a square-wave pulse train at the input frequency. This signal is fed to the FET gate, which is where this voltage train was measured. Left is the time domain, right the frequency domain via <a href="http://en.wikipedia.org/wiki/Fast_Fourier_transform">fast Fourier transform</a>. <center><table > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_SquareDrive.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_SquareDrive.png" width="300" alt="Square-wave FET drive" class="aligncenter"></a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_SquareDriveFFT.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_SquareDriveFFT.png" width="300" alt="Square-wave FET drive" class="aligncenter"></a></tr> </table> </center> The drive on the FET's gate is amplified. The drain of the FET has the amplified signal. The two images below show the time and frequency domain on the drain. <center><table > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_SquareDrain.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_SquareDrain.png" width="300" alt="Square-wave FET drain" class="aligncenter"></a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_SquareDrainFFT.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_SquareDrainFFT.png" width="300" alt="Square-wave FET drain" class="aligncenter"></a></tr> </table> </center> Finally, here we can see the filtered sine-wave output and FFT from the PA. I'm still not happy with the design, it needs a little more filtering, and a little more harmonic suppression, which is why it's still not been on air yet. <center><table > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_Output.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_Output.png" width="300" alt="Square-wave PA output" class="aligncenter"></a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_OutputFFT.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_OutputFFT.png" width="300" alt="Square-wave PA output FFT" class="aligncenter"></a></tr> </table> </center> We can calculate the power into a 50&Omega; resistor using Ohms law. The sine wave after the filter is 70.4 Volts, peak-to-peak. 70.4 \; V_{pk-pk} = \frac{70.4}{2\sqrt{2}} = 24.89 \; V_{rms} P_{out}=\frac{V^2}{R} = \frac{24.89^2}{47} = 13.18 \; W 13.18 Watts dissipated into the 47&Omega; (47 is what I had) (See my <a href="http://new.george-smart.co.uk/power_calculator">Power Calculator</a>). GW3UEP suggests that on higher voltages, much more power is achievable. This was from a supply of 13.5 Volts with a supply current of 1.027 Amps. P_{in}= 13.5 \times 1.027 = 13.86 \; W This gives an overall efficiency, \eta, of: \eta = \frac{13.18}{13.86} = 0.9509 \longrightarrow 95.1% <h2>Attempt 2</h2> With increased voltage and higher current IRF640 MOSFET, I decided to remeasure the power and efficiency. I also changed the driver circuit to a transistor buffer and current amplifier from the earlier 4069 CMOS gates. We can calculate the power into a 50&Omega; resistor using Ohms law. The sine wave after the filter is 188 Volts, peak-to-peak. 188\; V_{pk-pk} = \frac{188}{2\sqrt{2}} \approx 66.5 \; V_{rms} P_{out}=\frac{V^2}{R} = \frac{66.5^2}{50} = 88.4 \; W 88.4 Watts dissipated into the 50&Omega; (See my <a href="http://new.george-smart.co.uk/power_calculator">Power Calculator</a>). This was from a supply of 30.88 Volts with a supply current of 3.02 Amps. P_{in}= V \times I = 30.88\times 3.02 \approx 93.3 \; W This gives an overall efficiency, \eta, of: \eta = \frac{88.4}{93.3} = 0.947 \longrightarrow 94.7% For a class-E amplifier, above 88% efficiency is considered to be working well. After about 5 redesigns, it finally seems like I have my high power amplifier working correctly! <h2>Final Amplifier</h2> I am in the process of documenting this new amplifier! The schematic and PCB will be online shortly, but, in the mean time, here's a sneak preview: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_PA_PCB.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_PA_PCB.jpg" width="600" alt="PA for 472 kHz" class="aligncenter"></a> <h2>Failure</h2> Here is probably a good place to notice that while this amplifier will do 100 Watts continuously with adequate heatsinking, if the antenna falls down, the capacitors can't handle the voltage! This shows one that vented all over the FET and heatsink pad. You can also see the vented/melted. The FET survived okay! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_PA_PoppedCap.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_PA_PoppedCap.jpg" width="600" alt="PA Fail for 472 kHz" class="aligncenter"></a> <h1>PCB Designs</h1> After tinkering about I decided to make a PCB. The PCB underwent a few revisions before I settled on the final version printed here. As mentioned above, the CMOS driver was replaced with two bipolar transistors to provide sharp square pulses to the FET. This improves the efficiency of the amplifier. The current working schematic (as of 20/10/2013) is as follows: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_PA_Schematic.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_PA_Schematic.png" width="600" alt="PA Schematic for 472 kHz" class="aligncenter"></a> And the complimentary PCB copper and silks at 300 DPI: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_PA_SilkCopper.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_PA_SilkCopper.png" width="600" alt="PA Silk for 472 kHz" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_PA_SilkSilk.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_PA_SilkSilk.png" width="600" alt="PA Silk for 472 kHz" class="aligncenter"></a> <h1>Low Pass Filter</h1> After having about 10 attempts at building a low pass filter, I found out that the Micrometals ferrites that I was trying to use (T130-52) were in fact Chinese copies of the Micrometals which appeared the same visually, but did not perform at all well. Micrometals have issued <a href="http://www.micrometals.com/warning/warning.html">a warning message</a> about ferrite ring copies. I have since done some <a href="http://new.george-smart.co.uk/toroid_core_measurements">measurements of the toroid cores</a>. The image below was taken with the only camera available at the time and is accordingly awful. I will try and get a better picture soon! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_LPFBoard.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_LPFBoard.jpg" width="500" alt="472 kHz Low Pass Filter Attempt" class="aligncenter"></a> The LPF we settled on is an 5th order Chebyshev filter, designed with the <a href="http://aade.com/filter.htm">AADE Filter Design Software</a>. it is implemented using two air-core inductors wound in the same construction style as the PA and 3 capacitor poles made from high quality capacitors capable of handling the power. The filter's frequency response is shown below: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_LPF.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_LPF.png" width="500" alt="472 KHz Low Pass Filter" class="aligncenter"></a> The markers on the graph are at the harmonics of the band centre, and where I do <a href="http://new.george-smart.co.uk/472_khz_wspr">472 kHz WSPR</a>. # 475 kHz : -0.66 dB # 950 kHz : -37.91 dB # 1425 kHz : -62.38 dB # 1900 kHz : -79.26 dB These values are just the filter. The PA already has a 5th order Chebyshev filter and matching network of it's own. The final two scope prints show the output of the LPF with the PA driving into a 50&Omega; load. <center><table > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_LPFOutput.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_LPFOutput.png" width="300" alt="Square-wave PA output" class="aligncenter"></a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_LPFOutputFFT.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_LPFOutputFFT.png" width="300" alt="Square-wave PA output FFT" class="aligncenter"></a></tr> </table> </center> Last of all, I decided to make a proper PCB up and screen the coils from each other. The final picture shows the "finished" low pass filter. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_LPF_Mk2.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_LPF_Mk2.jpg" width="500" alt="472 KHz Low Pass Filter - Mk 2" class="aligncenter"></a> Stand alone filter design files: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_LPF_Schematic.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_LPF_Schematic.png" width="500" alt="472 KHz Low Pass Filter Schematic - Mk 2" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_LPF_Design.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/472KHz_LPF_Design.png" width="500" alt="472 KHz Low Pass Filter Design - Mk 2" class="aligncenter"></a> Finally, two PDFs for the board layout. These are correctly scaled, so turn off any scaling inside your PDF viewer, i.e., print at 100% with an A4 paper selected (as this is the correct aspect ratio). <ul> <li> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/472KHz_LPF_MaskCopper.pdf">The Filter Bottom Copper</a></li> <li> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/472KHz_LPF_MaskSilk.pdf">The Filter Component Silk Screen as PDF</a></li> </ul> <b>FIXME_Category :Radio</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Computers</b> <b>FIXME_Category :ToDo</b> 472 KHz Transmitter http://new.george-smart.co.uk/472_khz_transmitter 2013-03-21 23:45:33 0 closed page closed 4202 472_khz_transmitter draft This page was moved here: <a href="http://new.george-smart.co.uk/472_khz_transmitter">472 kHz Transmitter</a>. <a href="/contact-me">Please report this message to the webmaster</a>. 472 kHz Transverter http://new.george-smart.co.uk/472_khz_transverter page closed closed 0 2013-04-27 23:16:44 draft 472_khz_transverter 4378 This page documents the building of <a href="https://sites.google.com/site/g3xbmqrp3/mflf/472khz_tvtr">G3XBM's 472 kHz transverter</a> by <a href="http://www.christopher-smart.co.uk">G8OCV</a> and myself. We started experimenting with <a href="http://new.george-smart.co.uk/472_khz">472 kHz</a> as soon as the band was available having just missed out on 500 kHz NoVs. If you look on my <a href="http://new.george-smart.co.uk/472_khz">472 kHz</a> page you can see some of our other projects. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_Trans.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_Trans.jpg" width="400" alt="472 kHz Transverter" class="aligncenter"></a> Roger, G3XBM, provides a schematic for his transverter. If, like us, you have the facility to make printed circuit boards then you may well find the following schematic, board masks and Gerber files of use. To make life easier when designing the circuit boards, we duplicated the schematic into our software. There are two diagrams, the transverter (left) and the optional filter board (right). Click on these to enlarge. <center><table > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_Trans_Schematic.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_Trans_Schematic.png" width="300" alt="472 kHz Transverter" class="aligncenter"></a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_Trans_SchematicFilter.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_Trans_SchematicFilter.png" width="300" alt="472 kHz Transverter" class="aligncenter"></a></td></tr><tr><td>The Transverter Schematic </td><td>Optional Filter Schematic</tr> </table> </center> We then come up with the following PCB design, which was designed to fit into a diecast metal box, as seen further down; the box serving as a heatsink for the FET. The images here are at 600 DPI, which should be supported by any modern printer/software (I recommend <a href="http://www.gimp.org/">GIMP</a>, open the file, print, set 600dpi as the resolution, cross fingers). Alternatively, there are PDFs links below the images (print at 100% on A4). <center><table > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_Trans_MaskCopper.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_Trans_MaskCopper.png" width="300" alt="472 kHz Transverter" class="aligncenter"></a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_Trans_MaskSilk.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_Trans_MaskSilk.png" width="300" alt="472 kHz Transverter" class="aligncenter"></a></td></tr><tr><td><b><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/472KHz_Trans_MaskCopper.pdf">Copper Mask PDF</a></b> </td><td><b><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/472KHz_Trans_MaskSilk.pdf">Silk Screen PDF</a></b></td></tr><tr><td>The Transverter Bottom Copper (<a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/472KHz_Trans_MaskCopper.png">600DPI</a>) </td><td>The Transverter Component Silk Screen (<a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/472KHz_Trans_MaskSilk.png">600DPI</a>)</tr> </table> </center> Finally for anyone who prefers to mill boards with CNC machines, here are the <b><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/472KHz_Gerber.zip">472kHz Transverter Gerber/Excellon files</a></b>. Below is a picture of our first attempt, boxed in a dycast box. It works well! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_Trans_boxed.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_Trans_boxed.jpg" width="600" alt="472 kHz Transverter" class="aligncenter"></a> <h1>Video</h1> The video below shows the prototype of our transverter in QSO with <a href="http://www.webshed.org">G7UVW</a> and <a href="http://www.m0ukd.com">M0UKD</a>. There is some SSB, CW, PSK31 and Feld Hell. The antenna mentioned in the video is detailed here: <a href="http://new.george-smart.co.uk/472_khz_antenna">472 kHz Antenna</a>. <center><a href="http://www.youtube.com/watch?v=z7-l8hQuh-g">Youtube Link</a></center> <html> <center> <iframe width="420" height="315" src="http://www.youtube.com/embed/z7-l8hQuh-g?hl=en&fs=1"" frameborder="0" allowfullscreen></iframe> </center> </html> <h1>QSOs</h1> When intially testing the transverter I had arranged a few skeds with Dave (G7UVW) and John (M0UKD), <a href="http://www.m0ukd.com/wordpress/homebrew/g3xbm-472khz-transverter/">who has also built a 472 kHz transverter</a>. When I had finally built enough confidence and got my <a href="http://new.george-smart.co.uk/472_khz_antenna">antenna</a> tuned, I answered <a href="http://qrz.com/db/G3XIZ">G3XIZ</a> calling CQ. I was expecting much, but he came straight back to me, correct callsign, no problems at all! Reports and were exchanged before Chris (G3XIZ) had to head off for tea! I took a printscreen of the QSO from FLDigi (I'm hopeless with CW and need a computer's help!). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_Trans_G3XIZ_QSO.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/472KHz_Trans_G3XIZ_QSO.png" width="600" alt="472 kHz Transverter CW QSO" class="aligncenter"></a> <b>FIXME_Category :Radio</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Computers</b> 472 KHz WSPR http://new.george-smart.co.uk/472_khz_wspr 4198 draft 472_khz_wspr 0 2013-03-21 23:45:06 closed page closed This page was moved here: <a href="http://new.george-smart.co.uk/472_khz_wspr">472 kHz WSPR</a>. <a href="/contact-me">Please report this message to the webmaster</a>. 472 kHz WSPR http://new.george-smart.co.uk/472_khz_wspr draft 472_khz_wspr 4358 page closed closed 0 2013-04-27 22:07:53 This page was moved here: <a href="http://new.george-smart.co.uk/472_khz">472 kHz</a>. <a href="/contact-me">Please report this message to the webmaster</a>. 4th Year Project http://new.george-smart.co.uk/4th_year_project 1020 4th_year_project draft 2010-11-17 00:20:14 0 closed page closed This page was moved here: <a href="http://new.george-smart.co.uk/4thyrproject">4thYrProject</a>. <a href="/contact-me">Please report this message to the webmaster</a>. 4thYrProject http://new.george-smart.co.uk/4thyrproject 0 2011-10-17 15:56:44 closed closed page 2738 4thyrproject draft This project is now hosted and documented on its SourceForge page: <a href="https://sourceforge.net/projects/unv/">UCL UNV on SourceForge</a>. Please find it there. <b>FIXME_Category :Computers</b> <b>FIXME_Category :Linux</b> <b>FIXME_Category :Academic</b> About Me http://new.george-smart.co.uk/about_me 0 2012-01-16 00:29:03 closed closed page 3064 about_me draft #REDIRECT <b>FIXME_User :George</b> ACARS http://new.george-smart.co.uk/acars acars draft 5038 closed closed page 0 2014-08-04 13:43:58 This page is currently being worked on. For more information, visit <a href="http://en.wikipedia.org/wiki/Aircraft_Communications_Addressing_and_Reporting_System">Wikipedia: Aircraft Communications Addressing and Reporting System (ACARS)</a>. <hr> <h1>ACARSD</h1> After struggling with the <i>acarsd</i> suite for some time, I decided to give up. I managed to get the installer to run under Ubuntu 10.10, which seems to be more than post people. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/ACARSD_Installer.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/ACARSD_Installer.png" width="480" alt="acarsd Installer, Ubuntu 10.10, amd64" class="aligncenter"></a> I then had a struggle with the internal libraries; this is when I gave up: <blockquote> george:/opt/acarsd$ ./acarsd acarsd - ACARS suite v 1.65 - (C).2003-2006 by KjM acarsd@acarsd.org web: www.acarsd.org mail: acarsd@acarsd.org <b>Your version of libacarsd.so is not supported</b> System stopped Versioninformation from libacarsd: Version 1.46 Revision 2 george:/opt/acarsd$ </blockquote> The program doesn't recognise the only version of the library (from acarsd.org, the official website) then I have no idea how to get it working! Seems overly complex for my liking. It's supposed to be good software, it's just trying hard to appear bad! <b>EDIT August 2014:</b> <a href="http://qrz.com/db/OE1SCS">Stefan Schultheis (OE1SCS)</a> emailed me in response to the above paragraph, saying "You need to copy the library included with the acarsd package to the /lib directory, that's it - no extra download. It's mentioned in REQUIRED.TXT." -- I would have likely tried this, but since I was playing with this some years back, it's likely these issues may have been resolved. <h1>PlanePlotter</h1> After giving up on <i>acarsd</i> I decided to have a play around with PlanePlotter. Now PlanePlotter is a Microsoft Windows application, and so I was warey of how it would function under Ubuntu (Linux). Excellently, is the answer. I have not found anything that does not work. I am still on the 21-day free trial, but it seems to work very well. I am using a Yaesu VX-7R Amateur Radio handheld on 131.725 MHz, AM, with the output fed into my PC's soundcard. The antenna is a &lambda;/4 vertical antenna on the roof of the front of the house. With this setup, I managed to obtain some of the following images. <h2>Raw Data & Aircraft View</h2> <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/PlanePlotter_Raw.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/PlanePlotter_Raw.png" width="300" alt="PlanePlotter Image" class="aligncenter"></a></tr> </table> Click an image to enlarge </center> <h2>Satellite Maps</h2> <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/PlanePlotter_Satellite1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/PlanePlotter_Satellite1.png" width="300" alt="PlanePlotter Image" class="aligncenter"></a></tr> </table> Click an image to enlarge </center> <h2>Street Map & SkyView</h2> <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/PlanePlotter_StreetMap.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/PlanePlotter_StreetMap.png" width="300" alt="PlanePlotter Image" class="aligncenter"></a></tr> </table> Click an image to enlarge </center> <h2>Outline Maps</h2> <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/PlanePlotter_Chart1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/PlanePlotter_Chart1.png" width="300" alt="PlanePlotter Image" class="aligncenter"></a></tr> </table> Click an image to enlarge </center> <b>FIXME_Category :Radio</b> <b>FIXME_Category :Computers</b> Admin http://new.george-smart.co.uk/admin 5414 draft admin 0 2015-12-30 01:01:51 closed page closed = Page of Useful Links for Admin = <ul> <li> <b>FIXME_MediaWiki :Sidebar</b></li> <li> <b>FIXME_MediaWiki :MenuSidebar</b></li> <li> <b>FIXME_MediaWiki :Sitenotice</b> (banner at page top)</li> <li> <a href="http://new.george-smart.co.uk/special_allmessages">Special:AllMessages</a></li> <li> <a href="http://www.george-smart.co.uk/piwik">Piwik</a></li> <li> <a href="http://www.george-smart.co.uk/awstats/awstats.pl">Awstats</a></li> <li> <a href="https://www.google.com/webmasters/tools/home">Google WebMaster Tools</a></li> <li> <a href="https://www.google.com/analytics/">Google Analytics</a></li> <li> <a href="http://www.george-smart.co.uk/banned_ips">Banned IPs</a></li> </ul> <ul> <li> <a href="http://www.george-smart.co.uk/roundcube">RoundCube</a></li> <li> <a href="http://www.george-smart.co.uk/torrentflux">TorrentFlux</a></li> <li> <a href="http://www.george-smart.co.uk/phpsysinfo">PHP SysInfo</a></li> <li> <a href="http://www.george-smart.co.uk/piwik">Piwik</a></li> <li> <a href="http://www.george-smart.co.uk/awstats/awstats.pl">Awstats</a></li> <li> <a href="http://www.george-smart.co.uk/mindterm">MindTerm</a></li> <li> <a href="http://www.george-smart.co.uk/backup/">Backups</a></li> </ul> <h1>Useful Tutorials</h1> <ul> <li> <a href="https://help.ubuntu.com/community/OpenVPN">OpenVPN Bridging (working)</a></li> </ul> <h1>WikiStuff From SideBar</h1> <ul> <li> Wiki Stuff</li> <li>* mainpage|mainpage-description</li> <li>* portal-url|portal</li> <li>* currentevents-url|currentevents</li> <li>* recentchanges-url|recentchanges</li> <li>* randompage-url|randompage</li> <li>* helppage|help</li> </ul> PdfBook: <a href="{{fullurl:{{FULLPAGENAMEE}}|action=pdfbook}}">download this selection of articles as a PDF book</a> <h1>SSL</h1> SSL certs from <a href="https://letsencrypt.org/">letsencrypt.org</a> via their <a href="https://github.com/letsencrypt/letsencrypt">letsencrypt client on github</a>. <h1>Website Logo</h1> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/Logo.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/Logo.png" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/LogoWide.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/LogoWide.png" class="aligncenter"></a> <h1>Maths</h1> \int e^x = f(u)_n <math> <blockquote> \phi_n(\kappa) = \frac{1}{4\pi^2\kappa^2} \int_0^\infty \frac{\sin(\kappa R)}{\kappa R} \frac{\partial}{\partial R} \left<a href="R^2\frac{\partial">D_n(R)}{\partial R}\right</a>\,dR </math></blockquote> <h1>IFrames</h1> This content is provided by <i>/cgi-bin/frame.cgi</i> <html> <iframe src="/cgi-bin/frame.cgi" width="100%" frameborder="0"> <blockquote> <p>Your browser does not seem to support iframes.</p> </iframe></blockquote> </html> It finishes here. <h3>FLV Player</h3> This uses PaulGU's FLV Player extension to MediaWiki. <center><wikiflv width="450" height="270" logo="true">Honda_accord.flv|Honda_accord.png</wikiflv></center> See <a href="http://paulgu.com/wiki/FLV_Player">http://paulgu.com/wiki/FLV_Player</a> for more information. <h1>Server Tools</h1> Some bandwidth tools monitors <ul> <li> netstat</li> <li> iptraff</li> <li> nethogs</li> <li> nload</li> <li> bmon</li> <li> iftop -n</li> <li> slurm -s -i eth0</li> <li> speedometer -r eth0 -t eth0</li> <li> netwatch</li> <li> netload eth0</li> </ul> <h1>Revolver Map</h1> <a href="http://www.george-smart.co.uk/revolver_map.html">Click here for the map</a> <b>FIXME_Category :Website</b> <b>FIXME_Category :Admin</b> Android ADB udev http://new.george-smart.co.uk/android_adb_udev closed page closed 0 2012-01-12 14:09:09 draft android_adb_udev 2990 This page gives the main steps in setting up a udev rule to bridge ports to/from your android phone using ADB. <h1>The Script</h1> The script is called by udev and actually makes the bridge. You will need to adjust your path for adb on the bottom line. Name it <i>/opt/google/phone_forward.sh</i> <blockquote> #!/bin/bash # Script to link ADB with my phone, to be called from udev. # George Smart, M1GEO. 03/Oct/2011. /opt/google/android-sdk/platform-tools/adb forward tcp:8080 tcp:8080 # Notifications requre "libnotify-bin" from repos. Not Working Yet. notify-send "HTC Desire Connected" "ADB was launched via UDEV" --icon "/usr/share/pixmaps/pidgin/emotes/default/phone.png" </blockquote> You will need to make it executable; <i>sudo chmod a+x /opt/google/phone_forward.sh</i> <h1>The udev Rule</h1> We then made udev call this script whenever the phone is plugged in. <a href="http://reactivated.net/writing_udev_rules.html#external-run">This link</a> shows you how to run external programs from udev rules. <a href="http://developer.android.com/guide/developing/device.html">This link</a> shows the vendor IDs, etc, for various phones. The udev rule is as follows. Name it <i>/etc/udev/rules.d/android_phone_adb.rules</i> <blockquote> SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev" RUN+="/opt/google/phone_forward.sh" </blockquote> <b>FIXME_Category :Computers</b> <b>FIXME_Category :Phones</b> <b>FIXME_Category :Programming</b> Antenna Radiation Pattern http://new.george-smart.co.uk/antenna_radiation_pattern 2991 draft antenna_radiation_pattern 2012-01-12 14:09:40 0 closed page closed After building the <a href="http://new.george-smart.co.uk/432mhz_yagi">432MHz Yagi</a>, I wanted a way of measuring the <a href="http://en.wikipedia.org/wiki/Near_and_far_field">far-field pattern</a> (radiation pattern) of the beam. At 432 megahertz, the wavelength is pretty small and so creating a crude test range in the garden was possible - so I decided to do so. This page describes how I did it. <html><center><img src="http://upload.wikimedia.org/wikipedia/en/8/8e/Field_regions_for_typical_antennas.gif"></center></html> The far-field radiation pattern is regarded to start after 2 wavelenths from the RF source. Before that, the near-field pattern dominates, which has an unsettled radiation pattern. The pattern is usually said to have settled at a distance of \tfrac{2D^2}{&lambda;}. This gives us the minimum distance between the source antenna (DUT) and our reference antenna (a dipole). For our experiment, we need to observe the far-field pattern. To do this, we must be at least 2 wavelenths away from the RF source (or <a href="http://new.george-smart.co.uk/432mhz_yagi">432MHz Yagi</a>). So firstly, lets evaluate our two formulae: We know: <ul> <li> D - the main antenna dimention (this is the driven element length)</li> : D = 330.13\;mm = 0.33013\;m = 0.33\downarrow\;m</ul> <ul> <li> f - the frequency of operation, and therefore &lambda;</li> : f = 432.2 \times 10^6 Hz</ul> So we can calculate: &lambda; = \frac{3 \times 10^8}{432.2 \times 10^6} = 0.694123091\;m = 0.70\uparrow\;m \therefore \rightarrow 2 &lambda; = 2 \times 0.694123091\;m = 1.39\uparrow\;m \frac{2D^2}{&lambda;} = \frac{2(0.33013)^2}{0.694123091} = 0.314024467\;m = 0.31\downarrow\;m At a distance of 0.31 metres, the fields should have settled and the far-field pattern become established. At a distance of 1.39 metres, we should be into the established far-field pattern. Using a distance greater than 1.39 is advisable, but a minimum. <h1>The Set Up</h1> The diagram below shows the physical layout of the equipment used in this test. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/AntennaProp_Layout.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/AntennaProp_Layout.png" width="300" alt="Layout" class="aligncenter"></a> <ul> <li> <b>YAGI (DUT)</b> is the Yagi that we are measuring (device under test).</li> <li> <b>REFERENCE DIPOLE</b> is omni-directional antenna used to receive the DUT's transmissions.</li> <li> <b>ESG</b> is a RF signal source on the frequency of interest, here a HP ESA on 432.2 MHz @ 0dBm into the DUT.</li> <li> <b>VNA</b> is a calibrated RF signal receiver on the frequency of interest, here a DG8SAQv2 VNWA.</li> <li> <b>PC</b> is a HP 530 personal computer running the DG8SAQ v34.1b VNWA control software.</li> </ul> <h1>Making The Measurement</h1> With the ESA and receiver (here, the VNA in spectrum analyser mode) set on the frequency of interest, set the ESA set to a suitable power level such that the receiver receives a strong signal when the beam directly faces the reference antenna. Using a protractor (see <a href="http://www.ossmann.com/protractor/">here</a> for a printable one) it is possible to adjust the angle between the directional antenna under test (here, the <a href="http://new.george-smart.co.uk/432mhz_yagi">432MHz Yagi</a> and the reference dipole. Factors such as the receiving dipole's frequency response, gain, etc are not important, as they remain constant over all angles of the DUT, and so are eliminated when adjusting the ESA output power. Starting with the reference dipole aligned on the testing Yagi's bore-site, slowly rotate the testing Yagi about it's axis. Tabulate the receive signal strength as a function of the test Yagi's angle off bore-site. Depending on the symetry of your antenna, you me be able to only do one half and then repeat it. Either way, you need to end up with signal strengths for angles in the range 0 to 360 degrees. Use as high resolution as you can. I did every 5&deg; but as you can see from the result, that it was not really enough. Some of the side-lobe details are lost. Once you have a table of results, load them into your preferred number-crunching tool of choice; Microsoft Excel, LibreOffice, MathWorks MATLAB, gnuplot, etc. And plot them. For simplicity, I describe here the process for LibreOffice (as it is free software <a href="http://www.libreoffice.org/get-involved/developers/])">and available for most platforms [http://www.libreoffice.org/download/</a>. This should be very similar for Microsoft Excel. The first stage is to normalise the antenna's gain (if you have not already done so) to 0dB. This can be done by adding an offset (in dB) to the value measured (equivalent of multiplying natural numbers to obtain a normalised value of 1). The largest value should be 0 dB, and will probably occur at bore-site (0&deg;). Once you have this, and it really is simple to do, you are ready to create a polar plot of you're antenna. The first step is to select the two columns you wish to plot. I have one column with the angle and another with the normalised gain measurement. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/AntennaProp_PolarPlot_Howto_1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/AntennaProp_PolarPlot_Howto_1.png" width="700" alt="Click image twice to enlarge" class="aligncenter"></a> Next click the <i>Chart</i> icon (or <i>Insert > Chart...</i>) to open the chart wizard dialogue box. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/AntennaProp_PolarPlot_Howto_2.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/AntennaProp_PolarPlot_Howto_2.png" width="700" alt="Click image twice to enlarge" class="aligncenter"></a> Once you've got the chart wizard, you need to select the <i>Net</i> (or <i>Cobweb</i>) type, and select to plot <i>Lines Only</i> (unless you want individual points - whatever suits you). Ignore the random mess of a chart you're being shown. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/AntennaProp_PolarPlot_Howto_3.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/AntennaProp_PolarPlot_Howto_3.png" width="700" alt="Click image twice to enlarge" class="aligncenter"></a> In the next window, you tell the wizard that one of the columns has the labels for the other column. This is done with the <i>First column as label</i> tick option. You're preview should look more sane now. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/AntennaProp_PolarPlot_Howto_4.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/AntennaProp_PolarPlot_Howto_4.png" width="700" alt="Click image twice to enlarge" class="aligncenter"></a> Finally label the graph up. All through my education, from secondary school to postgraduate level, it has always been hammered into me: <i>label your graph, and label it well</i> and <i>always label each axis</i>. This may not be appropriate for your graph, but I felt the need to stress it! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/AntennaProp_PolarPlot_Howto_5.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/AntennaProp_PolarPlot_Howto_5.png" width="700" alt="Click image twice to enlarge" class="aligncenter"></a> And there you have it. A polar plot in LibreOffice (maybe Excel too). Greater control is provided by <i>gnuplot</i> (free) and <i>The MathWork's MATLAB</i> should you require it, but these are more complex. <h1>The Result</h1> The image below is the result of testing above. As you can see it is under-sampled; resolution would need to be higher in order to fully view the nature of the lobes as they are masked by stronger lobes at this resolution. Antenna is the <a href="http://new.george-smart.co.uk/432mhz_yagi">432MHz Yagi</a>. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/AntennaProp_432MHzYagi_5degrees.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/AntennaProp_432MHzYagi_5degrees.png" width="700" alt="Propagation Pattern of 432MHz Yagi" class="aligncenter"></a> <h1>VNWA</h1> After getting the above result, I was keen to get a better method to assess the radiation pattern of the antenna. I used my <i>DG8SAQ Vector Network Analyzer</i> (VNWA) to try and achieve better results. In the RADAR mode, the VNWA transmits a signal on a specified frequency and then listens on the same frequency. Samples of received signal power are taken at specific moments in time, and as the antenna rotates slowly, produce the antenna radiation pattern we are all used to seeing. This section details a bit about how I did this with the VNWA. A good place to start is the help file for the VNWA, specifically the <i>Antenna Radiation Pattern</i> topic. The setup was very similar to the setup described before; only this time a small electric motor was used to rotate the antenna. This motor was a 12V DC motor I bought with this idea in mind. It is geared down to 10 rpm. By dropping the input voltage to around 3V it was possible to get the rotation speed to around 3 rpm, or a rotation time of 20 seconds. This gives us enough samples to get a good representation of the antenna radiation pattern. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/AntennaProp_432MHzYagi_RotorMotor.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/AntennaProp_432MHzYagi_RotorMotor.jpg" width="150" alt="Antenna Rotator" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/AntennaProp_432MHzYagi_AntennaRotating.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/AntennaProp_432MHzYagi_AntennaRotating.jpg" width="700" alt="Antenna Rotating" class="aligncenter"></a> The next obvious question is how did I get an RF feed to the antenna. It initially seems a complex problem but after a little thinking, and some ideas from my father, we settled on using a short patch of coax to rotate with the antenna, and then using a series of coaxial connectors (which rotate freely, such as BNC) to connect to the static coaxial cable. This is not the perfect solution, but it worked well enough for me. I used a few connectors in series to ensure that it all rotated freely. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/AntennaProp_432MHzYagi_CoaxSlipFeed.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/AntennaProp_432MHzYagi_CoaxSlipFeed.jpg" width="200" alt="Coax Slip Feed" class="aligncenter"></a> Initially the power output of the VNWA was too low (at -20dBm) and so it become clear from the outset that I would need to use the ESG as I had done in the previous experiments detailed above. Using a Marconi ESG with a power output of +20dBm made all the difference. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/AntennaProp_432MHzYagi_MarconiESG.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/AntennaProp_432MHzYagi_MarconiESG.jpg" width="700" alt="Marconi ESG" class="aligncenter"></a> Using a simple dipole antenna as the receiving antenna I was the able to sample the received power and thus calculate the propagation pattern of the <a href="http://new.george-smart.co.uk/432mhz_yagi">432MHz Yagi</a> at it rotates. The image below shows what the antenna's radiation pattern looks like. There are still issues with it, but it is much better than the previous attempt. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/AntennaProp_432MHzYagi_Pattern.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/AntennaProp_432MHzYagi_Pattern.png" width="700" alt="Radiation Pattern" class="aligncenter"></a> Clearly here the main lobe is at 239&deg;. This is just an issue of triggering, and is nothing important. That is the front of the beam! However, you notice that the pattern is non-symmetrical. This is due to reflections from large surfaces (such as the workshop wall) and large metal garden furniture. If I get some time in the future, I will try and repeat this experiment in a large open areas, such as a local park. <b>FIXME_Category :Antenna</b> <b>FIXME_Category :Radio</b> <b>FIXME_Category :Electronics</b> Antennas and Propagation http://new.george-smart.co.uk/antennas_and_propagation draft antennas_and_propagation 1718 closed page closed 0 2011-02-25 22:26:58 Under construction. <b>FIXME_Category :Lecture Notes</b> <b>FIXME_Category :Academic</b> <b>FIXME_Category :Antennas</b> <b>FIXME_Category :Radio</b> APRS http://new.george-smart.co.uk/aprs 5326 aprs draft 0 2015-09-17 20:56:01 closed closed page = IGate and Digipeater = This APRS setup is run on a <a href="http://www.raspberrypi.org/">Raspberry Pi</a> model B (512 MB RAM, ARM6 1 GHz CPU). The IGate is handled by <a href="http://pakettiradio.net/aprsg/">aprsg</a> and the digipeater by <a href="http://digined.pe1mew.nl/">DIGI_NED</a>, both built from source, using the Linux AX.25 Kernel interface to control the KPC-9612+ TNC. <h1>Radio Coverage</h1> This is the radio coverage of the IGate and Digipeater based on the locations of received stations. The main area of reception is clearly visible. There are area's further out that this map doesn't show, but are likely to be subject to band conditions. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/APRS_Coverage.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/APRS_Coverage.png" width="600" alt="APRS Coverage - Click for better map." class="aligncenter"></a> <!-- <h1>Stations Heard</h1> Below is (should be) a list of stations that my node can hear on APRS. The list below is in a frame, due to limitations in the wiki. Use the <a href="http://www.george-smart.co.uk/cgi-bin/packet/packet.cgi">script</a> for a raw text version. <html> <center> <iframe src="/cgi-bin/packet/mheard.cgi?mode=text&options=aprs" width="100%" height="768" frameborder="0"> <blockquote> <p>Your browser does not seem to support iframes.</p> </iframe></blockquote> </center> </html> --> <h1>Graphs</h1> These graphs show the data received/transmitted on the APRS port of the server, ax0. <html><!---<center><img src="http://home.george-smart.co.uk/graphs/ax0/ax0_hour.png"></center>---></html> <html><!---<center><img src="http://home.george-smart.co.uk/graphs/ax0/ax0_day.png"></center>---></html> <i>Sorry, currently unavailable.</i> <h1>Hardware</h1> The image below is a photograph of the hardware used for APRS at the main QTH. Formerly a <a href="http://new.george-smart.co.uk/puxing">Puxing</a> handheld was used on APRS, putting out about 3W on 144.800MHz. However, during some QRM investigations we found the charging circuitry to cause considerable electrical noise and decided to replace the handheld with something a little more 'professsional'. The radio now is a Yaesu FT-2800M capable of a whopping 65 watts. The radio was acquired for a good price and is now performing APRS very nicely with a Kantronics KPC-9612 TNC. The power is set to 4 watts. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/APRS_Base.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/APRS_Base.jpg" width="600" alt="Hardware for APRS" class="aligncenter"></a> <h1>Mobile APRS</h1> Mobile APRS is done through the use of my <a href="http://new.george-smart.co.uk/mobile_car_station">Mobile Car Station</a>. This uses a <a href="http://www.foxdelta.com/products/foxtrak-old.htm">FoxDelta FoxTrak</a> with my <a href="http://new.george-smart.co.uk/yaesu_ft_857d">Yaesu FT-857D</a> to produce APRS frames from GPS. See the <a href="http://new.george-smart.co.uk/mobile_car_station">Mobile Car Station</a> page for more details. <h1>APRS.FI</h1> These link to <a href="http://aprs.fi/">APRS.FI</a>. Due to changes in the APRS.FI interface, the images have been removed. <table cellpadding="2" align="center" border="1" > <tr><td></td><td>Fixed (M1GEO)</td><td>Mobile (M1GEO-7)</td></tr><tr><td>Source</td><td><a href="http://aprs.fi/info/graphs/a/M1GEO">APRS.FI M1GEO</a></td><td><a href="http://aprs.fi/info/graphs/a/M1GEO-7">APRS.FI M1GEO-7</a> </td></tr><tr><td>Packets Transmitted</td><td>(IMAGE)</td><td>(IMAGE)</td></tr><tr><td>New Positions</td><td>(IMAGE)</td><td>(IMAGE)</td></tr><tr><td>Velocity</td><td>-</td><td>(IMAGE)</td></tr><tr><td>IGate'd Packets</td><td>(IMAGE)</td><td>-</td></tr><tr><td>RF Packets Heard Frist</td><td>(IMAGE)</td><td>-</td></tr><tr><td>Receive Distance</td><td>(IMAGE)</td><td>-</tr> </table> <h1>APRS-IS Passcode Generator</h1> My APRS-IS Passcode Generator can be found <a href="http://new.george-smart.co.uk/aprs_callpass">here</a>. <b>FIXME_Category :Radio</b> <b>FIXME_Category :Computers</b> APRS Callpass http://new.george-smart.co.uk/aprs_callpass aprs_callpass draft 3650 closed closed page 0 2012-11-13 21:11:09 This page lets you calculate an <a href="http://new.george-smart.co.uk/aprs">APRS</a> Passcode required to connect to the APRS-IS network. <html> <iframe src="/cgi-bin/aprs_callpass.cgi" width="100%" height="200px" frameborder="0"> <blockquote> <p>Sorry, but you're browser doesn't appear to support frames. <a href="/cgi-bin/aprs_callpass.cgi">Click Here</a> for the direct link.</p> </iframe></blockquote> </html> APRS GPS Controller http://new.george-smart.co.uk/aprs_gps_controller draft aprs_gps_controller 3349 closed page closed 0 2012-04-21 01:02:06 With a change in driving habits, I was having issues with the car battery draining over the week that I didn't use the car for. Upon investigation, it turned out to be an issue with the APRS tracker (<a href="http://www.foxdelta.com/products/foxtrak.htm">FoxTrak</a>) and GPS being powered on always. These caused a considerable drain on the battery. I measured the currents of the associated devices. Here's what I measured: <table cellpadding="5" border="0" > <tr><td><b>I_{(Radio\;Off)}</b></td><td>4 mA</td></tr><tr><td><b>I_{(Radio\;Idle)}</b></td><td>175 mA</td></tr><tr><td><b>I_{(Radio\;TX)}</b></td><td>6160 mA</td></tr><tr><td><b>I_{(Tracker\;Idle)}</b></td><td>21 mA</td></tr><tr><td><b>I_{(GPS\;Locked)}</b></td><td>155 mA</tr> </table> It was clear that I needed a way to turn the GPS off when it wasn't required, and for that matter, the FoxTrak too. As the radio, GPS and Tracker are mounted in the boot of the car, and the front panel located in the drivers cabin, the thought of running more cables around the car wasn't too appealing. Then I had an idea. Using the Yaesu FT-7900E (radio)'s power status to guide the power status of the GPS and Tracker would be ideal - this doesn't require any additional cabling and, if done properly, would allow for the radio's Auto-Power-Off to turn the GPS and Tracker off should I forget to do so myself! Excellent! The next thing was to work out how to tell if the radio was turned on or not. There were two ideas suggested to me in the FT-7900's Yahoo Group. # Using the DATA connector's PTT control voltage (this pin is powered, and shorted to ground to cause the radio to transmit). # Using the DATA connector's 9K6 output, as this is unsquelched (detecting 'noise' on this pin would indicate the radio is on). There is of course one blatant issue; when the radio transmits the PTT voltage would be low, as to signal the radio had powered off, and; the 9K6 line would also be silent while transmitting, as to indicate once again the radio was off. A simple monostable circuit, perhaps using a NE 555 timer would allow for these 'silent' periods to be smoothed out for a short time, say 1 minute. This way, the GPS & Tracker would stay on for 1 minute after the radio powered off; after a minute the GPS & Tracker would power down also. The next step was to characterise the DATA PTT line under various circumstances. Below is a tabulation of the line voltage: <table cellpadding="5" border="0" > <tr><td><b>V_{(Radio\;Off)}</b></td><td>0.006 V</td></tr><tr><td><b>V_{(Radio\;RX)}</b></td><td>4.90 V</td></tr><tr><td><b>V_{(Radio\;TX\;(Mic))}</b></td><td>4.89 V</td></tr><tr><td><b>V_{(Radio\;TX\;(Tracker))}</b></td><td>0.016 V</tr> </table> As you can see, keying the radio from the microphone does not effect the PTT line voltage enough to matter, and the signal is indeed changed when the radio is powered off. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/GPS_Controller_Traces.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/GPS_Controller_Traces.png" width="600" alt="Radio PTT Line and GPS-Tracker Power" class="aligncenter"></a> The solution is what is called a retriggerable monostable. A monostable timer is a timer that has a fixed time element to it; it is unstable in only one state and after a specific time (hear this time is a parameter we can choose) it returns to it's one stable state. With the NE 555 IC, this stable state is once the capacitor is charged to over 2/3rds of the supply voltage. By using a 2N7000 MOSFET, we can short this capacitor preventing it from charging at all, therefore holding the 555 in it's unstable state. When the PTT line drops, the MOSFET stops shorting the capacitor, and the 555 starts timing as usual. If the radio was transmitting an APRS frame, then after a few seconds, the PTT voltage will reappear, the MOSFET reconduct and short out the capacitor once more - the net effect is that the capacitor never got to 2/3rds of the supply voltage and so the GPS was never turned off. If on the other hand the PTT voltage disappears due to the radio being powered off, then the PTT line may not appear within the 10 second window designed, and the GPS will be powered off. The schematic below is of the circuit I designed and used for my APRS GPS Controller. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/GPS_Controller_Schematic.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/GPS_Controller_Schematic.png" width="600" alt="Controller Schematic" class="aligncenter"></a> I then took a few measurements to just check things are as expected. <table cellpadding="5" border="0" > <tr><td><b>I_{(GPS\;Off)}</b></td><td>10 mA</td></tr><tr><td><b>I_{(GPS\;On)}</b></td><td>189 mA</tr> </table> Although now the idle powered off current as risen to 10 mA, is is still much lower than the 160 mA required to run the GPS. The circuit works exactly as I had hoped. Some photos to follow... <b>FIXME_Category :Radio</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Car</b> APRS Tracker http://new.george-smart.co.uk/aprs_tracker 0 2017-01-05 15:11:00 closed closed page 5591 aprs_tracker draft <b>See <a href="http://new.george-smart.co.uk/aprs">APRS</a> for more general APRS stuff.</b> The board needs some very slight modifications, since the mounting holes are a little too close to the LEDs and other components in places. However, if you aren't too bothered by that, you can <b><a href="http://dirtypcbs.com/store/designer/details/George+M1GEO/121/m1geo-aprs-tracker">*** ORDER THE PCBS HERE ***</a></b> The supplier is making my boards, but you deal with them directly. It saves messing around with the Gerber files below. You can give some of the spare boards to friends, or do a group-buy deal! All files are here, but no explanatory text. This article will be written when I have some time. There's enough information to make the boards up, parts and placement, and links here to source code, but there's no "guide" as such. I'm considering making this as a kit, since I've gone to the effort of having boards made. I think around £25 should cover costs. Feel free to make it yourself if you like. Masks and Gerbers below if you would prefer to make your own. There is no "instruction" manual with this project at present, just the silk screen and schematic. The aprstracker firmware version 0.12 (supporting 9600 baud GPS) by PE1ICQ and PE1RXQ can be downloaded here: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/aprstracker-0.12.tar.gz">aprstracker-0.12.tar.gz</a>. It is not on the author's site, since there are bugs with the altitude code. However, the code is still useful for 9600 baud GPS. Use version 0.11 if you want altitude. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/aprstracker_schematic.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/aprstracker_schematic.png" width="700" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/aprstracker_design.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/aprstracker_design.png" width="600" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/aprstracker_bottomcopper.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/aprstracker_bottomcopper.png" width="400" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/aprstracker_topcopper.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/aprstracker_topcopper.png" width="400" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/aprstracker_topsilk.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/aprstracker_topsilk.png" width="400" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/aprstracker_pcbtop.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/aprstracker_pcbtop.jpg" width="600" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/aprstracker_pcbbottom.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/aprstracker_pcbbottom.jpg" width="600" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/aprstracker_pcbmade.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/aprstracker_pcbmade.jpg" width="600" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/aprstracker_pcbfitted.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/aprstracker_pcbfitted.jpg" width="600" class="aligncenter"></a> Gerber: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/aprstracker_gerber.zip">aprstracker_gerber.zip</a> <a href="http://dirtypcbs.com/store/designer/details/George+M1GEO/121/m1geo-aprs-tracker">ORDER THE PCBS HERE</a> <h1>Using TTL GPSes</h1> As GPS receivers are moving on to USB and Bluetooth, they become increasingly more expensive. The tracker, as with pretty much all trackers, uses RS232 input. Many of the cheap GPS receivers on eBay such as the VK16HX/VK16U6 receivers have TTL output for direct connection into Arduinos and other hobbiest projects. To make these compatible with the tracker, one needs to invert the TTL data (i.e., 1 becomes 0, and 0 becomes 1). This is because traditionally a MAX232 would be used. Although a MAX232 is the right part to use, a simple transistor inverter will suffice, and I have used one on several occasions. The very poor hand drawn sketch was put up in a rush to aid with the explanation: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/aprstracker_inverter_mosfet.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/aprstracker_inverter_mosfet.png" width="600" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/aprstracker_inverter_bjt.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/aprstracker_inverter_bjt.png" width="600" class="aligncenter"></a> APRS with the FUNcube Dongle http://new.george-smart.co.uk/aprs_with_the_funcube_dongle 5003 draft aprs_with_the_funcube_dongle 0 2014-07-11 16:50:00 page closed closed I was wondering how I could APRS to work with the <a href="http://new.george-smart.co.uk/fcd">FunCube Dongle</a> under Linux. While experimenting with the FunCube Dongle under Linux, I settled on using <a href="http://www.oz9aec.net/index.php/gnu-radio/gqrx-sdr">GQRX</a> by Alexandru Csete. Most of the newer versions have a built in AFSK1200 modem, and the version I use here, Version 2.1.148, is no exception. When GQRX is running with the AFSK1200 modem enabled, all of the decoded data is dumped to the program's standard out. By redirecting the standard out to a file, I was able to get a copy: <blockquote> ./gqrx > raw.txt </blockquote> The file <i>raw.txt</i> then contains a copy of all of the data output on <i>stdout</i> by the GQRX binary. Once GQRX has started, selecting <i>Data</i> and then <i>AFSK1200 Decoder</i> from the menu enables the software modem. Tune your SDR to an appropriate channel with AX.25 AFSK 1200 baud, such as APRS (144.8000 MHz in Europe) and you will begin to receive data. The two screens may look something like below: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/APRS_FCD_GQRX1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/APRS_FCD_GQRX1.png" width="500" alt="GQRX Running" class="aligncenter"></a> As well as being shown in the decoder window, the AX.25 data is also output onto the commandline via <i>stdout</i> and <i>piped</i> to our <i>raw.txt</i> file as discussed above. The decoder window shows the received data too: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/APRS_FCD_AFSK1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/APRS_FCD_AFSK1.png" width="500" alt="GQRX AFSK1200 Decoder Running" class="aligncenter"></a> Using some standard UNIX commands, we can filter out the modem information and the AX.25 frames and then create a TCP connection which <a href="http://www.xastir.org">XASTIR</a> can connect to. So first of all, we need to read the <i>raw.txt</i> file. As the file is constantly changing, we use <i>tail -f</i> to follow the file. Without tinkering too much with the data, we can only use data that's already in the correct format; i.e. data that's been digipeated already. It needs to have the format: <blockquote> MB7IIP-1>APRS,TCPIP,MB7UUE*:=5202.12N/00110.72E/PHG2430/Echo-IRLP node 5503 / ALL-Star Node 2498 </blockquote> The GQRX software modem precedes frames of this time with a <i>}</i>, so we can use <i>grep</i> to filter those lines out for us by running <i>grep ^}</i> which allows through only lines starting with <i>}</i>. As the <i>}</i> is inserted by GQRX's AFSK modem and isn't part of the APRS protocol, we must remove it. We use <i>sed -e "s/^}//"</i> to remove the <i>}</i> from the beginning of each line. Finally, we use <i><a href="http://www.dest-unreach.org/socat/">socat</a></i> to create a TCP stream from <i>stdin</i> which allows us to connect XASTIR to an <i>Internet Server</i> on our PC and receive the data from the FCD. Running <i>socat STDIN TCP-LISTEN:14580</i> tells socat to take input from <i>stdin</i> and listen to TCP port 14580 for a connection for the output. Port 14580 is the standard APRS-IS connection port - It can be whatever port you want. Notice that it isn't an APRS-IS server, and doesn't accept any kind of control, filtering, duplicate checking, etc. One last note. The UNIX/Linux (Bash) shell likes to buffer any inputs that are not interfacing with real terminals (ttys). When we pipe the data through the chain of commands, buffering optimises the CPU usage of the commands, but, it kills the timing as it gathers data (usually 4K at a time) together. This isn't really what you want (although it works fine), so the <i>unbuffer</i> command stops this. Unbuffer comes with <i>expect-dev</i> on Ubuntu. <i>Unbuffer -p</i> passes the standard input along the chain to the command you're unbuffering... Sounds complicated, all that, but here's the command: <blockquote> unbuffer tail -f raw.txt | unbuffer -p grep ^} | unbuffer -p sed -e "s/^}//" | socat STDIN TCP-LISTEN:14580 </blockquote> Here, all the commands are linked together. Notice that the final command, socat, is buffered, so it can control the stream speed. Next we connect up XASTIR with <i>socat</i>. I assume that XASTIR is installed and running okay. From there, click <i>Interfaces</i> and then <i>Interface Control</i> and then <i>Add</i>, select <i>Internet Server</i> and <i>Add</i> again. Unless you're doing something smart, the <i>Host</i> will be <i>localhost</i>, <i>Port</i> will be as above (14580). Untick <i>Allow transmitting?</i> as there's no support for it with <i>socat</i>. Leave passcode empty as <i>socat</i> won't care, and remove the filter so the box is empty. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/APRS_FCD_XASTIR_Setup.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/APRS_FCD_XASTIR_Setup.png" width="500" alt="XASTIR Interface Setup" class="aligncenter"></a> Once done, you'll have the interface in <i>Interface Control</i>. Select the interface you just configured and then click <i>Start</i>. If it all went correct, and the previous command is running, you'll see <i>UP</i> next to the interface: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/APRS_FCD_XASTIR_InterfaceControl.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/APRS_FCD_XASTIR_InterfaceControl.png" alt="XASTIR Interface Control Up" class="aligncenter"></a> Now as soon as valid frames come through, you will receive them on the XASTIR map. Note that this only works for stations that have been digipeated already, because of the crude nature of the dataflow above. If you were to write a small bash script to fix the un-digipeated data into the correct format, you could receive all the stations heard. The data is there, just unusable in the format from the AFSK decoder. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/APRS_FCD_XASTIR.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/APRS_FCD_XASTIR.png" width="500" alt="XASTIR" class="aligncenter"></a> <b>FIXME_Category :Linux</b> <b>FIXME_Category :Radio</b> <b>FIXME_Category :FunCube</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Computers</b> <b>FIXME_Category :RaspberryPi</b> APRS. http://new.george-smart.co.uk/aprs_ 3063 aprs_ draft 0 2012-01-15 16:52:21 closed page closed This page was moved here: <a href="http://new.george-smart.co.uk/aprs">APRS</a>. <a href="/contact-me">Please report this message to the webmaster</a>. APT Weather Fax http://new.george-smart.co.uk/apt_weather_fax draft apt_weather_fax 4208 page closed closed 0 2013-03-21 23:50:03 <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/NOAA 15 09111440 MCIR.JPG"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/NOAA 15 09111440 MCIR.JPG" width="600" alt="Coloured APT Image, received by myself on 11/Sept/2011" class="aligncenter"></a> <center>Coloured APT Image, received by myself on 11/Sept/2011</center> <h1>Satellites</h1> NOAA Satellites transmit images back to the ground using the <a href="http://en.wikipedia.org/wiki/Automatic_Picture_Transmission">Automatic Picture Transmission</a> protocol. This provides grayscale images via the 137MHz band. As far as I know, only 4 satellites are in use at the moment, NOAA 15, 17, 18 and 19. The details are below: <ul> <li> NOAA 15: 137.6200 MHz (VTX-2)</li> <li> NOAA 17: 137.5000 MHz (VTX-1)</li> <li> NOAA 18: 137.9125 MHz (VTX-2)</li> <li> NOAA 19: 137.1000 MHz (VTX-1)</li> </ul> You may also be interested in the Russian/Soviet satellites also transmitting APT Images: <ul> <li> Meteor 2-21: 137.8500 MHz</li> <li> Meteor 3-5: 137.8500 MHz</li> </ul> <h1>Hardware</h1> <h2>Radio</h2> The <a href="http://en.wikipedia.org/wiki/Automatic_Picture_Transmission">APT</a> system uses high bandwidth (~ 34 kHz). If you are looking to get nice looking images, you need to have a wide receiver bandwidth. Lower communications receivers have much lower bandwidths, and so much of the high definition is lost. At the moment, I am using a <a href="http://new.george-smart.co.uk/yaesu_ft_857d">Yaesu FT-857D</a> communications transceiver with a bandwidth of around 2.5 kHz (13.6 times too small) and so the quality of the received images is not good. <h2>Antenna</h2> I am using a homebrew Quadrifilar Helix Antenna. It is up at about 15 metres above ground level. <center><table > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/APT_WX_QFT_1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/APT_WX_QFT_1.jpg" width="600" alt="Antenna on the bed" class="aligncenter"></a></tr> </table> </center> <h1>Software</h1> As always on my site, I am looking to do this with Linux (at the time of writing, Ubuntu 11.04 amd64). At the minute, the only Linux program I could find was WXtoimg. It has lots of options and as of yet, the best I've managed to decode is shown in the Results section, below. I found that using the command line option worked better in my case. xWXtoIMG wouldn't interface with the new PulseAudio subsystem on Ubuntu 11.04 so I wrote a short script that I called from within the computer Cron daemon to record satellite passes. These were recorded at 44100 Hz for around 20 minutes (centred on the satellite pass, typically 8-15 minutes). <i>arecord</i> was used to do the recording, with the following command: <blockquote> george@diode:~/Desktop/APT$ arecord -f cd -t wav -d $((20*60)) -c 1 "APT_V2_20110911_0350.wav" </blockquote> This records a mono (-c 1) file (APT_V2_20110911_0350.wav) for 1200 (-d $((20*60))) seconds. This file is then passed to WXtoIMG to create a PNG image, such as that in the results below: <blockquote> george@diode:~/Desktop/APT$ wxtoimg -S -t NOAA -f 44100 APT_V2_20110911_0327.wav test_A.png Satellite: NOAA Status: signal processing............................ Gain: 5957.7 Channel A: 3/3B (mid infrared) Channel B: 4 (thermal infrared) </blockquote> The command line arguments specify that the satellite is of the NOAA variety, travelling south and the file (named) should be converted into test_A.png with a sample rate of 44.1 kHz. <h1>Results</h1> This section shows the results I have achieved so far: The images I got were of low quality as the receiver I was using (<a href="http://new.george-smart.co.uk/yaesu_ft_857d">Yaesu FT-857D</a>) doesn't have a wide enough FM passband. As a result, much of the quality is lost. The signal strength was also only an S1 on the 1/4 wave vertical antenna, and so the images are understandably poor. These images are the second and third attempt. The first attempt was not worth showing. Nor are these really, but in want of something better and to fill the whole titled Results, here they are! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/APT_WX_Second_Attempt.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/APT_WX_Second_Attempt.png" width="600" alt="Second Attempt with WXtoimg" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/APT_WX_Third_Attempt.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/APT_WX_Third_Attempt.png" width="600" alt="Third Attempt with WXtoimg" class="aligncenter"></a> Out of curiosity, I wanted to see what the NOAA APT signal looked like in the frequency domain. A quick F-scaled FFT shows this. Note, this is only the range of frequencies that are received by the comms radio. The actual APT signal will be far wider than this! Here you can clearly see the 2400 Hz carrier. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/APT_WX_FFT.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/APT_WX_FFT.png" alt="MATLAB FFT of NOAA18 Reception with 2.5K filter" class="aligncenter"></a> <h1>Attempt 2</h1> So after deciding that my main issue was the limited bandwidth of the FT-857D, I decided to give my AOR-2002 a go. It's got a 25 kHz Wide-FM mode, so I figured that it would be a few steps closer to receiving better APT WX pictures. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/AOR-2002_Receiver.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/AOR-2002_Receiver.jpg" width="400" alt="AOR-2002 Receiver" class="aligncenter"></a> Taking the AOR-2002 receiver and my laptop into the garden, I connected up to the QFH antenna (see above). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/APT_WX_GardenSetup.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/APT_WX_GardenSetup.jpg" width="600" alt="Garden Set Up" class="aligncenter"></a> The gallery below shows some of the pictures received. Note, that they are noisy due to radio-paging break through. This is something the AOR-2002 suffers quite badly from. <center><gallery> Image:NOAA_15_09111440_CONTRASTA.JPG|NOAA_15_09111440_CONTRASTA Image:NOAA_15_09111440_CONTRASTB.JPG|NOAA_15_09111440_CONTRASTB Image:NOAA_15_09111440_HVCT.JPG|NOAA_15_09111440_HVCT Image:NOAA_15_09111440_MCIR.JPG|NOAA_15_09111440_MCIR Image:NOAA_15_09111440_MSA.JPG|NOAA_15_09111440_MSA Image:NOAA_15_09111440_NO.JPG|NOAA_15_09111440_NO Image:NOAA_15_09111440_NORM.JPG|NOAA_15_09111440_NORM Image:NOAA_18_09111405_CONTRASTA.JPG|NOAA_18_09111405_CONTRASTA Image:NOAA_18_09111405_CONTRASTB.JPG|NOAA_18_09111405_CONTRASTB Image:NOAA_18_09111405_HVCT.JPG|NOAA_18_09111405_HVCT Image:NOAA_18_09111405_MCIR.JPG|NOAA_18_09111405_MCIR Image:NOAA_18_09111405_MSA.JPG|NOAA_18_09111405_MSA Image:NOAA_18_09111405_NO.JPG|NOAA_18_09111405_NO </gallery></center> <h1>Sources</h1> <ul> <li> [1] POES Spacecraft Status Main Page</li> ::(http://www.oso.noaa.gov/poesstatus/) </ul> ::Taken on 11/May/2011 at 03:35 BST <ul> <li> [2] A Guide to Decoding A.P.T. Weather Satellite Images</li> ::(http://www.geo-web.org.uk/process.html) </ul> ::Taken on 11/May/2011 at 03:05 BST <ul> <li> [3] Space Frequency Listing, 137-138 MHz, Downlink</li> ::(http://www.svengrahn.pp.se/trackind/freqlist/SpaceFreq4.htm) </ul> ::Taken on 11/May/2011 at 03:28 BST <b>FIXME_Category :Radio</b> <b>FIXME_Category :Computers</b> <b>FIXME_Category :Linux</b> Arduino http://new.george-smart.co.uk/arduino closed closed page 2013-01-10 23:21:24 0 arduino draft 3797 This page is created, but hasn't been written yet. You can <a href="http://george-smart.co.uk/wiki/Special:Search?search={{FULLPAGENAME}}&fulltext=Search|">search for pages that mention {{FULLPAGENAME}}</a>. <b>FIXME_Category :ToDo</b> Arduino AD9851 http://new.george-smart.co.uk/arduino_ad9851 draft arduino_ad9851 3530 closed page closed 0 2012-07-17 21:01:26 This page is here to provide me with a few links to help me in the event of the inevitable memory loss. This page details how I got my DDS-60 AD9851 DDS board to generate signals from an Arduino. My code is using that developed by Peter Marks, <a href="http://blog.marxy.org/2008/05/controlling-ad9851-dds-with-arduino.html">blog.marxy.org</a>. It works pretty much perfectly. I use advised pin configuration, with the notable exception that I power my DDS-60 board from the USB 5V supply from the computer, as it saves on regulators getting warm. Remember to change this (should you need) to use the DDS-60's regulator rather than the Ardunio's in the event of external power. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/07/Arduino_AD9851.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/07/Arduino_AD9851.jpg" width="600" alt="Arduino DDS-60 Configuration" class="aligncenter"></a> It should be noted that the above image was a <i>proof of concept</i> and was later made into a more physically strong configuration. <b><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/M1GEO_DDS_AD9851.tar.gz">Source Code for AD9851</a></b> DDS_LOAD -- Arduino Pin 8 DDS_CLOCK -- Arduino Pin 9 DDS_DATA -- Arduino Pin 10 <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Arduino</b> <b>FIXME_Category :Radio</b> Arduino APRS http://new.george-smart.co.uk/arduino_aprs 5175 arduino_aprs draft 0 2014-12-23 22:48:45 closed closed page This page was moved here: <a href="http://new.george-smart.co.uk/arduino_tnc">Arduino TNC</a>. <a href="/contact-me">Please report this message to the webmaster</a>. Arduino Ethernet LED PWM http://new.george-smart.co.uk/arduino_ethernet_led_pwm 5483 draft arduino_ethernet_led_pwm 0 2016-03-22 00:24:28 page closed closed This project started when I wanted to control some LED lighting using my mobile phone. I ended up writing some Arduino code to use an Ethernet Shield, and tinkering with an Android App to talk with the Arduino via a HTTP connection and web page. <h1>The Schematic</h1> The schematic is very simple. I used an IRF640 N-channel power MOSFET to switch the LEDs, but almost any power FET will do. The gate is driven from the Arduino directly, and a pull-down resistor stops the input from floating high when the Arduino pin is in high-impedance tri-state. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/03/ArduinoEthernetLightPWM_FET.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/03/ArduinoEthernetLightPWM_FET.png" width="250" alt="Schematic" class="aligncenter"></a> The power supply used is 12V from a wall-wart, fed by the DC socket on the Arduino. The LED string positive is connected to Vin on the Arduino, the negative to the drain on the FET. The FET source is connected to the common ground (common to Arduino and wall-wart). The FET gate is connected to your preferred PWM pin on the Arduino (I use Pin 5). <h1>Arduino Code</h1> I am no elite programmer, but the code does work just fine. It uses an Arduino Uno with Wiznet Ethernet Shield. The Arduino presents a webpage over a very crude HTTP server running on port 80 (adjustable). The code is below, and is available under <a href="http://new.george-smart.co.uk/george_smart_27s_wiki_copyrights">my website's standard licence</a>. <b>Download: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/ArduinoEthernetLightPWMCode.zip">ArduinoEthernetLightPWMCode.zip</a></b> <h1>The Web Interface</h1> You can have the Arduino send any HTML you desire, as long as it fits in the program space. I have kept it very simple (and ugly), but it is functional. If you visit the IP address of your Arduino, on the port you specified (I have used port 80), then you will be served a webpage like below: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/03/ArduinoEthernetLightPWM_WEB.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/03/ArduinoEthernetLightPWM_WEB.png" alt="Webpage" class="aligncenter"></a> Entering a value and pressing Submit, will update the PWM outputs with this value. <h1>The Android App</h1> What I really wanted was a nice app I could press on my phone, either turning the lights fully on, fully off, or somewhere in between. The last time I made Android Apps I was with the masterful <a href="http://aaron-brown.net">Aaron Brown</a>, but this time I was alone. A quick Google flagged up the <a href="http://appinventor.mit.edu/">MIT App Inventor 2</a>. I watched 1 tutorial, and I was away! Again, you'll notice I'm not an arty person, but that doesn't stop me! I designed a basic looking Android screen, and I was away, blobbing code together in the App Inventor! The app screen inside the inventor can be seen below. I drag and dropped labels, buttons, sliders and the other elements you can see in a way that looked reasonably sensible. The process is very simple, and the results are quick and easy to see. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/03/ArduinoEthernetLightPWM_APP_Screen.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/03/ArduinoEthernetLightPWM_APP_Screen.png" width="300" alt="App Screen" class="aligncenter"></a> Once the screen design was done, I needed to make some code up. This was done graphically, almost, using "blocks" of code as shown below. These are again very simple to use, and you're abstracted away from the details, which I liked in this case. The 3 left blocks deal with the button presses. The top right block deals with movement of the slider, and calculating the percentage label value. The bottom right deals with the return from the HTTP web call. If there are errors, they are displayed below the buttons, otherwise, they're hidden. A global variable in the right middle allows for a single place to set the server address. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/03/ArduinoEthernetLightPWM_APP_Code.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/03/ArduinoEthernetLightPWM_APP_Code.png" width="700" alt="App Code" class="aligncenter"></a> Once the app is tested via the Live Android Linking (AI Companion), the app can be bundled into an APK for Android! Ideal! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/03/ArduinoEthernetLightPWM_APP_Phone.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/03/ArduinoEthernetLightPWM_APP_Phone.png" width="300" alt="App Phone" class="aligncenter"></a> That's about it for now, but hopefully it will give a few people some ideas! Arduino Ethernet Light PWM http://new.george-smart.co.uk/arduino_ethernet_light_pwm arduino_ethernet_light_pwm draft 5484 closed page closed 0 2016-03-22 00:24:29 This page was moved here: <a href="http://new.george-smart.co.uk/arduino_ethernet_led_pwm">Arduino Ethernet LED PWM</a>. <a href="/contact-me">Please report this message to the webmaster</a>. Arduino HELL http://new.george-smart.co.uk/arduino_hell closed page closed 0 2012-03-05 23:24:56 arduino_hell draft 3219 This page was moved here: <a href="http://new.george-smart.co.uk/arduino_hellschreiber">Arduino Hellschreiber</a>. <a href="/contact-me">Please report this message to the webmaster</a>. Arduino Hellschreiber http://new.george-smart.co.uk/arduino_hellschreiber closed closed page 2012-03-05 23:25:18 0 arduino_hellschreiber draft 3220 After playing around with <a href="http://new.george-smart.co.uk/arduino_wspr">WSPR</a>, <a href="http://new.george-smart.co.uk/arduino_qrss">QRSS</a> and <a href="http://new.george-smart.co.uk/arduino_rtty">RTTY</a> on the <b>FIXME_Category :Arduino|Arduino</b>, I decided to have a go at Hellschreiber based on the <a href="http://new.george-smart.co.uk/arduino_ad9851">Arduino AD9851</a> project. I can take no credit for this code. I simply glued <a href="http://blog.marxy.org/2008/05/controlling-ad9851-dds-with-arduino.html">Peter Mark's AD9851 code</a> together with <a href="http://brainwagon.org/2012/01/11/hellduino-sending-hellschreiber-from-an-arduino/">Mark VandeWettering's hellschreiber code</a> and put power on it. <b><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/M1GEO_AD9851_HELL.tar.gz">Source Code for AD9851 Hellschreiber Transmitter</a></b> It works wonderfully. It takes a standard string in, and sends hellschreiber via an Analog Devices AD9851. <i>Exactly what it says on the tin!</i> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/03/Arduino_Hellschreiber_FLDIGI.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/03/Arduino_Hellschreiber_FLDIGI.png" width="600" class="aligncenter"></a> <b>FIXME_Category :Arduino</b> <b>FIXME_Category :Hellschreiber</b> <b>FIXME_Category :Radio</b> Arduino QRSS http://new.george-smart.co.uk/arduino_qrss closed page closed 2012-04-21 00:55:57 0 arduino_qrss draft 3345 This page hosts my Arduino Source Code for my Arduino <a href="http://new.george-smart.co.uk/qrss">QRSS</a> transmitter. The <a href="http://new.george-smart.co.uk/qrss">QRSS</a> page has more about QRSS in general as well as some reports. The Schematic for the PA can be found here: <a href="http://new.george-smart.co.uk/1w_pa_for_10mhz">1W PA for 10MHz</a>. This amplifier makes about 800mW from the DDS-60's drive. <b><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/M1GEO_AD9851_QRSS.tar.gz">Source Code for AD9851 QRSS Transmitter</a></b> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Arduino_QRSS.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Arduino_QRSS.jpg" width="600" alt="Arduino QRSS Hardware" class="aligncenter"></a> <h1>Sources</h1> This work is based around the work of the following two people, whom in turn have provided links for their works: <ul> <li> Controlling an AD9851 DDS with an Arduino</li> : http://blog.marxy.org/2008/05/controlling-ad9851-dds-with-arduino.html</ul> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Arduino</b> <b>FIXME_Category :QRSS</b> <b>FIXME_Category :Radio</b> Arduino RTTY http://new.george-smart.co.uk/arduino_rtty draft arduino_rtty 3343 closed page closed 2012-04-21 00:55:10 0 This page contains my source code for my Arduino RTTY transmitter. This device uses an Arduino to control a DDS-60 (Analog Devices AD9851) DDS IC, which in turn creates the required frequencies to transmit RTTY at 45.45 baud (approx) with 170 Hz shift. <b><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/M1GEO_AD9851_RTTY.tar.gz">Source Code for AD9851 RTTY Transmitter</a></b> The code is a selection of modules glued together, but works well. See the YouTube video below for a demonstration. <center><a href="http://www.youtube.com/watch?v=XxERheY8VEU">Youtube Link</a></center> <html> <center> <iframe width="425" height="349" src="http://www.youtube.com/embed/XxERheY8VEU?hl=en&fs=1" frameborder="0" allowfullscreen></iframe> </center> </html> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Arduino_AD9851.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Arduino_AD9851.jpg" width="600" alt="Arduino DDS-60 Configuration" class="aligncenter"></a> <h1>Sources</h1> This work is based around the work of the following two people, whom in turn have provided links for their works. Thanks guys! <ul> <li> [RADIO] Baudot - Tim Zaman</li> : http://www.timzaman.nl/?p=138&lang=en</ul> <ul> <li> Controlling an AD9851 DDS with an Arduino</li> : http://blog.marxy.org/2008/05/controlling-ad9851-dds-with-arduino.html</ul> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Arduino</b> <b>FIXME_Category :Radio</b> <b>FIXME_Category :RTTY</b> Arduino TNC http://new.george-smart.co.uk/arduino_tnc 5331 draft arduino_tnc 2015-09-22 12:28:02 0 page closed closed I have been interested in <a href="http://new.george-smart.co.uk/aprs">APRS</a> for years, and have been running a homebrew <a href="http://new.george-smart.co.uk/aprs_tracker">APRS Tracker</a> in the car for a good few years too, as well as <a href="http://new.george-smart.co.uk/mb7ucl">MB7UCL</a> and various other bits and pieces on the APRS network. Some years back, I messed around with a PIC micro-controller based TNC which worked with limited success using an old MX614 modem chip. The project never made it onto the website. This time around, I'm using <a href="http://www.arduino.cc/">Arduino</a> boards and using the ADC on the MCU to do the demodulation of the AFSK signal to decode the AX.25 and therefore the APRS. There are several works already doing this, and this page only details some of my attempts to get the code working. Very little on this page is my own work, it's mostly just trying the work of other hams (and much better programmers). Existing works on this area include: <ul> <li> <a href="https://sites.google.com/site/ki4mcw/Home/arduino-tnc">Arduino TNC - KI4MCW</a> (Soft modem)</li> <li> <a href="http://garydion.com/projects/whereavr/">The WhereAVR - N4TXI</a> (Soft modem)</li> <li> <a href="http://hamradioprojects.com/authors/dl8rds/+airgate/">Airgate - DL8RDS</a> (Soft modem)</li> <li> <a href="http://www.bertos.org/use/examples-projects/arduino-aprs/">Arduino APRS - BeRTOS</a> (Soft modem)</li> <li> <a href="http://slepp.ca/projects/ax25-modem/">AX.25 Packet Modem on Arduino - VE6SLP</a> (Soft modem)</li> <li> <a href="http://9w2svt.blogspot.co.uk/2014/07/building-open-source-arduino-aprs.html">Building an Open Source Arduino APRS Tracker with LCD & GPS ( SVTrackR ) - 9W2SVT</a> (Soft modem)</li> <li> <a href="http://extradio.sourceforge.net/extdigi.html">extdigi, an APRS Digipeater for Arduino - LU4EXT</a> (Soft modem)</li> <li> <a href="https://www.adafruit.com/blog/2010/06/11/aprs-radio-shield-for-arduino/">Adafruit APRS Shield</a></li> <li> <a href="https://code.google.com/p/trackuino/">Trackuino - An Arduino APRS tracker</a></li> </ul> Clearly, I'm only interested in projects which use a software modem, i.e., they do not use a dedicated AFSK modem chip such as the TCM3105 or MX614. I started by playing around with <a href="https://sites.google.com/site/ki4mcw/Home/arduino-tnc">Arduino TNC by KI4MCW</a> since it uses the standard Arduino environment - some of the other projects use the AVR GCC toolchain and I am not so clued up on these things, so I decided to stick with that I knew. I built a very crude interface for the radio, which consisted of two 10 kilo-Ohm resistors and a 1uF capacitor to block the ADC bias voltage from breaking the radio. Simple! Only that it didn't work. I could see the DCD light blinking (digital pin 13) and so I decided to see what was going wrong. The first thing I did was to connect a scope up to the input of the ADC (analogue pin 0) and see the bias. With VCC at 4.777 VDC and with no audio feed from the radio, the ADC pin was biased at 2.386 VDC (~ 20mV pk-pk noise). I wasn't happy with that, so I followed the trend and added some capacitors to help clean up the bias voltage. The second attempt at the radio interface was to use two 10K resistors with a 2.2uF capaictor to ground, to add a bit of smoothing to the bias voltage. This voltage was then coupled to the ADC pin with another 10K resistor. I added a 100nF across the VREF voltage and fed the audio in via a 100nF capacitor replacing the 1uF used before (because that's what everyone else did). This didn't make any difference at all to the functionality of the code - I still hadn't seen a single packet, but the bias voltage had a noise level of around 5mV now, so it was considerably cleaner. Here we see the tacked together implementation of the input basing. Since the ADC can detect signals in the range of 0 to 5V (under standard configuration) it is required what we lift the centre 0V signal to become centre 2.5V (half way in the range). Here I am using the Arduino Uno - I have also tried an Arduino Mega 2560. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_Uno.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_Uno.jpg" width="600" alt="Lashup configuration with Arduino Uno" class="aligncenter"></a> Below, you see the bias voltage on the ADC input AN0 with no input signal. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_bias.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_bias.png" width="500" alt="Bias voltage on the ADC with no input signal" class="aligncenter"></a> Here, the input has been added and the receiver is just outputting white noise. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_noise.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_noise.png" width="500" alt="ADC input voltage on the ADC with white noise at large level" class="aligncenter"></a> Here a packet is present in the interval, and appears as quieter noise. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_Packet.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_Packet.png" width="500" alt="ADC input voltage on the ADC with packet and noise" class="aligncenter"></a> This is the heartbeat signal. Every time the ISR expires for the ADC timer, the pin is toggled and a sample taken. The frequency is half the sample rate, so here 4.8 kHz shows a 9.6 kHz sample rate as with version 0.10 of KI4MCW's code. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_9k6_heartbeat.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_9k6_heartbeat.png" width="500" alt="5V TTL heartbeat signal of the 9,600 Hz sample rate (4,800 x 2)" class="aligncenter"></a> If we look at the output of the TX0 line (first UART) we see some RS232 data at inverted TTL levels, heading for the USB chipset. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_ttl_rs232.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_ttl_rs232.png" width="500" alt="TTL inverted RS232 data leaving the MCU" class="aligncenter"></a> Using version 0.14 of KI4MCW's code, <i>arduino_tnc_014_w_tx</i>, I was able to get good performance. The function is as good as any TNC I have used in the past, and I believe superior to some sound-card based approaches such as this: <a href="http://new.george-smart.co.uk/ax25_soundmodem">AX25 Soundmodem</a>. We will see. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_xastir.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_xastir.png" width="600" alt="Some received stations via the Arduino APRS board." class="aligncenter"></a> The final goal for this project was to act as a way to view data on my mobile phone, using the car's <a href="http://new.george-smart.co.uk/aprs">APRS</a> hardware. In the car I already have an <a href="http://new.george-smart.co.uk/aprs_tracker">APRS Tracker</a> which I am keen to retain - it does an excellent job of sending out APRS beacons. However, I wanted a way to view the received data on my mobile phone. Using a <a href="http://new.george-smart.co.uk/bluetooth_rs232_module">Bluetooth RS232 Module</a> provided the perfect answer. The Arduino TNC described above would generate RS232 data and the module would squirt it to my mobile phone via Bluetooth, if I wanted to. This then allows me to view maps and receive messages. I would like to also be able to transmit via this, but this is the next step. I took my rusty old RS232 module and connected it to the Arduino shield as I had done before: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/BluetoothModule_ArduinoSheild1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/BluetoothModule_ArduinoSheild1.jpg" width="500" alt="WLS123A1M Bluetooth RS232 Module Arduino Shield" class="aligncenter"></a> I then added the bias circuit to provide a simple way to get the analogue data into the Arduino Uno board. With a little effort, and a few commands added to the source code of the Arduino, I was able to get the Bluetooth module working once again! <center><table > <tr> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_AndroidPair.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_AndroidPair.png" width="150" alt="Pairing with Android" class="aligncenter"></a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_APRSdroid1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_APRSdroid1.png" width="150" alt="APRS Droid" class="aligncenter"></a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_APRSdroid2.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_APRSdroid2.png" width="150" alt="APRS Droid" class="aligncenter"></a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_APRSdroid3.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_APRSdroid3.png" width="150" alt="APRS Droid" class="aligncenter"></a></tr> </table> </center> <h1>PCB Prototype</h1> From here, I decided to try and make a board. The images below are for the first prototype, which worked perfectly. *It's rough around the edges, but since I have been asked for it a few times, I may as well throw it up here: Please note the following: This board is the first prototype. There are some bits to change... <ul> <li> I think there is a conflict between the USB port and the Bluetooth module, when communicating with the Arduino MCU. If the Bluetooth module transmits some RS232 at the MCU for transmission, then it is sent successfully; however, if the FTDI FT232RL (on the arduino board) transmits RS232 at the MCU, the system seems to hang up for ages, with the Arduino repeatedly sending packet synchronisation frames over and over (for around 10 seconds) before sending the data. I suspect it's some contention on the UART of the MCU, but it needs more work. Maybe a resistor to stop the devices crow-barring the supply rail? Without the Bluetooth module it works perfectly. Removing the resistors between the ATMEGA 328p and the FT232 chip also works because both solutions remove contention.</li> <li> The board needs some mounting holes.</li> <li> The LEDs are in an odd order at the minute.</li> </ul> The following PDF files should be printed at 100% on A4 paper. Gerber files are also included. <ul> <li> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/ArduinoAPRS_Proto1_Schematic.pdf">ArduinoAPRS_Proto1_Schematic.pdf</a></li> <li> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/ArduinoAPRS_Proto1_BottomCopper.pdf">ArduinoAPRS_Proto1_BottomCopper.pdf</a></li> <li> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/ArduinoAPRS_Proto1_TopSilk.pdf">ArduinoAPRS_Proto1_TopSilk.pdf</a></li> <li> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/ArduinoAPRS_Proto1_Gerber.zip">ArduinoAPRS_Proto1_Gerber.zip</a></li> </ul> As images, these are printed at 300DPI. Be sure to click through to the full sized picture, by clicking on the image for more information, and then clicking on the image again to get the original. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_Proto1_Schematic.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_Proto1_Schematic.png" width="700" alt="Schematic" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_Proto1_BottomCopper.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_Proto1_BottomCopper.png" width="500" alt="Bottom Copper" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_Proto1_TopSilk.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_Proto1_TopSilk.png" width="500" alt="Top Silk" class="aligncenter"></a> Here's the board before etching at home: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_PCBMask.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_PCBMask.jpg" width="500" alt="WLS123A1M Bluetooth RS232 Module Arduino Shield" class="aligncenter"></a> Using the <a href="http://new.george-smart.co.uk/toner_transfer_pcbs">Toner Transfer PCBs</a> method, the boards were etched, resulting in something like below. I then populated the parts, adding the <a href="http://new.george-smart.co.uk/bluetooth_rs232_module">Bluetooth RS232 Module</a> to the underside. I used a SMD regulator for the Bluetooth 3.3V as it was the cheapest way, they're also large though that Stevie Wonder could solder it down, so no troubles from the anti-SMD lobbies there. £0.20 each beats £0.93 each for the through hole part. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_Board.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_Board.jpg" width="500" alt="WLS123A1M Bluetooth RS232 Module Arduino Shield" class="aligncenter"></a> Once it was all working, I was finally able to test the transmitter part. Looking directly at the DAC (resistive) output, there was a very large waveform output, so it looked like it was working. It had the characteristics expected of a AFSK signal, so I looked further back at the "smoothed" waveform, adjusted the deviation pot, and transmitted it. To my amazement, it was received by my own <a href="http://new.george-smart.co.uk/aprs">APRS</a> hardware - Success! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_TXWaveform.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_TXWaveform.png" width="500" alt="DAC output for the transmitted signal" class="aligncenter"></a> At the moment of writing, I am going to use the device for a while, see if it fails or falls over, and see if it is up to the job. I don't intend to use the transmitter function, but as I was going to the effort of making boards, and given I do a lot with APRS and TNCs, I decided it would be worth the agrovation and add those bits on. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_Proto1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/ArduinoAPRS_Proto1.jpg" width="600" alt="First Prototype" class="aligncenter"></a> Since many people keep missing the source code links in the text, <b><a href="https://sites.google.com/site/ki4mcw/Home/arduino-tnc">here again is a link to the source code by KI4MCW</a></b>. In this article, I used <b>arduino_tnc_014_w_tx.pde</b>. <i>This is an ongoing project. 15 December 2014, 16:43 GMT.</i> Arduino Twitter http://new.george-smart.co.uk/arduino_twitter 0 2012-01-06 03:18:54 closed page closed 2984 draft arduino_twitter There are two versions of this project. The first one uses a Perl script running on the PC to get tweets via the Twitter API. It then forwards these on to the Arduino which is running code to scroll the tweets. The second version uses an Ethernet shield to gather data directly from Twitter. This creates a stand-alone Twitter scroller. All source code is released for you to do whatever you wish with it, but it subject to <a href="http://new.george-smart.co.uk/copyright">Copyright</a> and my <a href="http://new.george-smart.co.uk/disclaimer">Disclaimer</a>. <h1>Via USB</h1> There isn't really much to mention about the USB project. <b><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/M1GEOArduinoTwitter.tar.gz">The source code</a></b> includes both the Perl script and Arduino PDE which should directly dump onto your Arduino device. It was written for Arduino UNO. Included also is the 4-bit LCD driver that I use. There is a video on YouTube of the USB version: <center><a href="http://www.youtube.com/watch?v=RIzpQmczljQ">Youtube Link</a></center> <html> <center> <iframe width="425" height="349" src="http://www.youtube.com/embed/RIzpQmczljQ?hl=en&fs=1" frameborder="0" allowfullscreen></iframe> </center> </html> <h1>Via Ethernet</h1> I'm still working on this project. <b>FIXME_Category :Arduino</b> Arduino WSPR http://new.george-smart.co.uk/arduino_wspr draft arduino_wspr 5540 page closed closed 0 2016-12-31 16:49:44 This page details my experimental <a href="http://new.george-smart.co.uk/arduino_ad9851">AD9851</a> <a href="http://new.george-smart.co.uk/wspr">WSPR</a> transmitter. Visit the <a href="http://new.george-smart.co.uk/wspr">WSPR</a> page for my standard WSPR tests. These pages are also related to this, and may be of an interest to you: <a href="http://new.george-smart.co.uk/arduino_ad9851">Arduino AD9851</a> <a href="http://new.george-smart.co.uk/arduino_rtty">Arduino RTTY</a> <a href="http://new.george-smart.co.uk/arduino_qrss">Arduino QRSS</a> <a href="http://new.george-smart.co.uk/1w_pa_for_10mhz">1W PA for 10MHz</a> This page assumes that you already have an <a href="http://www.arduino.cc">Arduino</a> board and AD9851 DDS chip in some form, for example the DDS-60 board by AmQRP. See the <a href="http://new.george-smart.co.uk/arduino_ad9851">Arduino AD9851</a> board for my solution. <b><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/M1GEO_AD9851_WSPR.tar.gz">Source Code for AD9851 Simple WSPR Transmitter</a></b> You'll need to generate your own data, as detailed in the text. <h1>Theory of the WSPR Protocol</h1> This section is the theory of how WSPR works. You do not need to understand any of this in order to make a WSPR transmitter. I worked through it because I was interested in the theory and maths. But I guess most people are not! :) The first thing I did was see what frequencies were needed to be transmitted. This can be done with the WSPR program from the command line. Read the manual, <a href="http://physics.princeton.edu/pulsar/K1JT/WSPR_Instructions.TXT">WSPR Instructions found here</a>. Most importantly the section entitled <i>GENERATING A LIST OF TX TONE FREQUENCIES</i>. This section describes making custom hardware or MCU solutions to transmit WSPR - exactly what I was trying to do! Wikipedia also has an interesting section, <a href="http://en.wikipedia.org/wiki/WSPR_(amateur_radio_software)#Protocol_specification">WSPR Protocol Specification</a>, which contains some information. WSPR has a fixed standard message of the station's <i>callsign</i>, <i>4-digit QRA locator</i> and <i>signal power in dBm</i>. My example would be "M1GEO JO01 20'' where M1GEO is my callsign, JO01 is the first 4 digits of my QRA locator and 20dBm (is roughly 100 mW). In total, 50 bits are used (28 for the callsign, 15 for the locator, and 7 for the power). Using a high convolution code of length 32 and rate 0.5 as parameters for the <a href="http://en.wikipedia.org/wiki/Forward_error_correction">forward error correction</a> (messages are encoded in a redundant way, so the loss of information, here bits, has a greatly reduced impact on the quality of the message received) allows for a very redundant code. If we expand this out, we can work out the number of binary symbols required to send this data. This <i>convolutional encoding</i> is explained mathematically <a href="http://home.netcom.com/~chip.f/viterbi/algrthms.html#conalgorithm">here</a>. Binary channel theory is explained <a href="http://en.wikipedia.org/wiki/Binary_symmetric_channel">here</a> too. You don't need to understand these, just to know it happens is enough. This is the theory of why it works, how averaging the noise, redundant encoding (FEC) and other measures will help our cause. Here, just believe me, this is how it works out - our original 50 bits become the following number of symbols: N_{sym} = 2(B + <a href="K-1])">= 2(50 + [32-1</a>) = 2(81) = 162 \; bits The protocol specification http://physics.princeton.edu/pulsar/K1JT/WSPR_Instructions.TXT states: <blockquote> Each tone should last for 8192/12000 = 0.682666667 seconds, and transitions between tones should be done in a phase-continuous manner. </blockquote> This is a pre-chosen value, <i>8192/12000</i>, (simplifies to <i>256/375</i>) which was chosen because it works out nicely. Transmissions are a reasonable length of time, a computer sound-card can work with this value well. Inverting this tone length, we get the tone separation: F_{sep} = \frac{1}{T_{tone}} = \frac{1}{\frac{256}{375}} = \frac{375}{256} \approx 1.46 \; Hz. as specified in the protocol. Next we know that we're using MFSK-4 (4 frequencies) with a separation of 1.4648 Hz, such that we can send our pseudo-random synchronisation vector. We work out the total occupied bandwidth, BW_{tot} = T \times F_{sep} = 4 \times \frac{375}{256} = \frac{375}{64} \approx 6 \; Hz The 162-bit seudo-random synchronisation vector (PRSV) serves to help the receiver to synchronise. It affords the receiving station some data that it knows to expect. It is able to find this pattern mixed in with your message (callsign, locator, power) and has therefore found your signal too. The 4 tones, mentioned above in our bandwidth calculation can be used to represent 1-bit of the PRSV and one bit of the message (00, 01, 10, 11). One of these four tones is called a channel symbol, and conveys one sync vector bit (LSB) and one data message bit (MSB). We send two bits at a time, hence 4 tones. From here, we can work out the transmission time, N_{sym} \times T_{tone} = 162 \times \frac{256}{375} = \frac{13824}{125} \approx 110.6 \; s The protocol also specifies that transmission timeslots start one second into the even UTC minute. <h1>Using The WSPR Binary to Generate Tone Data</h1> For a starting position, I decided to use the WSPR binary application to generate the tone data. I am only really interested in the tone numbers (second column). In case you skipped the theory section, the protocol specification is set out here: http://physics.princeton.edu/pulsar/K1JT/WSPR_Instructions.TXT and describes the many options to do with the WSPR binary command line. Here I just get the computer to generate my callsign, locator and power, 100 mW (M1GEO JO01 20). Note you need to use the WSPR.exe program or the wspr0 binary under Linux. Using the script just starts the WSPR GUI. Old Versions: <blockquote> $ ./wspr0 Tx 0 0.0015 0 M1GEO JO01 20 11 </blockquote> New Versions: <blockquote> $ ./wspr0 -t -X -c M1GEO -g JO01 -dBm 20 </blockquote> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/Arduino_WSPR_Terminal.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/Arduino_WSPR_Terminal.png" width="600" alt="WSPR generator" class="aligncenter"></a> <center>The power here shows 17 dBm. It was changed later to 20 dBm</center> The output data, tells you the bit number, and they're to be transmitted in this sequence. The next column tells you the tone number, 0-3, and the final column shows the frequency for the offsets you have entered in the two values after the Tx argument. If you're running a Linux or Unix based system, running the command below will create you a list of tone numbers, separated by commas. If you're running Windows, I'm sure there are ways to do this (one of which is doing it yourself). I can't offer you any advice. <i>Sorry</i>. <blockquote> $ ./wspr0 -t -X -c M1GEO -g JO01 -dBm 20 | awk '{print $2}' | sed ':a;N;$!ba;s/\n/,/g' 3,3,0,2,2,0,2,0,1,0,2,0,1,1,1,0,2,2,3,0,2,1,2,3,1,3,1,2,0,2,0,2,0,2,3,2,0,1,2,1,2, 2,0,0,2,2,3,2,1,1,2,2,3,1,2,1,2,2,0,3,3,2,3,0,2,0,2,1,3,2,3,2,3,0,3,0,1,0,2,3,2,2, 3,0,3,3,0,0,2,1,1,0,1,0,3,0,2,2,1,0,0,2,0,2,1,0,2,3,0,0,3,3,1,0,3,1,0,0,1,3,0,3,0, 0,2,3,3,1,2,0,0,0,0,1,0,1,2,2,3,1,0,2,0,0,2,2,2,3,3,0,3,0,3,1,2,2,0,3,1,0,2,2 </blockquote> This data can then be input into your Arduino Code as a data array. <h1>Simple WSPR Transmitter</h1> You can use this data to transmit WSPR very simply. Putting this data into an array allows for easy recall in a sequenced manner. Here, I add the data into an array as you would expect to find in a C program. This is for Arduino v1, but is very universal. You can see how creating the comma separated list in the step above helped a lot! <blockquote> byte WSPR_DATA[] = {3,3,0,2,2,0,2,0,1,0,2,0,1,1,1,0,2,2,3,0,2,1,2,3,1,3,1,2,0, 2,0,2,0,2,3,2,0,1,2,1,2,2,0,0,2,2,3,2,1,1,2,2,3,1,2,1,2,2, 0,3,3,2,3,0,2,0,2,1,3,2,3,2,3,0,3,0,1,0,2,3,2,2,3,0,3,3,0, 0,2,1,1,0,1,0,3,0,2,2,1,0,0,2,0,2,1,0,2,3,0,0,3,3,1,0,3,1, 0,0,1,3,0,3,0,0,2,3,3,1,2,0,0,0,0,1,0,1,2,2,3,1,0,2,0,0,2, 2,2,3,3,0,3,0,3,1,2,2,0,3,1,0,2,2}; </blockquote> The line breaks are for looks only. You could just as easily leave all the data on one single line. Make sure the end of each line ends with a comma, as this signifies that the data continues. A simple way to read this data out of the array is to create a for-loop: <blockquote> void wsprTX() { int i = 0; for (i=0;i<162;i++) { wsprTXtone( WSPR_DATA[i] ); delay(683); } frequency(0); } </blockquote> Here you can see that the loop goes from the 0th element to 161st element sequentially incrementing the variable 'i'. I in turn feeds into our array, picking the next element from <i>WSPR_DATA<a href="#]</i>">each time it is updated. This value is passed by compound statement (the value WSPR_DATA[#</a> returns is input directly as the argument) to the function <i>wsprTXtone(t)</i> which translates this tone number into an actual frequency. <blockquote> void wsprTXtone(int t) { if ((t >= 0) && (t <= 3) ) { frequency((WSPR_TXF + (t * 1.4648))); } } </blockquote> When the <i>wsprTX(void)</i> function calls <i>wsprTXtone(t)</i> it is passed a number, as discussed representing the tone required. The first thing we do is to check the tone is valid (0 <= t <= 3). If it is, we can simply calculate the required tone offset by multiplying the passed parameter, <i>t</i>, with the tone offset, 1.4648 Hz. This value is added to <i>WSPR_TXF</i> in this example which is the absolute offset, defined elsewhere as 10,140,200 Hz. The <i>frequency()</i> function, as you might expect, sets the frequency of the DDS. The last issue to tackle is the timing. As the protocol specifies, the transmission is to begin at 1 second into the even minute in UTC. For this there are a few options: DCF77 or WWVB time signals; An accurate Real Time Clock, or; GPS timing. There exists other possibilities to make the MCU clock very accurate in order to keep time inside the Arduino's MCU. I will opt for the GPS as it is the easiest solution. DCF77 reception is poor in my area due to electrical noise. GPS signals will work well. As a proof of concept, I wrote the code such that I could trigger the transmission myself in order that I be able to verify the data and transmission side of things. I am happy to report that my very first test was a success: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/Arduino_WSPR_FirstAttempt.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/Arduino_WSPR_FirstAttempt.png" width="600" alt="WSPR Reception of First Attempt!" class="aligncenter"></a> I hooked the simple WSPR transmitter up to a <a href="http://new.george-smart.co.uk/2n7000_pa">2N7000 class-E HF power amplifier</a> and set the output for a modest 200 mW. Adjusting the reported power output as necessary, I transmitted a few WSPR frames throughout the morning on both 40- and 30-metres. Below is a map of where I got on 200 mW. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/Arduino_WSPR_20120226_Map.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/Arduino_WSPR_20120226_Map.png" width="600" alt="WSPR Reception Map of First Attempt" class="aligncenter"></a> And the table below shows the best DX.<table > <tr><td>Timestamp</td><td>Callsign</td><td>Frequency (MHz)</td><td>SNR</td><td>Drift</td><td>Grid</td><td>Power (W)</td><td>Reporter</td><td>Reporter Grid</td><td>Distance (km)</td><td>Angle (deg)</td></tr><tr><td>2012-02-25 07:22</td><td>M1GEO</td><td>7.040194</td><td>-25</td><td>0</td><td>JO01cn</td><td>0.2</td><td>LA9JO</td><td>JP99gb</td><td>2172</td><td>20 </td></tr><tr><td>2012-02-25 15:28</td><td>M1GEO</td><td>10.140117</td><td>-26</td><td>-2</td><td>JO01cn</td><td>0.2</td><td>SA2BRJ</td><td>KP03</td><td>1798</td><td>35 </td></tr><tr><td>2012-02-25 18:46</td><td>M1GEO</td><td>10.140179</td><td>-22</td><td>-1</td><td>JO01cn</td><td>0.2</td><td>SQ8X</td><td>KN19el</td><td>1578</td><td>90 </td></tr><tr><td>2012-02-25 06:46</td><td>M1GEO</td><td>7.040196</td><td>-22</td><td>0</td><td>JO01cn</td><td>0.2</td><td>EA6ADM</td><td>JM19lo</td><td>1347</td><td>170 </td></tr><tr><td>2012-02-25 10:08</td><td>M1GEO</td><td>10.140143</td><td>-25</td><td>-1</td><td>JO01cn</td><td>0.2</td><td>LB1A</td><td>JP50mt</td><td>1224</td><td>29 </td></tr><tr><td>2012-02-25 14:08</td><td>M1GEO</td><td>10.140179</td><td>-19</td><td>-2</td><td>JO01cn</td><td>0.2</td><td>EA1URO</td><td>IN62bh</td><td>1196</td><td>214 </td></tr><tr><td>2012-02-25 18:18</td><td>M1GEO</td><td>10.140216</td><td>-21</td><td>-1</td><td>JO01cn</td><td>0.2</td><td>30HS200</td><td>JN01sh</td><td>1144</td><td>174</tr> </table> This morning (29/Feb/2012), at about 7:00 GMT, I managed to make the WSPR trip to USA! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/Arduino_WSPR_20120229_Map.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/Arduino_WSPR_20120229_Map.png" width="600" alt="WSPR Reception Map" class="aligncenter"></a> <b>FIXME_Category :Arduino</b> <b>FIXME_Category :WSPR</b> <b>FIXME_Category :Radio</b> AX25 Soundmodem http://new.george-smart.co.uk/ax25_soundmodem 2015-02-19 19:28:22 0 closed page closed 5232 draft ax25_soundmodem <a href="http://www.baycom.org/~tom/ham/soundmodem/">Soundmodem</a> is a Multiplatform Soundcard Packet Radio Modem written by Thomas Sailer, HB9JNX/AE4WA. The software allows a standard PC sound-card to be used as a packet radio "modem" with all processing done on the main computer CPU. On this page I will describe how to get the basic network interface working and how that can be used with <a href="http://www.xastir.org/wiki/Main_Page">XASTIR</a>, a amateur radio based digital communication system for real-time exchange of digital information to users on the APRS (Automatic Packet Reporting System) network, 144.8000 MHz in Europe. I also extended the settings to experiment with TCP/IP over AX25, for the technical exercise. These TCP/IP experiments are outside the scope of the basic sound modem and may (in the future) make another article of their own! <h1>Install The Software</h1> The exact version number of Soundmodem I used is hard to find. The program doesn't report version number or offer it up anywhere. I compiled the latest version 0.18 from <a href="http://www.baycom.org/~tom/ham/soundmodem/">Thomas Sailer's website</a> and the feature set looked very similar to the standard repository version, so I make no effort to compile the (possibly newer) version. Install <i>soundmodem</i> from the standard Ubuntu/Debian repository: <blockquote> sudo apt-get install soundmodem </blockquote> The process is quick and results in something like this: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_InstallTerm.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_InstallTerm.png" width="500" class="aligncenter"></a> This installs two programs: <i>soundmodem</i> and <i>soundmodemconfig</i> which are the modem and the configuration tool respectively. These are the key programs you will want. We may also like a few extra AX25 programs, such as <blockquote> sudo apt-get install ax25-apps ax25-utils ax25mail-utils ax25-tools ax25-xtools xastir </blockquote> If you get an error saying that "Package ax25-utils is not available", try the following (Thanks to Silvio, DO1SIL): <blockquote> sudo apt-get install libax25 ax25-apps ax25mail-utils ax25-tools ax25-xtools xastir </blockquote> These include many of the supporting programs that make the kernel's AX25 support usable outside TCPIP. Xastir, as mentioned, does the mapping for APRS. <h1>Hardware</h1> The hardware I use is a homebrew interface. It's a USB soundcard (cheap £2 Chinese thing, no brains or codec) and a cheap USB RS232 TTL UART interface (PL2303). The soundcard is coupled so that received audio from the radio goes into the microphone and speaker audio from the sound card is transmitted by the radio. Follow the radio manual instructions to wire it all up and set levels appropriately. The PTT is either done by VOX (in which case you may need to tweak your TX Delay to give time for the VOX to work, see later) or you can make a PTT circuit from the RTS of your computer serial port to the PTT of your radio. A simple NPN transistor with current limit resistor will work just fine! <h1>Setting Up Soundmodem</h1> Run the sound modem configuration program as root! It writes to system files. <blockquote> sudo soundmodemconfig </blockquote> Start a new configuration with File > New > Configuration. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_Conf1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_Conf1.png" width="500" class="aligncenter"></a> Give the configuration a name more descriptive than "TEST" <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_Conf2.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_Conf2.png" width="500" class="aligncenter"></a> Select the newly created configuration on the left hand side and the right side will populate. Here I change the Mode to <a href="http://www.alsa-project.org/">ALSA</a>. You need to select the ALSA Audio Driver. Use "plughw:" (not "hw:") because the plughw interface allows ALSA to match the sampling rates and provide some kind of DSP/numerical wizardary if required. To find the card number, match your device with the available cards: <blockquote> george@george-netbook-linux ~ $ cat /proc/asound/cards 0 <a href="Intel"> </a>: HDA-Intel - HDA Intel HDA Intel at 0xf0300000 irq 48 1 <a href="Device"> </a>: USB-Audio - Generic USB Audio Device Generic USB Audio Device at usb-0000:00:1d.3-1.1, full speed </blockquote> As you see, here I use "plughw:1,0" as this is the USB device connected - this is the USB sound card I am using in my interface. You notice that <i>/dev/ttyUSB0</i> is used for the PTT driver here instead of VOX. As mentioned, soundmodem uses RTS as the radio PTT line, and DTR as the DCD line for an LED. Leave GPIO as 0 and the Hamlib stuff empty as they are for more advanced features. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_Conf3.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_Conf3.png" width="500" class="aligncenter"></a> As an edit to the part above, it is probably easier to type "default" under ALSA audio driver, and then use PulseAudio to graphically configure the audio flow using the PulseAudio Sound Settings (Volume Control) configuration menu (speaker in system tray) You will then be able to select the audio source from the dropdown, as shown below - just one thing to remember, you'll need to do this twice; once for <i>soundmodemconfig</i> and again for <i>soundmodem</i>. Also be aware, programs only show up as visible when they're actually recording audio, so you will need to enable something like the scope, spectrum or modem (as here) so that recording and decoding take place. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_Conf3B.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_Conf3B.png" width="700" class="aligncenter"></a> On the Channel Access tab, you set the access parameters for the channel. These include the TX Delay (time between keying the radio and sending data, in milliseconds), <a href="https://en.wikipedia.org/wiki/Slot_time">Slot Time</a> (time to wait for a free timeslot in the channel, in milliseconds), Persistence (back-off/wait factor upon sensing clear channel) and TX Tail (time between end of data and de-keying transmitter, in milliseconds). These settings are explained well <a href="http://www.ax25.net/kiss.aspx">here</a>. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_Conf4.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_Conf4.png" width="500" class="aligncenter"></a> Next create a new channel with File > New > Channel. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_Conf5.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_Conf5.png" width="500" class="aligncenter"></a> On the modulator tab, set AFSK as the mode, 1200 bits/second for the rate and the two frequencies 0 and 1 of 1200 and 2200 respectively. Differential encoding must be ticked. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_Conf6.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_Conf6.png" width="500" class="aligncenter"></a> As with the modulator tab, repeat for the demodulator tab and set AFSK as the mode, 1200 bits/second for the rate and the two frequencies 0 and 1 of 1200 and 2200 respectively. Differential decoding must be ticked. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_Conf7.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_Conf7.png" width="500" class="aligncenter"></a> For the Packet IO tab, there are two choices: If you will be playing with TCP/IP, then you can select the MKISS mode and enter the IP details. If, however, you simply want a working sound modem to interface with Xastir for APRS, then select the KISS mode (without the M). <b>The standard KISS option is probably safest if you just want a basic sound card modem</b> as it requires less configuration. Depending on your choice: <center><table > <tr><td><b>MKISS</b><td><b>KISS</b></td></tr><tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_Conf10.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_Conf10.png" width="300" class="aligncenter"></a></td></tr><tr><td> <ul> <li>Interface Name: sm0 (no need to change)</li> <li>Callsign: Your Callsign (not mine!)</li> <li>IP Address: IP assigned by AMPRnet for TCP/IP.</li> :For experimenting use a private IP.</ul> <ul> <li>Network Mask: Mask the subnet, 255.255.255.0.</li> <li>Broadcast Address: As IP with last block 255.</li><td></ul> <ul> <li>File: Leave the default path, <i>/dev/soundmodem0</i>.</li> <li>Unlink File: Yes (checked)</li></tr> </table></ul> </center> Finally, with your channel selected, you can use the Diagnostics menu to show you many things. Here below are the Scope (RX audio in time domain) and Spectrum (RX audio in frequency domain) shown. You need to set the levels up so these show correctly. You can also PTT the radio to set the TX audio levels. <center><table > <tr><td><b>Scope</b><td><b>Spectrum</b></td></tr><tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_Conf8.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_Conf8.png" width="300" class="aligncenter"></a></tr> </table> </center> Once you've completed the Packet IO tab, you can exit the program where it saves your configuration to <i>/etc/ax25/soundmodem.conf</i>. This is why you need to run the program as root. The final step is to edit the <i>/etc/ax25/axports</i> file to include the newly added <i>sm0</i> device. Edit the file to look like the following, only changing for your needs. Notice the speed of 4800 is not the radio speed, but the speed the soundmodem talks to the kernel - this is always 4800 (I think!). <blockquote> # /etc/ax25/axports # # The format of this file is: # # name callsign speed paclen window description # sm0 M1GEO-1 4800 255 7 144.800 MHz (1200 bps) APRS </blockquote> Once this is done, you're ready to start the modem. <h1>Firing things up</h1> Once you're ready to start the modem, simply run <i>soundmodem</i> as root. It needs to be root to create the network device, sm0. You can add "-v N" where N is a number corresponding to the verbosity you desire. If you used PulseAudio you will again need to set the source audio device feeding into the soundmodem (before you did soundmodemconfig). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_Running1st.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_Running1st.png" width="500" class="aligncenter"></a> Often when you start the soundmodem, programs running on the device decide to register and broadcast on the newly created network device. Samba (smbd and nmbd) are very typical examples. Either stop the processes while you play or edit their config and ban them from using the sm0 device (bind them to eth0 for example). MDNS is another example of a program that spews data out over AX25. These programs are from an era where dumping a few tens of kilobytes onto the network interface is fine, but with AX25 at 1200 baud, this will take seconds to send. If you didn't create an MKISS device, then you will simply have /dev/soundmodem0 in your filesystem and don't have to worry about the consequences of TCP/IP and other programs as they won't be interested in your new virtual KISS TNC. <i>/dev/soundmodem0</i> handles exactly as if you had a TNC connected at this port address. There appears no difference from now on in how you use the modem. Once the interface has settled, you can treat it exactly as any other interface on the computer, with <i>ifconfig</i> for example. The image below is of <i>axlisten</i> a listening/monitoring program on the APRS frequency. The is started in colour for all interfaces with: <blockquote> sudo axlisten -a -c </blockquote> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_AXListen.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_AXListen.png" width="500" class="aligncenter"></a> The transmitter is a little hard to test. You could always try to connect to a local station, here I connect to my node: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_AXConnect.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_AXConnect.png" width="500" class="aligncenter"></a> So I guess this shows us the basic functionality is working. We can see data being received and make a connection so have proved we can also transmit. <h1>Setting up APRS</h1> As mentioned above, we'll use Xastir to do the mapping for us. There's lots to say about Xastir, but for now, we'll just worry about getting frames in from the sound modem we created above and plotting them on a map. Start Xastir and you'll be presented with something like the following. This is version 2.0.0. When you first run it, it will ask you to enter the location and callsign of your station. This is detailed elsewhere. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_XASTIR1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_XASTIR1.png" width="500" class="aligncenter"></a> Click on Interfaces on the menu bar, then on Interface Control. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_XASTIR2.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_XASTIR2.png" width="500" class="aligncenter"></a> Then click on Add. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_XASTIR3.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_XASTIR3.png" width="500" class="aligncenter"></a> Then depending on if you used the MKISS or the KISS style soundmodem above, you either choose "AX25 TNC" or "Serial KISS TNC". <h2>MKISS / AX25 TNC</h2> If you selected the KISS TNC type with the path <i>/dev/soundmodem0</i> then skip to the next subsection. If you have created the device sm0, then this section applies. Choose "AX25 TNC" and click Add. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_XASTIR4a.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_XASTIR4a.png" width="500" class="aligncenter"></a> Configure the AX25 TNC as follows: Active on startup, checked. Allow transmitting, checked (up to you). Digipeat, again up to you. AX.25 Device name: "sm0". Comment: "sound modem". IGate Options are up to you, read up about this first. The paths stay as normal. Finish any other options and press OK. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_XASTIR5a.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_XASTIR5a.png" width="500" class="aligncenter"></a> Click on the interface and then click Start to enable the use of this interface. You should see stations coming in and being added to the map as they are received. You can see this starting in the background. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_XASTIR6a.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_XASTIR6a.png" width="500" class="aligncenter"></a> <h2>KISS / Serial KISS TNC</h2> If you have created the device sm0, then you need the section above. KISS TNC type with the path <i>/dev/soundmodem0</i> this is your part! Choose "Serial KISS TNC" and click Add. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_XASTIR4b.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_XASTIR4b.png" width="500" class="aligncenter"></a> Configure the Serial KISS TNC as follows: Active on startup, checked. Allow transmitting, checked (up to you). Digipeat, again up to you. TNC Port: "/dev/soundmodem0". Comment: "sound modem". Port Settings, 4800 bps (this has nothing to do with the radio speed, but details how Xastir talks to soundmodem. IGate Options are up to you, read up about this first. The paths stay as normal. Make sure you don't tick "full duplex" or "Init KISS-mode on startup" - they should always be unchecked. The default values for the other options should be okay. Finish any other options and press OK. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_XASTIR5b.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_XASTIR5b.png" width="500" class="aligncenter"></a> Click on the interface and then click Start to enable the use of this interface. You should see stations coming in and being added to the map as they are received. You can see this starting in the background. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_XASTIR6b.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_XASTIR6b.png" width="500" class="aligncenter"></a> After around 20 minutes, the map had collected a fair few stations considering the antenna is fairly low. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_XASTIR7.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/02/AX25_SndMod_XASTIR7.png" width="500" class="aligncenter"></a> <h1>Other Bits</h1> In the UK Amateur Packet Radio Network (AMPRnet) block IPs (44.0.0.0) are distributed via the RSGB DCC as far as I understand. I had mine when I was running my <a href="http://new.george-smart.co.uk/packet">Packet</a> node, GB7EM, but the are no longer in use, and I never did use TCP/IP there anyway. I have two 44 block IPs, 44.131.189.64 and 44.131.189.65. If you do not have such IPs, I think you would get away with using private IP addresses, such as those in the 10.0.0.0 block or 192.168.0.0 for example. Barking Radio and Electronics Society http://new.george-smart.co.uk/barking_radio_and_electronics_society 3634 draft barking_radio_and_electronics_society 0 2012-10-26 22:23:37 page closed closed = About BRES = Barking Radio and Electronics Society folded in March 2012. Since then, Members have relocated to <a href="http://www.lefars.org.uk">The Loughton & Epping Amateur Radio Society</a> and <a href="http://www.haveringradioclub.co.uk">The Havering & District Amateur Radio Club</a>. '''The official club website can be found <a href="http://www.barkingradio.org.uk/">here</a>. <h1>Club History</h1> The club was founded around 1966 and originally met in a school in Gascoine Road, Barking. When the school was demolished we were offered a classroom at the Westbury Education Centre, Ripple Road, where the club flourished until September 1999. During this period between 60 and 100 people attended RAE courses and most of them passed, hence the current membership is made up mainly of ex-students. The club has now been at Parkside for nearly 10 years and <b>welcomes all visitors</b>. <h1>Special Events</h1> <h2>Kelvedon Hatch Secret Nuclear Bunker (GB0SNB)</h2> <a href="http://www.secretnuclearbunker.com/">Kelvedon Hatch Secret Nuclear Bunker</a> is both one of the best sites to work at and one of the worst. The site features a 46 meter (150 foot) mast, situated on the top of a large hill. At the top of the mast there is quite a lot of microwave stuff, and cell phone equipment, with cabinets of equipment scattered around the base compound. Frank, G7TAX, volunteered to climb the tower to see how the existing antenna is fitted. The image here shows Frank at work 31 meters (100ft) up the tower, clamping the tri-band (6m, 2m, and 70cm) antenna to the mast. He had a bit of luck with the coax from an existing PMR antenna - the connections were the same way round as the one we fitted to our antenna so it was just a matter of swapping it over. A full sized G5RV antenna was also set up by Frank between the tower and a large pole housing an air raid siren. This met the heliax at the bottom of the bunker mast. Once the station was up and running, a temporary callsign of GB2SNB was issued, which changed to the now permanent GB0SNB. The bunker is equipped with gear for operation on HF and V/UHF. There is also a 24hour packet radio node on 144.850MHz and 433.625MHz. The gallery below shows most of the photographs relating to the Bunker station. Images (C) Bill Chewter, G0IQK. <i>(used without permission - oh!)</i> <center> <gallery perrow=5, caption="Images from the Bunker"> Image:BRES_Bunker-7347.png Image:BRES_Bunker-26798.png Image:BRES_Bunker-10791.png Image:BRES_Bunker-30684.png Image:BRES_Bunker-17114.png Image:BRES_Bunker-3048.png Image:BRES_Bunker-18491.png Image:BRES_Bunker-18562.png Image:BRES_Bunker-1876.png Image:BRES_Bunker-17009.png Image:BRES_Bunker-2268.png Image:BRES_Bunker-18763.png Image:BRES_Bunker-6333.png Image:BRES_Bunker-19524.png Image:BRES_Bunker-3106.png Image:BRES_Bunker-11453.png Image:BRES_Bunker-12195.png Image:BRES_Bunker-8408.png Image:BRES_Bunker-26214.png Image:BRES_Bunker-14753.png Image:BRES_Bunker-9078.png Image:BRES_Bunker-29607.png Image:BRES_Bunker-658.png Image:BRES_Bunker-19503.png Image:BRES_Bunker-10977.png </gallery> </center> <h2>Trinity Bouy Wharf Lighthouse (GB2TBW)</h2> One clubnite whilst speaking to Paul (G0LLE) it came to light that there was a lighthouse in London's east end on the river Thames. Following a visit to the site and some discussion with the current occupiers it was decided to take part in the 'Lighthouses on the air' weekend. Antennas were fixed by Frank (G7TAX) to the top of the lighthouse, and a G5RV was attached from the lighthouse roof to a light ship floating in the Thames. Again, images (C) Bill Chewter, G0IQK. <i>(used without permission - oh!)</i> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/10/BRES Lighthouse 19981.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/10/BRES Lighthouse 19981.png" alt="View from Lighthouse of River Thames" class="aligncenter"></a> <center> <gallery perrow=5, caption="Images from the Lighthouse"> Image:BRES_Lighthouse_15397.png Image:BRES_Lighthouse_18353.png Image:BRES_Lighthouse_22763.png Image:BRES_Lighthouse_25402.png Image:BRES_Lighthouse_30980.png Image:BRES_Lighthouse_12402.png Image:BRES_Lighthouse_12959.png Image:BRES_Lighthouse_7080.png Image:BRES_Lighthouse_13601.png Image:BRES_Lighthouse_4820.png Image:BRES_Lighthouse_7743.png Image:BRES_Lighthouse_25142.png Image:BRES_Lighthouse_27029.png Image:BRES_Lighthouse_1512.png Image:BRES_Lighthouse_26104.png Image:BRES_Lighthouse_2241.png Image:BRES_Lighthouse_28525.png </gallery> </center> <h2>Coalhouse Fort (GB2CFT)</h2> The <a href="http://www.coalhousefort.co.uk/">CoalHouse Fort</a> site is an English Heritage site situated in East Tilbury, Essex. It was originally built during the reign of Elizebeth 1st to protect London from any French invasion. The special event call was first activated in May 2006 following several visits by members of the club. The location is quite remote on the side of the Thames, and is very open. It has proved very good for DX contacts, as can be seen from the gallery below. Some of the notable QSOs: (in order of time) <ul> <li> Switzerland</li> <li> Sweden</li> <li> Poland</li> <li> Portugal</li> <li> Finland</li> <li> Bosnia</li> <li> Denmark</li> <li> Italy</li> <li> Spain</li> <li> Lithuania</li> <li> Croatia</li> <li> Bulgaria</li> <li> Ukraine</li> <li> Russia</li> <li> Crete</li> <li> Japan</li> <li> USA (New York, Arizona, Boston)</li> <li> Japan (x2)</li> <li> Canada (Nova Scotia)</li> <li> England (Chelmsford) <a href="Stunning">work by Peter, (G0IAP)</a></li> <li> Reunion Island</li> </ul> Images (C) Bill Chewter, G0IQK. <i>(used without permission - oh!)</i> <center> <gallery perrow=3, caption="Images from Coalhouse Fort"> Image:BRES_CoalhouseFort_14026.png Image:BRES_CoalhouseFort_16952.png Image:BRES_CoalhouseFort_1777.png </gallery> </center> <h2>Dagenham Town Show (GB2DTS)</h2> The <a href="http://www.barking-dagenham.gov.uk/2-news-events/annual/town-show/town-show-main.cfm">Dagenham Town Show</a> is an unforgettable event with entertainment and attractions for all the family. This traditional event has been running since 1952, and is part of the borough's history and identity. It features a host of entertainment for all the family including the craft and trade village, funfair, rides, competitions and exhibitions from the Council and voluntary sector. The numerous arenas host a range of family entertainment including slapstick fun and games. Not forgetting the Carnival Parade that concludes the arena entertainment on the Saturday. The show boasts concert stages featuring named artists, up and coming acts, tribute bands and local performers. Our marquee was part of the show, and offered the public a chance to see all aspects of Amateur Radio in operation. The club was involved with the show for 33 years, up until recently, where it pulled out due to financial constraints. The Club's homepage details some interesting stories regarding the show, and can be found <a href="http://www.barkingradio.org.uk/barking2.htm">here</a>. Images (C) Bill Chewter, G0IQK. <i>(used without permission - oh!)</i> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/10/BRES_DagTownShow_20477.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/10/BRES_DagTownShow_20477.png" alt="The Ham Radio Marquee" class="aligncenter"></a> <center> <gallery perrow=3, caption="Images from Dagenham Town Show"> Image:BRES_DagTownShow_25718.png Image:BRES_DagTownShow_20477.png Image:BRES_DagTownShow_8193.png </gallery> </center> <b>FIXME_Category :Radio</b> Battery Phone Charger http://new.george-smart.co.uk/battery_phone_charger 3048 battery_phone_charger draft 2012-01-12 15:10:44 0 closed closed page A fair while ago, I saw a device called <i><a href="http://www.ladyada.net/make/mintyboost/">The Minty Boost</a></i>. It's a USB device charger powered by batteries. The idea is that if you're phone is running low while out and about, you can charge it from some readily avaliable batteries such as dry-cells. <h1>Batteries</h1> I managed to find (steal) some suitable batteries in our workshop (belonging to my Dad). These were AA batteries; 1.2 volts and 2500 mAh. I purchased a battery holder for these batteries. In series, four batteries gives a total of 4.8V (<i>4*1.2 volts</i>) at 2500 mAh in total. Connecting the batteries in parallel gives 10,000 mAh, at 1.2 volts. Either way, this is a fair bit of energy in a small physical space - exactly what we need. I prefer the idea of using the parallel configuration: it gives a higher current, so we can draw more current form the batteries; it also gives a lower voltage, requiring a step-up converter. <h1>Step-up Converter : Design 1</h1> I have some Maxim IC MAX771 Stepup DC-DC regulators so will probably base my design around those. The MAX1771 (newer version) is a 12 volt step-up converter, but may be adjusted to any voltage. I have configured the chip as detailed it the data sheet, calculating the feedback network for 5 volt output. I used BJTs (bipolar junction transistors) as I did not have any FETs (field effect transistors) with a low enough gate threshold. I used a BC549 combined with an BSX49 in a Darlington pair. This gives a threshold voltage of approximately 1.4 volts. Much less than the power-FETs I had, at 3.5 volts. My vero-board design was a test set up, to establish suitability <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BatteryPhoneCharger_1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BatteryPhoneCharger_1.jpg" width="600" alt="Attempt1" class="aligncenter"></a> The first design worked well, but the output current was low. Upon investigation, I found that the BSX49 wasn't allowing for a high enough collector current, and was causing problems. In order to overcome this, I replaced the BSX49 with a 2N3055 - an epically over-rated transistor, but it is bullet-proof. This worked much better, but, created other problems. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BatteryPhoneCharger_2.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BatteryPhoneCharger_2.jpg" width="600" alt="Attempt2" class="aligncenter"></a> However, at about 750 mA, the output starts to get noisy. I will improve this in a later version... <h1>Maplin N32GL</h1> While getting some parts in a local Maplin Electronics store, I decided to have a wander around. <a href="http://www.aaron-brown.net/">Aaron Brown</a> calls this <i>looking for inspiration</i>. That is exactly what I found. I was looking in despair at the solar USB chargers, etc. when I come across a pull string USB charger. It had a nice brushed aluminium case, with connectors nicely mounted on both ends. The best part was that it was £2.99. I had always intended to <i>improve</i> it. I started a seperate page on the conversion: <a href="http://new.george-smart.co.uk/maplin_n32gl">Maplin N32GL</a> Just for the record: <table cellpadding="5" border="0" > <tr><td><b>Name:</b></td><td>Pull String Power Pack with USB</td></tr><tr><td><b>Part:</b></td><td>Maplin N32GL</td></tr><tr><td><b>Price:</b></td><td>£2.99</tr> </table> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Batteries</b> <b>FIXME_Category :Phones</b> Beacon Measuring http://new.george-smart.co.uk/beacon_measuring 0 2012-04-21 01:27:55 closed page closed 3377 beacon_measuring draft Recently, while trying to track the signal strengths of radio beacons I encountered a difficult problem: getting an accurate and high-resolution measurement of signal strength. Using my <a href="http://new.george-smart.co.uk/yaesu_ft_857d">Yaesu FT-857D</a> and the <a href="http://new.george-smart.co.uk/yaesu_cat_interface">Yaesu CAT Interface</a> I tried to sample the S-meter (using <i>rigctl</i> via the <i>get_level</i> command and requesting <i>STRENGTH</i>, if you're interested). This didn't work very well as the S-meter readings were very low resolution and that the pass-band of the radio is too high (the signal is hard to track in noise). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/FLDIGI_M1GEO_RWM.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/FLDIGI_M1GEO_RWM.png" width="600" alt="fldigi showing RWM N0N signal" class="aligncenter"></a> While talking to <a href="http://www.webshed.org">Dave Mills (G7UVW)</a> regarding the issue, he suggested a digital signal processing approach. I immediately thought of my <a href="http://new.george-smart.co.uk/3rdyrproject">Third Year Project</a> work and decided to conduct a few experiments. <h1>Proof of Concept</h1> The two graphs below show the very first results, acting of a "proof of concept" more than anything else. 5 seconds of audio was recorded from the radios's audio output and analysed via FFT in MATLAB. As you can see, the approach showed promise. <center><table cellpadding="10" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/RWM_20110903_0301.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/RWM_20110903_0301.png" width="300" alt="2011/09/03 03:01a" class="aligncenter"></a></tr> </table> Click an image to get more information, or twice to enlarge fully. </center> In the images above, the very large spike right next to the Y-axis is DC. The smaller spike is the 800Hz signal. The grass along the bottom is the shape of the <a href="http://new.george-smart.co.uk/yaesu_ft_857d">Yaesu FT-857D</a>'s CW filter. The two graphs are scaled exactly the same and so the size of the spike makes for a direct vertical comparison. The left most image shows the FFT analysis when the received signal was about S9 on the meter. The right image shows when the received signal was below the noise floor. However the noise floor was S8 at the time of experimentation, and so it reflects on the coherent and continuous nature of the tone versus the random properties of the noise when the two signals are analysed coherently (as is inherent here). <h1>Scaling the Graphs</h1> The graphs above are not scaled. The X-axis values have an complex mapping to the frequency domain which they represent. This section details how I went about getting from these values to values in Hz. The key is the sample-rate in the time-domain, which sets the resolution (bin-size) of the FFT. <i>Engineering Mathematics</i> by A. Croft et al. (<a href="http://www.google.co.uk/search?q=ISBN:0130268585">ISBN:0130268585</a>) includes some excellent examples of how this works. In simple terms, the sample rate in the time domain transforms to the frequency in the Fourier (frequency) domain. Here we've a sample rate of 44100 Hz, and so we get a frequency range of -22050 to +22050 Hz. The frequency scale essentially runs from -SampleRate/2 to +SampleRate/2. The negative frequency range is useful for retaining phase information but is essentially a <i>mirror image</i> of the positive frequency region. We create a vector based on the parameters of the input file and plot our FFT data against it. The end result is to have a scaled frequency axis. The graph below shows this. Note that the frequency domain goes on until 22050 Hz, but the radio passband is only 3000 Hz wide and so we cut the graph there. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/RWM_20110903_0501_ScaledF.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/RWM_20110903_0501_ScaledF.png" alt="2011/09/03 05:01a" class="aligncenter"></a> <h1>Digital Filtering</h1> In order to remove the DC and much of the noise, we can create a sharp filter around the 800 Hz signal we want. Simple reasoning would have us simply create a vector of zeros say for the sample corresponding to the 800 Hz signal, which has a value of one. Multiplying this vector with our FFT data would essentially filter out only the 800 Hz signal. This is what we do... Kind of! Having a square window causes noise in the passband, due to concepts beyond the scope of this page and is not usually recommended. Other <i>shapes</i> or <i>windows</i> exist that avoid this problem. They are essentially variations on the square window (often called the <i>brick-wall</i> filter) which have specific noise characteristics. See the <a href="http://en.wikipedia.org/wiki/Window_function">Wikipedia: Window Function</a> article, specifically the examples part for more on this. Here we will use the Hamming window to create a linear-phase filter with normalized bass-band gain. The filter shape looks something like the following: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/FIR_HammingWindowShape.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/FIR_HammingWindowShape.png" alt="FIR Filter Hamming Window Shape" class="aligncenter"></a> The process of filtering the input signal through the above filter is to just multiply each element in our original FFT data by the corresponding element in the Hamming-window vector. The image below shows the process flow, going downwards, from getting the raw FFT, creating a filter, and finally filtering the data through the FIR filter. The image below is high-resolution, so click on it twice to get the full high-res image. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/RWM_20110903_0501_ScaledF_Filtered.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/RWM_20110903_0501_ScaledF_Filtered.png" width="600" alt="Filtered Data" class="aligncenter"></a> Once properly implemented, the filter option takes parameters such as <i>centre frequency</i>, <i>bandwidth</i> and <i>order</i>. In simple these parameters allow for a tight fit of the signal. <h1>Obtaining an RSSI</h1> An RSSI (receive signal strength indicator) is a numerical value relating to the amount of power present in a received radio signal. This value is ultimately what I need to compare the strengths of beacons. Calibrating this is somewhat meaningless for my application and as a result the values obtained will be related by the same arbitrary (unknown) constant. This can be done by taking the maximum value of the filtered data, i.e. the peak of the bottom graph. A small piece of code is added to draw a line across the bottom graph (in green) which is the RSSI value. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/RWM_20110903_0801_RSSI.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/RWM_20110903_0801_RSSI.png" width="600" alt="The RSSI line is in green" class="aligncenter"></a> The program is also modified to output the RSSI value to the calling window in MATLAB, and return the RSSI as the method's return value (suppressed in the below image, with the semicolon on the calling statement). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/RWM_20110903_0801_RSSI_Command.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/RWM_20110903_0801_RSSI_Command.png" width="600" alt="MATLAB Command Window" class="aligncenter"></a> <h1>Automation</h1> To get a data for a nice looking, well sampled graph, it is obviously necessary to collect a large number of RSSI reports. This would be a laborious process, as previously the MATLAB script required me to already have sampled the radio's output into a <i>wav</i> file. I wanted something that I could leave running for a week or so and collect data automatically, hence the need to automate the process. I wanted to avoid having weeks worth of <i>wav</i> files on the computer's disc drives as this would use a lot of space. So I set about modifying the MATLAB script again to accommodate these needs. The <i>AudioSample.m</i> file opens the computer's sound card, and passes a recording object to the <i>CalculateRSSI.m</i> script (based on the earlier <i>Propagation.m</i> file). This enables the <i>CalculateRSSI.m</i> function to sample the soundcard automatically and simply return a numerical value for RSSI. This value is then logged, along with the timestamp by <i>AudioSample.m</i>. The program is now just two MATLAB scripts and everything is done from within MATLAB. There is no need for external sampling. The system will plot <i>pseudo-real-time</i> graphs, as the following YouTube video shows (HD is probably preferable here, to read text). <center><a href="http://www.youtube.com/watch?v=bWuU2wlGGx8">Youtube Link</a></center> <html> <center> <iframe width="425" height="349" src="http://www.youtube.com/embed/bWuU2wlGGx8?hl=en&fs=1" frameborder="0" allowfullscreen></iframe> </center> </html> Once I had everything working in the MATLAB Desktop Development Environment, I decided that I would prefer the long-term data sampling to occur from a terminal window. Fortunately, MATLAB can be invoked with the <i>-nodisplay</i> option (<i>Start the Sun Microsystems JVM software, but do not start the MATLAB desktop. Do not display any X commands, and ignore the DISPLAY environment variable</i>). This means that MATLAB runs entirely in a terminal window, such as below. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/MATLAB_RSSI_Terminal.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/MATLAB_RSSI_Terminal.png" width="600" alt="MATLAB running in a terminal window" class="aligncenter"></a> The errors presented are minor glitches and do not stop the program from running. <h1>Plotting</h1> From the CSV output by MATLAB, it is then possible to perform some statistical analysis on the RSSI data obtained. The first step was to plot an averaged version of the RSSI change as a function of time. This is what the image below shows. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/RSSI_Plot.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/RSSI_Plot.png" width="600" alt="RSSI Plot" class="aligncenter"></a> After collecting data for a couple of days, it occurred to me that there were patterns in the RSSI readings; these turned out to have a period of about a day. Here the below graph shows the RSSI readings for two consecutive days, the 4th and 5th of September, 2011. The gap around 7 pm is where the recording MATLAB script was stopped, edited, and relaunched to make a slight alteration to functionality. It should be noted that the graph want's to wrap around from end-to-end - although these lines have been removed for the sake of tidiness, there are indeed lines linking the right-hand with the left hand to complete the loop. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/RSSI_Pattern_Periodic.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/RSSI_Pattern_Periodic.png" width="600" alt="RSSI Periodic Pattern" class="aligncenter"></a> Next off I decided to have a look at how the RSSI is distributed. The next plot shows the distribution of RSSI amongst the possible values. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/RSSI_Distribution.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/RSSI_Distribution.png" width="600" alt="RSSI Distribution" class="aligncenter"></a> <h1>Download</h1> If you're interested in the MATLAB source code, then you're welcome to it! This file includes two MATLAB files and two <i>gnuplot</i> files. <b> *** <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/BeaconMeasuring_20110906015949.tar.gz">Source Code in Tar-Gzip Format</a> ***</b> (~ 2KB) My <a href="http://new.george-smart.co.uk/george_smart_s_wiki_general_disclaimer">General Disclaimer</a> and <a href="http://new.george-smart.co.uk/george_smart_27s_wiki_copyrights">Copyright attributions</a> apply. <h1>Sources</h1> The following resources were used in the creation of this document. All were retrieved on the 03/Sept/2011, unless stated. <ul> <li> <a href="http://new.george-smart.co.uk/3rdyrproject">Software Defined Radio for Cognitive Wireless Sensor Networks</a></li> : http://www.george-smart.co.uk/wiki/3rdYrProject</ul> <ul> <li> wavread - Read WAVE (.wav) sound file</li> : http://www.mathworks.co.uk/help/techdoc/ref/wavread.html</ul> <ul> <li> size - Array dimensions</li> : http://www.mathworks.co.uk/help/techdoc/ref/size.html</ul> <ul> <li> fir1 - Window-based finite impulse response filter design</li> : http://www.mathworks.com/help/toolbox/signal/fir1.htm</ul> <ul> <li> sprintf - Format data into string</li> : http://www.mathworks.co.uk/help/techdoc/ref/sprintf.html</ul> <ul> <li> MATLAB Central - Batch processing</li> : http://blogs.mathworks.com/steve/2006/06/06/batch-processing/</ul> <ul> <li> fprintf - Write data to text file</li> : http://www.mathworks.co.uk/help/techdoc/ref/fprintf.html</ul> <ul> <li> audiorecorder - Create object for recording audio</li> : http://www.mathworks.co.uk/help/techdoc/ref/audiorecorder.html</ul> <ul> <li> matlab (UNIX) - Start MATLAB program (UNIX platforms)</li> : http://www.mathworks.co.uk/help/techdoc/ref/matlabunix.html</ul> <b>FIXME_Category :Radio</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Computers</b> <b>FIXME_Category :Programming</b> Bias-T PTT SW http://new.george-smart.co.uk/bias_t_ptt_sw draft bias_t_ptt_sw 5653 closed page closed 2017-01-30 14:55:54 0 This page was moved here: <a href="http://new.george-smart.co.uk/144mhz_bias_tee">144MHz Bias Tee</a>. <a href="/contact-me">Please report this message to the webmaster</a>. Bluetooth Radio Interface http://new.george-smart.co.uk/bluetooth_radio_interface 0 2013-04-29 22:49:54 closed page closed 4450 draft bluetooth_radio_interface A few people have asked me about creating a Bluetooth Radio Interface for Yaesu's CAT standard or Icom's CI-V system. This page hows a quick test set up which works. The first thing you will need is a <a href="http://new.george-smart.co.uk/bluetooth_rs232_module">Bluetooth RS232 Module</a>. The version I used for this project was based on a RF-BT0417C chipset. It is similar to WLS123A1M module in terms of hardware but the AT commands are different (see <a href="http://new.george-smart.co.uk/bluetooth_rs232_module">here</a>. The RF-BT0417C was on a breakout board (BT_BOARD_M/S_V1.01). It has a status LED and 4 output wires (TXD, RXD, VCC and GND - 2 data, 2 power). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_BT_BOARD_MS_V101.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_BT_BOARD_MS_V101.jpg" width="300" alt="BT_BOARD_M/S_V1.01" class="aligncenter"></a> The first thing to do is to program the Bluetooth module to be what you want it to be, and say what you want it to say. <h1>Programming The Bluetooth Module</h1> I guess that you'll want to change the default name of the Bluetooth module to be your callsign or something similar, and to set a pairing pin so that nobody can connect to your radio without the PIN number. Here's how. <h2>Making a Connection</h2> You'll firstly need some kind of USB-RS232-TTL interface. You want 0V-5V signals which are inverted, such as those which come from cheap USB/TTL interfaces. Those with D9 connectors for <i>proper</i> RS232 are unsuitable, as they have the data inverted. Connect the Bluetooth module to the USB Serial TTL interface, such that the power (3.3V-6V on the breakout board, 3.3V only on the module directly) is connected to the VCC (+) and GND (-) pins and the data lines are crossed (serial TX to Bluetooth RX and visa-versa). There should be a total of 4 wires: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_ProgramModuleWiring.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_ProgramModuleWiring.jpg" width="700" alt="Bluetooth Programming Setup" class="aligncenter"></a> The software I am using to communicate with the Bluetooth module via USB Serial is <a href="http://sourceforge.net/projects/gtkterm/">GTKTerm</a>, <i>"a small graphical shell like XTerm"</i>. It is a Linux equivalent to HyperTerminal for Windows. I suspect most people will be using Windows here, and so may benefit from <a href="http://lefars.org.uk/WPblog/2011/11/30/how-to-program-a-serial-bluetooth-module/">Derek M0XDC's How To Program A Serial Bluetooth Module</a> written for <a href="http://www.lefars.org.uk">LEFARS</a>. The information is very similar. If not, you could probably figure it out from this page? After all, how complicated can a serial port be? Hah! Find the device that was added when you connected your USB/TTL interface. Use <i>dmesg</i> to help you, it will suggest something like /dev/ttyUSB0 or /dev/ttyACM0 or something similar. Once you know, you're ready to configure your terminal emulator program: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_ProgramModuleConfigPort.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_ProgramModuleConfigPort.png" width="600" alt="Bluetooth Programming Terminal Configuration" class="aligncenter"></a> The module defaults to a default speed of 9600. <b>Note</b> that this is the speed for interfacing with the Bluetooth module alone. This does not effect the speed that you can talk <i>though</i> the module to your radio, which is a run-time option discussed more later. The very standard configuration of 8 bits, 1 stop bit, no parity and no flow-control is used. Classically called 9600 8-N-1 as can be seen above. Next you need to make sure that your terminal emulator is sending both carriage return (\r) and line feed (\n) as the Bluetooth module requires both. You're also advised to enable local echo so you can see what you're typing. In GTKTerm, the options are found under the <i>Configuration</i> menu. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_ProgramModuleConfigCRLF.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_ProgramModuleConfigCRLF.png" width="600" alt="Bluetooth Programming Terminal Configuration" class="aligncenter"></a> Once you're ready, sending ENTER (\r\n) and then "AT" (in capitals) then ENTER again should return "ATOK". If it doesn't then something is wrong. <b>Note</b> that you must NOT be connected to the device by Bluetooth at this point, otherwise you'll not get any response (your typing is sent over Bluetooth and not to the controller). Fiddle and play until you can get "ATOK" back. AT is the command set you'll be using, and the OK tells you that the Bluetooth module is ready and understands the input. I found it sometimes helped to send a double ENTER before each command. As in "ENTER ENTER AT ENTER" from above. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_ProgramModuleATOK.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_ProgramModuleATOK.png" width="400" alt="Bluetooth Programming Terminal Configuration" class="aligncenter"></a> Once you get "ATOK" back then you're in business. As you will see, the text gets a little jumbled up as there is no flow-control. One disadvantage of GTKTerm is that it sends the characters as you type them and the Bluetooth module (for simplicity sake) doesn't have flow control. This means that it waits a certain period of time after you stop typing before interpreting what you've typed. Unless you can type very quickly (like seriously quickly) or you have a program where you can input a whole line of data then send it in one go, I suggest you compose your input somewhere else, then copy/paste it into the terminal program to be sent. This yielded the best results for me by far! <h2>Setting The Bluetooth Name</h2> The AT command you will need to set the name of the Bluetooth module is AT+NAME<i>name</i> where <i>name</i> is the name you want to use. An example may be to use your callsign, for example AT+NAMEM1GEO to use M1GEO (obviously you put your callsign and not mine, unless it's a tribute!). Copy/paste AT+NAMEM1GEO should do the trick and the device should confirm the result: Notice your input and the "OKsetname" output get muddled together due to the lack of flow control. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_ProgramModuleATNAME.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_ProgramModuleATNAME.png" width="400" alt="Bluetooth Programming Terminal Configuration" class="aligncenter"></a> Once you see "OKsetname" then something has happened. You should be able to see the changes by restarting the Bluetooth module. Disconnect the power (VCC) wire wait a moment and reconnect to see the new name being beaconed. If not, then try again. Here's my Android phone showing the Bluetooth devices in range, where we can see "M1GEO Car Rig". <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_AndroidDevice.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_AndroidDevice.png" width="300" alt="Bluetooth Programming Android Scan" class="aligncenter"></a> Finally, I settled on the name "M1GEO FT857D" detailing the model of radio in my car. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_ProgramModuleLinuxDevice.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_ProgramModuleLinuxDevice.png" width="600" alt="Bluetooth Programming Terminal Configuration" class="aligncenter"></a> <h2>Setting The PIN</h2> The AT command to set the PIN is AT+PIN<i>number</i>. It's a 4-digit number, so for example AT+PIN5678 would set the pin to 5678. Again, copy/paste the string into GTKTerm and you should receive "OKsetPIN" to confirm: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_ProgramModuleATPIN.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_ProgramModuleATPIN.png" width="400" alt="Bluetooth Programming Terminal Configuration" class="aligncenter"></a> You see that when you attempt to pair with the device, you are asked for a passcode, which is the PIN you entered above: <center><table > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_AndroidPIN.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_AndroidPIN.png" width="300" alt="Bluetooth Programming Android Scan" class="aligncenter"></a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_AndroidPaired.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_AndroidPaired.png" width="300" alt="Bluetooth Programming Android Scan" class="aligncenter"></a></td></tr><tr><td>Asking for the PIN key. </td><td>Successfully paired with the Bluetooth module</tr> </table> </center> <h1>Connecting Up</h1> I intend for this project to live in my car as my <a href="http://new.george-smart.co.uk/yaesu_ft_857d">Yaesu FT-857D</a> is in the boot. I have already made interfaces before (<a href="http://new.george-smart.co.uk/icom_ci_v_interface">Icom CI-V Interface</a> and <a href="http://new.george-smart.co.uk/yaesu_cat_interface">Yaesu CAT Interface</a>) which serve for the purpose of interfacing to the computer but I figured this Bluetooth adapter would allow me to try digital modes in the car, by providing a serial port. However, I test here on the <a href="http://new.george-smart.co.uk/icom_ic_7000">Icom IC-7000</a> because it was on the desk next to me! The Icom CI-V interface is slightly simpler than the Yaesu CAT interface, but not much. The Yaesu interface requires that you connect the TXD and RXD cables into the ACC connector of your radio. These are connected directly. The ACC socket also provides power (12V) which should be regulated to 5V by an 78L05 (or similar) regulator. Essentially, the 2 data and 2 power cables connect to the radio as expected, with the addition of some voltage regulation. For Yaesu, this link details exactly what is to be done: <a href="http://www.lynovation.com/Docs/CTR-BlueLync-Yaesu.pdf">CTR-BlueLync-Yaesu.pdf</a>. The Icom interface requires that you connect TXD and RXD together and solder the "DATA" line to the centre of a 3.5mm mono jack plug. The ring of the jack is soldered to ground. Then you simply need to supply power (5 volts) to the Bluetooth Module, and you're done. The Icom IC7000 can provide power from the ACC socket, but this is another cable to have hanging around. It'll do for testing though! Here is the Icom CI-V interface I fashioned quickly for testing: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_IC7000_Cables.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_IC7000_Cables.jpg" width="600" alt="Bluetooth IC7000 Cables" class="aligncenter"></a> The rest is down to the software you will be using. For ease of writing this article, I use a Linux computer and <i>rfcomm</i> to interface with the Bluetooth module to provide a serial port and then <a href="http://groundstation.sourceforge.net/grig/">GRIG</a> to provide a simple CI-V example. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_rfcomm.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_rfcomm.png" width="500" alt="Bluetooth-Linux Pairing" class="aligncenter"></a> You now have a device node, <i>/dev/rfcomm0</i> which you can use like any other serial port device. You can open the port at whatever speed you like (providing it is supported by the Bluetooth device). This is done by the application you're using. Typically for Icom 19200 baud and for Yaesu 38400 baud, but this is usually set in your radio settings. You should also notice that your Bluetooth module's LED has turned from flashing to solid, indicating a connection. Here I run the grig command, calling radio model IC7000 (-m 360) at path /dev/rfcomm0 (-r) and speed 19200 bauds (-s). <blockquote> sudo grig -m 360 -r /dev/rfcomm0 -s 19200 </blockquote> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_grig.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_grig.png" width="500" alt="GRIG" class="aligncenter"></a> After lots of text thrown at the terminal, you can see that GRIG has opened and that my radio is setup for PSK31 on 20 meters! The final picture shows the hardware and software together. I spun the dial up from 14.070.000 MHz to show they keep track: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_All.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/BTRig_All.jpg" width="500" alt="Bluetooth GRIG IC7000" class="aligncenter"></a> And there you have it! Fully working! Bluetooth RS232 Module http://new.george-smart.co.uk/bluetooth_rs232_module closed page closed 0 2012-01-12 14:11:44 draft bluetooth_rs232_module 2993 Before you get too stuck into this page, please bear a few things in mind: <ul> <li> Much of this page is my interpretation of the datasheet. I could have misunderstood something, or I could have completely got something wrong. Don't take this page as gospel.</li> : If you think anything is wrong, then <b>FIXME_User :George#Contact_Information|Contact Me</b>: Feel free to send feedback, suggestions, corrections.</ul> <ul> <li> If you find this page useful, please consider <a href="http://new.george-smart.co.uk/donate">donating a small sum of money</a> (of your choosing) to help fund my Ph.D and the upkeep of this server.</li> : This site is run entirely out of my own pocket, with no advertising because that's how I feel it should be. Anything you could spare would make a difference.</ul> <hr> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BluetoothModule_WLS123A1M.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BluetoothModule_WLS123A1M.jpg" alt="WLS123A1M Bluetooth RS232 Module" class="aligncenter"></a> The WLS123A1M RS232 Bluetooth module was bought for me as a present by <a href="http://aaron-brown.net">Aaron Brown</a> from Seeed Studio. It was a little hard to get the device going, and the instructions a little hard to follow so I decided to document my results with the module here. I also developed an <a href="http://www.arduino.cc/">Arduino</a> Shield for the device, which can be found further down this page. <h1>Documentation</h1> The part was purchased from SeeedStudio, and can be found here: <a href="http://www.seeedstudio.com/depot/serial-port-bluetooth-module-masterslave-p-572.html">Serial Port Bluetooth Module (Master/Slave)</a>. The <a href="http://www.seeedstudio.com/wiki/index.php?title=Serial_port_bluetooth_module_(Master/Slave)">Serial Port Bluetooth Module (Master/Slave) Wiki Page</a> has some basic information, but the key to success for me was in the <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/Bluetooth Module Manual v1.2.pdf">Bluetooth Module Manual v1.2.pdf</a> document. There is also some interesting discussion on the forums of SeeedStudio, here: <a href="http://www.seeedstudio.com/forum/viewtopic.php?f=4&t=687">Set up connections between two BluetoothBee step by step</a>. <h1>Arduino Shield - Connecting It Up</h1> As mentioned previously, I made an <a href="http://www.arduino.cc/">Arduino</a> Shield for the WLS123A1M Bluetooth RS232 Module. The PCB layout is available for you to do as you please, in line with my standard <a href="http://new.george-smart.co.uk/disclaimer">Disclaimer</a> & <a href="http://new.george-smart.co.uk/copyright">Copyright</a>. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BluetoothModule_ArduinoSheild1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BluetoothModule_ArduinoSheild1.jpg" width="500" alt="WLS123A1M Bluetooth RS232 Module Arduino Shield" class="aligncenter"></a> <b>The designs will be available very soon</b> With my Arduino shield it is possible to connect the bluetooth module directly to the FTDI chip. The Arduino device was programmed to just flash an LED (digital #13) so it left the serial communications lines. Simply connecting the RS232 UART lines of the bluetooth module to the TX/RX lines of the Arduino does the trick: Arduino-RX to Bluetooth-TX and visa-versa allows them to communicate (This may not be true when communicating from the Arduino's MCU and not FTDI-USB - check the connections!). Signal PIO1 (pin #24) gives a status instruction port; high when connected, low when disconnected. Signals PIO10 (pin #33) and PIO11 (pin #34) also give indications to the modules status. See the <i>Software Features</i> section of <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/Bluetooth Module Manual v1.2.pdf">the device's datasheet</a> for more details on their intended use. <h1>Talking to the Module</h1> The biggest thing to remember is that the WLS123A1M Bluetooth Module expects a carriage-return (<i>\r</i>) and line-feed (<i>\n</i>) combination (<i>\r\n</i>) before and after every command. To ensure this, I always sent a blank like before I entered the command, and once again after it. Sending too many <i>\r\n</i> sequences does not cause any problems. Not sending enough causes lots of errors. The logic inputs are TTL inputs, supposedly at 3.3v. The data-sheet says they will tolerate 5V logic from the FTDI/Atmel chips, and in my experience do. I used two computers to develop with the WLS123A1M module. My Apple MacBook Pro was used on the USB side of the Arduino board, as the local control of the board. My Ubuntu desktop machine was used to connect with the module via bluetooth. On the MacBook, I used a program called <a href="http://freeware.the-meiers.org/">CoolTerm</a> to act as a dump terminal, and the standard Mac OS X drivers were used to communicate with the Arduino's FTDI chipset. The default speed of this specific model was 38400 bps, but this can be changed in software (see the +INBD command). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BluetoothModule_CoolTerm1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BluetoothModule_CoolTerm1.png" width="500" alt="CoolTerm issuing some basic commands" class="aligncenter"></a> Presented below is a mixture of my own experience and what various data-sheets claim. If a command is mentioned in the datasheet and not in this section, it means I haven't personally tried it. Any changes made to these settings are retained even when the device is powered off. <h1>Commands for Setting Up</h1> It is also important to note that the module has two separate modes: Master and Slave. Changing between these is the first topic of discussion. <h2>Mode (STWMOD)</h2> The WLS123A1M module has two separate modes: Master and Slave modes. In master mode, it is the module that initiates connections, requiring it to scan for slave devices. In slave mode the module broadcasts itself as being available and waits for a master device to initiate a connection with it. These modules are in one state or another, they cannot be in both at the same time (that I know of), where as a PC can be. In my brief experience with the module, it seems to be easier (at least for what I am doing) to use slave mode, thus transferring the control to the more powerful device (such as a PC) with a better user interface. To set the device into Master (server) mode, you would send the following command: <blockquote> \r\n+STWMOD=1\r\n </blockquote> To set the device into Slave (client) mode, you would send: <blockquote> \r\n+STWMOD=0\r\n </blockquote> The module will respond with <blockquote> WORK:MASTER </blockquote> or <blockquote> WORK:SLAVER </blockquote> Accordingly. <h3>Flowcharts</h3> Just as a brief note between the two modes: the expected flowcharts are as follows: <h4>Master</h4> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BluetoothModule_MasterFlow.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BluetoothModule_MasterFlow.png" width="600" class="aligncenter"></a> In master mode, the module starts by inquring - scanning - for devices to connect to (those appearing in slave mode). The module will return the MAC addresses of available devices and, where possible, their names. The module then issues a connect request to a specific MAC address. An exchange of PIN numbers occurs then before the two devices are paired and ready for connections. <h4>Slave</h4> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BluetoothModule_SlaveFlow.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BluetoothModule_SlaveFlow.png" width="600" class="aligncenter"></a> In slave mode, the device offers itself for connection - broadcasts itself - to those master devices that are inquiring. When a connection is requested of the slave device, it is asked for a PIN number which is exchanged and the process continues as with master mode. The devices are paired and ready for connections. <h2>Baud Rate (STBD)</h2> Sending <blockquote> \r\n+STBD=115200\r\n </blockquote> changes the communications rate from the current setting to the supplied value of 115200 bps. The default is 38400. Available values are 9600, 19200, 38400, 57600, 115200, 230400, 460800. I have successfully used speeds up to and including 115200. This setting is remembered when the module is power-cycled. <h2>Device Name (STNA)</h2> Sending <blockquote> \r\n+STNA=ArduinoTest\r\n </blockquote> sets the device's broadcast name to "ArduinoTest". I am not sure what the length limit is, but everything I tried worked fine. I assume you would get an error message if the string was too long - you seem to get them for almost anything else :-) <h2>Allow Connections (STOAUT)</h2> To allow paired devices to connect to the device you need to permit paired devices to connect. To allow them, send <blockquote> \r\n+STOAUT=1\r\n </blockquote> Or to disallow connections from paired devices, send <blockquote> \r\n+STOAUT=0\r\n </blockquote> <h2>Set Pincode (STPIN)</h2> This is the pincode required to pair with the device when in master mode. The PIN is a 4-digit number; for example to set a pin of '1234' send <blockquote> \r\n+STPIN=1234\r\n </blockquote> It is removed with the delete Pincode (DLPIN) command, see below. This pin may also be the default try before sending the INPIN PIN request - I am not sure though. <h2>Delete Pincode (DLPIN)</h2> This removes a Pincode set with STPIN, as above. It takes no arguments. To remove the pincode, send <blockquote> \r\n+DLPIN\r\n </blockquote> <h2>Read Local Address (RTADDR)</h2> This returns the MAC address of the module. I could only get it working in master mode, but the MAC should be the same in slave mode too. Mine was. It should be. To get yours, send: <blockquote> \r\n+RTADDR\r\n </blockquote> <h1>Commands for Normal Operation</h1> <h2>Inquire (INQ)</h2> The inquire function operates differently depending on which mode the module is in. In master mode, it causes the module to scan for devices that can be connected to. In slave mode, it initiates broadcasting of the device's name (STNA) for master-mode devices to connect to. <h3>Master</h3> To start scanning for devices: <blockquote> \r\n+INQ=1\r\n </blockquote> And, to stop scanning: <blockquote> \r\n+INQ=0\r\n </blockquote> When the inquiry finishes, devices are returned in the following way: <blockquote> \r\n+RTINQ=aa,bb,cc,dd,ee,ff;name\r\n </blockquote> This would be the response for a device with MAC address: AA:BB:CC:DD:EE:FF and the name "name" <h3>Slave</h3> To start broadcasting to devices (to become visible to others): <blockquote> \r\n+INQ=1\r\n </blockquote> And, to stop broadcasting: <blockquote> \r\n+INQ=0\r\n </blockquote> <h2>Connect to Device (CONN)</h2> To connect to device with MAC address AA:BB:CC:DD:EE:FF, you would need to send: <blockquote> \r\n+CONN=aa,bb,cc,dd,ee,ff\r\n </blockquote> <h2>Pincode Request (INPIN)</h2> If your connection should require a Pincode, the module will send an INPIN command, as below: \r\n+INPINr\n To which you follow with an RTPIN command, as below. <h2>Input Pincode (RTPIN)</h2> This is in response to being asked for a PIN, such as an INPIN request is received. If you wish to respond with a PIN of 0000 such as is typical, then you would send the following: <blockquote> \r\n+RTPIN=0000\r\n </blockquote> <h2>Disconnecting (PIO0)</h2> Disconnecting is done via a hardware logic signal on pin PIO0 (pin #23 on the device). Taking this line high causes the module to disconnect. <h2>Return Status (RTSTA)</h2> This is the return status from the module. It is not a command. <blockquote> \r\n+RTSTA:XX\r\n </blockquote> where XX is the status code from: <ul> <li> 0 - Initialising</li> <li> 1 - Ready</li> <li> 2 - Inquiring</li> <li> 3 - Connecting</li> <li> 4 - Connected</li> </ul> Pin PIO1 (pin #24 on the device) also goes high when the module is connected to a device via Bluetooth. The PIO10 (pin #33) and PIO11 (pin #34) can also be used for statistics outputs. These provide useful places to connect status LEDs. See the <i>Software Features</i> section of <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/Bluetooth Module Manual v1.2.pdf">the device's datasheet</a> for more details on their intended use. <h1>Pairing with the Module</h1> Below are a few examples of pairing with the WLS123A1M Bluetooth Module under Mac OS X Snow Leopard and Ubuntu 10.04.3 LTS. These images were taken with the Arduino in slave mode, and having set the device into broadcast mode (slave-mode; INQ=1). This allows the module to be <i>findable</i>. <h2>Mac OS X</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BluetoothModule_MacPairing.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BluetoothModule_MacPairing.png" width="500" alt="Pairing to ArduinoTest in OS X" class="aligncenter"></a> Once you've got the device paired, you can connect to the device in the standard Mac Bluetooth way. This will create you a virtual comm port for the bluetooth device, something like <i>/dev/ArduinoTest-Dev</i> - this may vary. This can be used as a comm port as you ordinarily use one, such as with a terminal program to send RS232. <h2>Ubuntu 10.04.3 LTS</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BluetoothModule_UbuntuPairing.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BluetoothModule_UbuntuPairing.png" width="500" alt="Pairing to ArduinoTest in U10.04.3" class="aligncenter"></a> Under Linux it is not quite as straight forward, though you get a lot more choice. The process of getting a bluetooth comm port is standard and well documented, but I will explain it here for completeness. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BluetoothModule_UbuntuGettingComm.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BluetoothModule_UbuntuGettingComm.png" width="500" alt="Getting a device comm port" class="aligncenter"></a> The above image summarises the steps, but here they are again with a little more explanation. The first thing we will need to do is to find out the MAC address of the Bluetooth module. We use the following command to scan for devices. <blockquote> hcitool scan </blockquote> The image above shows it returning two devices; ArduinoTest and George's Macbook. ArduinoTest is the name I gave the module (via STNA). We see the MAC address for ArduinoTest is 00:18:E4:25:13:6A. We then use the <i>rfcomm</i> tool to create a virtual comm port. rfcomm uses device nodes in the style rfcommX where X is an integer. The first device is /dev/rfcomm0, which we use here. The <i>bind</i> option tells it to link the MAC address 00:18:E4:25:13:6A with the device node /dev/rfcomm0. This is run as root. <blockquote> sudo rfcomm bind /dev/rfcomm0 00:18:E4:25:13:6A </blockquote> We can check it worked out by running rfcomm and seeing the output. <blockquote> rfcomm </blockquote> We see it tells us that rfcomm0 is linked to our MAC address and the state is clean (we know we're also on channel 1, should it matter to us). At this point, /dev/rfcomm0 acts just like any other serial terminal device. It can be treated exactly the same as a hardware port, such as /dev/ttyS0 or /dev/ttyUSB0. Note: The bluetooth connection is not established until you open the port. When you close the port (drop use of /dev/rfcomm0) the bluetooth connection is also dropped. Running rfcomm at any time will tell you the state of the virtual bluetooth comm port. When you no longer require the device node, you can free (<i>release</i>) it with the following command (run as root): <blockquote> sudo rfcomm release /dev/rfcomm0 </blockquote> Running rfcomm now will return nothing, as no virtual comm ports exist. Using this method, the following data transfer test was done. <h1>Data Transfer</h1> Once the devices are paired and connected, the system acts just like an RS232 link between the two devices. I decided to try and put the system to actual use; I decided to try some data transfer using the Z-Modem binary data transfer between Mac and Ubuntu machines. The screenshots from the Mac were all sent over the Bluetooth module via Z-Modem, The first image shows the Mac sending the image via <a href="http://www.emtec.com/zoc/">ZOC</a> which supports Z-Modem on Mac. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BluetoothModule_MacFTransfer.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BluetoothModule_MacFTransfer.png" width="500" alt="Sending images on Mac" class="aligncenter"></a> The next image shows the reception of the above image transmission using <a href="http://en.wikipedia.org/wiki/Minicom">Minicom</a> which also supports Z-Modem under Linux. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BluetoothModule_UbuntuFTransfer.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BluetoothModule_UbuntuFTransfer.png" width="500" alt="Receiving images on Ubuntu" class="aligncenter"></a> All images from OS X were transferred this way before being put online. <b>FIXME_Category :Arduino</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Computers</b> <b>FIXME_Category :Programming</b> BRES http://new.george-smart.co.uk/bres closed page closed 2010-11-17 14:29:56 0 draft bres 1031 This page was moved here: <a href="http://new.george-smart.co.uk/barking_radio_and_electronics_society">Barking Radio and Electronics Society</a>. <a href="/contact-me">Please report this message to the webmaster</a>. Briggs and Stratton http://new.george-smart.co.uk/briggs_and_stratton 0 2012-04-21 01:36:48 closed page closed 3390 briggs_and_stratton draft Late 2010, <a href="http://www.christopher-smart.co.uk">Dad</a> brought a <a href="http://merrytiller.co.uk/">Merry Tiller</a> (<a href="http://merrytiller.co.uk/merry-tiller-history.htm">mode detail</a>) land rotavator on eBay. After transporting it home and it sitting outside for a while, we couldn't get the small 5HP Briggs and Stratton I/C engine to start. I would run for a second or two, then stall. One occasion it run for about 3 minutes before spluttering out. Obviously this would be no good if we were in the middle of a field, so we decided to have a go. This page documents our "having a go". Most of these small engines have actually seen very little work. Engines on go-karts may have had more use, but, for example, the one on our rotavator has seen very little use. For this reason it is pretty easy to dismiss that the fault is due to the engine simply being worn out. Checking play in the crank bearings should give a good indication of any heavy use. Neither of the engines here had seen any hard use. This page assumes you have got good oil in the engine to the correct level, and that the engine has been working and has since stopped. <h1>Simple Diagnostics</h1> Most of these checks are very straight forward to carry out. I am an Electrical Engineer, not a mechanical one, and I managed - I'm the most useless mechanic known to exist! To fire, the engine needs fuel, air and a spark. We need to work out which are not present in the cylinder. Valve timing is fixed on the smaller engines - or at least all of those that I had. Let's start with ground familiar to myself: <h2>Ignition</h2> A coil pack (sometimes wrongly called a <i>magnetron</i> <a href="which">is actually the bit that creates the microwaves inside a microwave oven</a>) creates energy from the rotation of the flywheel; the flywheel has a magnet on it, which when rotating past a coil of wire, creates a huge voltage inside the coil (ultimately providing our spark). This spark must come at the right time, but this is usually fixed again by the position of the coil pack/flywheel. Some slightly more complex systems employ a capacitor, and a set of points inside the flywheel. Others, such as these, don't. <h3>Spark-Plug</h3> Unplug and remove the spark-plug, and check the tip. Have a good look at the tip, checking for composite of soot, or erosion of the metal/electrodes. WikiBooks has a good <a href="http://en.wikibooks.org/wiki/Automobile_Repair/Spark_plugs">article on spark plugs</a> if you need more information, as well as <a href="http://www.strappe.com/plugs.html">this article</a> on what a spark-plug is telling you. It is interesting to note that as this is a very crude engine, it is highly unlikely that the engine will run perfectly, and so the plug may be dirty, worn, etc. Using a feeler gauge, set the gap as per the instructions recommended. I think I used about 10thou (thickness of few sheets of paper). The pro's and con's of the wrong size gap: <center><table border="1" cellpadding="2" > <tr><td></td><td><b>Wide</b></td><td><b>Narrow</b></td></tr><tr><td><b>Pro</b></td><td>Big spark to ignite fuel easily</td><td>Will always spark</td></tr><tr><td><b>Con</b></td><td>Sometimes misses (at high revs or when trying to start)</td><td>Small spark may have trouble igniting fuel</tr> </table> </center> I went for a pretty narrow gap as I was having trouble getting these engines to start. <h3>Does it Spark?</h3> If you don't have a specialist tool for checking for sparks, you can remove the spark-plug, wedge it next to something metal such as the engine block, with a pair of pliers on top to hold it (<b>don't hold it, it as it will get you!</b>), and turn the engine over. You should be able to see the sparks nice and clearly. If it doesn't spark at all, make sure the gap is reasonable and try again. If it still doesn't work, it could indicate a problem with the coil pack (check resistances with ohm meter), points (if you have them - usually inside flywheel) or a kill switch (a STOP switch or an OIL level sensor). If you get a small spark, try cleaning the spark gap with a light sand with emery paper - and I mean light! Ensure it's free from soot, dust, etc. Check the gap and generally fiddle to get a good clean spark every time. <h2>Carburettor</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Briggs_5HP_9.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Briggs_5HP_9.jpg" alt="B&S Pulsa-Jet Carb" class="aligncenter"></a> The purpose of the carburettor is to mix the correct amounts of fuel and air together, and get them into the cylinder. It has 3 mixer jets, for when the engine is at idle, medium speed, and high speed. These is only one mix adjustment, talked about in the Set Up section below. Dirt, dust and water all build up in the fuel supply, and with the lack of filtering, get sucked up into the carburettor blocking the jets. This was the case for both of these engines - small fragments of dirt stuck inside the carburettor. This section refers to the carb shown to the right. To check if your engine has a fuel problem, turn the engine over a few times. Does the exhaust gas smell of petrol? If you remove the spark-plug, can you smell petrol (strongly)? If so, it would indicate that fuel is getting into the engine, and the problem is elsewhere - No air? Check the air filter? - No spark? See above. If you cannot smell fuel, try this simple test: Tip a teaspoon of petrol into the cylinder via the spark-plug hole. Quickly replace the spark-plug (properly, and connect it), and then try to start the engine with the throttle open wide (high revs) and choke fully off (i.e. maximum airflow). If it starts, revs a bit and then dies, you have a fuel problem. If it struggles to do much, but fires, it's an air problem (or carburettor set up). If nothing happens, it's probably an ignition problem. Do not worry if the engine smokes at this stage. <h3>How the Pulsa-Jet Carburettor Works</h3> The pulsa-jet carburettor also has a small lift pump. Fuel is sucked from the main tank through the fine gauze on the bottom of the brass pipe (with the white tube) by this lift pump, and dropped back in a small higher compartment of the fuel tank - this means that engine doesn't stall on any inclines if the engine is low on fuel. The pump works from the inlet vacuum pressure: as the main cylinder pulls down with the inlet valve open, a vacuum is put on the carburettor which sucks in a small diaphragm and a small amount of fuel from the bottom tank - once the inlet vacuum is gone, a spring pushes the diaphragm back out, along with the fuel, which goes into the higher tank. The pump mechanism & diaphragm can be seen under the panel bolted to the visible side of the carburettor body. Open the compartment <b>very</b> carefully, as you don't want to tear the diaphragm - If you do tear it, or it is torn already, you can get spares on eBay pretty cheaply. Once fuel is in the higher reservoir, it is drawn through the mixer-jets body (the grey thick stubby tube, shown in the above thumbnail to the right of the brass pipe). This then mixes through these on the inside of the carburettor. <h3>Servicing</h3> As mentioned above, first check the fuel lift pump diaphragm. It should be un-torn. Check that the valves and gauze on the end of the white tube (see image above) are free from debris. Check the inside of the fuel tank for rust. Especially in the upper reservoir, as fuel from here is not further filtered. Give the carburettor a good clean. If you have access to an airline, blow air through the mixer jets until they seem clear - this can be hard to tell. I try to push air through the jets both ways, to give lodged debris less of a chance to stay around. If you don't have access to a compressor, you can do it with your lungs - be warned - petrol tastes horrible, and probably isn't very good for you... Your call. Check the air filter is clean and free from dust/dirt. Check the mixer needle isn't excessively worn. Once you've done this part, continue on to setting the carburettor up. <h3>Carburettor Setup</h3> Before you continue, there are two things. Make sure you have an air filter installed, else your set-up will be wrong with it on - most engines allow you to fit the filter assembly backwards so you can still access the mixer screws, the idle speed screw, and other adjustments. Reset the mixer screw - to do this, tighten the screw in (as if doing up a normal thread) just until you notice it getting tighter (<b>don't tighten it up, or you will ruin the mixer needle</b>). Once it's just tight, turn the screw back one and a half turns. This is the position we start from, as recommended by Briggs and Stratton. Start the engine. This may take a little while to get the fuel back into the system, etc. I suggest closing the choke fully and having the throttle open about half. Turn it over a few times until you notice it start to splutter and miss - this gets fuel in quickly - it probably won't start, and if it does, it will run god awful, so stop it again. Then open the choke fully (throttle stays about half), to let air in, and try to start it again. It may take a few more attempts, but if you've got everything else right, it will fire up eventually. Both of mine started off very lumpy, and then picked up pretty quickly. Once it has started, back the throttle to idle or as slow as it will stay running - note the engine may stall at low speeds or smoke like hell due to improper mix. With the engine going as slow as possible, have a little listen for about 10 seconds, just to check it all sounds good. Cut it out before it gets too hot, and check the flywheel is on tight, etc, and that all mechanical parts are nice and tightly screwed/bolted. Restart the engine now, and push the engine speed to full revs. Leave the engine to run for about 5 minutes, until it is nice and hot - don't worry too much if it is smoking a little. Don't worry if the engine is missing either - these will be fixed once the mix is adjusted - but the engine needs to be at a good operating temperature. Once the engine is hot, carefully start adjusting the mixer screw. If you think the engine is running rich (i.e. smoking) tighten the screw inwards to reduce the fuel to air mixture. If you think it is too lean (harder to tell, but engine will run very hot/sound strange), loosen the screw outwards to allow more fuel to air. Either way, work until you find one extreme, reduce until you find the other, and finalise half way between. Sweeping the engine speed from idle to full should result in nice even changes, with no missing or smoking. If the engine races (oscillates, i.e. revs itself up and down) then it is usually an issue caused by the governor which controls the carburettor, and not the carburettor itself - see the section about adjusting the governor, below. Once that's all good, set the idle speed. <h3>Idle Speed</h3> The engine's idle speed depends on the engine you have. A figure of 1500 RPM is often quoted - the exact figure can be found from the Briggs & Stratton website. I went for an <i>about right</i> approach. Either way, here's how it's done... First you need to find the throttle butterfly on the top of the carburettor. On the Pulsa-Jet carburettor, it's the butterfly closest to the cylinder inlet connection - in the above thumbnail, it's the closest to the left. It directly controls the engine power (not speed, power). With the engine warmed up, and running at idle, opening the butterfly will result in the engine revving up quickly - flicking the butterfly open should result in an immediate response from the engine - if not, the mixture is probably wrong, or the air filter/exhaust is blocked. Hold the throttle butterfly closed so that the idle screw is controlling the butterfly opening, and nothing else. Adjust the screw so that the engine runs at the desired speed. Either that set by the manufacturer or what you feel is about right. 1500RPM seemed excessive to me. Either way, too high and you're making loads of noise and wasting fuel at idle; too low and the engine will stall more easily at idle - your call. Once done, flick the butterfly a few times, revving the engine, and make sure it goes back to idle (where the external throttle control should be). Revving from the front panel allows for section of a governed speed, (ideally) regardless of engine load. See the Governor section for more details. <h3>Governor Setup</h3> The idea of the governor is to keep the engine speed constant regardless of load. The feedback system works such that from idle, you move the front panel throttle, the throttle butterfly quickly flashes open revving the engine to the new speed, and then the governor shuts the butterfly down quickly again, to maintain that speed. If the engine is then loaded, the engine speed will start to drop, and so the governor feedback works to open the throttle butterfly giving the engine more fuel and thus more power, and ultimately maintaining our revs while powering more load. On these small engines, the governor is usually very crude; the 3HP engine below simply has a piece of metal that the cooling fan (flywheel fins) blow against, giving a concept of crank speed; the 5HP engine a slightly better system using slips and gears. There is normally a spring and the governor maintaining equilibrium at the throttle butterfly arm. There is usually some adjustment around the spring, allowing you to increase of decrease the governor's effect - do not let the engine exceed the maximum speed set out by the manufacturer! This is kind of an iterative process. When the governor is right, the engine will: <ul> <li> not race (rev up/down automatically)</li> <li> will respond well to the front panel throttle controls</li> <li> will quickly recover from manual disturbance to the throttle butterfly.</li> </ul> As an ultimate test, put the front throttle at idle, hold the butterfly at idle, push the front throttle to full speed (while holding the butterfly against the idle stop), and then quickly let go of the butterfly. The engine should very quickly race to the fast speed, and stop once it gets there without any hesitation or oscillation - if the engine struggles (misses/stalls, etc) check the mixture and carburettor setup. If the engine oscillates or surges/races, then the governor isn't setup right. <h1>Removing the Flywheel</h1> A crafty cheat to temporarily jam the engine is to use nylon rope. This can be seen in the 3HP engine photos below. It allows you unscrew the ratchet from the crank-shaft. To do it, remove the spark-plug and then the engine over by hand until the piston is at the bottom of the bore. Then push in a length of nylon rope, to take up some space inside the cylinder. Next slowly the engine over until the piston compresses the rope, and cannot compress any more. You can then carefully use this to jam the crank. Turning the engine back allows for the rope to be pulled out, and returns the engine to normal. Return the spark plug. <h1>5HP I/C Engine</h1> This images were taken to aid the reassembly. I put them here to aid you if you have a similar engine but not the foresight to take pictures. <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Briggs_5HP_1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Briggs_5HP_1.jpg" width="140" alt="3HP I/C Briggs & Stratton" class="aligncenter"></a><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Briggs_5HP_9.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Briggs_5HP_9.jpg" alt="B&S Pulsa-Jet Carb" class="aligncenter"></a><td>:)</tr> </table> Click to enlarge </center> <h1>3HP I/C Engine</h1> Spurred on by success with the 5HP rotavator engine, we bought another small 3HP I/C Briggs and Stratton engine on eBay. The engine was advertised as previously work but would no longer start. Having seen the simplicity of the rotavator engine, we decided it would be worth the challenge. We paid £12 for the engine. <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Briggs_3HP_3.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Briggs_3HP_3.jpg" width="140" alt="3HP I/C Briggs & Stratton" class="aligncenter"></a></tr> </table><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Briggs_3HP_1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Briggs_3HP_1.jpg" width="100" alt="3HP I/C Briggs & Stratton" class="aligncenter"></a></tr> </table> Click to enlarge </center> <b>FIXME_Category :Engine</b> <b>FIXME_Category :Mechanics</b> <b>FIXME_Category :Howto</b> Bus Pirate http://new.george-smart.co.uk/bus_pirate 3352 bus_pirate draft 2012-04-21 01:04:34 0 closed page closed I have ordered by Bus Pirate from Seeed Studios, but am still waiting for it to come. Check back here soon! <b>FIXME_Category :Electronics</b> <b>FIXME_Category :ToDo</b> Calendar http://new.george-smart.co.uk/calendar closed page closed 0 2014-11-17 18:05:09 draft calendar 5141 Car Bluetooth Audio http://new.george-smart.co.uk/car_bluetooth_audio 1697 draft car_bluetooth_audio 2011-02-25 21:20:00 0 closed page closed = The Problem = The car I own (Ford Focus C-MAX, 2004 gate release) has a Sony CD/MP3 player which I installed. The MP3 CD Player is very good, and, with MP3s it is easy to get around 150 songs onto a single 700MB file. However, I regularly use my mobile phone as a source of music when on trains, walking about, etc, and so I regularly update the collection. I wanted to get my phone music to play via the car's speakers, as my phone has 32GB of space, and will hold a much larger music collection. When I installed the radio, I noticed two RCA connectors on the radio back - clearly inputs or outputs. Playing with the radio's menu narrowed this down to them being inputs, as there is an option for aux input (and no mention about sub-woofer outputs). My Dad's Ford Mondeo has a 3.5mm jack socket inside the glove box, where it is possible to connect a mobile phone, iPod, or similar. My C-MAX didn't have this option and Ford do not offer any wiring looms or kits to help. I set about making a cable with two RCA connectors on one end for left and right connections to the Sony radio. The other end had a 3.5mm socket, which was fixed into the top of the glove box in a similar fashion to my Dad's Mondeo has. This works perfectly, and I have been using it for the last 3 years. Recently, I decided to re-visit this idea further to a conversation with my Dad over a cafe lunch one Saturday (yes, we're both Electronic Engineers, and so this kind of topic is common). I was explaining that the problem is, when the phone is playing music, the volume is controlled (as expected) by the amplifier in the Sony CD head unit, but the track playing is changed on the phone - very difficult (and illegal) to do when driving. The solution suggested was to search for a wiring kit to allow the audio to be sent via Bluetooth, which provides a path for the audio and a way of controlling the mobile phone. This is discussed in subsequent sections below. I could not find an official way of getting this to work and interfacing nicely with the car's radio front panel - I wanted to be able to use the Next, Back, Pause, Play, buttons on the Sony radio to control the phone. I needed to interface the car radio to the Bluetooth receiver, as well as patching the audio from the Bluetooth receiver back into the aux inputs for the car. I had an idea... <h1>An Idea</h1> Two Bluetooth profiles, <a href="http://en.wikipedia.org/wiki/Bluetooth_profile#Advanced_Audio_Distribution_Profile">A2DP</a> (Advanced Audio Distribution Profile) and <a href="http://en.wikipedia.org/wiki/Bluetooth_profile#Audio.2FVideo_Remote_Control_Profile">AVRCP</a> (Audio/Video Remote Control Profile) are usually used for this purpose. They are common in Bluetooth headphones, hands free kits, etc. The first profile, A2DP, provides a basic method to send high quality audio over Bluetooth - our music. The second, AVRCP, provides a way of feeding back control information - the controls. If I could buy a Bluetooth module that performed the tasks required, it could be built into a small project box and interfaced to the car radio. This could be hidden out of view, and with the mobile phone paired to the module, the phone music could be played and controlled via the car radio. This is what I wanted. <h1>The Bits</h1> After extensive hunting, I found several devices - Amazon has many. Many receivers are designed for home audio equipment, which enabled the user to play music via a Hi-Fi system. However, these required mains electricity, and did not offer the ability to control the mobile phone. I also looked at buying a PCB module as a subsystem, as I have a Bluetooth serial port PCB module. These were quite expensive, and were vaigue about their supporting of AVRCP. I finally settled on a cheap Bluetooth headset thing from eBay (Auction Title: Mini Clip-On A2DP Stereo Bluetooth Headset Headphones, from seller <a href="http://myworld.ebay.co.uk/zimplex-uk/">Zimplex-UK</a>). It was cheap and nasty looking, but was fundamentally cheap, so it was okay! <b>I have purchased it, and am waiting for it to arrive from China.</b> The image below is of the device I purchased - it will be taken apart for the components inside and repackaged up to fit in the car. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/BluetoothHeadphones.JPG"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/BluetoothHeadphones.JPG" alt="Ebay Auction Image" class="aligncenter"></a> <h1>The Plan</h1> As touched on above, the headphone unit will be taken apart. Wires will be attached to each of the buttons on the Bluetooth receiver, so that they can be interfaced to the car radio. The audio will also be patched through to the car radio's aux input. An LM7805 (fixed voltage regulator) will be used to drop the car's 12VDC to the 5VDC required for the Bluetooth receiver to work. This will all be built into a small project box, with just the interface wires and power coming from the box itself. This will then be attached inside the glove box of the car. With some luck, and a little skill, it will all work! Bingo</td><td> This page is due for an update when the headphone thing arrives from China (11-23 days shipping estimate). <h1>So Far</h1> The item arrived some months back and I have not really played with it. I recently placed it in the car as is, and started using it. It works very well, but I plan to modify it to be more suitable for use in the car. The plan has been revised somewhat; I will revise the plan when I get some more time. <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Audio</b> <b>FIXME_Category :Car</b> Car USB Charger http://new.george-smart.co.uk/car_usb_charger 2012-01-12 14:49:46 0 closed closed page 3023 car_usb_charger draft This page details how I created a USB DCP (dedicated charge port) in my car for my HTC Desire. This is a permanent installation taking a component level approach. The page also details the testing and compliance with the USB charging standards. If you are looking for something that can be bought of the shelf, this page isn't for you. However, you may find it interesting. <h1>The Problem</h1> I own a HTC Desire and use it to link to my <a href="http://new.george-smart.co.uk/car_bluetooth_audio">Car Bluetooth Audio</a> adapter. This allows me to play music and run Google Navigator (a fine piece of software). However, as you can imagine, playing music, running the navigator (which downloads maps via 3G) and the display continuously uses a fair bit of power. Standard USB chargers tend to only offer 500mA at 5V for charging mobile phones via USB. This is the maximum current supplied by a standard USB port. However modern phones require more than this in order to guarantee that the phone will still charge even under heavy battery loads. The HTC Desire's technical specifications states that 850mA is the maximum current, although in practise (from my own measurements) it has never gone above around 700mA. This page details my investigation into how comes the HTC's branded charger can keep my phone operational under heavy battery loads but many other third-party chargers cannot. <h1>The Solution</h1> Recent changes within the USB specification make provisions for a USB DCP (dedicated charging port) in which the charger must offer more than 500mA supplied by the standard USB port. <a href="http://www.usb.org/developers/devclass_docs">The Specification</a> makes clear the acceptable output voltages and currents. I therefore set about making a regulator from the car's 12V supply (mine can be as high as 14.5V with the engine running). I had various attempts with switch-mode regulators before settling on a linear regulator for the final design. Although very efficient, switching regulators created switching noise that I just couldn't eliminate to my satisfaction - this wasn't so important when listening to music, as the music-to-switching-noise level was very high, but, during a phone call where there are often periods of quiet, this noise was prevalent. The linear regulator, by nature, does not produce any switching noise but is much less efficient - the extra voltage is simply dissipated as heat - and when there is a large voltage difference at a reasonable current, this is a lot of power! Some rough calculations proved this idea to be workable, and so I went ahead and built the final (linear) regulator presented here. <h1>The Design</h1> The design uses <a href="http://www.national.com/">National Semiconductor</a>'s <a href="http://www.national.com/opf/LM/LM7805C.html">LM 7805</a> (now discontinued, replaced with <a href="http://www.national.com/mpf/LM/LM78M05.html">LM 75M05</a>). If you are not worried by switching noise (or have more of an idea how to filter it), the <a href="http://www.national.com/pf/LM/LMZ12010.html">LMZ 12010</a> looks to be a splendid chip with 10A output @ ~92% efficient. <h2>Calculations</h2> The LM 7805C chips I used have a maximum output current of 1.5A. Slightly higher currents result in fold-back current limiting (the output voltage drops to keep current constant). Here is the specification for what I would like: <ul> <li> Maximum observed supply voltage, 14.5 volts.</li> <li> Maximum required current output, 2 amps.</li> <li> Over-rated current output, 4 amps. (I wanted to be able to plug two devices in, though this was not required long term. It also ensures the device is over specified.)</li> </ul> Firstly, I calculated how many devices I would require to supply 4 amps. :I_{output} = 4A :I_{max} = 1.5A :N_{devices} = \frac{I_{output}}{I_{max}} = \frac{4}{1.5} = 2.66 = 3 devices <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/LM7805_Power_Dissipation.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/LM7805_Power_Dissipation.png" alt="Power Dissipation Graph" class="aligncenter"></a> Next, we calculate the power dissipation for each individual device: :V_{supply} = 14.5V :V_{output} = 5.0V :I_{output} = 4A :N_{devices} = 3 :I_{device} = 1&#x2153; :P=I \times R :P_{device} = (V_{supply}-V_{output}) \times \left (\frac{I_{output}}{N_{devices}} \right ) :P_{device} = (14.5-5) 1&#x2153; \right ) = 12.\dot{6} W (absolute maximum) Total power dissipation (for all 3 devices) is also calculated: :V_{supply} = 14.5V :V_{output} = 5.0V :I_{output} = 4A :P_{device_{total}} = (V_{supply}-V_{output}) \times I_{output} = (14.5-5) \times 4 = 38 W (for all devices, at highest voltage & current) From the inset graph (right) we see that a heat-sink with a thermal resistance of 10°C/W (10°C/W means the heat sink (and therefore the regulators) will be 10°C hotter than the surrounding air for every 1W of heat it is dissipating) allows us to dissipate more power in the device. The heat-sink I have chosen to use (an old CPU heat-sink, bolted to a metal box containing the devices) offers a much lower thermal resistance, and combined with the metal of the car, we can assume the heat-sink resistance close to infinite case on the graph. Some power will also be dissipated by the balancing resistors (0.1&Omega;). These resistors are used to drop the voltage from one regulator under high currents to account for manufacturing tolerances, i.e. so that one single device doesn't try to produce the full 4 amps. :R_{balance} = 0.1&Omega; :I_{output} = 4A :N_{resistors} = 3 :P = I^2 \times R :P_{resistor} = \left ( \frac{I_{output}}{N_{resistors}} \right ) \times R_{balance} :P_{resistor} = 1&#x2153; \right ) \times 0.1 = 0.1\dot{7} W per resistor :P_{resistors_{total}} = P_{resistor} \times N_{resistors} = 0.1\dot{7} \times 3 = 0.5\dot{3} for all 3 resistors Combining the resistors power output with the devices as calculated above, we get the following: :P_{total} = P_{device_{total}} + P_{resistors_{total}} = 38 + 0.5\dot{3} = 38.5\dot{3} W total from system It's going to get hot under extreme circumstances, if proper heat-sinking isn't installed - A good case for switch-mode power supplies if there ever was one! More typical input voltages of 13.8V and one device at 5V, 2A yields a result of 17.8\dot{6} W. Calculating efficiency for the sake of comparison: :Efficiency = \frac{Useful \; Power \; Out}{Total \; Power \; In} = \frac{5V * 4A}{14.5V * 4A} = 0.3448 = 34.48 % A shockingly low value compared to the quoted 92% for <a href="http://www.national.com/pf/LM/LMZ12010.html">LMZ 12010</a>. The price paid for no switching noise</td><td>! <h2>The Schematic</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Car_USB_DCP_Schematic.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Car_USB_DCP_Schematic.png" alt="The Schematic" class="aligncenter"></a> The schematic above is fairly simple. Note that devices U1, U2 and U3 as well as resistors R1, R2 and R3 are bolted to the heat-sink as discussed in the power calculations above. Capacitors C1, C2, C3 and C4 act to smooth the supply removing any noise from it that may be present on the input (i.e. alternator whine, etc). R4 and D1 provide an indication that the device is powered on. This may be removed if you don't require it. The output of this regulator stage needs to be connected to a USB-A Socket. The kind found on a computer's backplate. Two of the wires will take the 5V and ground from the regulator, the other (inner) two, D+ and D- data lines, are shorted together to identify the port as a dedicated charger port. This is shown in the image below. However, my schematic software (LabCentre Electronic's Proteus Professional) doesn't have a schematic device for a USB socket, only the plug. So that's what is here. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Car_USB_DCP_PlugSocket.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Car_USB_DCP_PlugSocket.png" alt="DCP" class="aligncenter"></a> Just to reiterate, <b>your device will need the regulated 5V connected to the socket, and the data lines shorted together to indicate a DCP</b>. <h2>The Made Regulator</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Car_USB_DCP_Made.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Car_USB_DCP_Made.jpg" width="600" alt="The Made Article" class="aligncenter"></a> The construction method is clearly not great, but it works fine. I included a few connectors to allow me to disconnect this box and work on it without having to remove and re-run cables inside the vehicle. I run cables from the engine compartment where the regulator is located, to the back of the dashboard and up inside the dashboard storage box (for CDs etc). This then provides a USB port that is easily accessable on the dashboard for powering my HTC Desire or TomTom SatNav (or any other USB Device). The regulator I built varies very slightly from the schematic. <h1>Testing</h1> My main concern (aside from blowing the phone up) was that the phone wouldn't treat this as a dedicated charging port, rather using it as a standard charging port. The electrical difference between the two, as mentioned above, is that the two data pins (D+ & D-) are shorted together. However, some places on the internet mention that some mobile phones test the supply, to assess it's capability of supplying higher charge currents. I decided that if my device complied with the <a href="http://www.usb.org/developers/devclass_docs">USB Specifications</a>, specifically the <a href="http://www.usb.org/developers/devclass_docs/Battery_Charging_V1_2.zip">Battery Charging v1.2 Spec and Adopters Agreement</a> then that was about all I could do. So I set about testing. The main test for the charger is the load test - a plot of charger terminal voltage against charge current. Section 4.4.1 on page 39 of the <i>Battery Charging Specification, Revision 1.2, December 7, 2010</i> gives an example graph showing acceptable performances by various charger types so I figured I would plot my charger's performance onto the same graph and hope that it performs at it should. The test saw me using a high current power supply (30A) at 14.5V to simulate that of a vehicle. Then, using an artificial load (a device that draws current in a controlled way) the <i>charge</i> current was gradually increased and record made of the charger's terminal voltage. These valves were then plotted as X-Y scatter points and a line added to ease the eye. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Car_USB_DCP_Test_Load.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Car_USB_DCP_Test_Load.png" width="600" class="aligncenter"></a> The specification states simply that the load line must provide 2 amps at a voltage greater than 2 volts, and therefore cross at right edge of the green box. For devices that cannot supply 2 amps, they should reduce the terminal voltage such that the load line leaves the green box through the bottom of the green box. The load line should never go inside the red box (if it does, it would be classed as a standard USB port). Here we see that the load line (in blue) meets these specifications exactly. <h1>Conclusion</h1> Some brief experimentation with my HTC Desire reveals that the phone never draws more than 800mA. This is confirmed is various places online. The device I built complies fully with the specification for a USB DCP. Foldback current limit starts at 4.5A and is almost fully shut-down at 5A. This is a feature of the LM 7805. When using my Desire with Bluetooth and Google Navigator, the device is able to keep up charging where as before the device would gradually discharge. Others note that by supplying 5.5V to the device, the Desire enters the quick-charge algorithm (essentially treating the port as if it is configured as a DCP). However, 5.5V is outside of the specified USB bus voltage, which is an absolute maximum of 5.25V. I opted against this method as it would make the socket in my car non-standard (and possibly lethal to some devices)! Other than that, the regulator runs pretty cool with just the standard CPU heat-sink to cool it. It turned out exactly as I had hoped. <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Phones</b> <b>FIXME_Category :Car</b> Carmageddon http://new.george-smart.co.uk/carmageddon 0 2012-01-12 14:17:45 closed page closed 2997 draft carmageddon == Background == Carmageddon, inspired by the 1975 cult classic movie Death Race 2000, is the first of a series of graphically violent driving-oriented video games produced by Stainless Games. The game involves winning a race by any means possible. There are several ways to win. The player can (1) destroy all other contestants in the race by destroying their vehicles; (2) kill every single 'zombie' on the map, of which there are usually several hundred; (3) complete the race, achieving a reasonable finishing position - this has to be done with the other contestants attempting to destroy your car. It is quite difficult to do the game justice. It's an old DOS/Win95 game, released in 1997, and the graphics aren't amazing. The game is noted to have a good physics engine (for its time), and was quite revolutionary in the fact that there were no strict limits to where the user could drive, meaning that the player is able to drive for miles away from the track. <h2>Screenshots</h2> Below are a few screenshots I took for this page specifically. I shall take more interesting ones during gameplay soon. <gallery> Image:carmageddon1.png|Shunting opponents Image:carmageddon2.png|Style bonus for spattering pedestrians Image:carmageddon3.png|Winning! </gallery> <b>FIXME_Category :Games</b> <b>FIXME_Category :Computers</b> CARPET http://new.george-smart.co.uk/carpet draft carpet 1764 page closed closed 2011-02-25 23:33:43 0 Computer Aided Radar Performance Evaluation Toolkit. This software may be used to evaluate and observe the performance of Radar systems. The software here is a demonstration edition, but is enough to have a play about with. <b><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/CARPET_Demo.tar.gz">Download the Demonstration Software</a></b> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/CARPET_Demo.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/CARPET_Demo.png" width="600" alt="CARPET Splash" class="aligncenter"></a> <h2>Received Power</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/CARPET_RX_Power.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/CARPET_RX_Power.png" width="600" class="aligncenter"></a> <h2>Target Detection Probably</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/CARPET_Detection_Probability.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/CARPET_Detection_Probability.png" width="600" class="aligncenter"></a> <h2>Coverage Map</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/CARPET_Coverage.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/CARPET_Coverage.png" width="600" class="aligncenter"></a> <h2>Atmospheric Losses</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/CARPET_Losses.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/CARPET_Losses.png" width="600" class="aligncenter"></a> <b>FIXME_Category :Computers</b> <b>FIXME_Category :Radar</b> Cheap CCY-01 USB Hub http://new.george-smart.co.uk/cheap_ccy_01_usb_hub 2998 draft cheap_ccy_01_usb_hub 0 2012-01-12 14:21:33 closed page closed While creating an improved <a href="http://new.george-smart.co.uk/icom_ci_v_interface">Icom CI-V Interface</a> I acquired a 4-port USB hub for internal interconnections from <a href="http://webshed.org">Dave Mills (G7UVW)</a> which he bought from a cheap store in the UK; something like <i>PoundShop(tm)</i> or <i>99pStores(tm)</i> or <i>PoundLand(tm)</i> or similar. The USB hub, marketed as a "2.0 USB Hub" failed to support more than 1 device when tested. Upon further inspection, it become clear that the device has just 4 ports connected in parallel - <b>not</b> how USB hubs are supposed to work. <b>This device is not a USB Hub. The hardware could never be a USB Hub. It will never function as a hub.</b> The rest of this page details exactly how and why that is! These two images show the packaging of the CCY-01 USB 2.0 Hub. <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/CCY01_Packaging_Front.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/CCY01_Packaging_Front.jpg" width="300" alt="CCY-01 USB hub" class="aligncenter"></a></tr> </table> Click an image to see image details; you can see a high-resolution image via a link on the details page. </center> These two images show close up, the front and back of the 'device': <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/CCY01_Device_Front.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/CCY01_Device_Front.jpg" width="300" alt="CCY-01 USB hub" class="aligncenter"></a></tr> </table> Click an image to see image details; you can see a high-resolution image via a link on the details page. </center> This image shows the the main PCB extracted from the case: <center> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/CCY01_PCB_Front.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/CCY01_PCB_Front.jpg" width="600" alt="CCY-01 USB hub" class="aligncenter"></a> Click an image to see image details; you can see a high-resolution image via a link on the details page. </center> This image shows the back of the PCB. You can clearly see the USB sockets are all connected in parallel and only 2 wires go under the epoxy to the <i>chip</i> - Images and X-Rays later show there to be no IC but at the time I didn't know this. However, connecting these sockets in parallel is <b>not</b> now USB hubs are made; and explains why this did not perform as such. <center> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/CCY01_PCB_Back.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/CCY01_PCB_Back.jpg" width="600" alt="CCY-01 USB hub" class="aligncenter"></a> Click an image to see image details; you can see a high-resolution image via a link on the details page. </center> These two images show the de-constructed CCY-01 USB Hub. This was every part that was included: 4-sockets, 1-LED, 1-Resistor, 1-PCB, 1-USB Cable. The right image (of the back of the PCB) shows the supposed IC (under the epoxy (black dot) in the image above). It has been ground off to expose any IC that may have existed - No such chip did exist - the result is a slightly chewed up board (it went through a milling machine, after all) with no evidence of their have ever existed an IC. <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/CCY01_Deconstructed_Front.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/CCY01_Deconstructed_Front.jpg" width="300" alt="CCY-01 USB hub" class="aligncenter"></a></tr> </table> Click an image to see image details; you can see a high-resolution image via a link on the details page. </center> In a more professional undertaking, <a href="http://webshed.org">Dave</a> took X-Rays of the board showing there was indeed no IC present. His results confirm mine in that under the epoxy exists a few etchings looking like footprints for an IC, none of the wires out of the epoxy actually connect to anything. <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/CCY01_XRay_1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/CCY01_XRay_1.jpg" width="300" alt="CCY-01 USB hub" class="aligncenter"></a></tr> </table> Click an image to see image details; you can see a high-resolution image via a link on the details page. </center> <h1>Notes</h1> Thanks to <a href="http://webshed.org">Dr David Mills, G7UVW</a> for supplying the two images of the packaging insert (the first two) images and the X-Ray (last) image. <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Computers</b> Chickens http://new.george-smart.co.uk/chickens draft chickens 3388 page closed closed 2012-04-21 01:35:18 0 = Keeping Chickens = My parents have always been interested in raising livestock since <a href="http://www.rivercottage.net/">Hugh Fearnly Whittingstool's River Cottage</a> project was aired on Channel4. This combined with <a href="http://www.telegraph.co.uk/news/uknews/1574267/Jamie-Oliver-campaigns-for-chicken-welfare.html">Jamie Oliver's battery chicken campaign</a> made my parents want chickens all the more. We live in a busy town on the outskirts of London, and had always planned on doing this when we move. My parents intend to move once my Dad retires in 2013. However, a family friend living on the Isle of Wight convinced my Dad that it was completely achievable in an urban setting. We ordered the chicken coop made by ComfyPets from eBay UK. The chickens come from <a href="http://www.smilersfarmpoultry.co.uk/">Smilers Farm Poultry</a>, a farm, about an hours drive away from us. We bought 4 birds, with the intention of buying 2 more at a later stage. We had no idea how hard it would be to keep chickens. Our primary concern was that the foxes would get into the coop. The paving slabs around the coop serve a double purpose. They provide a nice path to stand on, and also prevent the foxes from digging into the cage. We bought a galvanised dustbin (shown left) to keep the food (Layers Pellets, Mixed Corn, Mealworm, etc) inside, in an attempt to keep out vermin. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Chooks_house_1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Chooks_house_1.jpg" width="600" alt="The first chicken house, bought from ComfyPets" class="aligncenter"></a> Soon after putting the chickens into the coop it was evident that there wasn't as much room as we would have liked. We decided to extend the back of the coop to just over double the size. This was done by just doubling the side pieces while ensuring the slope for the roof. We used welded steal wire for the sides as it is slightly more heavy duty than traditional chicken wire. The wire mesh was stabled to the wooden frame with large staples. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/ChickenCoop2.JPG"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/ChickenCoop2.JPG" width="600" alt="Mark 2 Chicken Coop that Dad and I extended" class="aligncenter"></a> The above photo of the extended chicken coop was taken 9 months after the original installation of the coop, though it was extended much earlier. The two hanging containers contain food (green, right) and water (red, left) and are kept topped up. The side dishes (white, under the house, on the back and side walls) contain grit, water and food. In the early stages, the bossy chicken (named Queenie) stopped the smaller (Tikka and Nuggets) from eating/drinking - hence the reason for doubling up the food and water. We allow the chickens to roam the garden during the daytime, when we are about. The family dog (<a href="http://new.george-smart.co.uk/pets_bob">Bob</a>) behaves perfectly with the chickens whom really aren't bothered by the dog at all. <h1>The Birds</h1> We had originally planned to 'rescue' 4 chickens from battery farms. However, this was not possible because at the time we finished the coop it was just before Christmas. For obvious reasons, battery farm chickens are not issued to the public before Christmas. After Christmas, there was a large waiting list ex-battery hens. For this reason we decided to buy the chickens, with the intention of getting some ex-battery hens once we had things settled - We still haven't got to this point yet, as we are in the process of making a fence to stop the hens from entering the main garden. Our garden is split into 2 sections; an upper part with the shed, chicken coop and vegetable plots; and a lower part with flowers, tables and chairs, and otherwise the part we use frequently. When the chickens wander down into the lower part, they eat all of the buds off of the flowers and generally cause havoc. Below are the birds:<table align="center" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Paxo.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Paxo.jpg" width="120" alt="Paxo" class="aligncenter"></a></tr> </table> <b>FIXME_Category :Family</b> <b>FIXME_Category :About Me</b> Compiling FreeDV http://new.george-smart.co.uk/compiling_freedv 4296 compiling_freedv draft 2013-04-09 13:51:16 0 closed page closed <b>This page is currently not working as of 09 April 2013, following a recent upgrade...</b> <blockquote> /usr/lib/gcc/i686-linux-gnu/4.7/../../../i386-linux-gnu/libasound.so: could not read symbols: Invalid operation </blockquote> <hr> This page details how I compiled <a href="http://freedv.org/">FreeDV</a> on Ubuntu. What's it all about? This extract is from the project's website: <blockquote> FreeDV is a GUI application for Windows and Linux (MacOS and BSD are in testing) that allows any SSB radio to be used for low bit rate digital voice. Speech is compressed down to 1400 bit/s then modulated onto a 1100 Hz wide QPSK signal which is sent to the Mic input of a SSB radio. On receive, the signal is received by the SSB radio, then demodulated and decoded by FreeDV. FreeDV was built by an international team of Radio Amateurs working together on coding, design, user interface and testing. FreeDV is open source software, released under the GNU Public License version 2.1. The FDMDV modem and Codec 2 Speech codec used in FreeDV are also open source. </blockquote> Lots of people have been talking about FreeDV and Digital Voice on HF for some time now, and so I decided to see what it was all about. There are windows binaries available on the project website as well as RedHat RPMs; but, no Debian packages. This page details how I went about compiling FreeDV for Ubuntu Linux 12.04 64-bit. <h1>Get Required Packages</h1> Most of the required packages are pulled in from the internet when you run the <i>makescript</i> but there are a few you need to install yourself. These are the main libraries, which FreeDV depends on, according to their documentation: <blockquote> sudo apt-get update sudo apt-get install libgtk2.0-dev libsamplerate0-dev libsndfile1-dev libasound2-dev subversion </blockquote> I also found I needed the following installing too, in order to get the program to compile correctly (or at all!): sudo apt-get install libportaudio-dev portaudio19-dev You will enter your password, check that it's not going to do anything stupid, and then continue with the package installation. It should look something like this once it's done - your folder depends where you are located: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/FreeDV_Compiling_Deps.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/FreeDV_Compiling_Deps.png" width="500" alt="Downloaded Dependencies" class="aligncenter"></a> <h1>Getting the Source Code</h1> One of the nice things about the FreeDV project is that it's all open source software unlike <a href="http://www.d-staruk.co.uk/">D-STAR</a> and other commercial products. I suggest to start in your home folder. The source code for FreeDV is kept on <a href="http://sourceforge.net/">SourceForge</a>, and it can be <i>checked out</i> (downloaded) using the following command: <blockquote> cd ~/ svn checkout https://freetel.svn.sourceforge.net/svnroot/freetel/fdmdv2 </blockquote> This creates the folder <i>fdmdv2</i> in the directory you run it from, in this case my home directory (/home/george). Move into this folder with the following command: <blockquote> cd fdmdv2 </blockquote> You should have a terminal looking something like the following: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/FreeDV_Compiling_Source.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/FreeDV_Compiling_Source.png" width="500" alt="Downloaded Source" class="aligncenter"></a> <h1>Compile the Program</h1> Now we need to change into the source directory, <i>./fdmdv2/src</i>: <blockquote> cd src/ </blockquote> Finally, we issue the <i>make</i> command with instruction to make for Linux: <blockquote> make -f Makefile.linux </blockquote> The compiling command takes some time. Around 20 minutes on this quad-core Apple MacBook Pro. Around 2 hours on my Samsung dual core Intel Atom netbook. After some time you should notice it finish with no errors: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/FreeDV_Compiling_Build.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/FreeDV_Compiling_Build.png" width="500" alt="Build Binaries" class="aligncenter"></a> <h1>Running the Program</h1> Once it's finished building, you can run FreeDV from the source folder you compiled it in: <blockquote> ./freedv </blockquote> You should see a new window pop up. Hopefully, it's FreeDV! A the current time of writing, this was FreeDV 0.94 Beta. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/FreeDV_Compiling_Run.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/FreeDV_Compiling_Run.png" width="500" alt="Build Binaries" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/FreeDV_Compiling_RunAbout.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/FreeDV_Compiling_RunAbout.png" width="500" alt="Build Binaries" class="aligncenter"></a> After that, you're ready to roll! Compiling WSPR http://new.george-smart.co.uk/compiling_wspr 2015-11-25 15:47:54 0 closed page closed 5355 compiling_wspr draft This page details how I compiled K1JT's WSPR software on my amd64 Ubuntu 11.04 machine. It should work for 32-bit machines too. I decided to compile the code as opposed to using the provided Ubuntu DEB file, as the "--force-architecture" command didn't work. <b>This page has been updated for WSPR v4. There's also a version of this page for <a href="http://new.george-smart.co.uk/compiling_wspr_x">Compiling WSPR-X</a>!</b> Last checked with Xubuntu 14.04 and WSPR revision 4224. If this page was useful, please consider <a href="http://new.george-smart.co.uk/donate">Donating</a> to me. <h1>Installing the Required Software</h1> Before we can start, we need to get the required software to download and compile the source code. K1JT's page (<a href="http://www.physics.princeton.edu/pulsar/K1JT/devel.html">here</a>) tells us exactly what we need. We also need a couple more programs. I installed: <ul> <li> subversion</li> <li> python3-dev (I used python2.7-dev and python2.5-dev on earlier versions)</li> <li> python3-numpy</li> <li> python3-pil.imagetk (formerly python3-imaging-tk)</li> <li> libportaudio2</li> <li> libportaudio-dev</li> <li> libsamplerate0-dev</li> <li> g95 (I used gfortran - some issues around this, and some people say you have to use g95. Mine works fine...)</li> <li> portaudio19-dev</li> <li> cl-fftw3</li> <li> autoconf</li> <li> python3-tk</li> <li> python3-pil</li> <li> asciidoc (required for man pages, thanks to Larry W0AY for pointing this out - can omit this if no manuals are required)</li> </ul> To install these from the console, use the following. The "\" means the command continues on the next line, and should be removed. <blockquote> sudo apt-get install subversion python3-dev python3-numpy python3-imaging-tk python3-tk python3-pil \ libportaudio2 portaudio19-dev libsamplerate0-dev gfortran cl-fftw3 python-dev autoconf asciidoc </blockquote> If you cannot find <i>python3-pil.imagetk</i> instead try python3-imaging-tk <h1>Getting the Source Code</h1> Once the above have installed, we can download the WSPR source code from SVN. I like to create a folder for it to all live in, while i work with it. Create a folder and 'cd' into it with the terminal. We can then use SVN to download the sourcecode. At the time of writing, this was revision 2225. <blockquote> svn co svn://svn.code.sf.net/p/wsjt/wsjt/branches/wspr </blockquote> Once it has downloaded, cd into the wspr directory again. <h1>Configure</h1> With the addition of <i>autoconf</i> into the process, the task of configuring the build has been reduced somewhat. If you are interested in the old configure process, please look at this pages history (specifically from before 29 July 2014). Now, we run the autogen.sh script. <blockquote> ./autogen.sh </blockquote> <h2>What Success Looks Like</h2> If everything goes well, you will hopefully end up with something like the following Configuration Summary: <blockquote> ------------------------------------------- Configuration Summary ------------------------------------------- Package: .........: WSPR 4.0 Python3: .........: /usr/bin/python3 F2py: ............: /usr/bin/f2py3.4 <b>(see note at bottom of make section)</b> Fcomplier: .......: gfortran Samplerate: ......: OK FFTW3: ...........: OK Portaudio: .......: OK Install Prefix: ..: /home/george/.wspr Website ..........: http://www.physics.princeton.edu/pulsar/K1JT/wspr.html Report Bugs To ...: wsjt-devel@lists.sourceforge.net Finished creating Makefile, To build , type: make george@zobel:~/wspr$ </blockquote> <h1>Compile</h1> If you got all the dependencies met in the Configuring stage, the compilation should be plain sailing. To compile, run <blockquote> make </blockquote> The compilation throws a good few, warnings, skipping, etc, but at the end it finished with an error status of 0. If you will run WSPR from the folder then you are pretty much set to go. However, you may wish to <i>install</i> the compiled WSPR into your version of Linux. This is done with: <blockquote> sudo make install </blockquote> Initially, I had some trouble getting WSPR to run. <a href="http://www.aaron-brown.net/">Aaron (VK3ABX)</a> suggested that I recompile WSPR using f2py version 3 (since version 2 is detected by default). I edited the makefile, changing any reference to /usr/bin/f2py to /usr/bin/f2py3.4 in my case. A simple "make clean", "make" and "sudo make install" solved the issue, and then we were away! <h1>Running</h1> Typically, with compiled applications, you would run <i>sudo make install</i> and install the compiled program into the system. However, I don't recommend this with WSPR. I would take to changing into the directory you built it in, and running from there, with <blockquote> ./wspr </blockquote> If you find that you get issues with Python3 (by default, Ubuntu uses Python 2.7), then you can try the following: <blockquote> python3 wspr.py </blockquote> And, with any luck, you'll get the WSPR program up and running. <center><table cellpadding="2" border="0" > <tr> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/WSPR_r2225.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/WSPR_r2225.jpg" width="300" alt="WSPR_r2225 Running" class="aligncenter"></a></tr> </table> Click to enlarge </center> And there we have it. <h1>Mac OS X</h1> As Griff (M0HWS) mentioned in an email to me, to use the CAT interface with the OS X build of WSPR requires putting the <a href="http://hamlib.sourceforge.net/">HamLib</a> libraries, specifically the <i>rigctl</i> binary. I cannot remember the exact details for how I did this, but I can offer you my Application to download. It is based on WSPR 3.0 from NH6Z (as above) with the HamLib files added in by myself. Feel free to strip the hamlib and rigctl files from this package and add them to your own, or simply run my package (after changing the callsign, of course!). The files required are located inside the Package's Resource folder: <i>/WSPR.app/Contents/Resources/</i> It should be evident which files are hamlib as they all have that in their name. Don't forget <i>rigctl</i> too. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/WSPR_3_OSX_CAT.tar.bz2">WSPR 3.0 with CAT Files Included (HamLib & RigCtl)</a> (~10MB) TAR file includes WSPR.app which is an OS X compatible Application. <h1>Sources & References</h1> <ul> <li> http://www.physics.princeton.edu/pulsar/K1JT/devel.html</li> : (Retrieved 24/10/2010)</ul> <ul> <li> http://oh2gqc.wippiespace.com/WSPR_on_Ubuntu.html</li> : (Retrieved 24/10/2010)</ul> <ul> <li> http://wsprnet.org/drupal/node/2066</li> : (Retrieved 24/10/2010)</ul> <b>FIXME_Category :Radio</b> <b>FIXME_Category :WSPR</b> <b>FIXME_Category :Computers</b> <b>FIXME_Category :Howto</b> Compiling WSPR-X http://new.george-smart.co.uk/compiling_wspr_x closed page closed 2013-09-13 17:13:35 0 draft compiling_wspr_x 4741 Following on from my <a href="http://new.george-smart.co.uk/compiling_wspr">Compiling WSPR</a> page, here is how to compile WSPR-X on Ubuntu (Debian and Mint also tested). <h1>Get the required packages</h1> The following packages are needed to ensure the correct building of WSPR-X. Not all of them are used, but as I don't have time to sift through them all at present, just install them all... <blockquote> sudo apt-get install subversion python2.7-dev python-numpy python-imaging-tk python-pmw \ libportaudio2 portaudio19-dev libsamplerate0-dev gfortran cl-fftw3 python-dev qt4-qmake \ libqt4-dev-bin libqt4-dev libqwt-dev libhamlib-utils </blockquote> <h1>Download the Source</h1> Now to download the WSPR-X source code. This is done by selecting the <i>wsprx</i> branch of the SVN tree. <blockquote> svn co http://svn.berlios.de/svnroot/repos/wsjt/branches/wsprx </blockquote> The version I checked out was 3205. <h1>Compile the Program</h1> The compile process is a little messy here. Several steps have to be repeated a few times. Special thanks to <a href="http://www.aaron-brown.net">Aaron Brown</a> for helping with this! Change into the newly created <i>wsprx</i> directory <blockquote> cd wsprx/ </blockquote> The first thing to do is to build the libraries. <blockquote> cd lib/ make -f Makefile.linux </blockquote> This should create a folder in your home directory called <i>wsprx_install</i>. Good stuff. Return back from the library folder to the wsprx folder <blockquote> cd .. </blockquote> Now, using an editor of your choice, you need to edit the Qt project file, wsprx.pro. Here, I use nano. To find a specific line in nano, use the combination Control+W (find) then Control+T (line). <blockquote> nano wsprx.pro </blockquote> Edit the following two lines, removing the "-qt4" part. <ul> <li> line 59: libqwt-qt4.so -> libqwt.so</li> <li> line 57: qwt-qt4 -> qwt</li> </ul> Then we process the Qt project file with <blockquote> qmake </blockquote> and then begin the build process with <blockquote> make </blockquote> If it complains about the folder <i>wsprx_install</i> existing, something like the following: <blockquote> mkdir: cannot create directory `../wsprx_install/': File exists make: *** [../wsprx_install/wsprx] Error 1 </blockquote> then just remove the <i>wsprx_install</i> directory with the following command (we will remake it again shortly) <blockquote> rm -R ../wsprx_install </blockquote> Finish the compilation to finalise everything with <blockquote> make </blockquote> This time the compilation should finish correctly, without error. If so, check that you now have the wsprx binary inside the <i>wsprx_install</i> folder, by running <blockquote> ls ../wsprx_install </blockquote> You should see the wsprx binary. Finally, so back into the <i>lib</i> folder and remake the libraries we had to delete above... <blockquote> cd lib/ make clean make -f Makefile.linux cd .. </blockquote> You should now see some other binaries, <i>WSPRcode</i> and <i>wsprd</i> inside the <i>wsprx_install</i> directory. <blockquote> ls ../wsprx_install/ WSPRcode wsprd wsprx </blockquote> <h1>Running WSPR-X</h1> Change into the <i>wsprx_install</i> directory and run <i>wsprx</i> and you're away! <blockquote> cd ../wsprx_install ./wsprx </blockquote> And you should see it start! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/WSPRX_Linux_Main.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/WSPRX_Linux_Main.png" width="500" alt="WSPR-X Linux" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/WSPRX_Linux_Waterfall.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/WSPRX_Linux_Waterfall.png" width="700" alt="WSPR-X Linux" class="aligncenter"></a> All that's left is to put some signals into it, and see how we get on! Conky http://new.george-smart.co.uk/conky 0 2012-04-21 01:28:53 page closed closed 3378 draft conky My Conky is shown below... <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/ConkyConfig.tar.bz2">Click here to download associated files</a>. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Conky.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Conky.png" width="600" alt="Conky running on Ubuntu 11.04" class="aligncenter"></a> <b>FIXME_Category :Computers</b> <b>FIXME_Category :Linux</b> Contact Me http://new.george-smart.co.uk/contact_me draft contact_me 2748 page closed closed 0 2011-10-18 18:49:23 #REDIRECT <b>FIXME_User :George#Contact_Information</b> Contact me http://new.george-smart.co.uk/contact_me 2012-01-12 14:52:58 0 closed page closed 3026 draft contact_me #REDIRECT <b>FIXME_User :George#Contact Information</b> Contiki http://new.george-smart.co.uk/contiki closed page closed 0 2013-01-16 01:03:06 draft contiki 3826 This page was moved here: <a href="http://new.george-smart.co.uk/installing_contiki">Installing Contiki</a>. <a href="/contact-me">Please report this message to the webmaster</a>. Contiki Cooja Simulator http://new.george-smart.co.uk/contiki_cooja_simulator closed closed page 2012-05-15 23:24:14 0 contiki_cooja_simulator draft 3442 This page aims to show the very basics of using the Contiki Cooja simulator. It assumes that you have already got a program written to simulate. This example will use "Convergence.c" as the source program file. We will simulate this program working on a Crossbow TelosB (Tmote Sky). This document was originally to help MSc students with their projects at <a href="http://new.george-smart.co.uk/university">University</a>. <h1>Check Your Program</h1> You first need to check that the program compiled correctly. This is done by checking the output of the <i>make</i> command: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/Cooja_MakeTerminal.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/Cooja_MakeTerminal.png" width="500" alt="Terminal" class="aligncenter"></a> We see that there are no errors displayed, so we can assume that the compilation went correctly. A quick check reveals that the file "Convergence.sky" was created: <blockquote> $ ls -larth *.sky -rwxrwxr-x 1 george george 393K May 15 17:37 Convergence.sky </blockquote> We can also check that some details about the file, that it is a binary executable: <blockquote> $ file Convergence.sky Convergence.sky: ELF 32-bit LSB executable, version 1, statically linked, not stripped </blockquote> It all looks as if the compilation has succeeded! <h1>Starting Cooja</h1> Next we start the Cooja simulator. If you're using Contiki Instant, you may have an icon on the Desktop to launch Cooja. If not, you can do it from the command line: <blockquote> $ cd /home/user/contiki/tools/cooja/ $ ant run </blockquote> You will see lots of text go past as the Cooja environment is compiled, built and started. Eventually you will see the Cooja program start. This takes a few moments to start. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/Cooja_MainScreen.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/Cooja_MainScreen.png" width="400" alt="Cooja Home Screen" class="aligncenter"></a> If you don't see this, then there is something wrong with your system. This is outside the scope of this text which assumes you have set up Contiki correctly. Check that you've successfully changed into the Cooja directory. I assume contiki is installed in the home directory inside the subfolder <i>contiki</i>. Older versions used a <i>contiki-2.x</i> format, so it's worth checking. You may need to check your Java set up. <h1>Creating A Simulation</h1> <h2>Simulation Environment</h2> Firstly you will need to create a new simulation. To do this, click "File > New Simulation". <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/Cooja_NewSimulation.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/Cooja_NewSimulation.png" width="500" alt="Cooja New Simulation" class="aligncenter"></a> Give your simulation a more suitable title, and then select the radio medium that best suits your simulation type. I usually stick to either Unit Disk Graph Medium or No radio traffic, depending on if you need radio simulated or not. Turning radio simulation off when not needed saves CPU time and makes the simulation run quicker. Random start-up delays the booting of each mote simulated randomly so they don't all start exactly at the same time. The main random seed is a seed for the random number generator. You can tick the box at the end to get a random seed. When you're ready click "Create". You'll see something like below – the main environment window. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/Cooja_SimulationEnvironment.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/Cooja_SimulationEnvironment.png" width="400" alt="Cooja Simulation Environment" class="aligncenter"></a> <h2>Setting The Mote Types</h2> The next stage is to set the mote types. In Cooja, you create a list of mote types, define their parameters and assign their program code/binary. You then, as a seperate task, create instances of them to simulate. Here we address the first part: creating the mote types. You have 3 stages of simulation in Cooja: Application level, OS level, and Emulation level. We concern ourselves with emulation level in emulating a Tmote Sky mote. If you're interested in the others, read the Cooja documentation. Click "Mote Types > Create Mote Type > Sky Mote Type". Give the mote type a useful description. In the "Contiki Process / Firmware" field, you should specify your source file (the .c file) or the binary file (the .sky file). If you specify the binary file, you won't see any compile instructions (binary files are the result of compilation – there is no need to compile). If you specify the source code, then the compile commands field becomes active, and you can specify specific instructions for compilation. You may care to look under mote interfaces and tips tabs, for extra parameters – you will not need to adjust these for most jobs. If you have specified source code, you need to press Compile before you can create the mote type. You can see the compilation output/results in the compilation output tab. If successful, the Create button becomes available. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/Cooja_MoteType.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/Cooja_MoteType.png" width="500" alt="Cooja Simulation Mote Type" class="aligncenter"></a> <h2>Adding Motes</h2> As soon as you've created a mote type, you're given the opportunity to add modes to the simulation environment. The "Add motes" dialogue allows you to set the number and configuration of these new motes. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/Cooja_AddMotes.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/Cooja_AddMotes.png" width="300" alt="Cooja Simulation Add Motes" class="aligncenter"></a> Click "Create and Add" when you're ready. You can get back to this dialogue to add more notes at any point by clicking "Motes > Add motes of type" and selecting your mote type (here, "Convergence Test Node"). You should then see your nodes randomly placed in the "Simulation Visualiser". There is more on the Simulation Visualiser overleaf. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/Cooja_SimulationVisualiser.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/Cooja_SimulationVisualiser.png" width="250" alt="Cooja Simulation Visualiser" class="aligncenter"></a> <h2>The Simulation Environment</h2> You also have various dialogues within the simulation environment. The Control Panel allows you to set various time parameters. The main one being the simulation delay. You can run the simulation at any speed, with key speeds being "No simulation delay" and "Real time". Other options are self explanatory. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/Cooja_SimulationControl.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/Cooja_SimulationControl.png" width="250" alt="Cooja Simulation Control" class="aligncenter"></a> From the Simulation Visualiser window, you can select the skins you see using the "Select visualizer skins" button. This will show a list of options which are selectable (see below). This is your key to seeing what's going in within the simulation. It is a scale model of the mote locations. Left shows the visual options. Right shows two nodes communicating data, at this point the simulator is computing the results of node 5 talking to node 7. <table cellpadding="5" align="center" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/Cooja_SimulationVisualiserOptions.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/Cooja_SimulationVisualiserOptions.png" width="400" alt="Cooja Simulation Visualiser Options" class="aligncenter"></a></tr> </table> The last two items, Log Listener and Timeline, show what's going on. The Log Listener displays any text output via what would be the Sky's USB interface (think of printf statements). They're timestamped by the simulation and the device ID is also referenced. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/Cooja_SimulationLogListener.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/Cooja_SimulationLogListener.png" width="600" alt="Cooja Simulation Log Listener" class="aligncenter"></a> The Timeline, shows the physical state of the mote as a function of time. For example you can see here the state of the LEDs and the radio chip (on/off, receive/transmit, etc). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/Cooja_SimulationTimeline.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/Cooja_SimulationTimeline.png" width="600" alt="Cooja Simulation Timeline" class="aligncenter"></a> The image below shows a snapshot at 23.243 seconds. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/Cooja_SimulationEnvironmentRunning.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/Cooja_SimulationEnvironmentRunning.png" width="500" alt="Cooja Simulation Environment" class="aligncenter"></a> <h1>Links</h1> There are a few links which should help you with using the Cooja simulator. <ul> <li> http://www.sics.se/contiki/wiki/index.php/An_Introduction_to_Cooja</li> <li> http://www.sics.se/contiki/wiki/index.php/Get_started_with_the_Cooja_simulator</li> <li> http://www.contiki-os.org/</li> </ul> <b>FIXME_Category :Howto</b> <b>FIXME_Category :Linux</b> <b>FIXME_Category :Academic</b> <b>FIXME_Category :Programming</b> <b>FIXME_Category :Computers</b> <b>FIXME_Category :Contiki</b> Copyright http://new.george-smart.co.uk/copyright closed page closed 0 2012-01-03 00:49:09 copyright draft 2940 This page was moved here: <a href="http://new.george-smart.co.uk/george_smart_27s_wiki_copyrights">George_Smart%27s_Wiki:Copyrights</a>. <a href="/contact-me">Please report this message to the webmaster</a>. Cossacks http://new.george-smart.co.uk/cossacks closed closed page 0 2012-01-12 14:27:01 cossacks draft 3000 == Background == Cossacks is a RTS game made by the Ukrainian developer GSC Game World. It was released on April 24, 2001. The game has an isometric view and is set in the 17th and 18th centuries of Europe. It features sixteen playable nations each with its own architectural styles, technologies and units. Cossacks is a game which allows the user to gain strategy skills and even pick up some relative history of that period by the inclusion of a comprehensive encyclopedia. This top selling title has won two awards and was positively favored by a majority of reviewers. Starting with just 15 peasants, the player builds a civilization, collects natural resources and develops an army with which to invade other players/the computer. The AI in the game is quite weak, but still manages to keep me on my toes. I prefer to play long games, allowing several hours peace time in order to build up a strong base. <h2>Screenshot</h2> I only have one screenshot taken for this game, originally to prove that I could make it work (with some DLL modding) under <a href="http://www.winehq.org/">Wine</a>. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Cossacks1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Cossacks1.png" width="800" alt="Screenshot of two computer players battling it out" class="aligncenter"></a> <b>FIXME_Category :Games</b> <b>FIXME_Category :Computers</b> <b>FIXME_Category :Linux</b> CQWW 2011 http://new.george-smart.co.uk/cqww_2011 3360 draft cqww_2011 2012-04-21 01:09:51 0 closed page closed = Map = This map shows some of the stations worked during the event. These details are from QRZ.com where possible. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/CQWW_2011_Map.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/CQWW_2011_Map.png" width="600" alt="Map" class="aligncenter"></a> Click the map once for image details, and again for high resolution image. <h1>Log Book</h1> This will be added once I have finished logging the QSOs to QRZ.com. <h1>Photos</h1> Here are a few pictures from the 2011 CQWW contest that <a href="http://webshed.org">Dave Mills (G7UVW)</a> and I took part in. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/CQWW_2011_Me.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/CQWW_2011_Me.jpg" width="600" alt="Me working 20m" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/CQWW_2011_Dave.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/CQWW_2011_Dave.jpg" width="600" alt="Dave working 15m" class="aligncenter"></a> <b>FIXME_Category :Radio</b> CQWW 2013 http://new.george-smart.co.uk/cqww_2013 0 2013-10-28 22:46:34 closed closed page 4801 cqww_2013 draft This map shows some of the stations worked during CQWW SSB Contest, 26-27 October 2013. Operations using M0STO's tri-band 4-ele Yagi and 300W from the <a href="http://www.secretnuclearbunker.com/">Kelvedon Hatch Secret Nuclear Bunker (GB0SNB)</a> operating as G3XBF. We set out with the aim to work as many DXCC entries as we could within the 24 hours we were able to operate. Operations started at 16:40 UTC on the Saturday an finished at 15:10 UTC on the Sunday; operating most of the night. 54 DXCC entries worked. The location details are from QRZ.com, where possible. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_Map.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_Map.png" width="600" alt="Map" class="aligncenter"></a> Click the map once for image details, and again for high resolution image. <h1>Photos</h1> Here are a few pictures from the 2013 CQWW contest, taken by Peter Allen, G0IAP. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_1.jpg" width="600" alt="Pictures from CQWW 2013" class="aligncenter"></a> <center>M0STO setting up the EME SCAM 12 on the top field</center> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_2.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_2.jpg" width="600" alt="Pictures from CQWW 2013" class="aligncenter"></a> <center>Moving the SCAM 12 to a lower field because of high winds</center> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_3.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_3.jpg" width="600" alt="Pictures from CQWW 2013" class="aligncenter"></a> <center>M0YOL guiding M0STO in moving the beam in his car</center> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_4.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_4.jpg" width="600" alt="Pictures from CQWW 2013" class="aligncenter"></a> <center>Erecting the HF beam on another SCAM 12</center> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_5.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_5.jpg" width="600" alt="Pictures from CQWW 2013" class="aligncenter"></a> <center>Tuning the beam & checking the SWR</center> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_6.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_6.jpg" width="600" alt="Pictures from CQWW 2013" class="aligncenter"></a> <center>G7UVW and M0STO reflecting on the erection of HF beam and VHF EME beams (background)</center> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_7.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_7.jpg" width="600" alt="Pictures from CQWW 2013" class="aligncenter"></a> <center>Inside the lockup at GB0SNB</center> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_8.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_8.jpg" width="600" alt="Pictures from CQWW 2013" class="aligncenter"></a> <center>Tuning the linear up</center> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_9.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_9.jpg" width="600" alt="Pictures from CQWW 2013" class="aligncenter"></a> <center>2m Yagi looking a bit bent, on the Az/Ele rotator for EME</center> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_10.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_10.jpg" width="600" alt="Pictures from CQWW 2013" class="aligncenter"></a> <center>Both beams as coax is run into lockup</center> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_11.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_11.jpg" width="600" alt="Pictures from CQWW 2013" class="aligncenter"></a> <center>G7UVW operating and logging</center> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_12.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_12.jpg" width="600" alt="Pictures from CQWW 2013" class="aligncenter"></a> <center>M1GEO swinging the beam as G7UVW is operating</center> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_13.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_13.jpg" width="600" alt="Pictures from CQWW 2013" class="aligncenter"></a> <center>G7UVW logging as M1GEO operates</center> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_14.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_14.jpg" width="600" alt="Pictures from CQWW 2013" class="aligncenter"></a> <center>G7UVW drinking tea as M1GEO operates</center> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_15.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_15.jpg" width="600" alt="Pictures from CQWW 2013" class="aligncenter"></a> <center>M0STO setting up EME equipment</center> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_16.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_16.jpg" width="600" alt="Pictures from CQWW 2013" class="aligncenter"></a> <center>M0STO configuring HRD to track the moon</center> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_17.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_17.jpg" width="600" alt="Pictures from CQWW 2013" class="aligncenter"></a> <center>M0STO deep in the settings!</center> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_18.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/10/CQWW_2013_G0IAP_18.jpg" width="600" alt="Pictures from CQWW 2013" class="aligncenter"></a> <center>G7UVW and M1GEO tidying their "private" log, collecting their own DXCCs!</center> <b>FIXME_Category :Radio</b> CQWW14 http://new.george-smart.co.uk/cqww14 draft cqww14 5129 page closed closed 2014-10-29 12:06:04 0 I've been doing CQWW as a somewhat casual attempt to work some DX for the past few years, but this year I took it to the next level to organise an event with my local radio club, <a href="http://www.haveringradioclub.co.uk/">Havering & District Amateur Radio Club</a>. You can see the writeup on their site: <a href="http://www.haveringradioclub.co.uk/2014/10/cq-world-wide-2014/">here</a> There is a full analysis of the log for the weekend, including the KML files from which the following were taken. Where information is not available for a given callsign, the pin has been inserted into the centre of each country with an asterisk or question mark to indicate. For the rest of the log analysis, please click <a href="http://www.george-smart.co.uk/files/logs/g4hrc/2014_CQWW_SSB/">G4HRC 2014 CQWW SSB</a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/10/G4HRC_CQWW_2014.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/10/G4HRC_CQWW_2014.png" width="700" class="aligncenter"></a> <html> <center> <iframe width="700" height="500" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://maps.google.co.uk/maps?q=http:%2F%2Fwww.george-smart.co.uk%2Ffiles%2Flogs%2Fg4hrc%2F2014_CQWW_SSB%2F2014_cq-ww-ssb_g4hrc_All.kml.kmz&amp;ie=UTF8&amp;ll=51.259822,-1.458&amp;spn=13.784737,43.82018&amp;t=m&amp;output=embed"></iframe><br /><small><a href="https://maps.google.co.uk/maps?q=http:%2F%2Fwww.george-smart.co.uk%2Ffiles%2Flogs%2Fg4hrc%2F2014_CQWW_SSB%2F2014_cq-ww-ssb_g4hrc_All.kml.kmz&amp;ie=UTF8&amp;ll=51.259822,-1.458&amp;spn=13.784737,43.82018&amp;t=m&amp;source=embed" style="color:#0000FF;text-align:left">View Larger Map</a></small> </center> </html> Curriculum Vitae http://new.george-smart.co.uk/curriculum_vitae 2439 curriculum_vitae draft 0 2011-09-02 02:25:03 closed page closed {| cellpadding="2" border="0"<td><b>PERSONAL INFORMATION</b></td></tr><tr><td>Name</td><td>George Christopher SMART</td></tr><tr><td>Date of Birth</td><td>07 January 1989</td></tr><tr><td>Gender</td><td>Male</td></tr><tr><td>Nationality</td><td>English</td></tr><tr><td>Address</td><td><i>withheld</i></td></tr><tr><td>Telephone</td><td><i>withheld</i></td></tr><tr><td>Email</td><td><i><a href="http://www.george-smart.co.uk/cgi-bin/email.cgi">Click here</a></i></td></tr><tr><td></td></tr><tr><td><b>EDUCATION</b></td></tr><tr><td>Institution</td><td>Department of Electronic & Electrical Engineering University College London</td></tr><tr><td>Dates</td><td>September 2007 - September 2011 (4 years)</td></tr><tr><td>Title of Qualification Awarded</td><td>MEng Electronic and Electrical Engineering</td></tr><tr><td>Result</td><td>Second Class, Upper Division (2:1) with Honours</td></tr><tr><td>References</td><td>Dr. Ioannis Andreopoulos (Lecturer, UCL); Dr. John Mitchell (Senior Lecturer, UCL); Dr. David Mills (Researcher, QMUL)</td></tr><tr><td></td></tr><tr><td><b>SKILLS</b></td></tr><tr><td>Programming Languages</td><td>BASIC, C, C++, Java, Visual Basic</td></tr><tr><td>Simulation Languages</td><td>Spice, VHDL, Verilog (basic working knowledge)</td></tr><tr><td>Scripting Languages</td><td>BASH, LaTeX, Python, Perl</td></tr><tr><td>Web Languages</td><td>CSS, HTML, XML</td></tr><tr><td>Operating Systems</td><td>Linux (extensive knowledge), Mac OS, Microsoft Windows, UNIX</td></tr><tr><td>Software Packages</td><td>Apache, MATLAB, MediaWiki, Microsoft Office, MySQL, NetBeans, OpenOffice, various PCB layout packages.</td></tr><tr><td>Test Equipment</td><td>Logic Analyser, Oscilloscope, Spectrum Analyser, Vector Network Analyser</td></tr><tr><td>Hardware</td><td>Extensive use of Microchip PICs, basic use of Xilinx FPGAs</td></tr><tr><td></td></tr><tr><td><b>ACADEMIC PROJECTS</b></td></tr><tr><td>*</td><td>Fourth year project, “Content Centric Live Video Streaming System” Worked in a team to create an open source video test-bed to stream video via the internet. This included working with standard C libraries, computer hardware and basic network programming. (http://sourceforge.net/projects/unv/) (https://github.com/georgesmart1/UNV)</td></tr><tr><td>*</td><td>Third year project, “Software Defined Radio for Cognitive Wireless Sensor Networks” Developed MATLAB scripts to detect the status of ZigBee channels based on basic DSP techniques. Investigated use of Mini-Circuits mixer modules outside of their specified parameters. Tested against model and real data with good results. (http://www.ee.ucl.ac.uk/~zceed42/ThirdYearProject.pdf)</td></tr><tr><td></td></tr><tr><td><b>PERSONAL PROJECTS</b></td></tr><tr><td>*</td><td>Weather Station Having an interest in weather led me to design and develop a data logger to record temperature, rainfall and sunlight. This was uploaded to a computer for long term trend analysis.</td></tr><tr><td>*</td><td>Nixie Clock Designed and built a Nixie clock for a friend who had some old but stylish neon numerical indicators. This required me to design every aspect of the clock from the circuit and PCB, to the firmware used in the microcontroller.</td></tr><tr><td></td></tr><tr><td><b>WORK</b></td></tr><tr><td>*</td><td>UCAS Student Co-ordinator and Helper University College London September 2008 – March 2011</td></tr><tr><td>*</td><td>Senior Mentor, UCL Transition Program University College London September 2009 – December 2010</td></tr><tr><td></td></tr><tr><td><b>ACADEMIC MODULES</b></td></tr><tr><td>Fourth Year (Group) Project (masters level)</td><td>70 %</td></tr><tr><td>Radar Systems (masters level)</td><td>75 %</td></tr><tr><td>Satellite Communications (masters level)</td><td>72 %</td></tr><tr><td>Antennas & Propagation (masters level)</td><td>63 %</td></tr><tr> </td><td>Third Year (Individual) Project</td><td>70 %</td></tr><tr><td>Digital Signal Processing & Systems</td><td>67 %</td></tr><tr><td>Control Systems</td><td>68 %</td></tr><tr><td>Advanced Digital Design</td><td>64 %</td></tr><tr><td>Object Orientated Programming (Java)</td><td>76 %</td></tr><tr><td>Optoelectronics</td><td>76 %</td></tr><tr><td>Electronic Circuits</td><td>71 %</tr> </table> <hr> You may also be interested in my <a href="http://new.george-smart.co.uk/undergraduate_personal_statement">Undergraduate Personal Statement</a> and my <a href="http://new.george-smart.co.uk/postgraduate_personal_statement">Postgraduate Personal Statement</a> . <b>FIXME_Category :Academic</b> <b>FIXME_Category :About Me</b> CV http://new.george-smart.co.uk/cv cv draft 1503 closed page closed 2011-01-18 17:50:41 0 This page was moved here: <a href="http://new.george-smart.co.uk/curriculum_vitae">Curriculum Vitae</a>. <a href="/contact-me">Please report this message to the webmaster</a>. DCF77 http://new.george-smart.co.uk/dcf77 closed page closed 2015-09-22 12:22:20 0 draft dcf77 5328 <a href="http://en.wikipedia.org/wiki/DCF77">DCF77</a> is a longwave time signal and standard-frequency radio station transmitted from Mainflingen, about 25 km south-east of Frankfurt am Main, Germany (<a href="http://toolserver.org/~geohack/geohack.php?pagename=DCF77&params=50_0_56_N_9_00_39_E_">50°0′56″N 9°00′39″E</a>). Some of the more technical details can be found on the <a href="http://www.ptb.de/cms/en/fachabteilungen/abt4/fb-44/ag-442/dissemination-of-legal-time/dcf77.html">Physikalisch-Technische Bundesanstalt website</a>. This page details some brief experiments with DCF77 reception in London. The receiver I used a <a href="http://www.conrad.com/ce/en/product/641138/">Conrad DCF Receiver Board</a> which is a complete DCF77 receiver with NPN open collector outputs, working on a large voltage range (1.2 - 15V) at around 3 mA according to the datasheet. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/Conrad_DCF77.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/Conrad_DCF77.jpg" width="400" alt="DCF77 Receiver Board from Conrad Electronics" class="aligncenter"></a> I had a nose around the internet, thinking that I would first try with an <a href="http://new.george-smart.co.uk/arduino">Arduino</a> test bed. I found this excellent tutorial detailing <a href="http://thijs.elenbaas.net/2012/04/arduino-dcf77-radio-clock-receiver-hardware-2/">Arduino interfacing</a> <a href="http://thijs.elenbaas.net/2012/04/arduino-dcf77-radio-clock-receiver-signal/">signal recovery</a> and <a href="http://thijs.elenbaas.net/2012/04/arduino-dcf77-radio-clock-receiver-library/">an Arduino library</a>. I set off playing! I connected the power of the module to 5V and ground, with a 10K&Omega; resistor to the open collector output of the receiver. I was ready to go: The first piece of Arduino code, lifted from <a href="http://thijs.elenbaas.net/2012/04/arduino-dcf77-radio-clock-receiver-hardware-2/">here</a> shows the state of the logic output of the DCF77 receiver. Ideally, there are series of pulses either 100 or 200 ms long every second. This code starts a new line every time a rising edge is received, and shows the logic state of the pin with time. <blockquote> #define BLINKPIN 13 #define DCF77PIN 2 int prevSensorValue=0; void setup() { Serial.begin(9600); pinMode(DCF77PIN, INPUT); pinMode(13, OUTPUT); Serial.println("0ms 100ms 200ms 300ms 400ms 500ms 600ms 700ms 800ms 900ms 1000ms 1100ms 1200ms"); } void loop() { int sensorValue = digitalRead(2); if (sensorValue==1 && prevSensorValue==0) { Serial.println(""); } digitalWrite(BLINKPIN, sensorValue); Serial.print(sensorValue); prevSensorValue = sensorValue; delay(10); } </blockquote> The below image shows the output of this code. You can see a selection of pulses ranging in time from ~100 ms to ~200 ms. The code timing is slightly out but is good enough at this stage. We can confirm that we are indeed receiving DCF77. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/DCF77_PulseTimings.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/DCF77_PulseTimings.png" width="600" alt="Pulse Timings from DCF77 Receiver Board" class="aligncenter"></a> The next section of code shows the time between each rising edge (cycle) and the duration of the pulse (pulse). These two things are the key to decoding the data from the DCF77 signal. Code from <a href="http://thijs.elenbaas.net/2012/04/arduino-dcf77-radio-clock-receiver-signal/">here</a>. <blockquote> #define BLINKPIN 13 #define DCF77PIN 2 int flankUp = 0; int flankDown = 0; int PreviousflankUp; bool Up = false; void setup() { Serial.begin(9600); pinMode(DCF77PIN, INPUT); pinMode(BLINKPIN, OUTPUT); } void loop() { int sensorValue = digitalRead(DCF77PIN); if (sensorValue) { if (!Up) { flankUp=millis(); Up = true; digitalWrite(BLINKPIN, HIGH); } } else { if (Up) { flankDown=millis(); Serial.print("Cycle: "); Serial.print(flankUp-PreviousflankUp); Serial.print(" Pulse :"); Serial.println(flankDown - flankUp); PreviousflankUp = flankUp; Up = false; digitalWrite(BLINKPIN, LOW); } } } </blockquote> The image below shows the output again. As you can see the cycles last ~1000 ms (approximately) and pulses are either 100 or 200 ms. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/DCF77_CyclePulseTimings.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/DCF77_CyclePulseTimings.png" width="600" alt="Cycle & Pulse Timings from DCF77 Receiver Board" class="aligncenter"></a> The next step was to get a copy of Thijs Elenbaas's DCF77 library, at the time of writing, version 0.9.8. This was downloaded from <a href="http://thijs.elenbaas.net/2012/04/arduino-dcf77-radio-clock-receiver-library/">this page</a> or <a href="http://thijs.elenbaas.net/files/DCF77.0.9.8.zip">direct link</a>. The library is installed like any other Arduino library <a href="http://arduino.cc/en/Reference/Libraries">see here</a>. On my Linux system this was just to extract the downloaded <i>DCF77.0.9.8.zip</i> archive to <i>/usr/share/arduino/libraries/</i>. Once installed the examples from the libraries will be available to choose from within the Arduino IDE: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/DCF77_LibraryExample.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/DCF77_LibraryExample.png" width="400" alt="DCF77 Library Examples" class="aligncenter"></a> When trying to compile the DCF77 examples, I found that there was an issue with the bundled version of the Time library. Updating to the newest version <a href="http://www.pjrc.com/teensy/td_libs_Time.html">here</a> <a href="http://playground.arduino.cc/Code/Time">via here</a> too me to <a href="http://www.pjrc.com/teensy/arduino_libraries/Time.zip">this version of Time.zip</a>. This was installed, but the error persisted. <a href="http://forum.arduino.cc/index.php?action=profile;u=152505;sa=showPosts">This forum post</a> shows how to fix errors such as: <blockquote> error: variable 'monthStr1' must be const in order to be put into read-only section by means of '__attribute__((progmem))' </blockquote> I had to insert <i>const</i> into two places inside the file on the lines specified by the error. Hopefully all works well, and you'll get the results you like. Below shows the TimeZones Example set to UK time (BST/British Summer Time): <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/DCF77_TimeZoneExample.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/DCF77_TimeZoneExample.png" width="600" alt="DCF77 TimeZone Examples" class="aligncenter"></a> An extract from the first line shows the time to be correct when compared to my (ntp synced) desktop clock: <blockquote> 17:02:01 3 6 2013 </blockquote> After some toying around, I managed to get the DCF77 decoded time to appear in a usable format on my Arduino LCD display. We also see that it took roughly an hour and a half for me to write a simple parser for the time! Shocking! Left shows the original attempt, and right shows around another half hour later, I have the formatting a bit nicer. Only so much you can do with a 2x16 LCD. <b><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/ArduinoDCF77_LCD.zip">The source code for the below project is here</a>.</b> <center><table > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/DCF77_TimeLCD.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/09/DCF77_TimeLCD.jpg" width="300" alt="DCF77 TimeZone Example on LCD Display" class="aligncenter"></a></tr> </table> </center> Great stuff. I'm hoping this may be the next step towards my <a href="http://new.george-smart.co.uk/arduino_wspr">Arduino WSPR</a> MEPT. Currently I am using a GPS receiver and parsing the time with TinyGPS which works great, but uses much more power than the 3 mA quoted for the Conrad DCF Receiver Board. <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Clocks</b> <b>FIXME_Category :ToDo</b> Dieting http://new.george-smart.co.uk/dieting 0 2012-01-12 14:28:08 closed page closed 3002 draft dieting This page is about my struggle with weight-loss. I have been overweight for a long time now - Since I was in my early teens. After graduating from and Engineering degree, I decided to apply the analysis and scientific reasoning to dieting and find out exactly what went wrong with every diet I've ever tried in the past; why I ultimately failed then, and what can stop me failing this time! Although this page was written to provide a way to gather my thoughts and research, I figured the facts may interest others, and this is the reason this page has been tidied up. I'm not brave enough to put personal details up just yet <h1>A Healthy Diet</h1> These are simple overview of the rules for a healthy diet. Following these rules is the hard part, but we should be aware of them before we start: <ul> <li> Enjoy your food</li> <li> Eat a variety of different foods</li> <li> Eat the right about to achieve a healthy weight</li> <li> Eat plenty of foods rich in carbohydrates and fibre</li> <li> Eat lots of fruit and vegetables</li> <li> Try and avoid foods containing lots of fat</li> <li> Don't have sugary foods or drinks too often</li> <li> Drink alcohol sensibly</li> </ul> <h1>The Basics</h1> Almost 60% of UK adults are classified as overweight (BMI over 25); 17% of men and 21% of women are classified as obese (BMI over 30) - These figures have trebled since 1990. Many nutritionists believe this is not because we are eating more, but that we are doing less, and so require less energy - modern technology and labour saving devices make us less active than we once were. Our weight is a reflection between the balance of the energy we consume (in terms of food <i>calories</i>) and the energy we use. This energy intake is determined by the amount and type of food you eat. Energy expenditure is determined by a combination of out resting metabolic rate and the amount of calories we burn in our day-to-day activities. The resting metabolic rate is the energy required to keep your body <i>ticking over</i>, similar to a car's engine idling when the car is stationary. If our energy needs are exactly matched by our energy intake, our body weight will remain the same. If our intake exceeds the requirement, the excess energy is stored in the body as fat. This is depicted graphically below, as a kind of sea-saw effect. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Dieting_Seasaw.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Dieting_Seasaw.png" alt="Balancing energy intake an expenditure" class="aligncenter"></a> <h2>Ideal Rate of Weight Loss</h2> The best way to lose weight is slowly and steadily. General consensus among experts is to lose between 500 grams (1 lb) and 1 kilogram (2lb) a week. If you lose weight too quickly, you risk losing lean muscle tissue as well as fat. Since the basal metabolic rate (calories required to live) depends on lean muscle tissue, it is a good idea to do all you can to keep it! <h2>How Low Should You Go?</h2> The total number of calories we need to eat each day varies with many parameters, such as age, weight, sex, activity levels, body composition and metabolic rate. As a general rule, women need about 2000 calories a day and men 2500. To lose around 500 grams (1 lb) a week, a reduction of 500 calories is about typical. Diets restricting calorie intake severely (to below 1000 in women) are generally regarded as a bad idea. <h1>Body Mass Index</h1> Most people can get a good idea if they need to lose weight by simply looking in the mirror, it is possible to get a more accurate assessment by form of body mass index, or BMI. To calculate your BMI use the program below. You must enter a mass (weight) either in kilograms (kgs) or pounds (lbs) and a height either in meters (m) or inches (in). You can cross metric/imperial, but you must enter a height and weight. BMI is calculated by dividing your mass in kilograms by the square of your height in meters. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BMI_Formula.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BMI_Formula.png" alt="BMI formula" class="aligncenter"></a> <HTML> <CENTER> <FORM action="/cgi-bin/bmi.cgi" method="get"> <TABLE> <TR><TD>Mass</TD><TD><INPUT type="text" name="kgs" value="" size="4"> kg</TD><TD>/</TD><TD><INPUT type="text" name="lbs" value="" size="4"> lbs</TD></TR> <TR><TD>Height</TD><TD><INPUT type="text" name="meters" value="" size="4"> m</TD><TD>/</TD><TD><INPUT type="text" name="inches" value="" size="4"> in</TD></TR> </TABLE> <BR><BR> <INPUT type="submit" value="Calculate BMI"> <INPUT type="reset" value="Clear Form"> </FORM> </CENTER> </HTML> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BMI_Chart.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BMI_Chart.png" width="600" alt="BMI Chart" class="aligncenter"></a> <h2>Waist Circumference</h2> <ul> <li> For men, a waist circumference over 94 cm (37 in) indicates a slight health risk. Over 102 cm (40 in) indicates a substantial health risk </li> <li> For women, a waist circumference over 80 cm (31.5 in) indicates a slight health risk. Over 88 cm (34.5 in) indicates a substantial health risk</li> </ul> <h1>Relationship with Food</h1> You will often find that you eat out of habit or emotional needs rather than because you are hungry. We use food to celebrate, relieve boredom and make us feel better. Certain people, places or moods change this behaviour. Keeping a food diary will help you to understand these trends. Buy a notebook and make note of the following <ul> <li> Time & Date</li> <li> Where you are</li> <li> What you're doing & who you're with</li> <li> How you feel - Tired, bored, unhappy, etc.</li> <li> What you ate</li> <li> How hungry you were - use a scale of 1 (hungry) to 5 (not hungry).</li> </ul> After two weeks, you will have enough data to review your diary and make a list of all the triggers. This will make you aware of the situation and enable you to better plan around it. Work out strategies that help you avoid these triggers. <h1>Getting Fitter</h1> A combination of diet and exercise is by far the best way to lose weight. Exercise burns calories but it also helps to develop muscle tissue. Muscle is metabolically more active than fat tissue (i.e. it burns up more calories). In other words, the more muscle you have, the more calories your body burns. Exercise will help to improve your body shape and tone, and help you maintain your weight loss. If you haven't done any exercise before, take it easy when you first start. If you start with something that is beyond you, you're more likely to become discouraged and give up! Exercise doesn't necessarily mean getting hot and sweaty in the gym. Making small changes to your normal life will help - such as getting off the bus one stop early and walking, or taking the stairs rather than the lift. Just these can make a big difference! Walking briskly for 20 or 30 minutes a day, 5 days a week, will burn the equivalent of 5.4 kg (12 lbs) of fat a year. Choose something you enjoy doing and something that fits in with your lifestyle - you're more likely to stick with it. Try to persuade a friend or family member to exercise with you. If you make a commitment to a friend, you're less likely to back out. Finally remember that scales never lie, but, they do distort the truth! Muscle tissue weighs more than fat. If you're doing a lot of exercise and building muscle tissue, the scales may not move - don't be disheartened! You should notice your body start to become more toned and more shapelier and most importantly, you will be healthier! <h1>Trimming the Fat</h1> Fat provides twice as many calories as other proteins or carbohydrates, which is why it is the most effective way of reducing calorie intake. Here are some tips: <ul> <li> Start with low-fat ingredients - lean meats such as chicken, shellfish and white fish are all good choices.</li> <li> Trim off visible fat from meat before cooking and remove skin from poultry. Avoid red meat that has marbling.</li> <li> Choose low-fat cooking techniques - poach, braise steam, roast, grill or stir-fry.</li> : Marinades are a good way of adding flavour without adding fat.</ul> <ul> <li> Invest in a good heavy-based non-stick pan and remember that oil expands when heated.</li> : When softening onions or vegetables, you don't need to add as much oil as you may think. Use a vegetable or olive oil spray.</ul> <ul> <li> You don't need fat for flavour. Use plenty of fresh herbs and spices in your cooking. Add a squeeze of lemon juice when serving for a boost!</li> <li> Bulk out savoury dishes by adding lots of vegetables. They are low in calories and provide essential vitamins.</li> <li> Use reduced- and low-fat alternatives such as reduced-fat cheese, skimmed milk and low-fat yoghurt where available.</li> <li> To make gravies and sauces creamy, add yoghurt or fromage frais rather than cream. Stir in at the end to prevent curdling.</li> <li> Using cheese with a stronger flavour, such as mature Cheddar, Parmesan or Stilton, will mean that you don't need to add as much.</li> <li> Don't be afraid to use high-fat foods such as cheese and bacon, but you only need a small quantity to add a lot of flavour.</li> <li> One tablespoon of French dressing contains 97 calories and 11 grams of fat. Use sparingly or find a low-fat dressing.</li> </ul> <h1>Essential Tips for Losing Weight Forever</h1> <ul> <li> Recognise why you eat: Before you reach for a chocolate bar or slice of cake, ask yourself if you're really hungry. Keep a food diary (as suggested above) to help you identify danger times when you're more likely to over-eat.</li> </ul> <ul> <li> Believe you can do it: A recent study found that people who believed they could lose weight and keep it off were much more likely to succeed! Try to visualise the new, slimmer you, and keep that image in mind. Edit a photo of yourself to show you how you would like to look - print the image and put it around the place to remind you of your goal. I had this image as my computer desktop and my phone wallpaper, to give me the constant reminder!</li> </ul> <ul> <li> Eat slowly and chew your food thoroughly: The brain takes about 15 minutes to get the message that your stomach has had enough to eat. If you eat to quickly your stomach fills up before your brain knows you're full, and you end up eating too much.</li> </ul> <ul> <li> Never skip meals or allow yourself to get over hungry: If you do, you'll be more tempted to snack and overeat at your next meal. Aim to eat three small to medium sized meals a day, plus 2 or 3 small healthy snacks.</li> </ul> <ul> <li> Always have breakfast: If you skip breakfast, you're more likely to snack during the morning and overeat at lunch.</li> </ul> <ul> <li> Eat fruit: Fruit and vegetables are the dieters best friends. They're low in calories and fat-free. Aim to eat at least 5 servings a day. Be adventurous and try something new. Look for recipes and ideas for new ways of cooking fruit or vegetables.</li> </ul> <ul> <li> Stack up with starch & Fill up with fibre: Choose fibre-rich varieties such as wholemeal bread and wholegrain cereal where possible. These provide slow-release energy which helps keep blood sugar levels stable.</li> </ul> <ul> <li> Be prepared: Make sure your cupboards and freezer are full of healthy foods and have plenty of low-calorie snacks available.</li> </ul> <ul> <li> Don't Feel Bad: Don't feel that one bad day will ruin your diet. Life is full of ups and downs, so if you do lapse on the odd day, just be a little more strict the following day.</li> </ul> <ul> <li> Never go shopping hungry: Never go shopping on an empty stomach. Always write a list and stick to it! Don't buy foods you know you can't risk!</li> </ul> <ul> <li> Don't punish yourself: Don't deny yourself the foods you really enjoy. Just eat them in moderation.</li> </ul> <ul> <li> Drink water: Drink at least 8 glasses of water a day. It's easy to confuse thirst with hunger. When you're feeling hungry, try drinking a large glass of water first.</li> </ul> <ul> <li> Trim the fat: Fat is the dieters biggest enemy. Whenever possible, choose products that have less than 3% fat.</li> </ul> <ul> <li> Stay active: Make use of every opportunity you can to stay active. Use the stairs instead of the escalator, get off the bus one stop early and walk. Small changes make a big difference!</li> </ul> <h1>Top Dieting Tips</h1> <ul> <li> A lifestyle change is needed. A new mind-set. A new way of thinking about food.</li> <li> Avoid processed or refined foods.</li> <li> Eat fresh vegetables, whole foods and whole grain cereal.</li> <li> Eat fresh fish, which is rich in Omega-3 oils.</li> <li> Eat fresh lean meat - remove skin from poultry.</li> <li> Visit a healthcare professional and get yourself checked for a hormone imbalance or nutrient deficiency.</li> </ul> If you eat too little, your body will assume you're being starved. As a result of this, the metabolism slows down and the body stores fat. In this <i>survival mode</i>, the body uses much fewer calories and burns less fat - the exact opposite of what you're trying to achieve! This becomes 'normal' until proper food intake is resumed. <h1>Why Most Diets Fail</h1> <ul> <li> A lack of required nutrients for the body.</li> <li> Psychological side of weight loss not addressed.</li> <li> Lack of self motivation (lazyness).</li> <li> Do not correct eating habits.</li> <li> Frustration.</li> </ul> <h1>Sources</h1> <ul> <li> Enjoy Your Food</li> : http://ezinearticles.com/?Enjoy-Your-Food&id=309465 (7/Jun/2011)</ul> <ul> <li> Best Diet Tips for Weight Loss</li> : http://www.webmd.boots.com/diet/guide/15-best-diet-tips-ever (7/Jun/2011)</ul> <b>FIXME_Category :Dieting</b> Digital Modes Waterfall http://new.george-smart.co.uk/digital_modes_waterfall digital_modes_waterfall draft 4647 closed page closed 0 2013-06-04 01:02:56 I created this page because I wanted a reference for what different digital modes looked like in the waterfall of <a href="http://www.w1hkj.com/Fldigi.html">Fldigi</a>. While writing this page, I came across a similar set of pages on the Fldigi website, <a href="http://www.w1hkj.com/FldigiHelp-3.21/Modes/">found here</a>. On this page, in each snapshot, a short test sequence was transmitted and received locally. The message: <blockquote> M1GEO TESTING 12345 M1GEO </blockquote> The configuration used two computers, one for sending and one for receiving. The images where then printscreened and cropped to the maximum 2 kHz bandwidth - set by the largest mode, Olivia 64/2000. Where transmission times were longer than Fldigi's receive waterfall would allow, I aimed to capture the start of the transmission. Where the transmission fits, I tried to capture the transmission in the middle of the receive waterfall. Please accept that this took some considerable time. Also note that there is some receive noise in the background. There's nothing I can do about that. I'm sure it will be obvious which are noise and which are not. Click on any image to be given more detail. There is also a "full resolution" link on the image information page. And with that, in the order that Fldigi presents them in the <i>Op Mode</i> menu, here we go: <h1>Contestia</h1> Contestia is a family of MFSK modes with a high redundancy Forward Error Correction system similar to Olivia. The mode works well on poor HF paths and has good sensitivity. It is a mode designed to be used for contesting and keyboard to keyboard contacts. The typing speed is varied by changing the number of tones used. The default mode is 8-500. Designed by UT2UZ. <a href="http://www.w1hkj.com/FldigiHelp-3.21/Modes/CONTESTIAdesc.html">More here</a>. <h2>4-125</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Contestia_4-125.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Contestia_4-125.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>4-250</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Contestia_4-250.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Contestia_4-250.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>8-250</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Contestia_8-250.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Contestia_8-250.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>4-500</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Contestia_4-500.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Contestia_4-500.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>8-500</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Contestia_8-500.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Contestia_8-500.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>16-500</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Contestia_16-500.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Contestia_16-500.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>8-1000</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Contestia_8-1000.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Contestia_8-1000.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>16-1000</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Contestia_16-1000.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Contestia_16-1000.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>32-1000</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Contestia_32-1000.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Contestia_32-1000.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>64-1000</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Contestia_64-1000.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Contestia_64-1000.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h1>DominoEX</h1> DominoEX is a family of offset incremental multi-frequency shift keyed modes with low symbol rate. A single carrier of constant amplitude is stepped between 18 tone frequencies in a constant phase manner. As a result, no unwanted sidebands are generated, and no special amplifier linearity requirements are necessary. The tones change according to an offset algorithm which ensures that no sequential tones are the same or adjacent in frequency, considerably enhancing the inter symbol interference resistance to multi-path and Doppler effects. The default calling mode is DominoEX11. <a href="http://www.w1hkj.com/FldigiHelp-3.21/Modes/DominoEXdesc.htm">More here</a>. <h2>DominoEX4</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_DominoEX4.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_DominoEX4.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>DominoEX5</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_DominoEX5.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_DominoEX5.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>DominoEX8</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_DominoEX8.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_DominoEX8.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>DominoEX11</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_DominoEX11.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_DominoEX11.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>DominoEX16</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_DominoEX16.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_DominoEX16.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>DominoEX22</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_DominoEX22.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_DominoEX22.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h1>Hellschreiber</h1> The name Hellschreiber means 'Hell's writer'. The technique was developed by Rudolf Hell in 1927, and was used as a successful radio mode first in 1937, well before RTTY. Use by Amateurs is relatively recent. The most popular mode is that used by the war-time Feld-Hellschreiber (field writer), which is on-off keyed, the same as Morse. In order to limit the bandwidth, the rise-time of dots is usually limited to about 1ms, and the best methods use raised cosine shaped dots. <a href="http://www.w1hkj.com/FldigiHelp-3.21/Modes/Helldesc.htm">More here</a>. <h2>Feld Hell</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Hell_Feld.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Hell_Feld.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>Slow Hell</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Hell_Slow.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Hell_Slow.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>Feld X5</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Hell_X5.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Hell_X5.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>Feld X9</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Hell_X9.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Hell_X9.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>FSK Hell</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Hell_FSK.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Hell_FSK.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>FSK Hell 105</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Hell_FSK105.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Hell_FSK105.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>Hell 80</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Hell_80.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Hell_80.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h1>MFSK</h1> These multi-frequency shift keyed (MFSK) modes with low symbol rate use a single carrier of constant amplitude is stepped (between 16 or 32 tone frequencies respectively) in a constant phase manner. As a result, no unwanted sidebands are generated, and no special amplifier linearity requirements are necessary. The tones selected are set by the transmitted (4 or 5 bit) bit pattern and a gray-code table. The mode has full-time Forward Error Correction, so it is very robust. Tuning must be very accurate, and the software will not tolerate differences between transmit and receive frequency. The mode was designed for long path HF DX, and due to its great sensitivity is one of the best for long distance QSOs and skeds. MFSK8 has improved sensitivity, but is very difficult to tune, and suffers more from Doppler. It is useful as the band fades out. MFSK16 and MFSK8 were developed by Murray ZL1BPU and Nino IZ8BLY. <a href="http://www.w1hkj.com/FldigiHelp-3.21/Modes/MFSKdesc.htm">More here</a>. <h2>MFSK4</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_MFSK4.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_MFSK4.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>MFSK8</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_MFSK8.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_MFSK8.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>MFSK11</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_MFSK11.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_MFSK11.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>MFSK16</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_MFSK16.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_MFSK16.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>MFSK22</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_MFSK22.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_MFSK22.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>MFSK31</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_MFSK31.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_MFSK31.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>MFSK32</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_MFSK32.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_MFSK32.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>MFSK64</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_MFSK64.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_MFSK64.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h1>MT-63</h1> MT63 is an Orthogonal Frequency Division Multiplexed (OFDM) mode consisting of 64 parallel carriers each carrying part of the transmitted signal. The tones are differential BPSK modulated. MT63 employs a unique highly redundant Forward Error Correction system which contributes to its legendary robustness in the face of interference and fading. The tones have synchronous symbols, and are raised cosine modulated. The mode requires a very linear transmitter. Over-driving leads to excessive bandwidth and poorer reception. The mode is unpopular with many operators because of the excessive bandwidth used. The mode is very tolerant of tuning, as most software will handle 100Hz mistuning. The mode was designed by Pawel SP9VRC. <a href="http://www.w1hkj.com/FldigiHelp-3.21/Modes/MT63desc.htm">More here</a>. <h2>MT63-500</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_MT63_500.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_MT63_500.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>MT63-1000</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_MT63_1000.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_MT63_1000.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>MT63-2000</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_MT63_2000.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_MT63_2000.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h1>Olivia</h1> Olivia is a family of MFSK modes with a high redundancy Forward Error Correction system similar to MT63. The family is very large, with 40 or more different options, which can make it very difficult to work out which is which. The mode works well on poor HF paths and has good sensitivity, and is best used for fixed skeds. The most widely used versions have a symbol rate of 31.25 baud. The typing speed is varied by changing the number of tones used, but can also be changed by change of baud rate. RTTYM and Contestia are variants of Olivia. The MFSK is constant phase, and the transmission constant amplitude, so transmitter linearity is inimportant. The modes are moderately tolerant of mis-tuning. The typing rate is very modest, given the high bandwidth used. The mode was designed by Pawel SP9VRC. <a href="http://www.w1hkj.com/FldigiHelp-3.21/Modes/OLIVIAdesc.htm">More here</a>. <h2>8-250</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Olivia_8-250.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Olivia_8-250.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>4-500</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Olivia_4-500.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Olivia_4-500.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>8-500</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Olivia_8-500.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Olivia_8-500.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>16-500</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Olivia_16-500.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Olivia_16-500.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>8-1000</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Olivia_8-1000.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Olivia_8-1000.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>32-1000</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Olivia_32-1000.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Olivia_32-1000.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>64-2000</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Olivia_64-2000.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_Olivia_64-2000.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h1>PSK</h1> Narrow band modes such as PSK31 are low symbol rate, single carrier differential Binary PSK (called 2-PSK or BPSK) or Quadrature PSK (4-PSK or QPSK). With digital phase modulation the phase changes abruptly, and without additional measures wide sidebands would be created. To prevent this, all these modes also include 100% raised-cosine amplitude modulation (ASK) at the symbol rate, which reduces the power to zero at the phase change. Because of this amplitude modulation, the signal bandwidth is relatively narrow. Synchronization at the receiver is straightforward because it can be recovered from the amplitude information. Differential PSK is used to provide continuous phase changes when idle (to maintain sync), and by allowing the receiver to measure phase difference from symbol to symbol, to reduce the effects of ionospheric Doppler phase changes which modulate the signal. The slower modes are more affected by Doppler, and the QPSK modes are particularly affected. With no interleaver and limited coding length, the QPSK mode Forward Error Correction coding gain is limited, and under burst noise conditions (HF) the performance is usually worse than the BPSK option at the same baud rate. In general the narrow-band BPSK modes work well on a quiet single-hop path, but give poor performance in most other conditions. To counter this lack of robustness under adverse conditions, the PSKR ("R" for "robust"), series of modes has been developed. Using a similar design as the MFSK modes with a convolutional encoder and an interleaver these modes provide a much more robust link at the expense of the data speed which is divided by half when compared to the standard BPSK mode. Soft bits decoding was also added to maximize the probabilities of decoding the right sequence. With these modes, a very linear transmitter is required. Over-driven operation results in excessive bandwidth, poorer reception and difficult tuning. However, the sensitivity is such that very little power is usually required. <a href="http://www.w1hkj.com/FldigiHelp-3.21/Modes/PSKdesc.htm">More here</a>. <h2>BPSK</h2> <h3>BPSK31</h3> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_BPSK31.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_BPSK31.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h3>BPSK63</h3> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_BPSK63.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_BPSK63.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h3>BPSK63F</h3> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_BPSK63F.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_BPSK63F.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h3>BPSK125</h3> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_BPSK125.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_BPSK125.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h3>BPSK250</h3> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_BPSK250.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_BPSK250.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h3>BPSK500</h3> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_BPSK500.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_BPSK500.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>QPSK</h2> <h3>QPSK31</h3> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_QPSK31.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_QPSK31.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h3>QPSK63</h3> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_QPSK63.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_QPSK63.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h3>QPSK125</h3> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_QPSK125.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_QPSK125.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h3>QPSK250</h3> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_QPSK250.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_QPSK250.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h3>QPSK500</h3> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_QPSK500.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_QPSK500.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>PSK-R</h2> <h3>PSKR125</h3> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_PSKR125.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_PSKR125.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h3>PSKR250</h3> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_PSKR250.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_PSKR250.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h3>PSKR500</h3> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_PSKR500.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_PSKR500.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h1>RTTY</h1> RTTY has been used by radio amateurs since the 1950s. Initially an electromechanical system designed for use on telephone wires, it was not conceived as a radio system, and could not be used by radio until the development of the Ratio Detector during the 1939-1945 war. RTTY (the name means simply Radio Teletype) uses FSK to avoid noise on the transmission path, but requires high power and is still prone to propagation effects, especially selective fading and multi-path timing. Early RTTY equipment used separate oscillators for each of the tones, and so could produce very wide key clicks, requiring extra filters. Modern software uses phase coherent switching between tones, which somewhat improves the signal bandwidth. With no error correction, and a start-stop system that is prone to false starts on noise, RTTY is not the best mode for amateur use. However, it is easy to use, easy to tune, fast, tolerant of drift, and is widely used for contesting for these reasons alone. A linear transmitter is not required. <a href="http://www.w1hkj.com/FldigiHelp-3.21/Modes/RTTYdesc.htm">More here</a>. <h2>RTTY-45</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_RTTY45.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_RTTY45.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>RTTY-50</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_RTTY50.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_RTTY50.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>RTTY-75N</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_RTTY75n.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_RTTY75n.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>RTTY-75W</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_RTTY75w.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_RTTY75w.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h1>THOR</h1> THOR is a family of offset incremental multi-frequency shift keyed modes with low symbol rate, closely related to DominoEX. A single carrier of constant amplitude is stepped between 18 tone frequencies in a constant phase manner. As a result, no unwanted sidebands are generated, and no special amplifier linearity requirements are necessary. The tones change according to an offset algorithm which ensures that no sequential tones are the same or adjacent in frequency, considerably enhancing the inter-symbol interference resistance to multi-path and Doppler effects. The mode has full-time Forward Error Correction, so is extremely robust. The default speed (11 baud) was designed for NVIS conditions (80m at night), and other speeds suit weak signal LF, and high speed HF use. The use of incremental keying gives the mode complete immunity to transmitter-receiver frequency offset, drift and excellent rejection of propagation induced Doppler. <a href="http://www.w1hkj.com/FldigiHelp-3.21/Modes/THORdesc.htm">More here</a>. <h2>THOR4</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_THOR4.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_THOR4.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>THOR5</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_THOR5.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_THOR5.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>THOR8</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_THOR8.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_THOR8.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>THOR11</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_THOR11.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_THOR11.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>THOR16</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_THOR16.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_THOR16.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>THOR22</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_THOR22.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_THOR22.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h1>THROB</h1> The THROB family of modes are MFSK in nature, but are unusual in that (like DTMF) they use two tones at a time. Unique among other MFSK modes, the THROB family also uses amplitude modulation and sometimes sends just one tone! The mode has no Forward Error Correction, is difficult to tune, but reasonably sensitive and moderately robust. Because of the limited character set however, the typing speed is reasonably good, one character per symbol. Tuning must be very accurate, and the software will not tolerate differences between transmit and receive frequency. THROB is essentially a curiosity mode. Another unusual feature (which led to the name), THROB also includes raised cosine AM modulation of each symbol. This combined with two tones transmitted at the same time, means that a very linear transmitter is required. For THROB, nine tones are used, spaced 8 or 16 Hz. For THROBX, 11 tones are used, spaced 7.8125 or 15.625 Hz. The THROB family was developed by Lionel G3PPT. <a href="http://www.w1hkj.com/FldigiHelp-3.21/Modes/THROBdesc.htm">More here</a>. <h2>THROB1</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_THROB1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_THROB1.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>THROB2</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_THROB2.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_THROB2.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>THROB4</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_THROB4.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_THROB4.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>THROBX1</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_THROBX1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_THROBX1.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>THROBX2</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_THROBX2.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_THROBX2.png" width="700" alt="Click to enlarge" class="aligncenter"></a> <h2>THROBX4</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_THROBX4.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/DMW_THROBX4.png" width="700" alt="Click to enlarge" class="aligncenter"></a> End of message. SK SK. Digital Speech Decoder http://new.george-smart.co.uk/digital_speech_decoder page closed closed 0 2016-08-22 00:10:55 draft digital_speech_decoder 5495 On Sunday 12 October 2014, <a href="http://www.qrz.com/db/M0STO">Spencer M0STO</a> informed me of a software project called Digital Speech Decoder (DSD). The project claims that "Digital Speech Decoder is an open source software package that decodes several digital speech formats" -- [http://wiki.radioreference.com/index.php/Digital_Speech_Decoder_%28software_package%29] At the time of writing (version 1.7) supported the following <ul> <li> P25 Phase 1</li> <li> ProVoice EDACS Digital voice</li> <li> X2-TDMA - Motorola public safety TDMA system with P25 style signaling (mostly based on DMR)</li> <li> DMR/MOTOTRBO - Digital Mobile Radio standard</li> <li> NXDN - 9600 baud (12.5 kHz) NEXEDGE and 4800 baud (6.25 kHz) NEXEDGE/IDAS</li> <li> D-STAR - The Github version of dsd/mbelib can parse and play back D-STAR traffic. </li> <li> C4FM modulation</li> <li> GFSK modulation (including GMSK and other filtered 2/4 level FSK)</li> <li> QPSK modulation (sometimes marketed as "LSM") </li> </ul> With a new interest in <a href="http://www.d-staruk.co.uk/">DSTAR</a> since buying an Icom ID5100, I was keen to give this a try. I sent out a few emails to friends who could be potentially persuaded, and got some interesting replies. <a href="http://www.aaron-brown.net">Aaron VK3ABX</a> reported compiling DSD1.7 for Raspberry Pi (although he complained about it taking a while). People often say that "DSTAR is not amateur radio" - Personally, I believe the <i>ham spirit</i> is in a person, irrespective of technology - this, I feel, is amateur radio! It's just swapping compilers for cutters, terminals for transistors; software for solder. First and foremost. I am doing these experiments on Xubuntu 14.04.1 LTS. There are prebuilt binaries for Windows, which I will also be trying. Early versions of the software two-part; a program to run an RTL SDR and another program to decode the digital speech. Videos show people using the discriminator tap of FT817 receivers to feed data into a sound-card, so we see how that will work too. The build process on Xubuntu 14.04.1 LTS was very simple, thanks in part to <a href="http://www.aaron-brown.net">Aaron VK3ABX</a>. It goes a little something like this: <ul> <li> Update the APT package manager</li> <li> Download the basic building essentials</li> <li> Build <a href="http://itpp.sourceforge.net">IT++</a></li> <li> Build <a href="http://github.com/szechyjs/mbelib">mbelib</a></li> <li> Build <a href="http://github.com/szechyjs/dsd">dsd</a></li> </ul> <h1>Getting Started</h1> The first things to do are to update the APT package manager and then get some of the basic compiling tools we will require. <blockquote> $ sudo apt-get update $ sudo apt-get install build-essential git make cmake </blockquote> I will make a folder in my home directory for the experimentation. <blockquote> $ mkdir ~/digital_speech $ cd ~/digital_speech </blockquote> From there, I will create separate folders for each part of the process. <h1>Building itpp</h1> IT++ is a C++ library of mathematical, signal processing and communication classes and functions. Its main use is in simulation of communication systems and for performing research in the area of communications. It does a lot of the heavy lifting for dsd. Download and extract it into a folder inside the folder you made above and then change into the newly extracted folder. <blockquote> $ wget -O itpp-latest.tar.bz2 http://sourceforge.net/projects/itpp/files/latest/download?source=files $ tar xjf itpp-latest.tar.bz2 $ cd itpp-4.3.1/ </blockquote> You should hopefully get the latest version of the IT++ library (called itpp) extracted and be inside the extracted folder. ON my computer the path is '~/digital_speech/itpp-4.3.1' Now make a build directory and change into it <blockquote> $ mkdir build && cd build </blockquote> Finally we run the cmake command to write our make-script and check our make environment. You should get no errors. The '..' at the end is important, since this refers to the parent directory. <blockquote> $ cmake .. </blockquote> Once you have got the above command to finish without errors, you are ready to start the build process. The -j flag tells make to use all the cores it can. It took just over a minute on my work's PC. <blockquote> $ make -j </blockquote> Finally, you need to install the libraries <blockquote> $ sudo make install </blockquote> Once this is done, proceed to the next step. <h1>Building mbelib</h1> mbelib is a written description of how certain voice encoding/decoding algorithms could be implemented. It comes with the following patent notice: <code> This source code is provided for educational purposes only. It is a written description of how certain voice encoding/decoding algorithms could be implemented. Executable objects compiled or derived from this package may be covered by one or more patents. Readers are strongly advised to check for any patent restrictions or licensing requirements before compiling or using this source code. </code> We go back to the experimentation directory. <blockquote> $ cd ~/digital_speech/ </blockquote> We can this time use Git to download the source code for us. <blockquote> $ git clone https://github.com/szechyjs/mbelib.git $ cd mbelib/ </blockquote> Again, we create a build directory and change into it <blockquote> $ mkdir build && cd build </blockquote> We again run the configure script on the parent directory (..). <blockquote> $ cmake .. </blockquote> And again, as with IT++, we run the make command. <blockquote> $ make </blockquote> On the work PC this took 19 seconds. We install these libraries into the system with the following <blockquote> $ sudo make install </blockquote> And then we progress on to the next step. <h1>Building DSD</h1> DSD is able to decode several digital voice formats from discriminator tap audio and synthesize the decoded speech. Speech synthesis requires mbelib, which is a separate package. DSD is the program we will interact with to decode our digital speech. Before we can compile the DSD binaries, we need to get a few other libraries in addition to the two we have just built and installed. If you get errors about portaudio19-dev needing libjack-dev, then a sly way around this is to install libjack-jackd2-dev too (just paste it on the end of the following line). It's not needed, but for odd reasons, portaudio sometimes wants jackd development files. <blockquote> $ sudo apt-get install libsndfile1-dev fftw3-dev liblapack-dev portaudio19-dev </blockquote> Once downloaded and installed we go back to the experimentation directory <blockquote> $ cd ~/digital_speech/ </blockquote> We can again use Git to download the source code for us. <blockquote> $ git clone https://github.com/szechyjs/dsd.git $ cd dsd/ </blockquote> Again, we create a build directory and change into it <blockquote> $ mkdir build && cd build </blockquote> We again run the configure script on the parent directory (..). <blockquote> $ cmake .. </blockquote> And again, as with IT++, we run the make command. <blockquote> $ make </blockquote> On the work PC this took 31 seconds. At this point the build is done. You can install them with <blockquote> $ sudo make install </blockquote> <h1>Using dsd</h1> The 'official' operation is described on the <a href="https://github.com/szechyjs/dsd/wiki/Operation">dsd wiki operation page</a>. <h2>Getting Help</h2> Running the program with the -h flag prints the help options: <blockquote> $ ./dsd -h Digital Speech Decoder 1.7.0-dev (build:v1.6.0-79-g60807e0) mbelib version 1.2.5 Usage: dsd [options] Live scanner mode dsd [options] -r <files> Read/Play saved mbe data from file(s) dsd -h Show help Display Options: -e Show Frame Info and errorbars (default) -pe Show P25 encryption sync bits -pl Show P25 link control bits -ps Show P25 status bits and low speed data -pt Show P25 talkgroup info -q Don't show Frame Info/errorbars -s Datascope (disables other display options) -t Show symbol timing during sync -v <num> Frame information Verbosity -z <num> Frame rate for datascope Input/Output options: -i <device> Audio input device (default is /dev/audio, - for piped stdin) -o <device> Audio output device (default is /dev/audio) -d <dir> Create mbe data files, use this directory -r <files> Read/Play saved mbe data from file(s) -g <num> Audio output gain (default = 0 = auto, disable = -1) -n Do not send synthesized speech to audio output device -w <file> Output synthesized speech to a .wav file -a Display port audio devices Scanner control options: -B <num> Serial port baud rate (default=115200) -C <device> Serial port for scanner control (default=/dev/ttyUSB0) -R <num> Resume scan after <num> TDULC frames or any PDU or TSDU Decoder options: -fa Auto-detect frame type (default) -f1 Decode only P25 Phase 1 -fd Decode only D-STAR -fi Decode only NXDN48* (6.25 kHz) / IDAS* -fn Decode only NXDN96 (12.5 kHz) -fp Decode only ProVoice* -fr Decode only DMR/MOTOTRBO -fx Decode only X2-TDMA -l Disable DMR/MOTOTRBO and NXDN input filtering -ma Auto-select modulation optimizations (default) -mc Use only C4FM modulation optimizations -mg Use only GFSK modulation optimizations -mq Use only QPSK modulation optimizations -pu Unmute Encrypted P25 -u <num> Unvoiced speech quality (default=3) -xx Expect non-inverted X2-TDMA signal -xr Expect inverted DMR/MOTOTRBO signal * denotes frame types that cannot be auto-detected. Advanced decoder options: -A <num> QPSK modulation auto detection threshold (default=26) -S <num> Symbol buffer size for QPSK decision point tracking (default=36) -M <num> Min/Max buffer size for QPSK decision point tracking (default=15) $ </blockquote> <h2>Audio feeds</h2> The next question I was struggling to answer was how to get audio in and out of the software. From the help, I can see that the <i>-a</i> flag should "display port audio devices" which it indeed does - you can ignore it complaining about the bluetooth sound bridge and the fact my surround sound system doesn't play nicely: <blockquote> $ ./dsd -a Digital Speech Decoder 1.7.0-dev (build:v1.6.0-79-g60807e0) mbelib version 1.2.5 ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side bt_audio_service_open: connect() failed: Connection refused (111) bt_audio_service_open: connect() failed: Connection refused (111) bt_audio_service_open: connect() failed: Connection refused (111) bt_audio_service_open: connect() failed: Connection refused (111) Cannot connect to server socket err = No such file or directory Cannot connect to server request channel jack server is not running or cannot be started PortAudio version number = 1899 PortAudio version text = 'PortAudio V19-devel (built Feb 25 2014 21:09:53)' Number of devices = 12 --------------------------------------- device #0 Name = HDA Intel: ALC888 Analog (hw:0,0) Host API = ALSA Max inputs = 2, Max outputs = 8 Default sample rate = 44100.00 --------------------------------------- device #1 Name = HDA Intel: ALC888 Alt Analog (hw:0,2) Host API = ALSA Max inputs = 2, Max outputs = 0 Default sample rate = 44100.00 --------------------------------------- device #2 Name = sysdefault Host API = ALSA Max inputs = 128, Max outputs = 128 Default sample rate = 48000.00 --------------------------------------- device #3 Name = front Host API = ALSA Max inputs = 0, Max outputs = 8 Default sample rate = 44100.00 --------------------------------------- device #4 Name = surround40 Host API = ALSA Max inputs = 0, Max outputs = 8 Default sample rate = 44100.00 --------------------------------------- device #5 Name = surround41 Host API = ALSA Max inputs = 0, Max outputs = 128 Default sample rate = 44100.00 --------------------------------------- device #6 Name = surround50 Host API = ALSA Max inputs = 0, Max outputs = 128 Default sample rate = 44100.00 --------------------------------------- device #7 Name = surround51 Host API = ALSA Max inputs = 0, Max outputs = 8 Default sample rate = 44100.00 --------------------------------------- device #8 Name = surround71 Host API = ALSA Max inputs = 0, Max outputs = 8 Default sample rate = 44100.00 --------------------------------------- device #9 Name = pulse Host API = ALSA Max inputs = 32, Max outputs = 32 Default sample rate = 44100.00 --------------------------------------- device #10 Name = dmix Host API = ALSA Max inputs = 0, Max outputs = 2 Default sample rate = 48000.00 --------------------------------------- device #11 [ Default Input, Default Output ] Name = default Host API = ALSA Max inputs = 32, Max outputs = 32 Default sample rate = 44100.00 ---------------------------------------------- $ </blockquote> I prefer to use the generic "default" device and then let PulseAudio configure everything in a nice graphical way. The "[ Default Input, Default Output ]" device is given as "device #11" To select the device, you need to specify the use of PulseAudio, such as below: <blockquote> $ ./dsd -i pa:11 -o pa:11 </blockquote> You will see something like the following: <blockquote> Digital Speech Decoder 1.7.0-dev (build:v1.6.0-79-g60807e0) mbelib version 1.2.5 Initializing portaudio. ### Some warnings removed ### jack server is not running or cannot be started Using portaudio device 11. Name = default Using portaudio device 11. Name = default Audio In/Out Device: pa:11 </blockquote> Which the software then sits at it receives data. On another system, PulseAudio decided to show the defaults as device #2. Once dsd is running, you can use the PulseAudio volume control (usually click the speaker in the system tray, sound settings). You can route the audio from whatever device to whatever program. This is outside the scope of this page, but it's pretty easy. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/08/DSD_AudioRouting.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/08/DSD_AudioRouting.png" width="600" alt="Audio Routing" class="aligncenter"></a> As a side note, I couldn't get dsd to play audio out via pulse audio, so I used <i>padsp</i> as a wrapper for dsd and used <i>/dev/dsp</i> as the output device. (<i>Edit 22 Aug 2016</i>) Gilles LX3GR has done some further reading about the audio feeds on newer Linux distributions. He writes that, he had struggled with '/dev/audio' and the missing OSS system. Gilles preferred to install OSS, rather than using ALSA or PulseAudio. He followed <a href="https://wiki.debian.org/SoundFAQ/#line-105">instructions found here</a>, which are included here. Install <i>alsa-oss</i>: <blockquote> sudo apt-get install alsa-oss </blockquote> Load the installed OSS modules: <blockquote> sudo modprobe snd_pcm_oss sudo modprobe snd_mixer_oss </blockquote> This information from Gilles is untested, but may help others... <h2>Example Sounds</h2> Some example sounds are given on <a href="http://www.w2sjw.com/radio_sounds.html">W2SJW's Radio Sounds page</a>. You may try using an mp3 player to play those back into the dsd software, to test. I have not had any luck with this - yet! Now I'm off to make a cable for the FT817 to grab audio from my local DSTAR repeater. <h1>First Glimpse of Success</h1> Following some initial experiments with the Icom IC7000 and Yaesu FT817, I then moved on to the RTL-SDR receiver (via <a href="http://gqrx.dk/">gqrx</a>). This worked better, but I was still missing something. I made some test recordings, but I still felt that the system wasn't performing quite right <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/08/DSD_Decoding.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/08/DSD_Decoding.png" width="600" alt="Audio Decoding" class="aligncenter"></a> I also cut about a few recordings from my local D-STAR repeater, <a href="http://gb3ok.com/gb7ok_homepage.html">GB7OK</a>: <ul> <li> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/DSD_M1GEO_GB7OK.mp3">Some recordings from GB7OK</a></li> <li> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/DSD_M1GEO_G1HEQ.mp3">Myself and G1HEQ as I drive to get some food</a></li> <li> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/DSD_2W0CLJ_N3SBP.mp3">2W0CLJ and N3SBP talk about changing train loco tyres</a></li> </ul> <h1>Using GQRX and DSD</h1> Over the course of a week or so, I finely honed the receiving until I can now easily receive the local DSTAR repeater and all of the control/callsign data too. I am at a stage where there are no re-syncs and the voice is as good as any DSTAR radio. The basic approach is a little Heath-Robinson, but it was the best/most reliable way of working. The RTL SDR is controlled by gqrx. Getting this to work is outside the scope of this guide, but it is assumed that this works reliably. I then use the UDP network interface of gqrx to output the received datastream. This UDP data is then connected to via socat, which pipes data into DSD using STDIN. Works like magic! Here's how in more detail; <h2>GQRX</h2> Firstly, as I mention above, you must have GQRX working correctly on your Linux PC. Get the receiver tuned to the local DSTAR/DMR repeater. In the examples here, I use GB7OK and GB7PI as DSTAR repeaters, and GB7CT as DMR example (although GB7CT is a little weak with me). I have calibrated the receive frequency of my RTL SDR carefully, so it is on frequency, but if you haven't you'll need to tweak about and get tuned in. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/08/DSD_GQRX1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/08/DSD_GQRX1.png" width="600" alt="GQRX Setup" class="aligncenter"></a> Next we need to configure the FM demodulator. Firstly, we select "Mode: Narrow FM", then click the gear associated to the right, to bring up "More options". Inside, we select Max Dev as APT (17k) - in reality, we need much less than that, but more than the 5k that the default of Voice allows. We also set the Tau option to Off. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/08/DSD_GQRX2.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/08/DSD_GQRX2.png" width="300" alt="GQRX Setup" class="aligncenter"></a> Next we must set our filters to be of appropriate bandwidth for the receive signal. DSTAR, for example, shows up around 6 kHz wide, so I use a filter of around 6.6 kHz. Not too critical. Just pull the sides in on the waterfall until their snug. At the time of writing the repeater wasn't too busy so it was hard to get a picture showing this in detail. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/08/DSD_GQRX3.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/08/DSD_GQRX3.png" width="300" alt="GQRX Setup" class="aligncenter"></a> Once you have the filtering selected, I use 6.6 kHz here, as it best fits the received signal from GB7OK, you need to configure gqrx to <a href="http://gqrx.dk/doc/streaming-audio-over-udp">gqrx stream audio over UDP</a>. First click on the gear/spanner below the audio passband spectrum, this opens Audio options. On the networking tab, enter "localhost" for the UDP host, and "7355" for the UDP port. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/08/DSD_GQRX4.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/08/DSD_GQRX4.png" width="300" alt="GQRX Setup" class="aligncenter"></a> Once you've got that, then toggle the network streaming with the two computer screen buttons. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/08/DSD_GQRX5.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/08/DSD_GQRX5.png" width="600" alt="GQRX Setup" class="aligncenter"></a> Once you reach here, you've got GQRX ready to output data to the DSD software. <h2>SOCAT</h2> Socat is a multipurpose relay. We use it here to connect to the UDP port that GQRX makes us, and then pipe the data into DSD for decoding. All of this happens without any notion of audio, and so there is no bandwidth limiting or sample rates. It's easy to test and see if gqrx is outputting data. Run the following in the command line, using CTRL + C to stop it. <blockquote> socat stdout udp-listen:7355 | xxd </blockquote> See the socat manual for more information about that. xxd just presents the data nicely as hex-view output, so that the terminal doesn't see all the binary data. You'll get something that looks like this, only moving very quickly. That's the data... <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/08/DSD_SOCAT1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/08/DSD_SOCAT1.png" width="600" alt="Socat Setup" class="aligncenter"></a> <h2>DSD</h2> If you're getting data above, then you just replace the <i>xxd</i> command with <i>dsd</i> and the decoder receives the data instead. A few options to explain to the dsd decoder software what we want and we're away. If you look at the options for dsd, shown above, you'll see that the -i option takes a hyphen (-) which is usually used to represent stdin. Specifying "-i -" informs dsd that we want to take our input signal from standard in. All of the other options then apply as you would expect. I found that the output to audio in real time caused some problems, so instead, I write the output to a file with "-w filename.wav". The complete command I use on the decoder side is shown below. Obviously you can specify other options to fix DSTAR, DMR, etc. <blockquote> socat stdout udp-listen:7355 | ./dsd -i - -w dsd_output.wav </blockquote> You'll find that you can get better results by tinkering with a nice string signal and adjusting the bandwidth on the receiver, etc. <h2>DSTAR</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/08/DSD_RX_GB7OK_1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/08/DSD_RX_GB7OK_1.png" width="600" alt="DSD Receiving" class="aligncenter"></a> <i>(Ed: need to get off laptop)</i> A much better recording of GB7OK can be found here: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/DSD_GB7OK_Recording_M1GEO.mp3">DSD_GB7OK_Recording_M1GEO.mp3</a> <i>(Ed: need to get off laptop)</i> <h2>DMR</h2> Of course, when you come to demonstrate, there's never anything happening. The first image shows the stronger repeater with no traffic (empty slots) and the second is a more distant repeater that's weak (about S2 on the meter) with a few re-syncs and errors <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/08/DSD_RX_DMR_1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/08/DSD_RX_DMR_1.png" width="600" alt="DSD Receiving" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/08/DSD_RX_DMR_2.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/08/DSD_RX_DMR_2.png" width="600" alt="DSD Receiving" class="aligncenter"></a> A recording of GB7CT was made using DSD and is available here: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/DSD_GB7CT_Recording_M1GEO.mp3">DSD_GB7CT_Recording_M1GEO.mp3</a> I also took a wander just above the 70cms band. In the UK, there is A LOT of DMR around on 440-470 MHz. Have a look! This snippet was recorded from 440.965 MHz, the first transmitter I found with voice data (often it's just binary data, or idle slots): <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/DSD_DMR_Recording_1_M1GEO.mp3">DSD_DMR_Recording_1_M1GEO.mp3</a> I made a video showing the basics, and decoding DMR from the UK UHF PMR section of the spectrum from Central London using an RTL-SDR. <center><a href="http://www.youtube.com/watch?v=0J-rc4F3s24">Youtube Link</a></center> <html> <center> <iframe width="425" height="349" src="http://www.youtube.com/embed/0J-rc4F3s24?hl=en&fs=1" frameborder="0" allowfullscreen></iframe> </center> </html> <h1>Raspberry Pi (without GQRX)</h1> For various reasons, it is convenient to avoid using GQRX. When using the Raspberry Pi, or other embedded device, commands like <i>rtl_fm</i> are able to provide samples out as with socat connected to GQRX, but without the software library requirements of GQRX and the graphics and overhead. Another big plus is avoiding compiling GNURadio on the Raspberry Pi, which doesn take some years ;) <a href="http://www.aaron-brown.net">Aaron VK3ABX</a> reports good success with <i>rtl_fm</i> with the data piped into dsd as with above, although he does say "it takes around 3 seconds to stabilise and lock, and leaves room for further improvement": <blockquote> rtl_fm -f 145.125M -M fm -g 100 -s 70K -r 48K -E dc| dsd -i - -w test.wav </blockquote> Clearly you substitute your own frequency, taking into account any inaccuracy in the RTL SDR. You may also wish to tinker with the sampling rates and bandwidths (linked) to get the correct filter bandwidth around the signal. I have not personally tested the rtl_fm commands, but Gilles LX3GR confirms they are also working for him. Disclaimer http://new.george-smart.co.uk/disclaimer closed page closed 2012-01-03 00:48:00 0 draft disclaimer 2939 This page was moved here: <a href="http://new.george-smart.co.uk/george_smart_s_wiki_general_disclaimer">George_Smart's_Wiki:General_disclaimer</a>. <a href="/contact-me">Please report this message to the webmaster</a>. Donate http://new.george-smart.co.uk/donate 3004 draft donate 2012-01-12 14:29:40 0 page closed closed If you found any of the information on this website of use and have a few coins spare, it would greatly help me get through my degree and with the upkeep of the server. This server is maintained by me on my own machine at my own expense without any advertising - I feel this is best for everybody. But it does make it more expensive than other options. Anything you could spare would be greatly apprecaited. Clicking the Donate button below will take you to PayPal who will process your donation on my behalf. <html> <center> <form action="https://www.paypal.com/cgi-bin/webscr" method="post"> <input type="hidden" name="cmd" value="_s-xclick"> <input type="hidden" name="hosted_button_id" value="9TPX9TEHK69Q2"> <input type="image" src="https://www.paypal.com/en_US/GB/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online."> <img alt="" border="0" src="https://www.paypal.com/en_GB/i/scr/pixel.gif" width="1" height="1"> </form> </center> </html> Thank you in advance for considering to donate, and for your kindness should you choose too. <b>FIXME_Category :Admin</b> <b>FIXME_Category :Website</b> <b>FIXME_Category :Money</b> DSTAR http://new.george-smart.co.uk/dstar dstar draft 5209 closed page closed 0 2015-02-01 16:41:04 #redirect <a href="http://new.george-smart.co.uk/gb7kh">GB7KH</a> Dstar http://new.george-smart.co.uk/dstar dstar draft 5210 closed page closed 2015-02-01 16:42:01 0 This page was moved here: <a href="http://new.george-smart.co.uk/gb7kh">GB7KH</a>. <a href="/contact-me">Please report this message to the webmaster</a>. DTSCS http://new.george-smart.co.uk/dtscs 2016-01-11 22:19:00 0 closed closed page 5431 dtscs draft Placeholder page. Please see my <a href="https://github.com/m1geo/DTSCS">the DT-SCS project page on github</a>, and <a href="https://wwws.ee.ucl.ac.uk/~zceed42/">my academic webpage</a>. Dual Band Satellite Yagi http://new.george-smart.co.uk/dual_band_satellite_yagi 2015-06-20 17:36:02 0 closed page closed 5294 dual_band_satellite_yagi draft I have recently become interested in working satellites. I have done many things within the hobby of Amateur Radio, but satellites had always been something I have been interested in, but never done. I decided to correct it. I had a listen on my colinear antenna and I could hear some stuff on the downlink frequencies, but the received signal was poor. I needed a decent antenna. I was recommended a design on <a href="http://sa555.blogspot.co.uk/2013/08/baofeng-uv5-r-with-so50-satellite.html">SA555 blogspot</a> by LY3LP. An image of which is extracted below: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/06/sat_dualband_yagi_original.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/06/sat_dualband_yagi_original.png" alt="Original Yagi from SA555 Blogspot - LY3LP" class="aligncenter"></a> The issue is that once I built the antenna to this design, the SWR was over 2:1, which I didn't think was good enough. Dad and I messed around with the design, and managed to get the SWR lower, but we decided to simulate it and get the measurements correct. Presented on the rest of this page is our refinement. The antenna is a VHF side is a 2m moxon, tuned on 145.825 MHz. The driven element of the moxon couples to a driven element for a 5 element 70cms Yagi, tuned on 436.5 MHz. <center><table border="1" cellpadding="3" > <tr><td>Frequency (MHz)<td><b>145.825</b><td><b>436.500</b></td></tr><tr><td>SWR<td>1.07:1<td>1.09:1</td></tr><tr><td>Forward Gain (dBd)<td>3.95<td>8.06</td></tr><tr><td>Front to Back (dB)<td>—14.53<td>—38.58 </tr> </table> </center> The dimensions are all in millimetres, with element length next to each element, and spacing along the bottom. The red element is the driven element, and is broken into two pieces and fed with coax. Wrapping several turns of feeder around the boom will serve as a choke balun at these frequencies, and should be sufficient. The antenna is made from 3.2 mm aluminium welding wire, using 10 gauge saddle clamps (used for model aircraft). All the parts come from eBay. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/06/sat_dualband_modified_m1geo.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/06/sat_dualband_modified_m1geo.png" width="600" alt="Modified Satellite Antenna Design" class="aligncenter"></a> The below images show the SWR, plots and currents for the modified antenna design, <center><table > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/06/sat_dualband_yagi_2moxon.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/06/sat_dualband_yagi_2moxon.png" width="300" alt="2 metres" class="aligncenter"></a></tr> </table> <i>Clicking on any of the pictures will load the picture details page. Click on the picture there, and it will show full resolution.</i> </center> Dualband Colinear Measurements http://new.george-smart.co.uk/dualband_colinear_measurements closed closed page 0 2014-04-28 21:05:49 dualband_colinear_measurements draft 4923 Most of my radio activity takes place in <a href="http://new.george-smart.co.uk/the_shack">The Shack</a>, but I also have a couple of antennas which connect directly to the house. I have a very simple 1/4&lambda; antenna for 145 MHz and a dual-band colinear array (Diamond X-30); a typical (small) white stick antenna. What I notice is that on 2 metres FM, chatting with local stations, I usually get better signal reports on the simple ground plane 1/4&lambda; than on the colinear (which supposedly has 3 dB gain on 144 MHz [ <a href="http://www.diamond-ant.co.jp/english/amateur/antenna/ante_2base/ante_base3.html">here</a> ], although it is not specified to be dBd or dBi). Having done an demo/example session of using a <a href="http://en.wikipedia.org/wiki/Network_analyzer_(electrical)">vector network analyser</a> at the radio club, I decided to connect up the antennas here in the home-shack, to see what the odd signal reports were about. For each image, the <a href="http://en.wikipedia.org/wiki/VSWR">VSWR</a> at a given frequency is shown in red, absolute <a href="http://en.wikipedia.org/wiki/Electrical_impedance">impedance</a> is shown in blue and <a href="http://en.wikipedia.org/wiki/Insertion_loss">insertion loss</a> is shown in green. Insertion loss is a useful metric to observe as that shows how much energy is radiated on each frequency (neglecting coax losses), which, ultimately, is all we are interested in. Firstly, I had a look at the simple ground plane 1/4&lambda;. The image below shows a sweep of frequency around the 2-metre (144 MHz) band. What can be seen is that the antenna is tuned quite a way off frequency; marker 1 shows the characteristics at 145 MHz (R=77 Ohms, SWR=1.7:1, Loss=-12dB). The actual resonance is at 154 MHz. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/dualband_quaterwave144.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/dualband_quaterwave144.png" width="600" class="aligncenter"></a> Next comes a complete sweep of the Diamond X-30 colinear. I couldn't remember if the antenna was of any use on 6-metres (50 MHz) and so I started the sweep low so I could see. As is apparent, it is not. I notice there is a resonance at approximately 260 MHz - initially, I thought this may be to do with the American 1.25-metre (222 MHz) band, but alas not. My guess is that it is an unintentional resonance because of the physical construction of the antenna. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/dualband_colinear_overall.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/dualband_colinear_overall.png" width="600" class="aligncenter"></a> The last two images are close in sweeps of the 2-metre (144 MHz) band and the 70-centimetre (433 MHz) band on the colinear. At 145 MHz, R=60 Ohms, SWR=1.19:1, Loss=-21dB. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/dualband_colinear_144.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/dualband_colinear_144.png" width="600" class="aligncenter"></a> At 433 MHz, R=59 Ohms, SWR=1.18:1, Loss=-22dB <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/dualband_colinear_433.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/dualband_colinear_433.png" width="600" class="aligncenter"></a> DV http://new.george-smart.co.uk/dv 3001 draft dv 2012-01-12 14:27:45 0 page closed closed When I get around to is, this page will house my digital voice transmission work. At the moment, this is all just a theory, based on the work of various others. Nothing concrete, but revolving around: <ul> <li> <a href="http://www.rowetel.com/blog/?p=2255">Codec 2 at 1400 bits/s</a> - A very low bandwidth audio codec using LSP methods.</li> </ul> The idea would be to sample microphone audio. Convert it to a digital signal. Compress it, possibly using the above <i>Codec 2</i> codec. Modulate it at base-band. Feed it into an amateur radio transmitter for transmission where desired. I would also like, as suggested by <a href="http://webshed.org">Dave</a> to include video frames within the spare data slots. This way, we would get some low resolution low frame-rate images - could be nice. Check back here soon; I keep on thinking about this - something must happen! <b>FIXME_Category :Radio</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Computers</b> <b>FIXME_Category :Linux</b> <b>FIXME_Category :Programming</b> DXCC http://new.george-smart.co.uk/dxcc 5334 draft dxcc 2015-09-29 00:17:31 0 page closed closed This page is a list of DXCC entities that I need to work. <ul> <li> Afghanistan</li> <li> Agalega & St Brandon Islands</li> <li> Aland Island</li> <li> Alaska</li> <li> Albania</li> <li> Algeria</li> <li> American Samoa</li> <li> Amsterdam & St Paul Island</li> <li> Andaman & Nicobar Island</li> <li> Andorra</li> <li> Angola</li> <li> Anguilla</li> <li> Annobon</li> <li> Antarctica</li> <li> Argentina</li> <li> Armenia</li> <li> Ascension Island</li> <li> Auckland & Campbell Island</li> <li> Austral Island</li> <li> Aves Island</li> <li> Azerbaijan</li> <li> Bahamas</li> <li> Bahrain</li> <li> Baker Howland Island</li> <li> Balearic Island</li> <li> Banaba Island</li> <li> Bangladesh</li> <li> Belize</li> <li> Benin</li> <li> Bermuda</li> <li> Bhutan</li> <li> Bolivia</li> <li> Bosnia-Herzegovina</li> <li> Botswana</li> <li> Bouvet Island</li> <li> British Virgin Island</li> <li> Brunei</li> <li> Burkina Faso</li> <li> Burundi</li> <li> Cambodia</li> <li> Cameroon</li> <li> Cayman Islands</li> <li> Central African Republic</li> <li> Central Kiribati</li> <li> Ceuta & Melilla</li> <li> Chad</li> <li> Chagos Island</li> <li> Chatham Island</li> <li> Chesterfield Is.</li> <li> Christmas Island</li> <li> Clipperton Island</li> <li> Cocos (Keeling) Island</li> <li> Cocos Island</li> <li> Comoros</li> <li> Conway Reef</li> <li> Corsica</li> <li> Costa Rica</li> <li> Cote D'ivoire</li> <li> Crozet Island</li> <li> Cuba</li> <li> Curacao</li> <li> Dem. Rep. Of The Congo</li> <li> Desecheo Island</li> <li> Djibouti</li> <li> Dodecanese</li> <li> Dominica</li> <li> Dominican Republic</li> <li> DPRK (North Korea)</li> <li> Ducie Island</li> <li> East Malaysia</li> <li> Easter Island</li> <li> Eastern Kiribati</li> <li> El Salvador</li> <li> Equatorial Guinea</li> <li> Eritrea</li> <li> Estonia</li> <li> Ethiopia</li> <li> Falkland Islands</li> <li> Faroe Islands</li> <li> Fernando De Noronha</li> <li> Fiji Islands</li> <li> Franz Josef Land</li> <li> French Guiana</li> <li> French Polynesia</li> <li> Gabon</li> <li> Galapagos Islands</li> <li> Ghana</li> <li> Glorioso Island</li> <li> Grenada</li> <li> Guam</li> <li> Guatemala</li> <li> Guinea</li> <li> Guinea-Bissau</li> <li> Guyana</li> <li> Haiti</li> <li> Heard Island</li> <li> Hong Kong</li> <li> Iceland</li> <li> Indonesia</li> <li> Iran</li> <li> Iraq</li> <li> Isle of Man</li> <li> Jamaica</li> <li> Jan Mayen</li> <li> Johnston Island</li> <li> Jordan</li> <li> Juan De Nova, Europa</li> <li> Juan Fernandez Island</li> <li> Kaliningrad</li> <li> Kenya</li> <li> Kerguelen Island</li> <li> Kermadec Island</li> <li> Kingman Reef</li> <li> Kure Island</li> <li> Kyrgyzstan</li> <li> Lakshadweep Islands</li> <li> Laos</li> <li> Lesotho</li> <li> Liberia</li> <li> Libya</li> <li> Liechtenstein</li> <li> Lord Howe Island</li> <li> Macao</li> <li> Macedonia</li> <li> Macquarie Island</li> <li> Madagascar</li> <li> Maldives</li> <li> Mali</li> <li> Malpelo Island</li> <li> Mariana Islands</li> <li> Market Reef</li> <li> Marquesas Island</li> <li> Marshall Islands</li> <li> Mauritania</li> <li> Mauritius Island</li> <li> Mayotte Island</li> <li> Mellish Reef</li> <li> Micronesia</li> <li> Midway Island</li> <li> Minami Torishima</li> <li> Monaco</li> <li> Mongolia</li> <li> Montserrat</li> <li> Mount Athos</li> <li> Mozambique</li> <li> Myanmar</li> <li> Nauru</li> <li> Navassa Island</li> <li> Nepal</li> <li> New Caledonia</li> <li> New Zealand</li> <li> Niger</li> <li> Nigeria</li> <li> Niue</li> <li> Norfolk Island</li> <li> North Cook Islands</li> <li> Ogasawara</li> <li> Pakistan</li> <li> Palau</li> <li> Palmyra & Jarvis Islands</li> <li> Papua New Guinea</li> <li> Peter 1 Island</li> <li> Philippines</li> <li> Pitcairn Island</li> <li> Pratas Island</li> <li> Prince Edward & Marion Islands</li> <li> Qatar</li> <li> Republic Of South Sudan</li> <li> Republic Of The Congo</li> <li> Reunion Island</li> <li> Revillagigedo</li> <li> Rodriguez Island</li> <li> Rotuma</li> <li> Rwanda</li> <li> Saba & St Eustatius</li> <li> Sable Island</li> <li> Saint Barthelemy</li> <li> Saint Helena</li> <li> Saint Lucia</li> <li> Saint Martin</li> <li> Saint Paul Island</li> <li> Saint Peter And Paul Rocks</li> <li> Saint Pierre & Miquelon</li> <li> Saint Vincent</li> <li> Samoa</li> <li> San Andres Island</li> <li> San Felix Island</li> <li> San Marino</li> <li> Sao Tome & Principe</li> <li> Scarborough Reef</li> <li> Senegal</li> <li> Sierra Leone</li> <li> Sint Maarten</li> <li> Solomon Islands</li> <li> Somalia</li> <li> South Cook Islands</li> <li> South Georgia Island</li> <li> South Orkney Islands</li> <li> South Sandwich Islands</li> <li> South Shetland Islands</li> <li> Sov Military Order of Malta</li> <li> Spratly Islands</li> <li> Sri Lanka</li> <li> Sudan</li> <li> Suriname</li> <li> Swains Island</li> <li> Swaziland</li> <li> Syria</li> <li> Taiwan</li> <li> Tajikistan</li> <li> Tanzania</li> <li> Temotu Province</li> <li> The Gambia</li> <li> Timor - Leste</li> <li> Togo</li> <li> Tokelau Islands</li> <li> Tonga</li> <li> Trindade & Martim Vaz Islands</li> <li> Tristan Da Cunha & Gough Is</li> <li> Tromelin Island</li> <li> Tunisia</li> <li> Turkmenistan</li> <li> Turks & Caicos Islands</li> <li> Tuvalu</li> <li> UK Bases On Cyprus</li> <li> Uganda</li> <li> United Nations HQ</li> <li> Uruguay</li> <li> US Virgin Islands</li> <li> Uzbekistan</li> <li> Vanuatu</li> <li> Vatican City</li> <li> Viet Nam</li> <li> Wake Island</li> <li> Wallis & Futuna Island</li> <li> Western Kiribati</li> <li> Western Sahara</li> <li> Willis Island</li> <li> Yemen</li> <li> Zambia</li> <li> Zimbabwe</li> E-mail http://new.george-smart.co.uk/e_mail e_mail draft 3304 closed closed page 2012-04-19 01:23:00 0 This page was moved here: <a href="http://new.george-smart.co.uk/email">Email</a>. <a href="/contact-me">Please report this message to the webmaster</a>. EasySMS Launcher http://new.george-smart.co.uk/easysms_launcher closed page closed 2011-02-25 23:04:54 0 draft easysms_launcher 1746 The <a href="http://code.google.com/p/androideasysms/">EasySMS</a> project allows persons with a Google Android phone to send SMS via a PC. It is a web-based application, but requires either USB or WiFi to connect to the phone. Web pages are created by the phone, and the user is able to use them to send text messages, etc. The set up is a little tricky, and requires using ADB (Android Debug Bridge) to connect via USB. Wifi requires entering the IP of the phone into the computer. This bash script allows for a "button press" approach. It's complete enough to have basic checking, but it's not fool proof. But it's good enough for my use, and I assume it may be useful for others too. It has a Zenity interface (for use with Gnome) but also talks nicely to the terminal. It may require some modifications for use with KDE (just find/replace Zenity with KDEDialog - or whatever it is). You will need to edit the file, as the first few lines set the ADB location, your preferred browser path, and an icon (for prettiness). <center> <gallery> Image:EasySMS_A.png|Quick Launcher Icon Image:EasySMS_B.png|Connection method dialog Image:EasySMS_C.png|Open browser dialog </gallery> </center> <h1>Bash Script : EasySMS.sh</h1> Also available as a <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/EasySMS.sh">EasySMS.sh</a> <html> <head> <meta name="generator" content="Geany 0.19.1" /> <meta name="date" content="2010-11-05T16:47:10+0000"> <style type="text/css"> .style_2 { color: #d00000; background-color: #ffffff; } .style_3 { color: #007f00; background-color: #ffffff; } .style_4 { color: #111199; background-color: #ffffff; font-weight: bold; } .style_5 { color: #ff901e; background-color: #ffffff; } .style_7 { color: #301010; background-color: #ffffff; } .style_8 { color: #000000; background-color: #ffffff; } .style_9 { color: #105090; background-color: #ffffff; } .style_11 { color: #000000; background-color: #d0d0d0; } </style></head><body> <span class="style_2">#!/bin/bash</span><br /> <span class="style_2">#</span><br /> <span class="style_2">#&nbsp;EasySMS&nbsp;Starter&nbsp;Script&nbsp;for&nbsp;Wifi&nbsp;and&nbsp;USB</span><br /> <span class="style_2">#&nbsp;George&nbsp;SMART&nbsp;(M1GEO)</span><br /> <span class="style_2">#&nbsp;Friday,&nbsp;5th&nbsp;November&nbsp;2010</span><br /> <span class="style_2">#</span><br /> <span class="style_2">#&nbsp;http://www.george-smart.co.uk/</span><br /> <span class="style_2">#</span><br /> <br /> <span class="style_2">#&nbsp;Absolute&nbsp;path&nbsp;to&nbsp;adb&nbsp;and&nbsp;a&nbsp;nice&nbsp;icon</span><br /> <span class="style_8">ADBPATH</span><span class="style_7">=</span><span class="style_5">"/opt/android-sdk-linux_86/tools/adb"</span><br /> <span class="style_8">ICOPATH</span><span class="style_7">=</span><span class="style_5">"/opt/android-sdk-linux_86/android.ico"&nbsp;</span><span class="style_2">#&nbsp;taken&nbsp;from&nbsp;the&nbsp;google&nbsp;website,&nbsp;not&nbsp;necessary,&nbsp;just&nbsp;pretty.</span><br /> <span class="style_8">BROWSER</span><span class="style_7">=</span><span class="style_5">"google-chrome"</span><br /> <br /> <span class="style_8">echo&nbsp;</span><span class="style_4">-n&nbsp;</span><span class="style_5">"Starting&nbsp;EasySMS&nbsp;via&nbsp;"</span><br /> <br /> <span class="style_8">zenity&nbsp;</span><span class="style_7">--</span><span class="style_8">question&nbsp;</span><span class="style_7">--</span><span class="style_8">window-icon</span><span class="style_7">=</span><span class="style_5">"$ICOPATH"&nbsp;</span><span class="style_7">--</span><span class="style_8">title</span><span class="style_7">=</span><span class="style_5">"EasySMS&nbsp;Starter&nbsp;-&nbsp;George&nbsp;Smart"&nbsp;</span><span class="style_7">--</span><span class="style_8">text</span><span class="style_7">=</span><span class="style_5">"Would&nbsp;you&nbsp;like&nbsp;to&nbsp;use&nbsp;USB&nbsp;(via&nbsp;ADB)&nbsp;or&nbsp;Wifi?"&nbsp;</span><span class="style_7">--</span><span class="style_8">ok-label</span><span class="style_7">=</span><span class="style_5">"USB"&nbsp;</span><span class="style_7">--</span><span class="style_8">cancel-label</span><span class="style_7">=</span><span class="style_5">"Wifi"</span><br /> <br /> <span class="style_4">if&nbsp;</span><span class="style_7"><a href="&nbsp;</span><span">class="style_9">$?&nbsp;</span><span class="style_7">-</span><span class="style_8">eq&nbsp;</span><span class="style_3">0&nbsp;</span><span class="style_7"></a>;&nbsp;</span><span class="style_4">then</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_2">#&nbsp;USB</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">echo&nbsp;</span><span class="style_5">"USB"</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">echo&nbsp;</span><span class="style_5">"Killing&nbsp;any&nbsp;existing&nbsp;adb&nbsp;sessions"</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">killall&nbsp;adb</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">killall&nbsp;adb</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">exitstatus</span><span class="style_7">=</span><span class="style_3">1</span><span class="style_7">;</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">count</span><span class="style_7">=</span><span class="style_3">1</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_4">if&nbsp;</span><span class="style_7"><a href="&nbsp;</span><span">class="style_5">"x$exitstatus"&nbsp;</span><span class="style_7">!=&nbsp;</span><span class="style_5">"x0"&nbsp;</span><span class="style_7"></a>;&nbsp;</span><span class="style_4">then&nbsp;</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">zenity&nbsp;</span><span class="style_7">--</span><span class="style_8">info&nbsp;</span><span class="style_7">--</span><span class="style_8">window-icon</span><span class="style_7">=</span><span class="style_5">"$ICOPATH"&nbsp;</span><span class="style_7">--</span><span class="style_8">title</span><span class="style_7">=</span><span class="style_5">"EasySMS&nbsp;Starter&nbsp;-&nbsp;George&nbsp;Smart"&nbsp;</span><span class="style_7">--</span><span class="style_8">text</span><span class="style_7">=</span><span class="style_5">"Starting&nbsp;ADB.&nbsp;&nbsp;Please&nbsp;wait."&nbsp;</span><span class="style_7">&amp;</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">startbox</span><span class="style_7">=</span><span class="style_9">$!</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style_4">while&nbsp;</span><span class="style_7"><a href="&nbsp;</span><span">class="style_9">$exitstatus&nbsp;</span><span class="style_7">-</span><span class="style_8">ne&nbsp;</span><span class="style_3">0&nbsp;</span><span class="style_7"></a>;&nbsp;</span><span class="style_4">do</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style_9">$ADBPATH&nbsp;</span><span class="style_8">forward&nbsp;tcp</span><span class="style_7">:</span><span class="style_3">2511&nbsp;</span><span class="style_8">tcp</span><span class="style_7">:</span><span class="style_3">2511</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">exitstatus</span><span class="style_7">=</span><span class="style_9">$?</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">echo&nbsp;</span><span class="style_5">"System&nbsp;call&nbsp;exited&nbsp;with&nbsp;$exitstatus&nbsp;on&nbsp;attempt&nbsp;$count"</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">count</span><span class="style_7">=$((</span><span class="style_9">$count</span><span class="style_7">+</span><span class="style_3">1</span><span class="style_7">))&nbsp;</span><br /> <br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style_2">#&nbsp;after&nbsp;10&nbsp;goes,&nbsp;if&nbsp;we&nbsp;cant&nbsp;get&nbsp;adb&nbsp;running&nbsp;nicely,&nbsp;give&nbsp;up.</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style_4">if&nbsp;</span><span class="style_7"><a href="&nbsp;</span><span">class="style_9">$count&nbsp;</span><span class="style_7">-</span><span class="style_8">eq&nbsp;</span><span class="style_3">10&nbsp;</span><span class="style_7"></a>;&nbsp;</span><span class="style_4">then</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">kill&nbsp;</span><span class="style_9">$startbox&nbsp;</span><span class="style_2">#&nbsp;remove&nbsp;old&nbsp;zenity&nbsp;message</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">echo&nbsp;</span><span class="style_5">"There&nbsp;seems&nbsp;to&nbsp;be&nbsp;a&nbsp;problem:&nbsp;ADB&nbsp;won't&nbsp;start&nbsp;nicely!"</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">zenity&nbsp;</span><span class="style_7">--</span><span class="style_8">info&nbsp;</span><span class="style_7">--</span><span class="style_8">window-icon</span><span class="style_7">=</span><span class="style_5">"$ICOPATH"&nbsp;</span><span class="style_7">--</span><span class="style_8">title</span><span class="style_7">=</span><span class="style_5">"EasySMS&nbsp;Starter&nbsp;-&nbsp;George&nbsp;Smart"&nbsp;</span><span class="style_7">--</span><span class="style_8">text</span><span class="style_7">=</span><span class="style_5">"ADB&nbsp;could&nbsp;not&nbsp;be&nbsp;started.&nbsp;&nbsp;Script&nbsp;exiting."</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">sleep&nbsp;</span><span class="style_3">1</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style_4">exit&nbsp;</span><span class="style_3">1</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style_4">fi</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style_4">if&nbsp;</span><span class="style_7"><a href="&nbsp;</span><span">class="style_9">$exitstatus&nbsp;</span><span class="style_7">-</span><span class="style_8">ne&nbsp;</span><span class="style_3">0&nbsp;</span><span class="style_7"></a>;&nbsp;</span><span class="style_4">then</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">sleep&nbsp;</span><span class="style_3">1</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style_4">fi</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style_4">done</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_4">fi</span><br /> <br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">existingpid</span><span class="style_7">=</span><span class="style_11">`pgrep&nbsp;adb`</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">msg</span><span class="style_7">=</span><span class="style_5">"ADB&nbsp;is&nbsp;now&nbsp;running&nbsp;at&nbsp;PID:$existingpid."</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">phoneip</span><span class="style_7">=</span><span class="style_5">"localhost:2511"</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<br /> <span class="style_4">else</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_2">#&nbsp;WIFI</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">echo&nbsp;</span><span class="style_4">-n&nbsp;</span><span class="style_5">"Wifi&nbsp;to&nbsp;"</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">phoneip</span><span class="style_7">=</span><span class="style_11">`zenity&nbsp;--entry&nbsp;--window-icon="$ICOPATH"&nbsp;--title="EasySMS&nbsp;Starter&nbsp;-&nbsp;George&nbsp;Smart"&nbsp;--text="Please&nbsp;enter&nbsp;the&nbsp;IP&nbsp;address&nbsp;of&nbsp;the&nbsp;phone.&nbsp;&nbsp;Note,&nbsp;it&nbsp;must&nbsp;be&nbsp;on&nbsp;a&nbsp;local&nbsp;network."`</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">phoneip</span><span class="style_7">=</span><span class="style_5">"$phoneip:2511"</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_4">if&nbsp;</span><span class="style_7"><a href="&nbsp;</span><span">class="style_9">$?&nbsp;</span><span class="style_7">-</span><span class="style_8">eq&nbsp;</span><span class="style_3">0&nbsp;</span><span class="style_7"></a>;&nbsp;</span><span class="style_4">then</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">echo&nbsp;</span><span class="style_5">"$phoneip"</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_4">else</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">echo&nbsp;</span><span class="style_5">"NaN"</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">zenity&nbsp;</span><span class="style_7">--</span><span class="style_8">info&nbsp;</span><span class="style_7">--</span><span class="style_8">window-icon</span><span class="style_7">=</span><span class="style_5">"$ICOPATH"&nbsp;</span><span class="style_7">--</span><span class="style_8">title</span><span class="style_7">=</span><span class="style_5">"EasySMS&nbsp;Starter&nbsp;-&nbsp;George&nbsp;Smart"&nbsp;</span><span class="style_7">--</span><span class="style_8">text</span><span class="style_7">=</span><span class="style_5">"Cancelled."</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">echo&nbsp;</span><span class="style_5">"User&nbsp;Cancelled&nbsp;at&nbsp;IP&nbsp;entry."</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style_4">exit&nbsp;</span><span class="style_7">-</span><span class="style_3">1</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_4">fi</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">msg</span><span class="style_7">=</span><span class="style_5">"Connect&nbsp;to&nbsp;EasySMS&nbsp;via&nbsp;wifi&nbsp;at&nbsp;$phoneip."</span><br /> <span class="style_4">fi</span><br /> <br /> <span class="style_8">echo&nbsp;</span><span class="style_4">-n&nbsp;</span><span class="style_5">"$msg&nbsp;Launch&nbsp;browswer?&nbsp;(Y/N):"</span><br /> <span class="style_8">zenity&nbsp;</span><span class="style_7">--</span><span class="style_8">question&nbsp;</span><span class="style_7">--</span><span class="style_8">window-icon</span><span class="style_7">=</span><span class="style_5">"$ICOPATH"&nbsp;</span><span class="style_7">--</span><span class="style_8">title</span><span class="style_7">=</span><span class="style_5">"EasySMS&nbsp;Starter&nbsp;-&nbsp;George&nbsp;Smart"&nbsp;</span><span class="style_7">--</span><span class="style_8">text</span><span class="style_7">=</span><span class="style_5">"$msg\nWould&nbsp;you&nbsp;like&nbsp;this&nbsp;launched&nbsp;in&nbsp;your&nbsp;web&nbsp;browser?"&nbsp;</span><span class="style_7">--</span><span class="style_8">ok-label</span><span class="style_7">=</span><span class="style_5">"Yes,&nbsp;Please"&nbsp;</span><span class="style_7">--</span><span class="style_8">cancel-label</span><span class="style_7">=</span><span class="style_5">"No,&nbsp;Thanks"</span><br /> <br /> <span class="style_4">if&nbsp;</span><span class="style_7"><a href="&nbsp;</span><span">class="style_9">$?&nbsp;</span><span class="style_7">-</span><span class="style_8">eq&nbsp;</span><span class="style_3">0&nbsp;</span><span class="style_7"></a>;&nbsp;</span><span class="style_4">then</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_2">#&nbsp;Yes</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">echo&nbsp;</span><span class="style_5">"Yes"</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">echo&nbsp;</span><span class="style_5">"Launching:&nbsp;$BROWSER&nbsp;http://$phoneip/index.html"</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">nohup&nbsp;</span><span class="style_9">$BROWSER&nbsp;</span><span class="style_5">"http://$phoneip/index.html"&nbsp;</span><span class="style_7">&amp;</span><br /> <span class="style_4">else</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_2">#&nbsp;NO</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">echo&nbsp;</span><span class="style_5">"No"</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">echo&nbsp;</span><span class="style_5">"Visit:&nbsp;&nbsp;http://$phoneip/index.html"</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span class="style_8">zenity&nbsp;</span><span class="style_7">--</span><span class="style_8">info&nbsp;</span><span class="style_7">--</span><span class="style_8">window-icon</span><span class="style_7">=</span><span class="style_5">"$ICOPATH"&nbsp;</span><span class="style_7">--</span><span class="style_8">title</span><span class="style_7">=</span><span class="style_5">"EasySMS&nbsp;Starter&nbsp;-&nbsp;George&nbsp;Smart"&nbsp;</span><span class="style_7">--</span><span class="style_8">text</span><span class="style_7">=</span><span class="style_5">"Visit&nbsp;http://$phoneip/index.html&nbsp;with&nbsp;a&nbsp;web&nbsp;browser."</span><br /> <span class="style_4">fi</span><br /> </body></html> <b>FIXME_Category :Computers</b> <b>FIXME_Category :Programming</b> EchoLink http://new.george-smart.co.uk/echolink echolink draft 5140 closed closed page 2014-11-16 19:48:33 0 <center><font color="red"> <b>Currently off-air due to my temporary secondment in Cambridge</b> </font></center> After a dormancy of around a year, my EchoLink node, M1GEO-L (524497) is back on air. It is a <a href="http://sourceforge.net/apps/trac/svxlink/">SvxLink node</a> supporting various services, including EchoLink. The link is running on a <a href="http://new.george-smart.co.uk/raspberry_pi">Raspberry Pi</a>. More information on the technical aspects can be found on my <a href="http://new.george-smart.co.uk/echolink_on_the_raspberry_pi">EchoLink On The Raspberry Pi</a> page. The <a href="http://home.george-smart.co.uk:8080/cgi-bin/stats.cgi">Link Status Page</a> shows what the node is currently doing along with some of the Pi stats. The node is running whenever I am around, but I may not always be listening. It is often connected to the *IRELAND* conference (2605#). Feel free to call CQ. <h1>A Quick Guide</h1> The SvxLink node is split into modules. These include a simple parrot module to allow you to replay transmissions for testing (module 1). Another module, relevant here is the EchoLink module, which allows SvxLink to interface with the EchoLink system (module 2). Module 10 is the Propagation Monitor module, which collects propagation information from GoodDX and DXMaps. To select a module, you need to enter the module number, followed by # (hash). The hash is the terminator, and is always sent to terminate a string of DTMF instructions. You can key 0# to get help at any point, or *# to get the current status of the node. Before connecting out, I suggest that you experiment with the features on the node and check audio with the parrot module. There are many options for each module, so one you have selected a module (module number followed by hash) try requesting help (0#). <h1>Licence Details</h1> Here are the legalities of the node, if anyone is interested. <ul> <li> Callsign: M1GEO-L (<a href="http://www.echolink.org/links.jsp?d=2&gs=JO01cn&sel=gridsq">Show on EchoLink Site</a>)</li> <li> Node Number: 524497</li> <li> License NoV: <a href="http://www.dcc.rsgb.org/ShowGates.asp?call=M1GEO">DCC/ETCC: M1GEO Gateway Details</a></li> <li> Location: North East London, UK (<a href="http://www.echolink.org/googleMap.jsp?clat=51.551334381103516&clon=0.20366667211055756&s=M1GEO-L|51.551334381103516|0.20366667211055756">Show on Map</a>)</li> <li>* Latitude: 51°33.08' N</li> <li>* Longitude: 0°12.22' E</li> <li>* Locater Sq: <a href="http://f6fvy.free.fr/qthLocator/fullScreen.php?locator=JO01cn">JO01cn</a></li> <li> Frequency: 434.5250 MHz (Simplex)</li> <li> CTCSS: 77.0Hz</li> <li> RF Power: 7dBW (5 Watts)</li> <li> Antenna: Dual Band Co-linear, 3dBd gain on 70cms.</li> <li> Status: <a href="http://home.george-smart.co.uk:8080/cgi-bin/stats.cgi">Link Status Page</a></li> </ul> <h1>Log</h1> Below are the last 25 lines of the SvxLink Log. You can see the complete log <a href="http://home.george-smart.co.uk:8080/cgi-bin/stats.cgi">here</a>. <html> <center> <iframe src="http://home.george-smart.co.uk:8080/cgi-bin/stats.cgi?mode=mw" width="100%" height="500" frameborder="0"> <blockquote> <p>Your browser does not seem to support iframes.</p> </iframe></blockquote> </center> </html> Echolink http://new.george-smart.co.uk/echolink 1467 echolink draft 2011-01-13 07:54:33 0 closed page closed This page was moved here: <a href="http://new.george-smart.co.uk/echolink">EchoLink</a>. <a href="/contact-me">Please report this message to the webmaster</a>. EchoLink On The Raspberry Pi http://new.george-smart.co.uk/echolink_on_the_raspberry_pi echolink_on_the_raspberry_pi draft 4737 closed page closed 2013-09-10 15:32:00 0 This page details the hardware and the behind the scenes technical information of my <a href="http://new.george-smart.co.uk/echolink">EchoLink</a> node. If you're just interested in the user side of the node, then you need to be on <a href="http://new.george-smart.co.uk/echolink">this page</a>. Otherwise, read on. <h1>Motivation</h1> I had been running my Echolink node for some time on my <a href="http://new.george-smart.co.uk/server">Server</a>. Probably around 2 years now. I was using the <a href="http://www.echolink.org/">official Echolink software</a> under <a href="http://www.winehq.org/">wine</a> as the only officially supported computer platform is Windows. When I rebuilt the server I never re set up Echolink because I didn't like the wine idea as a permanent thing - it ate up RAM on my webserver - I think Echolink has some kind of memory leak? While looking at local nodes, I noticed that there was a station in Belgium running Echolink on a <a href="http://new.george-smart.co.uk/raspberry_pi">Raspberry Pi</a> and so I decided to have a look. This page details how I linked the RPi with my UHF <a href="http://new.george-smart.co.uk/tait_t800_series_ii_repeater">Tait T800 Series II Repeater</a>. I wanted to use a small computer to run the node. Having seen it done on a Raspberry Pi (and having one spare) I decided this would be my target platform. I have two Pi's now, so I would still have one for messing about with (see my other Pi projects). Reports on other sites (I know this has been done and documented before) seemed to suggest that the Pi was more than powerful enough for the task so the hardware was set. <h1>Licence Details</h1> Here are the legalities of the node, if anyone is interested. <ul> <li> Callsign: M1GEO-L (<a href="http://www.echolink.org/links.jsp?d=2&gs=JO01cn&sel=gridsq">Show on EchoLink Site</a>)</li> <li> Node Number: 524497</li> <li> License NoV: <a href="http://www.dcc.rsgb.org/ShowGates.asp?call=M1GEO">DCC/ETCC: M1GEO Gateway Details</a></li> <li> Location: North East London, UK (<a href="http://www.echolink.org/googleMap.jsp?clat=51.551334381103516&clon=0.20366667211055756&s=M1GEO-L|51.551334381103516|0.20366667211055756">Show on Map</a>)</li> <li>* Latitude: 51°33.08' N</li> <li>* Longitude: 0°12.22' E</li> <li>* Locator Sq: <a href="http://f6fvy.free.fr/qthLocator/fullScreen.php?locator=JO01cn">JO01cn</a></li> <li> Frequency: 434.5250 MHz (Simplex)</li> <li> CTCSS: 77.0Hz</li> <li> RF Power: 7dBW (5 Watts)</li> <li> Antenna: Dual Band Co-linear, 3dBd gain on 70cms.</li> <li> Status: <a href="http://www.george-smart.co.uk:8080/cgi-bin/stats.cgi">Link Status Page</a></li> </ul> <h1>Getting the Raspberry Pi Going</h1> I'm using a cheap SD card from Maplin Electronics, 4GB class 10. I also picked up a <a href="http://shop.pimoroni.com/">PiBow</a> case. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/EchoPi_boxes.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/EchoPi_boxes.jpg" width="400" alt="The Pi Box and Box!" class="aligncenter"></a> I have used the Pi many times before, but always like to start with a fresh install. I downloaded the latest version (2013-02-09-wheezy-raspbian.zip at time of writing) of the Rasbian Wheezy from <a href="http://www.raspberrypi.org/downloads">here</a> and flashed the SD card as described - here, I'm using the flakey looking ARM Installer for Fedora (under MintLinux): <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/EchoPi_FlashSD.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/EchoPi_FlashSD.png" width="400" alt="Flashing SD Card" class="aligncenter"></a> Next set the Pi up how you like it. I suggest setting up SSH access to it as a minimum. I intend for mine to be run headless (without graphics) to keep memory use down. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/EchoPi_FirstBoot.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/EchoPi_FirstBoot.jpg" width="400" alt="First boot" class="aligncenter"></a> Hopefully once you've got your Pi booting, you'll get the Raspi-config Menu on first boot. If not, you can always re-run <i>sudo raspi-config</i> from the commandline. Below is a list of modifications to the defaults that I made: <ul> <li> Firstly grow the filesystem to fill your SD card with <i>expand_rootfs</i>.</li> <li> Second set the password for the user <i>pi</i> with <i>change_pass</i>.</li> <li> Third check your locate and timezone.</li> <li> Forth set the <i>memory_split</i> to maximum for the CPU and minimum for the GPU. (16MB is the GPU minimum)</li> <li> Fifth adjust the overclocking parameters - I've gone for flat out as my Pi seems stable there. If yours isn't then go for less. Really this won't make much difference as you're unlikely to max the CPU out during normal operation of the node.</li> <li> Sixth thing is to enable ssh. This will let you connect into the node to make adjustments, etc.</li> <li> Seventh is to disable the desktop (X11) at boot - you don't need it.</li> <li> Reboot.</li> </ul> When the Pi starts, log in with the username <i>pi</i> and the password you set above. I suggest doing an <i>sudo apt-get update</i> to get the latest repository files. Then once that's downloaded, go ahead and do the necessary updates with <i>sudo apt-get upgrade</i>. This is the point to make a cup of tea! Mine took around 40 minutes to complete! At this point I also made a nice <a href="http://linux.die.net/man/5/issue.net">issue.net</a> splash for when I SSH in: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/EchoPi_FirstSSH.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/EchoPi_FirstSSH.jpg" width="400" alt="First SSH" class="aligncenter"></a> The last step before we're ready to start with Echolink is to update the Pi's firmware, etc. First of all, use the newly updated <i>apt-get</i> repositories to get some programs: <blockquote> sudo apt-get install git-core ca-certificates </blockquote> Next, use the following command to download the rpi-updater script: <blockquote> sudo wget http://goo.gl/1BOfJ -O /usr/bin/rpi-update </blockquote> Then you need to make it executable: <blockquote> sudo chmod +x /usr/bin/rpi-update </blockquote> Finally run it: <blockquote> sudo rpi-update </blockquote> After some time, and hopefully much happenings, you will be told to restart your Pi. Once it comes back up, you're done. From now on, I connect through SSH. <h1>Getting the SvxLink Source</h1> I have used <a href="http://sourceforge.net/projects/svxlink/">SvxLink</a> by SM0SVX which is a repeater controller and EchoLink server for Linux. I chose to compile from source as opposed to using the repositories because it turned out to be easier than trying to install the ubuntu arm binaries. Feel free to give them a try first. The process of compiling from source is documented <a href="http://sourceforge.net/apps/trac/svxlink/wiki/InstallationInstructions">here</a> but I have repeated the key points for completeness. Initially, we need to install the dependencies for building: <blockquote> sudo apt-get install subversion libsigc++-2.0-dev g++ make libsigc++-1.2-dev libgsm1-dev \ libpopt-dev tcl8.5-dev libgcrypt-dev libspeex-dev libasound2-dev alsa-utils </blockquote> Next we move to our home directory from wherever you may have ended up: <blockquote> cd </blockquote> Here we <a href="http://sourceforge.net/projects/svxlink/files/svxlink/">download the SvxLink source code from sourceforge</a>. At the time of writing, I downloaded <i>svxlink-13.03.tar.gz</i>. Now extract it: <blockquote> tar xvf svxlink-13.03.tar.gz </blockquote> Finally, newer versions of SvxLink (such as 13.03) have the ability to use 16 kHz samples voices (instead of the typical 8 kHz ones). The above file defaults to 8 kHz, but if you want 16 kHz, then edit <i>makefile.cfg</i>, specifically, <i>CXXFLAGS += -DINTERNAL_SAMPLE_RATE=8000</i> to reflect your requirement of 16000. I proceed with the default of 8000. You're ready to compile! <h1>Compiling SvxLink</h1> Step back and take a deep breath. Start the compile by running <blockquote> make </blockquote> I timed mine using <i>time make</i> which does the make but keeps track of the time and resources it uses to do it. This is just for the humour value! Mine took a real time of 29m21.640s! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/EchoPi_CompileSvxLink.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/EchoPi_CompileSvxLink.png" width="400" alt="Compiling" class="aligncenter"></a> Hopefully it builds correctly. If it doesn't check thought the <i>make</i> output and see if you can diagnose the fault. Something I didn't realise first time around is that the installer script likes to own files to <i>svxlink</i> user, so make sure you add the user to the system before installing! <blockquote> sudo adduser svxlink </blockquote> Assuming it's gone okay, then you can install the SvxLink files. <blockquote> sudo make install </blockquote> This puts the binaries, libraries, includes, and other files where they belong. <h1>Voices and Sounds</h1> The sounds packages come separate to the program files. They need to be downloaded sourceforge too, and can be found <a href="http://sourceforge.net/projects/svxlink/files/sounds/">here</a>. Go into the 13.03 program and get <i>sounds-en_US-heather-13.03.tar.bz2</i>. For anyone interested, I have also made British English voices which can be found here: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/sounds-en_GB-rachel-13.03.tar.bz2">sounds-en_GB-rachel-13.03.tar.bz2</a>. They are made in exactly the same way as the the en_US voices but sound much nicer to British people! My timing isn't quite as slick and I've only done the <i>Core</i>, <i>Default</i>, <i>EchoLink</i>, <i>Parrot</i> and <i>PropagationMonitor</i> modules. If you want any of the other modules then you are advised to do these on your own - if you do, I'd be happy to receive and host the extended versions. <h1>Hardware</h1> Once you're happy that everything is going as planned, you need to wire everything up. I mounted the Raspberry Pi inside the Tait repeater frame: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/EchoPi_PiinTait.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/EchoPi_PiinTait.jpg" width="400" alt="RPi inside T800" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/EchoPi_PiinTait2.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/EchoPi_PiinTait2.jpg" width="400" alt="RPi inside T800" class="aligncenter"></a> I also used a car mobile phone micro-USB charger (5 V at 850 mA) to power the RPi from the repeater's 13.8 V supply. This worked very well. Previous attempts have resulted in very hot linear regulators, and I feel switch-mode was the correct choice. These can be picked up very cheaply in discount stores. I had originally planned to use a cheap USB sound card to connect from the Pi to the T800 repeater. However, during the testing, I had lots of problems with the cheap soundcards freezing as soon as I put audio through them. In the end I used a USB SoundBlaster device which worked instantly and flawlessly. The deviation is a little low, but this is easiluy fixed with a small transistor amplifier (I did try using the <i>softvol</i> module in ALSA to device a <i>dmix</i> and thus a software preamp, but the output was always distorted with almost any real gain). No interface was required as this is easily handled by the breakout plate on the back of the repeater. All the audio IO connections are transformer isolated in the repeater, so it was a simple task of cabling up. A PL2303HX based USB-TTL-RS232 cable was used to provide PTT and SQL interfaces for transmitter control and squelch input. I used RTS (request to send) for the transmitter key (PTT) and CTS (clear to send) for the squelch input. These connections were opto-isolated in both directions with a simple NPN transistor opto-isolator. This was probably not necessary in this case, as all the devices are on the same power supply - but it certainly can't hurt. <b>EDIT: Newer versions of SvxLink support TX via GPIO for the Raspberry Pi. More on this to come.</b> Both the sound card and serial interface can be seen here: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/EchoPi_TerminalIO.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/EchoPi_TerminalIO.png" width="400" alt="Sound and Serial in PuTTY" class="aligncenter"></a> Once all the hardware was assembled, I run the system overnight into a dummy load were I could keep eyes on it. All worked fine. I used it via my handheld at regular intervals and it all seemed fine. I then turned it all off and did some final assembly - tidying wires etc. The very last thing I wanted to do was to make sure that SvxLink started when the Pi was powered. I first make a simple script to set the audio mixer levels for TX and RX and started SvxLink: <blockquote> #!/bin/bash echo -n "Setting TX Gain: " amixer -q set PCM 0dB && echo "OK"</td><td>echo "Fail" echo -n "Setting RX Gain: " amixer -q set Mic 9dB && echo "OK"</td><td>echo "Fail" echo "Starting SvxLink Repeater Controller at `date`" svxlink echo "Finsihed SvxLink at `date`" exit 0 </blockquote> You will need to use <i>alsamixer</i> to set your levels correctly. Once you have set the mixer levels you need to store them with: <blockquote> save mixer levels command here </blockquote> I then followed the instructions carefully <a href="http://www.haminfo.org/doku.php?id=how_do_i_make_svxlink_start_on_boot">How do I automatically start SVXLINK on boot</a>. I had to patch the installed files and scripts for Ubuntu (the original files are written for Fedora). I downloaded the modified scripts from <a href="http://old.nabble.com/attachment/23372652/0/ubuntu-distfiles.tar.gz">here</a> and they're locally hosted <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/SvxLink-Ubuntu-Distfiles.tar.gz">ubuntu-distfiles.tar.gz</a>. = Status Page = As I wanted to be able to quickly see what was going on, I decided to make a crude status page. I installed Apache web server on the Pi (as it's the only http server I know how to use) and set about making an ugly Perl script. <blockquote> sudo apt-get install apache2 libapache2-mod-perl2 </blockquote> Next edit the default site in Apache to set the ServerName and ServerAdmin details: <blockquote> sudo nano /etc/apache2/sites-enabled/000-default </blockquote> <h1>SD Card Preservation</h1> Once you get the system working, it is advisable to create a backup of the card. There are many ways to do this. I just used a simple <i>dd</i> command to dump the SD card to a raw image file. I found that after a year of continuous use, my 4 GB class 4 SD card became corrupted. I had initially suspected that the card was fried, but using <a href="http://oss.digirati.com.br/f3/">f3</a> (a Linux alternative to <a href="http://sosfakeflash.wordpress.com/2008/09/02/h2testw-14-gold-standard-in-detecting-usb-counterfeit-drives/">h2testw</a>) to check the card, it was reported fine. I was able to restore the node easily and in minutes with the DD image of the card. It is also common knowledge that you should have an SD card a few times bigger than you need to allow the <a href="http://en.wikipedia.org/wiki/Wear_leveling">wear leveling</a> space to work. To aid this, I turned swap off on the Raspberry Pi: <blockquote> sudo swapoff -a sudo update-rc.d -f dphys-swapfile remove sudo rm /var/swap </blockquote> I also turned down the verbosity of the Apache web server and make SvxLink log into a RAM based filesystem, using tmpfs. On the Pi, <i>/run/shm</i> is mounted in RAM and has a default size of 47 MB (on my Pi. 256MB model B). You could also consider running the Pi with the SD card in "read only" mode. Search the Pi forums for "read only" for more. Finally, always be sure to power the Raspberry Pi down correctly - do not just pull the power - this causes file system errors. EDI-to-ADIF http://new.george-smart.co.uk/edi_to_adif 3484 edi_to_adif draft 0 2012-05-21 18:40:02 closed closed page This perl script was created to convert the EDI data from the RSGB contest page into ADIF format for use with programs such as <a href="http://www.cloudlog.co.uk/">Cloudlog</a>. I wanted to be able to publish these results on my <a href="http://www.george-smart.co.uk/Cloudlog">personal Cloudlog logbook</a> as well as the club's logbook. Eventually, this site will offer the ability to upload an EDI file and download an ADIF ADI file. For now, just the Perl script is offered. I make no claims as to the standards it breaks/follows, but it works nicely with the RSGB data and into ADIF for Cloudlog. <b><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/EDI2ADIF_Perl_Script.tar.gz">Download the Script in gzipped tar archive</a></b>. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/EDI2ADIF_Perl_Script_Terminal.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/EDI2ADIF_Perl_Script_Terminal.png" width="500" alt="Script Running" class="aligncenter"></a> Eduroam http://new.george-smart.co.uk/eduroam page closed closed 2012-09-14 11:42:41 0 draft eduroam 3597 For information on the UCL's Roamnet service, visit my <a href="http://new.george-smart.co.uk/roamnet">Roamnet</a> page. <h2>JRS Eduroam</h2> <center><b><i>Article date: 23/06/2009</b></i></center> This approach is much simpler than the <a href="http://new.george-smart.co.uk/roamnet">Roamnet</a> approach. To start, you you need to click on the network manager, and select the "eduroam" wireless network. This will initiate the setup. Fill in the box with the information provided below: <ul> <li> Wireless Security: WPA & WPA2 Enterprise</li> <li> Authentication: Tunnelled TLS</li> <li> Anonymous: anonymous@ucl.ac.uk</li> <li> CA Certificate: For this step, open the finder, and browse to /etc/ssl/certs/</li> : You need to select AddTrust_External_Root.pem (formerly GTE_CyberTrust_Global_Root.pem)</ul> : It's full path is: /etc/ssl/certs/AddTrust_External_Root.pem (formerly /etc/ssl/certs/GTE_CyberTrust_Global_Root.pem) <ul> <li> Inner Identification: MSCHAPv2</li> <li> Username: your_id@ucl.ac.uk</li> <li> Password: your_password</li> </ul> Your dialog box will look similar (though not identical) to this: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/09/Eduroam_settings.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/09/Eduroam_settings.png" alt="Suggested Settings" class="aligncenter"></a> For now, there is a detailed description of setting up <a href="http://new.george-smart.co.uk/roamnet">Roamnet</a>, located <a href="http://new.george-smart.co.uk/roamnet">here</a>. <b>FIXME_Category :Computers</b> <b>FIXME_Category :Academic</b> Electrically Small Antenna ERP http://new.george-smart.co.uk/electrically_small_antenna_erp 0 2013-03-21 23:53:11 page closed closed 4210 draft electrically_small_antenna_erp This page will (eventually) home a calculator for ERP, useful to those experimenting with 136 kHz, 472 kHz and 501 kHz amateur bands. <b>The calculator can now be found here: <a href="http://www.george-smart.co.uk/cgi-bin/lfmf_erp.cgi">Electrically Short Antenna ERP Calculator</a>.</b> The term <i>electrically small</i> is used to describe an antenna whose largest dimension, when measured from the input terminals, does not exceed one-eighth of the wavelength. <ref name="lfant">Martin C, Carter P, <a href="http://www.500kc.com/downloads/Martin-Carter%20(RCA)%20LF%20Antennas.pdf">Low Frequency Antennas</a>, RCA Laboratories</ref> "The most important factors affecting the antenna efficiency are the wire resistance, the insulator equivalent loss resistance and the ground plane equivalent loss resistance. These factors are responsible of the antenna efficiency, because they dissipate part of the antenna input power and, for this reason, the antenna gain can be much smaller than the antenna directivity." <ref name="antperf">Trainotti V, Dorado L, <a href="http://materias.fi.uba.ar/6654/download/LFMFAntenna.pdf">Short Low and Medium Frequency Antenna Performance</a>, Antennas and Propagation Magazine, IEEE (2005)</ref> As I write this page, I regularly come across mention of the mathematics for VLF, LF and MF antenna design being un-coordinated and incomplete. This certainly seemed to be reflected in my research too! Many of the texts I read state sentences such as "Because of the general complexity of low-frequency antennas these effects cannot be rigorously calculated and it is necessary to determine them by approximation or experimentation." <ref name="lfant" /> Look here <ref name="antperf" /> and here <ref><a href="http://www.q-track.com/Files/files/Electrically%20Small%20Antenna%20Design-final.pdf">Electrically Small Antenna Design for Low Frequency Systems</a> REFERENCE ME PROPERLY!</ref> <h1>Things To Note</h1> Just a few key points to note: <ul> <li> The quality of an electrically small antenna, with regard to efficiency, power capability and bandwidth, increases with the antenna height.</li> <li> Top loading a vertical (umbrella, Marconi tee, inverted-L) increases the bandwidth by decreasing the reactance and the derivative of reactance with respect to frequency.</li> <li> Umbrella loading has the effect of reducing the feed voltage to the vertical and hence reduces power loss due to the base insulator.</li> <li> Model electrically small antennas using electrostatics and not electromagnetics.</li> <li> The effective height (h_e) of a electrically small antenna is <i>approximately</i> half it's actual height.</li> </ul> <h1>Maths & Formula</h1> <center>E_{ant} = \frac{R_{ar}}{R_{ar}+R_{al}+R_{t}}</center> where <ul> <li> R_{ar} is the radiation resistance</li> <li> R_{al} is the loss resistance</li> <li> R_{at} is the resistance of the tuning element</li> </ul> Input <a href="http://en.wikipedia.org/wiki/Electrical_reactance">reactance</a>, X_a, assuming the antenna is capacitive (i.e. electrically short, length shorter than quarter wavelength) is <center>X_a = - Z_0 \cot\frac{2 \pi l}{&lambda;} Ohms</center> where <ul> <li> Z_0 is the <a href="http://en.wikipedia.org/wiki/Characteristic_impedance">characteristic impedance</a></li> <li> l is length of an equivalent uniform transmission line</li> <li> &lambda; is wavelength</li> </ul> If, in the special case, the radiator is a vertical cylinder, then l is equal to h, the height of the cylinder. The <a href="http://en.wikipedia.org/wiki/Characteristic_impedance">characteristic impedance</a>, Z_0, is calculated by one of the following formulas: <table cellpadding="20" style="width: 50px; height: 50px; margin: 0 auto;" > <tr><td>Theoretical </td><td>Experimental</td></tr><tr><td>Z_0 = 60 \left [ \ln \left ( \frac{2h}{a} \right ) - 1\right] Ohms </td><td>Z_0 = 60 \left [ \ln \left ( \frac{h}{a} \right ) - 1\right] Ohms</tr> </table> Antenna input resistance, R_{ar}, is <center>R_{ar} = 160 \pi^2 \left ( \frac{h_e}{&lambda;} \right )^2</center> <h1>References</h1> <references/> <b>FIXME_Category :ToDo</b> Electronics http://new.george-smart.co.uk/electronics 1693 draft electronics 2011-02-25 21:13:31 0 closed page closed #REDIRECT <b>FIXME_Category :Electronics</b> Email http://new.george-smart.co.uk/email page closed closed 2015-12-30 01:48:58 0 draft email 5415 Recently, I have been getting very high volumes of spam. As a good way to combat this, I've decided to guard my contact details behind a <i>capcha</i>. I'm sorry; no body likes these things, least of all me, but they really do work! <a href="http://www.google.com/recaptcha">On the plus side, you're helping to digitise books!</a> If the capcha isn't visible, please <a href="http://www.george-smart.co.uk/cgi-bin/email.cgi">follow this link</a>. There are other ways to <a href="http://new.george-smart.co.uk/contact_me">Contact me</a> too. I have also tweaked settings to reject sending servers on common block lists (zen.spamhaus, bl.spamcop, clb.abuseat). If this causes you a problem, have a look at other ways to <a href="http://new.george-smart.co.uk/contact_me">Contact me</a>. <h1>Foreign Languages</h1> If you're not a native English speaker and are using a translating service to translate to English, please include a copy of the original (in your native language). This may also help if you're not sure of technical words in English. I may be able to get it translated at work (or by friends) which greatly aids with technical questions! <html> <span class="plainlinks"> <iframe src="/cgi-bin/email.cgi" width="100%" height="250px" frameborder="0"> <blockquote> <p>Your browser does not seem to support iframes. Go to www.george-smart.co.uk/cgi-bin/email.cgi and fill out the capcha. Sorry.</p> </iframe></blockquote> </span> </html> Epson Perfection 2480 Linux http://new.george-smart.co.uk/epson_perfection_2480_linux epson_perfection_2480_linux draft 3920 closed closed page 0 2013-01-28 13:13:25 This page was originally created to save me having to hunt down the drivers for my Epson Perfection 2480 Photo. Every time I upgrade distro I loose my scanner driver and firmware. So this time, I decided to create this page to keep everything I needed in one place. I make it public in the hope that it will help someone else. <h1>Install Software</h1> First of all, you need to install software. I use the <i>sane</i> scanner software, with graphical environment provided by <i>xsane</i>. We also need <i>snapscan</i>, which is provided by the <i>libsane-extras</i> package in Ubuntu. <blockquote> sudo apt-get install xsane sane libsane-extras </blockquote> <h1>Connecting the Scanner</h1> This is pretty straight forward. USB from the PC to the computer. You can check that the scanner is found by using the <i>lsusb</i> command, as such: <blockquote> george:~$ lsusb | grep -i Epson Bus 003 Device 018: ID 04b8:0121 Seiko Epson Corp. Perfection 2480 Photo </blockquote> This means that the computer can see the printer. If you don't see this, check that your scanner is correctly connected, etc. <h1>Firmware Installation</h1> For the Epson Perfection 2480 Photo, the required firmware is <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/esfw41.bin">esfw41.bin</a>. You can <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/esfw41.bin">download it by clicking here</a>. Save this somewhere you can find it; your home directory or the system temporary folder, /tmp. Just as long as you can find it. Also be careful because although the guide refers to the file all in lower case, MediaWiki (this site's CMS) has a tendency to capitalise the first letter. From there, you can copy the firmware into the systems firmware folder, typically <i>/lib/firmware</i>, but do check. You will also need fxload to upload the firmware, but this is almost always installed already. Change into the directory where you saved your stuff, I use <i>/tmp</i>, and copy the firmware to the firmware directory: <blockquote> george:/tmp$ sudo cp -v Esfw41.bin /lib/firmware/esfw41.bin `Esfw41.bin' -> `/lib/firmware/esfw41.bin' </blockquote> Once you have put the firmware in the firmware folder, you then need to go and tell snapscan (provided by <i>libsane-extras</i>) where to find the firmware for our scanner. Snapscan's configuration file is, by default, <i>/etc/sane.d/snapscan.conf</i>. <i>nano</i> the file: <blockquote> george:~$ sudo nano /etc/sane.d/snapscan.conf </blockquote> Hunt through (or search with CTRL+W) for firmware line, and then change it to reflect the path of our firmware. <blockquote> firmware /lib/firmware/esfw41.bin </blockquote> Save the file (CTRL+X; 'Y' to accept changes). <h1>Test It</h1> Unplug the scanner from the computer's USB socket. Then power cycle the scanner (unplug, wait, then plug back in to the mains). Then reconnect the USB. This ensures that there is no firmware in the scanner, and that the computer will find it in a fresh state when you reconnect it. Once you've done this, then fire up XSane: <blockquote> Applications > Graphics > XSane Image scanning program </blockquote> In the preview window, press the <i>Acquire Preview</i> button and the scanner should whirr into action. The first image I scanned, below, is from the book "Radio Wave Propagation and Antennas: An Introduction" by John Griffiths, page 126. It was the first image I scanned in after writing this page. The image is a PNG image at 300dpi in black and white. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/Cornu_Spiral.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/Cornu_Spiral.png" width="300" alt="Cornu Spiral : test scan image" class="aligncenter"></a> <h1>OCR</h1> If you are looking for OCR software for linux, then have a look at this page: http://www.splitbrain.org/blog/2010-06/15-linux_ocr_software_comparison as it contains some tests and comparisons between different software types. I chose <a href="http://code.google.com/p/tesseract-ocr/">tesseract</a> based on the test results and the comments on the page. You can install it from the repositories: <blockquote> sudo apt-get install tesseract-ocr </blockquote> Then to use the tesseract, you need to have a tif image. I used <i>ImageMagick's convert</i> with the command: <blockquote> convert Cornu_Spiral.png -depth 8 -alpha off out.tif </blockquote> Then calling tesseract with the command: <blockquote> tesseract out.tif test </blockquote> The following is the output from <i>tesseract</i> of the above test image: <blockquote> george:~$ cat test.txt 126 Space Wave Propagation in the Troposphere Chapter 4 0.7 1.5 2.5 0.6 0-5 Q 3.0 v = 1.0 0.4 0.3 2.0 0.2 0.1 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 _ 05 rv 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 - ()_5 0.1 0.2 - 2.0 0-3 U = -1.0 0-4 ° ’ 0.5 — 3.0Z 0.6 - 2.5 0.7 — 1.5 Fig. 4.20 Cornu’s spiral for diffraction over a knife-edge obstacle. It is a plot of the ‘ Fresnel’s integrals in terms of the auxiliary parameter v. integrals over the appropriate limits of v, namely V I) X =j` cos<Ev2)dv 0 2 I} Y = sin E v2 dv 0 2 The F resnel integrals so formed are available in tabular form for given (positive or negative) values of auxiliary parameter v. Figure 4.20 is constructed from such a table. If there is no obstacle between the transmitter and receiver, the appropriate limits of v are plus and minus infinity. These are the points marked Z and Z' at coordinates (0.5, 0.5) and ( — 0.5, — 0.5). The total field due to the integration between Z' and Z is the vector Z’Z, and this must of course represent the free-space field strength at the receiver. 0 Note that the length of the vector is 1.414 units and this permits us to scale the diagram by saying that 1 Cornu’s spiral unit of length corresponds to 0.707 times the magnitude of the free space field at the receiver. </blockquote> It is important to note that the formulae and graphs are ignored, as you would expect. I was impressed. <h1>Sources</h1> <ul> <li> <a href="1]">UbuntuForums - Thread: [ubuntu</a> [SOLVED] How do I set up an Epson 2480 scanner, by <i>bwallum</i></li> :http://ubuntuforums.org/showpost.php?p=6129945&postcount=2</ul> <ul> <li> [2] Linux OCR Software Comparison, by <i>splitbrain</i></li> :http://www.splitbrain.org/blog/2010-06/15-linux_ocr_software_comparison</ul> <ul> <li> [3] Optical Character Recognition With Tesseract OCR On Ubuntu 7.04, <i>HowToForge</i></li> :http://www.howtoforge.com/ocr_with_tesseract_on_ubuntu704</ul> <b>FIXME_Category :Computers</b> <b>FIXME_Category :Howto</b> <b>FIXME_Category :Linux</b> FCD http://new.george-smart.co.uk/fcd 0 2011-10-16 22:57:29 page closed closed 2729 draft fcd This page was moved here: <a href="http://new.george-smart.co.uk/funcube">FunCube</a>. <a href="/contact-me">Please report this message to the webmaster</a>. FFMPEG http://new.george-smart.co.uk/ffmpeg 1745 draft ffmpeg 0 2011-02-25 23:04:31 page closed closed This page will have FFMPEG code I worked on for my masters <a href="http://new.george-smart.co.uk/4thyrproject">UNV Project</a> in my 4th year at <a href="http://new.george-smart.co.uk/university">UCL</a>. Please visit my <a href="http://new.george-smart.co.uk/4th_year_project">4th Year Project</a> until this page is updated. <b>FIXME_Category :Computers</b> <b>FIXME_Category :Programming</b> Field Day List http://new.george-smart.co.uk/field_day_list closed page closed 2014-08-24 20:01:45 0 draft field_day_list 5050 This is a working list for our field day setups. <ul> <li> Generator (and fuel and engine oil)</li> <li> Tea facilities: hob, kettle, teabags, coffee, sugar, cups, tea towel, washing up</li> <li> Soft drinks, squash</li> <li> Beers</li> <li> Water</li> <li> Food</li> <li> 2 metre/70 centimetre collinear</li> <li> 4 metre antenna</li> <li> Push-up pole</li> <li> Wheel stand</li> <li> Radio(s)</li> <li> IC7000</li> <li> IC7400</li> <li> IC7700</li> <li> Power supply</li> <li> Adapters</li> <li> Coaxes</li> <li> ATU</li> <li> Logging laptop</li> <li> Antenna analyser</li> <li> Soldering iron (and solder)</li> <li> Fridge</li> <li> Battery</li> <li> Sleeping bags, duvet, pillows airbeds</li> <li> Mast</li> <li> Tent</li> <li> Beam Antenna (boom, elements, cables/balun)</li> <li> Carpet for car</li> <li> Seats/tables</li> <li> Rotator</li> <li> Tools</li> <li> Compressor</li> <li> Stub mast</li> <li> Extension Lead</li> Fldigi http://new.george-smart.co.uk/fldigi 5295 fldigi draft 2015-06-21 22:27:15 0 closed closed page Fldigi is a Digital modem program for Linux, Free-BSD, OS X, and Windows (XP, NT, W2K, Vista and Win7). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/06/Fldigi_Running20m.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/06/Fldigi_Running20m.png" width="600" alt="Fldigi Receiving on 20m" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/Fldigi_Macros.zip">My Fldigi Macros (ZIP)</a> <h1>Icom IC-7100</h1> As I could never remember the exact settings for my Icom IC7100 with Fldigi, I have decided to add them here. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/06/Fldigi_7100.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/06/Fldigi_7100.png" width="600" alt="Fldigi IC7100" class="aligncenter"></a> I also use the following hack to get hamlib to talk to the IC7100. Using this trick, hamlib talks to the IC7100 as if it's a IC7000, which seems to work well enough to set/get modes, frequencies, power, meter readings, and PTT. <blockquote> sudo grig -m 360 -r /dev/ttyUSB0 -s 19200 -c 0x88 -p -P </blockquote> <b>FIXME_Category :ToDo</b> FoxTrak Updated Firmware http://new.george-smart.co.uk/foxtrak_updated_firmware 5008 draft foxtrak_updated_firmware 2014-07-11 19:08:40 0 closed page closed For a long time now, I have been using a <a href="http://www.foxdelta.com/">FoxDelta</a> <a href="http://www.foxdelta.com/products/foxtrak.htm">FoxTrak</a> for <a href="http://new.george-smart.co.uk/aprs">APRS</a> in my car as M1GEO-7. Recently I had some problems with the GPS and tracker, and while trawling around looking for a fix, I found an improved firmware for the tracker. The FoxTrak ships with the <a href="http://www.dk7in.de/TinyTrak_e.html">Rolf Bleher (DK7IN) Firmware</a>, which works great. However, several newer features are offered by the <a href="http://sharon.esrac.ele.tue.nl/~pe1icq/projects/aprstracker.shtml.en">aprstracker project (PE1RXQ/PE1ICQ)</a>. At the time of writing, this was version 0.11, and offered the following features: <ul> <li> Understands GPGGA (Location/Altitude) and GPVTG (Course) sentences</li> <li> Smartbeaconing (based on Xastir)</li> <li> Autodetects serial polarity (RS232 or TTL)</li> <li> Supports 4800 (but claims 9600 Baud - actually requires <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/aprstracker-0.12.tar.gz">aprstracker-0.12</a> for 9600 - see updates below)</li> <li> Configurable via a serial null-modem cable</li> <li> Included is a config program for Linux & bootable disk for others (<a href="http://sharon.esrac.ele.tue.nl/users/pe1rxq/aprstracker/aprstracker.html">see site</a>)</li> <li> Reports course and speed and altitude</li> <li> Works with PIC16F84, PIC16F627, PIC16F628 and PIC16F648 controllers.</li> <li> Sourcecode released under GNU GPL</li> </ul> Version 0.11 which I intended to use works only with PIC16F628 or PIC16F648 controllers. I settled for a PIC16F648A as that offered the most features for what I had. I programmed the chip and replaced the original DK7IN firmware 1.6 with aprstracker firmware 0.11. I powered the device up and noticed that the GPS light is illuminated always. The DCD light flickers with receive activity. I decided to try and get the new tracker firmware to talk with the (new) programming software. There are two version available. I compiled the one included with the PIC firmware and used that. If you use the floppy disk, then you're on your own, though I expect it to be the same. The <i>atprogrammenu</i> came compiled, but is also easily made with <blockquote> gcc atprogrammenu.c -o atprogrammenu </blockquote> Which results in a new binary file, <i>atprogrammenu</i>. Connecting the tracker via null modem cable (swaps TX and RX) to a serial port on the computer, I fired up atprogrammenu. <blockquote> sudo ./atprogrammenu /dev/ttyS5 </blockquote> The console program loads. I pressed enter and my hardware was found. There is <a href="http://sharon.esrac.ele.tue.nl/~pe1icq/projects/aprstracker/aprstracker-0.11-doc-en.pdf">a manual for aprstracker-11 in English</a> which explains what's going on. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/APRSTRACKER_atprogrammenu.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/APRSTRACKER_atprogrammenu.png" width="600" class="aligncenter"></a> I made a few adjustments, such as my callsign, enabling altitude, changing to the New-N paradigm and adjusting the beacontext. I am using a Garmin GPS, and so using command <i>N</i> sets the GPS Config String [C] automatically. The differences are visible below. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/APRSTRACKER_atprogrammenu_m1geo.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/APRSTRACKER_atprogrammenu_m1geo.png" width="600" class="aligncenter"></a> <i>Update, 12, June 2013:</i> After changing radio from a <b>FIXME: Kenwood PMRs|Kenwood TK-762G(N)E </b> to an old Tait T500, I noticed that a lot of the packets were being lost. Upon investigation, it turned out to be that the TX Delay [4] was too small, i.e. the transmitter didn't have time to fully stabilise before the tracker sent data. I also turned off proportional pathing, because I found that in central London, it often takes a few relays to get out to an IGate, so many frames were simply lost. <i>Update, 15, September 2013:</i> Helping a friend get into APRS, I noticed that version 0.11's claim of 9600 baud GPS support wasn't true. Having spoken with Arno, PE1ICQ, I was sent a copy of the aprstracker-0.12. This code isn't actually ready for general release since it contains bugs with the altitude calculation; however, it does support 9600 baud NEMA GPS receivers. This code is open source, and available here: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/aprstracker-0.12.tar.gz">aprstracker-0.12.tar.gz</a>. This code is entirely the work of PE1ICQ and PE1RXQ; I am just hosting this half-baked version since I get asked for it regularly. The code is released under GNU GPL v2, so I figured I am safe. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/APRSTRACKER_atprogrammenu_m1geo_updated.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/APRSTRACKER_atprogrammenu_m1geo_updated.png" width="600" class="aligncenter"></a> FPGA http://new.george-smart.co.uk/fpga 2323 draft fpga 0 2011-08-05 01:04:13 closed page closed This page will be populated with some of my FPGA projects and work, as I get around to them. For now, there are a few pages that my interest you: <ul> <li> <a href="http://new.george-smart.co.uk/spartan_3e">Spartan-3E</a> - A little about my Spartan dev board from Digilent.</li> <li> <a href="http://new.george-smart.co.uk/xilinx_jtag_linux">Xilinx JTAG Linux</a> - Using programming cables with Xilinx under Ubuntu (JTAG/Cable Drivers, etc).</li> </ul> <h1>Projects & Examples</h1> All of these projects include the Verilog HDL code and have been tested on a <a href="http://new.george-smart.co.uk/spartan_3e">Spartan-3E</a> development board with an Xilinx XC3S500E FPGA. There is a video clip of each of the projects working. <ul> <li> <a href="http://new.george-smart.co.uk/fpga_simple_xor_tutorial">FPGA Simple XOR Tutorial</a> guides you through making a simple XOR gate project in Xilinx ISE 12.1, from opening the ISE to testing on hardware.</li> <li> <a href="http://new.george-smart.co.uk/fpga_pong_game">FPGA Pong Game</a> outputs a colour pong game to VGA monitor, using the rotary encoder of the <a href="http://new.george-smart.co.uk/spartan_3e">Spartan-3E</a> for paddle movement.</li> <li> <a href="http://new.george-smart.co.uk/fpga_ps2_mouse">FPGA PS2 Mouse</a> initialises the PS/2 mouse into streaming mode, and then parses the bitstream for X-Y movement and button presses.</li> </ul> <b>FIXME_Category :Academic</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :FPGA</b> FPGA Pong Game http://new.george-smart.co.uk/fpga_pong_game 2011-08-05 00:52:57 0 page closed closed 2317 draft fpga_pong_game This was my first proper project on the FPGA. This was after about 2 days of reading through manuals and datasheets and getting to grips with Verilog HDL. I chose Verilog as it was taught (crudely) as part of my undergraduate degree at <a href="http://new.george-smart.co.uk/university">University</a>. It took me a while to get to grips with actually using it, and this is project is where that first happened. The Pong game is closely based on that of <a href="http://www.fpga4fun.com/PongGame.html">FPGA4Fun's Pong Game</a>. I started off with their program and added some features. People say that you don't learn from copying, but I don't believe that to be true. I am very grateful for this code, and learned a lot porting it to my device, messing about with the code, and adding a few basic features: <ul> <li> Monochrome or Colour</li> <li> Fast or Normal Speed</li> <li> Auto Play</li> <li> Pause Game</li> </ul> None of these are particularly enhancing features, The monochrome was a backward step as the FPGA4Fun code produces colour output - It just felt like it needed to have a monochrome option to remind me of my childhood. <b><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/GS_VGA_PongGame.tar.bz2">Download Source Code (Verilog HDL) and Xilinx ISE 12.1 Project</a></b> <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/08/FPGA_Pong_1.JPG"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/08/FPGA_Pong_1.JPG" width="200" class="aligncenter"></a></tr> </table> Click an image to enlarge </center> <center><a href="http://www.youtube.com/watch?v=Ene1Kf-hrQg">Youtube Link</a></center> <html> <center> <iframe width="425" height="349" src="http://www.youtube.com/embed/Ene1Kf-hrQg?hl=en&fs=1" frameborder="0" allowfullscreen></iframe> </center> </html> <b>FIXME_Category :Academic</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :FPGA</b> FPGA PS2 Mouse http://new.george-smart.co.uk/fpga_ps2_mouse draft fpga_ps2_mouse 2326 page closed closed 2011-08-05 01:19:48 0 This project is based on code from <a href="http://opencores.org/">OpenCores.org</a>. Specifically John Clayton's <a href="http://opencores.org/project,ps2">PS/2 Interface</a> on OpenCores.org. My program simply wraps John's into a module, and instantiates it for use. It is intended as a starting point for a project involving a PS/2 mouse. This project also used a lot of information from <a href="http://www.amazon.com/dp/0470185325">FPGA Prototyping By Verilog Examples: Xilinx Spartan-3 Version</a> by <a href="http://www.amazon.com/Pong-P.-Chu/e/B001ITRMEY/">Pong P. Chu</a> - A book thoroughly worth owning! The PS/2 specifications can be found below: <ul> <li> <a href="http://www.computer-engineering.org/ps2protocol/">PS/2 Protocol</a></li> <li> <a href="http://www.computer-engineering.org/ps2mouse/">PS/2 Mouse</a> (as opposed to the <a href="http://www.computer-engineering.org/ps2keyboard/">PS/2 Keyboard</a>).</li> </ul> <b><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/FPGA_PS2_Mouse.tar.bz2">Download Source Code (Verilog HDL) and Xilinx ISE 12.1 Project</a></b> <center><a href="http://www.youtube.com/watch?v=2X7X3T590Cc">Youtube Link</a></center> <html> <center> <iframe width="425" height="349" src="http://www.youtube.com/embed/2X7X3T590Cc?hl=en&fs=1" frameborder="0" allowfullscreen></iframe> </center> </html> <b>FIXME_Category :Academic</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :FPGA</b> FPGA Simple XOR Tutorial http://new.george-smart.co.uk/fpga_simple_xor_tutorial closed page closed 0 2012-04-19 00:55:33 fpga_simple_xor_tutorial draft 3289 When I was starting out, I really wanted something like this. Then <a href="http://www.burched.com/">Anthony Burch</a> started his excellent videos on the basics of FPGA design and that got me going. When trying to go over one of his videos, I noticed that so much had chanced, and since I'd forgotten so much, I decided that once I'd figured it out, I'd add a simple XOR project in Verilog. The project starts from me opening the Xilinx ISE 12.1, and finishes with me testing it on the <a href="http://new.george-smart.co.uk/spartan_3e">Spartan-3E</a> board (it works, of course!). I just thought I may help some of you. It's in HD, so switch youtube to 1080p so you can read the text. I apologise for my voice (I'm not a natural speaker) and for the fact that I was kind of making it up as I went along. But I'm sure it may help. <table class="wikitable" style="margin: 1em auto 1em auto;" > <tr><td><center><a href="http://www.youtube.com/watch?v=hnABFnXxhJA">Part 1/2 Youtube Link</a></center> <html> <center> <iframe width="300" height="249" src="http://www.youtube.com/embed/hnABFnXxhJA?hl=en&fs=1" frameborder="0" allowfullscreen></iframe> </center> </html> </td><td><center><a href="http://www.youtube.com/watch?v=yJA1wCCq5tg">Part 2/2 Youtube Link</a></center> <html> <center> <iframe width="300" height="249" src="http://www.youtube.com/embed/yJA1wCCq5tg?hl=en&fs=1" frameborder="0" allowfullscreen></iframe> </center> </html></tr> </table> <b>FIXME_Category :Academic</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :FPGA</b> Full Radio Licence http://new.george-smart.co.uk/full_radio_licence 4893 draft full_radio_licence 2014-03-20 15:37:28 0 page closed closed This page holds some of the work I've been doing on the Full (Advanced) Radio Amateur's Examination. This is all still a work in progress. <h1>Course Notes</h1> This booklet is intended to go with the RSGB's Advance! Full Licence Manual, and aims to further elaborate on the use of Scientific Calculators to help you through the exam. Any feedback is greatly received (<a href="http://new.george-smart.co.uk/contact_me">Contact Me</a>). <ul> <li> <b><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/M1GEO_Full_RAE_Calculator_Guide_V4.pdf">Full (Advanced) Level Radio Amateur's Examination Maths Guide Booklet</a> (Version 4)</b></li> <li> <i><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/M1GEO_Full_RAE_Calculator_Guide_V3.pdf">Full (Advanced) Level Radio Amateur's Examination Maths Guide Booklet</a> (Version 3)</i> --- Replaced by Version 4.</li> <li> <i><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/M1GEO_Full_RAE_Calculator_Guide_V2.pdf">Full (Advanced) Level Radio Amateur's Examination Maths Guide Booklet</a> (Version 2)</i> --- Replaced by Version 3.</li> <li> <i><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/M1GEO_Full_RAE_Calculator_Guide_V1.pdf">Full (Advanced) Level Radio Amateur's Examination Maths Guide Booklet</a> (Version 1)</i> --- Replaced by Version 2.</li> </ul> <h1>Video</h1> I also prepared a Youtube video on the maths for the full licence. The quality is currently very poor, but I will improve it soon. I will also split the video into sections so that they can be revised in smaller chunks. Check back soon to see if anything's changed. <center><a href="http://www.youtube.com/watch?v=J14l49-qLhw">Youtube Link</a></center> <html> <center> <iframe width="420" height="315" src="http://www.youtube.com/embed/J14l49-qLhw?hl=en&fs=1"" frameborder="0" allowfullscreen></iframe> </center> </html> I was asked recently about converting dBW back into Watts, so here is a very short video with some examples on how to do that: <center><a href="http://www.youtube.com/watch?v=FDff4iYNut0">Youtube Link</a></center> <html> <center> <iframe width="420" height="315" src="http://www.youtube.com/embed/FDff4iYNut0?hl=en&fs=1"" frameborder="0" allowfullscreen></iframe> </center> </html> FullRadioLicence http://new.george-smart.co.uk/fullradiolicence 3765 fullradiolicence draft 0 2013-01-03 14:57:31 closed closed page This page was moved here: <a href="http://new.george-smart.co.uk/full_radio_licence">Full Radio Licence</a>. <a href="/contact-me">Please report this message to the webmaster</a>. FunCube http://new.george-smart.co.uk/funcube 0 2013-02-02 20:54:01 closed page closed 3995 funcube draft As you may already know, the FunCube Dongle was designed as part of AMSAT-UK’s FUNcube satellite project. The FunCube Dongle is the "ground segment", or a radio receiver designed to allow anyone to try their hand at reception of satellites like FUNcube anywhere on Earth as part of a global educational collaboration project collecting information from space. Similar to a USB TV Dongle, the FUNcube Dongle simple fits into your computer’s USB port. It’s compatible with many radio reception programs like Rocky, M0KGK, Spectravue and LinRad. The FUNcube Dongle also works with Windows XP, Vista and Windows 7 both x86 and x64. In addition, it is compatible with Linux and MacOS as it uses standard USB drivers already integrated into the operating system. There are two versions. The entry level FUNcube Dongle gives access to the satellite frequency band that FUNcube and some other satellites use. The Pro version gives unlimited access to the frequency range 64 to 1,700MHz. It’s also all-mode: this means that it’s not just limited to narrow band FM reception. As well as data, the FUNcube Dongle will also recieve many other narrow band signals including AM, FM and SSB. It will even receive TV sound channels! <a href="http://new.george-smart.co.uk/aprs_with_the_funcube_dongle">APRS with the FUNcube Dongle</a> <b>I've spent some time designing a <a href="http://new.george-smart.co.uk/funcube_upconverter">HF Converter for the FunCube Dongle</a>!</b> You may also be interested in my my analysis of the <a href="http://new.george-smart.co.uk/funcube_dongle_frequency_stability">FunCube Dongle Frequency Stability</a>. <b>FIXME_Category :FunCube</b> <b>FIXME_Category :Radio</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Computers</b> FunCube Dongle Frequency Stability http://new.george-smart.co.uk/funcube_dongle_frequency_stability 0 2012-04-21 01:24:33 page closed closed 3375 draft funcube_dongle_frequency_stability I was interested in the frequency stability and offset of the <a href="http://new.george-smart.co.uk/fcd">FunCube Dongle</a> so I devised a simple method of testing it. Tuning the FCD to receive a frequency stable source (here, <a href="http://www.gb3vhf.co.uk/GB3VHFtechnicaldetails.html">GB3VHF</a>, which claims high long-term stability) will show up any drift in the FunCube Dongle. This is what I set out to do. If you use GB3VHF, please consider <b><a href="http://www.gb3vhf.co.uk/GB3VHFdonate.html">donating to GB3VHF</a></b> which will help with the beacon's upkeep. Using a simple MATLAB Script (<b><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/FCD_FS_MATLAB_FunCubeFFT.tar.gz">downloadable from here</a></b>) the FCD is sampled at 96,000 Hz giving a nice and wide frequency range. Both I and Q channels are sampled and multiplied out to give a complex signal; this is then FFTed and filtered to give a window of 10KHz. The FCD PLL frequency is tuned such that the source signal is in the middle of the filter, here at 15KHz. A threshold is added to ensure that the data sampled is only for a good strong clear signal (we get a lot of noise here) and that the WSJT65 is rejected (this is FSK and would ruin our results). When this original article was first written, it attracted quite a bit of interest. I had initially done it as an experimental idea - really just toying with the principles. However, I received a lot of feedback mostly pointing out flaws, errors and additions to my methods. I have therefore added a second attempt. <h1>First Attempt</h1> The device was left recording frequency drift over 24 hours and finally the graph plotted. Below, the graph shows two traces. The red trace shows the observed frequency of reception, the blue trace shows the average observed frequency over the time period. This average is 144,445,328 Hz. GB3VHF transmits on a frequency of 144,430,000 Hz, and so we calculate the average offset to be 15,328 Hz high over the time period examined. The first graph shows the smoothed data, whilst the second shows the raw data. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/FCD_Freq_Drift.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/FCD_Freq_Drift.png" width="600" alt="FCD Stability" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/FCD_Freq_RawDrift.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/FCD_Freq_RawDrift.png" width="600" alt="FCD Stability" class="aligncenter"></a> <h1>Second Attempt</h1> The main criticism I received was that the FunCube Dongle was subject to fluctuations in frequency which caused the drifts observed in the first results - I believe this to be true. I initially decided that I could record the temperature throughout a 24-hour period and correlate this with the observed frequency. Then after thinking about it a little longer I decided that a better gauge of the frequency stability would be to place the FCD into an environment where the temperature was constant and then observe the frequencies drift. This was the basis for the Second Attempt. I went about insulating a small cardboard box (which housed a replacement toner cartridge for my printer) using bubble-wrap, shredded newspaper, plenty of sticky-tape and some brown wrapping paper, I created my <i>Thermally Controlled Box</i> (patent pending, hehe): <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/FCD_Freq_Drift_Oven.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/FCD_Freq_Drift_Oven.jpg" width="600" alt="FCD Oven" class="aligncenter"></a> Inside the box is a small 80mm PC fan and a fibre-glass former with about 10 turns of resistance wire wrapped around. The fan blows over the resistance wire (which is hot) and warms the box up and distributes the warmed air around, ensuring an even temperature distribution. A <a href="http://www.velleman.eu/products/view/?id=347925">Velleman MK138 Thermostat</a> was modified slightly to provide a stable temperature inside the box and a <a href="http://www.maxim-ic.com/datasheet/index.mvp/id/2812">Dallas Semiconductor DS18B20 one-wire thermometer</a> was used to interface to the PC via <a href="http://www.arduino.cc">arduino</a> and USB to record the temperature into the computer. The configuration is a bit of a lash-up but it works and initial testing showed a reasonable temperature stability. The hysteresis on the Velleman MK138 provides a little bit of a ripple in the temperature, but I would suspect this to average out with the thermal resistance of the FCD case, and thermal mass of the FCD circuit board. The two images below show (left) the initial 10 minutes where the start up can been seen as well as the temperature ripple, and (right) the full temperature recording over the experiment shown below. <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/FCD_Temp_Close.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/FCD_Temp_Close.png" width="300" alt="Oven Temperature" class="aligncenter"></a></tr> </table> </center> After convincing myself that this box really did hold up to the job of remaining constant temperature inside, I connected up the FCD as in <i>attempt one</i> and placed it inside the <i>oven</i>. I closely regarded the set up for some time to make sure that it was working as I expected and secondly, that it didn't catch fire and burn my house down. Following some slight modifications to the MATLAB script the data for the stability at a given temperature (60 degrees Celsius). I should point out that these frequencies are an offset from 144.430000 MHz as defined in the FCD control software. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/FCD_Freq_Drift_Att2.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/FCD_Freq_Drift_Att2.png" width="600" alt="FCD Stability" class="aligncenter"></a> There is still some work to be done. I have a Rubidium frequency standard and a GPS frequency standard, and so I will endeavour to repeat these measurements again. <h1>Frequency Drift vs Temperature</h1> So from the second experiments, it is clear that the temperature plays are large role in the frequency offset. I have therefore decided to do one last experiment before I close this case forever. I want to look at how the temperature of the enclosure effects the frequency drift. By gradually increasing the enclosure temperature throughout a day, and plotting the results, with the offset frequency as a function of temperature, we finally we can see how things relate. <b>But you will have to come back for this, as I've not done it yet!</b> <b>FIXME_Category :Radio</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Computers</b> <b>FIXME_Category :Programming</b> <b>FIXME_Category :Linux</b> <b>FIXME_Category :FunCube</b> <b>FIXME_Category :ToDo</b> FunCube Upconverter http://new.george-smart.co.uk/funcube_upconverter draft funcube_upconverter 4968 closed page closed 0 2014-06-04 17:07:18 This page is about my HF Converter for the <a href="http://new.george-smart.co.uk/funcube">FunCube Dongle</a>. The FunCube Dongle Pro edition (here, FCD) gives unlimited access to the frequency range 64 to 1,700 MHz for reception of all modes. As a Radio Amateur, I was also interested in HF reception (frequencies from 0Hz to 30 MHz) and the lower part of VHF. I therefore needed a way of translating these low frequencies, say 0 Hz to 64 MHz (where the FCD starts). This is a simple process and can be achieved with a frequency mixer. Using a double-balanced mixer, suppression of the input frequencies can also be achieved. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/06/FCD_UpConv_RF_Mixer.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/06/FCD_UpConv_RF_Mixer.png" alt="RF Double Balanced Mixer" class="aligncenter"></a> Here this means that mixing the two frequencies, <i>F1</i> and <i>F2</i> results in the sum <i>F1+F2</i> and difference <i>F1-F2</i>. The original inputs <i>F1</i> and <i>F2</i> should be suppressed (or largely attenuated). With the careful selection of frequency for <i>F1</i> and filtering of input signals <i>F2</i>, you can see how a signal present on the antenna (at <i>F2</i>) at 1 MHz could be translated to a frequency of <i>1+F1</i> MHz. This project uses a oscillator block with an output frequency of 100 MHz for <i>F1</i>. This allows for simple frequency translation. A signal at 1 MHz would appear at 101 MHz, and so on; this is in the range the FCD can receive. There is also a need to filter the range of input signals present at <i>F2</i>. We need these to be less than the <i>F1</i> frequency otherwise copies of the signals will appear inside the FCD's passband - these are called <i>images</i> and add they add to the spectral congestion at the FCD. This project uses a low-pass filter at the input of <i>F2</i> to remove any frequencies above 100 MHz. Specifically, the filter is a 7th-order Chebyshev low pass filter, 1 dB passband ripple, cut-off frequency of 62 MHz and stop-band frequency attenuation of at least 33 dB at 80 MHz. The filter has an impedance of 50&Omega;. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/06/FCD_UpConv_Finished2.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/06/FCD_UpConv_Finished2.jpg" width="600" alt="FCD HF Up-converter" class="aligncenter"></a> <h1>The Design</h1> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/06/FCD_UpConv_ARES.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/06/FCD_UpConv_ARES.png" alt="LabCentre Proteus ARES" class="aligncenter"></a> <b>All design images are available as PDFs, scaled to make mask printing easier - see the PDF section.</b> The image below is the schematic design for the system. It is fairly simple to construct. All 3 inductors in the low-pass filter are made from 6 turns of wire on a 6 mm former. The wire I used was 0.71mm (22 swg), but it makes little difference, just the physical strength. Using an inductance measuring device it is possible to fine tune the inductors, but they're probably good enough as they are. The capacitors are grouped in pairs in parallel. This allows you to create the required values with standard capacitor values. There is a 3 dB attenuator pad between the oscillator block and SBL-1 mixer to help present the mixer with a 50&Omega; port. The device is powered from 5 V supply, with the ground-plane at 0 V (<i>J1</i> closest to the SMA socket). 5V input connects to <i>J1</i> on the pin closest to oscillator block. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/06/FCD_UpConv_Schematic.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/06/FCD_UpConv_Schematic.png" width="600" alt="FCD HF Up-converter Schematic" class="aligncenter"></a> Next we have the PCB Mask. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/06/FCD_UpConv_Mask.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/06/FCD_UpConv_Mask.png" width="500" alt="FCD HF Up-converter Mask" class="aligncenter"></a> And Finally, the Silk-Screen. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/06/FCD_UpConv_Silk.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/06/FCD_UpConv_Silk.png" width="500" alt="FCD HF Up-converter SilkScreen" class="aligncenter"></a> The end result. My first prototype. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/06/FCD_UpConv_Finished.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/06/FCD_UpConv_Finished.jpg" width="600" alt="FCD HF Up-converter" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/06/FCD_UpConv_Finished3.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/06/FCD_UpConv_Finished3.jpg" width="500" alt="FCD HF Up-converter" class="aligncenter"></a> <h1>Circuit Board (PCB)</h1> These PDFs are provided if you wish to make this converter. The PDFs are scaled and will print at the exact size for parts placement. <ul> <li> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/M1GEO_FCD_HFConv_Schematic.pdf">Schematic</a> - arbitrarily scaled and for component-value lookup</li> <li> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/M1GEO_FCD_HFConv_PCBMask.pdf">PCB Mask</a> - scaled at 100% for the masking of the PCB copper</li> <li> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/M1GEO_FCD_HFConv_SilkScreen.pdf">Silk Screen</a> - shows where components are placed on the board (scaled at 200%) (<a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/M1GEO_FCD_HFConv_SilkScreen_NoHoles.pdf">without holes</a>)</li> </ul> It has also been bought to my attention that PCBs available from <a href="http://www.farcircuits.net/">Far Circuits</a> for $5 USD. I have never seen the boards and have no connection with the company, but it may be of interest to people who aren't able to make their own boards. <h1>Gerber Files</h1> By popular request, I have added the Gerber files for this design. These include the bottom copper, top silk screen, top solder resist, drill mask. I don't use Gerber files, but using an online checker, they look reasonable. Use these in conjunction with the placement diagrams in the PDFs sections. <ul> <li> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/M1GEO_FCD_HFConv_Gerber.zip">Gerber Files ZIP</a></li> </ul> <h1>Testing</h1> <h2>Low Pass Filter</h2> The main component to test is the low-pass filter. I did this using a HP spectrum analyser & tracking generator outputting a signal of -20 dBm. A VNA would also do. I tested this partly out of curiosity, and I doubt it really is necessary to do as any tolerance problems in the filter construction will show at the high frequency end of the response. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/06/FCD_UpConv_FilterResponse.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/06/FCD_UpConv_FilterResponse.jpg" width="500" alt="FCD HF Up-Converter LPF Response" class="aligncenter"></a> We can see that there is 50 dB of attenuation at 90 MHz. This then reached the noise floor of ESA, as the signal source wasn't able to put out much power (-20 dB maximum RF output). The curved nature of the filter response after 60 MHz I've put down to coupling between the coils. These would need to be screened in order to minimise this coupling and give a more linear shape. <h2>Local Oscillator Leakage</h2> Alan (G3NYK) raised <a href="http://uk.groups.yahoo.com/group/funcube/message/4292">an issue</a> in the regarding how much of the local oscillator signal leaks through the SBL-1 mixer and appears at the FunCube Dongle's front-end. I set about measuring this <i>break-through</i>. The poor phone-camera-spectrum analyser-print-screen below shows that the breakthrough at 100 MHz is -36.8 dBm. This is probably a bit high and could impair the sensitivity of the FunCube Dongle on HF. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/06/FCD_UpConv_LOBreakthrough.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/06/FCD_UpConv_LOBreakthrough.jpg" width="600" alt="FCD HF Up-Converter LO Breakthrough" class="aligncenter"></a> I am currently looking at a few ways of avoiding this problem: <ul> <li> Lowering the mixer LO drive level by adjusting the attenuator pad, to exactly +7 dBm (as required by the SBL-1).</li> : This just requires some simple calculations and offers some improvement for little effort (resistors R1, R2, and R3 recalculated/changed).</ul> <ul> <li> Adding a <i>pot</i> to the mixer circuit would allow the mixer's <i>balance</i> to be adjusted.</li> : This should help the mixer to suppress the LO and RF inputs.</ul> <ul> <li> Another option to help would be to follow the SBL-1 mixer with a high-pass filter to cut out the 100 MHz LO breakthrough.</li> : This has the disadvantage of requiring a second filter, which would possibly impair reception on the low frequency bands (i.e. 160 metres).</ul> I will report back on these issues when I've had time to develop & explore further. <h2>Software Tests</h2> The image below just shows some signals from the 40-metre amateur band that have been up-converted. The software is <a href="http://www.wrplus.altervista.org">WRplus SDR by Sandro Sfregola</a>, version 1.05. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/06/FCD_UpConv_WRPlus_40m.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/06/FCD_UpConv_WRPlus_40m.png" width="600" alt="FCD HF Up-Converter WRPlus" class="aligncenter"></a> <h2>Audio Recordings</h2> To give you an idea of the sort of signals recieved, these audio recordings are taken from WRPlus shortly after the above print-screen was taken. During this time, background noise was high on 40 metres. These are just for an indication, and you should expect better results! <ul> <li> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/FCD_UpConv_40m_QSO.mp3">40-metre QSO</a></li> : PE1JAS returns to GB0BAB's CQ for the Steam Railway Weekend. Short copy. PE1JAS is weak, GB0BAB is strong and clear.</ul> <ul> <li> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/FCD_UpConv_17m_CQ.mp3">17-metre QSO</a></li> : IK6BGJ calls CQ on 17 metres. Weak and with no reply. Conditions are bad and noisy.</ul> <h1>Known Issues & Future Ideas</h1> There are a number of known issues and future ideas, and the design presented above is a basic working device. <ul> <li> The design would benefit from a high-pass filter starting just below top-band (160 metres, 1.8 MHz) to keep broadcast bands out of the mixer input.</li> : This does only seem to affect top-band, and to a lesser extent, 80 metres.</ul> <ul> <li> A high-pass filter could be added after the SBL-1 mixer to reduce the appearance of the 100 MHz local oscillator at the input of the FunCube Dongle.</li> : This could improve selectivity and will prevent the FunCube Dongle's front-end from being over-driven. <i>I will do some calculations regarding this.</i></ul> <ul> <li> I would like to have diode switching around the up-converter to easily switch the circuit in and out for all frequency ranges, 0 Hz to 1.7 GHz.</li> : This would allow me to box the FunCube and up-converter into a slightly larger box protecting the two devices and powering them both from USB.</ul> <b>FIXME_Category :Radio</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Computers</b> <b>FIXME_Category :FunCube</b> Future Ideas http://new.george-smart.co.uk/future_ideas 2012-09-24 00:05:49 0 closed closed page 3609 future_ideas draft Some ideas for future projects, plans and the like. Please feel free to <a href="http://new.george-smart.co.uk/contact_me">Contact Me</a> with suggestions! <ul> <li> Fox Hunt / Direction Finding</li> <li> Raspberry Pi Terminal - LCD screen</li> <li> ANPR on Android</li> <li> WSPR beacon & arduino board</li> <li> FPGA Radio - DSP</li> <li> SMT RGB Clock</li> <li> Location Randomised v2</li> <li> NFC NXP chips? Linux drivers. XML file flasher?</li> <li> ODB Car-Engine Interface</li> <li> 3D printer?</li> <li> Arduino LastFM player</li> <li> FCD Upconverter - LO filter </li> <li> Car Laptop Charger</li> <li> Web Oscilloscope</li> <li> Laser measurement</li> <li> Powered Newton's Cradle</li> <li> Foam dart sentry gun</li> G3UCL http://new.george-smart.co.uk/g3ucl 2012-05-21 20:57:25 0 closed page closed 3485 g3ucl draft University College London Department of Electronic & Electical Engineering <i>This page is under construction</i>. Please visit <a href="http://www.qrz.com/db/G3UCL">G3UCL's QRZ.com page</a>. Games http://new.george-smart.co.uk/games 0 2011-04-08 22:01:05 page closed closed 1817 draft games As I mention elsewhere, I don't really play games on the computer. I own a Playstation (the original one), and a few games for that, but nothing since then. I use my computer mainly for working on, word processing, the Internet, email, etc. I recently, however, got back into a few old games. These are listed below. <h2>Wine</h2> I would just like to mention that all of the games listed here are running under <a href="http://www.winehq.org/">Wine</a>. To quote the website, 'Wine is a translation layer (a program loader) capable of running Windows applications on Linux and other POSIX compatible operating systems.' The guys there do an excellent job. Definitely worth a checkout if you're into Linux/Computers. <h2>Steam</h2> I run <a href="http://www.steampowered.com/">Steam</a> under Wine. It works perfectly once running, though startup is a little clunky. Plays Portal and HalfLife2 fine, which is the only reason I use it. The WineHQ website gives an excellent howto on getting steam working. <h2>The List</h2> I shall add more to this list as and when I get into more games. As of now, there are only a few. <ul> <li><b>FIXME: Carmageddon|Carmageddon (Max Pack) </b></li> <li><a href="http://new.george-smart.co.uk/cossacks">Cossacks: The Art of War</a></li> <li><b>FIXME: OpenTTD|OpenTTD (Transport Tycoon Deluxe) </b></li> <li><a href="http://orange.half-life2.com/portal.html">Portal</a></li> <li><a href="http://orange.half-life2.com/hl2.html">HalfLife^{2}</a></li> </ul> <b>FIXME_Category :About Me</b> GB0SNB QRSS Grabber http://new.george-smart.co.uk/gb0snb_qrss_grabber 2014-02-06 02:29:58 0 page closed closed 4880 draft gb0snb_qrss_grabber We (<a href="http://www.webshed.org">G7UVW</a> and I) are currently working on a new QRSS grabber installation to replace this less than optimal grabber. This is a long term project. Click image for a larger version. <a href="http://www.george-smart.co.uk/GB0SNB_QRSS/">Click here for image archive</a>. This image updates every 16 minutes. <html> <blockquote> <center> <a href="http://www.george-smart.co.uk/GB0SNB_QRSS/GB0SNB.jpg"> <img src="http://www.george-smart.co.uk/GB0SNB_QRSS/GB0SNB.jpg" width="600px"> </a> </center> </html></blockquote> <h1>Info</h1> This QRSS Grabber is located at the <a href="http://www.secretnuclearbunker.com/">The Kelvedon Hatch Secret Nuclear Bunker</a>. Located near Ongar in Essex, just outside the M25 motorway on the north-east side of London. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/02/GB0SNB_QRSS_FirstScreenie.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/02/GB0SNB_QRSS_FirstScreenie.jpg" width="600" alt="First Screenshot!" class="aligncenter"></a> The antenna is a top-band 160 metre doublet on the side of a cellphone tower, configured as an inverted-V. One leg goes off to some trees, the other to an old air-raid siren. From here, home-made 4-inch ladder line runs down the tower to the compound wall where a 4:1 balun is attached. From the balun, heliax takes the feed into the bunker's radio rooms, around 45 metres underground. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/02/GB0SNB_QRSS_VHFRoom.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/02/GB0SNB_QRSS_VHFRoom.jpg" width="600" alt="VHF Room" class="aligncenter"></a> The radio is an FT-817ND wrapped up to help stabilise the temperature, although the bunker stays around 7C all year around! A simple audio jack cable connects the FT-817 headphones to the line in on an old AMD Duron 1.4 GHz PC running Ubuntu Linux 10.04 LTS which also runs APRS from the site. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/02/GB0SNB_QRSS_Rig.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/02/GB0SNB_QRSS_Rig.jpg" width="600" alt="Radio" class="aligncenter"></a> From this computer, <a href="http://rsync.samba.org/">rsync</a> is used to synchronise the snapshots across the internet. Sometimes things loose sync and images are lost or corrupt. GB7KH http://new.george-smart.co.uk/gb7kh page closed closed 2015-02-11 01:03:38 0 draft gb7kh 5225 This page has been moved. <center><font size="7" align="center"><a href="http://www.gb7kh.co.uk/">GB7KH Website</a></font></center> George Smart http://new.george-smart.co.uk/george_smart draft george_smart 4884 page closed closed 0 2014-03-04 00:36:59 #REDIRECT <b>FIXME_User :George</b> Git http://new.george-smart.co.uk/git 4894 draft git 0 2014-03-24 16:39:23 page closed closed This page was written to remind me how to create <a href="http://en.wikipedia.org/wiki/Git_(software)">Git</a> projects using <a href="http://github.com/">GitHub</a>. I always forget the commands, and so here I decided to document what I need to do. Another good resource is <a href="http://rogerdudler.github.io/git-guide/">git - the simple guide</a>. <h1>Create the Repository</h1> Create the repository inside the folder that your code is in <blockquote> george@marconi:~/Work/PhD/Contiki/Code/Channel Packet Loss$ git init Initialised empty Git repository in /home/george/Work/PhD/Contiki/Code/Channel Packet Loss/.git/ george@marconi:~/Work/PhD/Contiki/Code/Channel Packet Loss$ </blockquote> <h1>Add Files to the Respository</h1> Then you can add files into the repository, like this: <blockquote> george@marconi:~/Work/PhD/Contiki/Code/Channel Packet Loss$ git add * george@marconi:~/Work/PhD/Contiki/Code/Channel Packet Loss$ </blockquote> <h1>Commit these Changes</h1> To actually commit these changes use the following. Then the files are committed to the HEAD, but not in your remote repository yet. <blockquote> george@marconi:~/Work/PhD/Contiki/Code/Channel Packet Loss$ git commit -m "Initial PDR code commit" <a href="master">(root-commit) 83c117a</a> Initial PDR code commit 6 files changed, 244 insertions(+) create mode 100644 Makefile create mode 100644 Receiver.c create mode 100644 Transmitter.c create mode 100755 parse_data.sh create mode 100644 project-conf.h george@marconi:~/Work/PhD/Contiki/Code/Channel Packet Loss$ </blockquote> <h1>Linking with Remote Server</h1> If you have not cloned an existing repository and want to connect your repository to a remote server, you need to add it with the following. Then you will be able to push your changes to the selected remote server <blockquote> george@marconi:~/Work/PhD/Contiki/Code/Channel Packet Loss$ git remote add origin https://github.com/georgesmart1/contiki-packet-delivery-ratio.git george@marconi:~/Work/PhD/Contiki/Code/Channel Packet Loss$ </blockquote> <h1>Pushing to Server</h1> Your changes are now in the HEAD of your local working copy. To send those changes to your remote repository, execute the following. Change master to whatever branch you want to push your changes to. Depending on if you have changed things in the newly created repository or not, you may get the following error: <blockquote> george@marconi:~/Work/PhD/Contiki/Code/Channel Packet Loss$ git push origin master Username for 'https://github.com': georgesmart1 Password for 'https://georgesmart1@github.com': To https://github.com/georgesmart1/contiki-packet-delivery-ratio.git ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to 'https://github.com/georgesmart1/contiki-packet-delivery-ratio.git' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Merge the remote changes (e.g. 'git pull') hint: before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. george@marconi:~/Work/PhD/Contiki/Code/Channel Packet Loss$ </blockquote> Here, for example, there were differences between the README.md file and the LICENCE files. Do as suggested, and merge changes. <blockquote> george@marconi:~/Work/PhD/Contiki/Code/Channel Packet Loss$ git pull https://github.com/georgesmart1/contiki-packet-delivery-ratio.git warning: no common commits remote: Counting objects: 19, done. remote: Compressing objects: 100% (19/19), done. remote: Total 19 (delta 5), reused 0 (delta 0) Unpacking objects: 100% (19/19), done. From https://github.com/georgesmart1/contiki-packet-delivery-ratio * branch HEAD -> FETCH_HEAD Merge made by the 'recursive' strategy. LICENSE | 21 +++++++++++++++++++++ README.md | 25 +++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 LICENSE create mode 100644 README.md george@marconi:~/Work/PhD/Contiki/Code/Channel Packet Loss$ </blockquote> From this you see that the two files were retrieved and the local copy contains all of the remote data. Now we can re-push the code, this time it should work, since the local contains an up to date version of the remote. <blockquote> george@marconi:~/Work/PhD/Contiki/Code/Channel Packet Loss$ git push origin master Username for 'https://github.com': georgesmart1 Password for 'https://georgesmart1@github.com': Counting objects: 11, done. Delta compression using up to 4 threads. Compressing objects: 100% (10/10), done. Writing objects: 100% (10/10), 3.38 KiB, done. Total 10 (delta 2), reused 0 (delta 0) To https://github.com/georgesmart1/contiki-packet-delivery-ratio.git 12be5eb..6f0c4b0 master -> master george@marconi:~/Work/PhD/Contiki/Code/Channel Packet Loss$ </blockquote> Success. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/Git_Push_Success.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/03/Git_Push_Success.png" width="500" alt="GitHub Push" class="aligncenter"></a> GM300 Cables http://new.george-smart.co.uk/gm300_cables 0 2016-12-02 15:34:50 closed page closed 5527 gm300_cables draft =GM3xx Programming Cable= While experimenting with radios for the <a href="http://mmdvm.com">MMDVM Project</a> (and <a href="https://groups.yahoo.com/neo/groups/mmdvm/info">here</a>), I needed a programming cable for some Motorola GM340 and GM380 radios. A friend of mine had access to the programming software through his job, but couldn't locate his programming cable for these radios. Seeing they were available cheaply on eBay, and knowing the likely 'guts' of such a cable, I decided to experiment with some standard designs. It didn't take long to reach success! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/GM300_Programming_Schematic.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/GM300_Programming_Schematic.png" width="600" alt="GM3xx Programming Cable Schematic" class="aligncenter"></a> A USB-TTL adapter such as those easily available on eBay was used, which cost around £1 (or a little more with genuine chip-sets on). A standard silicon signal diode such as the 1N4148 (almost anything will do), and an RJ45 Ethernet connector to fit the microphone socket. Using an Ethernet cable with standard wiring, the ground connection uses pin 5 of the Ethernet connector, which is usually blue-white. The signal pin used is pin 2, and typically orange. The signal diode prevents collisions and bus conflicts between TX and RX; it is arranged so that the cathode is connected to the TX pin on the TTL adapter and the anode to the RX pin. An old faulty Ethernet cable was hacked about to make the connections. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/GM300_Programming_Cable.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/GM300_Programming_Cable.jpg" width="600" alt="GM3xx Programming Cable Hack" class="aligncenter"></a> And it works! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/GM300_Programming_Works.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/GM300_Programming_Works.png" width="600" alt="GM3xx Programming Cable Working" class="aligncenter"></a> Hopefully this may help others. <h1>Simple Repeater Interface Cable (RIC)</h1> I brought a cheap cable on eBay, mainly for the connectors, but, I figured before I cut it about, I would make a schematic, in case I ever needed the cable. It's basically a very crude cable to repeat audio, and, key the transmitter. You could easily add in a simple project to send a CW ID to make it legal for use in the amateur bands. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/GM300_RIC.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/GM300_RIC.png" width="600" alt="GM3xx RIC" class="aligncenter"></a> Of course, you will need to program the COS and PTT on the correct pins, and, ensure that the signal level (usually low) matches at both ends, so the TX is keyed when the RX is busy, and, not keyed when there is no signal present at the receiver. GM300 Programming Cable http://new.george-smart.co.uk/gm300_programming_cable closed closed page 2016-12-02 15:30:53 0 gm300_programming_cable draft 5526 This page was moved here: <a href="http://new.george-smart.co.uk/gm300_cables">GM300 Cables</a>. <a href="/contact-me">Please report this message to the webmaster</a>. GNU Radio http://new.george-smart.co.uk/gnu_radio draft gnu_radio 3009 page closed closed 0 2012-01-12 14:35:40 This page describes my experience with GNU Radio and GRC. <h1>Install Binaries</h1> This page originally detailed how to build GNU Radio and GNU Radio Companion from source, but this proved very difficault for some people to follow, so this page suggests how to install the binaries instead. It is very closely based on <a href="http://randomsnippetsofusefulstuff.blogspot.com/2010/01/how-to-install-gnu-radio-on-ubuntu-910.html">Install GNU Radio on Ubuntu 9.10 (Karmic)</a>. <blockquote> $ sudo apt-get install gnuradio gnuradio-companion </blockquote> This will take a few minutes and then you will have GNU Radio & GNU Radio Companion (grc) installed. <h1>Fire it up</h1> When I first started GNU Radio Companion, I got the following error trace. <blockquote> <<< Welcome to GNU Radio Companion 3.2.2 >>> Error: 'options' >>> Failue Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/gnuradio/grc/gui/MainWindow.py", line 174, in new_page flow_graph = self._platform.get_new_flow_graph() <i><a href="snipped">here - it goes on</a></i> </blockquote> According to <a href="https://bugs.launchpad.net/ubuntu/+source/gnuradio/+bug/783685/comments/2">this post</a>, it is a bug relating back to <a href="http://www.ruby-forum.com/topic/190977">this issue</a> with Ruby. In Natty, this can be resolved by doing: <blockquote> mkdir ~/.gnuradio/ touch ~/.gnuradio/config.conf cat /etc/gnuradio/conf.d/grc.conf >> ~/.gnuradio/config.conf </blockquote> Which will setup the required folder, and then put the config file in the correct place. Once loaded, the GNU Radio Companion looks like this: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/GNURadioCompanion_HomeScreen.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/GNURadioCompanion_HomeScreen.png" width="500" alt="Home Screen of GRC" class="aligncenter"></a> <h1>Starting Out</h1> I have not used GNURadio before and so wanted some tutorials to see how things work. I found <a href="http://www.csun.edu/~skatz/katzpage/sdr_project/sdrproject.html">this website</a> which is very very useful indeed. Having red through the tutorials on that page, it all clicked into place. Playing with GNU Radio made a lot of my DSP and SigProc courses make much more sense. The image below shows my Lower Sideband SSB demodulator, made in GNU Radio using the <a href="http://en.wikipedia.org/wiki/Single-sideband_modulation#Weaver_modulator">Weaver method</a>. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/GNURadioCompanion_WeaverSSBDemod.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/GNURadioCompanion_WeaverSSBDemod.png" width="700" alt="Weaver SSB Demodulator" class="aligncenter"></a> <b>FIXME_Category :Radio</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Computers</b> <b>FIXME_Category :Linux</b> GPS Frequency Standard http://new.george-smart.co.uk/gps_frequency_standard 4205 draft gps_frequency_standard 2013-03-21 23:48:25 0 closed page closed The <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/Jupiter12GPSReceiver.pdf">Jupiter 12 GPS Receiver</a> has a 10 kHz output which is GPS locked. This page is about my project to make this into a 10 MHz frequency standard. This involved building a simple phase-locked-loop (PLL) which uses the super-accurate 10 kHz from the GPS as a reference for a 10 MHz VCO. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/GPSDO_Completed.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/GPSDO_Completed.jpg" width="600" alt="Completed Board" class="aligncenter"></a> You can see the green board is the Jupiter 12 GPS Receiver. The (upside-down) board underneath is the GPS Frequency Standard. The PLL circuit is under the Jupiter board. The board also has a DB9 connector for data connections to the Jupiter board, with MAX232 for true RS232 connectivity. The Jupiter board supports standard NEMA 4800 bauds as well as Zodiac binary format. See the <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/Jupiter12GPSReceiver.pdf">Jupiter 12 datasheet</a> for more on the data formats. There is a hard link to force NEMA, while <a href="http://www.catb.org/gpsd/">gpsd</a> will read almost all GPS data formats (including NEMA and Zodiac binary). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/GPSDO_Completed_Connected.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/GPSDO_Completed_Connected.jpg" width="600" alt="Testing Board" class="aligncenter"></a> The green wire sticking up is the output of the phase-detector and used for testing. It has been removed since the testing stage. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/GPSDO_Output.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/GPSDO_Output.jpg" width="250" alt="10 MHz Output" class="aligncenter"></a> The above image shows the 10 MHz output. The schematic design presented below has been adjusted for better duty cycle; closer to 50%. The signal is about 5V pk-pk. The output has a source impedance of 50 Ohms. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/GPSDO_Comparison.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/GPSDO_Comparison.jpg" width="600" alt="Comparison" class="aligncenter"></a> Finally, I wanted to check this design against a known good frequency source, to see if we really have achieved the goal. As is evident from the image above, the frequency is accurate down to 10 mHz (milli Hertz). There is a little phase noise on the signal which is usually present on GPS frequency standards, and on these small VCO modules. Here, the reference is a professionally (and very expensive) Trimble GPS Frequency Standard such as those used to frequency lock large transmitters. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/GPSDO_Lock_Spectrograph.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/GPSDO_Lock_Spectrograph.png" width="600" alt="Spectrograph" class="aligncenter"></a> Above, the spectrograph of the designed GPS frequency standard <i>locking</i> for the first time. There are 4 salient points in this process: # The power is turned on # The VCO gradually pulls in to lock with the GPS's reference (which is currently unlocked from GPS). # The GPS 10 kHz locks, and the VCO then re-locks to the new GPS frequency reference. # The system is locked and the output a good 10 MHz; ready to use! <h1>The Design</h1> The design is presented here for you to do with it what you like. It's offered in the hope that it may be useful. Read the <a href="http://new.george-smart.co.uk/disclaimer">disclaimer</a> and <a href="http://new.george-smart.co.uk/copyright">copyright</a> if you're concerned. If in doubt ask. If you're making it for yourself then it's fine. Go ahead. <table cellpadding="4" border="1" > <tr><td><b>PDFs</b></td><td><b>PNGs (300dpi)</b></td></tr><tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/GPSDO_Schematic.pdf">Schematic</a></td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/GPSDO_Schematic.png">Schematic</a></td></tr><tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/GPSDO_Mask.pdf">Copper Mask</a></td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/GPSDO_Mask.png">Copper Mask</a></td></tr><tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/GPSDO_Links.pdf">Links Layer</a></td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/GPSDO_Links.png">Links Layer</a></td></tr><tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/GPSDO_Layout.pdf">Parts Layout</a></td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/GPSDO_Layout.png">Parts Layout</a></td></tr><tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/GPSDO_Materials.pdf">Bill of Parts</a></td><td><i>Only as PDF</i></tr> </table> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Projects</b> <b>FIXME_Category :GPS</b> <b>FIXME_Category :Equipment</b> <b>FIXME_Category :Test</b> Ham Radio Certificates http://new.george-smart.co.uk/ham_radio_certificates 0 2015-01-19 15:24:31 page closed closed 5205 draft ham_radio_certificates Some of the certificates I happened into relating to Amateur Radio. <h1>50 MHz UKAC 2014</h1> During my time in Cambridge working for ARM Ltd, I took part in the UKAC contests with the <a href="http://www.camb-hams.com/">Camb Hams</a>. I was only there for 4 months, but, given that my name was on the certificate, I feel entitled to claim some small success! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/01/50MHz_UKAC_2014.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/01/50MHz_UKAC_2014.png" width="300" alt="2nd Place for the 2014 50 MHz UKAC" class="aligncenter"></a> <h1>70 MHz UKAC 2014</h1> Similar to the 50 MHz certificate above, while in Cambridge I did some UKAC operating with the <a href="http://www.camb-hams.com/">Camb Hams</a>. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/01/70MHz_UKAC_2014.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/01/70MHz_UKAC_2014.png" width="300" alt="2nd Place for the 2014 50 MHz UKAC" class="aligncenter"></a> Ham Radio Linux http://new.george-smart.co.uk/ham_radio_linux closed page closed 2014-05-12 19:33:58 0 ham_radio_linux draft 4947 This page lists a few programs on Linux that I use for Ham Radio. It just reminds me what I need to install when I rebuild my laptop. <blockquote> sudo apt-get install xdx xlog fldigi wsjt wsjtx xastir grig libhamlib-utils </blockquote> <h1>xdx</h1> Xdx is a TCP/IP DX cluster client for Amateur Radio. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/HamLinux_xdx.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/HamLinux_xdx.png" width="600" class="aligncenter"></a> <h1>xlog</h1> xlog is a GTK+ based logging program for Amateur Radio Operators. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/HamLinux_xlog.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/HamLinux_xlog.png" width="600" class="aligncenter"></a> <h1>fldigi</h1> fldigi is a digital modem program for ham radio operators. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Fldigi Running20m.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Fldigi Running20m.png" width="600" class="aligncenter"></a> <h1>wsjt & wsjtx</h1> wsjt is a weak signal communications program. It supports multiple operating modes: <ul> <li> FSK441 - fast mode for meteor scatter</li> <li> ISCAT-A, ISCAT-B - optimized for meteor and ionospheric scatter</li> <li> JT65A, JT65B, JT65C, JT65B2, JT65C2 - for EME and troposcatter</li> <li> JT4A, JT4B, JT4C, JT4D, JT4E, JT4F, JT4G</li> <li> CW - 15 WPM Morse code, messages structured for EME</li> <li> Echo - for EME echoes</li> </ul> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/WSJT_JT65B_GB3VHF.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/WSJT_JT65B_GB3VHF.png" width="600" alt="WSJT receiving GB3VHF via JT65B" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/WSJT_JT65A_20m_Spec.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/WSJT_JT65A_20m_Spec.png" width="600" alt="WSJT receiving 20m" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/WSJT_JT65A_20m_WSJT.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/WSJT_JT65A_20m_WSJT.png" width="600" alt="WSJT receiving 20m" class="aligncenter"></a> <h1>xastir</h1> Xastir is a graphical application that interfaces ham radio and APRS(tm) internet access to real-time mapping software. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/APRS_FCD_XASTIR.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/APRS_FCD_XASTIR.png" width="600" class="aligncenter"></a> <h1>grig</h1> grig is a graphical user interface for the Ham Radio Control Libraries (hamlib) <a href="see">below</a>. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/BTRig_grig.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/BTRig_grig.png" width="600" class="aligncenter"></a> <h1>hamlib</h1> Is a library which many other programs base their radio interface upon. It provides a common software layer to control and interface with radio transceiver hardware. <h1>freedv</h1> freedv is a Digital Voice program for HF. FreeDV has it's own repository for Linux. See the homepage of the project for information. For the apt package manager, visit <a href="http://files.freedv.org/debian">the Debian page</a>. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/HamLinux_freedv.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/HamLinux_freedv.png" width="600" class="aligncenter"></a> HF Mobile http://new.george-smart.co.uk/hf_mobile closed page closed 2011-06-17 23:55:01 0 hf_mobile draft 2048 This page was moved here: <a href="http://new.george-smart.co.uk/hf_portable">HF Portable</a>. <a href="/contact-me">Please report this message to the webmaster</a>. HF Portable http://new.george-smart.co.uk/hf_portable page closed closed 0 2011-08-10 02:52:09 draft hf_portable 2378 This page was moved here: <a href="http://new.george-smart.co.uk/portable_radio">Portable Radio</a>. <a href="/contact-me">Please report this message to the webmaster</a>. High Current 5V Regulator http://new.george-smart.co.uk/high_current_5v_regulator closed page closed 2016-05-16 11:31:28 0 draft high_current_5v_regulator 5485 When doing <a href="http://new.george-smart.co.uk/raspberrypi_wspr">WSPR on the Raspberry Pi</a>, I needed a bit more current than the standard mobile phone chargers suggested for the Pi could offer. Typically they're rated at about 1 amp, and will do 500 mA with a clean output supply but much beyond that the output gets noisy and the voltage drops (there are some exceptions). As I was interested in receiving weak radio signals the <i>switching noise</i> from the power supply was a nuisance as was the weird behaviour of some of the peripherals. As you so often see in the Pi forums, "It's your power supply". The design presented here isn't the greatest or most reliable; it's the easiest to do the job well. The big 2N3055 transistor used as a <i>series pass transistor</i> is probably overkill for the couple of amps required here, but as it's well under-rated, it should easily do! It's important to note that there is no short circuit protection and no over-current protection. Short the output and you'll get all the current the supply can manage (plus a hot or blown 2N3055). You've been warned! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/05/HC5VReg_Board.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/05/HC5VReg_Board.jpg" width="600" alt="Board" class="aligncenter"></a> <h1>Schematic</h1> Below is the schematic for the regulator. The design is very simple. U1 is a LM 7805 5 Volt regulator. This provides the 5V reference to Q1 which is configured in series pass - the emitter of Q1 is at 5V but with more current than would be provided by the 7805. Diode D2 gives a slight offset to the reference voltage of typically 0.7 Volts which overcomes the 0.7V loss at the transistor's base-emitter junction. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/05/HC5VReg_Schematic.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/05/HC5VReg_Schematic.png" width="600" alt="Schematic" class="aligncenter"></a> <h1>Board</h1> Just in case anyone is interested in making this project, I have included the PCB masks. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/05/HC5VReg_Mask.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/05/HC5VReg_Mask.png" width="400" alt="Bottom Copper Mask" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/05/HC5VReg_Silk.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/05/HC5VReg_Silk.png" width="400" alt="Silk Screen" class="aligncenter"></a> <h1>Files</h1> Below are the download links to the board mask and silk as PDF which can be printed at 100% to provide toner transfer or optical masks. Also included is the Gerber files for milling boards. <ul> <li> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/HC5VReg_Board_Mask.pdf">Project Mask as PDF</a></li> <li> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/HC5VReg_Board_Silk.pdf">Project Silk as PDF</a></li> <li> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/HC5VReg_Board_Gerber.zip">Project Gerber Files in ZIP</a></li> </ul> <b>FIXME_Category :Electronics</b> HRDLog http://new.george-smart.co.uk/hrdlog closed page closed 0 2012-10-30 22:18:04 hrdlog draft 3639 <html> <center> <!-- HRDLOG.net script start --> <div id="hrdlog-oa"> </div> <div id="hrdlog">www.hrdlog.net</div> <script type="text/javascript" language="javascript" src="http://www.hrdlog.net/hrdlog.js"></script> <script type="text/javascript" language="javascript"> var ohrdlog = new HrdLog('M1GEO'); setInterval('ohrdlog.LoadOnAir()', 15000); ohrdlog.LoadLastQso(10); ohrdlog.EnableQsoMap(500); </script> <!-- HRDLOG.net script stop --> </center> </html> HTC Desire CyanogenMod 7.1RC1 http://new.george-smart.co.uk/htc_desire_cyanogenmod_7_1rc1 0 2012-01-12 14:36:24 page closed closed 3010 draft htc_desire_cyanogenmod_7_1rc1 I tried to install <a href="http://www.cyanogenmod.com/">CyanogenMod</a> 7.1 RC1 from their <a href="http://wiki.cyanogenmod.com/wiki/HTC_Desire_%28GSM%29:_Full_Update_Guide">wiki</a> before but it ended with a phone that had no Bluetooth functionality. As I use Bluetooth to interface with my car radio to play music, this was a real problem for me. I eventually managed to restore the phone (HTC Desire) to it's original firmware using the HTC RUU and the method described <a href="http://androidforums.com/htc-desire/177907-froyo-2-09-405-8-update-windows-not-required.html">here</a>. I am very grateful to the author of that post! I did, however, use a ROM from <a href="http://www.shipped-roms.com/">Shipped-ROMs</a>, as have many of the required stock ROMs (locked and unlocked), including the one for my unlocked European GSM Desire. I had already decided they had the best match (PB99IMG_2.29.405.5_Radio_32.49.00.32U_5.11.05.27_release_159811_signed.zip) for my phone. So with that in mind, I decided to have another go. Once you've run Cyanogen, you don't go back</td><td>! <hr> The first image shows the phone having just been recovered to the HTC stock build. This is exactly as it would have been bought. You notice that bluetooth is on (so that I could check it worked). <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/HTCDesire_Cyanogen71RC1_1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/HTCDesire_Cyanogen71RC1_1.jpg" width="350" alt="Desire with HTC stock build" class="aligncenter"></a></tr> </table> Click to enlarge </center> I then opened up <a href="http://wiki.cyanogenmod.com/wiki/HTC_Desire_%28GSM%29:_Full_Update_Guide">Cyanogen Wiki's HTC Desire (GSM) Full Update Guide</a>. In addition to this, make sure you copy all of the information from the phone. Not just your data/contacts/messages, but also make note of the software versions, base-band version, etc. This will save you a lot of time if you wish to restore your phone to the stock HTC build at a later date. <h1>Rooting the HTC Desire</h1> I have chosen to use the <a href="http://unrevoked.com/">unrevoked</a> method as detailed on the <a href="http://wiki.cyanogenmod.com/wiki/HTC_Desire_%28GSM%29:_Full_Update_Guide">Cyanogen guide</a>. As they mention, this doesn't work on PVT4 versions of the Desire. I downloaded the Linux version of unrevoked (reflash.tar.gz @ 26.3MB) and extracted the archive to the desktop. This download also includes the ClockworkMod Recovery ROM. Run the program as root, connect your phone to the PC via USB and enable USB debugging (Menu > Settings > Applications > Development > USB debugging > OK). The unrevoked3 application will find your device (showing something like "Found a Desire.") and will then (quickly) change to the terms of use. Read them, they are important. If you wish to continue, take a deep breath and press OK - This will install programs to give you administration privileges on the phone (i.e. the root account, hence the term "rooting" the phone). This process takes a while and also installs the ClockworkMod Recovery image. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/HTCDesire_Cyanogen71RC1_3.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/HTCDesire_Cyanogen71RC1_3.png" width="700" alt="unrevoked3" class="aligncenter"></a> The phone will restart and show some interesting boot-loader screens, and ultimately come back to life (about 10 minutes later, after about 4 restarts). Unrevoked3 will show "Done." and all should be good. The phone is now rooted. <h1>Flashing the Radio</h1> I have chosen not to do this, as I feel it is what caused issues with the bluetooth in previous attempts. <h1>Flashing CyanogenMod 7.1</h1> Visit the <a href="http://wiki.cyanogenmod.com/wiki/Latest_Version">CyanogenMod latest versions page</a> and get hold of the latest version for the HTC Desire. You will probably also want to get the latest version of the Google Apps too. At time of writing, the latest CyanogenMod was version 7.1 RC 1, and the latest Google Apps dated 20110613. Place the two files <i>update-cm-7.1.0-RC1-Desire-signed.zip</i> and <i>gapps-gb-20110613-signed.zip</i> onto the SD card of the phone using any method. Then you need to reboot the phone into the recovery ROM. This is done by powering the device up whilst holding the back arrow button. Use the volume up and down buttons to make sure "BOOTLOADER" is selected, and then press the power button to select it. Once you're in the boot-loader, wait a few moments for the phone to check for RUU files (green text block will flash up). After this (or after 5 seconds) again use the volume buttons to select "RECOVERY" and press power to select. <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/HTCDesire_Cyanogen71RC1_4.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/HTCDesire_Cyanogen71RC1_4.jpg" width="350" class="aligncenter"></a></tr> </table> Click to enlarge </center> You'll get the HTC screen and then the ClockworkMod Recovery ROM. This part is easiest to explain in bullet points, but you're about to select the two files you put on the SD card earlier and have the Recovery ROM flash them into the appropriate sections of the phone. This time we're using the trackball on the Desire and clicking the trackball to select things. Here we go: <ul> <li> Wipe all existing caches & data:</li> <li>* Select "Wipe data/factory reset" & confirm with "Yes"</li> </ul> <ul> <li> Flash CyanogenMod OS</li> <li>* Select "Install zip from sdcard"</li> <li>* "Choose zip from sdcard"</li> <li>* Find the file <i>update-cm-7.1.0-RC1-Desire-signed.zip</i> (or whatever version you're choosing to flash) and select it</li> <li>* Read the warnings you're given, and then select yes or no at your will</li> <li>* Wait while the phone chugs away.</li> </ul> You will notice after some time "Install from sdcard complete." to show the install of Cyanogen is complete. Once it is, you need to install Google Apps. It is done in the same way as before. Continuing from where the previous install left us: <ul> <li> Flash Google Apps</li> <li>* "Choose zip from sdcard"</li> <li>* Find the file <i>gapps-gb-20110613-signed.zip</i> (or whatever version date you use)</li> <li>* Read the warnings you're given, and then select yes or no at your will</li> <li>* Wait while the phone chugs away.</li> </ul> <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/HTCDesire_Cyanogen71RC1_6.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/HTCDesire_Cyanogen71RC1_6.jpg" width="350" class="aligncenter"></a></tr> </table> Click to enlarge </center> You will again get "Install from sdcard complete." (you hope!) Press the phone's back button to get back to the main menu, then select "reboot system now". The phone restarts to the HTC screen, and hangs there for a bit. You will eventually see the CyanogenMod 7 splashscreen. That's CyanogenMod 7.1 RC 1 flashed. <b>Be sure to check the known bugs in the version of CyanogenMod you're running!</b> <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/HTCDesire_Cyanogen71RC1_8.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/HTCDesire_Cyanogen71RC1_8.jpg" width="233" class="aligncenter"></a></tr> </table> Click to enlarge </center> <h1>Bluetooth</h1> For some reason, after having Bluetooth working in the stock HTC ROM, it does not work within CyanogenMod. I will report back here when I make any progress on this. <b>FIXME_Category :Phones</b> HTC Desire ROMs http://new.george-smart.co.uk/htc_desire_roms 3382 htc_desire_roms draft 2012-04-21 01:31:54 0 closed page closed This page just shows some printscreens of HTC Desire ROMs running on my HTC Desire. <h1>Cyanogen 7.1 RC 1</h1> You may also be interested in my notes for installing <a href="http://new.george-smart.co.uk/htc_desire_cyanogenmod_7_1rc1">HTC Desire CyanogenMod 7.1RC1</a>. <ul> <li> Android Release: Gingerbread</li> <li> HTC Sense: No</li> <li> <b>This is my main ROM, and so it has been customised from the standard, slightly.</b></li> </ul> <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/HTCDesire_Cyanogen_1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/HTCDesire_Cyanogen_1.png" width="120" alt="Cyanogen Home Screen" class="aligncenter"></a></tr> </table> Click an image to enlarge </center> <h1>Oxygen 2.1.6</h1> <ul> <li> Android Release: Gingerbread</li> <li> HTC Sense: No</li> </ul> <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/HTCDesire_Oxygen_1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/HTCDesire_Oxygen_1.png" width="120" alt="Oxygen Home Screen" class="aligncenter"></a></tr> </table> Click an image to enlarge </center> <h1>Miui 1.7.22 Beta</h1> <ul> <li> Android Release: Gingerbread</li> <li> HTC Sense: No</li> </ul> <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/HTCDesire_Miui_1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/HTCDesire_Miui_1.png" width="120" alt="Miui Home Screen" class="aligncenter"></a></tr> </table> Click an image to enlarge </center> <h1>LeeDrOiD V3.0.8.2 (A2SD)</h1> <ul> <li> Android Release: Gingerbread</li> <li> HTC Sense: Yes</li> <li> <b>Bluetooth Working</b></li> </ul> <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/HTCDesire_LeeDroid_1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/HTCDesire_LeeDroid_1.png" width="120" alt="LeeDroid Home Screen" class="aligncenter"></a></tr> </table> Click an image to enlarge </center> <h1>Pinky 1.8</h1> Would not install due to old Amend scripting. <ul> <li> Android Release: Froyo</li> <li> HTC Sense: Yes</li> </ul> <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/HTCDesire_Pinky_1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/HTCDesire_Pinky_1.png" width="120" alt="Pinky Install" class="aligncenter"></a></tr> </table> Click an image to enlarge </center> <b>FIXME_Category :Phones</b> HTC Headphones http://new.george-smart.co.uk/htc_headphones 2014-08-19 13:07:17 0 closed closed page 5048 htc_headphones draft As mentioned on the <a href="http://new.george-smart.co.uk/car_bluetooth_audio">Car Bluetooth Audio</a> page, I like to listen to music from my HTC Desire in the car. Using a Bluetooth adapter works well, but the cheap adapters are flimsy, buggy and never charged when I want them to. I decided to reverse engineer the standard HTC Desire headset to work out how the next, back and play buttons are linked into the phone. I had a basic idea of how it worked, so I decided to give it a go... Here is what I found. <h1>Connector</h1> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/4PoleConnector.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/4PoleConnector.png" width="160" alt="4-Pole Connector used on HTC Desire: Click to enlarge." class="aligncenter"></a> The (badly drawn) image on the right shows the pinout of the standard HTC Desire headphone connector. These plugs can be purchased from Maplin Electronics. They are 4-pole 3.5mm jack plugs. These are ideal for connecting to your phone. <h1>Dismantling the HTC Headset</h1> The next step was to look inside the original HTC headset to see exactly what was involved. I had read some reports of iPod Shuffle headphones requiring a microprocessor (I think the Atmel Tiny was being used). I knew that this wasn't necessary, and hoped that HTC had avoided it. They have! It is important to note that standard iPod/iPhone headsets work with the same principle as is detailed here. See the schematic section below for more detail. Here is what's inside the HTC Desire headset. I didn't learn much from this, other than the type of circuit. Values were not obtained from the disassembly - see the Component Values section below. <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/HTC_Dissassembly_1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/HTC_Dissassembly_1.jpg" width="160" alt="HTC Desire Headset Control Disassembly" class="aligncenter"></a></tr> </table> Click an image to enlarge </center> <h1>Component Values</h1> Knowing the principle of operation from the disassembly, I was able to measure the resistances required to perform certain functions. This really was just a matter of measuring resistance between the control and ground pins of the circuit. From other designs and similar pages detailing how standard iPod/iPhone headsets worked, I knew there would also be a microphone element connected across the control line. The standard iPod/iPhone headset only has one button - this is the equivelant to the HTC headset's play button, and shorts the mic element out with 0&Omega;. By measuring resistances the following table was obtained, and shows what the Next, Back and Play/Pause/Answer buttons do; electrically, of course! <table cellpadding="5" border="0" > <tr><td>Function</td><td>Measured Electrical Resistance (&Omega;)</td><td>Suggested Resistance (&Omega;)</td></tr><tr><td><b>Back</b></td><td>217.4&Omega;</td><td>270&Omega;</td></tr><tr><td><b>Play/Pause</b></td><td>0.7&Omega;</td><td>0&Omega;</td></tr><tr><td><b>Next</b></td><td>590.1&Omega;</td><td>560&Omega;</td></tr><tr><td><i>Idle</i></td><td>18K&Omega;</td><td>Resistance of mic element - not important</tr> </table> It is important to note that the resistance in the idle state (that is, with no buttons pressed), the resistance measured is that of the microphone element and is not important. <h1>Schematic</h1> The following is a schematic of the HTC headset. Prototype one (below) is built from this schematic and works perfectly. The resistance values used in the schematic are not exact. If you would prefer to get closer to those measured, then you can combine resistors in series/parallel to obtain the required resistances. I didn't find it mattered that much. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/HTCHeadsetSchematic.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/HTCHeadsetSchematic.png" width="600" alt="HTC Desire Headset Schematic: Click to enlarge." class="aligncenter"></a> People report that the 1M&Omega; resistor and the 100nF/100K&Omega; network both reduce noise on the microphone audio (if used) and improve the reliablity of the button operation. The resistor <i>R4</i> may be made to 10K&Omega; should there be noisey audio. If the buttons do not work as intended, and the circuit is correct, you may also wish to make <i>R4</i> 10K&Omega;. Adjusting the resistor for the required function (back <a href="<i>R1</i>]">or next [<i>R2</i></a>) making it closer to that stated in the Component Values section should also help. <h1>Prototype One</h1> This isn't pretty. But as a test, it proved the schematic was correct. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/HTCHeadsetSchematicPrototype.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/HTCHeadsetSchematicPrototype.jpg" width="600" alt="Headset Schematic Prototype: Click to enlarge." class="aligncenter"></a> It works great. My next step is to interface this knowledge into the car. I would ideally like to interface it to my Ford Focus' Sony CD-132-MP3 player. I am looking for a method of doing so, using the radio front panel/stalk control buttons. Failing that, and for simplicity (and the health of the car) I may simply use 3 push buttons hidden from view. <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Audio</b> <b>FIXME_Category :Phones</b> Icom CI-V Interface http://new.george-smart.co.uk/icom_ci_v_interface closed page closed 2012-04-21 01:06:25 0 icom_ci_v_interface draft 3356 <b>Still working on this project. Come back soon</b> <b>FIXME_Category :Radio</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Computers</b> <b>FIXME_Category :ToDo</b> Icom IC-7000 http://new.george-smart.co.uk/icom_ic_7000 draft icom_ic_7000 4195 closed page closed 0 2013-03-21 23:42:36 This page shows many of the pictures from inside my Icom IC-7000 transceiver. Over the 2 years I have owned it (bought second hand) I have had a faulty PA transistor and a failed memory battery. Whenever I take something like this apart, I take plenty of pictures of the insides so I can always see what's going on when it comes to reassembling the device. This was no different, and I offer the pictures here in hope that someone may find them useful. You can click on any picture to be taken to it's page on the wiki. From that page, you can then click on the image again to get the raw high resolution image. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_0f8zo5gXXC.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_0f8zo5gXXC.jpg" width="600" alt="Inside the Icom 7000" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_0maVqQNMEF.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_0maVqQNMEF.jpg" width="600" alt="Inside the Icom 7000" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_0nrCTrcp4v.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_0nrCTrcp4v.jpg" width="600" alt="Inside the Icom 7000" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_39h7sZqQlo.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_39h7sZqQlo.jpg" width="600" alt="Inside the Icom 7000" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_42sr6FvVl2.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_42sr6FvVl2.jpg" width="600" alt="Inside the Icom 7000" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_cdLYarkwdp.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_cdLYarkwdp.jpg" width="600" alt="Inside the Icom 7000" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_CuOJLA7egl.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_CuOJLA7egl.jpg" width="600" alt="Inside the Icom 7000" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_E8ig14Gc2b.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_E8ig14Gc2b.jpg" width="600" alt="Inside the Icom 7000" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_eordifO6eN.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_eordifO6eN.jpg" width="600" alt="Inside the Icom 7000" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_H5qeHcEIFP.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_H5qeHcEIFP.jpg" width="600" alt="Inside the Icom 7000" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_IJCgPyP137.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_IJCgPyP137.jpg" width="600" alt="Inside the Icom 7000" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_iRq2ZL33eC.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_iRq2ZL33eC.jpg" width="600" alt="Inside the Icom 7000" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_jtRI4tZpuL.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_jtRI4tZpuL.jpg" width="600" alt="Inside the Icom 7000" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_8m6T7SBvRz.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_8m6T7SBvRz.jpg" width="600" alt="Inside the Icom 7000" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_LaCtOtftsa.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_LaCtOtftsa.jpg" width="600" alt="Inside the Icom 7000" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_m6IRcaE1Jt.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_m6IRcaE1Jt.jpg" width="600" alt="Inside the Icom 7000" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_m6O2lIGr9U.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_m6O2lIGr9U.jpg" width="600" alt="Inside the Icom 7000" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_nLGXwfUmF8.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_nLGXwfUmF8.jpg" width="600" alt="Inside the Icom 7000" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_S0L3K2yTiV.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_S0L3K2yTiV.jpg" width="600" alt="Inside the Icom 7000" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_XCeFzEDx1R.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_XCeFzEDx1R.jpg" width="600" alt="Inside the Icom 7000" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_TNO8TJ9q7m.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_TNO8TJ9q7m.jpg" width="600" alt="Inside the Icom 7000" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_vsfln3moxO.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Icom7K_Inside_vsfln3moxO.jpg" width="600" alt="Inside the Icom 7000" class="aligncenter"></a> <b>FIXME_Category :Radio</b> <b>FIXME_Category :Electronics</b> Icom IC-7700 http://new.george-smart.co.uk/icom_ic_7700 draft icom_ic_7700 4912 closed page closed 0 2014-04-25 02:37:52 Not much here yet. You may be interested in how I got the IC7700 to interface with digital mode programs via the LAN connection? If so, check out my <a href="http://new.george-smart.co.uk/icom_ic7700_and_digital_modes_via_lan">Icom IC7700 and Digital Modes via LAN</a> page! Icom IC7700 and Digital Modes via LAN http://new.george-smart.co.uk/icom_ic7700_and_digital_modes_via_lan closed page closed 2014-05-04 00:46:46 0 icom_ic7700_and_digital_modes_via_lan draft 4936 Just some very loose notes about using various digital modes via the Icom RS-BA1 remote control software to a remote Icom IC7700 (ver2) via LAN. To start with, I am using Icom RS-BA1 version 1.60 and Fldigi 3.21.81. I guess you could use Ham Radio Deluxe or any other mode that supports CAT/CI-V control of the radio (especially PTT), but I use Fldigi and a few of Joe Taylor programs (WSPR, WSJT, etc). I configure the Icom RS-BA1 in the usual way. See my youtube video for some more information on that. Remember the com port you assign at the virtual port stage, since you will need this to interface with Fldigi. You can ignore the bit at the end of the video where I am trying to get Fldigi working there. <center><a href="http://www.youtube.com/watch?v=1h877cn0DUA">Youtube Link</a></center> <html> <center> <iframe width="425" height="349" src="http://www.youtube.com/embed/1h877cn0DUA?hl=en&fs=1" frameborder="0" allowfullscreen></iframe> </center> </html> <center><a href="http://www.youtube.com/watch?v=G4e3kzB9qaE">Youtube Link</a></center> <html> <center> <iframe width="425" height="349" src="http://www.youtube.com/embed/G4e3kzB9qaE?hl=en&fs=1" frameborder="0" allowfullscreen></iframe> </center> </html> Here my settings are shown from the Icom Remote Utility screen. The virtual CI-V com port is set here to COM5. You can use any port, you just need to substitute it throughout. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Icom7700RemoteFldigi_remoteutil.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Icom7700RemoteFldigi_remoteutil.png" width="600" class="aligncenter"></a> Next open the Control Utility, go into Connect Settings, and disable the feature to turn off the transceiver when the control software is closed (since we need it left on for Fldigi), <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Icom7700RemoteFldigi_controlutil.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Icom7700RemoteFldigi_controlutil.png" width="600" class="aligncenter"></a> Once this is done, you can fire up Fldigi 3.21.81 and proceed to the Soundcard setup. You may either select the Icom Virtual Audio device directly (as I have) or via the Microsoft Sound Mixer. Via the soundmixer affords you some more control over levels, but on my slow netbook uses unnecessary CPU resources. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Icom7700RemoteFldigi_fldigisound.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Icom7700RemoteFldigi_fldigisound.png" width="600" class="aligncenter"></a> The next thing is to convince the Remote Utility to send the audio from the software and not the microphone. This is done by clicking the MOD button from the Radio Operation > Radio List screen and selecting V Audio (instead of Mic). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Icom7700RemoteFldigi_selectvaudio.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Icom7700RemoteFldigi_selectvaudio.png" width="600" class="aligncenter"></a> Selecting V AUDIO as above ensures that the audio gets to the radio, but, you need to tell the IC7700 to select the LAN audio as opposed to any other source. Go into the IC7700 Menu > ACC and find "DATA3 MOD". Change the option to LAN. This says that The DATA3 mode should take audio from the LAN, which we have just specified takes audio from the V AUDIO interface in windows. Yay! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Icom7700RemoteFldigi_data3_lan.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Icom7700RemoteFldigi_data3_lan.jpg" width="600" class="aligncenter"></a> Next you need to select the DATA3 mode. This is done by selecting your preferred modulation technique (typically upper side band, USB) and then pressing the DATA button. Pressing momentarily enables/disables DATA. Long pressing cycles the DATA. For PSK31, USB-D3 is selected. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Icom7700RemoteFldigi_usbd3.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Icom7700RemoteFldigi_usbd3.jpg" width="600" class="aligncenter"></a> The final step is to use the MOD > V AUDIO slider to set the drive level so that the ALC is good when transmitting, so as not to over-drive the transmitter. You will also want to increase the DATA setting's filter bandwidth. I copied the settings from standard voice SSB filters. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Icom7700RemoteFldigi_data_ALC.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Icom7700RemoteFldigi_data_ALC.jpg" width="600" class="aligncenter"></a> The next step is to configure Fldigi to interface to the IC7700 via the networked CI-V interface. Again in Fldigi, navigate to the Rig Control setup. Here, you need to select Hamlib as the preferred option. Other interfaces such as RigCAT may work, but I have no experience with them. Select the com port you setup in the Icom Remote Utility (here, COM5). You may be able to select it, or you may have to type it in (as I had to). Select the Icom IC7700. The highest com speed of 19200 provides for best results with 1 stop-bit. You will need to enable PTT via Hamlib Command. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Icom7700RemoteFldigi_fldigirigctl.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Icom7700RemoteFldigi_fldigirigctl.png" width="600" class="aligncenter"></a> At this point, hopefully, you will see that Fldigi reads the radio frequency, and the radio responds properly to changes in frequency and mode. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Icom7700RemoteFldigi_fldigiok.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Icom7700RemoteFldigi_fldigiok.png" width="600" class="aligncenter"></a> You just need to set the levels for transmit and receive as you would with any other transceiver interface. I advise you setting all of the filters and power level in the Remote Control program first, and then changing to Fldigi afterwards, since you cannot run both softwares at the same time. This approach also works with many other digital modes, for example WSJT-X. Below the settings I used via the LAN for WSJT-X: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Icom7700RemoteFldigi_wsjtx.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Icom7700RemoteFldigi_wsjtx.png" width="600" class="aligncenter"></a> And a snap of it decoding: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Icom7700RemoteFldigi_wsjtxdec.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Icom7700RemoteFldigi_wsjtxdec.png" width="600" class="aligncenter"></a> Another snap of this approach working with <a href="http://freedv.org/">FreeDV</a>: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Icom7700RemoteFldigi_freedv_operating.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Icom7700RemoteFldigi_freedv_operating.png" width="600" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Icom7700RemoteFldigi_freedv_settings.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/05/Icom7700RemoteFldigi_freedv_settings.png" width="600" class="aligncenter"></a> <b>FIXME_Category :Radio</b> <b>FIXME_Category :Howto</b> Icom IC7700 and Fldigi http://new.george-smart.co.uk/icom_ic7700_and_fldigi draft icom_ic7700_and_fldigi 4906 page closed closed 0 2014-04-25 02:19:06 This page was moved here: <a href="http://new.george-smart.co.uk/icom_ic7700_and_digital_modes_via_lan">Icom IC7700 and Digital Modes via LAN</a>. <a href="/contact-me">Please report this message to the webmaster</a>. Icom Roger Beep http://new.george-smart.co.uk/icom_roger_beep 5039 draft icom_roger_beep 0 2014-08-13 15:47:31 page closed closed During VHF and UHF UKAC contests, conditions rapidly change. It is often useful to have a roger beep. Wiktionary defines a roger beep as: <i>A tone or tones added to the end of a broadcast segment to indicate that the user/operator has concluded speaking.</i> This design uses a Microchip PIC micro-controller (16F627A, 16F84A, etc) to read the signals sent by the radio and to generate the beep. I use a 16F627A as that's what I have, but you can use any from that series, or the 16F84 series. Schematic for the project: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/RogerBeep_Schematic.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/RogerBeep_Schematic.png" width="600" alt="Circuit Diagram" class="aligncenter"></a> <b>Components X1 and C6 & C7 can be ignored as they are not needed.</b> The code for this project uses the PIC's own internal oscillator, and does not require any external components. Preset resistor pot RV1 is a 10K linear pot. The PCB layout and copper mask can be found below. Also available is the <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/RogerBeep_Gerber.zip">Gerber/Excellon files in ZIP format</a>. The PNG images are scaled correctly at 300 DPI and the PDFs should be printed at 100% scaling on A4 paper. <center><table cellpadding="5" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/RogerBeep_Silk.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/RogerBeep_Silk.png" width="300" class="aligncenter"></a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/RogerBeep_Copper.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/RogerBeep_Copper.png" width="300" class="aligncenter"></a></td></tr><tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/RogerBeep_Silk.png">Silk Screen at 300 DPI</a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/RogerBeep_Copper.png">Copper Mask at 300 DPI</a></td></tr><tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/RogerBeep_Silk.pdf">Silk Screen PDF (A4 100%)</a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/RogerBeep_Copper.pdf">Copper Mask PDF (A4 100%)</a></tr> </table> </center> The only connection between the radio and this circuit is made via the accessory socket. The device is powered via the radio, so it will pay to thoroughly test this project before connecting it up to the radio. Currently the only setting is the variable resistor, which sets the tone's amplitude. This is set such that the ALC on the transmit reaches full, but does not over drive. Follow the radio manual's instructions for using DATA modes to set the level. Of the 13 pins in the ACC socket, only 5 are used. The block diagram shows the basic functionality. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/RogerBeep_BlockDiagram.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/RogerBeep_BlockDiagram.png" width="700" alt="Block Diagram" class="aligncenter"></a> When the project is first powered, all the LEDs flash to show the CPU is running. In the idle state, just the power LED is on. When the radio is keyed (via any method) either the VSEND (VHF) or HSEND (HF) line is toggled by the radio. The CPU detects that change and puts on the PTT LED to show the roger beep project is aware of the radio's transmitting status. When you de-key the transmitter, the CPU again detects this change. At this point, the project immediately re-keys the radio and creates the beep tone. This lasts a short period and then the radio is again de-keyed. This is fully automatic. <b>The hex file for the Microchip PIC 16F627A can be found here: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/RogerBeep_Firmware.zip">RogerBeep 16F627 Firmware (ZIP/HEX)</a>.</b> The HEX file is zipped as it is easily accepted by my website's CMS. If you require a slightly modified functionality then this hardware should provide an easy enough platform for you to experiment with your own firmwares inside the PIC MCU. The LEDs are for debugging and are not required, so feel free to omit these if you don't need them. Finally, a short video of the project working. <center><a href="http://www.youtube.com/watch?v=kiS2vGW_ZyI">Youtube Link</a></center> <html> <center> <iframe width="425" height="349" src="http://www.youtube.com/embed/kiS2vGW_ZyI?hl=en&fs=1" frameborder="0" allowfullscreen></iframe> </center> </html> Installing Contiki http://new.george-smart.co.uk/installing_contiki draft installing_contiki 4897 closed page closed 0 2014-04-10 12:30:23 This page was written for Mint Linux 14 (Cinnamon). It should apply equally to Ubuntu distributions around the 12 era. This guide is opposed to installing the standard suggested virtual-machine solution. The <a href="https://github.com/kb2ma/contiki/wiki">Contiki Wiki</a> has some very valuable information and is worth a look. <h1>Download & Extract Contiki Source</h1> The first thing to do is to start downloading <a href="http://contiki-os.org/">Contiki</a>. <a href="http://contiki-os.org/download.html">The Contiki-OS Download Page</a> has a link to <a href="http://sourceforge.net/projects/contiki/files/Contiki/">download Contiki source code</a>. At the time of writing, Contiki2.6 was the latest. <a href="http://sourceforge.net/projects/contiki/files/Contiki/Contiki%202.6/contiki-2.6.zip/download">Direct link here</a> (25MB). Once it's downloaded, you'll have a ZIP file: <i>contiki-2.6.zip</i> in my case. The next thing to do is to extract this zip file, and put the contents into your home directory and rename the folder, removing the version number so that the files have the path ''/home/username/contiki. You can do this graphically, or you can do it with the terminal: <blockquote> unzip contiki-2.6.zip mv contiki-2.6 ~/ mv ~/contiki-2.6 ~/contiki </blockquote> You should end up with the following in your home directory: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/Contiki_Source.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/Contiki_Source.png" width="600" alt="Contiki Source" class="aligncenter"></a> <h1>MSP430 Toolchain</h1> The next thing to do is to install the MSP430 toolchain. If you're running a newer Linux distribution which has these packages then you're in for a quick and easy ride. See <a href="http://pfalcon-oe.blogspot.co.uk/2012/03/developing-for-ti-launchpad-msp430.html">here</a> for more information. <blockquote> apt-get install binutils-msp430 gcc-msp430 msp430-libc msp430mcu mspdebug ant openjdk-7-jdk </blockquote> If not, then my advice is to upgrade! Seriously. If you cannot/will not change, then check out these links: <ul> <li> PPA repository for MSP430 Toolchain: https://launchpad.net/~cprov/+archive/msp430</li> <li> Fetch(); Decode(); Execute; Blog: http://recolog.blogspot.co.uk/2010/06/installing-contiki-and-cooja-simulator.html</li> </ul> Once you're all done, check that the compiler is in the path and that it is all ready to go. I just confirm this by calling the compiler from the terminal with the version flag: <blockquote> $ msp430-gcc -v Using built-in specs. Reading specs from /usr/lib/gcc/msp430/4.6.3/../../../../msp430/lib/msp430mcu.spec COLLECT_GCC=msp430-gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/msp430/4.6.3/lto-wrapper Target: msp430 Configured with: '/build/buildd/gcc-msp430-4.6.3~mspgcc-20120406/./gcc-4.6.3/configure' -v --enable-languages=c,c++ --prefix=/usr --infodir='/usr/share/info' --mandir='/usr/share/man' --bindir='/usr/bin' --libexecdir='/usr/lib' --libdir='/usr/lib' --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=msp430 Thread model: single gcc version 4.6.3 20120301 (mspgcc LTS 20120406 unpatched) (GCC) </blockquote> If you get something similar, then you're ready to roll! <h1>Compile an Example</h1> So the next stage is to see if it's working. Let's compile an example. I created a folder in my home directory called <i>contiki-test</i> and then copied the LED fading example from the example/sky folder to the new test folder. The following commands should do this: <blockquote> mkdir ~/contiki-test/ cp ~/contiki/examples/sky/rt-leds.c ~/contiki-test/ </blockquote> As well as the source file <i>rt-leds.c</i> you will also need to have the <i>makefile</i>. Mine is as follows; remember, that your username may be different from <i>george</i>: <blockquote> CONTIKI=/home/george/contiki include $(CONTIKI)/Makefile.include </blockquote> Once you have that, you're ready to try and compile it. Issue the command and hope there are no errors ... <blockquote> $ make rt-leds TARGET=sky </blockquote> You'll get lots of output from the compiler. Once it's finished, you should have a file called <i>rt-leds.sky</i>. If so, then you've won! <h1>Test Cooja</h1> We'll test the Cooja simulator too. My <a href="http://new.george-smart.co.uk/contiki_cooja_simulator">Contiki Cooja Simulator</a> page has much more about Cooja on it. <blockquote> cd ~/contiki/ant/cooja ant run </blockquote> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/Contiki_Cooja.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/Contiki_Cooja.png" width="600" alt="Cooja Simulator" class="aligncenter"></a> <h1>MSPsim Simulator</h1> The last simulator to check is the MSP Simulator, and that is invoked like this: <blockquote> make rt-leds.mspsim TARGET=sky </blockquote> This offers simulation of a single node's hardware, in contrast to Cooja's network style simulation. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/Contiki_MSPsim.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/Contiki_MSPsim.png" width="600" alt="MSP Simulator" class="aligncenter"></a> <h1>Errors I Found</h1> <h2>relocation truncated to fit: R_MSP430_16_BYTE</h2> This error is solved by editing <i>contiki/cpu/msp40/Makefile.msp430</i> and removing the -g option from line 132, as described <a href="http://comments.gmane.org/gmane.os.contiki.devel/13869">here</a>. Line 132 looses the <b>-g</b> option, changing from <blockquote> CFLAGSNO = -Wall -mmcu=$(CC_MCU) -g $(CFLAGSWERROR) </blockquote> to <blockquote> CFLAGSNO = -Wall -mmcu=$(CC_MCU) $(CFLAGSWERROR) </blockquote> Fixed the issue for me. <h1>Other Stuff</h1> This page just provides a few links and tips for anyone looking to get started with Contiki. Firstly, Contiki provides an <a href="http://www.contiki-os.org/p/instant-contiki.html">instant environment</a> which can be booted with a virtual machine and used. I wanted to have my environment run natively so I set about trying to work it out using Ubuntu. This process describes Ubuntu 10.04.3 LTS. <ul> <li> I followed this page as a basic set of instructions:</li> : <a href="http://www.sics.se/contiki/wiki/index.php/Instant_Contiki_Install_Scripts">http://www.sics.se/contiki/wiki/index.php/Instant_Contiki_Install_Scripts</a></ul> <ul> <li> I used the toolchain from this page, and installed via PPA</li> : <a href="https://launchpad.net/~cprov/+archive/msp430">https://launchpad.net/~cprov/+archive/msp430</a></ul> <ul> <li> This page may also be of interest</li> : <a href="http://recolog.blogspot.com/2010/06/installing-contiki-and-cooja-simulator.html">http://recolog.blogspot.com/2010/06/installing-contiki-and-cooja-simulator.html</a></ul> <h2>Shortcuts & Links</h2> <blockquote> #Sourcing the tinyos environment variable setup script source /opt/tinyos-2.1.1/tinyos.sh #Setting up Contiki links echo -n "Setting up for Contiki: " alias phd='cd /home/george/Work/PhD/' alias contiki='cd /home/george/Work/PhD/Contiki/' alias motelisten='/home/george/contiki/tools/sky/serialdump-linux -b115200' echo "OK" </blockquote> <h1>Tutorials / Guides / Howtos</h1> <ul> <li> <a href="http://anrg.usc.edu/contiki/index.php/Main_Page">Contiki Development at ANRG, University of Southern California</a></li> </ul> <b>FIXME_Category :Howto</b> <b>FIXME_Category :Linux</b> <b>FIXME_Category :Academic</b> <b>FIXME_Category :Programming</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Computers</b> <b>FIXME_Category :Contiki</b> Interesting Stuff http://new.george-smart.co.uk/interesting_stuff 0 2014-01-26 17:45:42 closed closed page 4878 interesting_stuff draft This page is a load of useful and interesting links for me to check back with at a later stage: <ul> <li> <a href="http://www.whence.com/minimodem/">minimodem by Kamal Mostafa</a></li> Internet Monitoring http://new.george-smart.co.uk/internet_monitoring 5467 internet_monitoring draft 2016-03-07 15:46:24 0 closed page closed After moving to a new house in Norfolk, we had some problems with the internet connection. After we got the initial dodgy cable connections out of the way, I wanted to monitor the internet connection service for a while. I decided to make a simple script to monitor test the connection, and use <a href="https://en.wikipedia.org/wiki/Cron">cron</a> to call the script regularly. The script would also need to append the latest test results to a file. There was some interest on Twitter about the script and how I managed to get this working, so I decided to write it up here, as people seemed interested. This is not a thorough explanation, but a working example. <h1>Measuring the Connection</h1> I suppose many of you are familiar with <a href="http://www.speedtest.net/">SpeedTest.Net</a>. My first thought was to run a test with that, and scrape the HTML output from the page. While looking if it had been done before (never reinvent the wheel) I came across a command line interface to SpeedTest.Net, called speedtest-cli which <a href="https://github.com/sivel/speedtest-cli">can be found on github here</a>. The basic command <i>speedtest-cli</i> performs a test, reporting ping, download and upload bandwidth, something like the following: <blockquote> george@marconi:~$ ./speedtest-cli Retrieving speedtest.net configuration... Retrieving speedtest.net server list... Testing from University College London (128.40.255.50)... Selecting best server based on latency... Hosted by Virgin Media (London) <a href="0.96">km</a>: 6.456 ms Testing download speed........................................ Download: 760.40 Mbit/s Testing upload speed.................................................. Upload: 399.64 Mbit/s george@marconi:~$ </blockquote> The script automatically picks the closest server. You can hard-choose a server, using the <i>--server SERVERID</i> command, where SERVERID comes from the <i>--list</i> command. A small section of servers, sorted by distance is shown below, where the number before the bracket is the SERVERID number: <blockquote> 2789) Vodafone UK (London, Great Britain) <a href="0.96">km</a> 3728) Virgin Media (London, Great Britain) <a href="0.96">km</a> 5980) SoftLayer Technologies, Inc. (London, Great Britain) <a href="0.96">km</a> 6151) Burstfire Networks Ltd (London, Great Britain) <a href="0.96">km</a> 4078) Vorboss Limited (London, Great Britain) <a href="0.96">km</a> 6032) fdcservers.net (London, Great Britain) <a href="0.96">km</a> 6115) Cybersmart Pty Ltd (London, Great Britain) <a href="0.96">km</a> </blockquote> To force the test to be done with a specific server, you run <i>speedtest-cli --server 6151</i>, for example. <blockquote> george@marconi:~$ ./speedtest-cli --server 6151 Retrieving speedtest.net configuration... Retrieving speedtest.net server list... Testing from University College London (128.40.255.50)... Hosted by Burstfire Networks Ltd (London) <a href="0.96">km</a>: 4.62 ms Testing download speed........................................ Download: 678.21 Mbit/s Testing upload speed.................................................. Upload: 370.13 Mbit/s george@marconi:~$ </blockquote> The only other useful command is the <i>--simple</i> flag which reduces the output to just the test results. These can then be parsed by a shell script and saved into a log file. <blockquote> george@marconi:~$ ./speedtest-cli --server 6151 --simple Ping: 2.908 ms Download: 716.53 Mbit/s Upload: 222.54 Mbit/s george@marconi:~$ </blockquote> From here, we can write a script to log these results. <h1>Measuring & Logging Script</h1> With the measurement command outputting useful numbers, we can then attempt to parse this data and save it. The easiest way to do this is to write the results to a temporary file, parse the temporary file for the bits you want, save the results, and remove the temporary file. That's exactly what the script below does. The script below is called <i>speedtest-cli-save</i> <blockquote> #!/bin/bash echo -n "Start: " > /tmp/speedtest.tmp date >> /tmp/speedtest.tmp /home/george/speedtest-cli --simple --server 4204 >> /tmp/speedtest.tmp echo -n "Stop: " >> /tmp/speedtest.tmp date >> /tmp/speedtest.tmp DATE=`date +"%D"` TIME=`date +"%T"` PING=`cat /tmp/speedtest.tmp | grep Ping | sed -e "s/.*: //" -e "s/\ //"` UPLD=`cat /tmp/speedtest.tmp | grep Upload | sed -e "s/.*: //" -e "s/\ //"` DNLD=`cat /tmp/speedtest.tmp | grep Download | sed -e "s/.*: //" -e "s/\ //"` echo "$DATE,$TIME,$PING,$DNLD,$UPLD" >> /home/george/speedtest.txt </blockquote> Each time the above script is run, performs a speedtest using the command line program, and saves the results, here to '/home/george/speedtest.txt'. The column format is "date, time, ping, download speed, upload speed" <blockquote> 03/05/16,11:01:17,51.369ms,4.58Mbit/s,0.28Mbit/s </blockquote> <h1>Using Cron</h1> The above script is saved as /home/george/speedtest-cli-save and when run, appends the test data to the end of the file /home/george/speedtest.txt which is a CSV file. To perform regular periodic sampling of the internet speeds, I use <a href="https://en.wikipedia.org/wiki/Cron">cron</a> to initiate the speedtest-cli-save script, and thus the test. My cron entry in crontab looks like the following: <blockquote> # m h dom mon dow command */15 * * * * /home/george/speedtest-cli-save </blockquote> This executes the script every 15 minutes, every hour of the day, every day of the week, every month. <h1>Viewing the Results</h1> The resulting CSV file, here, /home/george/speedtest.txt, looks something like this, depending on your Internet measurements. <blockquote> 03/07/16,09:31:17,226.589ms,4.63Mbit/s,0.00Mbit/s 03/07/16,09:46:11,189.813ms,4.67Mbit/s,0.00Mbit/s 03/07/16,10:01:16,307.717ms,4.54Mbit/s,0.05Mbit/s 03/07/16,10:16:27,306.419ms,3.85Mbit/s,0.00Mbit/s 03/07/16,10:30:50,231.194ms,4.52Mbit/s,0.00Mbit/s 03/07/16,13:45:54,58.919ms,4.75Mbit/s,0.00Mbit/s 03/07/16,14:01:02,54.287ms,4.62Mbit/s,0.00Mbit/s 03/07/16,14:16:07,137.906ms,4.76Mbit/s,0.00Mbit/s 03/07/16,14:30:58,52.558ms,4.76Mbit/s,0.00Mbit/s 03/07/16,14:46:08,56.767ms,4.75Mbit/s,0.00Mbit/s 03/07/16,15:01:15,58.405ms,4.72Mbit/s,0.05Mbit/s 03/07/16,15:16:00,55.406ms,4.77Mbit/s,0.00Mbit/s </blockquote> By opening the CSV data or copy/pasting into LibreOffice (or Microsoft Excel, etc.), you can graph the results as a function of time. Care should be taken when formatting the date and time, especially on longer runs. You can see here that the upload is pretty poor, and the ping very variable. From this data, it is easy to use standard office skills to generate an X-Y scatter graph showing the bandwidths and ping, such as below. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/03/Internet_Monitor_Graph.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/03/Internet_Monitor_Graph.png" width="600" alt="Internet Monitor Graph" class="aligncenter"></a> Internet Sharing Script http://new.george-smart.co.uk/internet_sharing_script page closed closed 0 2011-02-25 23:03:41 draft internet_sharing_script 1742 I wrote a script for Linux to allow the sharing of internet. This was used in my university flat, where I had internet supplied by wireless (wlan0) and needed to share it over wired ethernet (eth0). The script below does this: <h1>The Script</h1> This script should allow you to bridge internet connections as outlined above. You can <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/internet-share.sh">download it from here</a>. <blockquote> #!/bin/bash # Internet Sharing Script # George Smart, M1GEO - Nov 2009 echo "IPv4 Port Forwarding Script" echo "George Smart, M1GEO" if [ $# -ne 3 ]; then echo "Usage: $0 <source device> <output device> <output ip address>" echo "eg: $0 wlan0 eth0 10.0.0.1" echo " bridges wireless to wired" exit -1 else INPUT="$1" OUTPUT="$2" NETADD="$3" echo "Source: $INPUT" echo "Output: $OUTPUT" echo "IP Add: $NETADD" # DO IT! sudo ifconfig eth0 $NETADD up sudo iptables -A FORWARD -i $INPUT -o $OUTPUT -s $NETADD/24 -m conntrack --ctstate NEW -j ACCEPT sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT sudo iptables -A POSTROUTING -t nat -j MASQUERADE sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward" sudo sysctl net.ipv4.conf.default.forwarding=1 2>&1 > /dev/null sudo sysctl net.ipv4.conf.all.forwarding=1 2>&1 > /dev/null echo "Done..." fi </blockquote> <h1>Usage</h1> To use the script, you call it from the command line and give the three command-line arguments: <blockquote> user@box ~$ ./internet-share.sh wlan0 eth0 10.0.0.1 </blockquote> <ul> <li> Source Device, e.g. <i>wlan0</i></li> <li> Destination Device, e.g. <i>eth0</i></li> <li> Output IP Address, e.g. <i>10.0.0.1</i></li> </ul> The source device needs to be the device where the internet is accessible. In the above example, it is the wireless adapter <i>wlan0</i>. This then bridges wlan0 to the ethernet card at <i>eth0</i>, and opens eth0 with the IP-address entered, <i>10.0.0.1</i>. Devices connecting via the ethernet port should be able to set the default gateway to 10.0.0.1. You will need to manually configure the client device, as this script does not setup DHCP. I suggest using a client IP of 10.0.0.2 and using the DNS server 8.8.8.8 [http://code.google.com/speed/public-dns/]. <b>FIXME_Category :Computers</b> <b>FIXME_Category :Programming</b> Internship 09 http://new.george-smart.co.uk/internship_09 2011-02-25 22:13:31 0 closed closed page 1714 internship_09 draft You may also be interested in my <a href="http://new.george-smart.co.uk/spartan_3e">Spartan-3E</a> experiences, and Using the <a href="http://new.george-smart.co.uk/xilinx_jtag_linux">Xilinx USB JTAG Programmers under Linux</a> <h2>Summer Internship 2009 : UCL Optics</h2> This summer (Summer 2009) I am working for my university, University College London. The specification is to design an optical system to take gigabit ethernet into an FPGA and then serialise the data, send it over a 1.25Gb/s optical link to many clients. I will be designing two seperate systems. One will be impliemented in an telephone exchange type location, where there is a constant transmission of data. The other will be implimented at the client end, where the transmission mode is burst. Each client receives all data sent by the exchange, and acts only on the data addressed to it. The client waits for a frame from the exchange, identifying a timeslot for the client to uplink to the exchange. This process is time-divisision multiplexing. <h2>My Task</h2> <ul> <li> Once Dr Mitchell has ordered the optical tranceiver modules, I have to first put them onto a PCB and create a kind of evaluation board. This board will allow for easy access to IO of the tranceiver.</li> </ul> <ul> <li> To connect the previuosly created tranceiver development boards to the Maxim development boards. These boards will house the shift registers (serialisers/deserialisers) and associated logic.</li> </ul> <ul> <li> Finally, to connect the Maxim development boards to an FPGA (development board) and write some VHDL code to make the system work.</li> </ul> <h2>My Progress</h2> Having try to create the MAX3880, MAX3890 and MAX3886 schematic symbols in Easy-PC (Number One Systems), I was told that we would be using development boards. This made life much simplier, as Easy-PC did not look like it wanted to be used for sucn an ambitious task. I am currently trying to learn VHDL. This is easier said than done. Really, I am waiting on the FPGA development board, so that I can begin wiring code - start off flashing some LEDs, I think! <b>FIXME_Category :Academic</b> <b>FIXME_Category :Electronics</b> Internship 10 http://new.george-smart.co.uk/internship_10 closed closed page 2011-05-11 14:53:07 0 internship_10 draft 1936 Toward the end of the 2009/2010 academic year, I was approached by a lecturer from my university asking if I would be interested in helping with a project working with the Tate museum. These would be programming projects for media artworks. Programming languages required will be C/C++ and Java. = Background = As artwork evolves from traditional mediums such as paper and print to digital arts, the maintenance work associated with the upkeep and conservation of the artwork is very different. The Tate already has a wide and varied bank of experts with the knowledge required to maintain paintings and more traditional artworks. However, as these digital artworks become more and more common, galleries such as The Tate will be required to maintain them. The physical system, such as computers, cameras and projectors, will eventually wear out and fail. While they will be serviceable for a duration of time after the creation of the art, eventually the physical system will become so out of date that it is no longer maintainable. Clearly, the gallery does not want to loose the artwork (and of course it's financial investment). When a digital art is purchased, the gallery buys documentation detailing how the physical system works. This documentation should allow the gallery to employ engineers to recreate the physical system from the documentation. <h1>Aim</h1> In order to make sure that it is possible to re-create the physical system, I am required to develop a protocol which allows the gallery to review the documentation supplied by the artist, and conclude if the documentation is of high enough quality and detail to recreate the physical layer. Another important aspect would be to explore the possibility of emulating the older system on a newer one. Such an example of this would be looking at the compatibility of software written for Windows 95 on a new Windows 7 computer; or the possibility of emulating Windows XP program with Wine on a Linux machine. <h1>The Tin Hat</h1> Shortly after I conducted some preliminary investigations into this project I reported back to detailing what I had achieved. Somewhere along the line it was decided that my preliminary investivation results were good enough for that they wanted, and so become <i>the solution</i>. Ah well. Another one down :( <b>FIXME_Category :Computers</b> <b>FIXME_Category :Academic</b> <b>FIXME_Category :Programming</b> Isolated Camera Trigger http://new.george-smart.co.uk/isolated_camera_trigger isolated_camera_trigger draft 5458 closed closed page 0 2016-02-29 13:42:49 <b>Placeholder Page.</b> In January 2014, I was contracted by <a href="http://www.loosecannonfilms.com/">Loose Cannon Films</a> and <a href="http://lorenzolevrini.com/">Lorenzo Levrini DOP</a> to design a isolated camera rig for around 36 Canon DLSR cameras to produce the Time-slice scenes in <a href="http://www.17kind.com/">The Seventeenth Kind</a>. I will get around to properly writing this up, but, in the mean time, here are some pictures of the rig, behind the scenes, and a clip of the output. <h1>Clip</h1> <center><a href="http://www.youtube.com/watch?v=knGpvAZQqGU">Youtube Link</a></center> <html> <center> <iframe width="425" height="349" src="http://www.youtube.com/embed/knGpvAZQqGU?hl=en&fs=1" frameborder="0" allowfullscreen></iframe> </center> </html> <h1>Building</h1> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/02/camera_trigger_build_1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/02/camera_trigger_build_1.jpg" width="600" alt="Isolated Camera Trigger for 17th Kind" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/02/camera_trigger_build_2.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/02/camera_trigger_build_2.jpg" width="600" alt="Isolated Camera Trigger for 17th Kind" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/02/camera_trigger_build_3.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/02/camera_trigger_build_3.jpg" width="600" alt="Isolated Camera Trigger for 17th Kind" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/02/camera_trigger_build_4.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/02/camera_trigger_build_4.jpg" width="600" alt="Isolated Camera Trigger for 17th Kind" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/02/camera_trigger_build_5.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/02/camera_trigger_build_5.jpg" width="600" alt="Isolated Camera Trigger for 17th Kind" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/02/camera_trigger_build_6.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/02/camera_trigger_build_6.jpg" width="600" alt="Isolated Camera Trigger for 17th Kind" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/02/camera_trigger_build_7.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/02/camera_trigger_build_7.jpg" width="600" alt="Isolated Camera Trigger for 17th Kind" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/02/camera_trigger_build_8.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/02/camera_trigger_build_8.jpg" width="600" alt="Isolated Camera Trigger for 17th Kind" class="aligncenter"></a> <h1>Behind the Scenes</h1> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/02/camera_trigger_bts_1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/02/camera_trigger_bts_1.jpg" width="600" alt="Isolated Camera Trigger for 17th Kind" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/02/camera_trigger_bts_2.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/02/camera_trigger_bts_2.jpg" width="600" alt="Isolated Camera Trigger for 17th Kind" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/02/camera_trigger_bts_3.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/02/camera_trigger_bts_3.jpg" width="600" alt="Isolated Camera Trigger for 17th Kind" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/02/camera_trigger_bts_4.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/02/camera_trigger_bts_4.jpg" width="600" alt="Isolated Camera Trigger for 17th Kind" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/02/camera_trigger_bts_5.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/02/camera_trigger_bts_5.jpg" width="600" alt="Isolated Camera Trigger for 17th Kind" class="aligncenter"></a> JT65 http://new.george-smart.co.uk/jt65 4483 jt65 draft 2013-05-16 00:36:28 0 closed closed page This page is closely based on the method described on the GB3VHF website, <a href="http://www.gb3vhf.co.uk/GB3VHFReceiving.html">referenced here</a>. The image below is of a series of JT-65B receptions made via WSJT 9.02 on 01 September 2011. I am not entirely sure of what all the figures mean here, but the CW reception over the same period was <i>579</i>. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/WSJT_JT65B_GB3VHF.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/WSJT_JT65B_GB3VHF.png" width="700" alt="WSJT receiving GB3VHF via JT65B" class="aligncenter"></a> I also tried JT65A on 20 metres receiving and managed to hear a few stations: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/WSJT_JT65A_20m_Spec.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/WSJT_JT65A_20m_Spec.png" width="700" alt="WSJT receiving 20m" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/WSJT_JT65A_20m_WSJT.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/WSJT_JT65A_20m_WSJT.png" width="700" alt="WSJT receiving 20m" class="aligncenter"></a> The software, WSJT, can be <a href="http://www.physics.princeton.edu/pulsar/K1JT/wsjt.html">downloaded from here</a>. <b>FIXME_Category :Radio</b> <b>FIXME_Category :Computers</b> <b>FIXME_Category :Linux</b> JT65B http://new.george-smart.co.uk/jt65b closed page closed 0 2013-05-16 00:33:42 jt65b draft 4481 This page was moved here: <a href="http://new.george-smart.co.uk/jt65">JT65</a>. <a href="/contact-me">Please report this message to the webmaster</a>. Jubilee Radio Station http://new.george-smart.co.uk/jubilee_radio_station 2013-04-04 17:51:54 0 closed page closed 4250 jubilee_radio_station draft This is just a quick snapshot of the station I used for MQ1GEO. The radio is an Icom IC-7400 with a Heathkit SB-200 linear amplifier and 1KW ATU. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/MQ1GEO_Jubilee_Station.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/MQ1GEO_Jubilee_Station.jpg" width="600" alt="Amateur Radio Station for Queen's Diamond Jubilee MQ1GEO" class="aligncenter"></a> <b>FIXME_Category :Radio</b> K8055 http://new.george-smart.co.uk/k8055 k8055 draft 1463 closed page closed 0 2011-01-11 13:18:35 This page was moved here: <a href="http://new.george-smart.co.uk/velleman_k8055">Velleman K8055</a>. <a href="/contact-me">Please report this message to the webmaster</a>. Kenwood PMRs http://new.george-smart.co.uk/kenwood_pmrs 0 2014-11-24 11:08:48 page closed closed 5143 draft kenwood_pmrs This page details the conversion and programming of some of the Kenwood PMRs available on the second hand market. <center><font color="red" size="4">Sorry this page is still being written, and may appear a bit confusing.</font></center> There are two versions of the Kenwood Programming Software (KPG-20D and KPG-67D) on this page. They are in the downloads section below. They will program the following radios: <html> <TABLE CELLSPACING="0" COLS="7" BORDER="0"> <COLGROUP WIDTH="92"></COLGROUP> <COLGROUP WIDTH="99"></COLGROUP> <COLGROUP WIDTH="71"></COLGROUP> <COLGROUP WIDTH="45"></COLGROUP> <COLGROUP WIDTH="134"></COLGROUP> <COLGROUP SPAN="2" WIDTH="127"></COLGROUP> <TR> <TD HEIGHT="16" ALIGN="LEFT"><B>Model</B></TD> <TD ALIGN="LEFT"><B>Class</B></TD> <TD ALIGN="LEFT"><B>Channels</B></TD> <TD ALIGN="LEFT"><B>Band</B></TD> <TD ALIGN="LEFT"><B>Frequency Range</B></TD> <TD ALIGN="LEFT"><B>Bandwidth</B></TD> <TD ALIGN="LEFT"><B>Program Software</B></TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-249T</TD> <TD ALIGN="LEFT">Portable Radio</TD> <TD ALIGN="LEFT" SDVAL="200" SDNUM="2057;">200</TD> <TD ALIGN="LEFT">VHF</TD> <TD ALIGN="LEFT">150-174</TD> <TD ALIGN="LEFT">Hardware Adjusted</TD> <TD ALIGN="LEFT">KPG-20D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-249E</TD> <TD ALIGN="LEFT">Portable Radio</TD> <TD ALIGN="LEFT" SDVAL="200" SDNUM="2057;">200</TD> <TD ALIGN="LEFT">VHF</TD> <TD ALIGN="LEFT">146-174</TD> <TD ALIGN="LEFT">Hardware Adjusted</TD> <TD ALIGN="LEFT">KPG-20D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-349T</TD> <TD ALIGN="LEFT">Portable Radio</TD> <TD ALIGN="LEFT" SDVAL="200" SDNUM="2057;">200</TD> <TD ALIGN="LEFT">UHF</TD> <TD ALIGN="LEFT">438-470</TD> <TD ALIGN="LEFT">Hardware Adjusted</TD> <TD ALIGN="LEFT">KPG-20D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-349T4</TD> <TD ALIGN="LEFT">Portable Radio</TD> <TD ALIGN="LEFT" SDVAL="200" SDNUM="2057;">200</TD> <TD ALIGN="LEFT">UHF</TD> <TD ALIGN="LEFT">420-450</TD> <TD ALIGN="LEFT">Hardware Adjusted</TD> <TD ALIGN="LEFT">KPG-20D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-349E</TD> <TD ALIGN="LEFT">Portable Radio</TD> <TD ALIGN="LEFT" SDVAL="200" SDNUM="2057;">200</TD> <TD ALIGN="LEFT">UHF</TD> <TD ALIGN="LEFT">440-470</TD> <TD ALIGN="LEFT">Hardware Adjusted</TD> <TD ALIGN="LEFT">KPG-20D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-349M4</TD> <TD ALIGN="LEFT">Portable Radio</TD> <TD ALIGN="LEFT" SDVAL="200" SDNUM="2057;">200</TD> <TD ALIGN="LEFT">UHF</TD> <TD ALIGN="LEFT">400-420</TD> <TD ALIGN="LEFT">Hardware Adjusted</TD> <TD ALIGN="LEFT">KPG-20D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-709T</TD> <TD ALIGN="LEFT">Mobile Radio</TD> <TD ALIGN="LEFT" SDVAL="200" SDNUM="2057;">200</TD> <TD ALIGN="LEFT">VHF</TD> <TD ALIGN="LEFT">150-174</TD> <TD ALIGN="LEFT">Hardware Adjusted</TD> <TD ALIGN="LEFT">KPG-20D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-709E</TD> <TD ALIGN="LEFT">Mobile Radio</TD> <TD ALIGN="LEFT" SDVAL="200" SDNUM="2057;">200</TD> <TD ALIGN="LEFT">VHF</TD> <TD ALIGN="LEFT">146-174</TD> <TD ALIGN="LEFT">Hardware Adjusted</TD> <TD ALIGN="LEFT">KPG-20D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-809T</TD> <TD ALIGN="LEFT">Mobile Radio</TD> <TD ALIGN="LEFT" SDVAL="200" SDNUM="2057;">200</TD> <TD ALIGN="LEFT">UHF</TD> <TD ALIGN="LEFT">438-470</TD> <TD ALIGN="LEFT">Hardware Adjusted</TD> <TD ALIGN="LEFT">KPG-20D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-809T4</TD> <TD ALIGN="LEFT">Mobile Radio</TD> <TD ALIGN="LEFT" SDVAL="200" SDNUM="2057;">200</TD> <TD ALIGN="LEFT">UHF</TD> <TD ALIGN="LEFT">420-450</TD> <TD ALIGN="LEFT">Hardware Adjusted</TD> <TD ALIGN="LEFT">KPG-20D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-809E</TD> <TD ALIGN="LEFT">Mobile Radio</TD> <TD ALIGN="LEFT" SDVAL="200" SDNUM="2057;">200</TD> <TD ALIGN="LEFT">UHF</TD> <TD ALIGN="LEFT">440-470</TD> <TD ALIGN="LEFT">Hardware Adjusted</TD> <TD ALIGN="LEFT">KPG-20D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-809M4</TD> <TD ALIGN="LEFT">Mobile Radio</TD> <TD ALIGN="LEFT" SDVAL="200" SDNUM="2057;">200</TD> <TD ALIGN="LEFT">UHF</TD> <TD ALIGN="LEFT">400-420</TD> <TD ALIGN="LEFT">Hardware Adjusted</TD> <TD ALIGN="LEFT">KPG-20D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-762GE</TD> <TD ALIGN="LEFT">Mobile Radio</TD> <TD ALIGN="LEFT" SDVAL="8" SDNUM="2057;">8</TD> <TD ALIGN="LEFT">VHF</TD> <TD ALIGN="LEFT">146-174</TD> <TD ALIGN="LEFT">Wide or Narrow</TD> <TD ALIGN="LEFT">KPG-67D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-762G(N)E</TD> <TD ALIGN="LEFT">Mobile Radio</TD> <TD ALIGN="LEFT" SDVAL="8" SDNUM="2057;">8</TD> <TD ALIGN="LEFT">VHF</TD> <TD ALIGN="LEFT">146-174</TD> <TD ALIGN="LEFT">Narrow Only</TD> <TD ALIGN="LEFT">KPG-67D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-760GE</TD> <TD ALIGN="LEFT">Mobile Radio</TD> <TD ALIGN="LEFT" SDVAL="128" SDNUM="2057;">128</TD> <TD ALIGN="LEFT">VHF</TD> <TD ALIGN="LEFT">146-174</TD> <TD ALIGN="LEFT">Wide or Narrow</TD> <TD ALIGN="LEFT">KPG-67D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-760G(N)E</TD> <TD ALIGN="LEFT">Mobile Radio</TD> <TD ALIGN="LEFT" SDVAL="128" SDNUM="2057;">128</TD> <TD ALIGN="LEFT">VHF</TD> <TD ALIGN="LEFT">146-174</TD> <TD ALIGN="LEFT">Narrow Only</TD> <TD ALIGN="LEFT">KPG-67D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-862GE</TD> <TD ALIGN="LEFT">Mobile Radio</TD> <TD ALIGN="LEFT" SDVAL="8" SDNUM="2057;">8</TD> <TD ALIGN="LEFT">UHF</TD> <TD ALIGN="LEFT">440-470</TD> <TD ALIGN="LEFT">Wide or Narrow</TD> <TD ALIGN="LEFT">KPG-67D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-862G(N)E</TD> <TD ALIGN="LEFT">Mobile Radio</TD> <TD ALIGN="LEFT" SDVAL="8" SDNUM="2057;">8</TD> <TD ALIGN="LEFT">UHF</TD> <TD ALIGN="LEFT">440-470</TD> <TD ALIGN="LEFT">Narrow Only</TD> <TD ALIGN="LEFT">KPG-67D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-860GE</TD> <TD ALIGN="LEFT">Mobile Radio</TD> <TD ALIGN="LEFT" SDVAL="128" SDNUM="2057;">128</TD> <TD ALIGN="LEFT">UHF</TD> <TD ALIGN="LEFT">440-470</TD> <TD ALIGN="LEFT">Wide or Narrow</TD> <TD ALIGN="LEFT">KPG-67D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-860G(N)E</TD> <TD ALIGN="LEFT">Mobile Radio</TD> <TD ALIGN="LEFT" SDVAL="128" SDNUM="2057;">128</TD> <TD ALIGN="LEFT">UHF</TD> <TD ALIGN="LEFT">440-470</TD> <TD ALIGN="LEFT">Narrow Only</TD> <TD ALIGN="LEFT">KPG-67D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-260GE</TD> <TD ALIGN="LEFT">Portable Radio</TD> <TD ALIGN="LEFT" SDVAL="8" SDNUM="2057;">8</TD> <TD ALIGN="LEFT">VHF</TD> <TD ALIGN="LEFT">146-174</TD> <TD ALIGN="LEFT">Wide or Narrow</TD> <TD ALIGN="LEFT">KPG-67D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-260G(N)E</TD> <TD ALIGN="LEFT">Portable Radio</TD> <TD ALIGN="LEFT" SDVAL="8" SDNUM="2057;">8</TD> <TD ALIGN="LEFT">VHF</TD> <TD ALIGN="LEFT">146-174</TD> <TD ALIGN="LEFT">Narrow Only</TD> <TD ALIGN="LEFT">KPG-67D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-260G(N)T</TD> <TD ALIGN="LEFT">Portable Radio</TD> <TD ALIGN="LEFT" SDVAL="8" SDNUM="2057;">8</TD> <TD ALIGN="LEFT">VHF</TD> <TD ALIGN="LEFT">146-174 OR 136-150</TD> <TD ALIGN="LEFT">Narrow Only</TD> <TD ALIGN="LEFT">KPG-67D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-270GE</TD> <TD ALIGN="LEFT">Portable Radio</TD> <TD ALIGN="LEFT" SDVAL="128" SDNUM="2057;">128</TD> <TD ALIGN="LEFT">VHF</TD> <TD ALIGN="LEFT">146-174</TD> <TD ALIGN="LEFT">Wide or Narrow</TD> <TD ALIGN="LEFT">KPG-67D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-270G(N)E</TD> <TD ALIGN="LEFT">Portable Radio</TD> <TD ALIGN="LEFT" SDVAL="128" SDNUM="2057;">128</TD> <TD ALIGN="LEFT">VHF</TD> <TD ALIGN="LEFT">146-174</TD> <TD ALIGN="LEFT">Narrow Only</TD> <TD ALIGN="LEFT">KPG-67D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-270G(N)T</TD> <TD ALIGN="LEFT">Portable Radio</TD> <TD ALIGN="LEFT" SDVAL="128" SDNUM="2057;">128</TD> <TD ALIGN="LEFT">VHF</TD> <TD ALIGN="LEFT">146-174</TD> <TD ALIGN="LEFT">Narrow Only</TD> <TD ALIGN="LEFT">KPG-67D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-360GE</TD> <TD ALIGN="LEFT">Portable Radio</TD> <TD ALIGN="LEFT" SDVAL="8" SDNUM="2057;">8</TD> <TD ALIGN="LEFT">UHF</TD> <TD ALIGN="LEFT">440-470 OR 403-430</TD> <TD ALIGN="LEFT">Wide or Narrow</TD> <TD ALIGN="LEFT">KPG-67D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-360G(N)E</TD> <TD ALIGN="LEFT">Portable Radio</TD> <TD ALIGN="LEFT" SDVAL="8" SDNUM="2057;">8</TD> <TD ALIGN="LEFT">UHF</TD> <TD ALIGN="LEFT">440-470 OR 403-430</TD> <TD ALIGN="LEFT">Narrow Only</TD> <TD ALIGN="LEFT">KPG-67D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-370GE</TD> <TD ALIGN="LEFT">Portable Radio</TD> <TD ALIGN="LEFT" SDVAL="128" SDNUM="2057;">128</TD> <TD ALIGN="LEFT">UHF</TD> <TD ALIGN="LEFT">440-470</TD> <TD ALIGN="LEFT">Wide or Narrow</TD> <TD ALIGN="LEFT">KPG-67D</TD> </TR> <TR> <TD HEIGHT="16" ALIGN="LEFT">TK-370G(N)E</TD> <TD ALIGN="LEFT">Portable Radio</TD> <TD ALIGN="LEFT" SDVAL="128" SDNUM="2057;">128</TD> <TD ALIGN="LEFT">UHF</TD> <TD ALIGN="LEFT">440-470</TD> <TD ALIGN="LEFT">Narrow Only</TD> <TD ALIGN="LEFT">KPG-67D</TD> </TR> </TABLE> </html> <h1>Downloads</h1> These programs, Kenwood KPG-20D and Kenwood KPG-67D programming software, seem to be freely availiable and various people are distributing it freely. I could not find a manual or an EULA for the software - I have assumed it is freely distributable. If this is not the case, I will remove this software immediately. <ul> <li> <b><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/KenwoodKPG-20D.rar">Kenwood KPG-20D Programming Software</a></b></li> <li> <b><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/KenwoodKPG-56D.rar">Kenwood KPG-56D Programming Software</a></b></li> <li> <b><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/KenwoodKPG-67D.rar">Kenwood KPG-67D Programming Software</a></b></li> </ul> The end column of the list above will show you what version of the program you need. <h2>KGP-20D Software</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/11/KWTK809_SW.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/11/KWTK809_SW.png" width="600" alt="KPG-20D Software" class="aligncenter"></a> <center>Kenwood KPG-20D Software</center> <h3>KGP-20D Usage</h3> The usage of this software is quite complex. I wasn't able to find a manual for this program though there is apparently one. So this small section aims to outline basic functionality. From the <i>Main menu</i>, enter the <i>Basic level KPG-20D</i>. <ul> <li> Press <i>F3</i> to load a datafile. My datafile (with program from above) is called <i>M1GEO_70.DAT</i></li> <li> Set <i>Priority channel:</i> OFF</li> <li> Set <i>Preference channel:</i> OFF</li> <li> Pressing <i>F7</i> enters the <i>Channel menu</i></li> <li>* The <i>ch</i> column is the channel number, and it determines the channel order</li> <li>* The <i>ds</i> column is the string appearing on the screen for the given channel. This may be alphanumeric or numerical, depending on <i>Main menu</i> > <i>Setup radio</i> > <i>Channel readout mode</i></li> <li>* <i>tx.freq.</i> and <i>rx.freq.</i> are the transmit and receive frequencies in MHz <i>(if you cannot enter the frequency you want, see below)</i></li> <li>* <i>SAT tx</i> and <i>SAT rx</i> allow for CTCSS, DCS and SelCall to be set. Press <i>F1</i> for more.</li> <li>* <i>scan</i> allows for individual channels to be include or exclude from a scan</li> <li>* <i>clk</i> allows for the clock frequency of the radios CPU to be moved to reduce possible interference.</li> <li> From <i>Main menu</i> > <i>Advanced options</i>, you can select either <i>Keys, microphone</i> or <i>Keys, front panel</i> to set microphone and front panel button functions.</li> <li> Under <i>Main menu</i> > <i>Advanced options</i> > <i>Configuration</i> you can select the <i>TransLink port</i> (the programming cable port), Licencing information, and the like.</li> <li> Have a look around, using the help (<i>F1</i>) to see if you can <i>tweak</i> anything.</li> <li> Set the Encode scripts (See below)</li> <li> Return to <i>Basic level KPG-20D</i> from <i>Main menu</i></li> <li>* Press <i>F5</i> to program the radio via the TransLink cable.</li> <li> Job done :)</li> </ul> <h4>Modifying Frequency Limits</h4> Because Kenwood make Amateur Radio equipment as well as commercial, the software will not (as standard) accept frequencies in the amateur radio bands. This is easily rectified by editing the program's ".msg" file. The two images show the TK-709 T frequency range has been modified from 150-170 MHz to 140-170 MHz, thus covering the 2 metre amateur bands. This process holds for other models of radio too. <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/11/KPG20D_FR1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/11/KPG20D_FR1.png" width="200" alt="KPG-20D Software" class="aligncenter"></a></tr> </table> Click to enlarge </center> Inside your standard file browser, locate the program's ".msg" file, for KPG-20D called "Kpg-20d.msg". Open this with your preferred HEX editor. Here, I use "Hex Workshop v6.7" (free). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/11/KPG20D_FR3.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/11/KPG20D_FR3.png" width="300" alt="KPG-20D Software" class="aligncenter"></a> Inside the HEX editor, search for the radio model. Here, I search for "TK-709 T": <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/11/KPG20D_FR4.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/11/KPG20D_FR4.png" width="400" alt="KPG-20D Software" class="aligncenter"></a> When you find the radio in the message file, you will need the frequency range label and the minimum and maximum frequency. <blockquote> TK-709 T;0001;150..174 MHz;000;150000000;174000000;5000;6250;-34400000;160000000.P </blockquote> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/11/KPG20D_FR5.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/11/KPG20D_FR5.png" width="500" alt="KPG-20D Software" class="aligncenter"></a> Change this to be <blockquote> TK-709 T;0001;140..174 MHz;000;140000000;174000000;5000;6250;-34400000;160000000.P </blockquote> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/11/KPG20D_FR6.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/11/KPG20D_FR6.png" width="500" alt="KPG-20D Software" class="aligncenter"></a> Save the HEX. Re-start the program and the frequency range will have changed. You may need to tweak the receiver tuning to improve sensitivity. <h4>Encode Scripts</h4> A common problem reported is that when pressing PTT, the radio transmits a carrier but no audio. This is probably due to the Encode Scripts (left image). These are set already in <i>M1GEO_70.DAT</i>. Under <i>Advanced Options</i> > <i>Encode formats</i>: F4 and F5 go through scripts. <i>TXM</i> enables the TX Mic audio - This fixes the problem with no TX audio. You next need to assign this to the PTT press (right image). From the <i>Main menu</i> > <i>System parameters</i> > <i>F2</i>. Use the up/down arrows to select <i>Encode PTT-Press</i>. Then select the script you created above: Use <i>Insert</i> key to get list of scripts. <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/11/KPG20D4.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/11/KPG20D4.png" width="200" alt="KPG-20D Software" class="aligncenter"></a></tr> </table> Click to enlarge </center> When the PTT button is pressed, the script (here called <i>TXPRESS</i>) is run. This sets the modulation source to be the microphone. Job done. <h5>CTCSS</h5> If you require sending tones, data, etc. this can be done with Encode scripts. Check out the Kenwood documentation in the section below. A good example is if you have programmed CTCSS or DCS options in the SAT (subaudible tones) you need to enable their transmission, with the <i>SCTP</i> instruction after the <i>TXM</i> instruction in the Encode PTT-Press script. This data file has some repeater shifts for GB3HW and my <a href="http://new.george-smart.co.uk/echolink">Echolink</a> node: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/M1GEO_RPTR_CTCSS.DAT.gz">CTCSS Repeater</a> It has the SCTP instruction and TXM. It may help you understand how it works. <h2>KGP-67D Software</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/11/KWTK862_SW.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/11/KWTK862_SW.png" width="600" alt="KPG-67D Software" class="aligncenter"></a> <center>Kenwood KPG-67D Software</center> <h3>KGP-67D Usage</h3> This software is much simpler than the KPG-20D software. There are no encode scripts to worry about. I haven't had time to write this section up properly with images yet, but it's fairly obvious. I had results pretty much instantly with this program. <h2>Running under DOSBox</h2> If you are running an operating system other than Microsoft DOS or a DOS based version of Widnows (95 or 98), for example Ubuntu Linux or Windows XP/Vista (God help you)/7 you are likely to have trouble with running DOS programs. For some reason, Microsoft seem to excel at removing backwards compatability from their software. A simple away around this is to use <a href="http://www.dosbox.com/information.php">DOSBox</a>. DOSBox is a brilliant piece of software, for anything like this! <blockquote> "DOSBox is a DOS-emulator that uses the SDL-library which makes DOSBox very easy to port to different platforms." -- <a href="http://www.dosbox.com/information.php">http://www.dosbox.com/information.php</a> </blockquote> Using DOSBox we can run the Kenwood programming software under newer versions of Windows (or any other OS supported by DOSBox). It's pretty simple. Here we work through for the KPG-20D software, but the process for KPG-67D is very similar. Adjust the paths as required: <ul> <li> Get <a href="http://www.dosbox.com/information.php">DOSBox</a>. Install it.</li> <li> Edit <a href="http://www.dosbox.com/wiki/Dosbox.conf">Dosbox.conf</a> to set the <a href="http://www.dosbox.com/wiki/Dosbox.conf#.5Bserial.5D">serial port settings</a>. You need to set <i>serial1</i>. Change <i>com1</i> to whatever com port you need. Use <i>ttyS0</i> for the first serial port on UNIX systems. Check <a href="http://www.dosbox.com/wiki/Dosbox.conf">Dosbox.conf</a> for details. Under Windows, use <i>DOSBox x.xx Options</i> to edit this file. Under UNIX, it's in <i>/home/USER/.dosbox/</i>. Here I use a USB-Serial adapter, which is at <i>/dev/ttyUSB0</i>.</li> :: serial1=directserial realport:ttyUSB0</ul> <ul> <li> Run DOSBox. You need to mount your hard drive so you can access it in the DOSBox enviroment. At the DOSBox terminal:</li> :: mount c c:\</ul> :: c: :: cd DOCUME~1\CHRIS\DESKTOP\KPG-20D\ (change directory into wherever you extraged the program - here the desktop) :: KPG-20D.EXE Refer to the usage section above for how to actually use the programs to set up the radios. <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/11/KPG20D1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/11/KPG20D1.png" width="200" alt="KPG-20D Software" class="aligncenter"></a></tr> </table> Click to enlarge </center> <h2>Documentation</h2> Some useful documentation regarding the Kenwood Radios mentioned on this page.. <ul> <li> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/KenwoodKPG-20DManual.pdf">Kenwood KPG-20D Manual</a></li> <li> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/KenwoodICM Functional Spec.pdf">Kenwood ICM Functional Specification</a></li> <li> Microphone <a href="http://tinymicros.com/mediawiki/images/4/47/Kenwood_KMC-18A_Instruction_Manual.pdf">instruction</a> and <a href="http://tinymicros.com/mediawiki/images/e/ec/Kenwood_KMC-18A_Service_Manual.pdf">service</a> manuals.</li> <li> <a href="http://f4bqn.free.fr/Mods-tk-349/mods.pdf">Notes regarding the KPG-20D Software</a></li> </ul> <h1>Kenwood TK-809</h1> This section details the programming of a Kenwood TK-809 (T4) radio. Many of the radios in this series are the same, and use the Kenwook KPG-20D programming software. The Kenwood KPG-20D software is available on the internet and on many user groups. The version I have came from the <a href="http://groups.yahoo.com/group/radio-programming/">radio-programming Yahoo group</a>. I have also included a copy on this page with my channel data down the page. <h2>The Radio</h2> The radio I mention (TK-809 T4) is shown below <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/11/KWTK809_01.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/11/KWTK809_01.jpg" width="600" alt="The Kenwood TK-09(T4) after conversion" class="aligncenter"></a> <h3>Inside</h3> Inside the radio, there are 3 variable resistors that allow you to adjust certain parameters. The red pot allows you to set the deviation on the radio. This is the same as microphone gain. The green pot allows you to set the maximum RF power output. Note that there is also a setting in software, allowing you to set (typically) 5 watts or 25 watts. You should set this to 25 watts when the radio is in the high power (25 watt) mode. The blue pot allows you to set the squelch level. <table cellpadding="2" border="0" > <tr><td><span style="color:#FF0000"><b>Red</b></span></td><td>Set the deviation level</td></tr><tr><td><span style="color:#00FF00"><b>Green</b></span></td><td>Set the high RF power (set in software) level</td></tr><tr><td><span style="color:#0000FF"><b>Blue</b></span></td><td>Set the squelch level</tr> </table> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/11/KWTK809_INSIDE.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/11/KWTK809_INSIDE.jpg" width="600" alt="Inside the Radio" class="aligncenter"></a> <h2>The Conversion</h2> The data file (M1GEO_70.DAT included in the KPG-20D software) includes 432MHz to 435MHz at 25KHz spacing and also has PMR-446 frequencies programmed in. There is no CTCSS or SellCall data set, but this may be modified inside the program. It was intended for the TK-809 T4 radio, but may fit others. <table cellpadding="2" align="center" border="1" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/11/KWTK809_Screen_1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/11/KWTK809_Screen_1.jpg" width="300" alt="FM Calling Channel" class="aligncenter"></a></td><td>All segments and symbols on the LCD to test display.</tr> </table> <h2>Errors</h2> From the Kenwood ICM Manual: <table cellpadding="2" border="0" > <tr><td><b>Error</b></td><td><b>Meaning</b></td></tr><tr><td>Err 1</td><td>Hardware Fault: Tested on power-up. No real meaning behind this, other than something is wrong with the hardware</td></tr><tr><td>Err 2</td><td>EEPROM Error: Tested on power-up. This means that the program/channel data is corrupt (CRC error). Try reprogramming?</td></tr><tr><td>Err 3</td><td>PLL Out of Lock: Tested continuously. Appears when PLL is out of lock in TX or RX. Adjust VCO?</tr> </table> <h1>Kenwood TK-862G(N)</h1> This radio is similar to the TK-809, though I believe slightly newer. The 862G is an 8 channel radio that is programmed by the Kenwood KPG-67D software. <h1>Kenwood TK-762G(N)</h1> This radio is similar to the TK-862G(N), but is the VHF version. The 762G is also 8 channel radio that is programmed by the Kenwood KPG-67D software. <ul> <li> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/M1GEO_2.rar">M1GEO 2M APRS (RAR compressed DAT file)</a> - APRS Data file, contains some club net frequencies, APRS frequency and a few FM simplex channels.</li> </ul> <h1>Microphone Connections</h1> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/11/TK762_Mic_Pinout.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/11/TK762_Mic_Pinout.png" alt="Microphone connections for Kenwood TK-762G(N)" class="aligncenter"></a> The microphone socket on the this series of Kenwood radio has a 6-pin connector on the front panel. Connections for the Kenwood KMC-18 microphone are given below. There is a <a href="http://tinymicros.com/mediawiki/images/4/47/Kenwood_KMC-18A_Instruction_Manual.pdf">Instruction Manual</a> and a <a href="http://tinymicros.com/mediawiki/images/e/ec/Kenwood_KMC-18A_Service_Manual.pdf">Service Manual</a> for the microphone. <table cellpadding="2" border="0" > <tr><td><b>Pin</b></td><td><b>Symbol</b></td><td><b>Connection</b></td></tr><tr><td>1</td><td>N/C</td><td>Not connected</td></tr><tr><td>2</td><td>PSB</td><td>Power Supply (+13.8 volts)</td></tr><tr><td>3</td><td>E</td><td>Ground</td></tr><tr><td>4</td><td>PTT</td><td>Press To Talk (Transmit)</td></tr><tr><td>5</td><td>ME</td><td>Microphone Earth (ground)</td></tr><tr><td>6</td><td>MIC</td><td>MIC/DTMF signal output</td></tr><tr><td>7</td><td>HK2</td><td>Hook switch output (I've no idea what this does yet?!)</td></tr><tr><td>8</td><td>N/C</td><td>Not connected</tr> </table> <b>FIXME_Category :Radio</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Computers</b> Kenwood TK-809 http://new.george-smart.co.uk/kenwood_tk_809 0 2012-07-17 14:41:52 closed page closed 3518 kenwood_tk_809 draft This page was moved here: <a href="http://new.george-smart.co.uk/kenwood_pmrs">Kenwood PMRs</a>. <a href="/contact-me">Please report this message to the webmaster</a>. Kindle http://new.george-smart.co.uk/kindle 4469 draft kindle 2013-05-10 14:48:41 0 closed page closed For Christmas 2010, I received an Amazon Kindle 3. After smashing the E-Ink screen, I decided <a href="http://new.george-smart.co.uk/kindle_3_screen_replacement">to write a guide on how to replace the Kindle 3 screen</a>. <h1>Screensaver Hack</h1> The screensaver hack allows you to change default off screen image. See the <a href="http://wiki.mobileread.com/wiki/Kindle_Screen_Saver_Hack_for_all_2.x_and_3.x_Kindles">Kindle Screen Saver Hack for all 2.x and 3.x Kindles</a> for more information. <b>FIXME_Category :Experiments</b> <b>FIXME_Category :Kindle</b> Kindle 3 Screen Replacement http://new.george-smart.co.uk/kindle_3_screen_replacement closed page closed 2013-02-01 23:18:20 0 kindle_3_screen_replacement draft 3947 So my <a href="http://new.george-smart.co.uk/kindle">Kindle</a> 3 (keyboard) that I got for Christmas 2010 finally died when I smashed the screen in January 2013. I weighed up the options of a new Kindle (around £70) before deciding that I could probably fix the Kindle 3 screen myself. I went on eBay and picked up a replacement screen for £45 delivered from Wales (best speed/£ radio) and set about replacing the screen. This page documents the process. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/02/KindleScreen_Smashed.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/02/KindleScreen_Smashed.jpg" width="300" alt="Smashed Kindle 3 Screen" class="aligncenter"></a> The first thing I did was to watch <a href="http://www.youtube.com/watch?v=6BhTqbslijc">YouTube: How to Repair an Amazon Kindle 3</a>. This video is a great video and shows the basic steps involved. I followed this guide exactly. Below are some high resolution stills taken of the repair of my Kindle 3 (keyboard). <h1>Remove the Back Cover</h1> The first step is to remove the back cover from the Kindle. This is done by using a <a href="http://www.google.co.uk/search?q=plastic+prying+tool&tbm=isch">plastic prying tool</a> and following the edges of the case around. There are no clips around the page buttons but at at either side of the button strips there are. Once you've got in, you should see something like this... You may have a real 3G module instead of the smaller dummy 3G module (smaller black box to the left of the battery). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/02/KindleScreen_BackCover.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/02/KindleScreen_BackCover.jpg" width="300" alt="Kindle 3 Insides" class="aligncenter"></a> <h1>Remove the Battery</h1> Remove the two screws from the battery, at the top and lift the tab. The other end of the battery is clipped into the speaker assembly, but it should angle out easily. Remove the two metal caps over the screw posts from the main PCB as they'll only fall on the floor and get lost later! :) <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/02/KindleScreen_Battery.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/02/KindleScreen_Battery.jpg" width="600" alt="Kindle 3 Insides" class="aligncenter"></a> <h1>Remove Speakers</h1> The speakers are held by two screws at each end as well as double-sided tape. Word on the internet is that this step isn't mandatory, but I removed them for what it's worth. Firstly disconnect the speaker wire running to the mainboard. Remove the two screws and then slide your prying tool/butter knife under the speaker assembly to separate the double-sided tape. Work slowly, giving the tape time to release from the keyboard plate. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/02/KindleScreen_Speakers.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/02/KindleScreen_Speakers.jpg" width="600" alt="Kindle 3 Insides" class="aligncenter"></a> <h1>Remove dummy 3G Module</h1> Again, word is that you don't have to remove the 3G dummy module if you have one. You <b>MUST</b> remove the 3G module if you have one, else you'll destroy the solder joints! Either way, for safety's sake, do it. It takes less than 20 seconds to remove the three screws holding it in. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/02/KindleScreen_Dummy3G.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/02/KindleScreen_Dummy3G.jpg" width="600" alt="Kindle 3 Insides" class="aligncenter"></a> <h1>Remove Grounding</h1> Next is to remove the grounding clip. Do this by removing the two screws firstly. Then using your prying tool, separate the metal grounding wire from the brass spring clip so that the parts are all free. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/02/KindleScreen_Grounding.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/02/KindleScreen_Grounding.jpg" width="600" alt="Kindle 3 Insides" class="aligncenter"></a> <h1>Disconnect Wiring</h1> Next disconnect the wiring. There are 4 ribbon cables to remove. Looking at the picture, the top left of the board (where the battery fits) has a small connector. There is one on the exact other side of the board at the same height. These two are the page buttons. They have locks on them; Lift the front of the connector up, and then once unlocked, remove the wire <i>carefully</i>. The larger two are for the E-Ink screen (left middle, hanging out) and the keyboard (bottom right). The screen connector <i>pops</i> off, and the keyboard has another lock. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/02/KindleScreen_Wires.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/02/KindleScreen_Wires.jpg" width="600" alt="Kindle 3 Insides" class="aligncenter"></a> <h1>Remove PCB</h1> Remove the screws holding the PCB in. Do not bend the board or pull at it. It comes away easily once all the screws are removed. If it doesn't then bending it can crack the solder joints and paralyse your Kindle. Lift the top end up, and the board will come, then <i>gently</i> pull the board from the bottom. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/02/KindleScreen_PCB.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/02/KindleScreen_PCB.jpg" width="600" alt="Kindle 3 Insides" class="aligncenter"></a> <h1>Remove Keyboard</h1> Next you need to remove the keyboard assembly. This is held in by another 3 screws. One in the middle of each side's page buttons, and one further up on the screen cable side - see the picture for screw locations. The volume button comes out with the keyboard plate; don't loose it! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/02/KindleScreen_Keyboard.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/02/KindleScreen_Keyboard.jpg" width="600" alt="Kindle 3 Insides" class="aligncenter"></a> <h1>Remove Screen</h1> Finally comes the removal of the screen. The damage is clearly visible on the back of the E-Ink display; a crack and shatter pattern all the way from the impact point out. If your screen is not damaged here, or you're taking a screen from another Kindle be <i>very</i> careful as they're very fragile and have no rigid frame - the front's strength comes from the screen, not the plastic! As you can see, the metal grounding frame stays in the Kindle, and the screen is double-sided taped into the metal frame. I was a little rough on my screen to get it out, and damaged the screen further. There is no screen front on the display. Touching the Kindle screen is to touch the front of the E-Ink module. There is no plastic screen front, as such. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/02/KindleScreen_ScreenRemoved.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/02/KindleScreen_ScreenRemoved.jpg" width="600" alt="Kindle 3 Insides" class="aligncenter"></a> Here you can see the two screens, old and new. The new screens come with the image on them which lasts during delivery - a true testament to the technology! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/02/KindleScreen_ScreenNewOld.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/02/KindleScreen_ScreenNewOld.jpg" width="600" alt="Kindle 3 Insides" class="aligncenter"></a> <h1>Reassemble</h1> Once you're all done, put the Kindle back together in the exact reverse order. Starting with the display, get it nicely positioned in the top of the screen holder frame, and push <i>gently</i> and <i>evenly</i> on the <i>edges</i> of the screen to stick the screen into the frame. Don't press the centre as you'll destroy it. Be careful! Once your screen is in, and looking correct from the front, then install the keyboard plate and screw in the 3 screws, carefully checking the display is okay and fitting nicely. The volume rocker comes out with the keyboard plate, so put it back in. If it's become dislocated, the + goes closest the headphone socket. Put that back and check it rocks freely and moves back to the centre point at rest. Once that's in, refit the main PCB. Watch out not to get the cable connectors trapped under the board! A common mistake! The board has locating holes so make sure it fits nicely. Screw the board down. Now to reconnect the wiring. Make sure all of the locks are open, and then feed the wires in <i>square</i> to the socket and flat. You don't want to break these sockets or it's game over. Once the cable is in, and the lines on the cable match those around the socket, then you're set. Click the lock down again. Repeat for the 3 locking tables. The display connector is a push-down connector. Carefully locate the socket under the plug, and once they're aligned, apply a gentle pressure. You'll feel the connectors <i>pop</i> together, but hopefully not snap/break! Reconnect the grounding clip, locating the plastic first. Then put the wire in place followed by the brass sprung clip. Finally add the two screws. The Dummy 3G module is easily refitted. Locate the plastic and screw the 3 screws in. The speakers are located and pressed firmly to re-adhere the tape. Then put in the two screws and connect the speaker cables. Last but certainly not least, put the battery in, not forgetting the two metal collars for the posts. Make sure that everything else is ready when you do this, as my kindle booted at this point. If you need to redo anything remove the battery first to remove the power. At this point, if the kindle isn't booting, slide the power switch and prey! You should get the green light of glory, and then some moments later and nice working display with the Amazon booting progress bar. Below, you see the screen working. All your books will have been restored. This picture was taken while the device was still booting. The screen flickered and my booklist returned. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/02/KindleScreen_Fixed.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/02/KindleScreen_Fixed.jpg" width="300" alt="Kindle 3 Working" class="aligncenter"></a> <b>FIXME_Category :Kindle</b> LDG Z11 Pro2 http://new.george-smart.co.uk/ldg_z11_pro2 2013-03-21 23:42:50 0 closed page closed 4196 ldg_z11_pro2 draft I bought the <a href="http://www.ldgelectronics.com/c/252/products/1/9/1">LDG Z11 Pro2</a> when I bought my <a href="http://new.george-smart.co.uk/icom_ic_7000">Icom IC-7000</a> and at the time of writing have had it about 18 months. The Z11 Pro2 gets mixed reviews; I find it great - it suits exactly what I want and works well. It's not as good as a manual tuner, but few are. It interfaces properly with my rigs and tunes everything I've thrown at it. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_Promotional.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_Promotional.jpg" width="500" alt="LDG Z11 Pro2" class="aligncenter"></a> Recently, though my own lack of care, I cracked a soldier joint inside on the <i>radio</i> socket that links to my rig. It just neede re-heating to fix the issue but in the process I decided to take a few pictures to put online... Here they are: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_ksP.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_ksP.jpg" width="600" alt="LDG Z11 Pro2" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_Ygv.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_Ygv.jpg" width="600" alt="LDG Z11 Pro2" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_hR7.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_hR7.jpg" width="600" alt="LDG Z11 Pro2" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_hZL.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_hZL.jpg" width="600" alt="LDG Z11 Pro2" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_fbj.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_fbj.jpg" width="600" alt="LDG Z11 Pro2" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_8CU.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_8CU.jpg" width="600" alt="LDG Z11 Pro2" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_mEP.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_mEP.jpg" width="600" alt="LDG Z11 Pro2" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_T0E.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_T0E.jpg" width="600" alt="LDG Z11 Pro2" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_VaB.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_VaB.jpg" width="600" alt="LDG Z11 Pro2" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_CcP.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_CcP.jpg" width="600" alt="LDG Z11 Pro2" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_wCR.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_wCR.jpg" width="600" alt="LDG Z11 Pro2" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_VDm.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_VDm.jpg" width="600" alt="LDG Z11 Pro2" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_uCM.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/Z11Pro2_uCM.jpg" width="600" alt="LDG Z11 Pro2" class="aligncenter"></a> <b>FIXME_Category :Radio</b> <b>FIXME_Category :Electronics</b> Links http://new.george-smart.co.uk/links 0 2015-12-29 22:13:25 closed page closed 5413 draft links I use the Internet a lot, and as such have managed to collect up a good few links. Most of these won't interest most people, and for that, I apologise, but some of these may interest a few people. <h2>Friends</h2> <ul> <li> <a href="http://www.aaron-brown.net">Aaron Brown VK3ABX</a></li> <li> <a href="http://www.webshed.org">David Mills WebShed G7UVW</a></li> <li> <a href="http://www.m0taz.co.uk">Dave Cutts M0TAZ</a></li> <li> <a href="http://www.m0ukd.com">John Parfrey M0UKD</a></li> <li> <a href="http://www.lorenzolevrini.com/">Lorenzo Levrini - Director of Photography</a></li> </ul> <h2>Radio Stuff</h2> <ul> <li> <a href="http://www.solwise.co.uk/wireless-elevationtool.html">Surface Elevation Tool</a> Tool for viewing Surface Elevation on Paths.</li> <li> <a href="http://www.opencontest.org/edi/">EDI Visualizer</a> Tool for viewing EDI logs on maps</li> </ul> <h2>Social Networking</h2> <ul> <li> <a href="http://www.facebook.com/profile.php?id=717886488">George Smart on Facebook</a></li> <li> <a href="http://www.myspace.com/george_smart">George Smart on MySpace</a></li> <li> <a href="http://www.last.fm/user/compu-king">George Smart on LastFM</a></li> <li> <a href="http://www.stumbleupon.com/stumbler/compu-king/">George Smart on StumbleUpon</a></li> </ul> <h2>Web Comics</h2> <ul> <li> <a href="http://www.questionablecontent.net/">Questionable Content</a></li> <li> <a href="http://www.xkcd.com/">xkcd</a></li> <li> <a href="http://e-merl.com/">E-Merl</a></li> <li> <a href="http://survivingtheworld.net/">Surviving the World</a></li> <li> <a href="http://www.leasticoulddo.com/">Least I Could Do</a></li> <li> <a href="http://comics.com/f_minus/">F- (F Minus)</a></li> <li> <a href="http://www.myapokalips.com/">Apokalips</a></li> <li> <a href="http://www.spaceavalanche.com/">Space Avalanche</a></li> <li> <a href="http://blogs.msdn.com/officeoffline/">Office Offline</a></li> </ul> <h2>Internet Television & Radio</h2> Also see my <a href="http://new.george-smart.co.uk/media">Media</a> page. <b>TV</b> <ul> <li> <a href="http://www.bbc.co.uk/iplayer/">BBC iPlayer</a> defines the standard.</li> <li> <a href="http://www.channel4.com/programmes/catch-up">Channel 4 Catchup</a> is similar, though much less slick than iPlayer. Works on Linux/Mac now.</li> <li> <a href="http://zattoo.com/">Zattoo</a> is for watching Live TV over the Internet.</li> </ul> <b>Radio</b> <ul> <li> <a href="http://www.977music.com">.977 Music</a> has several radio stations with minimal adverts and great music!</li> <li> <a href="http://www.capitalradio.co.uk/">Capital Radio</a> is London's world famous radio station.</li> </ul> <h2>Search Engines</h2> <ul> <li> <a href="http://www.google.co.uk/">Google UK</a></li> <li> <a href="http://isohunt.com">isoHunt</a> for Torrent files</li> </ul> <h2>Odds & Sods</h2> <ul> <li> <a href="http://www.metcheck.com/V40/UK/FREE/nolocation.asp">MetCheck</a> is a very reliable weather forecaster (so I have found).</li> <li> <a href="http://tubejp.co.uk/">TubeJP</a> is a much better London tube map and journey planner than the one which TfL provide. (Very good!)</li> </ul> <b>FIXME_Category :Website</b> Linux http://new.george-smart.co.uk/linux draft linux 3016 page closed closed 2012-01-12 14:39:08 0 Linux is a UNIX like operating system, based on the Linux kernel. It is an alternative to Microsoft Windows, and Apple Mac OS X. It is my preferred operating system, though I have Mac OS X and Microsoft Windows on other machines. Both my Desktop and Laptop run Linux, based on Debian. I run Ubuntu (64-bit) on my Desktop and MintLinux (64-bit) on my MacBook. If you would like more information, visit one of the following <ul> <li> <a href="http://en.wikipedia.org/wiki/Linux">Wikipedia: About Linux</a></li> <li> <a href="http://www.ubuntu.com/">Ubuntu Linux</a></li> <li> <a href="http://www.linuxmint.com/">LinuxMint</a></li> </ul> <html> <center> <script type="text/javascript" src="http://www.ubuntu.com/files/countdown/display1.js"></script> </center> </html> <b>FIXME_Category :Computers</b> <b>FIXME_Category :Linux</b> Main Page http://new.george-smart.co.uk/main_page closed page closed 0 2016-12-18 15:50:42 draft main_page 5535 <h1>Welcome to George Smart's Homepage!</h1> Hello and welcome to George Smart's space on the Internet. This site documents many of my projects in the form of articles. The site navigation is a little confusing and for that I apologise. I can't find a nice way to make the page navigable; the search box in the top right may help. None of the URLs have changed, and no Wiki managed pages ever get deleted -- they are all here somewhere! If you spot any dead links or problems with the site, then please do <a href="http://new.george-smart.co.uk/contact_me">Contact Me</a> - likewise, if you have any better ideas about how to organise the data on my site, I'd like to <a href="http://new.george-smart.co.uk/contact_me">hear from you</a>. I have limited time and so don't always check things as thoroughly as I should! <h1>Recent News</h1> So I've decided to have a blog-style few entries on the homepage of the website. I'll see how up to date I can keep this. Given that the page used to change every year or so! <b>Wednesday, 14 December 2016</b>. Today, around mid-day, I completed the viva-voca for my PhD. I passed the viva with minor corrections. These small changes will be made quickly, so I can progress with obtaining the formal qualification from the university. <b>Thursday, 26 November 2015</b>. After what seems like an age since I last updated the 'recent' news, I finally thought of something to go up here! Today I met with Ian of Icom UK over lunch who presented me my D-Star QSO Party prize! It was good to have an in depth chat with Ian, and hopefully many more to come. Makes a change from me bending Don's ear! See the <a href="https://twitter.com/Icom_UK/status/669908042243284992">official Icom UK tweet here</a>. Thanks! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/IcomUK_DSTAR_Prize_2015.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/IcomUK_DSTAR_Prize_2015.jpg" width="600" alt="Ian and myself meet for lunch" class="aligncenter"></a> <b>Monday, 3 August 2015</b>. After drying out from the RSGB IOTA contest last weekend, we took the gear out again 1-2 August, where I worked a few new contacts 7Q7BP on CW was a firm favourite as well as KH6/AA1LC in Hawaii, CY0/VA1AXC on Sable Is., 8P6FX in Barbados and CP6XE in Bolivia. During the weekend we turned our hand towards the RSGB low-power backpackers contest working a few on 2m. After the contest, HA6KVC/P was coming through nicely via Meteor Scatter on FSK441. I have decided to read up a bit more on this interesting mode... Watch this space! <b>Thursday, 18 June 2015</b>. Having attended a short talk by <a href="http://qrz.com/db/M0SHQ">Steve M0SHQ</a> at <a href="http://www.essexham.co.uk/">Essex Ham</a> about operating Amateur Satellites, and seeing Steve work the ISS via APRS, I decided to have a go myself. I built the dual-band beam he recommended several times, but the design always measured up poorly. In the end I tweaked the design somewhat, and come up with something myself - it's all credit to the original designer, I just optimised it with some antenna modelling software. Details on the antenna can be found here: <a href="http://new.george-smart.co.uk/dual_band_satellite_yagi">Dual Band Satellite Yagi</a>. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/Seattle_IPSN15.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/Seattle_IPSN15.jpg" alt="Visit to Seattle" class="aligncenter"></a> <b>Monday, 13 April 2015</b>. Today I arrived in Seattle. It's my first visit to the United States. I have come for the <a href="http://ipsn.acm.org/2015/">IPSN'15</a> conference, part of <a href="http://www.cpsweek.org/2015/">CPS Week 2015</a>. I have added a couple of days extra on to the trip to explore a little. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/GB7KH_Logo.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/GB7KH_Logo.png" alt="GB7KH D-STAR Repeater" class="aligncenter"></a> <b>Thursday, 19 March 2015</b>. The D-STAR repeater project <a href="http://www.gb7kh.co.uk/">GB7KH</a> is well under-way with the repeater on soak test at my home. See <a href="http://www.gb7kh.co.uk/">the repeater project website</a> for more information. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/DVRPTR_Image.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/DVRPTR_Image.jpg" alt="DVRPTR_V1 inside board" class="aligncenter"></a> <b>Monday, 02 February 2015</b>. Over the past week or so, I have been playing around with DStarRepeater and ircDDBGateway to learn a bit about DSTAR repeaters, given the progress <a href="http://new.george-smart.co.uk/gb7kh">GB7KH</a>'s NoV is making. I have made a simplex hotspot with my FT817 and a soundcard interface, although I can see that there is certainly room for improvement. I have ordered a <a href="http://www.dvrptr.net/">DVRPTR_V1</a> GMSK interface which has been dispatched so that will replace the soundcard, lowering the CPU load. I am to have the system set up on a Raspberry Pi 2 B, which was released yesterday (maybe today actually). I think I now understand how to tune up those Chinese notch filters, too. <b>Sunday, 01 February 2015</b>. Today my Icom IC7000 and associated separation kit sold on eBay. I have wrapped them up for posting. I'll be sad to see the IC7000 go, since it's been my main workhorse for a long time - It's been everywhere, that radio; from university to touring around Europe! I've replaced it with the IC7100 for DSTAR use, as well as an IC7700 (which I have had for a while). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/QSLCard_Front_Apr2014.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/QSLCard_Front_Apr2014.png" alt="QSL Card M1GEO" class="aligncenter"></a> <b>Tuesday, 30 December 2014</b>. Another batch of QSL cards arrived for M1GEO, MQ1GEO and MO1GEO this morning in the post. I had unfortunately run out so I have ordered another batch. They will take a week or so to arrive. I'll get them out as soon as I can. I also ordered another batch for GB0SNB too, while I was at it! <b>Tuesday, 23 December 2014</b>. Today I finished my 4 month stint at ARM Ltd. During my time I haven't done much with the website, but I have been working on my implentation of a fully KISS compliant <a href="http://new.george-smart.co.uk/arduino_tnc">Arduino TNC</a> as well as using <a href="http://new.george-smart.co.uk/digital_speech_decoder">DSD 1.7 to decode digital modulation</a> such as D-STAR and DMR (and others) using my <a href="http://new.george-smart.co.uk/funcube">FunCube</a> and RTL-SDR receivers. <b>Saturday, 11 October 2014</b>. Purchased an Icom ID-5100 and fitted inside the car. <b>Tuesday, 23 September 2014</b>. I have made a few changes to the mail server configurations for the domains I host. I was receiving around 100 spam emails per day, because I was worried about missing mail. Under these new settings everything seems fine still, but just in case you email and get no reply... <b>Monday, 8 September 2014</b>. Today I started an internship at ARM Holdings for 4 months so my regular activities will be somewhat interspersed for the foreseeable short-term future. Lets see what the next few months have in store for me! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/WTWWAug2014_17m.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/WTWWAug2014_17m.jpg" alt="18 MHz Station" class="aligncenter"></a> <b>Sunday, 24 August 2014</b>. This weekend we reconfigured our 14 MHz homebrew Yagi to operate on 18 MHz instead. This was for the <a href="http://www.haveringradioclub.co.uk/">Havering & District Amateur Radio Club</a> August <a href="http://www.gb0snb.com/wordpress/2014/08/work-the-world-23-24-august-2013/">Work The World Weekend</a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/14MHz_Beam.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/14MHz_Beam.jpg" alt="14 MHz Homebrew Yagi" class="aligncenter"></a> <b>Sunday, 20 July 2014</b>. Took the 14 MHz home-brew beam (right) out this weekend for <a href="http://www.lefars.org.uk">LEFARS</a> annual field day at Alymers Farm. Conditions were not so great, but we managed to work some nice DX including VK6, plenty of North America and Canada, and several more rare locations. <b>Thursday, 10 July 2014</b>. Ordered a 144 MHz Anglian Transverter from <a href="http://www.g4ddk.com/">Sam, G4DDK</a>, as well as a <a href="http://www.downeastmicrowave.com/">DEM</a> <a href="http://www.downeastmicrowave.com/PDF/l-lna.PDF">L144LNACK-2N</a> low noise preamp for 144 MHz. I am very short of time of late, but it is my intention to experiment with some EME operation this summer and winter, so I figured I had better start buying... <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/SwissAlps.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/SwissAlps.jpg" alt="Driving through the Swiss Alps" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/InItaly.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/InItaly.jpg" alt="Driving to Italy" class="aligncenter"></a> <b>28 June -- 2 July 2014</b>. Drove to the <a href="http://www.hamradio-friedrichshafen.de/ham-en/">Ham Radio Friedrichshafen International Exhibition</a> for the second time, this time leaving a few days each side to recover from the long drive. In the first spare day we drove into Italy (right), stopping in Liechtenstein (to say we had been). Going, we drove over the Alps (left) and returned back via the tunnels through the Alps (as it was dark). Utterly amazing drive! <b>Tuesday, 10 June 2014</b>. Working late from Monday evening till Tuesday morning to get some of the Contiki timer issues fixed. I think I have corrected a bug with the Contiki <i>rtimer</i> code for the TelosB mote, but that remains to be seen. The code functions great in the simulator with the modded timer library, but <i>still</i> doesn't work on hardware. <b>Sunday, 8 June 2014</b>. Over the weekend I worked on my 1.25 kW solid state PA based on F1JRD's design from Dubus. I bought the kit at the Friedrichshafen Hamfest last year and built it up late 2013 but due to problems, I never had more than around 40W output. This weekend, with a new set of capacitors from ATC I rebuilt the output matching and fired it up once again. With my 1kW/50V power-supply I can get around 600W output, which his more than enough. This is still a work in progress, but things are moving forward with the project. <a href="http://www.qsl.net/f1jrd/MRFE6VP61K25H.html">Design information here</a>. Maplin N32GL http://new.george-smart.co.uk/maplin_n32gl draft maplin_n32gl 3050 page closed closed 2012-01-12 15:10:57 0 = Introduction = While getting some parts in a local Maplin Electronics store, I decided to have a wander around. <a href="http://www.aaron-brown.net/">Aaron Brown</a> calls this <i>looking for inspiration</i>. That is exactly what I found. I was looking in despair at the solar USB chargers, etc. when I come across a pull string USB charger. It had a nice brushed aluminium case, with connectors nicely mounted on both ends. The best part was that it was £2.99. My mind instantly thought of the <a href="http://new.george-smart.co.uk/battery_phone_charger">Battery Phone Charger</a>. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/MaplinN32GL_Mod_1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/MaplinN32GL_Mod_1.jpg" width="600" alt="Before the butchery" class="aligncenter"></a> I read the back of the box, where it explained that I could pull the cord on the device to charge an internal 3.7 volt, 650 milli-amp/hour (mAh) battery. It also had a mini-USB connector where it could be connected to a PC to charge via USB. My plan was to remove the pull string mechanism and replace it with some extra battery cells. I would use some Ni-Cd batteries because of their higher capacities. Each Ni-Cd cell is 1.2 volts. 3 of these cells in series would give me 3.6 volts - close enough to the 3.7 volts of the existing lithium cell. Only these Ni-Cd's were 3000mAh instead of the 650mAh. The device in question is the <a href="http://www.maplin.co.uk/module.aspx?moduleno=227266">Maplin N32GL: Pull String Power Pack with USB</a>. For £2.99, I decided that it was worth the chance, I bought 2 (one for me, and another for <a href="http://www.aaron-brown.net/">Aaron Brown</a>). We got back to the house and opened up our goodies to start the conversion. Here's what is (was) inside: <h1>Inside</h1> The inside of the device is not very impressive - I am not sure what I was expecting, but there really was very little on the PCB at all. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/MaplinN32GL_Mod_2.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/MaplinN32GL_Mod_2.jpg" width="600" alt="Inside the device" class="aligncenter"></a> The right of the device is taken up with the winder mechanism, while the left houses the electronics: The green cylinder is (maybe obviously) the battery; below that, the PCB housing some diodes for the rectification of the (3-phase) winder output, and a BAU8C switching regulator. <center> (Click on an image to enlarge it)<table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/MaplinN32GL_Mod_4.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/MaplinN32GL_Mod_4.jpg" width="240" class="aligncenter"></a></td></tr><tr><td>Component Side PCB</td><td>Solder Side PCB</tr> </table> </center> <h1>Schematics</h1> The USB input side of the schematic was easy to work out, as it is just a simple arrangement of diodes used for: (A) full wave rectification of the 3-phase winder generator, and; (B) voltage drop from the 5 volt USB to the 3.7 volt cell (along with a resistor). The hard bit to understand was the switching regulator. In practise these are not too hard to understand (see <a href="http://en.wikipedia.org/wiki/Boost_converter">Wikipedia's Boost Converter page</a>). However this device uses a BAU8C. A quick <a href="http://www.google.co.uk/search?q=BAU8C">Google for BAU8C</a> returns nothing of any use. I was looking for a datasheet, or even some typical circuits or schematics using them. Nothing. So here is the best I can offer, based on how mine appears to work. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BAU8C.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/BAU8C.jpg" width="600" alt="BAU8C Switching Regulator" class="aligncenter"></a> <h1>Butchery</h1> I decided to rip out the winder mechanism as I was never going to use it. I would need the space for extra batteries! As mentioned in the introduction, I would swap out the 3.7 volt lithium cell for 3 NiMH cells in series, giving me 3.6 volts (3 \times 1.2). This should be close enough. I also removed a lot of the un-required diodes from the PCB so I could see what was going on. <center> (Click on an image to enlarge it)<table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/MaplinN32GL_Mod_4.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/MaplinN32GL_Mod_4.jpg" width="240" class="aligncenter"></a></td></tr><tr><td>Original PCB</td><td>Revised PCB</tr> </table> </center> Next I added the cells. I decided to use Nickel-metal Hydride cells, for two reasons: (1) They are much higher capacity for a given size and are fairly cheap, and; (2) I had some already. The cells I used were from an old laptop battery. I decided to use these because they were already connected together in series with metal tabs. These are a lot easier to solder to than the cells themselves, so I went with these. Also, the larger 3000 mAh cells do not belong to me, so I couldn't really solder (deface) to them. I then soldered a thick wire on to the end two cells, and soldered the new battery on to the PCB. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/MaplinN32GL_Mod_7.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/MaplinN32GL_Mod_7.jpg" width="600" alt="NiMH Cells Soldered into Case" class="aligncenter"></a> <h1>Testing</h1> I have tested a couple of things here. The first test looks at the output of the device on a scope. The second test looks at the power supplied and at currents and voltages. <h2>Output Noise</h2> I wanted to look at the output both with and without a load on it, before and after my modifications. On these scope images, the bottom line of the scope is 0 volts DC, and the scope is set to 1 volt per division. The modifications to the output included adding a 100nF capacitor to remove the high frequency switching noise and to chance the 100uF smoothing capacitor for a 220uF capacitor. This smooths some of the pulses under load, and increases the overall voltage - a larger capacitor would further smooth this out but it also leads to deteriorated regulation. <center><table cellpadding="2" border="0" > <tr><td></td><td><b>Before Modifications</b></td><td><b>After Modifications</b></td></tr><tr><td><b>Unloaded Output</b></td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/MaplinN32GL_Mod_8.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/MaplinN32GL_Mod_8.jpg" width="240" class="aligncenter"></a></tr> </table> (Click on an image to enlarge it) </center> <h2>Power Output</h2> I also decided to see how well the device I modified compared to the original device. I left them both on charge (via USB) all night, totalling a good 7 hours. My test was simple: The device claimed it could supply 500mA at 5 volts. A 10 &Omega; resistor would draw 500 mA at 5 volts. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/MaplinN32GL_Mod_12.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/MaplinN32GL_Mod_12.png" width="640" alt="Results of Power Test" class="aligncenter"></a> From this graph you can clearly see that the original device is much better. The low output voltage is due to the thin wires inside the USB cable. The voltages here are directly across the resistor, and so are the load voltage. At 500mA, we were dropping 1 volt over the wires. The BAU8C regulator aims to provide 5.5 volts. <h1>Why So Crap?</h1> So, as you can see from the above graphs, my modified device was rubbish compared to the original device. After a little thought, I realised why: The charging circuit couldn't supply a high enough voltage to charge the 3 NiMH cells. Various sources, mentioned below, detail the charging of NiMH cells. Typically, a NiMH cell is charged with a voltage of around 1.6 volts. There are different schemes of charging batteries. The scheme originally was a cross between trickle charge and a kind of fast charge - not recommended! When the cells were changed for the more demanding NiMH cells, there simply wasn't a high enough voltage to charge the three cells in series. When they were all flat, the cell with the lowest voltage (determined by manufacturing tolerances, etc) would charge first. The others would charge a little too. Once the first cell is charged, there is a lower voltage for the other two cells - they charge at a lower current, requiring much longer to reach full charge. Once two of the cells were charged, the third cell would take even longer to reach full charge. In my device, there simply wasn't enough potential difference to allow more than one cell to charge, so only one cell ever did. When performing the tests, the one charged cell provided as much power as possible, until it was discharged. The flat cells detract from the energy supplied due to a process called <a href="http://en.wikipedia.org/wiki/Reverse_charging#Reverse_charging">Polarity Reversal</a>. <h1>The Fix?</h1> <a href="http://www.aaron-brown.net/">Aaron</a> suggested that I used a lithium cell with a higher capacity instead of a chain of NiMH cells. I found an old Nokia BL-5J battery pack I had for an old mobile phone. I repeated the power test for the Lithium battery. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/MaplinN32GL_Mod_13.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/MaplinN32GL_Mod_13.png" width="640" alt="Results of Lithium Battery" class="aligncenter"></a> This is, again, worse than the original 650 mAh cell. This time I noted that the reason the battery was never used in my mobile phone was because the battery only lasted about 2 hours in the mobile phone. While the genuine Nokia battery was 1350 mAh, I have large reason to doubt this Chinese copy of the BL-5J is. <b>The Fix? No.</b> :( <h1>Sources</h1> <ul> <li> [1] Batteries</li> ::(http://homepages.which.net/~paul.hills/Batteries/BatteriesBody.html) </ul> ::Taken on 5/Jan/2011 at 19:31 BST <ul> <li> [2] Nickel-metal hydride battery : Wikipedia</li> ::(http://en.wikipedia.org/wiki/Nickel-metal_hydride_battery) </ul> ::Taken on 5/Jan/2011 at 19:34 BST <ul> <li> [3] NiCd Battery Charger</li> ::(http://www.angelfire.com/electronic/hayles/charge1.html) </ul> ::Taken on 5/Jan/2011 at 19:31 BST <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Batteries</b> <b>FIXME_Category :Phones</b> Marconi http://new.george-smart.co.uk/marconi draft marconi 3358 closed page closed 0 2012-04-21 01:08:27 During a family visit to Cornwall in July 2011, I had the opertunity to visit the Lizard Wireless Centre at Lizard, Cornwall and the Marconi Centre at Poldhu, Cornwall. This page just has a few pictures that I thought may be of interest. If you click the pictures, more details will appear about the image; clicking the image again will show the full resolution image. If you would like an image without the copyright notice, contact me - it's not a problem! <h1>The Lizard Wireless Centre</h1> The first Coastal Path sign mentioning the Lizard Wireless Station. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_LizardWireless_1.JPG"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_LizardWireless_1.JPG" width="600" class="aligncenter"></a> Commemorative plaque outside the Lizard Wireless Station. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_LizardWireless_2.JPG"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_LizardWireless_2.JPG" width="600" class="aligncenter"></a> National Trust sign, also outside the wireless site. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_LizardWireless_3.JPG"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_LizardWireless_3.JPG" width="600" class="aligncenter"></a> View across the bay from the station. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_LizardWireless_4.JPG"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_LizardWireless_4.JPG" width="600" class="aligncenter"></a> The station (2 huts on left) and lighthouse site (right). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_LizardWireless_5.JPG"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_LizardWireless_5.JPG" width="600" class="aligncenter"></a> Final part of the footpath leading to the station. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_LizardWireless_6.JPG"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_LizardWireless_6.JPG" width="600" class="aligncenter"></a> Also near buy, the Lloyds Signal Station, used by Lloyds Insurance to keep track of ships. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_LizardWireless_7.JPG"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_LizardWireless_7.JPG" width="600" class="aligncenter"></a> The open sign and view out to see. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_LizardWireless_8.JPG"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_LizardWireless_8.JPG" width="600" class="aligncenter"></a> The (original) workshops as used by Marconi. Antennas located out of shot to right. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_LizardWireless_9.JPG"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_LizardWireless_9.JPG" width="600" class="aligncenter"></a> Inside the workshop, the Marconi station. Some parts are replicas, some original. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_LizardWireless_10.JPG"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_LizardWireless_10.JPG" width="600" class="aligncenter"></a> The Wireless Station's <a href="http://new.george-smart.co.uk/qsl_card">QSL Card</a> for their Amateur Radio Station, GB2LD. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_LizardWireless_11.JPG"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_LizardWireless_11.JPG" width="600" class="aligncenter"></a> The view from the workshop window. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_LizardWireless_12.JPG"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_LizardWireless_12.JPG" width="600" class="aligncenter"></a> My car, parked where sections of the World-War 2 Chain Home Radar were sited. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_LizardWireless_13.JPG"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_LizardWireless_13.JPG" width="600" class="aligncenter"></a> <h1>The Marconi Centre (Poldhu)</h1> The start of the footpath leading to the Marconi Centre. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_MarconiCentre_1.JPG"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_MarconiCentre_1.JPG" width="600" class="aligncenter"></a> The outside of the Marconi Centre. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_MarconiCentre_2.JPG"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_MarconiCentre_2.JPG" width="600" class="aligncenter"></a> Sign explaining the view of the radio field. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_MarconiCentre_3.JPG"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_MarconiCentre_3.JPG" width="600" class="aligncenter"></a> Foundations of transmitter house, used for first Atlantic communications by Marconi (designed by A. Flemming). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_MarconiCentre_4.JPG"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_MarconiCentre_4.JPG" width="600" class="aligncenter"></a> One of the Marconi Centre's modern Amateur Radio Stations (available for use by Radio Hams). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_MarconiCentre_5.JPG"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_MarconiCentre_5.JPG" width="600" class="aligncenter"></a> <a href="http://www.christopher-smart.co.uk">Chris, G8OCV</a> works PSK31 from the Marconi Centre <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_MarconiCentre_6.JPG"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_MarconiCentre_6.JPG" width="600" class="aligncenter"></a> A Morse key produced by Marconi's Wireless Telegraphy Company Ltd. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_MarconiCentre_7.JPG"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_MarconiCentre_7.JPG" width="600" class="aligncenter"></a> Monument to Marconi standing in the old antenna field outside the Marconi Centre. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_MarconiCentre_8.JPG"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_MarconiCentre_8.JPG" width="600" class="aligncenter"></a> These images show the 4 plaques on the sides of the monument. Click an image to enlarge. <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_MarconiCentre_9.JPG"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Marconi_MarconiCentre_9.JPG" width="150" class="aligncenter"></a></tr> </table> Click an image to enlarge </center> <b>FIXME_Category :Radio</b> <b>FIXME_Category :Walking</b> <b>FIXME_Category :Photos</b> <b>FIXME_Category :Holiday</b> MB7UCL http://new.george-smart.co.uk/mb7ucl 5023 mb7ucl draft 0 2014-07-27 00:50:14 closed page closed MB7UCL is an APRS Digipeater housed in the <a href="http://www.ee.ucl.ac.uk/">Department of Electronic & Electrical Engineering</a> at <a href="http://www.ucl.ac.uk/">University College London</a>. The system operator and licence (NoV) holder is M1GEO. Antenna erection was done by <a href="http://www.qrz.com/db/M0STO">Spencer M0STO</a>. The NoV information can be found here for <a href="http://www.ukrepeater.net/my_packet.php?id=2200">MB7UCL on UK Repeaters</a>. The hardware is a Kenwood TK-762 PMR at 2W ERP using a 1/2 wave dipole at around 37 metres AGL. The node control is provided by a <a href="http://microsat.com.pl/product_info.php?cPath=21&products_id=34">Microsat WX3in1 Plus APRS Advanced Digipeater & I-Gate</a>. The node is hosted free of charge in the Roberts Engineering Building, Malet Place, London, WC1E 7JE. All correspondence regarding MB7UCL should come via M1GEO <a href="http://new.george-smart.co.uk/contact_me">Contact Me</a>. The digipeater and iGate have been planned for a long time, but went into active service on Saturday 31 May 2014. There is currently no internet access on site due to firewall settings, though this will be rectified in due course. The matter of Internet access is out of my control, since access is provided via <a href="https://www.ja.net">JaNET</a> whom provide most Universities with Internet services. There is a formal process for adding equipment to the university network with incoming firewall exceptions, which cannot be bypassed. Please visit <a href="http://www.qrz.com/db/MB7UCL">MB7UCL's QRZ.com page</a> and the <a href="http://www.aprs.fi/MB7UCL">APRS.fi Page</a> Some pictures of the set up and the view: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/MB7UCL_wx3in1_guts.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/MB7UCL_wx3in1_guts.jpg" width="600" class="aligncenter"></a> Inside the WX3in1+ <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/MB7UCL_gear.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/MB7UCL_gear.jpg" width="600" class="aligncenter"></a> The WX3in1+ and the Kenwood TK-762 PMR <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/MB7UCL_boxed.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/MB7UCL_boxed.jpg" width="600" class="aligncenter"></a> The WX3in1+ and the Kenwood TK-762 PMR boxed with small 5A switching power supply module. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/MB7UCL_installed.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/MB7UCL_installed.jpg" width="600" class="aligncenter"></a> The equipment positioned in the corner behind the cupboards, with coax, mains and Ethernet cables. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/MB7UCL_M0STO.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/MB7UCL_M0STO.jpg" width="600" class="aligncenter"></a> Spencer M0STO readying himself for the antenna erection <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/MB7UCL_Antenna.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/07/MB7UCL_Antenna.jpg" width="600" class="aligncenter"></a> The dipole antenna as fitted with it's view to the south. Notice the London Eye, The Shard and Senate House. MCHF http://new.george-smart.co.uk/mchf closed page closed 2016-06-08 18:57:33 0 draft mchf 5487 During the December 2015 meeting of the <a href="http://www.camb-hams.com/">Camb-Hams</a>, <a href="http://www.geekshed.co.uk/">Gavin M1BXF</a> had brought along his small, home-brew amateur radio project - The <a href="http://www.m0nka.co.uk/?page_id=2">mcHF</a> transceiver - which he had been building for a week or so prior to the gathering. Having seen the mcHF function on a small antenna, members were interested, and a group buy was set-up, headed primarily by <a href="https://www.qrz.com/db/G0DDX">Geoff G0DDX</a> guided by Gavin M1BXF. This page documents my progress with the construction of the project. The bits arrived in at the January 2016 meeting of Camb-Hams, in a nice plastic box from Geoff G0DDX. The following Saturday, with a few spare hours, I decided to make a start. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_all_parts.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_all_parts.jpg" width="600" alt="mcHF parts" class="aligncenter"></a> There were lots of bits, so in order to make finding parts easier, I decided to sort them into some loose groups. All resistors went together in a pile; all SMT capacitors together, and all larger capacitors together; inductors formed another pile; finally all the semiconductors went together. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_sorted_parts.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_sorted_parts.jpg" width="600" alt="mcHF parts in piles" class="aligncenter"></a> The first step was to build the power supply section. This is a straightforward build, but was a bit fiddly due to the requirement of the voltage regulator bodies to be flush to the PCB - the 7805 regulator had stepped legs, which needed trimming before the part would sit flush on the board. The first major hurdle was to mount the main MCU chip - the STM32W. This took some time to align correctly, and a brave and steady hand. I had intended to use the drag method to solder the part down, but that didn't quite go to plan. I ended up smothering the chip pins, then using a solder sucker to remove the bulk of the residual solder, and solder wick to clean the rest! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_MCU_soldered.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_MCU_soldered.jpg" width="600" alt="mcHF MCU Soldered" class="aligncenter"></a> <hr> After a second stint of around 6 hours, I finished the UI board. I had soldered everything but the LCD, since fellow Camb-Ham Bob G3PJT suggested the displays weren't correctly initialising. The LCD is a tight fight in the PCB, so I decided to push-fit it, and see how I got on. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_UI_finished.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_UI_finished.jpg" width="600" alt="mcHF UI Board Finished" class="aligncenter"></a> After some cleaning with flux remover and washing the board, I decided to power it. To my surprise, the display backlight burst into glory. I noticed the input current gradually creeping up, stabilising around 400 mA, which seemed quite high. Gavin M1BXF reported an expected current of 200 mA, which is about where mine starts from. In a generic (but insane) test, I held the power on for a while (there is no latching at this stage, as the MCU isn't programmed to hold it's own power on) and see what got hot, but nothing did. I decided to chance my luck and plug it in to the computer, following <a href="http://www.m0nka.co.uk/?page_id=514">Chris M0KNA instructions on programming the bootloader</a>. The mcHF (or at least the STM32 is visible to the computer for a short while, maybe around 10 seconds, before the device disappears. In this time, I was able to confirm that the ST bootloader loader DeFuSe was able to see the radio. This was diagnosed to be an incorrectly orientated capacitor C97. Rotating this resolved the problem, and I was able to install the boot-loader and flash the firmware as expected. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_FL_BL.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_FL_BL.png" width="600" alt="mcHF Flash BL" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_FL_FW.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_FL_FW.png" width="600" alt="mcHF Flash FW" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_UI_powered.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_UI_powered.jpg" width="600" alt="mcHF UI Running" class="aligncenter"></a> <hr> After playing around a little with the previously built UI board, I noticed that my mcHF hung (for about 1/2 second) when I rotated the frequency dial. It was a noticeable glitch. At the time, I assumed it was because the MCU was trying to talk with the Si570 or something, and as I hadn't build that part yet, it was having trouble. Now that I have now built the LO section, it's still doing the same. A quick conversation with Chris M0NKA revealed that if the frequency is in red (which mine was), there is an error on the I2C bus interfacing to the LO - essentially, it's shorted somehow - and there's no communication on the bus. This turned out to be a short under the STM32 chip - solder had tracked under the IC (probably as I applied far too much initially - be warned!). The only way to fix this was criminal! I decided to lift the offending track, realign the MCU pin, slide the cleaned track back under the MCU pin and resolder. After about 2 hours of surgery, I had cleared the fault with the SCL line being bridged to the neighbouring pin. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_I2C_Fixed.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_I2C_Fixed.jpg" width="600" alt="mcHF with fixed I2C Bus" class="aligncenter"></a> The only downside is that the back of the UI Board looks a total mess. At one point I was about to throw it away, and start again on a new UI Board. Or at least a new STM32; but it did survive. I added some nail varnish to hold the lifted track securely - this makes the back of the UI board look very poor, but I believe it is of mechanical advantage... Moral of the story; don't use too much solder (or do it properly in a SMT oven!). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_I2C_MCU_Fix.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_I2C_MCU_Fix.jpg" width="600" alt="mcHF with varnished hack" class="aligncenter"></a> <hr> After another stint, I was able to solder the bandpass filters and the remainder of the receiver circuit. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_Receiver.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_Receiver.jpg" width="600" alt="mcHF Receiver" class="aligncenter"></a> I removed the red nail varnish I had before, and tidied up some of the tracks. I applied a much smaller amount of clear nail varnish where required, but in fact, this turned out to be minimal. Feeling slightly more patient than previously, I slowly and methodically re-worked all of the pins from U4. This not only fixed a bug where the radio occasionally restarted, but several other poor joints were also improved. <hr> Monday 18th January 2016 saw the <a href="http://www.essexham.co.uk/news/essex-skills-night-january-2016-wrap-up.html">EssexHam January Meeting</a>, where I took along the mcHF to the show-and-tell style meeting. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_EssexHam_M1GEO.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_EssexHam_M1GEO.jpg" width="600" alt="mcHF presented by M1GEO at EssexHam Jan16" class="aligncenter"></a> During the meeting, I also managed to ponce a few metres of thin wire from Graham G7JYD to wind the filters and transformers in the transmitter. Now I have no excuses for not getting the transmitter done! After returning from EssexHam, I fired up WSPR and left the mcHF purring away. The antenna was only a short length of wire around the inside ceiling of the shack, so signals were poor - I followed the bands downwards throughout the evening, ending on 5 MHz (60 metres). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_WSPR_30m.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_WSPR_30m.jpg" width="600" alt="mcHF on 30m WSPR" class="aligncenter"></a> The map for my short piece of wire was as follows: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_WSPR_Map.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_WSPR_Map.png" width="600" alt="mcHF Map from WSPR" class="aligncenter"></a> And the waterfall of the WSPR Screen: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_WSPR_Program.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_WSPR_Program.png" width="600" alt="mcHF WSPR" class="aligncenter"></a> <hr> After a break of about 5 months, I finally got around to finishing the mcHF off! I'm pleased to say it's working, and I have made several contacts. The 17-10 meter filter wasn't looking so happy, so I have redesigned that: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_10m_Filter.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_10m_Filter.png" width="600" alt="mcHF 10m Filter" class="aligncenter"></a> Here, I am monitoring the 20m JT65 frequency using the USB audio cable. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_JT65_Program.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_JT65_Program.jpg" width="600" alt="mcHF WSPR" class="aligncenter"></a> Some views of the radio construction. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_UI_Front.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_UI_Front.jpg" width="600" alt="mcHF UI Front" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_UI_Back.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_UI_Back.jpg" width="600" alt="mcHF UI Back" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_RF_Front.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_RF_Front.jpg" width="600" alt="mcHF RF Front" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_RF_Back.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/06/MCHF_RF_Back.jpg" width="600" alt="mcHF RF Back" class="aligncenter"></a> All hand soldered, including the big ARM core, using a soldering iron :) Media http://new.george-smart.co.uk/media draft media 3858 page closed closed 0 2013-01-18 03:01:05 This page details just a few of my favorites in each category. <h2>Radio</h2> <ul> <li> The Now Show</li> <li> The News Quiz</li> <li> Just a Minute</li> <li> The Unbelievable Truth</li> <li> Milton Jones, <i>various series</i></li> <li> I'm Sorry I Haven't a Clue</li> <li> The Infinite Monkey Cage</li> <li> Jeremy Hardy, <i>various series</i></li> <li> Heresy</li> <li> Mark Watson, <i>Makes the world substantially better</i></li> </ul> <h2>Television</h2> <ul> <li> Have I Got News For You</li> <li> Dr Who</li> <li> Outnumbered</li> <li> QI (Quite Interesting)</li> <li> Mock The Week</li> <li> Skins</li> <li> The Inbetweeners</li> <li> The IT Crowd</li> <li> Ideal</li> <li> Armstrong and Miller</li> <li> That Mitchell and Webb Look</li> <li> James May's Man Lab</li> </ul> <h2>Comedy</h2> I have seen the following live, during their standup tours. <ul> <li> Bill Bailey</li> <li> Rhod Gilbert (x2)</li> <li> Dara O'Brein</li> <li> Frankie Boyle</li> <li> Rich Hall</li> <li> Jimmy Carr</li> <li> Ross Noble (x2)</li> <li> Stephen K Amos</li> </ul> <h2>Music</h2> Seen live, at individual tours. <ul> <li> Linkin Park</li> <li> Placebo</li> <li> Madness</li> <li> Heather Small</li> <li> KoRn</li> <li> Blink-182</li> </ul> <b>FIXME_Category :About Me</b> Meteor Scatter Reception on RTL-SDR http://new.george-smart.co.uk/meteor_scatter_reception_on_rtl_sdr 2015-12-07 02:05:32 0 closed page closed 5392 draft meteor_scatter_reception_on_rtl_sdr <h1>Motivation</h1> Spurred on by fond memories of our adventures in <a href="https://en.wikipedia.org/wiki/Meteor_burst_communications#Amateur_radio_use">Meteor Scatter</a> earlier in 2015 <a href="http://www.gb0snb.com/wordpress/2015/08/meteor-scatter/">at the Secret Nuclear Bunker</a>, I set a mental note to watch the meteor showers throughout the remainder of the year. As I write this article, on the 06 December 2015, the December 13-14 <i>Geminids</i> are fast approaching. I'd ideally like to be able to operate during this time, but, given my work load is very intense at the present, and the weekends are likely to be busy with the SNBGC's Christmas Party and family gatherings, I fear this won't happen. Okay, enough of the preface... <h1>RTL-SDR Setup and Calibration</h1> What I decided to try, was to get my RTL-SDR dongle to receive Meteor Scatter pings on the 2 metre (or any other) amateur band. FSK441 is a good bet on 144.370 MHz upper-sideband (as is convention). I wanted this to work on Linux (Xubuntu 15.04), and I really wanted to use a RTL-SDR dongle. So I decided to try in software. This saved tying up my IC7100 or 'proper' VHF radios. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/RTL-SDR.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/RTL-SDR.jpg" width="500" alt="RTL-SDR Dongle 820T2" class="aligncenter"></a> My antenna here is a cheap and simple Diamond X30 colinear, mounted very low down, on the house wall. It's not above the roofline, and it's really very poor. But it does work, and it will do for testing here. I use about +20 dB of gain on the RTL-SDR. You should adjust this for the best signal to noise at your own location - I use a local repeater as a distant signal. The first thing to do is get <a href="http://gqrx.dk/">gqrx</a> going. You can install that via the repositories, it's called 'gqrx-sdr'. Once you have that loaded, you need to set the calibration on the dongle. I am fortunate enough to receive <a href="http://www.gb3vhf.co.uk/">GB3VHF</a> which is GPS frequency locked. Below, what you see, is a USB dial frequency of 144.429 MHz. Knowing that GB3VHF is accurately on 144.430 MHz (for its CW ident), I am looking for an audio frequency of 1 kHz. I adjust the frequency correction (in parts per million, PPM) to give a 1 kHz audio tone in the audio FFT window (bottom right). This gives is some confidence that we're on frequency. This should be checked a few times as the RTL-SDR dongle warms, and its reference oscillator drifts. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/Gqrx_RTL-SDR_calibration.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/Gqrx_RTL-SDR_calibration.png" width="600" alt="RTL-SDR Calibration" class="aligncenter"></a> Once we know we're accurately on the frequency of interest, we can then move to the Meteor Scatter frequency, 144.370 MHz USB. <h1>Decoding Software</h1> At this point, I switch to using the FSK441 software. You have a choice here. You can either use <a href="http://physics.princeton.edu/pulsar/k1jt/wsjt.html">WSJT</a> or <a href="http://lz2hv.org/mshv">MSHV</a>. In my experience, I have found MSHV to perform better. For this article I am using MSHV version 1.02. As I am using Linux, I have to compile the program (which is simple) but Windows users will just be able to download the binary. The compilation is outside the scope of this article, but in a sentence, it's as follows: Unzip source, cd into directory, edit src/config.h for OS, edit MSHV_XXX.pro for the correct libsound location, qmake-qt4 MSHV_XXX.pro, make. (<a href="http://sourceforge.net/projects/mshv/files/README.txt/download">see here for more info</a> - I used qmake-qt4 to avoid needing QPlastiqueStyle for Qt5). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/MSHV_102_Xubuntu.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/MSHV_102_Xubuntu.png" width="600" alt="MSHV 1.02 Built on Xubuntu" class="aligncenter"></a> <h1>Audio Linking using snd-aloop</h1> We need a way to get the audio from the software receiver to the decoding software. Windows users should check out <a href="https://en.wikipedia.org/wiki/Virtual_Audio_Cable">Virtual Audio Cable</a>. Linux users are blessed with the free <i>snd-aloop</i> which does the same. The Windows software is reasonably easy to use, and not in the scope of this article. When used, the snd-aloop kernel module will create a loopback analogue stereo device with an input and output that connect together. You first need to tell ALSA what you want it to do with the module when it is loaded. Edit /etc/modprobe.d/alsa-base.conf, and at the end of the file, add: <blockquote> options snd_xxxxxxx index=0 options snd_yyyyyyy index=1 options snd_aloop index=2 </blockquote> Once you have saved this, you should load the kernel module, using the following: <blockquote> sudo modprobe snd-aloop </blockquote> You'll be able to see the new Loop device in the Volume Control Configuration window. We're interested in <i>Loopback</i>. The other two devices (Built-in Audio, and LifeCam HD-3000) are the proper sound interfaces I use. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/snd-aloop_settings.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/snd-aloop_settings.png" width="600" alt="snd-aloop in Volume Settings" class="aligncenter"></a> With the loopback interface now running, we can start to direct audio through it. With gqrx, there is a small niggle. I cannot, no matter what I try, get the demodulated sound to output directly to the ALSA device. This is something peculiar to gqrx. However, there is a work around. With gqrx running, you can select the output device via the Volume Control. On the Playback tab, under [gqrx] you can select <i>Loopback Analogue Stereo</i> instead. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/Gqrx_snd-aloop.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/Gqrx_snd-aloop.png" width="600" alt="Gqrx select snd-aloop in Volume Settings" class="aligncenter"></a> From inside the decoding software (here MSHV), you can then set the input device as the loopback device, and select the required level, as you usually would. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/MSHV_snd-aloop.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/MSHV_snd-aloop.png" width="600" alt="MSHV select snd-aloop in Volume Settings" class="aligncenter"></a> <h1>Receiving</h1> And there you have it. You just need to be patient now! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/MSHV_RTL-SDR_Desktop.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/MSHV_RTL-SDR_Desktop.png" width="700" alt="MSHV running RTL-SDR" class="aligncenter"></a> Frustratingly, a neighbouring house has a noisy thermostat on their heating system, which causes short pulses of S9+ noise, which the software confuses as being a meteor ping, and then decodes, resulting in an false decode of just junk. This is regular at home, but I suppose what I expect living in a built up part of East London. A 'proper' receiver is better filtered against such noise, and performs better. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/MSHV_RX_Noise.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/MSHV_RX_Noise.png" width="600" alt="MSHV Noise" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/Gqrx_RX_Noise.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/Gqrx_RX_Noise.png" width="600" alt="MSHV Noise" class="aligncenter"></a> The noise shows up as steps in MSHV and as a wide-band across the gqrx waterfall. The line at 144.430 MHz is GB3VHF, the wobble is JT65 that the beacon transmits. Meter Clock http://new.george-smart.co.uk/meter_clock closed page closed 0 2011-02-25 21:31:40 draft meter_clock 1702 The first script I wrote for the <a href="http://new.george-smart.co.uk/velleman_k8055">Velleman K8055</a> was to make a clock out of two moving-coil meters. I had used the meters for a similar project with a PIC MCU and ADC. I wanted to try that here. I also threw in the ability to monitor system resources on the two meters: CPU usage and Memory. The two scripts are available here: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/K8055_Clock-CPURAM-Meter.tar.gz">K8055 Clock & CPU/RAM script</a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/K8055_Meter_Clock.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/K8055_Meter_Clock.jpg" width="600" alt="Moving Coil Meter Clock" class="aligncenter"></a> <center>Here, the clock shows 7:46</center> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Clocks</b> Mobile Car Station http://new.george-smart.co.uk/mobile_car_station page closed closed 0 2012-01-12 14:44:03 draft mobile_car_station 3019 You may also be interested in my <a href="http://new.george-smart.co.uk/portable_radio">Portable Radio</a> page. <h1>Radio & APRS</h1> Due to my increased <a href="http://new.george-smart.co.uk/portable_radio">Portable Radio</a> work, I bought an <a href="http://new.george-smart.co.uk/icom_ic_7000">Icom IC-7000</a> for field/portable use, and moved my <a href="http://new.george-smart.co.uk/yaesu_ft_857d">Yaesu FT-857D</a> into the car to replace my <a href="http://new.george-smart.co.uk/yaesu_ft_7900e">Yaesu FT-7900E</a>. The main reason was to get HF in the car. The FT-857D has the same DATA and ACC ports as the FT-7900E so the <a href="http://new.george-smart.co.uk/aprs">APRS</a> mobile tracker hardware will fit with the new radio. The only issue was in the physical sizes of the radios. The FT-857D is much larger than the FT-7900E and so wouldn't fit inside the storage compartment in the back of my car. I decided that I would install the radio and tracker into a nice box and mount it under a seat in the car. This way, I would have access to much more room and the box would serve to protect the radio from shoes from persons in the back seats and to keep the wires confined. The pictures below show the finished design. <blockquote> </blockquote> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/CarPortable_Front.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/CarPortable_Front.jpg" width="600" alt="The front of the Portable Box" class="aligncenter"></a> The image above is the front of the box. The fan is blowing out of the box, drawing air around the radio from the holes on the right side of the box. These holes vaguely line up with the fans on the radio. The LEDs show the status of the <a href="http://www.foxdelta.com/products/foxtrak-old.htm">FoxDelta FoxTrak</a> (TinyTrak clone) APRS Tracker. They represent GPS status (green), channel status/DCD (yellow) and radio transmit (red). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/CarPortable_Inside.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/CarPortable_Inside.jpg" width="600" alt="Inside the Portable Box" class="aligncenter"></a> The image above shows the inside of the box. The radio has the separation kit so the front panel is mounted on the vehicle dashboard with the speaker and microphone are wired out to sensible places. This box is to be mounted under-seat in the car cabin - this affords it protection from heavy objects squashing or colliding with it in the vehicle boot. You can see the 60mm-fan is mounted on some cork to reduce mechanical vibration being transferred to the case. The LEDs are also mounted on cork to space the LEDs - making sure that only a small amount of the LED shows through the front panel - just aesthetics. The <a href="http://www.foxdelta.com/products/foxtrak-old.htm">FoxTrak</a> is located on the right, powered by the radio. The GPS plugs into the FoxTrak on the image right DB9 socket and is powered by the radio, via the FoxTrak. Selecting a suitable static beacon interval, and radio auto-power-off interval, it can be arranged that once the vehicle is static, if I forget to turn the radio off, the system will transmit one beacon, and then power down the radio, tracker and GPS; thus preventing the car battery from flattening. <h1>VHF Antenna</h1> The VHF/UHF antenna on the car is a simple dual-band antenna, chosen for it's short length. It's not the greatest antenna, but it matches well giving a low SWR and results have been fair. The short length allows me to take the car into multi-story car parks without worrying. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Radio_in_car5.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Radio_in_car5.jpg" width="300" alt="VHF/UHF Antenna" class="aligncenter"></a> <h1>HF Antennas</h1> As I don't yet have any mobile use antennas, I'm limited to long-wires. I am looking to get some whips to use. The design of my car makes it hard to have bumper mounted antennas, as the boot opens through that space. See my <a href="http://new.george-smart.co.uk/portable_radio">Portable Radio</a> page for more on HF antennas and portable operation. <b>FIXME_Category :Radio</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Car</b> MSO 3000 http://new.george-smart.co.uk/mso_3000 2013-01-26 05:08:15 0 closed closed page 3912 mso_3000 draft As part of my <a href="http://new.george-smart.co.uk/phd">PhD</a> I was required to take lots of samples and print screens on several Tek oscilloscopes. Initially, with the help of the Tek representative, I was able to get the device talking to my desktop PC - the process seemed relatively simple. Once the guy had gone and I was on my own, I couldn't figure out for the life of me, how to get the Tek scope to mount a <a href="http://www.samba.org/">Samba</a> share via Ethernet. <h1>Web Control</h1> It proved simple to get the device to interface via network, and I quickly had the scope working via <a href="http://www.w3.org/Protocols/">HTTP</a> with the web interface in my Google Chrome web browser: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/TekMSO3000_Web.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/TekMSO3000_Web.png" width="500" alt="Tek MSO 3014 in Chrome Browser" class="aligncenter"></a> <h1>Samba Mount</h1> I'm still working on this section, in between running the experiment. <b>FIXME_Category :ToDo</b> Multimode MEPT http://new.george-smart.co.uk/multimode_mept closed page closed 0 2015-12-27 03:32:49 draft multimode_mept 5403 <h1>Introduction</h1> I have long since played around with <a href="http://new.george-smart.co.uk/qrss">QRSS</a> (and <a href="http://new.george-smart.co.uk/qrss_on_2_metres">QRSS on 2 metres</a>) as well as <a href="http://new.george-smart.co.uk/wspr">WSPR</a> (and <a href="http://new.george-smart.co.uk/2m_wspr">2m WSPR</a>). I have written code (or dabbled with): <ul> <li><a href="http://new.george-smart.co.uk/arduino_qrss">Arduino QRSS</a></li> <li><a href="http://new.george-smart.co.uk/arduino_wspr">Arduino WSPR</a></li> <li><a href="http://new.george-smart.co.uk/arduino_rtty">Arduino RTTY</a></li> <li><a href="http://new.george-smart.co.uk/arduino_hellschreiber">Arduino Hellschreiber</a></li> <li><b>FIXME: Arduino TNC|Arduino TNC (AX.25) </b></li> </ul> This project was to combine a few of those modes into a multimode manned experimental propagation transmitter (MEPT). I wanted something that would transmit several modes and could be left running for a few hours. I was interested in experimenting with VHF, since most of my previous attempts had been on HF. I had played around with <a href="http://new.george-smart.co.uk/qrss_on_2_metres">2m QRSS</a> and <a href="http://new.george-smart.co.uk/2m_wspr">2m WSPR</a> before, but with very minimal success. The <a href="http://knightsqrss.blogspot.co.uk/">Knights QRSS group</a> (mailing list <a href="http://cnts.be/mailman/listinfo/knightsqrss_cnts.be">here</a>) usually arrange a new-years activity evening, and so, I decided to start early this year. The usual configuration is a machine sent callsign in dual-frequency CW, over a 10 minute stackable window. The receive station overlays 10 minute waterfall grabs, and the correlation of the signal against the randomness of noise helps to resolve the signal. I decided not to break with this standard, and keep my frames repeating exactly on the 10 minute. <h1>Hardware Choices</h1> I wanted frequency versatility over the HF-VHF range. Previously I had used an Analog Devices AD9851 DDS chip. This time I opted for the Si-Labs Si5351 for several reasons: a frequency range from 2.5 kHz to 200 MHz and glitchless frequency changes being the main advantages. I could then build a small power amplifier & low-pass filter to follow the board. When I started working on the project, <a href="http://nt7s.com/">Jason NT7S</a> was working on <a href="https://www.etherkit.com/rf-modules/si5351a-breakout-board.html">a breakout board for the Si5351</a>. This was originally a crowd-funded project, which has since been spun out. The board I have is an early revision. I originally used the supplied TCXO from Jason, but this was found to be unsatisfactory - the temperature compensation steps resulted in jumps of around 2 Hz at 144 MHz, which is in the order of magnitude of modulation on QRSS. I ended up using a 25 MHz oscillator block in an old Pye Communications crystal oven. Another option is the Arduino shield by <a href="http://www.kanga-products.co.uk/">KangaProducts</a>. I was donated an early development version of the superbly convenient <a href="http://www.kanga-products.co.uk/index.php?option=com_content&view=article&id=88&Itemid=99">m0xpd Si5351A Arduino Shield</a> to beta test. This shield exceeded my expectations in terms of functionality with the on-board amplifiers, and the convenience of the Arduino shield. The shield worked better on HF than VHF, because the on-board oscillator was prone to thermal drift and the ferrites seemed a little lossy on VHF. I repurposed a PA and LPF for 144 MHz, and started building. The rather Frankenstein contraption is shown below: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/Multimode_MEPT_2m.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/Multimode_MEPT_2m.jpg" width="600" alt="2m MEPT" class="aligncenter"></a> <h1>Software</h1> I used an Arduino controller, and pulled in standard libraries to glue together for the basic functionality. You're advised to look at the list above if you're interested in a single mode. The basic Si5351 driver was written by Jason NT7S, and can be found here: <a href="https://github.com/etherkit/Si5351Arduino">github.com/etherkit/Si5351Arduino</a>. I then glued the code to support other modes around the Si5351 driver. These modes are expanded on below. <h2>SMT HELL</h2> Sequential Multitone Hellschreiber (SMT HELL) is a technique for "drawing" or "writing" in the frequency domain. It can often be seen on waterfalls when using PSK31, when people will send "73" or "CQ". The text is then "rendered" by sequentially scanning through frequencies in time, and either transmitting a carrier or not. The carrier shows up visible on the receiving station's waterfall. Some more information can be found on this, <a href="http://www.qsl.net/zl1bpu/HELL/MT_intro.htm">here</a>. To generate this, we first need to get the text we wish to send. You need to make a low-resolution bitmap of the text or image you wish to send. I used <a href="http://patorjk.com/software/taag/">patorjk.com Text Ascii-Art Generator</a> with the Banner font to create the following. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/TAAG_M1GEO_HNY.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/TAAG_M1GEO_HNY.png" width="600" alt="M1GEO HAPPY NEW YEAR" class="aligncenter"></a> I then use console tools to convert this into a bitmap. If you are using an operating system with Bash and coreutils, you can use cut, paste, head and tail to mangle the data. The net aim is to arrange the text vertically, with the # represented by 1 and the spaces as 0. Then, we can make each column (as above, which is transposed into rows) into a byte. Save the text as /tmp/qrss <blockquote> for A in `seq 1 8`; do echo "Proc $A"; cat /tmp/qrss | head -n $A | tail -n 1 | sed 's/\(.\)/\1\n/g' > /tmp/qrss${A}; done paste -d "" /tmp/qrss1 /tmp/qrss2 /tmp/qrss3 /tmp/qrss4 /tmp/qrss5 /tmp/qrss6 /tmp/qrss7 /tmp/qrss8 > /tmp/qrss_new cat qrss_new | sed -e "s/#/1/g" -e "s/ /0/g" -e "s/^/B/" -e "s/$/,/" rm /tmp/qrss* </blockquote> A this point, you'll have a nice block of binary, ready to be inserted into an array. Beginning with B and ending with a comma. Here's chunk (it's an M). <blockquote> B1111111, B0100000, B0010000, B0001000, B0010000, B0100000, B1111111, </blockquote> This is inserted into the Arduino code. When run, the result looks something like the following: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/MM_MEPT_HELL.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/MM_MEPT_HELL.png" width="600" alt="SMT HELL" class="aligncenter"></a> Image taken using <a href="http://www.sdradio.eu/weaksignals/argo/index.html">Argo by I2PHD</a>. <h2>QRSS & CW</h2> For the Morse code and QRSS (very slow, dual frequency Morse), a simple, reusable, routine was written that sends dots and dashes in either ASK (on/off pulses) or FSK (frequency changes). It also sends at a human readable speed (approx 20 words per minute) or at the QRSS rate of 3 second dits. The message to be sent is input in dots and dashes, and can be converted with an <a href="http://morsecode.scphillips.com/translator.html">online Morse code translator</a>. The output QRSS looks something like the following. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/MM_MEPT_QRSS.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/MM_MEPT_QRSS.png" width="600" alt="QRSS" class="aligncenter"></a> The next job is to play around with the exact timing of the QRSS and SMT HELL. I currently have 81754 milliseconds of free time available. Ideally, shortening the HELL time slightly to leave 2 minutes would allow for sending a WSPR frame too. Another option would be to remove the CW in the beginning, which would allow just enough time. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/MM_MEPT_QRSS_HELL.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/12/MM_MEPT_QRSS_HELL.png" width="600" alt="QRSS & HELL" class="aligncenter"></a> The above screen shows <a href="http://www.sdradio.eu/weaksignals/argo/index.html">Argo</a> with running under Wine, with 3-second ticks QRSS in slow mode. <b><i>More to come!</b></i> MusicSquare http://new.george-smart.co.uk/musicsquare 0 2012-01-12 14:44:35 closed closed page 3020 musicsquare draft Click on the squares to make notes. Time travels from left to right, and pitch increases with height. <html> <center> <object width="550" height="550"> <param name="movie" value="/files/MusicSquare.swf"> <embed src="/files/MusicSquare.swf" width="550" height="550"> </embed> </object> </center> </html> <b>FIXME_Category :Music</b> <b>FIXME_Category :Silly</b> Nav http://new.george-smart.co.uk/nav 3334 nav draft 2012-04-21 00:30:34 0 closed page closed #REDIRECT <b>FIXME_MediaWiki :MenuSidebar</b> NFC Experiments http://new.george-smart.co.uk/nfc_experiments draft nfc_experiments 4486 closed page closed 0 2013-05-16 13:49:03 <i>It should be stressed here that none of my personal cards used here were abused, mistreated, cloned or otherwise tampered with in any way. This exercise had no malicious intent and was carried out as purely a technical exercise.</i> Recently I have been playing with <a href="http://en.wikipedia.org/wiki/Near_field_communication">NFC</a> and <a href="http://en.wikipedia.org/wiki/Radio-frequency_identification">RFID</a>. Most of the literature for hacking and experimenting with these cards seem to suggest 3 or 4 different readers, and of these, the <a href="http://www.acs.com.hk/">ACS</a> <a href="http://www.acr122.com/">ACR122</a>. The version I use here is the ACR122U-A2. There are 3 key parts: <ul> <li> <b>libnfc</b> - Public platform independent Near Field Communication (NFC) library</li> <li> <b>mfcuk</b> - MiFare Classic Universal toolKit</li> <li> <b>mfoc</b> - Mifare Classic Offline Cracker</li> </ul> The last two, <i>'mfcuk</i> and <i>mfoc</i>, are used for getting the keys which enable you to access the data. The first, <i>libnfc</i>, provides a library upon which the others are built. In my very limited experience with these tools, they work very well. I have been able to clone several cards across all sectors without initial knowledge of the keys. The only thing I couldn't manage to do (yet) is write the UID (the card's ID number) which resides in block 0 sector 0. This is usually set by the manufacturer, but on some cheap Chinese cards it can be over-written by modifying the <i>libnfc</i> library. I've not been able to make this work, but I think I have genuine NXP cards which could explain things. <h1>Preliminaries</h1> Before you get started, you will need to install the following packages, which are used to build the programs below. <blockquote> sudo apt-get install autoconf libtool libpcsclite-dev libusb-dev </blockquote> I also work from a subfolder inside my home directory. Make a folder inside your home, such as <i>nfc</i> and change into it. <blockquote> mkdir ~/nfc cd ~/nfc </blockquote> Once you're ready, let's crack on! <h1>libnfc</h1> Download the libnfc source code from the project website. The download link is here: <a href="https://code.google.com/p/libnfc/downloads/list">https://code.google.com/p/libnfc/downloads/list</a>. The latest version at the time of writing was libnfc 1.7.0 Release Candidate #7. <blockquote> wget https://libnfc.googlecode.com/files/libnfc-1.7.0-rc7.tar.gz </blockquote> Once downloaded, you need to extract the source <blockquote> tar xvf libnfc-1.7.0-rc7.tar.gz </blockquote> Then move into the source directory <blockquote> cd libnfc-1.7.0-rc7/ </blockquote> Next we need to build the library. <blockquote> autoreconf -vis ./configure make sudo make install sudo ldconfig </blockquote> Now connect the programmer if it isn't already and place a card on the reader. Running <blockquote> sudo nfc-list </blockquote> will, if you've been successful, list the NFC card you've placed on the reader. Here's what I get for a random card: <blockquote> george@netbook-linux ~/nfc/libnfc-1.7.0-rc7 $ sudo nfc-list nfc-list uses libnfc 1.7.0-rc7 NFC device: ACS / ACR122U PICC Interface opened 1 ISO14443A passive target(s) found: ISO/IEC 14443A (106 kbps) target: ATQA (SENS_RES): 00 04 UID (NFCID1): 3e d1 11 f3 SAK (SEL_RES): 08 </blockquote> <h1>mfcuk</h1> Toolkit containing samples and various tools based on and around libnfc and crapto1, with emphasis on Mifare Classic NXP/Philips RFID cards. Used for mifare classic weakness demonstration/exploitation, to demonstrate use of libnfc (and ACR122 readers) and to demonstrate use of Crapto1 implementation to confirm internal workings and to verify theoretical/practical weaknesses/attacks. Download the mfcuk source code from the project website. The download link is here: <a href="https://code.google.com/p/mfcuk/downloads/list">https://code.google.com/p/mfcuk/downloads/list</a>. The latest version at the time of writing was MFCUK 0.3.7. <blockquote> wget https://mfcuk.googlecode.com/files/mfcuk-0.3.7.tar.gz </blockquote> Exact the tar file <blockquote> tar xvf mfcuk-0.3.7.tar.gz </blockquote> then move into the directory <blockquote> cd mfcuk-0.3.7/ </blockquote> You'll need to modify the source code very slightly for mfcuk as there is a bug. <blockquote> nano src/nfc-utils.c </blockquote> Find the following line inside the <i>print_nfc_target(const nfc_target nt, bool verbose)</i> function <blockquote> str_nfc_target(&s, nt, verbose); </blockquote> and change it to <blockquote> str_nfc_target(&s, &nt, verbose); </blockquote> From here, we need to compile the program. <blockquote> autoreconf automake autoconf ./configure make </blockquote> Hopefully it's compiled okay. The resulting binary is found at <i>src/mfcuk</i>. Placing a random card on the reader, I can find key A for sector 0 with the following command. Check the help (-h) and the man page for what these options mean. You only need to crack one key, as then you can use <i>mfoc</i> to get the other keys more efficiently. <blockquote> sudo src/mfcuk -C -R 0:A -v 2 </blockquote> The process can take a little while, but should eventually return the key for the requested sector. My output is as follows: <blockquote> george@netbook-linux ~/nfc/mfcuk-0.3.7 $ sudo src/mfcuk -C -R 15 -v 2 mfcuk - 0.3.7 Mifare Classic DarkSide Key Recovery Tool - 0.3 by Andrei Costin, zveriu@gmail.com, http://andreicostin.com WARN: cannot open template file './data/tmpls_fingerprints/mfcuk_tmpl_skgt.mfd' WARN: cannot open template file './data/tmpls_fingerprints/mfcuk_tmpl_ratb.mfd' WARN: cannot open template file './data/tmpls_fingerprints/mfcuk_tmpl_oyster.mfd' INFO: Connected to NFC reader: ACS / ACR122U PICC Interface INITIAL ACTIONS MATRIX - UID 8e 46 58 fa - TYPE 0x08 (MC1K) --------------------------------------------------------------------- Sector | Key A |ACTS | RESL | Key B |ACTS | RESL --------------------------------------------------------------------- 00 | 000000000000 | . . | . . | 000000000000 | . . | . . 01 | 000000000000 | . . | . . | 000000000000 | . . | . . 02 | 000000000000 | . . | . . | 000000000000 | . . | . . 03 | 000000000000 | . . | . . | 000000000000 | . . | . . 04 | 000000000000 | . . | . . | 000000000000 | . . | . . 05 | 000000000000 | . . | . . | 000000000000 | . . | . . 06 | 000000000000 | . . | . . | 000000000000 | . . | . . 07 | 000000000000 | . . | . . | 000000000000 | . . | . . 08 | 000000000000 | . . | . . | 000000000000 | . . | . . 09 | 000000000000 | . . | . . | 000000000000 | . . | . . 10 | 000000000000 | . . | . . | 000000000000 | . . | . . 11 | 000000000000 | . . | . . | 000000000000 | . . | . . 12 | 000000000000 | . . | . . | 000000000000 | . . | . . 13 | 000000000000 | . . | . . | 000000000000 | . . | . . 14 | 000000000000 | . . | . . | 000000000000 | . . | . . 15 | 000000000000 | . R | . . | 000000000000 | . R | . . VERIFY: Key A sectors: 0 1 2 3 4 5 6 7 8 9 a b c d e f Key B sectors: 0 1 2 3 4 5 6 7 8 9 a b c d e f </blockquote> <blockquote> ACTION RESULTS MATRIX AFTER VERIFY - UID 8e 46 58 fa - TYPE 0x08 (MC1K) --------------------------------------------------------------------- Sector | Key A |ACTS | RESL | Key B |ACTS | RESL --------------------------------------------------------------------- 00 | 000000000000 | . . | . . | 000000000000 | . . | . . 01 | 000000000000 | . . | . . | 000000000000 | . . | . . 02 | 000000000000 | . . | . . | 000000000000 | . . | . . 03 | 000000000000 | . . | . . | 000000000000 | . . | . . 04 | 000000000000 | . . | . . | 000000000000 | . . | . . 05 | 000000000000 | . . | . . | 000000000000 | . . | . . 06 | 000000000000 | . . | . . | 000000000000 | . . | . . 07 | 000000000000 | . . | . . | 000000000000 | . . | . . 08 | 000000000000 | . . | . . | 000000000000 | . . | . . 09 | 000000000000 | . . | . . | 000000000000 | . . | . . 10 | 000000000000 | . . | . . | 000000000000 | . . | . . 11 | 000000000000 | . . | . . | 000000000000 | . . | . . 12 | 000000000000 | . . | . . | 000000000000 | . . | . . 13 | 000000000000 | . . | . . | 000000000000 | . . | . . 14 | 000000000000 | . . | . . | 000000000000 | . . | . . 15 | 000000000000 | . R | . . | 000000000000 | . R | . . RECOVER: 0 1 2 3 4 5 6 7 8 9 a b c d e f INFO: block 63 recovered KEY: af91d7429a9d INFO: block 63 recovered KEY: ba9a3887066f ACTION RESULTS MATRIX AFTER RECOVER - UID 8e 46 58 fa - TYPE 0x08 (MC1K) --------------------------------------------------------------------- Sector | Key A |ACTS | RESL | Key B |ACTS | RESL --------------------------------------------------------------------- 00 | 000000000000 | . . | . . | 000000000000 | . . | . . 01 | 000000000000 | . . | . . | 000000000000 | . . | . . 02 | 000000000000 | . . | . . | 000000000000 | . . | . . 03 | 000000000000 | . . | . . | 000000000000 | . . | . . 04 | 000000000000 | . . | . . | 000000000000 | . . | . . 05 | 000000000000 | . . | . . | 000000000000 | . . | . . 06 | 000000000000 | . . | . . | 000000000000 | . . | . . 07 | 000000000000 | . . | . . | 000000000000 | . . | . . 08 | 000000000000 | . . | . . | 000000000000 | . . | . . 09 | 000000000000 | . . | . . | 000000000000 | . . | . . 10 | 000000000000 | . . | . . | 000000000000 | . . | . . 11 | 000000000000 | . . | . . | 000000000000 | . . | . . 12 | 000000000000 | . . | . . | 000000000000 | . . | . . 13 | 000000000000 | . . | . . | 000000000000 | . . | . . 14 | 000000000000 | . . | . . | 000000000000 | . . | . . 15 | af91d7429a9d | . R | . R | ba9a3887066f | . R | . R </blockquote> Notice that the keys are shown for sector 15 as requested when starting. This process took around 10 minutes. Key A = af91d7429a9d Key B = ba9a3887066f. We can then supply these keys to <i>mfoc</i> to crack the entire set, see below. <h1>mfoc</h1> MFOC is an open source implementation of "offline nested" attack by Nethemba. This program allow to recover authentication keys from MIFARE Classic card. The procedure is the same as with <i>mfcuk</i>. Download the source code from the project website. The download link is here: <a href="https://code.google.com/p/mfoc/downloads/list">https://code.google.com/p/mfoc/downloads/list</a>. The latest version at the time of writing was MFOC 0.10.5. <blockquote> wget https://mfoc.googlecode.com/files/mfoc-0.10.5.tar.gz </blockquote> Extract the tar file. <blockquote> tar xvf mfoc-0.10.5.tar.gz </blockquote> then move into the directory <blockquote> cd mfoc-0.10.5/ </blockquote> You'll need to modify the source code very slightly for mfcuk as there is a bug. <blockquote> nano src/nfc-utils.c </blockquote> Find the following line inside the <i>print_nfc_target(const nfc_target nt, bool verbose)</i> function <blockquote> str_nfc_target(&s, nt, verbose); </blockquote> and change it to <blockquote> str_nfc_target(&s, &nt, verbose); </blockquote> From here, we need to compile the program. <blockquote> autoreconf -vis automake autoconf ./configure make </blockquote> Hopefully again, the final binary will be found in the <i>src/</i> folder, and can be run with the following command showing the help options. <blockquote> sudo src/mfoc -h </blockquote> You should see something like below. The time this takes will depend on how many known keys there are. The card below was brand new, and so all of the keys were default, which meant the process took just a few seconds. You can see from the data dump that the card is empty. <blockquote> george@netbook-linux ~/nfc/mfoc-0.10.5 $ sudo src/mfoc -O test.dmp ISO/IEC 14443A (106 kbps) target: ATQA (SENS_RES): 00 04 * UID size: single * bit frame anticollision supported UID (NFCID1): 3e 0c 5a fa SAK (SEL_RES): 08 * Not compliant with ISO/IEC 14443-4 * Not compliant with ISO/IEC 18092 Fingerprinting based on MIFARE type Identification Procedure: * MIFARE Classic 1K * MIFARE Plus (4 Byte UID or 4 Byte RID) 2K, Security level 1 * SmartMX with MIFARE 1K emulation Other possible matches based on ATQA & SAK values: <a href="Key:">ffffffffffff</a> -> <a href="xxxxxxxxxxxxxxxx]"> [Key: a0a1a2a3a4a5</a> -> <a href="xxxxxxxxxxxxxxxx]"> [Key: d3f7d3f7d3f7</a> -> <a href="xxxxxxxxxxxxxxxx]"> [Key: 000000000000</a> -> <a href="xxxxxxxxxxxxxxxx]"> [Key: b0b1b2b3b4b5</a> -> <a href="xxxxxxxxxxxxxxxx]"> [Key: 4d3a99c351dd</a> -> <a href="xxxxxxxxxxxxxxxx]"> [Key: 1a982c7e459a</a> -> <a href="xxxxxxxxxxxxxxxx]"> [Key: aabbccddeeff</a> -> <a href="xxxxxxxxxxxxxxxx]"> [Key: 714c5c886e97</a> -> <a href="xxxxxxxxxxxxxxxx]"> [Key: 587ee5f9350f</a> -> <a href="xxxxxxxxxxxxxxxx]"> [Key: a0478cc39091</a> -> <a href="xxxxxxxxxxxxxxxx]"> [Key: 533cb6c723f6</a> -> <a href="xxxxxxxxxxxxxxxx]"> [Key: 8fd0a4f256e9</a> -> [xxxxxxxxxxxxxxxx] Sector 00 - FOUND_KEY <a href="A]"> Sector 00 - FOUND_KEY [B</a> Sector 01 - FOUND_KEY <a href="A]"> Sector 01 - FOUND_KEY [B</a> Sector 02 - FOUND_KEY <a href="A]"> Sector 02 - FOUND_KEY [B</a> Sector 03 - FOUND_KEY <a href="A]"> Sector 03 - FOUND_KEY [B</a> Sector 04 - FOUND_KEY <a href="A]"> Sector 04 - FOUND_KEY [B</a> Sector 05 - FOUND_KEY <a href="A]"> Sector 05 - FOUND_KEY [B</a> Sector 06 - FOUND_KEY <a href="A]"> Sector 06 - FOUND_KEY [B</a> Sector 07 - FOUND_KEY <a href="A]"> Sector 07 - FOUND_KEY [B</a> Sector 08 - FOUND_KEY <a href="A]"> Sector 08 - FOUND_KEY [B</a> Sector 09 - FOUND_KEY <a href="A]"> Sector 09 - FOUND_KEY [B</a> Sector 10 - FOUND_KEY <a href="A]"> Sector 10 - FOUND_KEY [B</a> Sector 11 - FOUND_KEY <a href="A]"> Sector 11 - FOUND_KEY [B</a> Sector 12 - FOUND_KEY <a href="A]"> Sector 12 - FOUND_KEY [B</a> Sector 13 - FOUND_KEY <a href="A]"> Sector 13 - FOUND_KEY [B</a> Sector 14 - FOUND_KEY <a href="A]"> Sector 14 - FOUND_KEY [B</a> Sector 15 - FOUND_KEY <a href="A]"> Sector 15 - FOUND_KEY [B</a> We have all sectors encrypted with the default keys.. Auth with all sectors succeeded, dumping keys to a file! Block 63, type A, key ffffffffffff :00 00 00 00 00 00 ff 07 80 bc ff ff ff ff ff ff Block 62, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 61, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 60, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 59, type A, key ffffffffffff :00 00 00 00 00 00 ff 07 80 69 ff ff ff ff ff ff Block 58, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 57, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 56, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 55, type A, key ffffffffffff :00 00 00 00 00 00 ff 07 80 69 ff ff ff ff ff ff Block 54, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 53, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 52, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 51, type A, key ffffffffffff :00 00 00 00 00 00 ff 07 80 69 ff ff ff ff ff ff Block 50, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 49, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 48, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 47, type A, key ffffffffffff :00 00 00 00 00 00 ff 07 80 69 ff ff ff ff ff ff Block 46, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 45, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 44, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 43, type A, key ffffffffffff :00 00 00 00 00 00 ff 07 80 69 ff ff ff ff ff ff Block 42, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 41, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 40, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 39, type A, key ffffffffffff :00 00 00 00 00 00 ff 07 80 69 ff ff ff ff ff ff Block 38, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 37, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 36, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 35, type A, key ffffffffffff :00 00 00 00 00 00 ff 07 80 69 ff ff ff ff ff ff Block 34, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 33, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 32, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 31, type A, key ffffffffffff :00 00 00 00 00 00 ff 07 80 69 ff ff ff ff ff ff Block 30, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 29, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 28, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 27, type A, key ffffffffffff :00 00 00 00 00 00 ff 07 80 69 ff ff ff ff ff ff Block 26, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 25, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 24, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 23, type A, key ffffffffffff :00 00 00 00 00 00 ff 07 80 69 ff ff ff ff ff ff Block 22, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 21, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 20, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 19, type A, key ffffffffffff :00 00 00 00 00 00 ff 07 80 69 ff ff ff ff ff ff Block 18, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 17, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 16, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 15, type A, key ffffffffffff :00 00 00 00 00 00 ff 07 80 69 ff ff ff ff ff ff Block 14, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 13, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 12, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 11, type A, key ffffffffffff :00 00 00 00 00 00 ff 07 80 69 ff ff ff ff ff ff Block 10, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 09, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 08, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 07, type A, key ffffffffffff :00 00 00 00 00 00 ff 07 80 69 ff ff ff ff ff ff Block 06, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 05, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 04, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 03, type A, key ffffffffffff :00 00 00 00 00 00 ff 07 80 69 ff ff ff ff ff ff Block 02, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 01, type A, key ffffffffffff :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 00, type A, key ffffffffffff :3e 0c 5a fa 92 88 04 00 46 8f 35 13 59 50 23 10 </blockquote> <h1>Cloning A Card</h1> This card assumes that you have a destination card of the same type as the source. This method is based on that described <a href="https://gist.github.com/alphazo/3303282">here</a>. First we must dump the keys from the destination card, so we can write to it. I assume that the card is new, and so the default keys will be easily found. Put your destination card on the reader, and run... <blockquote> sudo src/mfoc -P 500 -O blank-chinese.dmp </blockquote> You'll see something like the above. You then need to dump the source card keys. Here it's probably safe to assume that at least one of the sectors has a default key, and so you can dive straight in and use the offline nested hack. If this is not true, you can supply additional keys found with <i>mfcuk</i> using the <i>-k</i> option - see the man page. Using the additional keys found above (in the mfcuk example). You'll need to repeat that step with your source card to get the keys. The results will look similar with a different data dump to that of above; it's obviously not included here for security reasons. <blockquote> sudo src/mfoc -k af91d7429a9d -k ba9a3887066f -k 160a91d29a9d -k b7bf0c13066f -P 500 -O cardtocopy.dmp </blockquote> Once complete, you can copy the card using the <i>nfc-mfclassic</i> program. You can also replace the <i>b</i> with an <i>a</i> to use the A keys instead. <blockquote> sudo nfc-mfclassic w b cardtocopy.dmp blank-chinese.dmp </blockquote> You'll see a result something like the following: <blockquote> george@netbook-linux ~/nfc/mfoc-0.10.5 $ sudo nfc-mfclassic w a cardtocopy.dmp blank-chinese.dmp NFC reader: ACS / ACR122U PICC Interface opened Found MIFARE Classic card: ISO/IEC 14443A (106 kbps) target: ATQA (SENS_RES): 00 04 UID (NFCID1): 3e 0c 5a fa SAK (SEL_RES): 08 Guessing size: seems to be a 1024-byte card Writing 64 blocks |...............................................................| Done, 63 of 64 blocks written. </blockquote> If you have the correct card type, you can replace the <i>w</i> with a <i>W</i> to flash the UID too, that's the missing block. I always receive a failure when trying this. So that's about it. The basics of cloning a MIFARE Classic NFC RFID card. I have written a small script, <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/NFC_Experimentation.sh.gz">NFC_Experimentation.sh.gz</a> that will download and compile the tools on Ubuntu. It has no error checking, so use at your own risk. <i>Again, here I would like to stressed that none of the above cards were abused. This exercise had no malicious intent and was carried out as purely a technical exercise. All duplicate cards were blanked at the end of this experiment.</i> Nixie http://new.george-smart.co.uk/nixie 1751 draft nixie 0 2011-02-25 23:14:30 closed page closed The nixie clock below is based on IN-18 Nixie Tubes. The clock is set to GMT with Daylight Savings (or BST). The image is generated when the page is requested, using my server's local time. This page refreshes every 10 seconds. <html> <meta http-equiv="refresh" content="10"> <center> <img src="/cgi-bin/nixie/clock.cgi" alt="Nixie Clock"><br> <a href="http://www.george-smart.co.uk/cgi-bin/nixie/clock.cgi">Image URL</a> </center> </html> <b>FIXME_Category :Programming</b> <b>FIXME_Category :Clocks</b> Nokia 3310 LCD http://new.george-smart.co.uk/nokia_3310_lcd page closed closed 2012-01-12 15:11:02 0 draft nokia_3310_lcd 3051 A Nokia 3310 LCD Screen is a graphical monochrome 84x84 pixel LCD screen, controlled by the <a href="http://www.nxp.com/documents/data_sheet/PCD8544_1.pdf">Philips (NXP) PCD8544</a> IC. You can get them for very cheap. I picked a few up from eBay for about £3.00 each. <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Nokia3310LCD_Front.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Nokia3310LCD_Front.jpg" width="320" alt="Nokia 3310 LCD" class="aligncenter"></a></tr> </table> Click an image to enlarge </center> The displays are very easy to use. They are interfaced with the SPI bus at 3.3 volts. This means with a simple potential divider, you can control them from a PC parallel port. On this page, I will use the <a href="http://new.george-smart.co.uk/velleman_k8055">Velleman K8055</a>. It is probably simpler to use a parallel port but my new box doesn't have one - such is progress! <center><table cellpadding="2" border="1" > <tr><td><b>Pin</b></td><td><b>Signal</b></td><td><b>Description</b></td><td><b>Direction</b></td></tr><tr><td>1</td><td>VDD</td><td>Logic Power Supply: VDD to GND - 2.7 to 3.3 V</td><td>Power</td></tr><tr><td>2</td><td>SCLK</td><td>Serial Clock: Input for the clock signal - 0.0 to 4.0 Mbits/s</td><td>Input</td></tr><tr><td>3</td><td>SDIN</td><td>Serial Data In: Input for the data line</td><td>Input</td></tr><tr><td>4</td><td>D/C</td><td>Mode Select: Selects either Data or Command/Address</td><td>Input</td></tr><tr><td>5</td><td>/SCE</td><td>Serial Chip Enable: The enable pin allows data to be clocked in - The signal is active LOW.</td><td>Input</td></tr><tr><td>6</td><td>GND</td><td>Ground</td><td>Power</td></tr><tr><td>7</td><td>VOUT</td><td>LCD Voltage: Add external 1-10 uF electrolytic capacitor from VOUT to GND</td><td>Power</td></tr><tr><td>8</td><td>/RES</td><td>Reset: Reset the device. Must be applied to initialise display. The signal is active LOW.</td><td>Input</tr> </table> </center> <h1>Connections</h1> To interface the Nokia 3310 LCD to the <a href="http://new.george-smart.co.uk/velleman_k8055">Velleman K8055</a> requires some pull up resistors to compliment the open collector outputs. The diagram below shows how I set up the interfacing. The setup is pretty standard. I have used 100K&Omega; resistors so that the pull ups draw less current. I am running the entire circuit from the <a href="http://new.george-smart.co.uk/k8055">K8055</a>'s DACs (with 1.5K&Omega; source resistance). We need low current! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Nokia3310LCD_Connections.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Nokia3310LCD_Connections.png" width="320" alt="Nokia 3310 LCD Wiring" class="aligncenter"></a> <h1>Talking to the Display</h1> As I got here, I had some problems with my computer which I have not yet resolved. This will be while now, as I will be busy. <h1>Faulty Display</h1> The only Nokia 3310 LCD I had to play about with is faulty. I have tried extensively to get the display to work based on my own code to no avail. In a diagnostics attempt, I was unable to make the display function with a device known to drive this type of LCD. I therefore assume that the screen is faulty. When I get the chance to purchase another screen, I will do so. <h1>Sources</h1> <ul> <li> Nokia 3310 LCD, 84x84 Pixels</li> :<a href="http://www.amontec.com/lcd_nokia_3310.shtml">http://www.amontec.com/lcd_nokia_3310.shtml</a></ul> <ul> <li> Philips (NXP) PCD8544 Datasheet</li> :<a href="http://www.nxp.com/documents/data_sheet/PCD8544_1.pdf">http://www.nxp.com/documents/data_sheet/PCD8544_1.pdf</a></ul> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Phones</b> OpenTTD http://new.george-smart.co.uk/openttd closed page closed 0 2012-09-24 16:22:27 openttd draft 3613 = About OpenTTD = <a href="http://www.openttd.org/en/">OpenTTD</a> is an open source simulation game based upon the popular Microprose game "Transport Tycoon Deluxe", written by Chris Sawyer. It attempts to mimic the original game as closely as possible while extending it with new features. OpenTTD is licensed under the GNU General Public License version 2.0. <h1>Installation</h1> This page aims to explain how to install OpenTTD under Ubuntu. I have used Ubuntu 10.10 Maverick. <h2>Getting the Files</h2> As you may or may not be aware, you need two key things to play OpenTTD. The game engine, OpenTTD, can be downloaded from the main website, at <a href="http://www.openttd.org/en/">http://www.openttd.org/en/</a>. You also need the graphics sets. These can be found by searching Google. A suggested search would be "ttd-win.zip". You can also get the required files from CD and must own the game (and therefore the rights to use of the original graphics sets). As I say, these can be found by a quick Google - to save hunting for my install CD, I downloaded the graphics sets from here, <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/ttd-win.zip">ttd-win.zip</a>. <h2>Installing the Engine</h2> If you downloaded the appropriate file (.deb) from the OpenTTD website, you should simply be able to double click and install. The version I installed was the latest stable at the time, Version 1.10 for 64bit machines. Done. <h2>Installing the Graphics Set</h2> This part is a little more tricky. We need to extract the downloaded graphics set ZIP archive, and then move some of the files to the required location to run OpenTTD. Here's how. I use the command line, feel free to replicate the results graphically - there are no fancy tricks here... <blockquote> prompt$ unzip ttd-win.zip prompt$ cd "TTD for Windows"/ prompt$ sudo cp *.grf *.ss* *.dat sample.cat /usr/share/games/openttd/data/ [sudo] password for <username>: prompt$ sudo cp gm/* /usr/share/games/openttd/gm/ prompt$ sudo chmod 755 /usr/share/games/openttd/data/* prompt$ sudo chmod 755 /usr/share/games/openttd/gm/* prompt$ cd .. prompt$ rm -R "TTD for Windows"/ </blockquote> And that's it. Done. <h1>Running OpenTTD</h1> When installing via Packages (.deb files), the installer usually creates a link to the game inside the menus. On my machine, this was found by following the Applications > Games > OpenTTD link. Alternatively you can simply run <i>openttd</i> from the command line. <h1>It works!</h1> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/09/OpenTTD_MainMenu.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/09/OpenTTD_MainMenu.png" width="600" alt="OpenTTD Main Menu" class="aligncenter"></a> <b>FIXME_Category :Computers</b> <b>FIXME_Category :Linux</b> <b>FIXME_Category :Howto</b> <b>FIXME_Category :Games</b> Packet http://new.george-smart.co.uk/packet packet draft 2038 closed page closed 0 2011-06-11 21:59:42 <center><b>GB7EM (ELMPRK) IS NOW OFF AIR</b></center> That's right. After the last 7 years of continual running, my packet note, GB7EM (ELMPRK), is no longer on air. I monitored the node over the last month and concluded that it had no use. It is for this reason that I have reused the radios required for the packet node to improve my <a href="http://new.george-smart.co.uk/aprs">APRS</a> station. If you are interested in what this page used to say, please see the history tab at the top. <b>FIXME_Category :Computers</b> <b>FIXME_Category :Radio</b> Parents House http://new.george-smart.co.uk/parents_house 0 2012-04-21 01:33:46 closed page closed 3384 draft parents_house My parents house is situated in Zone 6 of London, towards the North East, in a small suburb called Elm Park. Elm Park has its own station on the London Underground. The house is a 3-bedroom semi-detached house, with a large garden and workshop (where Electronics happens). It is also the home to our <a href="http://new.george-smart.co.uk/pets">Pets</a> <a href="http://new.george-smart.co.uk/pets_bob">Bob</a>, <a href="http://new.george-smart.co.uk/pets_ozzie">Ozzie</a> and the <a href="http://new.george-smart.co.uk/chickens">Chickens</a>. <h1>My Room (Center of Nerd)</h1> For my 4th year at <a href="http://new.george-smart.co.uk/university">University</a>, I am staying at my parents house. Previous years, I have rented a flat in Central London, to make it easier to get to <a href="http://new.george-smart.co.uk/university">University</a>. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Bedroom4Screens.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Bedroom4Screens.jpg" width="600" alt="My Computer Desk" class="aligncenter"></a> <b>FIXME_Category :Family</b> <b>FIXME_Category :About Me</b> PC Rotator Interface http://new.george-smart.co.uk/pc_rotator_interface 0 2016-12-29 20:42:03 closed closed page 5538 pc_rotator_interface draft = Yaesu Control Box Wiring = The Yaesu G-5400B, G-5600B and G-5500 controllers have an 8-pin DIN connector on the back. The schematic for the rotator shows the connector, but doesn't make it clear what each pin does. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/DIN8.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/12/DIN8.png" width="250" alt="8-pin DIN socket" class="aligncenter"></a> The figure above is shown looking at the back of the rotator controller. The pinout is shown below. The wire colours correspond to my build: <center><table class="wikitable" > <tr><td>style="font-weight: bold;" | Pin<td>style="font-weight: bold;" | Signal<td>style="font-weight: bold;" | Colour</td></tr><tr><td>1<td>Elevation-FB<td>Orange</td></tr><tr><td>2<td>Right<td>White</td></tr><tr><td>3<td>Up<td>Yellow</td></tr><tr><td>4<td>Left<td>Brown</td></tr><tr><td>5<td>Down<td>Blue</td></tr><tr><td>6<td>Azimuth-FB<td>Green</td></tr><tr><td>7<td>+VE (~17V <i>unregulated</i>)<td>Red</td></tr><tr><td>8<td>Ground<td>Black</tr> </table> </center> Check the cable before you plug anything in or out, since you don't want another job repairing the Yaesu box too! Penny Stove http://new.george-smart.co.uk/penny_stove 3393 penny_stove draft 2012-04-21 01:39:45 0 closed closed page A penny stove is often called a Pepsi can stove or a hobo hob. It is a very simple liquid fuel burner that can be built with very few tools at all. This page details how to build the Penny Stove. It becomes apparent why it is called a penny stove later. <h1>What You Need</h1> There are no hard and fast tools required. The images on this page show what I've used to perform each task, but it really doesn't matter too much. Nothing about this is in any way critical, it's all a bit "that will do" - Just how I like my creations! <table cellpadding="2" align="center" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PennyStove_Tools.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PennyStove_Tools.jpg" width="300" alt="Tools" class="aligncenter"></a></tr> </table> To make the stove, then you will require the following tools (or similar): <ul> <li> 2 Cans - <i>Soft drink cans or beer cans are fine. They need to be the same diameter.</i></li> <li> Sharpie - <i>to mark on the cans with</i></li> <li> Scissors - <i>to cut the metal of the can</i></li> <li> Swiss Army Knife - <i>to make holes with</i></li> <li> 10 pence coin - <i>to cover the filling hole</i></li> <li> Book - <i>or anything about 3cm thick</i></li> </ul> To use the stove, you will need: <ul> <li> Fuel - I used Mentholated Spirits, but most ethanol fuels will work. The internet is your friend here.</li> <li> Matches - I prefer matches, as a result of the tricky lighting technique needed (see below). </li> <li> The Stove - Obviously.</li> </ul> <h1>What You Do</h1> This process is very simple, and in 4 stages: <h2>Marking the Can</h2> Using your marker and book, mark a line around both cans about 3cm from the top. The height is not critical, but it does effect how well the burner works. The shorter this distance, the more intense the flame burns, but, the quicker the fuel runs out, and the less fuel you can hold. I think 3cm is ideal. You need to mark two cans, at roughly the same height. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PennyStove_CanMarking.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PennyStove_CanMarking.jpg" width="400" alt="Marking the Can Out" class="aligncenter"></a> <h2>Cutting the Can</h2> Using your craft knife, stab into the side of the can and make a whole. Do this above and away from the line. Cut the top off the can, and then nibble down the metal until you have a uniform line all around (left image). Do this for both of the cans (right image). <table cellpadding="2" align="center" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PennyStove_Cutting.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PennyStove_Cutting.jpg" width="300" alt="Using Scissors to cut cans down" class="aligncenter"></a></tr> </table> <h2>Making the Burner</h2> Looking at the cut cans, you should choose the slightly shorter one to become the burner. If you are good at cutting cans, and they are both the same size, choose one at random. You need to make a few holes in the can. The first task is to make a filling hole. This is widened later, but just for now, make a small hole in the center of the burner. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PennyStove_MakingFillingHole.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PennyStove_MakingFillingHole.jpg" width="400" alt="Filling Hole" class="aligncenter"></a> Next, make an array of holes for the flames. I started off by making one hole (left image), marking out another 7 holes (totaling 8), and then making them (right image). Feel free to experiment with the number of holes, and their diameters. I found lots of smaller diameter holes works well. The smaller the hole, the higher pressure and thus bigger flames - However, you run the risk of popping the penny from the top, and having the pressure escape from the filling hole (in the form of a fire-ball). <table cellpadding="2" align="center" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PennyStove_OneHole.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PennyStove_OneHole.jpg" width="300" alt="Making first burner hole" class="aligncenter"></a></tr> </table> The filling hole is then widened. I did this using a scissor blade, as shown below. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PennyStove_WideningFillingHole.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PennyStove_WideningFillingHole.jpg" width="400" alt="Widening the Filling Hole" class="aligncenter"></a> <h2>Joining the halves</h2> Joining the halves is the trickiest part of making the stove, by far. You may have a better method for doing this, and if so, you should use it! This is the best I can come up with. Firstly, taking the side you turned into the burner, run the back of the scissors around the inside to remove any burrs and to open the top the can up a little. Don't stretch the can too much, as we need a tight fit - just enough to help. See the left image. It also helps if you pleat the bottom half of the stove, as shown in the right image. This helps it to fit inside the burner. Again, not too much, as we need a tight fit. Pleating the metal takes up some of the metal, and the average diameter drops very slightly. I used the scissors to create the pleats, trapping the metal can in between the blades and twisting slightly. Even with the pleats, it will still be tricky. Remember, you want to slide the top over the bottom. The burner should form the outside. <table cellpadding="2" align="center" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PennyStove_DeBurring.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PennyStove_DeBurring.jpg" width="300" alt="De-burring and widening burner" class="aligncenter"></a></tr> </table> Once you've done it, push the two cans together, ensuring you don't rip the metal. <table cellpadding="2" align="center" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PennyStove_Joined.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PennyStove_Joined.jpg" width="300" alt="The two cans joined" class="aligncenter"></a></tr> </table> <h1>How You Use It</h1> <b>Please read the Safety and Disclaimer sections below.</b> Lighting the stove takes a little skill. First put some fuel into the hob. I would go for about 1cm deep. Maybe less. The stove works by boiling the liquid fuel, and the gas given off is used as a gas in the burner, where it... burns. To light the stove, you need to get the fuel boiling first. Put a little fuel onto the ground too. Sit your fueled stove into the middle of the puddle of fuel (top left image). Set the fuel alight. The fuel on the ground will burn, boiling the fuel inside the stove. When the gas comes out of the burner it will be ignited by the ground fuel, lighting the stove. Once the stove is lit, the burning will keep the fuel burning. Once the ground fuel has burned out, it may take a moment or so for the burner to self regulate, and the flame to become stable (top right). As the stove starts to run out of fuel, the flame intensity starts to die down (bottom left). The bottom right shows the stoves cooling down after the photoshoot! <table cellpadding="2" align="center" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PennyStove_LightingPool.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PennyStove_LightingPool.jpg" width="300" alt="Ground Fuel for Lighting Stove" class="aligncenter"></a></tr> </table> Note, the above images are of different stoves. There is no reason for this, other than they were the better pictures. The video's section below shows both this stove and others working. <h1>Videos</h1> <b>Plugin removed due to security reasons.</b> Lighting the first stove. Please excuse the CD-ROM chassis - they are for wind protection. <center><wikiflv width="640" height="480" logo="true">PennyHob_Vid1.flv|PennyHob_Vid1s.jpg</wikiflv></center> Lighting another stove <center><wikiflv width="640" height="480" logo="true">PennyHob_Vid2.flv|PennyHob_Vid2s.jpg</wikiflv></center> Stove in the wind <center><wikiflv width="640" height="480" logo="true">PennyHob_Vid3.flv|PennyHob_Vid3s.jpg</wikiflv></center> <h1>Safety</h1> Playing with fire is dangerous (and kind of magical) - That's why it's fun. However, it also hurts... A lot! <b>Always</b> play with fire outside, <b>never</b> near anything valuable, and <b>ensure</b> you have a bucket of water or some other "backup plan" for controlling things. As you would expect, the cans get very hot when running, and continue to be after the fuel has burned out. The pennies have a high thermal mass, and stay very hot for a while. Remember that. They <b>do</b> burn. Please don't risk anything. It's not worth it. Be safe! Don't forget that animals need you to look out for their safety. They're not used to seeing Pepsi cans with fire coming from them. And most animals will burn well, though they don't like it. <h1>Disclaimer</h1> I, George Smart, take no responsibility for any consequence of anything you do, regardless if you find it on my site or not. You're your own person! If you don't think it's a good idea, then don't do it. That applies to all of your life, not just this! However, as I say, if this "experiment" results in you burning your garden up, it's <i>your</i> fault - not mine! See also my more general <a href="http://new.george-smart.co.uk/disclaimer">disclaimer</a>. <h1>Resources</h1> <ul> <li> <a href="http://en.wikipedia.org/wiki/Soda_can_stove">Wikipedia; Soda Can Stove</a></li> <li> Some knowledge of physics</li> <li> An engineering degree</li> <li> Bravery</li> </ul> <b>FIXME_Category :Experiments</b> Personal Statement http://new.george-smart.co.uk/personal_statement draft personal_statement 1480 closed page closed 2011-01-14 14:04:55 0 This page was moved here: <a href="http://new.george-smart.co.uk/undergraduate_personal_statement">Undergraduate Personal Statement</a>. <a href="/contact-me">Please report this message to the webmaster</a>. Pets http://new.george-smart.co.uk/pets 2013-04-29 16:07:04 0 closed page closed 4423 draft pets Aside from the <a href="http://new.george-smart.co.uk/chickens">Chickens</a>, we have a Dog called Bob and a Cat called Ozzie. <h2>Bob</h2> Bob is a chocolate Labrador retriever. He goes by many aliases: Bob, Bob-Dog, Bobstickle, Dogstickle, Dogbert and Bobski to name but a few. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/Bob.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/Bob.jpg" width="400" alt="Bob the Dog" class="aligncenter"></a> <h2>Ozzie</h2> Ozzie is a black cat. He, unlike Bob, doesn't have any aliases. <center><table > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/Ozzie1.JPG"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/Ozzie1.JPG" width="300" alt="Ozzie" class="aligncenter"></a></tr> </table> </center> <h2>Dib-Dab</h2> Dib-dab is the newest addition to our family. He's a grey and white kitten born Feb 2013. <center><table > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/Dibdab1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/Dibdab1.jpg" width="230" alt="Dib-Dab" class="aligncenter"></a></tr> </table> <b>FIXME_Category :Family</b> <b>FIXME_Category :About Me</b> PhD http://new.george-smart.co.uk/phd draft phd 4125 closed page closed 2013-03-06 14:57:06 0 This page has not been written. You can find out about my research on my <a href="http://www.ee.ucl.ac.uk/~zceed42">academic pages</a>. Also try <a href="http://new.george-smart.co.uk/about_me">About Me</a> or <a href="http://new.george-smart.co.uk/university">University</a> for more about my PhD. <b>FIXME_Category :ToDo</b> PhD End http://new.george-smart.co.uk/phd_end closed page closed 0 2013-03-02 04:38:40 phd_end draft 4105 Approximate time until the end of my <a href="http://new.george-smart.co.uk/phd">PhD</a> on 14/12/2015. The old version of this page is <a href="http://www.george-smart.co.uk/cgi-bin/retirement.cgi?oldpage=true&phd=1">here</a>. <table cellpadding="10" border="1" cellspacing="0" > <tr><td>align="center"|<b>Days</b></td><td><html><img src=http://www.george-smart.co.uk/cgi-bin/retirement.cgi?image=days&phd=1 alt="retirement"></html></td></tr><tr><td>align="center"|<b>Weeks</b></td><td><html><img src=http://www.george-smart.co.uk/cgi-bin/retirement.cgi?image=weeks&phd=1 alt="retirement"></html></tr> </table> <b>FIXME_Category :Tools</b> Portable Car Station http://new.george-smart.co.uk/portable_car_station 2853 portable_car_station draft 2011-12-11 21:05:04 0 closed page closed This page was moved here: <a href="http://new.george-smart.co.uk/mobile_car_station">Mobile Car Station</a>. <a href="/contact-me">Please report this message to the webmaster</a>. Portable Radio http://new.george-smart.co.uk/portable_radio 3764 portable_radio draft 0 2013-01-03 01:27:01 closed closed page You may also be interested in my <a href="http://new.george-smart.co.uk/mobile_car_station">Mobile Car Station</a>. Following the purchase of my <a href="http://new.george-smart.co.uk/yaesu_ft_857d">Yaesu FT-857D</a>, I decided to go portable as my home QTH is a little to noisy. I bought myself a <a href="http://www.maplin.co.uk/search?criteria=N70AP">flight case (part N70AP) in Maplin Electronics</a> and set about making it a home for my portable radio equipment! The first section, <i>Inside The Case</i> is broken down into subsections about each piece of equipment, why I find it useful, etc. Some of the subsections have another main page elsewhere, which is also indicated! <h1>Inside The Case</h1> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_Case.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_Case.jpg" width="600" alt="Flight Case" class="aligncenter"></a> <h2>Yaesu FT-857D</h2> The radio I use for my portable work is the <a href="http://new.george-smart.co.uk/yaesu_ft_857d">Yaesu FT-857D</a>. It is a 100/50/20 watt transceiver on HF/VHF/UHF. It is small and light-weight, yet feature-full. The full specification of the radio is a total input current of 22 amps at 13.8 volts. There is a need for a suitable power supply, which is discussed later. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_YaesuFT857D.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_YaesuFT857D.jpg" width="600" alt="Radio" class="aligncenter"></a> <h2>MFJ-16010 Portable ATU</h2> The MFJ-16010 is an excellent antenna tuner unit. It is a simple L-match (one inductor, one capacitor) and rated at 200 watts by MFJ (though I wouldn't fancy my luck with much more than 100 watts, having seen the inside). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_MFJ16010.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_MFJ16010.jpg" width="400" alt="MFJ-16010 Portable ATU" class="aligncenter"></a> I modified the unit to have a large toggle switch on the backplate to reverse the input and output. With an L-match ATU, the user swaps the input and output depending if the load has a higher or lower impedance than the source. This switch just saves swapping the coaxes over. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_MFJ16010_Mod.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_MFJ16010_Mod.jpg" width="600" alt="Inside the MFJ-16010 Portable ATU" class="aligncenter"></a> <h2>Homebrew 4:1 Balun</h2> My homebrew is capable of handling 150 watts and was based on <a href="http://www.rason.org/Projects/balun/balun.htm">a design by N1HFX</a>. There's nothing more to add about it's construction, Michael's design works flawlessly! I use it with the 10 metre vertical (to smooth out some of the peaks and troughs in the response) and to match into the Delta-Loop (mentioned below). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_4-to-1_Balun.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_4-to-1_Balun.jpg" width="600" alt="My Homebrew 4:1 Balun" class="aligncenter"></a> <h2>SMC T3-170L SWR Bridge</h2> This SWR Bridge is useful as it gives a higher resolution than the <a href="http://new.george-smart.co.uk/yaesu_ft_857d">Yaesu FT-857D</a>'s internal SWR bridge. I know very little about it other than I paid £1 for it at a ham-radio rally a few years back and that it seems to work well. It is apparently made by South Midlands Communications. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_SMC_T3-170L.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_SMC_T3-170L.jpg" width="600" alt="SMC T3-170L SWR Bridge" class="aligncenter"></a> <h2>Patch Leads & 10-metres of RG58</h2> This one is pretty self explanatory. I use this coax to connect from the ATU to the antenna. I use it on all frequency ranges. I have looked at the losses for this exact coax, and the <a href="http://new.george-smart.co.uk/144mhz_yagi_co_axial_cable">results are presented here</a>. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_RG58_Coax.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_RG58_Coax.jpg" width="600" alt="Coax" class="aligncenter"></a> It is also handy to have a few patch leads (short cables) to connect from the radio to and from the ATU and SWR bridge. I have 2 PL-259 patch leads, and 2 BNC patch leads. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_Patch_Cables.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_Patch_Cables.jpg" width="600" alt="BNC Patch Cables" class="aligncenter"></a> <h2>Adapters</h2> It is important to have a selection of any adaptors for any connectors you're likely to encounter. I've (foolishly) settled for the PL-259/SO-239 as my standard connector, as it is in common use with Radio Amateurs (for some unknown reason - they're terrible connectors). I have some adapters two/from N-type connectors (the <a href="http://new.george-smart.co.uk/yaesu_ft_857d">Yaesu FT-857D</a> VHF/UHF output is an N-type connector, thankfully!) and some two/from BNC. And everything in between. These are shown below. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_Adapters.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_Adapters.jpg" width="600" alt="RF Adapters" class="aligncenter"></a> <h2>String, Belts, Weights & Pegs</h2> I find it handy to have a few spools of string. I mainly use these to secure the Delta-Loop (below), but they're also useful for putting up wire antennas such as dipoles. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_String.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_String.jpg" width="600" alt="String" class="aligncenter"></a> I use the locking belt to secure my vertical to posts and my car-wheel stand (see below). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_Belt.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_Belt.jpg" width="300" alt="Locking Belt" class="aligncenter"></a> A lead weight is useful for getting string into trees for erecting temporary antennas. This can either be thrown (if you can throw), swung up, or catapulted. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_Weight.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_Weight.jpg" width="100" alt="Lead Fishing Weight" class="aligncenter"></a> Finally, a few tent pegs are good for securing string to the ground. Again, I use these with the Delta-Loop set up. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_TentPeg.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_TentPeg.jpg" width="600" alt="Plastic Tent Peg" class="aligncenter"></a> <h2>Wire</h2> I have wire in precut lengths, as I usually use the same lay out every time. This sees me needing some wire for the vertical element, and 4 radials. I also have a reel of wire that I take in case I fancy anything different. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_Wire.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_Wire.jpg" width="600" alt="Wire" class="aligncenter"></a> <h1>Power Supply</h1> For a typical excursion out, I would take batteries; usually my home-made bank of 4 sealed lead-acid batteries, 12V at 48Ah, which provides enough power for a day out running the <a href="http://new.george-smart.co.uk/yaesu_ft_857d">Yaesu FT-857D</a>. I also have an 12V 80Ah leisure battery (similar to a car battery, only a bit more rugged, heavy and expensive). A couple of large crocodile clips are used to connect onto the batteries, and they end with <i>banana connectors</i> which I have equipped my radio's power lead with. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_CrocClips.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_CrocClips.jpg" width="600" alt="Crocodile Clips" class="aligncenter"></a> I also have an <a href="http://www.amazon.co.uk/gp/product/B0040YGOSE">Alinco DM-330MW</a> 30A switching power supply for operation with mains power. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_AlincoDM-330MW.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_AlincoDM-330MW.jpg" width="600" alt="Alinco DM-330MW" class="aligncenter"></a> <h1>The Portable Station</h1> Below follows a few images of my portable station, in various configurations and various evolutionary stages. <h2>In The Tent</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_Tent.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_Tent.jpg" width="600" alt="Inside the 6-man tent" class="aligncenter"></a> The above image is from inside my 6-man tent, set up in Saint Agnes, Cornwall, UK. <a href="http://www.christopher-smart.co.uk">Dad</a> and I went camping for a week and took radio gear with us. Here we had no mains power so we run from batteries which we charged from the car when we went out each day. I used my car-wheel base to attach the antenna to. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_WheelBase.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_WheelBase.jpg" width="600" alt="Car Wheel Base" class="aligncenter"></a> <h2>In The Caravan</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_CaravanAwning.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_CaravanAwning.jpg" width="600" alt="Inside the caravan awning" class="aligncenter"></a> The caravan set up was in the awning and this time features the Alinco power supply as we had mains. The jockey wheel holder of the caravan was used to hold the base of the vertical. <h2>RSGB NFD 2011</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_BunkerNFD1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_BunkerNFD1.jpg" width="350" alt=" RSGB NFD 2011" class="aligncenter"></a> Here we operated from atop the Keveldon Hatch Secret Nuclear Bunker. Above the bunker is a mobile phone tower which our actual bunker station (GB0SNB) as antennas mounted. However, the sight is high and we decided to use our own antennas. We had a HF vertical and a <a href="http://www.webshed.org">Dave</a>'s odd (unknown configuration) 3-element VHF beam up at about 6 meters. The table and chairs (see image below) lives on the site. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_BunkerNFD2.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_BunkerNFD2.jpg" width="600" alt=" RSGB NFD 2011" class="aligncenter"></a> <h1>10m Vertical</h1> The diagram to the right depicts a schematic set up of the 10 metre vertical HF antenna. At the core is a 10 metre roach pole (long fibreglass fishing pole). This is tied (using the belts mentioned above) to the car wheel base (see the tent images). A piece of wire is then tired to the top of the antenna, and the roach pole extended skyward. This wire is then attached to one side of the 4:1 (9:1 preferable) balun. A ground spike is driven into the ground, and various radials extended from it. This is then attached to the other side of the balun. Although this is strictly now how a balun is intended to be used (as both the output and input are unbalanced), it yields satisfactory results (and I can't carry a 4:1 balun, 9:1 balun, 4:1 unun and a 9:1 unun, else I'd never lift the box up!). The balun isn't necessary but it does help to smooth out some of the spikes in the tuning (thanks to <a href="http://webshed.org">Dave</a> for this tip). Ideally, an Unun would be better. This then feeds the portable ATU. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_Vertical.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_Vertical.png" width="250" alt="Vertical HF antenna" class="aligncenter"></a> <h1>Delta Loop</h1> The Delta Loop was the reason I made the Balun mentioned above. The Delta-Loop design was based on <a href="http://w5sdc.net/delta_loop_for_hf.htm">W5SDC's Delta Loop Page</a> which has lots of useful information. The loop I made was for 17 metres, which W5SDC claims should have a total length of 55.469 feet (16.9069512 metres). I made my loop 17 metres long, resulting in each side being approximately 5.6 metres long. I tied small loops at each corner of the triangle to make it easier to find and put up quickly next time. The diagram on the left shows the set up I usually use when using the Delta-Loop. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_DeltaLoop.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_DeltaLoop.png" width="400" alt="Delta Loop antenna" class="aligncenter"></a> The feed point (shown with a red dot on the below image) alters how the Delta Loop performs. I went for vertical polarisation with a low angle of radiation, style D. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_DeltaLoopFeeds.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/PortableOperation_DeltaLoopFeeds.png" width="600" alt="Delta Loop Feeds" class="aligncenter"></a> <ul> <li> A - Horizontal Polarisation - Moderately high angle of radiation</li> <li> B - Horizontal Polarisation - High angle of radiation</li> <li> C - Horizontal Polarisation - Moderately high angle of radiation (&Omega;(feed) = 100&Omega;)</li> <li> D - Vertical Polarisation - Low angle of radiation (the one I use)</li> </ul> <h1>2 Metre Beam</h1> Main article <a href="http://new.george-smart.co.uk/144mhz_yagi">144MHz Yagi</a>. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/2mYagi EndUp.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/2mYagi EndUp.jpg" width="400" alt="144MHz Yagi" class="aligncenter"></a> The <a href="http://new.george-smart.co.uk/144mhz_yagi">2-metre</a> beam gets used for VHF UKAC contest. It is usually attached low down on the roach pole, at about 4 metres above the car roof. This gives a reasonable clearance from the car, but means that the roach pole has some chance of holding the beam's weight. =70 Centimetre Beam = Main article <a href="http://new.george-smart.co.uk/432mhz_yagi">432MHz Yagi</a>. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/70cmsYagi_Beam_Shaping_up.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/01/70cmsYagi_Beam_Shaping_up.jpg" width="600" alt="432MHz Yagi" class="aligncenter"></a> The <a href="http://new.george-smart.co.uk/432mhz_yagi">70cms</a> beam gets used for UHF UKAC contest. The set up is very similar to the 2-metre beam described above, attached low down on the roach pole. <b>FIXME_Category :Radio</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Antennas</b> <b>FIXME_Category :Car</b> Postgraduate Personal Statement http://new.george-smart.co.uk/postgraduate_personal_statement 0 2011-09-02 00:49:35 closed page closed 2431 draft postgraduate_personal_statement = Generic Personal Statement = The fascination of how and why something works and interacts with the world around us has always had me enthralled, and to be able to work in an environment where I am designing, prototyping and developing technology would be my dream fulfilled. My ultimate goal is to work in research and development at the leading edge of Electronic Engineering; to be engaged in new and evolving technology and to help shape the future. From an early age, I knew I wanted to be an engineer, and the progression through my degree has only strengthened my resolve. I have always had technical hobbies, working on projects involving hardware and software for my own enjoyment, and to expand my knowledge. During my studies at UCL, I have been involved in various assignments. A second year project to design a DTMF decoder I found satisfying as our group developed a practical solution using hardware, rather than the more obvious MATLAB approach, as this seemed more apt. My fourth year project, “UNV: Content-Centric Live Video Streaming System”, aimed to create an open source video test-bed to stream video via the internet while allowing the user to have total control over all parameters such as quality, codecs and the network layer. This gave me experience of working within a development team and an opportunity to exercise programming skills in interfacing with standard libraries and computer hardware, as well as basic network programming. Modules were written by individual team members and part of my role was to ensure that these modules worked reliably together. My third year project in “Cognitive Software Defined Radio for Wireless Sensor Networks” I found particularly interesting because of an existing interest in SDR. This project combined SDR with Wireless Sensor Networks which I had little knowledge of. Since working on the project I have gained a keen interest in WSN and would like to pursue this interest further. During my fourth year project, I expressed my intention to continue studies after my graduation to my supervisor, Dr Ioannis Andreopoulos. Upon discussion, it became apparent that one of his areas of research, “Computation vs Communication in Collaborative Wireless Sensor Networks”, was ideally suited to my interest. I would specifically like the opportunity to continue my studies within UCL. I always felt supported by staff on both an academic and personal level. Academics have gone out of their way to help and advise me, and in doing so have created a warm and friendly environment. Combining UCL’s world class reputation, friendly environment and premier research facilities, this is the place where I would like to study. <h1>Project Statement</h1> My third year project saw me work with wireless sensor networks to develop a cognitive network controller which used DSP techniques to recover data from all ZigBee channels simultaneously <a href="7],">so I have experience with ZigBee and the IEEE 802.15.4 standard. I am competent at writing computer programs, having written many applications including my fourth year master's project on real-time video streaming technologies. I have written C code for embedded controllers, specifically Microchip's PIC devices, and have a good practical knowledge of hardware design, schematic diagrams and PCB design & manufacture. I have extensive hardware and software design experience on embedded controllers, both to increase my knowledge and in real life applications. I have a good understanding of computers at a technical level and am well versed with Linux (my main OS), Mac OS, and Microsoft Windows. I maintain a personal website [8</a> to which I upload mini-projects I am working on for the benefit of others, and receive positive feedback. I believe that my experience and skills and the distributed WSN protocol for security and monitoring applications described earlier would make me a suitable candidate for UCL's Security Science Research Doctoral Training Centre. My strong interest in this programme comes from its cross-disciplinary nature and my own interest to work on security/surveillance applications using wireless sensor networks. In particular, given the programme’s structure, I believe I shall benefit from the mixing of different disciplines, from engineering and computer science to social sciences, and this will give me a broader perspective for application scenarios to trial the developed technology. Last but not least, such cross-disciplinary training will provide the basis for interesting ideas on how to adapt communications and processing within a wireless sensor network in conjunction with events or scenarios expected from the actual surveillance/security application. <h2>References</h2> <ul> <li> [1] I.F. Akyildiz, W. Su, Y. Sankarasubramaniam, E. Cayirci, “Wireless sensor networks: a survey,” Computer Networks, vol. 38, no. 4, pp. 393-422, March 2002.</li> <li> [2] “Wireless Medium Access Control (MAC) and Physical Layer (PHY) Specifications for Low-Rate Wireless Personal Area Networks (LR-WPANs)”; IEEE Standard 802.15.4, 2003.</li> <li> [3] D. Buranapanichkit, Y. Andreopoulos, “Distributed time-frequency division multiple access protocol for wireless sensor networks,” submitted for publication. </li> <li> [4] R. Lin, Z. Wang, Y. Sun, “Wireless sensor networks solutions for real time monitoring of nuclear power plant,” Intelligent Control and Automation, 2004. WCICA 2004. Fifth World Congress on, vol. 4, pp. 3663-3667, June 2004. </li> <li> [5] L. Yu, N. Wang, X. Meng, “Real-time forest fire detection with wireless sensor networks” Wireless Communications, Networking and Mobile Computing, 2005. Proceedings. 2005 International Conference on, vol. 2, pp. 1214 - 1217, September 2005.</li> <li> [6] “ALERT (Automated Local Evaluation in Real Time) Systems”</li> : http://www.alertsystems.org/alert.html <a href="Retrieved">01/03/2011</a></ul> <ul> <li> [7] “Software Defined Radio for Cognitive Wireless Sensor Systems”</li> : http://www.ee.ucl.ac.uk/~zceed42/ThirdYearProject.pdf <a href="Retrieved">01/03/2011</a></ul> <ul> <li> [8] “George Smart's Wiki: Academic Pages”</li> : http://www.george-smart.co.uk/wiki/Category:Academic <a href="Retrieved">01/03/2011</a></ul> <ul> <li> [9] A. Tinka, T. Watteyne, K. Pister, “A Decentralized Scheduling Algorithm for Time Synchronized Channel Hopping,” Ad Hoc Networks: Lecture Notes of the Institute for Computer Sciences, Social Informatics and Telecommunications Engineering, vol. 49, no. 4, pp. 201-216, 2010.</li> <li> [10] A. Winfield, “Distributed Sensing and Data Collection Via Broken Ad Hoc Wireless Connected Networks of Mobile Robots,” Distributed Autonomous Robotics Systems, vol. 4, pp. 273–282, 2000.</li> <li> [11] “UCL SECReT Centre : SECURITY RESEARCH TRAINING”</li> : http://www.ucl.ac.uk/secret/events/event-tabbed-box/2010ie_presentation.pdf </ul> : Presentation by H. Borrion; <a href="Retrieved">6/Mar/2011</a> <hr> You may also be interested in my <a href="http://new.george-smart.co.uk/undergraduate_personal_statement">Undergraduate Personal Statement</a> and my <a href="http://new.george-smart.co.uk/cv">CV</a>. <b>FIXME_Category :Academic</b> <b>FIXME_Category :About Me</b> Power Calculator http://new.george-smart.co.uk/power_calculator 4219 draft power_calculator 2013-03-22 00:03:37 0 closed page closed <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/PowerCalc_Circuit.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/PowerCalc_Circuit.png" alt="Setup Schematic" class="aligncenter"></a> When I was writing up the <a href="http://new.george-smart.co.uk/472_khz_transmitter">472 kHz Transmitter</a> project, I found myself constantly in need of converting peak-to-peak voltages into power. I wrote this very simple script to help me. <html> <iframe src="/cgi-bin/power_calc.cgi" width="60%" height="200px" frameborder="0"> <blockquote> <p>Sorry, but you're browser doesn't appear to support frames. <a href="/cgi-bin/power_calc.cgi">Click Here</a> for the direct link.</p> </iframe></blockquote> </html> Programming http://new.george-smart.co.uk/programming draft programming 2978 closed page closed 2012-01-03 15:47:27 0 = Overview = As part of my <a href="http://new.george-smart.co.uk/university">University</a> degree, I have to learn Java. Aside from that, I am pretty good in C, and Visual Basic. I also use <a href="http://ccsinfo.com/">CCS C</a>, which is an embedded C compiler for <a href="http://www.microchip.com/">PIC MCUs</a>. For <a href="http://new.george-smart.co.uk/internship_10">my summer internship 2010</a>, I will be working with Java and C++. I often write small programs to experiment with, so that I can learn how specific parts of the program work. Most of my programs exist only to teach me something and serve as examples. If I do decide to create a program, I tend to see it though to completion - I like to iron out any bugs - I hate to have a program only half finished. <h1>Scripts</h1> I have, by demand, started putting scripts I deem will be useful to others on here. Visit the <a href="http://new.george-smart.co.uk/scripts">Scripts</a> page or use the <i>Scripts</i> Dropdown from the navigation bar above. <h1>Webscripts</h1> I have written a few CGI scripts on this server which are useful for various things. These will be added in time. <ul> <li> <a href="http://www.george-smart.co.uk/cgi-bin/header.cgi">HTTP Header</a> takes a absolute URL and shows in table form the related HTTP headers for the requested URL.</li> </ul> <ul> <li> <a href="http://www.george-smart.co.uk/cgi-bin/weather.cgi">Weather Recorder</a> searches Google Weather for weather information at the server's location and saves it/logs it. It is available to use. I was interested in weather trends, but am currently unable to afford some decent meteorological equipment. (<b>CURRENTLY NOT WORKING</b>)</li> </ul> <h1>Interesting Links</h1> Somewhere on this page, I had to have this. It's a list of the best comments ever seen in source code. It makes me seriously laugh, and If you're a programmer, it'll probably do the same for you - <a href="http://stackoverflow.com/questions/184618?sort=votes">http://stackoverflow.com/questions/184618</a> <b>FIXME_Category :Computers</b> <b>FIXME_Category :Programming</b> Publications http://new.george-smart.co.uk/publications 0 2017-01-10 16:42:03 page closed closed 5600 draft publications All papers copyright of their respective publishers. <i>For all IEEE Papers</i>: © 2013-2016 IEEE. Personal use of this material is permitted. However, permission to reprint/republish this material for advertising or promotional purposes or for creating new collective works for resale or redistribution to servers or lists, or to reuse any copyrighted component of this work in other works must be obtained from the IEEE. <ul> <li> G. Smart, J. Atkinson, J. Mitchell, M. Rodrigues and Y. Andreopoulos, "Energy harvesting for the Internet-of-Things: Measurements and probability models," 2016 23rd International Conference on Telecommunications (ICT), Thessaloniki, 2016, pp. 1-6. (in press)</li> :doi: 10.1109/ICT.2016.7500416 (<a href="http://www.george-smart.co.uk/papers/HARVESTING_ICT.pdf">local copy</a>)</ul> <ul> <li> G. Smart, N. Deligiannis, R. Surace, V. Loscri, G. Fortino and Y. Andreopoulos, "Decentralized Time-Synchronized Channel Swapping for Ad Hoc Wireless Networks," in IEEE Transactions on Vehicular Technology, vol. 65, no. 10, pp. 8538-8553, Oct. 2016.</li> :doi: 10.1109/TVT.2015.2509861 (<a href="http://www.george-smart.co.uk/papers/DTSCS_TVT.pdf">local copy</a>)</ul> <ul> <li> N. Deligiannis, J. F. C. Mota, G. Smart and Y. Andreopoulos, "Fast Desynchronization for Decentralized Multichannel Medium Access Control," in IEEE Transactions on Communications, vol. 63, no. 9, pp. 3336-3349, Sept. 2015.</li> :doi: 10.1109/TCOMM.2015.2455036 (<a href="http://www.george-smart.co.uk/papers/DMMAC_TC_FastDesync.pdf">local copy</a>)</ul> <ul> <li> P. N. Whatmough, G. Smart, S. Das, Y. Andreopoulos and D. M. Bull, "A 0.6V all-digital body-coupled wakeup transceiver for IoT applications," 2015 Symposium on VLSI Circuits (VLSI Circuits), Kyoto, 2015, pp. C98-C99.</li> :doi: 10.1109/VLSIC.2015.7231338 (<a href="http://www.george-smart.co.uk/papers/WTRX_VSLI.pdf">local copy</a>)</ul> <ul> <li> N. Deligiannis, J. F. C. Mota, G. Smart and Y. Andreopoulos, “Decentralized multichannel medium access control: viewing desynchronization as a convex optimization method,” 2015 14th International Conference on Information Processing in Sensor Networks (IPSN '15), pp. 13-24.</li> :doi: 10.1145/2737095.2737108 (<a href="http://www.george-smart.co.uk/papers/DMMAC_IPSN15_ConvOpt.pdf">local copy</a>)</ul> <ul> <li> G. Smart, N. Deligiannis, J. F. C. Mota and Y. Andreopoulos, “Demonstration Abstract: Decentralized time-synchronized channel swapping,” 2015 14th International Conference on Information Processing in Sensor Networks (IPSN '15), pp. 404-405.</li> :doi: 10.1145/2737095.2742557 (<a href="http://www.george-smart.co.uk/papers/DTSCS_IPSN15_Demo.pdf">local copy</a>)</ul> <ul> <li> G. Smart, R. Surace, N. Deligiannis, V. Loscri, G. Fortino and Y. Andreopoulos, "Poster Abstract: Decentralized Time-Synchronized Channel Swapping for Wireless Sensor Networks," 2014 11th European Conference (EWSN '14).</li> :doi: 10.1007/978-3-319-04651-8 (<a href="http://www.george-smart.co.uk/papers/DTSCS_EWSN4_Poster.pdf">local copy</a>)</ul> <ul> <li> H. Besbes, G. Smart, D. Buranapanichkit, C. Kloukinas and Y. Andreopoulos, "Analytic Conditions for Energy Neutrality in Uniformly-Formed Wireless Sensor Networks," in IEEE Transactions on Wireless Communications, vol. 12, no. 10, pp. 4916-4931, Oct. 2013.</li> :doi: 10.1109/TWC.2013.092013.121649 (<a href="http://www.george-smart.co.uk/papers/NEUTRALITY_TWC.pdf">local copy</a>)</ul> Puxing http://new.george-smart.co.uk/puxing draft puxing 1736 page closed closed 0 2011-02-25 22:56:37 I bought some Puxing hand-held radios for use on <a href="http://new.george-smart.co.uk/packet">Packet Radio</a>. I made sure that the radios purchased had external headsets. To use these, I had to figure out which wires where which. This was very simple, but I document it here because I couldn't find it on the net elsewhere. <h1>Pinout</h1> <ul> <li> Screen - Ground</li> <li> Blue - Microphone (audio to the modulator)</li> <li> Green - PTT (ground to TX)</li> <li> Red - Speaker (demodulated audio)</li> </ul> <h1>Disassembly</h1> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/PX777_1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/PX777_1.jpg" width="675" alt="Puxing PX-777 Headset" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/PX777_2.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/PX777_2.jpg" width="675" alt="Puxing PX-777 Headset" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/PX777_3.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/PX777_3.jpg" width="675" alt="Puxing PX-777 Headset" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/PX777_4.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/PX777_4.jpg" width="675" alt="Puxing PX-777 Headset" class="aligncenter"></a> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Radio</b> Qi Charger http://new.george-smart.co.uk/qi_charger qi_charger draft 5082 closed page closed 2014-08-28 16:45:27 0 I recently bought a cheap Qi Charger for my Google Nexus 5 phone from eBay. Other than that it met the Qi standard, I could never really find out what that meant. I appreciated that it was some kind of inductive charger system where a coil of wire in the charger couples to a coil of wire in the phone like the two separate windings of a transformer. However, beyond that, I was clueless. The Wikipedia artcile was kind of sketchy on the technicalities of the scheme: <a href="http://en.wikipedia.org/wiki/Qi_(inductive_power_standard)">Qi (inductive power standard)</a>. I decided to see what was going inside. I took the cover off to find that the device was mostly empty space. A small circuit board scattered with a couple of ICs and a coil of wire on a ferrite block is all I found. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/QiCharger_Inside.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/QiCharger_Inside.jpg" width="600" alt="Inside of Qi Charger" class="aligncenter"></a> A close-up of the coil and both sides of the PCB <center><table > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/QiCharger_CoilClose.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/QiCharger_CoilClose.jpg" width="200" alt="Inside of Qi Charger" class="aligncenter"></a></tr> </table> <i>Clicking on any of the pictures will load the picture details page. Click on the picture there, and it will show full resolution.</i> </center> Looking at the middle picture (the top side of the PCB) you can see where the coil connects to the PCB. Between these two connections, 4 capacitors are used in order to get the coil to resonate on frequency. Looking around the net, figures in the region of 200 kHz are mentioned. This is also the purpose for the ferrite (grey material) underneath (see <a href="http://en.wikipedia.org/wiki/Ferrite_(iron)">ferrite material</a> and <a href="http://en.wikipedia.org/wiki/Ferrite_core">ferrite cores</a>. Above these capacitors, you see black surface-mount transistors. These are configured in a <a href="http://en.wikipedia.org/wiki/H-bridge">H-bridge</a> configuration, allowing for a greater peak-to-peak voltage swing across the coil, and therefore more power. From here on there are some components that measure the current being drawn by the H-bridge (and thus the phone being charged) and some components that drive the H-bridge. To monitor what the magnetic field was doing, I took a piece of wire, wound it around a small plastic bottle, and used some coil-dope to hold it all in place. The coil was not resonant, which probably deteriorates performance somewhat, and was arbitrarily chosen to have 3 turns. The diameter is approximately 80 mm. <center><table > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/QiCharger_TestCoilA.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/QiCharger_TestCoilA.jpg" width="200" alt="Test coil" class="aligncenter"></a></tr> </table> <i>Clicking on any of the pictures will load the picture details page. Click on the picture there, and it will show full resolution.</i> </center> I then fed the coil output, via a BNC terminated coaxial cable, into a Tektronics MDO4104-6 scope. I have saved a few screenshots which show the sorts of output expected. With an input impedance of 1MΩ, the coil output shows lots of ringing, probably due to the unmatched impedances of the loop, coax and scope input. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/QiCharger_Scope_HiZ.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/QiCharger_Scope_HiZ.png" width="600" alt="Scope waveform" class="aligncenter"></a> This ringing is easily rectified by switching the scope to an input impedance of 50Ω, although this clearly loads the loop. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/QiCharger_Scope_mZ.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/QiCharger_Scope_mZ.png" width="600" alt="Scope waveform" class="aligncenter"></a> We can see from the figure above that the frequency is 168.9 kHz, although the frequency doesn't appear to be overly stable (range of around 154-223 kHz). We see a voltage mean of 1.12 V pk-pk into 50Ω. The figure below shows a zoomed view of one and a half periods. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/QiCharger_Scope_zoomZ.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/QiCharger_Scope_zoomZ.png" width="600" alt="Scope waveform" class="aligncenter"></a> Keeping with the 50Ω input impedance, it is possible to see the phone is absorbing energy from the system. The peak-to-peak voltage is significantly reduced across the test coil. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/QiCharger_Scope_Phone.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/QiCharger_Scope_Phone.png" width="600" alt="Scope waveform" class="aligncenter"></a> I noticed that with no phone present, the coil current was pulsed, meaning the waveform would be present for a time, and then absent for a time, with duty cycling taking place - probably to reduce the current drawn when no phone is connected. When the phone is presented, the waveform becomes continuous (at the reduced peak-to-peak level) <center><table > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/QiCharger_Scope_dutyA.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/QiCharger_Scope_dutyA.png" width="200" alt="Duty Cycling" class="aligncenter"></a></tr> </table> <i>Clicking on any of the pictures will load the picture details page. Click on the picture there, and it will show full resolution.</i> </center> QRSS http://new.george-smart.co.uk/qrss 0 2013-09-19 16:59:22 closed page closed 4742 qrss draft QRSS is a low power transmission mode used by amateur radio operators in several bands, named after a Morse code signal to slow down. It consists of Morse code sent with very long timings so that the received code is detected by spectrograph instead of by ear. This has the effect of increasing the minimum SNR ratio required. It is possible to receive signals 18000 km away, on just 15mW. I have also been experimenting with <a href="http://new.george-smart.co.uk/qrss_on_2_metres">QRSS on 2 metres</a>. <h1>My Hardware</h1> <h2>Testing</h2> My QRSS beacon, based on my <a href="http://new.george-smart.co.uk/arduino_qrss">Arduino QRSS</a> work, provides an RF output from DDS-60 (Analog Devices AD9851) which then feeds <a href="http://new.george-smart.co.uk/1w_pa_for_10mhz">a 1 watt 10 MHz class-C power amplifier</a>. The two combined provide an output power of around 800mW, which is more than suitable for QRSS. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/Arduino_QRSS.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/Arduino_QRSS.jpg" width="600" alt="Arduino QRSS Hardware" class="aligncenter"></a> <h2>Secret Nuclear Bunker</h2> For a short while, the beacon is located at the <a href="http://www.secretnuclearbunker.com/">Kelvedon Hatch Secret Nuclear Bunker</a> (GB0SNB). A more permanent station is being worked on by <a href="http://www.webshed.org">Dave (G7UVW)</a> and <b>FIXME_User :George|me</b>. The QRSS beacon has been enclosed in a weather proof box, and protected form the elements a little. This first image shows the packing to get all the stuff, and a small power supply, inside the weather proof box. I wanted to get the power supply inside to both protect from the rain and to create a little heat inside the box. The Bunker site is remote, and the beacon on the top of a hill, where the temperature is frequently below 0 Celsius - any warmth we could collect is therefore good! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_Beacon_GB0SNB_20120218_Inside.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_Beacon_GB0SNB_20120218_Inside.jpg" width="600" alt="Inside the first attempt" class="aligncenter"></a> Once it had been thoroughly tested, the lid was tightened down, and I begun to calibrate the temperature. As the inside of <a href="http://new.george-smart.co.uk/the_shack">The Shack</a> is much warmer than outside, it was necessary to take this thermal difference into account. Something which I initially did wrong and required another trip to the site to put right! You can also see how it's raining quite hard here! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_Beacon_GB0SNB_20120218_Closed.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_Beacon_GB0SNB_20120218_Closed.jpg" width="600" alt="The first attempt" class="aligncenter"></a> Finally, this last image shows the final resting place for the beacon. It's underneath a porta-cabin (a temporary building structure) which affords some level of shelter from direct rainfall. Then, it is under a plastic water container, which has had the side cut out of it; this reduces the wind chill on the beacon by shielding it from cross winds at the top of the hill. Inside this box, the beacon is wrapped in protective polythene to try and add a little more thermal insulation (this insulation is also part of the issue of why we had to re-calibrate the thermal drift offsets). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_Beacon_GB0SNB_20120218_Location.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_Beacon_GB0SNB_20120218_Location.jpg" width="600" alt="It's home at GB0SNB" class="aligncenter"></a> It's not a pretty sight, but it certainly works well. The antenna is a temporary dipole, made from previously used wire, RF adapters and 10 metres of RG58/U coax back to the beacon - all well taped up! You can just make out the dipole in the image below. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_Beacon_GB0SNB_20120218_Dipole.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_Beacon_GB0SNB_20120218_Dipole.jpg" width="600" alt="QRSS Dipole" class="aligncenter"></a> And one more for luck: <a href="http://www.webshed.org">Dave (G7UVW)</a> with the laptop we used to amend the frequency offsets. Thank god he volunteered as I had left my laptop at work. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_Beacon_GB0SNB_20120218_Dave.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_Beacon_GB0SNB_20120218_Dave.jpg" width="300" alt="Dave (G7UVW) poses" class="aligncenter"></a> <h1>My Signal</h1> As mentioned previously, my <a href="http://new.george-smart.co.uk/1w_pa_for_10mhz">1W PA for 10MHz</a> will put out about 800mW on 30 metres QRSS band. With the Arduino it is possible to create many different kinds of signal. My QRSS signal is three triangles and <i>M1GEO</i> in DFCW Morse code; 5 Hz shift with a 6 second dot length, on approximately 10.140,050 MHz. The image below is a locally captured copy of my transmitted signal. It is repeated continually. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/Arduino_QRSS_Signal.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/Arduino_QRSS_Signal.png" width="600" alt="QRSS Signal" class="aligncenter"></a> Earlier versions used ramps instead of the triangles, which I believed were more easily identifiable; however, due to the use of slant-CW (people encoding Morse code into forward and reverse slashes) it is more useful to use triangles. <h1>Reports</h1> Please send any reports to my email address, using the <a href="http://new.george-smart.co.uk/contact_me">Contact Me</a> link. <h2>YO7CKQ</h2> 15:24, 15/02/2012 I have had a few reports of spots on people's QRSS Grabbers. The first comes care of Sorin (YO7CKQ). He says: <blockquote> I received today your QRSS beacon on 30 meters band. RIG here: ICOM IC756 PRO III, inverted L antenna, USB interface and ARGO software. You can see here some print-screen. </blockquote> I have joined the overlapping printscreens together for a continious image, but the originals are here: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/QRSS_20120215_YO7CKQ_A.jpg">A</a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/QRSS_20120215_YO7CKQ_B.jpg">B</a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/QRSS_20120215_YO7CKQ_C.jpg">C</a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/QRSS_20120215_YO7CKQ_D.jpg">D</a>. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_20120215_YO7CKQ_Merged.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_20120215_YO7CKQ_Merged.jpg" width="600" alt="Merged report from YO7CKQ" class="aligncenter"></a> A total distance of 1847 km, from my JO01CN to KN15PA. <h2>PA0TAB</h2> 05:20, 15/02/2012 This one I noticed on the PA0TAB QRSS Grabber, <a href="http://pa0tab.nl/grabber.html">found here</a>. It's a little bit weak and with some QSB. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_20120215_PA0TAB_Merged.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_20120215_PA0TAB_Merged.jpg" width="600" alt="Merged report from PA0TAB" class="aligncenter"></a> 12:30, 17/02/2012 This shows a much stronger reception at the PA0TAB grabber. Note the signal is not in order, but all parts of it fully visible. The triangles break up the Morse code. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_20120217_PA0TAB_Merged.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_20120217_PA0TAB_Merged.jpg" width="600" alt="Report from PA0TAB" class="aligncenter"></a> A total distance of 473 km, from my JO01CN to JO33HF. <h2>OZ9QV</h2> 09:28, 17/02/2012 This signal, again weak was noticed on OZ9QV Grabber, <a href="http://jgander.home.xs4all.nl/qrss-p/">found here</a>. Again weak with QSB. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_20120217_QZ9QV_Merged.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_20120217_QZ9QV_Merged.jpg" width="600" alt="Merged report from PA0TAB" class="aligncenter"></a> A total distance of 912 km, from my JO01CN to JO65CP. <h2>SA2BRJ</h2> 09:28, 17/02/2012 This signal was emailed to me by SA2BRJ from his grabber, <a href="http://foo.fot.nu/qrss/">found here</a>. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_20120217_SA2BRJ _Merged.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_20120217_SA2BRJ _Merged.jpg" width="600" alt="Merged report from PA0TAB" class="aligncenter"></a> A total distance of 1793 km, from my JO01CN to KP03CT. <h2>IZ1KXO</h2> 09:10, 19/02/2012 This signal was emailed to me by Paolo, IZ1KXO, from his grabber. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_20120219_IZ1KXO _Merged.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_20120219_IZ1KXO _Merged.jpg" width="600" alt="Merged report from IZ1KXO" class="aligncenter"></a> A total distance of 2006 km, from my JO01CN to JM76. <h2>VE1VDM</h2> 20:20, 19/02/2012 This one I noticed on the Big Ears Grabber run by Vernon (VE1VDM), <a href="http://users.eastlink.ca/~ve1vdm/argocaptures/grabber.htm">found here</a>. There is a weaker station mixed in with us. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_20120219_VE1VDM _Merged.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_20120219_VE1VDM _Merged.jpg" width="600" alt="Merged report from VE1VDM" class="aligncenter"></a> A total distance of 4582 km, from my JO01CN to FN85IJ. <h2>ZL2IK</h2> 07:10, 20/02/2012 These spots were emailed to me by Pete, ZL2IK, via the <a href="http://mail.cnts.be/mailman/listinfo/knightsqrss_cnts.be">KnightsQRSS mailing list</a>. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_20120220_ZL2IK_Merged.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_20120220_ZL2IK_Merged.jpg" width="600" alt="Merged report from ZL2IK" class="aligncenter"></a> A total distance of 18188 km, from my JO01CN to RF74CI. <b>Very pleased</td><td></b> <h2>W4HBK</h2> 09:10, 20/02/2012 These spots were emailed to me by Bill, W4HBK, via the <a href="http://mail.cnts.be/mailman/listinfo/knightsqrss_cnts.be">KnightsQRSS mailing list</a>. The first is a short 10 minute spot. The second is a 4-hour long-grab. It shows how strong reception was through out the period (as well as showing drift!). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_20120220_W4HBK_Merged.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_20120220_W4HBK_Merged.jpg" width="600" alt="Merged report from W4HBK" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_20120220_W4HBK_4HR.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_20120220_W4HBK_4HR.jpg" width="600" alt="4-hour report from W4HBK" class="aligncenter"></a> A total distance of 7238 km, from my JO01CN to EM60KJ. <h2>I2PHD</h2> 17:13, 22/02/2012 I noticed that I appeared on I2PHD's <a href="http://www.sdradio.eu/weaksignals/argo/index.html">Argo Homepage</a> in the image showing the application running. I decided to add that to the list, as it was a nice copy. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_20120222_I2PHD.gif"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/QRSS_20120222_I2PHD.gif" width="600" alt="ARGO Homescreen" class="aligncenter"></a> A total distance of 963 km from JO01CN to JN45SL. <b>FIXME_Category :Radio</b> <b>FIXME_Category :QRSS</b> QRSS on 2 metres http://new.george-smart.co.uk/qrss_on_2_metres 0 2013-09-23 18:34:18 closed closed page 4771 qrss_on_2_metres draft The topic of VHF and UHF propagation fascinates me, and with new tools and modes such as <a href="http://new.george-smart.co.uk/qrss">QRSS</a> and <a href="http://new.george-smart.co.uk/wspr">WSPR</a> I decided to have a play about. I tried on <a href="http://new.george-smart.co.uk/2m_wspr">WSPR on 2 metres</a> some time ago, with limited success due to drift on the band. I also wanted something I could leave at a nice high QTH and observe the results over a longer period. This is when I decided on the QRSS MEPT for 2 metres. The rest of this page describes the "making" and "playing" with the parts and hopefully will document some results. <h1>About the MEPT</h1> The project begins with an ECray beacon purchased for £2 at a local rally. The board originally transmitted periodic data on 161 MHz, for an emergency beacon for reception via satellite. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_Beacon1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_Beacon1.jpg" width="600" alt="Beacon" class="aligncenter"></a> The existing 13.4 MHz crystal was multiplied by 12 to give the desired frequency. Swapping this for a 12 MHz crystal as suggested by Dave Mills (G7UVW) on his <a href="http://webshed.org/wiki/QRSS_2m">QRSS 2m page</a> yielded results in the low end of the 2 metre band. The issue being that it wasn't possible to pull the 12 MHz crystal up enough in frequency to get the output near the QRSS/WSPR section, approximately 144.490 MHz. Hunting through junk boxes I was able to find a 12.040 MHz crystal which when inserted into the 12x multiplier strip of the beacon gave a frequency of 144.480 MHz; much closer to the target. This requires pulling up 820 Hz, which was easily achieved with a small trimmer capacitor. A small crystal heater was added to help maintain the crystal at a constant temperature, and thus help maintain a stable output frequency when multiplied up to VHF. This proves to be very difficult, and a potential project would be to combine this with my homebrew <a href="http://new.george-smart.co.uk/gps_frequency_standard">GPS Frequency Standard</a> project. I also removed the MCU end of the board to allow it to fit in a watertight enclosure. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_Beacon2.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_Beacon2.jpg" width="600" alt="Beacon Modified a bit" class="aligncenter"></a> Initial testing showed an output power of around 161 uW at the antenna socket. The original beacon I measured at around 200 mW. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_Beacon3.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_Beacon3.jpg" width="400" alt="Unmodified TX" class="aligncenter"></a> Some modifications to the back of the PCB, adding extra capacitance into the tuned circuits to compensate for the lower frequency (144 from 161 MHz) helped immensely. In the end, the modifications were simple: <ul> <li> 2.2 pF in parallel with C18</li> <li> 4.7 pF in parallel with C20</li> <li> 22 pF in parallel with C19 (this may not be optimal)</li> <li> 10 pF padding on crystal (adjust to get trimmer to required frequency range)</li> </ul> The image below shows the back of the PCB where these modifications where made: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_Beacon5.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_Beacon5.jpg" width="600" alt="Beacon Modified RF Strip" class="aligncenter"></a> After the modifications were made, I retuned the board to find the power had increased dramatically, to around 330 mW. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_Beacon4.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_Beacon4.jpg" width="400" alt="Modified TX" class="aligncenter"></a> Initially, I had hoped to play with the PA on the board and get some more power, perhaps 500 mW. The maximum power I got out of the final stage was around 600 mW, but it died. I decided to be less of an idiot, and built a simple 1 W class-C amplifier from a 2N4427 with low pass filter. In its early stages, it looked something like this: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_Beacon6.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_Beacon6.jpg" width="600" alt="Beacon 2N4427 PA" class="aligncenter"></a> Obviously the first thing to note is that this amplifier, when turned up to <i>eleven</i> can do around 2 W, but learning from previous mistakes, I set the power to 1 W. Before going on air, I checked the output from DC to 1 GHz on the spectrum analyser to ensure it was reasonable. The MEPT meets the currently advised -60 dBc spectral purity, so we're good to go on air. <center><table cellpadding="5" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_Beacon7.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_Beacon7.jpg" width="300" alt="Beacon PA Power" class="aligncenter"></a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_Beacon8.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_Beacon8.jpg" width="300" alt="Beacon PA Spectrum" class="aligncenter"></a></tr> </table> </center> All that remained was a little programming to send a CW ID and short explanation in CW at 20 WPM and the QRSS repeating every 10 minutes. This was done using an Arduino based on my <a href="http://new.george-smart.co.uk/arduino_qrss">Arduino QRSS</a> project (see the Arduino menu entry in the Electronics group on the left). Timing is derived from the Arduino's low grade computer crystal, so should be close enough short term, but may cause some issues in the long term. Hopefully the 10 minutes will be close enough to enable stacking. The CW message reads <blockquote> M1GEO QRSS MEPT JO01CN 500MW <AA> PSE RPT VIA EMAIL <AA> </blockquote> The QRSS then sends M1GEO with a 7 second dot speed to fill the remaining time approximately. An unmodulated carrier is then sent for the remaining time, waiting an internal timer for 10 minutes. The spectral domain looks as follows. Note the CW at 20 WPM is the left most part, which is unreadable due to the time-scale. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_Beacon10.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_Beacon10.png" width="600" alt="Output FFT" class="aligncenter"></a> The whole project is mounted in a weatherproof box, feeding just 13.8 V DC in and RF out. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_Beacon9.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_Beacon9.jpg" width="600" alt="Beacon Boxed" class="aligncenter"></a> <h1>Reports</h1> <h2>Dave G7UVW</h2> Two reports from Dave, G7UVW at a distance of 3km? His S-meter reading was 59+10dB! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_G7UVW1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_G7UVW1.png" width="600" alt="Beacon Report" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_G7UVW2.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_G7UVW2.png" width="600" alt="Beacon Report" class="aligncenter"></a> <h2>Colin G6AVK</h2> A very interesting report via Twitter (<a href="https://twitter.com/g6avk/statuses/380765868260859904">here</a> & <a href="https://twitter.com/g6avk/statuses/380770028133425152">here</a>) from Colin, G6AVK, over about 31 km. His S-meter reading between S3 and S5: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_G6AVK1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_G6AVK1.jpg" width="600" alt="Beacon Report" class="aligncenter"></a> <h2>Terry G4CDY</h2> From Terry, G4CDY, about 36 km. A nice strong signal. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_G4CDY1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/09/2mQRSS_G4CDY1.jpg" width="600" alt="Beacon Report" class="aligncenter"></a> QSL Card http://new.george-smart.co.uk/qsl_card draft qsl_card 4926 closed page closed 2014-04-29 19:24:37 0 This page shows my QSL card. If we have worked on radio and you would like a QSL card, <a href="http://new.george-smart.co.uk/contact_me">contact me</a>. <h1>Current Standard Card</h1> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/QSLCard_Front_Apr2014.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/QSLCard_Front_Apr2014.png" width="600" alt="Front of my QSL Card" class="aligncenter"></a> <h1>Old Standard Cards</h1> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/QSLCard_Front.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/QSLCard_Front.jpg" width="600" alt="Front of my QSL Card" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/QSLCard_Front2.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/QSLCard_Front2.jpg" width="600" alt="Front of my QSL Card #2" class="aligncenter"></a> <h1>Queen's Jubilee</h1> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/QSLCard_Jubilee.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/QSLCard_Jubilee.jpg" width="600" alt="Queen's Jubilee QSL Card" class="aligncenter"></a> <h1>Camping in Holland : July 2012</h1> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/QSLCard_PACampingJuly12.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/QSLCard_PACampingJuly12.png" width="600" alt="Portable in Holland QSL Card" class="aligncenter"></a> <h1>London Olympics 2012</h1> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/QSLCard_LondonOlympics2012.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/QSLCard_LondonOlympics2012.png" width="600" alt="London Olympics 2012 QSL Card" class="aligncenter"></a> <h1>Card Back</h1> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/QSLCard_Back.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/04/QSLCard_Back.jpg" width="600" alt="Back of my QSL Card" class="aligncenter"></a> <b>FIXME_Category :Radio</b> QSO Recordings http://new.george-smart.co.uk/qso_recordings closed page closed 0 2016-12-06 21:40:24 qso_recordings draft 5531 This page has a couple of MP3s of some nice QSOs I have had. Recently I have started to upload QSOs to my website: <a href="http://www.george-smart.co.uk/Cloudlog">M1GEO Cloudlog Logbook</a>. All QSOs logged are also uploaded to eQSL and LoTW in batches. Please confirm where possible! <ul> <li> <a href="https://www.youtube.com/watch?v=xNT-2cS-gJY">OK1KAD (Czech Republic) on 70 centimetres, Feb 2015 (using Dad's call G8OCV)</a></li> </ul> <ul> <li> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/QSO_Recording_DF0MU_2m.mp3">DF0MU (Germany) on 2 metres, May 2013</a></li> </ul> <ul> <li> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/QSO_Recording_ZL1SLO_20m.mp3">ZL1SLO (New Zealand) on 20 metres, December 2012</a></li> </ul> <ul> <li> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/QSO_Recording_4S7AB_17m.mp3">4S7AB (Sri Lanka) on 17 metres, June 2011</a></li> Quotes http://new.george-smart.co.uk/quotes closed page closed 2015-03-25 00:22:52 0 quotes draft 5239 = Interesting Quotes = Here are some quotes, lyrics, sayings, proverbs and the like. There are a good few, but they mean something to me. They are in no specific order - I really should get around to grouping them. <blockquote> "Early to bed and early to rise; no bloody good unless you advertise" -- Unknown </blockquote> "There are far, far better things ahead than any we leave behind." <blockquote> -- C. S. Lewis </blockquote> <blockquote> "Something always comes out of nothing, pay attention to the details." -- <i>Source Unknown</i> </blockquote> <blockquote> "We're all just apes with broadband" -- Jeremy Hardy </blockquote> <blockquote> "I Started Out With Nothin' And I Still Got Most Of It Left" -- Seasick Steve </blockquote> <blockquote> "Every kid starts out as a natural-born scientist, and then we beat it out of them. A few trickle through the system with their wonder and enthusiasm for science intact." -- Carl Sagan </blockquote> <blockquote> "Criticism is something we can avoid easily by saying nothing, doing nothing, and being nothing." --Aristotle </blockquote> <blockquote> "It usually takes me more than three weeks to prepare a good impromptu speech." --Mark Twain </blockquote> <blockquote> "The person who says it cannot be done should not interrupt the person doing it." --Chinese Proverb </blockquote> <blockquote> "One who makes no mistakes, never makes anything." --English proverb </blockquote> <blockquote> "Don't ever take a fence down until you know why it was put up." -- G.K. Chesterton </blockquote> <blockquote> "A wise man once told me don't argue with fools. From a distance, people can't tell who is who." -- <i>Source Unknown</i> </blockquote> <blockquote> "Quality is doing the right thing, even when no one else is looking." -- Henry Ford </blockquote> <blockquote> "A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialisation is for insects." -- Robert Heinlein </blockquote> <blockquote> "Unattended children with be given 2 free espressos and a free kitten" -- Coffee Shop by UCL </blockquote> <blockquote> "If others would think as hard as I did, then they would get similar results." -- Newton </blockquote> <blockquote> "Most of the important things in the world have been accomplished by people who have kept on trying when there seemed to be no hope at all" -- Dale Carnegie </blockquote> <blockquote> "Be who you are and say what you feel, because those who mind don't matter, and those who matter don't mind." --Dr. Seuss </blockquote> <blockquote> "Once social change begins, it cannot be reversed. You cannot uneducate the person who has learned to read." –- César Chávez </blockquote> <blockquote> "Chuck Norris can restore a system from sudo rm -rf /. You can't." –- Seen in the Ubuntu User Forums, <a href="http://ubuntuforums.org/showpost.php?p=3878159&postcount=6">here</a>. </blockquote> <blockquote> "I always tell my co-workers. 'Comments don't run</td><td>'" –- Oscar Reyes Mar 27 at 0:43, from <a href="http://stackoverflow.com/questions/184618">here</a>. </blockquote> <blockquote> "You're a problem creator. Me, I'm a solution provider!" –- <a href="http://www.aaron-brown.net">Aaron Brown</a> </blockquote> <blockquote> "Remember pressure makes diamonds" -- Emma T. </blockquote> <blockquote> "Pressure may make diamonds, but it also bursts balloons!" -- <i>Source Unknown</i> </blockquote> <blockquote> “Protons give an atom its identity, electrons its personality.” -- Bill Bryson, A Short History of Nearly Everything </blockquote> <blockquote> "In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move." –- Douglas Adams. </blockquote> <blockquote> Six stages of a project: o Enthusiasm o Disillusionment o Panic o Search for the guilty o Punishment of the innocent o Praise and honor for the non-participants -- Office poster in Research Lab </blockquote> <blockquote> "If you can’t explain what you are doing to a nine-year-old, then either you still don’t understand it very well, or it’s not all that worthwhile in the first place." -- Albert Einstein </blockquote> <blockquote> "Physics is much too hard for physicists." -- David Hilbert </blockquote> <blockquote> If I have seen farther than others, it is because I was standing on the shoulder of giants. --Isaac Newton If I have not seen as far as others, it is because giants were standing on my shoulders. --Hal Abelson Mathematicians stand on each other’s shoulders. --Gauss Computer scientists stand on each other’s feet. --Richard Hamming Software engineers dig each other’s graves. --Unknown </blockquote> <blockquote> "Always forgive your enemies; nothing annoys them so much." -- Oscar Wilde </blockquote> <blockquote> "Dream as if you'll live forever, live as if you'll die tomorrow" -- James Dean </blockquote> <blockquote> "Never look down on anybody unless you're helping him up." -- Jesse Jackson </blockquote> <blockquote> "I like nonsense, it wakes up the brain cells. Fantasy is a necessary ingredient in living, It's a way of looking at life through the wrong end of a telescope. Which is what I do, And that enables you to laugh at life's realities." -- Dr. Seuss </blockquote> <blockquote> "An expert is a person who has made all the mistakes that can be made in a very narrow field" -- Nils Bohr </blockquote> <blockquote> "Don't worry about the world coming to an end today. It's already tomorrow in Australia!" -- Charles Schultz </blockquote> <blockquote> "Those folks who try to impose analog rules on digital content will find themselves on the wrong side of the tidal wave." -- Mark Shuttleworth </blockquote> <blockquote> "There are only three things that can kill a farmer: lightning, rolling over in a tractor, and old age." -- Bill Bryson </blockquote> <blockquote> "There are known knowns. These are things we know that we know. There are known unknowns. That is to say, there are things that we know we don't know. But there are also unknown unknowns. There are things we don't know we don't know." -- Donald Rumsfeld </blockquote> <blockquote> "At 300dpi you can tell she's wearing a swimsuit. At 600dpi you can tell that it's wet. At 1200dpi you can tell it's painted on, I suppose at 2400dpi you can tell if the paint is giving her a rash." -- Joshua Poulson </blockquote> <blockquote> When man invented fire, he didn’t say, 'hey, let’s cook', he said, 'great, now we can see naked bottoms in the dark.' -- Coupling </blockquote> <blockquote> "Go that extra mile. There's always plenty of room there!" -- <a href="http://ubuntuforums.org/member.php?u=195792">U2XS</a> Ubuntu Forums </blockquote> <blockquote> "If quantum mechanics hasn't profoundly shocked you, you haven't understood it yet." -- Nils Bohr </blockquote> <blockquote> "There are things you just can't do in life. You can't beat the phone company, you can't make a waiter see you until he's ready to see you, and you can't go home again." -- Bill Bryson </blockquote> <blockquote> "If you are good enough to make a hobby your work, then it's probably more than a hobby." -- <a href="http://www.lorenzolevrini.com/">Lorenzo Levrini</a> </blockquote> <blockquote> "Engineering is the art of making what you want from things you can get." -- Jerry Avins, <a href="http://www.dsprelated.com/showmessage/38252/1.php">here</a>. </blockquote> <blockquote> "Engineering is doing with one dollar, what another man does with two after a fashion!" -- Arthur Mellen Wellington (adapted slightly) </blockquote> <blockquote> "Courage is what it takes to stand up and speak, Courage is also what it takes to sit down and listen." -- Winston Churchill </blockquote> <blockquote> "Giving something away for free doesn't impose it has no value" -- <a href="http://ubuntuforums.org/member.php?u=330216">LowSky</a> Ubuntu Forums </blockquote> <blockquote> Don't walk in front of me, I may not follow. Don't walk behind me, I may not lead. Just walk beside me and be my friend. -- <a href="http://www.gidforums.com/member.php?u=6173">Paramesh</a> on GIDForums, <a href="http://www.gidforums.com/showpost.php?p=35763&postcount=2">here</a> </blockquote> <b>FIXME_Category :About Me</b> Radar Systems http://new.george-smart.co.uk/radar_systems radar_systems draft 1765 closed closed page 0 2011-02-25 23:34:49 = About These Notes =<table cellpadding="4" > <tr><td><b>Title</b></td><td>Radar Systems (MSc Course Notes)</td></tr><tr><td><b>Description</b></td><td>Personal notes for the Radar Systems course. Contain the key concepts and formula required, as well as my own understanding of the content.</td></tr><tr><td><b>Author</b></td><td>George Smart</td></tr><tr><td><b>Supervisor</b></td><td><i>Not Assessed</i></td></tr><tr><td><b>Second Assessor</b></td><td><i>Not Assessed</i></td></tr><tr><td><b>Institution</b></td><td><a href="http://www.ee.ucl.ac.uk/">Department of Electronic and Electrical Engineering</a>, <a href="http://www.ucl.ac.uk/">University College London</a></td></tr><tr><td><b>Date</b></td><td>February, 2011</td></tr><tr><td><b>Download</b></td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/RadarNotes.pdf">Download in PDF Format</a></tr> </table> <h1>Web Content</h1> This page will be adjusted to reflect the content inside the <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/RadarNotes.pdf">PDF copy of the notes</a>. Until then, please feel free to <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/RadarNotes.pdf">download the notes in PDF format</a>. <h1>CARPET</h1> The <a href="http://new.george-smart.co.uk/carpet">CARPET</a> software can be downloaded <a href="http://new.george-smart.co.uk/carpet">from here</a>. <b>FIXME_Category :Lecture Notes</b> <b>FIXME_Category :Academic</b> <b>FIXME_Category :Radio</b> <b>FIXME_Category :Radar</b> RaspberryPi WSPR http://new.george-smart.co.uk/raspberrypi_wspr 0 2015-11-16 14:25:25 closed page closed 5352 raspberrypi_wspr draft This page details my attempts of <a href="http://new.george-smart.co.uk/compiling_wspr">Compiling WSPR</a> on the <a href="http://www.raspberrypi.org/">Raspberry Pi</a>. The basic method used to compile <a href="http://new.george-smart.co.uk/wspr">WSPR</a> on any other PC works here, but there are some slight changes required on the Raspberry Pi. This page is a bit brief and should be used in conjunction with my <a href="http://new.george-smart.co.uk/compiling_wspr">Compiling WSPR</a> page. <h1>Dependencies</h1> So, to start with, I install exactly the same dependences as before. Please note, the "\" indicates that the command continues on the next line. Remove the "\" when copying and pasting, and put all the programs on one line. <blockquote> sudo apt-get update sudo apt-get install subversion python2.7-dev python-numpy python-imaging-tk python-pmw \ libportaudio2 portaudio19-dev libsamplerate0-dev gfortran cl-fftw3 python-dev </blockquote> Let this install. It takes a while, but all the files are in the standard <a href="http://www.raspbian.org/">Rasbpian</a> repository. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/RPi_WSPR_Install.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/RPi_WSPR_Install.png" width="600" class="aligncenter"></a> <h1>Download Source via SVN</h1> To download the source via the newly installed sub-version system, run the following command. The latest WSPR source code will be obtained into a subfolder. <blockquote> svn co svn://svn.code.sf.net/p/wsjt/wsjt/branches/wspr </blockquote> Once the download is finished, <i>cd</i> into the newly downloaded WSPR source code folder, <i>wspr/</i> and get ready for action! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/RPi_WSPR_DownloadSource.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/RPi_WSPR_DownloadSource.png" width="600" class="aligncenter"></a> <h1>Modify Source</h1> This step is somewhat unofficial, and shouldn't be required. It is to overcome a bug in the current (revision 2996) version of the SVN code. <blockquote> nano wspr0.f90 </blockquote> Comment (!) line 16 and 17 out in the <i>wspr0.f90</i> source code file. This is the easiest way. You can of course trace the real issue of the code, but unless you're going to be using the command line processing version of WSPR then it doesn't really matter. Left is the original and right has been modified. <center><table cellpadding="10" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/RPi_WSPR_HackSourceB.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/RPi_WSPR_HackSourceB.png" width="300" class="aligncenter"></a></tr> </table> </center> <h1>Find PortAudio & Configuring</h1> You'll need to find the path to libportaudio.so before you can compile newer versions of WSPR on newer versions of Linux. <blockquote> cd /usr/lib/ find -iname "libportaudio.so" </blockquote> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/RPi_WSPR_PortAudio.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/RPi_WSPR_PortAudio.png" width="600" class="aligncenter"></a> This path then needs to be fed to the <i>./configure</i> script: <blockquote> ./configure --with-portaudio-lib-dir=/usr/lib/arm-linux-gnueabi/ </blockquote> The script should finish within a little time: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/RPi_WSPR_Configure.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/RPi_WSPR_Configure.png" width="600" class="aligncenter"></a> <h1>Compiling</h1> To compile, simply run: <blockquote> make </blockquote> and then go to make yourself a nice tea. The compile took around 3 minutes so you should finish about right! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/RPi_WSPR_Compile.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/RPi_WSPR_Compile.png" width="600" class="aligncenter"></a> A this point, you have the compiled version of WSPR ready to go. <b>BUT</b> You probably don't have enough RAM on the Raspberry Pi. I have the 256 MB model (an early model B with network). The trick is to make a swap file in the file system to use as memory... You'll see an error message saying that python "cannot map zero-fill pages: cannot allocate the memory". If this is the case, the next section will solve it! <h1>Making A Swap File</h1> Before we go any further, some words of caution! SD cards have a limited number of write cycles - i.e. you can only write to them so many times before they die. Using an SD card as RAM is a good way of quickly approaching the write-limit of an SD card. The Linux kernel does everything it can do to avoid using the SD card <i>swap file</i> because it's very slow. It really is the only way here. If you have an external USB HDD, almost certainly use that, as HDDs have an almost infinite write count (they're even slower than SD cards, but don't burn out). Continue at your own peril! I haven't tested with the 512 MB version of the newer Raspberry Pi. I also have no idea why WSPR needs that much RAM. Here's what I get when trying to load WSPR without the swap file: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/RPi_WSPR_RunNoSwap.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/RPi_WSPR_RunNoSwap.png" width="600" class="aligncenter"></a> The first thing to do is to create the swap file. You need an empty file, all zeros, somewhere in the file system. I decided to create a 512 MB swap space, giving me a total of around 700 MB of 'RAM'. 512 MB * 1024 bytes = 524288 blocks. Use <i>dd</i> to create the file: <blockquote> sudo dd if=/dev/zero of=/var/swap512 bs=1024 count=524288 </blockquote> Then you need to make the file a swap file: <blockquote> mkswap /var/swap512 </blockquote> You then need to change the ownership and permissions of the swap file: <blockquote> sudo chown root:root /var/swap512 sudo chmod 0600 /var/swap512 </blockquote> Finally, turn the swap files on. You will need to do this <b>every time you reboot</b> your Pi, or add the swap file to your <i>/etc/fstab</i> file to do it for you: <blockquote> sudo swapon -a sudo swapon /var/swap512 </blockquote> And there you have it. You've now got a swap file of 512 MB and it's enabled. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/RPi_WSPR_SwapSetup.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/RPi_WSPR_SwapSetup.png" width="600" class="aligncenter"></a> <h1>Running with Swap</h1> Now we can run WSPR as expected. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/RPi_WSPR_RunSwap.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/RPi_WSPR_RunSwap.png" width="600" class="aligncenter"></a> We can peak at how much CPU and RAM WSPR is using with the <i>ps</i> command. This command is a kludge of various commands, but it shows the details for WSPR (python): <blockquote> ps aux > temp; head -n 1 temp; grep wspr temp; USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND pi 5309 14.2 13.3 550064 25260 pts/1 Sl+ 22:34 0:46 python -O wspr.py The above information tells us that WSPR is using 14.2% of the CPU and 13.3% of the RAM. However it tells us that it's allocated 550,064 KB.</blockquote> Running <i>free</i> shows how much memory is free: <blockquote> free -m total used free shared buffers cached Mem: 184 172 12 0 7 100 -/+ buffers/cache: 64 120 Swap: 611 0 611 </blockquote> This tells us that the swap usage is 0. The computer isn't using the swap we've created; but, it can allocate that if it decides something is more deserving. <h1>Other Useful Bits</h1> Try installing <i>gnome-alsamixer</i> for graphical audio mixer controls in LXDE. You can also use <i>alsamixer</i> on the command line to control the sound cards. I use a cheap USB sound card to interface to my <a href="http://new.george-smart.co.uk/icom_ic_7000">Icom IC-7000</a>. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/RPi_WSPR_AudioMixers.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/RPi_WSPR_AudioMixers.png" width="600" class="aligncenter"></a> <h1>Receiving on 30m</h1> At the time of writing the above section, I wasn't able to receive much on 30m. However, I left the RPi running overnight and it had gathered a good few signals. The antenna here is just a short wire around the window frame, un-tuned. The main antenna was on <a href="http://new.george-smart.co.uk/472_khz_wspr">472 kHz WSPR</a>. The signals are weak, but the decode process is working! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/RPi_WSPR_RX30m.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/RPi_WSPR_RX30m.png" width="600" class="aligncenter"></a> With a larger number of signals received per 2 minute time interval, I have noticed the <i>decoding</i> process taking around a minute for about 5 weak signals. I am unsure how long this process would take were there more stations or if they were weaker still. Typically, the decode process takes around 5 seconds. <h1>FunCube Dongle</h1> <b>THIS SECTION IS NOT FINISHED YET!</b> Before we get too far into this, it is important to have a good, clean, power supply. I made a linear PSU (<a href="http://new.george-smart.co.uk/high_current_5v_regulator">High Current 5V Regulator</a>) to power the Pi and thus FCD and up converter. After this, we come to the software. The first thing we need to do here is to be able to control the FCD's local oscillator, and the program I find best to do that is <a href="http://www.oz9aec.net/index.php/funcube-dongle/qthid-fcd-controller">OZ9AEC's Qthid</a>. Ideally, I'd like to compile the latest version from source code here, but having made several attempts to compile version 4 of Qthid on the RPi, I have given up. Every version seems to compile but none ever connect with the FCD. The version in the repositories works fine, but is quite old. To compile this for the Raspberry Pi, we first need to get the source code. And to get this, we need to install GIT to download it. <blockquote> sudo apt-get update sudo apt-get install qthid-fcd-controller </blockquote> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/RPi_Qthid_ReposInstall.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/RPi_Qthid_ReposInstall.png" width="600" class="aligncenter"></a> This will take some time to complete and install, but once it does, you can quickly test to see if it's working! The <i>qthid-fcd-controller</i> package includes two binaries, <i>qthid</i> (version 3) and <i>qthid-2.2</i> (version 2.2). Version 3 seems somewhat intermittent (though I have seen it working). Version 2.2 works more reliably but is <i>even</i> older. As mentioned previously, I compiled version 4 which seems more responsive and quick, but it never sees the FCD despite the same version working flawlessly on my desktop. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/RPi_Qthid_RunningConnected.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/11/RPi_Qthid_RunningConnected.png" width="600" class="aligncenter"></a> If all goes well, then you should see (as above) the status of "FCD active" which tells us that Qthid has found the FunCube Dongle and is ready to roll! <b>THIS SECTION IS NOT FINISHED YET!</b> <b>FIXME_Category :Radio</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Computers</b> <b>FIXME_Category :RaspberryPi</b> <b>FIXME_Category :FunCube</b> Receiver Filter Sweep http://new.george-smart.co.uk/receiver_filter_sweep receiver_filter_sweep draft 5512 closed closed page 0 2016-10-12 22:02:45 This short experiment was inspired by a talk at the RSGB Convention 2016, given by Paul M0XPD of "<a href="http://m0xpd.blogspot.co.uk/">Shack Nasties</a>" fame. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/10/RX_Filter_Sweep_Setup.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/10/RX_Filter_Sweep_Setup.jpg" width="600" alt="FT817 Sweep" class="aligncenter"></a> Paul presented, amongst other things, the idea of using a DDS to sweep the RF input of a receiver and monitor the AF output. Plotting the RMS voltage of the output vs the input frequency shows the receiver filter shape: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/10/FT817_Filter_Shape.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/10/FT817_Filter_Shape.png" width="600" alt="FT817 Filters" class="aligncenter"></a> An Arduino did the work, with the USB connection returning results back for plotting. An AD9850 was used as the DDS RF source, and a Schottky diode detector was used to convert the audio AC to a DC value to be read by the Arduino ADC. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/10/RX_Filter_Sweep_Schematic.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/10/RX_Filter_Sweep_Schematic.jpg" width="600" alt="Sweep Schematic" class="aligncenter"></a> I will experiment a bit more with this when I get the time. I'd like to play with a radio that has DSP and look at the filter shapes a little more. Regarding the FT817, I hadn't realised it has only one filter by default; the CW goes through the same SSB filter; hence it having the same shape in the plot above. I have no idea why there is a lump on the side of the LSB filter. This is always observable. Research Log http://new.george-smart.co.uk/research_log page closed closed 0 2012-09-27 12:01:25 draft research_log 3616 My research log is now private access only. Sorry. Retirement http://new.george-smart.co.uk/retirement 1014 draft retirement 0 2010-11-16 05:05:23 page closed closed This page was moved here: <a href="http://new.george-smart.co.uk/time_until_retirement">Time Until Retirement</a>. <a href="/contact-me">Please report this message to the webmaster</a>. RF Devices and Subsystems http://new.george-smart.co.uk/rf_devices_and_subsystems page closed closed 0 2011-02-25 22:30:58 draft rf_devices_and_subsystems 1721 Not written. <b>FIXME_Category :Lecture Notes</b> <b>FIXME_Category :Academic</b> <b>FIXME_Category :Radio</b> Roamnet http://new.george-smart.co.uk/roamnet closed closed page 0 2011-02-25 22:04:56 roamnet draft 1710 <b>As of September 2010, UCL no-longer support the use of Roamnet, and advise users to switch to <a href="http://new.george-smart.co.uk/eduroam">Janet JRS Eduroam service</a>.</b> For information on using the Janet JRS Eduroam service under Linux, visit my <a href="http://new.george-smart.co.uk/eduroam">Eduroam</a> page. <h1>UCL’s Roamnet</h1> <center><b><i>Article date: 08/10/2008</b></i></center> This document aims to help you set up the Cisco VPN client that UCL uses for its Roamnet service. For people who don’t know, the internet system for any non IS (information Service) managed computers requires you to log in via a VPN (virtual private network). This ensures that only people who are authorised to do so, can access the university internet. This is usually a good thing. However, not if you are running Linux. As many more people are starting to use Linux, and many Netbooks, such as Asus’ EeePC (which is what I have, hence the investigation into the problem). <h1>Limitations of this approach</h1> There are a couple of limitations with this approach. Please read before you attempt. # Currently I have only managed to get the how-to done for Debian based systems. This includes Ubuntu and Xandros, which are common. Basically, if your system is Debian based, this will work fine. If not, it will still work. You will just need to meet the dependancies of the package. This is fundamentally having the openssl source libs. # This article describes ‘how to make it work’. It is not the cleanest, or best approach. It uses the open source version of the CiscoVPN Client, and is therefore not supported by Cisco. To be honest, there was no support for their existing client, hence this article. <h1>A few other points</h1> Before you go away smashing up your linux system, or complaining to me that it doesn’t work, bear in mind: # I didn’t try every combination of every program on every computer. It has worked on about 10 computers that I know. If you are having trouble, I can probably help you. You will need to submit some information using the feedback form. # If anything does go wrong, it wasn’t me! As I mentioned above, nothing here is in any way ‘dodgy’. # It has been known to crash the kernel on the Toshiba Satellite Pro U200. This is only case thus far. # I assume you know how to use linux enough to make, move, rename and delete directories/files, and that you understand how file permissions work. You should also understand how to use the sudo command. You should be able to extract compressed archives. # This cannot be done from inside UCL. You’ll have to set it up at home, and then take it in to test it. <h1>What you’ll need</h1> You need everything mentioned below - Links are provided here too, to ensure you have everything. This is the bare minimal: # A UCL username & password (or whatever university you attend) & permission to use said service. # Source code for vpnc0.5.1 - it must be version 0.5.1 or later. You need to modify the source, so no binaries. # You need to meet the dependencies for vpnc0.5.1. This includes OpenSSL0.9.8 # Configuration details for your VPN server. I have made a file for UCL Roamnet. It’s on my site, mentioned below. # The SSL Certificate for your VPN server. I cannot give you this. You’ll have to log in, and download it yourself. <h1>What to do</h1> So here we are. Ready? <ul> <li> Firstly make yourself a directory in your home folder to work in. I’ll assume you’ve called it vpnc.</li> <li> Download and extract the source code for vpnc0.5.1. You can get it from here.</li> <li> Inside the extracted code, open Makefile in an editor, as we need to modify it.</li> <li> Find the following section in the source code </li> <blockquote></ul> # Comment this in to obtain a binary with certificate support which is # GPL incompliant though. #OPENSSL_GPL_VIOLATION = -DOPENSSL_GPL_VIOLATION #OPENSSLLIBS = -lcrypto <ul> <li> Change the section to exactly: Its basically just removing the two hashes (#) from the lower two lines of the section. This enables the SSL stuff, which UCL Roamnet requires.</blockquote></li> </ul> <blockquote> # Comment this in to obtain a binary with certificate support which is # GPL incompliant though. OPENSSL_GPL_VIOLATION = -DOPENSSL_GPL_VIOLATION OPENSSLLIBS = -lcrypto <ul> <li> Save Makefile. This is all we needed to do.</blockquote></li> </ul> <ul> <li> Now we have to compile the vpnc client. This is the tricky bit. This is the only complicated step. vpnc0.5.1 has dependencies, as I mentioned above. You have to meet those. As far as I know, you need to install the following programs, using apt-get.</li> <li>*gcc</li> <li>*build-essential</li> <li>*zlib1g</li> <li>*zlib1g-dev</li> <li>*libgpg-error0</li> <li>*libssl0.9.8</li> <li>*libgpg-error-dev</li> <li>*libssl-dev</li> <li>*libgcrypt-dev</li> <li> If the package build-essential is not available, you’ll need to get the packages contained in the metapackage. It contains stuff like libc6, and other standard C complier files. Check on Google if you are unsure.</li> <li> Take a deep breath, and then type make. This file tells the computer to compile the VPN client. If you are lucky and have satisfied all the dependencies, it will work. You’ll get a few warnings, but no errors. If you get errors then you’ll need to work out what is missing from your system. As I mentioned before, it worked for me. I haven’t tried everything. Above is a list of what I had to install. You may not have everything that my computers had.</li> <li> Now you need to install the VPN client. Type sudo make install. This will install the program into the computer.</li> <li> Once this finishes, try a quick test. Just type the command sudo vpnc and it should complain with something like:</li> <blockquote></ul> george@laptop:~/vpnc$ sudo vpnc vpnc: unknown host `<gateway>' george@laptop:~/vpnc$ <ul> <li> This is a good thing. If you get anything other that the above, then something hasn’t worked. You should check your previous steps. You will probably have unmet dependencies. Recheck the output of the make command.</blockquote></li> </ul> <ul> <li> Follow these two links: roamnet.conf and rootcert - You will have to log into UCL for rootcert. Save them both to /etc/vpnc. You will need to be root for this.</li> <li> You then need to edit (as root) roamnet.conf replacing the section saying <YOUR-USERNAME> with your actual username. Save the file. You should check its permissions are 600. It is also worth checking that rootcert’s permissions are 600 too. Both should be owned by root.</li> <li> Ensure you are connected to the Roamnet Wireless network, with the key provided by IS.</li> <li> When you are ready, you can try to connect to the VPN server by typing sudo vpnc roamnet into the terminal. You will be prompted for your password. And then, if you are lucky:</li> <blockquote></ul> george@laptop $ sudo vpnc roamnet.conf Connect Banner: | Welcome to the RoamNet Service Version 2 (KLB). | | Access to and use of this service is restricted to authorised individuals ....... | | Please see http://www.ucl.ac.uk/is/roamnet/status.htm for service details and history. VPNC started in background (pid: X)... george@laptop $ <ul> <li> When you have finished, you should issue the command sudo vpnc-disconnect. This will hang up cleanly - its better than shutting down your computer with it all running.</blockquote></li> </ul> <h1>Sources</h1> <ul> <li> VPNC Source Code & development </li> :<a href="http://www.unix-ag.uni-kl.de/~massar/vpnc/vpnc-0.5.1.tar.gz">http://www.unix-ag.uni-kl.de/~massar/vpnc/vpnc-0.5.1.tar.gz</a></ul> <ul> <li>Information on VPNC with Linux</li> :<a href="http://nic.phys.ethz.ch/readme/96">http://nic.phys.ethz.ch/readme/96</a></ul> <ul> <li> Connecting to a Cisco VPN using VPNC</li> :<a href="http://www.debuntu.org/how-to-connect-to-a-cisco-vpn-using-vpnc">http://www.debuntu.org/how-to-connect-to-a-cisco-vpn-using-vpnc</a></ul> <h1>Footnotes</h1> If you spot any mistakes, or can suggest any improvements, etc., please <b>FIXME_User :George|Contact Me</b>. A special thank you to Stelios Vitorakis who helped me to test the setup on various machines. <b>FIXME_Category :Computers</b> <b>FIXME_Category :Academic</b> SAA1064 http://new.george-smart.co.uk/saa1064 draft saa1064 1706 closed page closed 0 2011-02-25 21:54:16 At a Ham Radio rally some time ago, I bought some of these huge 7-segment-display modules. They have character height of roughly 8 centimetres with four digits. Anyone who knows me will know I am fascinated with time and especially clocks of any variety. These were a must have for me, and I got them at a cheap price. I have no idea of their intended purpose. Best I could think of was for the prices of fuel at petrol stations - you know - on the big road-side signs. Anywho, it doesn't matter. Here's one of them: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/7SEG_Bench.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/7SEG_Bench.jpg" width="600" alt="The Display Panel" class="aligncenter"></a> <center>The display panel</center> <h1>Connections</h1> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/SAA1064_Pinout.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/SAA1064_Pinout.png" width="398" alt="SAA1064 Pinout" class="aligncenter"></a> <center>Philips (NXP) SAA1064 Pinouts</center> The driver chip, the <a href="http://www.nxp.com/pip/SAA1064_CNV.html">Philips (NXP) SAA1064</a>, is a 4-digit LED-driver with I2C-bus interface. The datasheet for the chip is availaible on the <a href="http://www.nxp.com/documents/data_sheet/SAA1064_CNV.pdf">Philips website</a>. The image above shows the connections to the IC; it was taken from the datasheet. I am concerned with the data pins, SDA (Serial Data Line) <a href="23]">and SCL (Serial Clock Line) [24</a>. These are the I^2C bus connections. It is important to note that the I^2C bus is an open collector bus, and so pullup resistors are required. As I am an animal, I decided that the best course of action would be to solder directly to the SAA1064 IC. The tracks on the PCB were very thin and the board already had a few dry joints and broken components where it had been transported to and from the rallies. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/7SEG_IC_Wiring.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/7SEG_IC_Wiring.jpg" width="600" alt="SAA1064" class="aligncenter"></a> <center>My Animal Tactics</center> At the other end of the wires connected my <a href="http://new.george-smart.co.uk/velleman_k8055">Velleman K8055</a>. I used this to interface to the computer. Not the most efficient way of going about the problem, but it worked none the less. The I2C bus is connected to the SAA1064 as detailed above and at the <a href="http://new.george-smart.co.uk/velleman_k8055">Velleman K8055</a> to outputs Q1 and Q2. I used the two DAC to provide 5V to act as the I^2C bus pull-up voltage. The two resistors (visible below) as as the bus pull-ups. The I^2C bus is an open-collector bus, which allows for sophisticated protocol features such as bit-stretching (none of which are implemented in my code - see further down). The clamp line prevents over-voltages from damaging the <a href="http://new.george-smart.co.uk/velleman_k8055">Velleman K8055</a> board. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/7SEG_K8055_Wiring.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/7SEG_K8055_Wiring.jpg" width="600" alt="K8055 Connections" class="aligncenter"></a> <center>Connections to <a href="http://new.george-smart.co.uk/velleman_k8055">Velleman K8055</a></center> <h1>Segment Mapping</h1> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/7SEG_Map.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/7SEG_Map.png" width="134" alt="7-segment character map" class="aligncenter"></a> The digit byte sent to the SAA1064 represents the 7 segments of the display. The 8th bit is the decimal point. I added a green LED to my board, as the decimal point. It breaks up the display very slightly. I had to map the 7 segments out to make numbers. These can be found in the code for this project inside the variable "character_map[]". Here is how I worked it out. <center><table cellpadding="2" border="1" > <tr><td><b>Digit</b><td>colspan="8"|<b>Segment</b></td></tr><tr><td><b>#</b></td><td><b>A</b></td><td><b>B</b></td><td><b>C</b></td><td><b>D</b></td><td><b>E</b></td><td><b>F</b></td><td><b>G</b></td><td><b>D.P.</b></td></tr><tr><td>0</td><td>1</td><td>1</td><td>1</td><td>1</td><td>1</td><td>1</td><td>0</td><td>0</td></tr><tr><td>1</td><td>0</td><td>1</td><td>1</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr><tr><td>2</td><td>1</td><td>1</td><td>0</td><td>1</td><td>1</td><td>0</td><td>1</td><td>0</td></tr><tr><td>3</td><td>1</td><td>1</td><td>1</td><td>1</td><td>0</td><td>0</td><td>1</td><td>0</td></tr><tr><td>4</td><td>0</td><td>1</td><td>1</td><td>0</td><td>0</td><td>1</td><td>1</td><td>0</td></tr><tr><td>5</td><td>1</td><td>0</td><td>1</td><td>1</td><td>0</td><td>1</td><td>1</td><td>0</td></tr><tr><td>6</td><td>1</td><td>0</td><td>1</td><td>1</td><td>1</td><td>1</td><td>1</td><td>0</td></tr><tr><td>7</td><td>1</td><td>1</td><td>1</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr><tr><td>8</td><td>1</td><td>1</td><td>1</td><td>1</td><td>1</td><td>1</td><td>1</td><td>0</td></tr><tr><td>9</td><td>1</td><td>1</td><td>1</td><td>0</td><td>0</td><td>1</td><td>1</td><td>0</td></tr><tr><td>A</td><td>1</td><td>1</td><td>1</td><td>0</td><td>1</td><td>1</td><td>0</td><td>0</td></tr><tr><td>B</td><td>0</td><td>0</td><td>1</td><td>1</td><td>1</td><td>1</td><td>1</td><td>0</td></tr><tr><td>C</td><td>1</td><td>0</td><td>0</td><td>1</td><td>1</td><td>1</td><td>0</td><td>0</td></tr><tr><td>D</td><td>0</td><td>1</td><td>1</td><td>1</td><td>1</td><td>0</td><td>1</td><td>0</td></tr><tr><td>E</td><td>1</td><td>0</td><td>0</td><td>1</td><td>1</td><td>1</td><td>1</td><td>0</td></tr><tr><td>F</td><td>1</td><td>0</td><td>0</td><td>0</td><td>1</td><td>1</td><td>1</td><td>0</td></tr><tr><td>.</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>1</td></tr><tr><td></td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</tr> </table> </center> <h1>Code</h1> The code to run this via the <a href="http://new.george-smart.co.uk/velleman_k8055">Velleman K8055</a> and I^2C is here in C: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/K8055_I2C_SAA1024.tar.gz">K8055 I2C SAA1024 Code - C</a> This code is not amazingly well written. It does implement a poor version of the I^2C bus, write only. It could be easily extended to support reading too, but I didn't need it, so it never happened. At the moment, it will take the current system time and display it on to 4 7-segment displays. The bus runs very slow via the <a href="http://new.george-smart.co.uk/velleman_k8055">Velleman K8055</a>, due to the timings involved in the board. There is nothing that can be done about this. There are some very slight optimisations that can be made in the code, but these are minimal. <h1>Results</h1> Although the updating of the display takes around 2 seconds, due to the speed at which the <a href="http://new.george-smart.co.uk/velleman_k8055">Velleman K8055</a> board can be updated, the display still works perfectly. The clock scenario works well. The display only updates every minute, and it is only written to if the minute has changed. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/7SEG_K8055_Clock.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/7SEG_K8055_Clock.jpg" width="600" alt="Clock Working" class="aligncenter"></a> <center>16:10 :)</center> The control software running in a terminal window. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/K8055_Software.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/K8055_Software.png" width="600" alt="Control Software Running" class="aligncenter"></a> <center>The Software running in a terminal window, 64-bit Ubuntu</center> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Programming</b> <b>FIXME_Category :Linux</b> <b>FIXME_Category :Clocks</b> Samsung Galaxy S2 Flashing http://new.george-smart.co.uk/samsung_galaxy_s2_flashing samsung_galaxy_s2_flashing draft 3030 closed page closed 0 2012-01-12 14:56:43 This page is just a few links that you may find helpful if flashing your Samsung Galaxy S2. <ul> <li> <a href="http://new.george-smart.co.uk/samsung_galaxy_s2_usb_jig">Samsung Galaxy S2 USB JIG</a></li> : This page details how I made a USB JIG for the SGS2; it allows you to restore the <i>flash counter</i> to 0 and to un-brick a dead phone.</ul> <ul> <li> <a href="http://www.jayceooi.com/2011/08/08/how-to-remove-yellow-triangle-on-samsung-galaxy-s2/">Re-secure Kernel after flashing unofficial kernel (with JIG)</a></li> : This page uses a <a href="http://new.george-smart.co.uk/samsung_galaxy_s2_usb_jig">USB JIG</a> to restore the official kernel, or to unbrick a ruined device.</ul> <ul> <li> <a href="http://www.jayceooi.com/2011/08/10/how-to-remove-yellow-triangle-on-samsung-galaxy-s2-without-usb-jig-video/">Re-secure Kernel after flashing unofficial kernel (without JIG)</a></li> : This restores the official kernel <b>without</b> a <a href="http://new.george-smart.co.uk/samsung_galaxy_s2_usb_jig">USB JIG</a> via the Odin flasher.</ul> <ul> <li> <a href="http://forum.xda-developers.com/showthread.php?t=1075278">Official Samsung Galaxy S2 (i9100) ROMs/Kernels/Firmware</a></li> : This page on the XDA developers forum homes all of the stock firmwares and kernels for the SGS2 devices.</ul> <b>FIXME_Category :Phones</b> Samsung Galaxy S2 USB JIG http://new.george-smart.co.uk/samsung_galaxy_s2_usb_jig samsung_galaxy_s2_usb_jig draft 3031 closed page closed 2012-01-12 14:57:12 0 This page details how I made my Samsung Galaxy S2 USB JIG. This device lets you un-brick a dead SGS2 device by getting you into the download mode when the usual button combinations (Vol. Down + Home + Power) have failed. This jig can also be used to restore the flash counter. If when you connect the jig the phone states <i>Factory Mode</i> then you will need to flash an older boot-loader first. Jayce Ooi's <a href="http://www.jayceooi.com/2011/08/08/how-to-remove-yellow-triangle-on-samsung-galaxy-s2/">webpage</a> and <a href="http://www.youtube.com/watch?v=siExJV4k7Oc">video</a> show how to use the Jig effectively. The comments on his page may also be of interest to you. This page aims to explain how to make a jig; it does not go into how to use it. <h1>Buying One</h1> You can buy one on eBay: <a href="http://www.ebay.co.uk/sch/i.html?_nkw=Samsung+Galaxy+S2+USB+JIG">A quick eBay search for Samsung Galaxy S2 USB JIG</a> should provide some results. <h1>Making One</h1> In simple terms, all the JIG does is present the phone a 300K&Omega; resistance between the ID (pin #4) and GND (pin #5) of the microUSB connector at the foot of the device. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/SGS2_Jig_Connector.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/SGS2_Jig_Connector.png" width="400" alt="Connector" class="aligncenter"></a> First of all, I had to acquire a microUSB connector to connect to the phone. You can buy these in electronics shops, or alternately as I did, butcher a microUSB cable - I used an old Nokia cable I had which didn't work for data any more but still worked for charging (I assume one of the data wires had broken in the cable). Taking the microUSB end apart revealed a solderable end as you have were you to purchase a connector. Go slowly and carefully if you're cutting, as you don't want to destroy your connector. <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/SGS2_Jig_ConnectorOrig.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/SGS2_Jig_ConnectorOrig.jpg" width="300" alt="Cable" class="aligncenter"></a></tr> </table> </center> As I didn't have a 300K&Omega; resistor in my <a href="http://new.george-smart.co.uk/workshop">workshop</a>, I used 3 x 100K&Omega; resistors in series to add up. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/SGS2_Jig_Resistors.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/SGS2_Jig_Resistors.jpg" width="400" alt="Resistors in Series" class="aligncenter"></a> After soldering the resistors in series, I slid some heat-shrink tube over the resistors to provide insulation and folded it into a 'U' shape to fit back to the connector. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/SGS2_Jig_Heatshrink.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/SGS2_Jig_Heatshrink.jpg" width="400" alt="Folded Resistors with Heatshink" class="aligncenter"></a> I then soldered the resistors between pins #4 (ID) and #5 (Ground). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/SGS2_Jig_Finished.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/SGS2_Jig_Finished.jpg" width="400" alt="Finished Jig" class="aligncenter"></a> You could also add some heat-shrink around the entire thing to add physical strength to the JIG, but I wasn't too concerned about this. <b>FIXME_Category :Phones</b> <b>FIXME_Category :Electronics</b> Satellite Communications http://new.george-smart.co.uk/satellite_communications closed page closed 0 2011-02-25 22:30:46 satellite_communications draft 1720 Not written. <b>FIXME_Category :Lecture Notes</b> <b>FIXME_Category :Academic</b> <b>FIXME_Category :Radio</b> Scripts http://new.george-smart.co.uk/scripts scripts draft 1744 closed closed page 0 2011-02-25 23:04:21 When using Linux, I tend to write many scripts to automate actions, or to generally make life easier. Some of these are useful, others are not. While in the pub with friends, I was asked for various scripts I had written. I thought these to be of no use to anyone, but I was proved wrong. So, by popular demand, and in the hope that someone else will find them useful, I have uploaded them here, along with relevant comments. Use the <i>Programming</i> Dropdown from the navigation bar above. <ul> <li> <a href="http://new.george-smart.co.uk/easysms_launcher">EasySMS Launcher</a> Script allows for easy use of <a href="http://code.google.com/p/androideasysms/">EasySMS</a> (sending SMS via Android Phones from a PC) over WiFi or USB.</li> <li> <a href="http://new.george-smart.co.uk/internet_sharing_script">Internet Sharing Script</a> allows for an internet connection to be shared out between multiple computers.</li> </ul> <b>FIXME_Category :Computers</b> <b>FIXME_Category :Programming</b> SD Log on Linux & OS X http://new.george-smart.co.uk/sd_log_on_linux___os_x closed page closed 0 2013-05-22 00:15:35 sd_log_on_linux___os_x draft 4518 <a href="http://www.webshed.org">Dave (G7UVW)</a> and I often operate in the <a href="http://www.rsgbcc.org/">UKAC</a> VHF and UHF contests as <a href="http://www.qrz.com/db/g3xbf">G3XBF/p</a> from the Tawney Farm Caravan. I typically use an Apple MacBook Pro or a Netbook running Linux, but prefer to use <a href="http://www.ei5di.com/">SDV Log by EI5DI</a>, a Windows console program, to log with. It is important to note here that SDV log is <i>not</i> a DOS program but a Win32 application. It is a Windows program and will not run in DOSBox for example. SDV is the free VHF version of SD Log. Fortunately the <a href="http://www.winehq.org/">Wine project</a> comes to our rescue. Wine is a compatibility layer capable of running Windows applications on several POSIX-compliant operating systems, such as Linux, Mac OSX, & BSD. <h1>Mac OS X</h1> The first thing I did was download SDV from <a href="http://www.ei5di.com/">EI5DI's website</a>. Next you need to download Wine for OS X. I downloaded <a href="http://sourceforge.net/projects/darwine/">Darwine from Sourceforge</a>. Install this from the DMG image as a standard OS X application. Once Wine is installed, you can run <i>sdvsetup.exe</i> from within OS X graphical environment. The installer is a graphical program so the standard wine program will work, which is invoked when you click on the installer. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/SDV_OSX_Setup.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/SDV_OSX_Setup.png" width="600" alt="OS X" class="aligncenter"></a> Once it's installed, you will notice that clicking on the icon doesn't start the program - or at least it doesn't appear to. That's because the actual logging software is a console program, and there is special variation of Wine called <i>wineconsole</i> for this. If you installed everything (Wine and SDV) to their default locations, the following should work in your terminal. <blockquote> /Applications/Wine.app/Contents/Resources/bin/wineconsole ~/.wine/drive_c/SD/SDV.EXE </blockquote> The wineconsole application resides in the Applications > Wine.app folder. SDV installs to C:\SD (which translates to .wine/drive_C/SD from your home directory for Wine). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/SDV_OSX_Running.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/SDV_OSX_Running.png" width="600" alt="OS X" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/SDV_OSX_Running2.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/SDV_OSX_Running2.png" width="600" alt="OS X" class="aligncenter"></a> From here on, it's business as usual! Server http://new.george-smart.co.uk/server 5235 draft server 2015-03-14 02:08:24 0 page closed closed This server used to be home hosted. In fact if you look through this page's history you will see the details. On the 22nd November 2013, it was moved on to an <a href="http://aws.amazon.com/ec2/">Amazon EC2</a> micro instance. Using the EC2 instance as a VPS with around 600 MB of RAM and the equivalent of a 2.3 GHz single core Xeon CPU worked okay, but it was working out an expensive option. On the 3rd of February the server was again moved to <a href="https://bitfolk.com/">BitFolk</a> located in The Docklands, east London. The BitFolk VPS has a 2.2 GHz AMD core with 480MB of RAM. This has improved the server stability somewhat. <a href="http://www.george-smart.co.uk/phpsysinfo">System information</a> <h1>CPU Use</h1> <html><center><img src="http://george-smart.co.uk/graphs/stats/cpu_1h.png"></center></html> <html><center><img src="http://george-smart.co.uk/graphs/stats/cpu_6h.png"></center></html> <h1>RAM Use</h1> <html><center><img src="http://george-smart.co.uk/graphs/stats/mem_1h.png"></center></html> <html><center><img src="http://george-smart.co.uk/graphs/stats/mem_6h.png"></center></html> <h1>Ethernet Use</h1> <html><center><img src="http://george-smart.co.uk/graphs/stats/eth0_1h.png"></center></html> <html><center><img src="http://george-smart.co.uk/graphs/stats/eth0_1d.png"></center></html> <h1>Repeater Link Interface Activity</h1> <html><center><img src="http://george-smart.co.uk/graphs/stats/tap0_1h.png"></center></html> <html><center><img src="http://george-smart.co.uk/graphs/stats/tap0_1d.png"></center></html> <!-- This website is hosted on a private server on a domestic BT (British Telecom) ADSL broadband line. The computer runs Apache2 webserver which hosts the pages you are currently viewing; AX.25 Node and xFBB for <a href="http://new.george-smart.co.uk/packet">Packet Radio</a> and <a href="http://new.george-smart.co.uk/aprs">APRS</a> operation; and <a href="http://new.george-smart.co.uk/echolink">EchoLink</a> for Amateur Radio Internet Repeater Linking. It also runs several other services such as FTP, SVN, WebDAV and SSH to name a few. See <a href="http://www.george-smart.co.uk/phpsysinfo">PHPSysInfo</a>. The server is nothing special - It's an old office PC (Dell Optiplex GX520) with the following specs: <ul> <li> Intel Pentium 4 (HT) 2.80GHz</li> <li> 3.4 GB RAM & 1GB SWAP</li> <li> WD 120GB HDD & Toshiba 80GB Backup HDD</li> <li> <a href="http://www.ubuntu.com">Ubuntu</a> Server 12.10</li> </ul> <h1>Pictures</h1> The image below is of the messy server and radio cupboard. You can see the Dell workstation I use as a server, the network switch, the extractor fan and dust! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/03/ServerCupboardApr2011.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/03/ServerCupboardApr2011.jpg" width="600" alt="Server Cupboard & Radio Gear" class="aligncenter"></a> The labelled picture below is a little out dated. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/03/ServerCupboard.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/03/ServerCupboard.jpg" width="600" alt="Server Cupboard & Radio Gear" class="aligncenter"></a> <table cellpadding="2" > <tr><td><b>1</b></td><td>Power Supply 1 (12V/10A)</td><td>Powers TNCs (4 & 5) and <a href="http://new.george-smart.co.uk/packet">Packet</a>/<a href="http://new.george-smart.co.uk/aprs">APRS</a> Radios (2 & 6)</td></tr><tr><td><b>2</b></td><td><a href="http://new.george-smart.co.uk/puxing">Puxing</a> PX-777 HandHeld</td><td>Tuned to 144.800 MHz for <a href="http://new.george-smart.co.uk/aprs">APRS</a></td></tr><tr><td><b>3</b></td><td>Power Suppy 2 (12V/8A)</td><td>Powers <a href="http://new.george-smart.co.uk/echolink">EchoLink</a> Radio (7) and cooling fan (8)</td></tr><tr><td><b>4</b></td><td>Kantronics KPC-9612 TNC</td><td>Connected to Radio (2) for <a href="http://new.george-smart.co.uk/aprs">APRS</a> interface to the PC (10)</td></tr><tr><td><b>5</b></td><td>AEA PK88 TNC</td><td>Connected to Radio (6) for <a href="http://new.george-smart.co.uk/packet">Packet</a> interface to PC (10)</td></tr><tr><td><b>6</b></td><td>Tait T500 ex-PMR</td><td>Tuned to 144.850 MHz for <a href="http://new.george-smart.co.uk/packet">Packet</a></td></tr><tr><td><b>7</b></td><td>Tait T500 ex-PMR</td><td>Tuned to 434.525 MHz for <a href="http://new.george-smart.co.uk/echolink">EchoLink</a></td></tr><tr><td><b>8</b></td><td>Cooling fan</td><td>Forces air through (7)'s heatsink</td></tr><tr><td><b>9</b></td><td>Home made <a href="http://new.george-smart.co.uk/echolink">EchoLink</a> interface</td><td>Links Radio (7) to PC (10)</td></tr><tr><td><b>10</b></td><td>Dell Optiplex GX520</td><td>Server, as specified above</td></tr><tr><td><b>11</b></td><td>Netgear 10/100 Switch</td><td>Links PC (10) to routers inside house and other workshop computers</td></tr><tr><td><b>12</b></td><td>Extraction Fan</td><td>Blows hot air from top of cupboard outside of workshop (or into the workshop in the winter)</tr> </table> --> Server Rebuild Dec 2015 http://new.george-smart.co.uk/server_rebuild_dec_2015 2015-12-29 20:35:06 0 closed page closed 5407 draft server_rebuild_dec_2015 The server hosting this website was rebuilt from backups on 27th December 2015 following a data loss. As such, some of the contest may not be displayed correctly, and some features of the site may not work. If you have the time, please <a href="http://new.george-smart.co.uk/contact_me">Contact me</a>, mentioning the site the page that is broken. It only takes a few seconds, and it would really help me out! Thanks George, M1GEO. Server administrator. Shack http://new.george-smart.co.uk/shack page closed closed 0 2014-11-18 11:12:56 draft shack 5142 This page was moved here: <a href="http://new.george-smart.co.uk/the_shack">The Shack</a>. <a href="/contact-me">Please report this message to the webmaster</a>. Silly Money http://new.george-smart.co.uk/silly_money 3222 draft silly_money 2012-03-18 15:11:56 0 closed page closed By folding any notes though the eyes, and pushing the centre back in order to create the illusion of depth, these two silly illusions can be created. This image is not edited in any way. <h1>Happy</h1> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/03/Moneyfoldedhappy.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/03/Moneyfoldedhappy.jpg" width="640" alt="Happy Faced Queen :)" class="aligncenter"></a> <h1>Sad</h1> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/03/Moneyfoldedsad.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/03/Moneyfoldedsad.jpg" width="640" alt="Sad Faced Queen :(" class="aligncenter"></a> <b>FIXME_Category :Silly</b> <b>FIXME_Category :Money</b> SMS Usage http://new.george-smart.co.uk/sms_usage 0 2012-04-21 01:40:07 closed page closed 3394 sms_usage draft One of the applications on my android phone backs up all my SMS (text) messages to my GMail (Google Mail) account. This in turn is synchronised with my <a href="http://new.george-smart.co.uk/server">Server</a>. Ultimately, these SMS messages get filed away on my computer, never to be looked at again; or so I thought! Today, while waiting for something interesting to happen, I decided to analyse these messages and plot the times of day that I send and receive text messages most. Below are two graphs showing the days of the month and the times of day that I use my phone the most. All done for no other reason that I wanted to see what the graphs would look like! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/SMS_Use_Dates.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/SMS_Use_Dates.png" width="600" alt="Days of the Month" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/SMS_Use_Times.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/SMS_Use_Times.png" width="600" alt="Times of the Day" class="aligncenter"></a> <b>FIXME_Category :Phones</b> Softrock http://new.george-smart.co.uk/softrock closed page closed 2012-04-21 01:04:12 0 softrock draft 3351 Under construction. <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Radio</b> <b>FIXME_Category :ToDo</b> Software http://new.george-smart.co.uk/software software draft 1730 closed page closed 2011-02-25 22:40:48 0 Only this has been written yet. I will get around to this page soon. <b>FIXME_Category :Software</b> <b>FIXME_Category :Programming</b> Soldering Iron Temperature Experiment http://new.george-smart.co.uk/soldering_iron_temperature_experiment draft soldering_iron_temperature_experiment 5266 closed page closed 2015-06-17 16:00:23 0 This silly project stemmed from an idea I had a few years back. I have thought about it for a while now, and then a few days back I decided to give it a go. I wanted to see if I could use a soldering iron as a tool for measuring the relative temperature in a room. Knowing that the 24v AC Weller iron I have has a simple bi-metallic thermostat, I guessed that I could use the duty cycle of the heater as a means to measure the temperature. I put a small (1&Omega;) resistor in-line with the soldering iron heater element, causing around 800 mV drop when the heater was powered, and 0 V drop when the heater was off. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/06/IronExp_Setup.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/06/IronExp_Setup.jpg" width="500" alt="Configuration of Hardware on Desk" class="aligncenter"></a> Using an opto-coupler powered from this voltage drop, I was able to feed a signal into the Arduino to display if the heater was on or not. This was a little more complex due to the system being AC powered. Instead of a nice clean TTL pulse train, I received a series of fast pulses (50Hz) since the heater is AC powered. This made the Arduino code a little tricky to write, but essentially is just a few more lines to detect the type of pulse received and then send an RS232 packet on each change of heater state. <blockquote> void setup() { //start serial connection Serial.begin(115200); //configure pin2 as an input and enable the internal pull-up resistor pinMode(2, INPUT_PULLUP); pinMode(13, OUTPUT); Serial.println("Iron Experiment - George Smart M1GEO"); } int sensorVal = 0; int heater = 0; int heaterOld = 0; unsigned long timeStart = 0; unsigned long timeStop = 0; void loop() { // Wait for a 1 while (digitalRead(2) == LOW); // Wait until 0.75 period delay(15); heaterOld = heater; // Read pin to see if we've changed state if (digitalRead(2) == LOW) { heater = 1; //change of state indicates AC and thus heater on } else { heater = 0; //no change tells us heater off this poll } if (heaterOld != heater) { // if the heater state has changed since the last test, then report it! digitalWrite(13, heater); Serial.print(millis()); Serial.print(","); Serial.println(heater); } } </blockquote> Once running, the Arduino outputs truples of data, in the form {timestamp,heater}, for example {4312,0}. These timestamps can be used to calculate the heater duty cycle. Below is a screenshot of the PC receiving the Arduino output. This text is also dumped to a CSV file. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/06/IronExp_Console.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/06/IronExp_Console.png" width="500" alt="Arduino Console" class="aligncenter"></a> Once finished, I used a simple MATLAB script to take the data, and work out the duty cycle of the heater. I.e the ratio of time the heater spends powered. This is done by looking for the heater on states in the captured data, and then looking for the heater off (giving the time the heater is on for) and the time until the heater next returns on (giving the total period between heating powers). From the ratio of these two, we get a duty cucle for the heater. <blockquote> % Iron Experiment - George Smart M1GEO rawdata = load('data.csv'); samples = length(rawdata); dutydata = <a href="];"> smpldata = [</a>; for n = 1:1:(samples-2) if (rawdata(n,2) == 1) a = rawdata(n,1); b = rawdata(n+1,1); c = rawdata(n+2,1); period = c-a; heater = b-a; duty = (heater/period)*100; smpl = a; dutydata = <a href="dutydata">duty</a>; smpldata = <a href="smpldata">smpl</a>; end end % plot results figure(1); hold on; plot((smpldata/1000)/3600, 100-dutydata, 'Color', <a href="0.75,">0.75, 0.75</a>) % raw data plot((smpldata/1000)/3600, smooth(100-dutydata,100),'k') % smoothed data legend('Raw', 'Smoothed') title('Relative Temperature measured by Soldering Iron Heater Energy') xlabel('Experiment Time / Hours since Midnight on Day 1') ylabel('Inverse Heater Duty Cycle / Percent') hold off; </blockquote> This code outputs the graph you see below. The grey is the raw data, plotted as the inverse of the duty cycle, since the hotter the room, the lower the required duty cycle. The black line plots the smoothed (100 sample moving average) data. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/06/IronExp_Result.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/06/IronExp_Result.png" width="560" alt="Temperature Graph" class="aligncenter"></a> The next step is collate this data with actual temperature data over the same period. I expect a Dallas-Maxim DS18B20 1-wire sensor could also be attached to the Arduino, to take temperature samples when the Iron is operating. <h1>Attempt 2</h1> So after more than a year later, I am updating this page. I bought a new Xytronic 168-3CD soldering station, and decided that I would re-try the experiment with (a) a better controlled soldering station and (b) measuring the temperature data. I used some fans to even out the air temperature in a spare house room and had the small windows open for a week. The new soldering iron had a heater LED, so I used that with an LDR to provide a signal into the Arduino. The code used is the same as before, since the LDR provided more than 2M&Omega;resistance in the dark, and around 3k&Omega; with the heater LED on - this was enough to provide a digital signal at the Arduino IO, without touching the new iron station. A air temperature sensor was fitted on the Arduino, with code added to sample and report that too. The code worked great, and we collected the following graphs <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/06/IronExp_Result2_1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/06/IronExp_Result2_1.png" width="560" alt="Temperature Graph" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/06/IronExp_Result2_2.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/06/IronExp_Result2_2.png" width="560" alt="Temperature Graph" class="aligncenter"></a> As you can see, the graphs don't really show much correlation between temperature and iron heater duty cycle. The next attempt will be to try the setup in an outside store, and log to SD card for a few days... Sorted Linked List in C http://new.george-smart.co.uk/sorted_linked_list_in_c closed closed page 0 2012-02-16 15:57:57 sorted_linked_list_in_c draft 3131 This code is a sorted linked list in C. I was written for part of my <a href="http://new.george-smart.co.uk/phd">PhD</a> for keeping track of nodes in a <a href="http://new.george-smart.co.uk/contiki">Contiki</a> OS. The code here is in it's general form. I am no expert programmer, as the code will show, but it works, which is more than many others I could find. <b><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/M1GEO_SortedLinkedList_C.tar.gz">Source Code for Sorted Linked List in C</a></b> <blockquote> // George Smart // http://www.george-smart.co.uk/ // // Linked List example #include <stdlib.h> #include <stdio.h> // the list element node structure. Add more stuff if you want to. struct list_el { unsigned int id; // ID number struct list_el * next; // link pointer (where the next element is) }; // this allows us to refer to the above structure as a node. typedef struct list_el node; // This defines *head as our top element. This allows us to find our // begining element in the linked list. node *head; // This function takes an ID and adds it to a linked list, creating a new // list or updating an existing ID if it exists. void addNode(unsigned int id) { node *curr, *new; // Create and setup our new link new = (node *)malloc(sizeof(node)); if (new == NULL) { printf("Memory not available to create link. Exiting.\n"); exit (EXIT_FAILURE); } new->id = id; // If Head is NULL, the list doesn't yet exist, so we create one. if (head == NULL) { head = new; new->next = NULL; return; } // does our new element go before the first one? if (new->id < head->id) { new->next = head; head = new; return; } // if our element goes in the middle, this code will scan through // to find out exactly where it belongs. curr = head; // start at the begining node. while ( (curr->next != NULL) ) { if ((new->id < curr->next->id)) { if((new->id > curr->id)) { // this inserts the new node into the middle if // it ID doesn't already exist in the list new->next = curr->next; curr->next = new; return; } else { // This section happens if the node DOES already exist // In a real program you would update the nodes other // data in this section. free(new); // get rid of 'new', we don't need it. return; } } curr = curr->next; // move to the next node. } // if we still haven't found the place, add at the end. //check if it's a dupe of the last element or not if (curr->id == new->id) { // if it's the same don't do anything, because the node already // exists. In a real program you would update the nodes other // data in this section. return; } else { // else add the new element on the end. curr->next = new; new->next = NULL; return; } } void delNode(int a) { int done = 0; node *curr, *prev; curr = head; // If we try and delete a node before the list exists, we'd get SIGSEGV if (head == NULL) { //printf("Couldn't remove node ID %d. List doesn't exist!\n", a); return; } // does our first element need to be removed? If yes, do it. if (head->id == a) { free(head); head = head->next; done = 1; return; } // find where the node to be deleted exists. Notice we run ahead one // node, so we don't loose the pointer to the one before the deletee while ( (curr->next != NULL) ) { if (curr->next->id == a) { prev = curr->next; free(prev); // get the memory back curr->next = prev->next; // short reference to prev done = 1; } if (curr->next != NULL) { curr = curr->next; //only move on if it is safe. } } // if you're interested in verbose, this well tell you if it couldn't // find what you wanted to delete. Useful for testing. if (done == 0) { //printf("Nothing done. Couldn't find node ID %d\n", a); } } // This code just loops through the entire list printing out the data. void showNodes() { node * temp; printf("Printing List:\n"); temp = head; while(temp) { printf("%d\n", temp->id); temp = temp->next ; } } // The main program loop int main() { head = NULL; // set head to NULL, symboling no list existing yet. int i = 0; // add nodes 5-10. for (i=10;i<=20;i++) { addNode(i); } addNode(5); // add an element out of order at begining addNode(25); // add an element out of order at end addNode(17); // add an element out of order, creating duplicate // node this program updates same number. showNodes(); delNode(5); // remove the first element delNode(15); // remove the a middle element delNode(25); // remove the last elelemt delNode(30); // remove a number that isn't present. showNodes(); return 0; } </blockquote> <b>FIXME_Category :Programming</b> <b>FIXME_Category :Academic</b> <b>FIXME_Category :Computers</b> <b>FIXME_Category :Contiki</b> Spartan-3E http://new.george-smart.co.uk/spartan_3e 2012-04-21 00:58:30 0 closed page closed 3346 draft spartan_3e You may be interested in <a href="http://new.george-smart.co.uk/xilinx_jtag_linux">how I got USB cable drivers working under Linux</a> <h2>Xilinx Spartan-3E FPGA Starter Kit</h2> While working on my Intership in summer 2009, I was introduced to the world of FPGAs. I knew nothing about them at all, and there was nobody in the university to ask during the summer holiday period. I was on my own. I knew that these devices were very powerful once mastered, but I really didn't have much of a clue. The device presented to me was the <a href="http://www.xilinx.com/products/devkits/HW-V5-ML506-UNI-G.htm">Xilinx Virtex-5 XtremeDSP Development Platform</a>. I had no idea to begin. I started looking through Xilinx tutorials and guides, but all were way over my head. I wanted to get into this sort of technology and liked the ideas and benafits, and so I decided to purchase a <a href="http://www.xilinx.com/products/devkits/HW-SPAR3E-SK-US-G.htm">Xilinx Spartan-3E Starter Kit</a> which I brought from <a href="http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,400,423&Prod=S3EBOARD">Digilent, Inc</a>. They shipped the device very quickly. The image below is picture of the starter board. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Spartan-3E.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Spartan-3E.jpg" width="600" alt="My Spartan-3E Board" class="aligncenter"></a> I had a lot of trouble getting this board to do even the simplest of things. Even just recreating an AND gate for some reason took me the best part of 2 weeks. Looking back now, I have no idea why. I spent much of my time battling the Xilinx ISE software. My most fundamental problem was getting the Xilinx JTAG programmer (on board) to work under Linux (Mint, A Ubuntu derivative). I am writing a page on this, which can be found <a href="http://new.george-smart.co.uk/xilinx_jtag_linux">here: Getting the Xilinx JTAG programmer to work under Linux</a>. The biggest help thus far on the Xilinx ISE suite, and generally getting started was a series of Videos by Anthony Burch at <a href="http://www.burched.com/">http://www.burched.com/</a>. He sells a set of 19 videos starting from software installation to much more complex designs and concepts. They are defiantly worth the £10.40 I paid. <b>FIXME_Category :Academic</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :FPGA</b> SSTV http://new.george-smart.co.uk/sstv 2012-12-27 01:36:49 0 closed page closed 3745 sstv draft = Some Good Ones = Below are a few SSTV frames that I picked out, as they have nicely decoded, or are good DX! <table align="center" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/12/SSTV_AB3FL.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/12/SSTV_AB3FL.jpg" class="aligncenter"></a></td></tr><tr><td>I5UN Shack<td>I5UN Dog</tr> </table> STM32w http://new.george-smart.co.uk/stm32w page closed closed 2013-02-26 16:38:56 0 draft stm32w 4077 <a href="http://www.ee.ucl.ac.uk/research/comminfosys">Our group</a> were recently donated some <a href="http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF247094">ST STM32W evaluation boards</a>. It features a 32-bit ARM® Cortex™-M3 microprocessor and a 2.4 GHz IEEE 802.15.4-compliant transceiver suitable for ZigBee. This page documents my getting Contiki programs go build on the device. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/02/STM32W-SK.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/02/STM32W-SK.png" alt="STM32w Starter Kit Board" class="aligncenter"></a> Despite the STM32w being on the <a href="http://www.contiki-os.org/hardware.html">Contiki OS Supported Hardware</a> list, it was a little fiddly. <h1>With The Ubuntu Repository Binaries</h1> To compile for the STM32w, you need to specify a target device of <i>mb851</i>: <blockquote> george@georgesmartbox:~/contiki/examples/hello-world$ make TARGET=mb851 hello-world | tee temp arm-none-eabi-gcc -DCONTIKI=1 -DCONTIKI_TARGET_MB851=1 -mthumb -mcpu=cortex-m3 -D "PLATFORM_HEADER=\"hal/micro/cortexm3/compiler/gnu.h\"" -D BOARD_HEADER=\"board.h\" -g -Wall -Wno-strict-aliasing -mlittle-endian -D BOARD_MB851 -D CORTEXM3 -D CORTEXM3_STM32W108 -D PHY_STM32W108XX -D DISABLE_WATCHDOG -D ENABLE_ADC_EXTENDED_RANGE_BROKEN -D __SOURCEFILE__=\"rimeaddr.c\" -Os -ffunction-sections -I. -I../../platform/mb851/. -I../../platform/mb851/dev -I../../cpu/stm32w108/. -I../../cpu/stm32w108/dev -I../../cpu/stm32w108/hal -I../../cpu/stm32w108/simplemac -I../../cpu/stm32w108/hal/micro/cortexm3 -I../../cpu/stm32w108/hal/micro/cortexm3/stm32w108 -I../../core/dev -I../../core/lib -I../../core/net -I../../core/net/mac -I../../core/net/rime -I../../core/net/rpl -I../../core/sys -I../../core/cfs -I../../core/ctk -I../../core/lib/ctk -I../../core/loader -I../../core/. -I../../platform/mb851/ -MMD -c ../../core/net/rime/rimeaddr.c -o obj_mb851/rimeaddr.o /usr/arm/none-eabi/libexec/gcc/arm-none-eabi/4.3.3/cc1: error while loading shared libraries: libmpfr.so.1: cannot open shared object file: No such file or directory make: *** [obj_mb851/rimeaddr.o] Error 1 </blockquote> The making of <i>hello-world</i> didn't go very well at all... Apparently I was missing <i>libmpfr.so.1</i> which provides a library for multiple-precision floating-point computation with correct rounding which is efficient with well-defined semantics. I just had no idea where to find it. I checked the <i>apt-file</i> database with no luck. I Googled for it with no luck. I am currently waiting for an answer to <a href="http://sourceforge.net/mailarchive/forum.php?thread_name=51277730.406%40ee.ucl.ac.uk&forum_name=contiki-developers">my question</a> on <a href="http://sourceforge.net/mailarchive/forum.php?forum_name=contiki-developers">the mailing list</a>. <h1>Compiling Our Own Binaries</h1> <a href="http://www.webshed.org">David Mills</a> recommended the use of <a href="http://summon-arm-toolchain.org/">summon-arm-toolchain</a> for working with ARM chips. The project provides a script that is run. I then took my office cup to the staff room, and went to fill it with tea! For several reasons I couldn't progress to far with the compiled version. I got <a href="http://comments.gmane.org/gmane.os.contiki.devel/14844">a known bug about moving the location counter</a> to the start which is required because of the CoffeeFS system: <blockquote> ../../cpu/stm32w108/gnu.ld:206 cannot move location counter backwards (from 0801f800 to 00000000) collect2: ld returned 1 exit status </blockquote> <h1>Steal the Binaries from Contiki Instant 2.6</h1> The quickest way to avoid this was to simply steal the CodeSourcery binaries from ContikiInstant2.6. They are offered here in tar-bzip2 format <b><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/ContikiInstant_CodeSourcery.tar.bz2">ContikiInstant CodeSourcery Files</a></b> From these files, put them somewhere where you can find them. My computer's previous failed attempts from the repository installs had put the files in <i>/usr/arm</i> so I decided to follow trend. I extracted the zip file and then moved the <i>Sourcery_G++_Lite</i> folder to become <i>/usr/arm/none-eabi/</i>. I then created symlinks from here to /usr/local/bin/ to the following files: <ul> <li> /usr/local/bin/arm-none-eabi-objdump -> /usr/arm/none-eabi/bin/arm-none-eabi-objdump</li> <li> /usr/local/bin/arm-none-eabi-objcopy -> /usr/arm/none-eabi/bin/arm-none-eabi-objcopy</li> <li> /usr/local/bin/arm-none-eabi-gcc -> /usr/arm/none-eabi/bin/arm-none-eabi-gcc</li> <li> /usr/local/bin/arm-none-eabi-ar -> /usr/arm/none-eabi/bin/arm-none-eabi-ar</li> <li> /usr/local/bin/arm-none-eabi-size -> /usr/arm/none-eabi/bin/arm-none-eabi-size</li> </ul> At this point, I was able to compile Contiki to a binary, but unable to flash the device. The computer was able to see the development board, but it wasn't presenting a USB Serial Port as the Contiki flasher tool expected. <blockquote> [4577085.967054] generic-usb 0003:0483:5741.0007: input,hidraw2: USB HID v1.11 Mouse <a href="STMicroelectronics">STM32W Composite Device </a> on usb-0000:00:1a.0-1.3/input2 </blockquote> <h1>Connecting?</h1> While fiddling with the device to try and find out where to flash, I noticed that the device spawned <i>/dev/ttyACM0</i>. To this end, I connected to it with <i>serialdump-linux -b115200 /dev/ttyACM0</i> and got the following my pressing buttons... <blockquote> george@georgesmartbox:~/contiki/tools/stm32w$ ./serialdump-linux -b115200 /dev/ttyACM0 connecting to /dev/ttyACM0 (115200) [OK] SimpleMAC (1.1.0) Sample Application: 'Planet role'! Enter ? for list of commands > Sleep... (perform UART activity to wake) awake Inactive node joining network and becoming a planet Trying channel 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Did not join. Returning to inactive state. > Sleep... </blockquote> <h1>Dirty Attempt at Flashing</h1> So I read through the make files to see what's going on. I run throught he flashing sequence and got the .bin file from objcopy (from the .mb851 file). From here, it's just a matter of actually flashing the file... <blockquote> $ sudo /home/george/contiki/tools/stm32w/stm32w_flasher/stm32w_flasher -f -i rs232 -p /dev/ttyACM0 -r example-broadcast.bin [sudo] password for george: INFO: STM32W flasher utility version 2.0.0b2 for Linux ERROR: Failed to detect port type for /dev/ttyACM0 ERROR: Trouble while resetting board on port : '/dev/ttyACM0' ERROR: Error while initiliazing interface </blockquote> But as you can see this failed too. I read that there are some updates to stm32w_flasher, so I have sent a message asking for help. Lets see! Tait T800 Series II Repeater http://new.george-smart.co.uk/tait_t800_series_ii_repeater 5444 tait_t800_series_ii_repeater draft 0 2016-01-19 15:51:12 closed closed page This page is a draft page. You may find the <b>Tait T800 Windows programming software</b> useful: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/Tait_PGM800Win_V431_Setup.zip">Tait_PGM800Win_V431_Setup.zip</a>. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/01/Tait_T800_EchoLink.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/01/Tait_T800_EchoLink.jpg" width="600" alt="My Tait T800 Repeater (EchoLink)" class="aligncenter"></a> Few images of me taking the thing apart and setting stuff up. <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/01/T800_2.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/01/T800_2.jpg" width="120" alt="Tait T800" class="aligncenter"></a></tr> </table><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/01/T800_1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2016/01/T800_1.jpg" width="240" alt="Tait T800" class="aligncenter"></a></tr> </table> Click to enlarge </center> <b>FIXME_Category :Radio</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Echolink</b> Thanks for Donating http://new.george-smart.co.uk/thanks_for_donating closed page closed 2012-01-12 15:01:48 0 thanks_for_donating draft 3037 Thank you for donating. Please feel free to contact me with any additional feedback, using the <b>FIXME_User :george#Contact_Information|Contact Information</b> provided. Kind Regards, George Smart <b>FIXME_Category :Admin</b> <b>FIXME_Category :Website</b> <b>FIXME_Category :Money</b> The Shack http://new.george-smart.co.uk/the_shack 2013-05-29 03:30:43 0 closed page closed 4530 the_shack draft This is the workshop. I say workshop. I use the term loosely. It also doubles up as a place to store junk, which is one of my main hobbies. In the image below, Dad and <a href="http://www.webshed.org">Dave Mills</a> are setting up Dave's <a href="http://www.g6avk.demon.co.uk/qrss.html">QRSS</a> beacon. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/Shack2042009.jpg</td><td>600px"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/Shack2042009.jpg</td><td>600px" alt="Dad and Dave in the Shack" class="aligncenter"></a> <h1>Height Above Sea Level</h1> This histogram shows altitude samples taken from a GPS receiver, at one sample per second for a month. Then using <a href="http://en.wikipedia.org/wiki/Central_limit_theorem">the central limit theorem</a> or more directly <a href="http://en.wikipedia.org/wiki/Law_of_large_numbers">the law of large numbers</a> we are able to observe exact altitude much more accurately than the GPS is able to measure in any single measurement. The average here is 21.080879814928682 metres. For sensibility I'll say 21.08 metres above mean sea level (or whatever GPS thinks is mean sea level). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/ShackAltitude.png</td><td>600px"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/ShackAltitude.png</td><td>600px" alt="Shack Altitude Histogram" class="aligncenter"></a> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Radio</b> Time Difference http://new.george-smart.co.uk/time_difference 0 2012-01-12 15:02:23 closed closed page 3038 time_difference draft This page allows you to calculate the difference between two times. I made it to help me when trimming videos on the command line. It is a simple Perl CGi script. <HTML> <FORM action="/cgi-bin/time_difference.cgi" method="get"> ( <INPUT type="text" name="h1" value="00" size="2"> : <INPUT type="text" name="m1" value="00" size="2"> : <INPUT type="text" name="s1" value="00" size="2"> ) &mdash; ( <INPUT type="text" name="h2" value="00" size="2"> : <INPUT type="text" name="m2" value="00" size="2"> : <INPUT type="text" name="s2" value="00" size="2"> ) <input type="hidden" name="output" value="minimal"> <INPUT type="submit" value="Calculate"> </FORM> </HTML> <b>FIXME_Category :Tools</b> Time Until Retirement http://new.george-smart.co.uk/time_until_retirement closed page closed 2012-07-01 00:14:26 0 time_until_retirement draft 3509 Approximate time until my fathers retirement on 01/08/2014, based on 6.357 weeks holiday per year. The old version of this page is <a href="http://www.george-smart.co.uk/cgi-bin/retirement.cgi?oldpage=true">here</a>. <table cellpadding="10" border="1" cellspacing="0" > <tr><td>align="center"|<b>Days</b></td><td><html><img src=http://www.george-smart.co.uk/cgi-bin/retirement.cgi?image=days alt="retirement"></html></td></tr><tr><td>align="center"|<b>Days</b><br>(at work)</td><td><html><img src=http://www.george-smart.co.uk/cgi-bin/retirement.cgi?image=daysW alt="retirement"></html></td></tr><tr><td>align="center"|<b>Weeks</b></td><td><html><img src=http://www.george-smart.co.uk/cgi-bin/retirement.cgi?image=weeks alt="retirement"></html></td></tr><tr><td>align="center"|<b>Weeks</b><br>(at work)</td><td><html><img src=http://www.george-smart.co.uk/cgi-bin/retirement.cgi?image=weeksW alt="retirement"></html></tr> </table> <b>FIXME_Category :Tools</b> TinyOS http://new.george-smart.co.uk/tinyos closed closed page 0 2012-08-03 14:45:58 tinyos draft 3533 As part of my PhD, I will be using <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/Crossbow_TelosB.pdf">Crossbow TelosB Motes</a> to form a wireless sensor network. This page gives a very basic example of how to download and compile the source code for the motes in a standard accepted way. <h1>Installing the software</h1> Installation of the TinyOS system is pretty straight forward, following the <a href="http://docs.tinyos.net/tinywiki/index.php/Installing_TinyOS_2.1.1">TinyOS Install Instructions</a>. The <a href="http://docs.tinyos.net/tinywiki/index.php/Installing_TinyOS_2.1.1#Two-step_install_on_your_host_OS_with_Debian_packages">Two-step Debian install</a> was what I used for my Ubuntu 11.04 office PC. For completeness I will repeat it here. This page assumes you're running a Linux distribution that supports Debian packages and the advanced packaging tool (APT). Remove any existing APT source entries. Add the following line to your <i>/etc/apt/sources.list</i> source file. <blockquote> deb http://hinrg.cs.jhu.edu/tinyos natty main </blockquote> You then need to update your repository cache <blockquote> $ sudo apt-get update </blockquote> Run the following to install the latest release of tinyos and all its supported tools: <blockquote> $ sudo apt-get install tinyos </blockquote> This will likely give you a message telling you to choose between the two available versions. An example to then execute is: <blockquote> $ sudo apt-get install tinyos-2.1.1 </blockquote> Add the following line to your <code>~/.bashrc</code> or <code>~/.profile</code> file in your home directory to set up the environment for TinyOS development at login <blockquote> #Sourcing the tinyos environment variable setup script source /opt/tinyos-2.1.1/tinyos.sh </blockquote> <h2>Installing the compiler and such</h2> On the newer versions of Ubuntu, tested on 12.04, you can apt-get install all of the MSP430 stuff. <blockquote> apt-get install binutils-msp430 gcc-msp430 msp430-libc msp430mcu mspdebug </blockquote> Thanks very much to <a href="http://pfalcon-oe.blogspot.co.uk/2012/03/developing-for-ti-launchpad-msp430.html">http://pfalcon-oe.blogspot.co.uk/2012/03/developing-for-ti-launchpad-msp430.html</a>. This saved me a lot of time recently. The old method of installing these had me compile many of the programs from source and all the associated problems. The job went from being 2 hours of work, to about 20 seconds! <h1>Example Application : Blink</h1> This application is the de-facto test program, and demonstrates how to get from source code to a running mote. <h2>Download The Example</h2> You can <a href="http://www.tinyos.net/tinyos-2.x/apps/Blink/">download this example program</a>. You need to get all the files in the folder, and save them in the same folder, which will become your project's working directory. <h2>Compile the program</h2> Once you're in the working directory, open a terminal there. Compiling the program is as simple as issuing the make command. Here, I am using a Crossbow TelosB mote, and so I pass the <i>telosb</i> argument to make. <i>mica</i> or whatever also works. <blockquote> $ make telosb mkdir -p build/telosb compiling BlinkAppC to a telosb binary ncc -o build/telosb/main.exe -Os -O -mdisable-hwmul -fnesc-separator=__ -Wall -Wshadow -Wnesc-all -target=telosb -fnesc-cfile=build/telosb/app.c -board= -DDEFINED_TOS_AM_GROUP=0x22 -DIDENT_APPNAME=\"BlinkAppC\" -DIDENT_USERNAME=\"gsmart\" -DIDENT_HOSTNAME=\"aristoteles\" -DIDENT_USERHASH=0x948c0a32L -DIDENT_TIMESTAMP=0x4e79f56bL -DIDENT_UIDHASH=0x90d16962L BlinkAppC.nc -lm compiled BlinkAppC to build/telosb/main.exe 2648 bytes in ROM 54 bytes in RAM msp430-objcopy --output-target=ihex build/telosb/main.exe build/telosb/main.ihex writing TOS image </blockquote> If the build was successful, it will look as above. If not, you will know about it. <h2>Programming the Mote</h2> The mote is easily programmed again with the <i>make</i> command. Before we program the mote, we can get a list of all those connected by using the <i>motelist</i> program. <blockquote> $ motelist Reference Device Description ---------- ---------------- --------------------------------------------- XBNZ7T4K /dev/ttyUSB0 XBOW Crossbow Telos Rev.B </blockquote> To program this mote, we run the command <blockquote> $ make install telosb mkdir -p build/telosb compiling BlinkAppC to a telosb binary ncc -o build/telosb/main.exe -Os -O -mdisable-hwmul -fnesc-separator=__ -Wall -Wshadow -Wnesc-all -target=telosb -fnesc-cfile=build/telosb/app.c -board= -DDEFINED_TOS_AM_GROUP=0x22 -DIDENT_APPNAME=\"BlinkAppC\" -DIDENT_USERNAME=\"gsmart\" -DIDENT_HOSTNAME=\"aristoteles\" -DIDENT_USERHASH=0x948c0a32L -DIDENT_TIMESTAMP=0x4e79f56bL -DIDENT_UIDHASH=0x90d16962L BlinkAppC.nc -lm compiled BlinkAppC to build/telosb/main.exe 2648 bytes in ROM 54 bytes in RAM msp430-objcopy --output-target=ihex build/telosb/main.exe build/telosb/main.ihex writing TOS image cp build/telosb/main.ihex build/telosb/main.ihex.out found mote on /dev/ttyUSB0 (using bsl,auto) installing telosb binary using bsl tos-bsl --telosb -c /dev/ttyUSB0 -r -e -I -p build/telosb/main.ihex.out MSP430 Bootstrap Loader Version: 1.39-telos-8 Mass Erase... Transmit default password ... Invoking BSL... Transmit default password ... Current bootstrap loader version: 1.61 (Device ID: f16c) Changing baudrate to 38400 ... Program ... 2680 bytes programmed. Reset device ... rm -f build/telosb/main.exe.out build/telosb/main.ihex.out </blockquote> The above is what programming my TelosB mote looked like. <h2>Verify</h2> Once the programming has finished, the mote should start running. The image below shows the mote with the blue LED on. When mote runs with all 3 (blue, red and green) LEDs flashing at different rates. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/08/TelosB_Blink.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/08/TelosB_Blink.jpg" width="300" alt="Crossbow TelosB Mote" class="aligncenter"></a> <h1>Troubleshooting</h1> <h2>mig issue failed parsing RssiDemoMessages.h</h2> <blockquote> george@box:/opt/tinyos-2.1.1/apps/tutorials/RssiDemo/java$ sudo make mig java -target=null -java-classname=RssiMsg ../RssiDemoMessages.h RssiMsg -o RssiMsg.java two source files specified (PLATFORM_NULL and NESC=131) failed to parse message file ../RssiDemoMessages.h make: *** [RssiMsg.java] Error 1 george@box:/opt/tinyos-2.1.1/apps/tutorials/RssiDemo/java$ </blockquote> This issue is caused by nesC versions 1.3.2 and older versions when it tries to compile with gcc 4.6. <b>Solutions:</b> <ul> <li> add option -target=iris (or telos or whatever mote you're using, it doesn't really matter, the generated code is the same) to the mig command to use avr-gcc or msp430-gcc instead of gcc. </li> </ul> <ul> <li> update nesc to 1.3.3. (from here: <a href="http://tinyos.stanford.edu/tinyos/dists/ubuntu/pool/main/n/nesc/],">[http://tinyos.stanford.edu/tinyos/dists/cygwin/</a> or from source) </li> </ul> <ul> <li>use the patch from here (the bug is in a perl script, so you don't need to recompile anything): [http://sourceforge.net/tracker/?func=detail&aid=3153727&group_id=56288&atid=480036]</li> </ul> <h2>javac: error: cannot find symbol</h2> <blockquote> javac RssiDemo.java RssiMsg.java /opt/tinyos-2.1.1/support/sdk/java/net/tinyos/message/Message.java:84: error: cannot find symbol private SerialPacket serialPacket; ^ symbol: class SerialPacket location: class Message /opt/tinyos-2.1.1/support/sdk/java/net/tinyos/message/Message.java:676: error: cannot find symbol public SerialPacket getSerialPacket() { ^ </blockquote> This issue (for me) was caused by something up with the <i>tinyos.jar</i> file. <b>Solution:</b> Recompile <i>tinyos.jar</i>: <blockquote> cd /opt/tinyos-2.1.1/support/sdk/java/ make </blockquote> I also had to run <i>tos-install-jni</i> too. I've honestly no idea what it does, but the compiler told me to run it, I did, and it worked. Run as root: <blockquote> sudo tos-install-jni </blockquote> That solved my issues with the cannot find symbols error. <b>FIXME_Category :Howto</b> <b>FIXME_Category :Programming</b> <b>FIXME_Category :Academic</b> <b>FIXME_Category :Computers</b> <b>FIXME_Category :Linux</b> <b>FIXME_Category :Electronics</b> Toner Transfer PCBs http://new.george-smart.co.uk/toner_transfer_pcbs 3350 draft toner_transfer_pcbs 0 2012-04-21 01:03:25 page closed closed <h1>Introduction</h1> For the last 4 or 5 years I've been making printed circuit boards (PCBs) with the Toner Transfer method (sometimes called the Iron on method). This allows the use of non-photo-resistive PCB which is often much cheaper than that with the resistive layer. This is done by using a laser printer's toner to protect the copper of the PCB from the acid (like the photo-resist traditionally would). I have had very good results from this method. I decided to share my method as a few people had asked. When making a PCB for programming my <a href="http://new.george-smart.co.uk/tait_t800_series_ii_repeater">Tait T800 Series II Repeater</a> for my <a href="http://new.george-smart.co.uk/echolink">EchoLink</a> node, I decided to document the PCB creation process. I don't particularly design the board in any special way. I would suggest you use the biggest tracks you can for a variety of reasons; namely that it will transfer much easier and it will etch much quicker (less copper to dissolve) making the acid last longer. I have only used this method a couple of times to create double sided boards, but the same problems exist as with the resist method. I have made many many single sided boards using this method. <h1>Printer and Paper</h1> <h2>Printer</h2> The printer you choose can effect the results of the toner transfer. Obviously it needs to be a laser printer (or an inkjet and then photocopy onto your paper of choice <a href="see">below</a>). I have found Brother printers to work well - there was little research into this, simply that I've found them to be good printers and they've always worked well - I also own a Hewlett-Packard printer which also works well. I'm tempted to say that your printer doesn't really matter. There is probably a slight difference between them, but not really enough to worry about. I've never used a printer that I couldn't get results from. The printers I currently use are: <ul> <li> Brother HL-2030</li> <li> Brother DCP-7030</li> <li> Hewlett-Packard Colour LaserJet CP1215 (in monochrome mode)</li> <li> OKI B4300</li> </ul> <h2>Paper</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Mondi_PCB_Transfer_Paper.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Mondi_PCB_Transfer_Paper.jpg" alt="Mondi Glossy Paper" class="aligncenter"></a> Paper is probably one of the most critical factors in the toner transfer method. You need a method to get the toner to un-bond from the paper. I have taken the approach of using clay-coated paper (usually referred to as glossy paper). This is standard paper coating with a thin clay coating - this gives the paper a shiny white appearance ideal for printing onto. It also makes it ideal to soak in water and get the toner off. I am currently using some <i>mondi</i> paper. It's 135 g/m^2 and comes in packs of 250 sheets x A4. The image to the right is of a pack of unopened paper (click to enlarge). Some other paper I have found to work well include: <ul> <li> Maxim/Dallas brochures (sent out to people via post on a fortnightly basis, containing information about their new ICs) - Works well & free/delivered</li> <li> Some cheap packs of glossy paper can be found in Tesco, etc.</li> </ul> Avoid plastic glossy paper! It melts... everywhere... so check that before you use it. It took me a good while to un-jam it from the printer's heater. I just experimented - I didn't pay much money for the paper and the stuff that didn't work well for PCB just got used like normal paper. <h1>Preparing the PCB</h1> Image 1 shows a strip of PCB - an off-cut from the manufacturing of commercial PCBs. I then use a sanding block (image 2) to get a good, shiny surface on the copper. I then use methylated spirit to remove any sanding dust and grease (image 3) from the surface of the PCB. Don't touch the PCB after this stage, and if you do, go back and wipe it again (image 4). <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PCB_Prep_1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PCB_Prep_1.jpg" width="150" class="aligncenter"></a></td></tr><tr><td>Image 1</td><td>Image 2</td><td>Image 3</td><td>Image 4</tr> </table> Click on an image to enlarge </center> <h1>Iron on the Toner</h1> After printing the PCB masks onto your paper, cut (or tear as in image 1) your masks into smaller sections. Image 2 shows how I used an old iron at about 180 &deg;C (image 4). You need to make sure that you've applied even pressure all over the mask, especially the corners. When you've finished, the masks should look something like image 3. Let the masks cool before you play with them. <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PCB_Iron_1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PCB_Iron_1.jpg" width="150" class="aligncenter"></a></td></tr><tr><td>Image 1</td><td>Image 2</td><td>Image 3</td><td>Image 4</tr> </table> Click on an image to enlarge </center> = Remove Paper = Image 1 shows <i>Domestos Zero Limescale</i> cleaner. <a href="http://www.webshed.org">Dave Mills, G7UVW</a> found this to work well in breaking paper down. Soak the paper for a few moments before putting a small amount of this cleaner on to the top of the paper (image 2). Rubbing the cleaner around with your finger helps work it into the paper. It only takes a few minutes and you should be able to peel the paper off with your hand, working slowly from one corner (image 3). If any paper or clay is left on the board, you will need to rub your fingers over this area to get the paper fibres off the board. People say this should be done carefully; my approach is that if rubbing it with your fingers makes the toner come off, then it hadn't properly affixed to the copper. It may be useful to rub the board with some paper fibres you've already freed, as this helps to get the small fibres off. You should end up with something like in image 4 - your mask may vary from mine :) <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PCB_Paper_1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PCB_Paper_1.jpg" width="100" class="aligncenter"></a></td></tr><tr><td>Image 1</td><td>Image 2</td><td>Image 3</td><td>Image 4</tr> </table> Click on an image to enlarge </center> <h1>Troubleshooting</h1> It is at this stage you can assess how well it's going to go. Once you have toner on to your board, it will work. The hard bit is getting the toner onto the board. Below are a few pointers for things that often go wrong: <ul> <li> Toner comes off with the paper:</li> <li>* If all the toner comes off with the paper, and none stays with the board then the iron probably wasn't hot enough.</li> <li>* If patches come off and some stay on, there was either grease on the PCB or you didn't apply and firm, even, pressure when ironing.</li> <li>* The paper should split apart; the clay staying with the toner, the fibre mesh should pull away or break apart with rubbing.</li> <li> If toner <i>squidges</i> out and narrow tracks become wider, then you've probably got the iron too hot or you're pushing (far too) hard.</li> </ul> As well as that, be careful not to twist or slide the mask on the copper, as this will twist the mask rendering whatever results as useless. <h1>Etch the Board</h1> The board was first trimmed to a humane size, using the metal guillotine (image 1). The edges of the board are then masked off with Nitto-Tape, to save the etchant and reduce the time required to etch the board (image 2). Image 3 shows the RS etching tank looking a bit buried and worse of wares. Image 4 shows the completed etched board - cellulose thinners can be used as a solvent for toner. <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PCB_Etch_1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PCB_Etch_1.jpg" width="150" class="aligncenter"></a></td></tr><tr><td>Image 1</td><td>Image 2</td><td>Image 3</td><td>Image 4</tr> </table> Click on an image to enlarge </center> <h1>Drill the PCB</h1> Once the board reaches this state, the process is the same as with photo-resist boards. I use a big Meddings pillow drill to drill out PCBs with either a 0.7mm tungsten carbide drill bit or a 1.0mm steel drill bit, depending on the type of board, etc. Image 1 shows the two drills. Tungsten drills are very fragile and break very easily - great benefit comes from using a big (stable/solid) drill with the bit spinning very fast (image 2). The steel drills are much less fragile but don't drill well through fibre-glass board - steel drills are suited to paper bonded board (the white stuff you often see). Image 3 shows the completed board, drilled with 1mm steel drill. You will notice that some of the drill holes are slightly off. Never mind! <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PCB_Drill_1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PCB_Drill_1.jpg" width="150" class="aligncenter"></a></td></tr><tr><td>Image 1</td><td>Image 2</td><td>Image 3</tr> </table> Click on an image to enlarge </center> <h1>Assemble the PCB</h1> Then I soldered on the components and was pleased that the board worked first time :) If you are actually interested in the board shown here (It's an interface to program Tait T800 Series 2 Repeaters, then check out my <a href="http://new.george-smart.co.uk/tait_t800_series_ii_repeater">Tait T800 Series II Repeater</a> page. <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PCB_Make_1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/PCB_Make_1.jpg" width="200" class="aligncenter"></a></td></tr><tr><td>Image 1</tr> </table> Click on an image to enlarge </center> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Howto</b> Toroid Core Measurements http://new.george-smart.co.uk/toroid_core_measurements 0 2013-03-22 00:01:46 closed page closed 4217 toroid_core_measurements draft Prompted by the <a href="http://www.micrometals.com/warning/warning.html">Micrometals warning message</a> and <a href="http://webshed.org/wiki/FT50-43_and_FT50-26_Transformers">Dave Mills (G7UVW) Transformer Testing</a>, I decided to test some of the cores I've been using. Each toroid was bifiliar-wound as a transformer. A through-test (S21) and absorption test (S11) was measured over the <i>interesting</i> range for each toroid using <a href="http://sdr-kits.net/VNWA3_Description.html">DG8SAQ VNWA</a>. <h1>Results</h1> Be aware that both the amplitude and frequency scales change. <h2>FT140-43</h2> Grey. As a resonant device, the frequency range is 10 kHz to 1 MHz. As a wideband device (transformer), the frequency range is 1 MHz to 50 MHz. As a choke, the frequency range is from 30 MHz to 600 MHz. <center><table cellpadding="10" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/FT140-43_T.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/FT140-43_T.png" width="300" class="aligncenter"></a></td></tr><tr><td>Through Measurement (transformer)<td>Absorbed Measurement (inductor)</tr> </table> </center> As the specification says, the resonant frequency range is small, at about 1.5 MHz. The broadband frequency range is very broad. Easily useful to 50 MHz with around 0.5 dB ripple. <h2>T50-26</h2> Yellow/White. The frequency range is DC to 1 MHz. <center><table cellpadding="10" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/T50-26_T.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/T50-26_T.png" width="300" class="aligncenter"></a></td></tr><tr><td>Through Measurement (transformer)<td>Absorbed Measurement (inductor)</tr> </table> </center> I wasn't impressed with the 26-mix. The transformer frequency range is poor and it's lossy as an inductor especially after the specified 1 MHz. I had expected T130-52 to be worse, but it appears significantly better than this T50-26. <h2>T130-52</h2> Green/Blue. The frequency range is DC to 1 MHz. <center><table cellpadding="10" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/T130-52_T.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/T130-52_T.png" width="300" class="aligncenter"></a></td></tr><tr><td>Through Measurement (transformer)<td>Absorbed Measurement (inductor)</tr> </table> </center> As a transformer, the T130-52 is better than the T50-26. As an inductor it is much better too! Maybe it's because it's a bigger core? <h2>T157-2</h2> Red. The frequency range is 1 MHz to 30 MHz. <center><table cellpadding="10" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/T157-2_T.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/03/T157-2_T.png" width="300" class="aligncenter"></a></td></tr><tr><td>Through Measurement (transformer)<td>Absorbed Measurement (inductor)</tr> </table> </center> This ferrite is the classic for HF baluns and homebrew stuff. The frequency response of the transformer is good over 1-30 MHz range. As an inductor it seemed pretty lossy. Not sure if this was an issue with the experiment, or if it is that lossy? Tropo http://new.george-smart.co.uk/tropo closed closed page 2013-12-14 19:36:08 0 tropo draft 4847 A couple of links relating to VHF and UHF tropospheric ducting, etc. <ul> <li> <a href="http://www.dxinfocentre.com/tropo_nwe.html">Tropospheric Ducting Forecasts</a></li> </ul> <ul> <li> <a href="http://aprs.mountainlake.k12.mn.us/">Realtime APRS VHF Propagation Map</a></li> UHF PA http://new.george-smart.co.uk/uhf_pa 4289 draft uhf_pa 2013-04-08 23:51:11 0 page closed closed This page was moved here: <a href="http://new.george-smart.co.uk/100w_uhf_linear_amplifier">100W UHF Linear Amplifier</a>. <a href="/contact-me">Please report this message to the webmaster</a>. UI-View APRS-IS Settings http://new.george-smart.co.uk/ui_view_aprs_is_settings 0 2013-06-02 11:37:24 page closed closed 4535 draft ui_view_aprs_is_settings This page came about when someone at my local radio club was having trouble with updating the APRS-IS servers in UI-View 32. Many of the old APRS-IS servers are no longer running, or have changed their URLs since UI-View was last updated. It became apparent that the maintainer of the default APRServe.txt (File > Download APRS Server List) has also removed the updated list, which results in something like this: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/UIView_APRSIS_Settings_1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/UIView_APRSIS_Settings_1.png" width="600" class="aligncenter"></a> <a href="http://www.m3php.com/">Peter Goodhall (2E0SQL)</a> runs an the T2LONDON APRS-IS server (aprsc 1.7.6) for London. The status of this server can be found here: <a href="http://london.aprs2.net:14501/">http://london.aprs2.net:14501/</a>. I will use this server, because it's local to me and run by a friend, but feel free to substitute your preferred server here. <blockquote> london.aprs2.net:14580 </blockquote> Fire up UI-View. This article assumes you have a working <a href="http://new.george-smart.co.uk/aprs">APRS</a> setup. If you don't then read the UI-View APRS manuals. My advice is that you use <a href="http://www.xastir.org">XASTIR</a> instead of UI-View. UI-View hasn't been updated since Roger Barker, G4IDE, passed away in 2004. Since then, a lot of the APRS paradigms have changed. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/UIView_APRSIS_Settings_2.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/UIView_APRSIS_Settings_2.png" width="600" class="aligncenter"></a> Click on Setup, then on APRS Server Setup... <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/UIView_APRSIS_Settings_3.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/UIView_APRSIS_Settings_3.png" width="600" class="aligncenter"></a> ...and you'll be presented with a screen like below. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/UIView_APRSIS_Settings_4.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/UIView_APRSIS_Settings_4.png" width="600" class="aligncenter"></a> My first recommendation is to remove all the existing default APRS servers. If you click on the first server listed, then press delete (not backspace, delete), you will be asked to confirm the removal. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/UIView_APRSIS_Settings_5.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/UIView_APRSIS_Settings_5.png" width="600" class="aligncenter"></a> Repeat until the list is empty. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/UIView_APRSIS_Settings_6.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/UIView_APRSIS_Settings_6.png" width="600" class="aligncenter"></a> Pressing the insert key will create a new entry <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/UIView_APRSIS_Settings_7.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/UIView_APRSIS_Settings_7.png" width="600" class="aligncenter"></a> then type the URL of the server in, in the format: <i>address:port</i>. Here, I use <i>london.aprs2.net:14580</i> as mentioned above. You can repeat this as many times as you need to add all of your servers. Maybe <i>england.aprs2.net:14580</i>, <i>euro.aprs2.net:14580</i> or <i>rotate.aprs2.net:14580</i>. Others exist. These are all second tier servers, others do exist. Google is your friend. Make sure the box is ticked to the left of the address. This enables the use of this server. If you need a Verification number, visit the <a href="http://new.george-smart.co.uk/aprs_callpass">APRS Callpass</a> page and enter your callsign. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/UIView_APRSIS_Settings_8.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/UIView_APRSIS_Settings_8.png" width="600" class="aligncenter"></a> Next, connect to the APRS server again. Click Action > Connect to APRS Servers. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/UIView_APRSIS_Settings_9.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/UIView_APRSIS_Settings_9.png" width="600" class="aligncenter"></a> You can log into the server you're connected to and see your connection. Any errors will be shown there. Here you see MB7UCL connected to <i>london.aprs2.net:14580</i> APRS-IS server. The connection is verified. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/UIView_APRSIS_Settings_10.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/UIView_APRSIS_Settings_10.png" width="600" class="aligncenter"></a> Finally a note on Filter Strings. These control what data is sent from the APRS-IS Server back to your computer for transmission on RF. If you live in a busy radio area then there is probably no need to be transmitting Internet data back on to RF as it cloggs the network up. I live near the M25 motorway which has a constant stream of cars with APRS on driving around, as well as long distance lorries and commuters, so transmitting data from the Internet uses up lots of bandwidth and time, resulting in mobile stations struggling to get out. APRS is all about listening for those kinds of stations and uploading them onto the Internet. If you feel that it would be useful to transmit APRS-IS data out on RF, do so sensibly. This is controlled in the "Extra log-on text" box. Here you add your filters, as specified <a href="http://www.aprs-is.net/javAPRSFilter.aspx">in the specification on aprs-is.net</a>. I would suggest something simple, such as <blockquote> Filter m/25 </blockquote> Should do the trick. The above filter repeats stations within 25 km of your callsign's location. I have known people to have this value as high as 600 km, which is plain ridiculous! The "Gate local messages" field can also be useful to repeat messages to stations in your vicinity. This means that someone at a great distance can push messages into the APRS-IS network and have them re-arrive at the destination node's local IGate for transmission on RF. The above two options are shown below: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/UIView_APRSIS_Settings_11.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/UIView_APRSIS_Settings_11.png" width="600" class="aligncenter"></a> Undergraduate Personal Statement http://new.george-smart.co.uk/undergraduate_personal_statement undergraduate_personal_statement draft 1732 closed closed page 0 2011-02-25 22:42:01 I have been fascinated by electronics for as long as I can remember. As a young child, I was never happy to be told how something worked; I had to find out for myself. This often meant family items were dismantled, purely to expand my knowledge. At the age of 12, I passed the City & Guilds Novice Radio Amateurs Exam and aged 14, I passed the Radio Amateurs Advanced Exam gaining a full licence. In doing this, I had to show a basic understanding of the principles of practical and theoretical electronics. This has enabled me to converse with people from around the world, enhancing my communication skills. On entering year 9 in secondary school, I founded a science club for people with similar interests to myself this was a popular club, and in February 2003, I was proud to receive the Jack Petchey award for Young Achievers for my devotion to both the science club and my scientific studies. I was selected by my school to attend a one year Saturday engineering club, run by a local technical college. The course was arranged in blocks, covering mechanical and electronic engineering, as well as some programming. I worked with teams of students, sharing ideas and gaining experience in the use of various machines and materials. During my time in secondary school, I received three headmaster's commendations for outstanding work and effort in English, History and ICT, and an internal school award for Design Technology in 2004. For the last two years at secondary school, I was a Senior Prefect. I was often chosen by the headmaster and senior tutors to support the school at many functions. In year 10, I was fortunate enough to do my work experience at Ford Motor Company's research and development centre. In shadowing an experienced engineer, I gained a appreciation of working as part of a development team, where measuring, analysing and problem solving were everyday occurrences. The experience strengthened my resolve to pursue a career in a technical environment. I enjoy the constant challenge of using scientific and mathematical principles to overcome everyday problems. I spend many hours in my home workshop, which is well equipped with electronic test equipment, such as oscilloscopes, a spectrum analyser and signal generators, which I use for experimenting in electronics. My projects include a radio transmitter, various microcontroller based clocks, and a weather station data logger. For many of these projects, I have authored my own software using self taught knowledge of the 'C' programming language. I have also taught myself Visual Basic 6 to a proficient level. I have a very active life, and enjoy socialising with friends, visiting the cinema, and listening to music. I have used my technical knowledge to help friends with the recording and mixing of live music, both in college and with our band. This has also encouraged me to learn to play guitar. I enjoy travelling and have visited various places around the United Kingdom, as well as Egypt, France, Greece, and Russia, where I experienced the warmth and friendship of other cultures. The fascination of how and why something works and interacts with the world around us has always had me enthralled, and to be able to work in an environment where I am designing, prototyping and developing technology would be my dream fulfilled. I would like the opportunity to study at your university to expand my knowledge and form a solid base for a successful career in engineering. <hr> You may also be interested in my <a href="http://new.george-smart.co.uk/postgraduate_personal_statement">Postgraduate Personal Statement</a> and my <a href="http://new.george-smart.co.uk/cv">CV</a>. <b>FIXME_Category :Academic</b> <b>FIXME_Category :About Me</b> University http://new.george-smart.co.uk/university draft university 4662 closed page closed 0 2013-06-04 02:54:04 <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/Uclquad.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/06/Uclquad.jpg" width="418" alt="UCL's Main Quad" class="aligncenter"></a> I am an postgraduate research student in the Engineering Faculty studying for a Ph.D in the field of wireless sensor networks. In English, I work in the <a href="http://www.ee.ucl.ac.uk/">Electronic & Electrical Engineering Department</a>, have a desk and a small lab and I think of novel ways to make devices talk via radio whilst monitoring the energy they use. See my <a href="http://new.george-smart.co.uk/phd">PhD</a> page for more information. <h1>My Roamnet and Eduroam Pages</h1> For information on getting UCL Roamnet working under linux, visit the <a href="http://new.george-smart.co.uk/roamnet">Roamnet</a> page. Similarly, for information on getting Janet (JRS) Eduroam working under linux visit the <a href="http://new.george-smart.co.uk/eduroam">Eduroam</a> page. <b>FIXME_Category :Academic</b> USB Soundcard Tests http://new.george-smart.co.uk/usb_soundcard_tests 4836 draft usb_soundcard_tests 2013-12-06 23:15:14 0 page closed closed This page is the work of <a href="http://dl1dbc.net/">Sabine Cremer, DL1DBC</a>. After exchanging lots of emails regarding <a href="http://new.george-smart.co.uk/raspberrypi_wspr">RaspberryPi WSPR</a> for her <a href="http://dl1dbc.net/WSPR/Monitor/">Medium Wave WSPR Monitor in JO41bi</a> to try and get a USB soundcard that didn't make the <a href="http://new.george-smart.co.uk/wspr">WSPR</a> application crash, Sabine conduced some very extensive research into USB soundcards, which she has very kindly allowed me to reproduce here, along with her source code: <ul> <li> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/USBSouncard_DL1DBC_alsatest.zip">USBSouncard_DL1DBC_alsatest.zip</a> (<i>Compile with option "-lasound".</i>)</li> </ul> The source code, written in C, and based on the ALSA API tests sound cards for number of channels and sample rates, etc. The code was used to find some of the data presented below. <i>The code is entirely the work of <a href="http://dl1dbc.net/">Sabine Cremer, DL1DBC</a>, but is again hosted here with kind permission</i>. <h1>Testing Conditions</h1> BeagleBone Black: Ubuntu Precise 12.04.3 LTS; Openbox window manager; soundcard connected to DELOCK USB hub together with keyboard and mouse. Raspberry Pi: Raspbian Wheezy; Openbox window manager, LXDE desktop; soundcard connected to upper root usb connector; keyboard and mouse connected to DELOCK USB hub WSPR 4.0 r3015 compiled on Raspberry Pi and copied to BeagleBone Black <h1>Results</h1> Originally these results were sent in Excel format, so I have converted the spreadsheet into a table. Click for a bigger picture. WSPR version 4.0 r3015 used as test software. <ul> <li> BBB: BeagleBone Black</li> <li> RPI: Raspberry Pi</li> </ul> <table class="wikitable" align="center" > <tr><td>colspan="2"|Sound Card <td>colspan="3"|USB Device Information<td>colspan="2"|Audio Controller<td>colspan="3"|Capture Capabilities<td>colspan="2"|Works with WPSR4.0</td></tr><tr><td>Trade name<td>Picture<td>vid:pid<td>Vendor<td>Product<td>Vendor<td>Codec<td>Sampling Rate<td>Resolution<td>Input Channels<td>BBB<td>RPi</td></tr><tr><td>LogiLink UA0053<td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/USBSouncard_DL1DBC_LogiLinkUA0053.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/USBSouncard_DL1DBC_LogiLinkUA0053.jpg" width="50" class="aligncenter"></a><td>0d8c:000c<td>C-Media Electronics, Inc.<td>Audio Adapter<td>C-Media<td>CM108<td>44.1 kHz 48 kHz<td>16 bit<td>1<td>Y<td>Y</td></tr><tr><td>7.1 Channel Sound<td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/USBSouncard_DL1DBC_71ChannelSound.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/USBSouncard_DL1DBC_71ChannelSound.jpg" width="50" class="aligncenter"></a><td>0d8c:013c<td>C-Media Electronics, Inc.<td>CM108 Audio Controller<td>C-Media<td>CM108<td>44.1 kHz 48 kHz<td>16 bit<td>1<td>Y<td>N</td></tr><tr><td>3D Sound<td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/USBSouncard_DL1DBC_3DSound.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/USBSouncard_DL1DBC_3DSound.jpg" width="50" class="aligncenter"></a><td>0d8c:013c<td>C-Media Electronics, Inc.<td>CM108 Audio Controller<td>C-Media<td>CM108<td>44.1 kHz 48 kHz<td>16 bit<td>1<td>Y<td>N</td></tr><tr><td>8.1 Channel Sound<td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/USBSouncard_DL1DBC_81ChannelSound.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/USBSouncard_DL1DBC_81ChannelSound.jpg" width="50" class="aligncenter"></a><td>0d8c:013c<td>C-Media Electronics, Inc.<td>CM108 Audio Controller<td>C-Media<td>CM108b<td>44.1 kHz 48 kHz<td>16 bit<td>1<td>Y<td>N</td></tr><tr><td>Goobay 5.1 Surround Sound<td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/USBSouncard_DL1DBC_Goobay51SurroundSound.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/USBSouncard_DL1DBC_Goobay51SurroundSound.jpg" width="50" class="aligncenter"></a><td><td><td><td>C-Media<td>CM108b<td>44.1 kHz 48 kHz<td>16 bit<td>1<td>Y<td>N</td></tr><tr><td>CSL Computer<td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/USBSouncard_DL1DBC_CSLComputer.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/USBSouncard_DL1DBC_CSLComputer.jpg" width="50" class="aligncenter"></a><td>0d8c:000e<td>C-Media Electronics, Inc.<td>Audio Adapter (Planet UP-100, Genius G-Talk)<td>C-Media<td>CM119<td>44.1 kHz 48 kHz<td>16 bit<td>1<td>Y<td>N</td></tr><tr><td>Terratec Aureon Dual USB<td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/USBSouncard_DL1DBC_TerratecAureonDualUSB.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/USBSouncard_DL1DBC_TerratecAureonDualUSB.jpg" width="50" class="aligncenter"></a><td>0ccd:0077<td>TerraTec Electronic GmbH<td>Aureon Dual USB<td>C-Media<td>CM119A<td>44.1 kHz 48 kHz<td>16 bit<td>1<td>Y<td>N</td></tr><tr><td>Asus Xonar U3<td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/USBSouncard_DL1DBC_AsusXonarU3.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/USBSouncard_DL1DBC_AsusXonarU3.jpg" width="50" class="aligncenter"></a><td>041e:30d3<td>Creative Technology, Ltd.<td>Sound Blaster Play!<td><td><td>44.1 kHz 48 kHz<td>16 bit<td>1<td>Y<td>Y</td></tr><tr><td>Sound Blaster Live! SB490<td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/USBSouncard_DL1DBC_SoundBlasterLiveSB490.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/USBSouncard_DL1DBC_SoundBlasterLiveSB490.jpg" width="50" class="aligncenter"></a><td>041e:3040<td>Creative Technology, Ltd.<td>SoundBlaster Live! 24-bit External SB490<td>Creative<td>CA0187-IAQ<td>44.1 kHz 48 kHz 96 kHz<td>24 bit<td>2<td>Y<td>Y</td></tr><tr><td>DELOCK 61961<td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/USBSouncard_DL1DBC_DELOCK61961.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/USBSouncard_DL1DBC_DELOCK61961.jpg" width="50" class="aligncenter"></a><td>040d:3400<td>VIA Technologies, Inc.<td><td>VIA<td>VT1620A<td>8 kHz 16 kHz 44.1 kHz 48 kHz 96 kHz<td>24 bit<td>2<td>N<td>Y</td></tr><tr></tr> </table> Velleman K8055 http://new.george-smart.co.uk/velleman_k8055 draft velleman_k8055 1701 closed page closed 2011-02-25 21:27:13 0 While waiting for my <a href="http://new.george-smart.co.uk/bus_pirate">Bus Pirate</a> to arrive, and thinking about electronics in general, I was wondering if there was something more <i>basic I/O</i> than the <a href="http://new.george-smart.co.uk/bus_pirate">Bus Pirate</a>. After trawling around the internet, I came across references to the <a href="http://www.velleman.eu/distributor/products/view/?id=351346">Velleman K8055</a>. I spoke to a good friend, <a href="http://www.webshed.org">Dave Mills</a>, who has owns one and has set others up for jobs at his university; Dave recommended it and also informed me that it works well under Linux using <a href="http://libk8055.sourceforge.net/">libk8055</a> (C and Python) as well as <a href="http://search.cpan.org/~kost/Device-Velleman-K8055-libk8055-0.04/lib/Device/Velleman/K8055/lbk8055i.pm">lbk8055i.pm</a> (Perl). For those interested, there is also a good (though basic) GUI available, called <a href="http://sites.google.com/site/vellemank8055/">k8055gui</a>. I bought the K8055 as a kit, from <a href="http://www.maplin.co.uk/module.aspx?ModuleNo=42857">Maplin Electronics</a>. This comes either as a kit of parts or as a pre-assembled device. The pre-assembled device costs in at an extra £10. Naturally, I opted for the cheaper option, as I have had a lot of experience designing, building and debugging circuit boards, and feel confident in soldering it. If this is not the case for you, then go for the pre-assembled one - that said, the board wasn't too hard to construct; I'd say about 4/10. I followed the instructions included in the kit and all worked perfectly (as I had expected). I used the Linux command line program, <i>k8055</i>, which enabled me to test everything was working - it was - excellent! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/K8055_Done.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/02/K8055_Done.jpg" width="600" alt="I've Finished! :)" class="aligncenter"></a> <center>My Velleman K8055 - Finished!</center> <h1>Projects</h1> Below is a list of a few projects of mine that used my K8055. They all have software and detail how the stuff works. For simplicity, I have separated these projects onto their own pages: <ul> <li> <a href="http://new.george-smart.co.uk/meter_clock">Meter Clock</a> was the first project. It is two moving coil meters calibrated with time. The K8055's DACs are used to drive the meters.</li> </ul> <ul> <li> <a href="http://new.george-smart.co.uk/saa1064">SAA1064</a> IC was used to drive a large 4 digit 7-segment display. The code implements a poor man's I^2C bus and makes a clock.</li> </ul> <ul> <li> <a href="http://new.george-smart.co.uk/nokia_3310_lcd">Nokia 3310 LCD</a> project uses the K8055 to implement an SPI bus to interface to the <a href="http://new.george-smart.co.uk/nokia_3310_lcd">Nokia 3310 LCD</a>.</li> </ul> <b>FIXME_Category :Electronics</b> VFD Clock http://new.george-smart.co.uk/vfd_clock closed page closed 0 2017-01-05 15:07:10 vfd_clock draft 5589 This page details the construction of my MAX6921 VFD GPS Clock. See <a href="https://github.com/georgesmart1/MAX6921_VFD_GPS_Clock">here for Arduino source code</a> via GitHub. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/IV-11_VFD_BoardsTubes.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/IV-11_VFD_BoardsTubes.jpg" width="600" alt="Boards and IV-11 Tubes" class="aligncenter"></a> Clock that uses TinyGPS to crack GPS strings and displays the time/date on 6 statically driven VFD tubes via 3 MAX6921s. The MAX6921 Blank line is used to dim the tubes based on an LDR reading. <html> <center><iframe width="560" height="315" src="https://www.youtube.com/embed/reNIc5pwW9o" frameborder="0" allowfullscreen></iframe> </center> </html> My implementation of this clock uses an Arduino Uno with 3 MAX6921 ICs, each statically driving 2 tubes. These are arranged in 3 multiples of 2 tubes; hours, minutes, seconds. The clock has the following basic features <ul> <li> Set by GPS using internal hardware UART and TinyGPS.</li> <li> Temperature and Humidity readings with DHT11 sensor.</li> <li> LDR to sense ambient light and dim tubes at night using PWM via MAX6921 BLANK line.</li> <li> Pulsing decimal points as seconds indicator.</li> <li> Smooth fading on VFDs of seconds indicators and changing between numbers on display.</li> <li> Date displayed each minute (at 47 seconds).</li> <li> Open source hardware and Arduino software - hack to your needs!</li> </ul> <h1>Tube Mounting Boards</h1> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/IV-11_VFD_Chip.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/IV-11_VFD_Chip.jpg" width="400" alt="Chip Connection" class="aligncenter"></a> The IV-11 tubes are mounted on <a href="http://dirtypcbs.com/store/designer/details/George+M1GEO/783/m1geo-iv-11-vfd-boards">a small PCB available here in small quantities for cheap</a> which also holds the MAX6921 and some of the passive components to make the tubes work. You'll also need a +35V DC supply for the tubes (I used a cheap £1 Chinese boost converter, from 12V DC to 35V DC), a logic supply (3V to 5.5V DC), and a heater supply (I used a +5 DC supply from a 7805, which gets warm. Don't use the Arduino 5V, as the heaters draw too much current, on these tubes, you don't need an AC heater current). The board will also hold 2 SMT LEDs to underlight the tube. I have used blue LEDs, but any colour will do. There are 3 other components, R1 and R2 are 27 Ohm used to set the heater current (approx 47mA, with 5V DC heater voltage), while R3 and R4 are 10 kOhm used for. D1 and D2 are 1N4148/1N4001 (or almost any other silicon diode which can handle 50mA), and allow the VFD heater to sit slightly above the 0V reference, such that the VFDs are reverse biased with 0V output from the MAX6921, causing the VFDs to be completely blanked (no leakage current) when the segments are turned off (0V). <h2>Board Connections</h2> The tube mounting boards have 4 power connections, and 5 data connections <h3>Power</h3> There are 4 power connections: <ul> <li> Ground: 0V reference for all data pins and other voltages</li> <li> 35V: voltage supply for VFD tubes</li> <li> 5V: voltage supply to logic (3V to 5.5V DC)</li> <li> HEAT: heater voltage (5V with current limiting resistor R1/R2 at 27 Ohms).</li> </ul> <h3>Data</h3> There are 5 data connections: <ul> <li> D_IN: serial data in to the MAX6921</li> <li> D_OUT: serial data carry out from the MAX6921 (for series connecting)</li> <li> CLK: clock line to shift serial bits into MAX6921</li> <li> LOAD: load line to latch bits into buffer of MAX6921</li> <li> BLANK: blanks the VFD tube, allowing for PWM brighness control</li> </ul> <h1>Arduino Wiring</h1> The 12V DC power input from the Arduino power socket. This powers the Arduino. The VIN and GND pins on the Arduino are connected to a 7805 which supplies a +5V DC rail at 1 Amp to the 6 heaters and 3 MAX6921 logic supplies, as well as the boost module, which steps the input voltage up to 35V DC for the VFD Anodes & Grid. These connect directly to the tube boards, all in parallel. With regard to the MAX6921-to-Arduino wiring, the BLANK, LOAD, and CLK lines are tied together, in parallel, to a common pin on the Arduino. The D_IN signals are all fed separately, so all displays are updated simultaneously, allowing for greater update speed (and therefore smoother fading between changing digits). D_OUT is not used in this project. The remaining connections to the Arduino are thus: <table class="wikitable" > <tr><td>Pin Label<td>Hours Board<td>Minutes Board<td>Seconds Board</td></tr><tr><td>D_IN<td>7<td>6<td>5</td></tr><tr><td>CLK<td>4<td>4<td>4</td></tr><tr><td>LOAD<td>2<td>2<td>2</td></tr><tr><td>BLANK<td>3<td>3<td>3</tr> </table> The LDR used to measure the ambient light is connected to analogue A0 on the Arduino, with a 10 kOhm resistor to the 5V DC supply. The DHT11 sensor data line connects to Arduino pin 8, if used. The GPS is fed into the Arduino hardware UART on pin 0 ("->RX"). This input must be disconnected to flash the Arduino, as the GPS string would interfere with the incoming firmware. See [http://www.george-smart.co.uk/wiki/VFD_Clock](http://www.george-smart.co.uk/wiki/VFD_Clock) for full project information. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/IV-11_VFD_BoardSides.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/IV-11_VFD_BoardSides.jpg" width="600" alt="Both sides of IV-11 Board" class="aligncenter"></a> <b><a href="https://github.com/georgesmart1/MAX6921_VFD_GPS_Clock">**** PROJECT SOURCE CODE HERE ****</a></b> Weather http://new.george-smart.co.uk/weather 4851 weather draft 2013-12-15 00:42:43 0 closed closed page Since my weather station died at home, I have not had time to repair and redesign the system to interface with the new remote <a href="http://new.george-smart.co.uk/server">Server</a>. This page is the result of a small script that sources data from London City Airport around 8 km from my home. I will try and get my weather station running again soon. <h1>3 Hours</h1> <html><center> <img src="/graphs/wx/temp_3h.png"><br> <img src="/graphs/wx/humi_3h.png"><br> <img src="/graphs/wx/wind_3h.png"> </center></html> <h1>1 Day</h1> <html><center> <img src="/graphs/wx/temp_1d.png"><br> <img src="/graphs/wx/humi_1d.png"><br> <img src="/graphs/wx/wind_1d.png"> </center></html> <h1>1 Week</h1> <html><center> <img src="/graphs/wx/temp_1w.png"><br> <img src="/graphs/wx/humi_1w.png"><br> <img src="/graphs/wx/wind_1w.png"> </center></html> <h1>1 Month</h1> <html><center> <img src="/graphs/wx/temp_1m.png"><br> <img src="/graphs/wx/humi_1m.png"><br> <img src="/graphs/wx/wind_1m.png"> </center></html> <h1>1 Year</h1> <html><center> <img src="/graphs/wx/temp_1y.png"><br> <img src="/graphs/wx/humi_1y.png"><br> <img src="/graphs/wx/wind_1y.png"> </center></html> Weather Fax http://new.george-smart.co.uk/weather_fax draft weather_fax 2412 page closed closed 2011-08-12 22:45:05 0 This page was moved here: <a href="http://new.george-smart.co.uk/apt_weather_fax">APT Weather Fax</a>. <a href="/contact-me">Please report this message to the webmaster</a>. WellGood Loop http://new.george-smart.co.uk/wellgood_loop page closed closed 0 2017-01-27 23:44:12 draft wellgood_loop 5638 = Introduction & Motivation = <h2>Teardown</h2> Having had a WellBrook Loop ALA1530 for some time, I accidentally transmitted into it during a moment of madness where I wasn't using the RX antenna connector. I had been very impressed with the performance of the loop on LF frequencies, such as on <a href="http://new.george-smart.co.uk/472_khz">472 kHz</a> and 1.8 MHz, and given the cost of a replacement, I decided to attempt a repair! The loop is built into a electrical conduit joint box and potted with black resin compound to keep moisture out of the electronics when the loop is mounted outside. However, this made it difficult to repair. At a local club meet, I was speaking with a friend about my mistake with the loop, and Dave G7UVW who works in an X-Ray lab, offered to x-ray the failed part to assess the feasibility of a repair. You can see these x-rays below. From the x-ray images, it was apparent the device was made on veroboard, with several capacitors, ferrite transformers, and some active transistors. Since I had nothing to lose, I decided to try and remove the resin compound from the device so I could get at the circuit-board. Various methods were tried, but the most successful was a combination of using a craft knife and pick, as well as warm (around 35C) <a href="https://en.wikipedia.org/wiki/Butanone">MEK (methyl ethyl ketone)</a> to dissolve the resin. Over time, we managed to get through, until we could see all of the connections. As a result of being transmitted into, the transistors were blown to pieces, but the parts in place, and, we were able to read the transistor part numbers as being ZTX327. In getting to the circuit board inside the resin, many of the wires to and from the transformers were broken, one of the ferrites was cracked, as was the circuit-board, probably due to my haste in getting the resin off. Many of remaining components were worse for wear. At this point, it was apparent I would need to rebuild the circuit from scratch, and in order to do so, I would need a schematic, since some of the wiring connections were broken. Unable to find a schematic online which matched what I had, I managed to piece the circuit together. As it became obvious that the circuit was balanced, I was able to compare both halves of the circuit to fill in the missing links. I decided upon using BN-73-302 ferrites based on the graphs for the material, and measurements of AL and frequency response. These are the same size and cover the frequency range quoted for the original antenna design. All the available ferrites in the range were tested. <h2>Rebuild</h2> Starting from the schematic I had worked out, I laid out a PCB as I was pretty sure I had the design correct. I added the PCB order onto an existing board order, and waited patently. I made the circuit boards up when they arrived and tested the design which oscillated uncontrollably! This turned out to be due to the phase of the input transformer having positive feedback instead of negative. An easy fix was found, namely, swapping two wires over on T1 (see below). Another small mistake was the holes for the BNC connector pins are slightly too small, and may need to be drilled out or pushed in carefully - this wasn't strictly my fault, since the footprint was the default for BNC connectors in my PCB package. If you do need to do this, be careful that the ground side of the connector is soldered to the top ground-plane on the PCB. The PCB was designed for the original ZTX327 transistors. However, they are now obsolescent, and expensive, so I have been using MSPH10's, which do not fit directly into the PCB. The ZTX653 is also a recommended replacement for new designs. See the section on transistors below. Finally, with the circuit working as predicted, I connected the loop and observed the functionality of the newly built board to be indistinguishable from the original. I was pleased with the result! One thing I did notice is that the transistors get warm when in use - I suspect this is due to the high DC quiescent collector current, which keeps the intermodulation distortion low. <h1>Original Images</h1> Click on images to enlarge. X-Rays provided by Dave G7UVW and Dave M0TAZ. <center><table class="wikitable" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/WGL_Xray_1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/WGL_Xray_1.png" width="230" class="aligncenter"></a></tr> </table> <table class="wikitable" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/WGL_Xray_4.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/WGL_Xray_4.png" width="350" class="aligncenter"></a></tr> </table> </center> <h1>The Schematic</h1> An early version of the PCB had C6 incorrectly placed next to T2. Version 1.1 of the PCB has this issue fixed. In practice, this made no noticeable difference, but will be correct on future versions of the board. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/WGL_Schematic.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/WGL_Schematic.png" width="700" class="aligncenter"></a> <h1>Bill of Materials</h1> <h2>Loop Board</h2> Components for the loop PCB. <center><table class="wikitable" > <tr><td>style="font-weight: bold;" | Component<td>style="font-weight: bold;" | Value<td>style="font-weight: bold;" | Count<td>style="font-weight: bold;" | Supplier</td></tr><tr><td>PCB<td>WellGood PCB<td>1<td>I may have spare boards <a href="http://new.george-smart.co.uk/contact_me">Contact Me</a></td></tr><tr><td>C1, C2<td>82pF<td>2<td><a href="http://uk.farnell.com/1694324">Farnell 1694324</a></td></tr><tr><td>C3, C7<td>2.2uF<td>2<td><a href="http://uk.rs-online.com/web/c/?searchTerm=870-8752">RS 870-8752</a></td></tr><tr><td>C4, C5, C10, C13<td>100nF<td>4<td><a href="http://uk.farnell.com/2525325">Farnell 2525325</a></td></tr><tr><td>C6<td>10pF<td>1<td><a href="http://uk.farnell.com/2309022">Farnell 2309022</a></td></tr><tr><td>C8, C9<td>330nF<td>2<td><a href="http://uk.farnell.com/2525327">Farnell 2525327</a></td></tr><tr><td>R1<td>1.2k<td>1<td><a href="http://uk.farnell.com/2329887">Farnell 2329887</a></td></tr><tr><td>R2<td>2k<td>1<td><a href="http://uk.farnell.com/2329911">Farnell 2329911</a></td></tr><tr><td>Q1, Q2<td>ZTX327 (<i>see below</i>)<td>2<td><a href="http://www.ebay.co.uk/sch/i.html?_nkw=ZTX327">eBay ZTX327</a> or ZTX653 <a href="http://uk.farnell.com/9525580">Farnell 9525580</a></td></tr><tr><td>D1, D2, D3, D4<td>1N4148<td>4<td><a href="http://uk.farnell.com/2677463">Farnell 2677463</a></td></tr><tr><td>CON3<td>RF-BNC<td>1<td><a href="http://uk.farnell.com/1712350">Farnell 1712350</a></td></tr><tr><td>L1<td>1.5mH<td>1<td><a href="http://uk.farnell.com/1857713">Farnell 1857713</a></td></tr><tr><td>LP1, LP2<td>Loop Connection (1 metre)<td>2<td>---</td></tr><tr><td>RV1<td>100R<td>1<td><a href="http://uk.farnell.com/9353160">Farnell 9353160</a></td></tr><tr><td>T1, T2<td>BN-73-302 / Fair-Rite 2873000302 (<i>see below</i>)<td>1<td><a href="http://www.mouser.co.uk/ProductDetail/Fair-Rite/2873000302">Mouser 623-2873000302</a></td></tr><tr><td>FB1, FB2<td>TUB4/2/5-3B1 (<i>or similar</i>)<td>2<td><a href="http://uk.farnell.com/273156">Farnell 273156</a></tr> </table> </center> <h2>Bias Tee Board</h2> Recommended components for a Bias-T board. <center><table class="wikitable" > <tr><td>style="font-weight: bold;" | Component<td>style="font-weight: bold;" | Value<td>style="font-weight: bold;" | Count<td>style="font-weight: bold;" | Supplier</td></tr><tr><td>PCB<td>BiasT Board<td>1<td>With main loop PCB</td></tr><tr><td>CON101, CON102<td>RF-BNC<td>2<td><a href="http://uk.farnell.com/1712350">Farnell 1712350</a></td></tr><tr><td>C101, C102<td>2.2uF<td>2<td><a href="http://uk.rs-online.com/web/c/?searchTerm=870-8752">RS 870-8752</a></td></tr><tr><td>Cx*<td>47uF<td>1<td><a href="http://uk.farnell.com/9451170">Farnell 9451170</a></td></tr><tr><td>L101<td>1.5mH<td>1<td><a href="http://uk.farnell.com/1857713">Farnell 1857713</a></td></tr><tr></tr> </table> </center> Cx* is connected cross the input terminals of the bias tee PCB. <h1>The PCBs</h1> Version 1.0 Note that on this version 1.0 board, that C6 is incorrectly positioned. It should be installed between the two transistor bases, across pins 3 and 5 on T1. <center><table class="wikitable" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/WGL_PCB_1.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/WGL_PCB_1.png" width="350" class="aligncenter"></a></tr> </table> </center> <!--- Version 1.1 <center><table class="wikitable" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/WGL_PCB_1a.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/WGL_PCB_1a.png" width="350" class="aligncenter"></a></tr> </table> </center> ---> <h1>Build Notes</h1> Winding and mounting transformer T1 is the trickiest part of the build. The making of both transformers is described in detail. You should set the variable resistor <i>RV1</i> approximately half way before initially powering the board. For the remaining components, it is simply a process of soldering the parts in. The notes describe the recommended approach. <h2>T1</h2> Start off by making some bifilar wire; you can twist two bits of enameled copper wire together. It is often helpful to use two different colours of wire, or use a permanent marker to colour one of the wires in the twisted pair. If you can't colour the wires, it's easy to sort them after winding using a Ohm-meter. I've used 0.25 mm wire as I had that available, but this not too critical, as long as all of the windings fit on the cores. The original had 0.2 mm wire. The first job is to wind the loop (input) side of T1. Wind 7 turns of the bifilar wire around the BN-73-302 core, creating a centre-tapped point, as shown below. The numbers refer to the solder pads in the colour placement diagram. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/WGL_T1_1A.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/WGL_T1_1A.png" width="350" class="aligncenter"></a> Flip the core around and repeat the process to make the first of the secondary windings for T1. As with the primary, two of the wires are connected together to form the centre-tap and will connect to pin 4. The two remaining wires need to be crossed to prevent the circuit from oscillating. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/WGL_T1_2A.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/WGL_T1_2A.png" width="400" class="aligncenter"></a> At this point, it may be easier to mount T1 transformer to the PCB and add the two single turn windings on afterwards - with a binocular core, one turn is a 'U' loop through both holes. These last two windings are made from a single piece of wire (not bifilar), which go in through one side of the core, and out of the other. One of the windings goes from pin 1 to pin 6, and the other between pin 2 and pin 7, as shown. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/WGL_T1_2B.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/WGL_T1_2B.png" width="400" class="aligncenter"></a> At this point, you should have transformer T1 mounted correctly. <h2>T2</h2> Using the same bifilar wire as you made for T1, wind 8 turns for the primary of transformer T2. Separate the two strands and create the centre-tap as before, shown below. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/WGL_T2_1A.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/WGL_T2_1A.png" width="350" class="aligncenter"></a> The secondary winding of T2 is 6 turns of standard (single core) enameled copper wire, as shown below. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/WGL_T2_2A.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/WGL_T2_2A.png" width="400" class="aligncenter"></a> Mount this to the PCB and transformer T2 is also complete. <h2>Transistors</h2> The transistors used in the original design were ZTX327, and so this board is designed to fit those. These are now obsolete and are quite expensive to acquire. A ZTX653 has a matching pinout with suitable characteristics, and would be a direct drop-in replacement for the ZTX327. Preliminary tests were done with an MPSH10, but the pinout is different, and so require some tweaking to fit to the board. The original ZTX327 transistors had a hFE-min of 15. It is important not to have too high forward current gain (hFE) on the transistors, as this will disturb the correct biasing of the transistors. The pinouts are shown below. <center><table class="wikitable" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/WGL_ZTX327.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/WGL_ZTX327.png" width="125" class="aligncenter"></a></td></tr><tr><td>ZTX327 / ZTX653 <td>MPSH10</tr> </table> </center> To mount the MPSH10 on the PCB, you should switch the base and emitter wires around. The ferrite bead on the base will prevent them shorting. Note that the transistors will get warm when the circuit is in use - this is due to the high quiescent current through the transistor pair, which maintains a high intermodulation level. <h2>RV1</h2> The variable resistor should be set to approximately half way before initially powering the loop. Once you have built the board, you will need to balance the current through the two transistors. The easiest way to do this is to adjust RV1 to minimise the potential difference across C3. Ideally this should be 0 mV, or as close as possible, within a few milli-Volts. Tacking two wires to the back of C3 allows you to easily adjust RV1. Remove once you are happy with the balance. Remember that the transistors Q1 and Q2 will get warm, especially if they are not balanced. This heating greatly effects their HFE (gain), meaning their temperatures will effect the balance. You should adjust the balance slowly, allowing the devices to heat up/cool down, as you are adjusting. I found blowing gently on the PCB between adjustments helped the temperature to settle more quickly <h2>CON3</h2> The BNC connector is used to connect back to the shack. The ground side connects to the top copper. On the first batch of boards, the drill holes for the BNC connectors may be too small and thus require drilling out. <h2>Capacitors</h2> Capacitors C1, C2, and C6 are ceramic disc type capacitors. The remaining are poly-carbonate. This is especially important in any RF signal paths (C3 and C7), where ceramic disc capacitors are not of high enough quality. <h2>The remaining parts</h2> The remaining parts can be fitted to the board as standard. <h1>Power</h1> The loop is powered by a bias-T, which injects DC along the coax. The original bias-T was not examined, but, we have used a 2.2uF capacitor such as C7 and the same 1.5mH inductor such as L1. <h1>Credits</h1> This project was made possible with the help of the following people. <ul> <li> <a href="http://m0taz.co.uk">Dave M0TAZ</a></li> <li> <a href="http://www.webshed.org">Dave G7UVW</a></li> <li> <a href="http://www.qrz.com/db/G8OCV">Chris G8OCV</a></li> Wireless Cracking http://new.george-smart.co.uk/wireless_cracking 3380 wireless_cracking draft 0 2012-04-21 01:29:55 closed closed page This page describes how to retrieve a lost wireless key. This process more describes my success with the a widely excepted method. I pretty much followed this method through. Visit <a href="http://www.aircrack-ng.org/doku.php?id=simple_wep_crack">Aricrack-ng Simple WEP Crack</a> for a guide. <h2>My Setup</h2> <ul> <li> Dell Inspiron 530</li> <li> Mint Linux 6 (an Adaption of Ubuntu 8.10)</li> <li> Aircrack-ng 1.0 rc1 - (C) 2006,2007,2008 Thomas d'Otreppe (From Ubuntu Repos)</li> <li> Linksys (Cisco) Wireless WUSB54Gv4</li> <li> 2 rolled up copies of the Evening Standard, to allow the antenna into freespace away from the building a little</li> </ul> The antenna setup is shown below: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Crackantenna.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Crackantenna.jpg" width="600" alt="Bad photo of my wifi antenna on newspapers from the window" class="aligncenter"></a> # The antenna element, typically vertically polarised # The network card, Linksys WUSB54Gv4 # The newspapers <h2>What Happened</h2> By following the instructions on <a href="http://www.aircrack-ng.org/doku.php?id=simple_wep_crack">this page</a>, I was able to retrieve the key for my example. It should be noted here that after I put the WUSB54Gv4 into monitor mode, using <i>airmon-ng</i> it created a virtual device, <i>mon0</i>. I referred tho this device and not <i>wlan0</i>. This method worked fine. I followed the tutorial completely, and collected around 4million IVs. Computing of the actual key with <i>aircrack-ng</i> too in the region of 5 seconds, although reading in 1.7GBy of data took around 1 minute. The image below shows the terminal windows doing the work: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/wepcrack.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/wepcrack.png" width="600" alt="Terminal windows doing the work" class="aligncenter"></a> <ul> <li> Top/Left: <i>airodump-ng</i> saves the IV's (Initialisation Vectors) to the harddisk, as a <i>.cap</i> file.</li> <li> Top/Right: <i>aireplay-ng</i> collects ARP requests, and then resends them back into the network, generating more IVs and encrypted data.</li> <li> Bottom/Left: <i>aircrack-ng</i> reads the <i>.cap</i> files, and computes the key using 'clever algorithms'.</li> <li> Bottom/Right: A section of my desktop wallpaper showing though :-)</li> </ul> <b>FIXME_Category :Computers</b> <b>FIXME_Category :Radio</b> Workshop http://new.george-smart.co.uk/workshop 2921 workshop draft 2011-12-30 17:48:24 0 closed closed page This page was moved here: <a href="http://new.george-smart.co.uk/the_shack">The Shack</a>. <a href="/contact-me">Please report this message to the webmaster</a>. WSPR http://new.george-smart.co.uk/wspr draft wspr 4413 page closed closed 0 2013-04-29 00:34:58 In order to use WSPR under Linux, I had to compile K1JT's WSPR software. This was a little tricky, but while I was at it, I documented the process and a few useful URLs too. See my <a href="http://new.george-smart.co.uk/compiling_wspr">Compiling WSPR</a> and <a href="http://new.george-smart.co.uk/compiling_wspr_x">Compiling WSPR-X</a> pages for more information. There is a <b><a href="http://machamradio.com/2011/02/wspr-now-available-for-osx/">Mac OS X build</a></b> too. You may also be interested in my <a href="http://new.george-smart.co.uk/wspr_statistics">WSPR Statistics</a> page where I graph some of the parameters from WSPR. I have time-lapse videos of WSPR on YouTube too: <a href="http://www.youtube.com/watch?v=Vm3SuRKX0X0">TimeLapse WSPR Reception</a> and <a href="http://www.youtube.com/watch?v=uWeSA6w8qsA">TimeLapse WSPR Map</a> Have you seen my <b><a href="http://new.george-smart.co.uk/arduino_wspr">Arduino Based WSPR Transmitter</a></b> and my <b><b>FIXME: 472 kHz WSPR|472 kHz (630m) WSPR </b></b> and <b><a href="http://new.george-smart.co.uk/2m_wspr">2 metres WSPR</a></b> pages? <h1>10 Metres Wide Open</h1> <div style="text-align: right;"><b>Tuesday, 23th October 2012</b></div> Today 10m was wide open and so I made the most of it. I had left WSPR bandhopping. This is what it picked up, RX only. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_20121023_Map.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_20121023_Map.png" width="600" alt="WSPR Map 23 October 2012" class="aligncenter"></a> <h1>A Good Saturday</h1> <div style="text-align: right;"><b>Sunday, 21th October 2012</b></div> This image was captured of the last 24 hours today. It's multiple images joined. I am pretty pleased with the reception only coverage; I really need to get my transmitter going again! This is currently band-hopping! I just lost the ZL4 and VK4 stations by minutes within the last 24 hours! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_20121021_Map.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_20121021_Map.png" width="600" alt="WSPR Map 21 October 2012" class="aligncenter"></a> <h1>Receiving on the Doublet</h1> <div style="text-align: right;"><b>Tuesday, 16th October 2012</b></div> Today I started receiving on the doublet antenna again following the recent good conditions on HF. 10 metres has been very open the past month, but it seems it's tailing off now. I have probably missed it, though I did get some great SSB contacts on 10. The map below was taken on Wednesday, 17th November, on 20 metres - receive only. Using WSPR 3.0.1 on Ubuntu 12.04 LTS. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_20121017_Map.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_20121017_Map.png" width="600" alt="WSPR v3.0.1" class="aligncenter"></a> <h1>Transmitting Again</h1> <div style="text-align: right;"><b>Saturday, 28th October 2011</b></div> Over the last week I have started transmitting again. Radio conditions have improved considerably since previous posts. The images below show some recent WSPR reception spots as well as my part in the map of spots: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_20111029_Prog.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_20111029_Prog.png" width="600" alt="WSPR v3" class="aligncenter"></a> The spots map (image) was taken at the time of this post. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_20111029_Map.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_20111029_Map.png" width="600" alt="WSPR v3" class="aligncenter"></a> <h1>Yaesu FT-857, CAT Interface and Mac OS X</h1> <div style="text-align: right;"><b>Saturday, 28th May 2011</b></div> So in the last month I have purchased a <a href="http://new.george-smart.co.uk/yaesu_ft_857d">Yaesu FT-857D</a> and designed & built a <a href="http://new.george-smart.co.uk/yaesu_cat_interface">Yaesu CAT Interface</a> for controlling the radio via PC. I wanted to try transmitting again and having set my 857 up inside the house, I would aim to give it a try. My main PC runs Ubuntu Linux, and although this would have no problems running the WSPR program, it only has one soundcard, and I use that for listening to music! I whipped out the MacBook, and had a hunt about online. I was just getting prepared to lookup how to compile the WSPR program (ready for another <a href="http://new.george-smart.co.uk/compiling_wspr">tutorial</a>!) and then I noticed that <a href="http://www.nh6z.net/">NH6Z</a> had beaten me to it! If you are looking to run WSPR on OS X, the WSPR section of this page is what you need: <a href="http://www.nh6z.net/Amatuer_Radio_Station_NH6Z/Other_Peoples_Software.html">http://www.nh6z.net/Amatuer_Radio_Station_NH6Z/Other_Peoples_Software.html</a>. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_OSX.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_OSX.png" width="600" alt="WSPR 2.21 running on Mac OS 10.6" class="aligncenter"></a> <h2>CAT Interface</h2> <div style="text-align: right;"><b>Tuesday, 26th July 2011</b></div> As Griff (M0HWS) mentioned in an email to me, to use the CAT interface with the OS X build of WSPR requires putting the <a href="http://hamlib.sourceforge.net/">HamLib</a> libraries, specifically the <i>rigctl</i> binary. I cannot remember the exact details for how I did this, but I can offer you my Application to download. It is based on WSPR 3.0 from NH6Z (as above) with the HamLib files added in by myself. Feel free to strip the hamlib and rigctl files from this package and add them to your own, or simply run my package (after changing the callsign, of course!). The files required are located inside the Package's Resource folder: <i>/WSPR.app/Contents/Resources/</i> It should be evident which files are hamlib as they all have that in their name. Don't forget <i>rigctl</i> too. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/WSPR_3_OSX_CAT.tar.bz2">WSPR 3.0 with CAT Files Included (HamLib & RigCtl)</a> (~10MB) TAR file includes WSPR.app which is an OS X compatible Application. <h1>A Busy Day</h1> <div style="text-align: right;"><b>Friday, 7th January 2011</b></div> Yesterday and Today have been pretty busy in the WSPR world. I have had the (Dad's) Yaesu FT-817 on as a receiving station for a while now. I check the screen on the computer regularly. Today, I checked the software as usual; it was very busy - this is still on about 6 meters of wire. I decided to put a screenshot on here, so here it is: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_SW_07012011.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_SW_07012011.png" width="600" alt="A busy day" class="aligncenter"></a> Must be because it's my birthday! <h1>Software Version 2.20</h1> <div style="text-align: right;"><b>Friday, 3rd December 2010</b></div> I haven't done any WSPR between the last post on 2/Nov/2010, and today. Before firing up the software I tool a look on <a href="http://WSPRnet.org">WSPRnet</a> to see if there were any special events running today - there weren't. I did, however, notice a new software version, 2.20_r2279. I had a quick look at the change logs between the version I had before and this new version, to find that frequency hopping was a new feature - I had been wondering about that for some time. I compiled the software in the same manor as before, as described <a href="http://new.george-smart.co.uk/compiling_wspr">here</a>. The first RX cycle I received a few stations (SP9PW, OE3KFB, HB9EFK, SP7FFY). I will report back with more detail later today. <h1>More Locations</h1> <div style="text-align: right;"><b>Tuesday, 2nd November 2010</b></div> Today I noticed a few more interesting locations. I managed to be heard in Australia by VK2ZIW, as well as Wake Island (USA) by WA2YUN. The Wake Island prompted some interesting reading, see <a href="http://en.wikipedia.org/wiki/Wake_Island">Wikipedia: Wake Island</a>. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_Map_02112010.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_Map_02112010.png" width="600" alt="High Res Map - Click for better image" class="aligncenter"></a> <h1>Weekend</h1> <div style="text-align: right;"><b>Saturday, 30th October 2010</b></div> Looking through the spots database at <a href="http://WSPRnet.org">WSPRnet</a>, it seemed that there was a lot more activity on weekends. I assumed there would be more stations online. Having set the station up, I decided to reside on 30m - It was second busiest to 20m, but less noisy. About 13:00 UTC, I checked up on the station, only to find that I had reports from Vietnam (XV4TUJ), New Zeland (ZL1JA), and another from Japan (JQ2WDO). The previous reports of Brazil (PU2BFG) were now more than 24 hours old, and were not showable on the map. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_Map_230102010.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_Map_230102010.png" width="600" alt="High Res Map - Click for better image" class="aligncenter"></a> <blockquote> <b>Hearing</b>: DF5FF, DG6ABK, DG6RCH, DL4RU, DM5HF, OE3KFB, PE1DCD <b>Heard by</b>: CT1ERW, DA4XIQ, DF2LV, DF5FF, DG3GBE, DG6ABK, DG6RCH, DH1GD, DJ0MDO, DL0NOT, DL4MFC, DL4RU, DM5HF, F2WA, F6BIA, F6DED, G0KTN, G6WZA, HB9BNO, I4ZTO, JQ2WDO, K1NOX, KD5ALJ, LA3JJ, LY2BOS, M0BLP, OE3KFB, ON7KO, OZ7IT, PA0QRB, PA1GSJ, PE1DCD, RA3ZSE, UNLIS, VO1HP, W1BW, W3PRB, XV4TUJ, ZL1JA </blockquote> <h1>A Second Transmitting Attempt</h1> <div style="text-align: right;"><b>Thursday, 28th October 2010</b></div> The map below is a map of the activity during the first day of 27th October 15- and 80-meter event. Much of the European stuff comes via 80m and 30m, where as The Americas were coming in thick and fast via 15m. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_Map_28102010.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_Map_28102010.png" width="600" alt="High Res Map - Click for better image" class="aligncenter"></a> I got up pretty early this morning, 9am (very early for a student), and further tweaked the transmit settings until they worked correctly. I think now, if anything, I am under-modulating, but I'd rather that than making a mess of the bands. About 14:00 UTC, after returning from being out a short while, I checked back in to look at the reports. I was pleased to have been heard in many eastern American states, Canada, and Brazil - and only on 2W. Here is a list of callsigns which I could hear or where hearing me during the morning of the 28th October on the 15-meter QRP activity day. Nothing was received on 80-meters due to insane amounts of local QRM at +40dB. <blockquote> <b>Hearing</b>: DF5FF, DK9MS, DL2NI, DL5GAC, DL6NL, EA4ETR, F6AIU, IQ4AX, K1JT, K9AN, K9IUQ, KA1MDA, KC2MOT, KD7YZ, N1NAZ, OK2TPT, RA3LW, RD3AMP, W3PM, W8AC <b>Heard by</b>: G3KZU, K1JT, M0JEK, NS2B, PU2BFG, RA3LW, RD3AMP, SWL-VE3, VE3BXP, W1BW, W8AC </blockquote> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_Map_28102010_2.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_Map_28102010_2.png" width="600" alt="High Res Map - Click for better image" class="aligncenter"></a> <h1>Transmitting</h1> <div style="text-align: right;"><b>Wednesday, 27th October 2010</b></div> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_1ST_TX_Images.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_1ST_TX_Images.png" alt="TX Signal with images" class="aligncenter"></a> After noticing on the WSPRnet site that there were activity days, and that I was currently in one (15m and 80m), I decided to join in. I made cables for my radio, and set it all up, working out frequency shifts, etc to ensure I was in band. I set up everything according to instruction from both WSPR and ICOM manuals. After a while, I had tweaked enough, and so hit the TX Next button. At the next timeslot, the node started transmitting, and all was well. After the timeslot, I looked to find myself on the website. All was not good. I noticed that I was on a single station's received list twice. I guessed pretty much instantly I was over-modulating, and thus putting two signals out, either side of where i am supposed to be. The screenshot shows this to be the likely cause, and the text below shows the duplicate entries: <blockquote> Timestamp Call <b>MHz</b> SNR Drift Grid Pwr Reporter RGrid km az 2010-10-27 00:32 M1GEO <b>10.140181</b> -1 0 JO01cn 5 DG0OPK JO50gq 727 94 2010-10-27 00:32 M1GEO <b>10.140281</b> -24 0 JO01cn 5 DG0OPK JO50gq 727 94 </blockquote> Finally, an extract of the WSPRnet database, showing all stations that have heard me thus far... I haven't managed to sort this problem yet, as it is getting towards 2:30am. It's a job for this morning. Also, I would like to get onto 15 and 80m. 80m is noisy here, maybe 15m would be a good start... Tomorrow will tell. <h1>Receiving Map</h1> <div style="text-align: right;"><b>Tuesday, 26th October 2010</b></div> While in the Lab at university, to pass the time, I was looking around <a href="http://wsprnet.org/">WSPRnet</a> where I found a map function. I had seen this before but never been tempted to scroll down - today, I noticed there are options to set what is displayed. So I set my callsign, and took a few printscreens which I joined together, below. I was pleased that there are a good number of stations I can hear. This image shows 32 recent spots. The thicker lines mean a better SNR or more spots - I'm unsure. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_Map_26102010.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_Map_26102010.png" width="600" alt="High Res Map - Click for better image" class="aligncenter"></a> <h1>Second Attempt</h1> <div style="text-align: right;"><b>Monday, 25th October 2010</b></div> Spurred on by yesterday's success, I installed the WSPR software on my MacBook. This went pretty smoothly, compiling once again. Setting up the software in pretty much the same way as before, I connected the Line-In to the Icom IC-7400 with a full size G5RV. Initial results were disappointing, as I could hear less than I could on the 6 meters of wire! Shocking. I am curious now, as to if I am hearing the entire band (i.e. if the radios frequency is out. I will check this soon enough. I also need to wait to see if things pick up too - after all, the main idea is to understand band conditions! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_Att2.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_Att2.jpg" width="600" alt="30m on IC-7400 and Full-G5RV" class="aligncenter"></a> <h1>First Attempt</h1> <div style="text-align: right;"><b>Sunday, 24th October 2010</b></div> After compiling the software, I decided to have a play. With the Yaesu FT-817, I connected an audio cable from the headphone socket of the receiver to the Line Input on my computers soundcard, set the input source in Ubuntu's sound manager, and then set the audio level as instructed by the WSPR program. Not really knowing what to do, I then went back and read the instructions. I had previously created a <a href="http://wsprnet.org/">WSPRnet</a> <a href="http://wsprnet.org/drupal/user/10418">account</a>, so I entered the details, and selected to upload spots. After a bit of fiddling, and on a wire about 6 meters long, I received about 5 German stations in the first 2 minutes. Impressed :) I couldn't hear anything on any of the bands. Not even CW. There was quite a bit of QRM, as we live in a busy neighborhood - Laptops, PCs, WiFi, etc. There was a fair bit of RF noise, yet these signals continued to come through. During the first hour, on 6 meters of wire, stuffed in the back of a PL259, I received 39 stations. The image below is a screenshot of the software running, under poor conditions. I will get the radio on a full sized G5RV soon. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_Att1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/04/WSPR_Att1.jpg" width="600" alt="30m on FT-817 and 6 meters of vertical long wire from bedroom to ground" class="aligncenter"></a> <b>FIXME_Category :Radio</b> <b>FIXME_Category :WSPR</b> <b>FIXME_Category :Computers</b> Wspr http://new.george-smart.co.uk/wspr 3641 draft wspr 0 2012-11-05 04:18:47 closed page closed This page was moved here: <a href="http://new.george-smart.co.uk/wspr">WSPR</a>. <a href="/contact-me">Please report this message to the webmaster</a>. WSPR Red Pitaya http://new.george-smart.co.uk/wspr_red_pitaya 0 2017-01-31 23:56:39 closed page closed 5658 draft wspr_red_pitaya I recently had the chance to borrow a <a href="http://redpitaya.com/">Red Pitaya</a> board from <a href="http://www.webshed.org">Dave, G7UVW</a>. The board is essentially 2 ARM v7 cores running at 300 MHz and an FPGA fabric. My knowledge isn't great enough to make this work on my own, but, fortunately the <a href="http://pavel-demin.github.io/red-pitaya-notes/sdr-transceiver-wspr/">excellent work by Pavel Demin</a> makes an 8-slice SDR receiver, records to <i>.c2</i> files, and then runs <i>wsprd</i> to decode the recorded c2 files, uploading spots with <i>curl</i> to the WSPRnet website. The process isn't too bad to get started, so off I went. Firstly, I connected the antenna to the device. Here, it's important to note that the input of the Red Pitaya is high impedance, since it is designed as a scope. The <a href="http://wiki.redpitaya.com/index.php?title=Hardware_Overview">Red Pitaya Hardware Overview</a> states an input impedance of 1 MΩ at 10 pF for both channels. I therefore used a 50Ω dummy load (SMA terminator) and SMA tee-piece to lower the input impedance to around 50Ω as is standard. I then connected the <a href="WellGood">Loop</a> antenna to the 50Ω assembly. Using the existing <i>scopegenpro</i> application on the Red Pitaya, I was able to confirm the correct connection of the antenna. The loop was receiving something... <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/RedPitaya_WSPR_Scope.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/RedPitaya_WSPR_Scope.png" width="600" alt="Red Pitaya Scope" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/RedPitaya_WSPR_FFT.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/RedPitaya_WSPR_FFT.png" width="600" alt="Red Pitaya Spectrum View" class="aligncenter"></a> From here, I downloaded <a href="http://pavel-demin.github.io/red-pitaya-notes/sdr-transceiver-wspr/">the WSPR SDR Transceiver SD Card Image by Pavel Demin</a>, and burned the unzipped image to an SD Card using <i>dd</i>: <blockquote> sudo dd bs=4M status=progress if=/tmp/red-pitaya-wspr-debian-8.6-armhf-20161219.img of=/dev/sdX </blockquote> Since I am on a Linux machine, the new SD card partitions were mounted following the image burn completion. From there, it's a case of editing two files: <ul> <li> /root/decode-wspr.sh </li> <li> /root/write-c2-files.cfg</li> </ul> In the first, <i>/root/decode-wspr.sh</i>, you must enter your callsign and QRA locator (in 6-digit format), as below: <blockquote> # CALL and GRID should be specified to enable uploads CALL=M1GEO GRID=JO02OK </blockquote> In the second, <i>/root/write-c2-files.cfg</i>, you can enter any frequency offset calculation in PPM, as well as define the bands to be used: <blockquote> // frequency correction, from -100.0 ppm to +100.0 ppm corr = -7.2; </blockquote> followed by, in my case, bands 2200m to 20m: <blockquote> bands = ( { freq = 0.137500; chan = 1; }, { freq = 0.475700; chan = 1; }, { freq = 1.838100; chan = 1; }, { freq = 3.594100; chan = 1; }, { freq = 5.288700; chan = 1; }, { freq = 7.040100; chan = 1; }, { freq = 10.140200; chan = 1; }, { freq = 14.097100; chan = 1; } ); </blockquote> The frequency correction in PPM can be calculated using the <i>scopegenpro</i> application, carefully measuring a known frequency, and then calculating the error as parts-per-millon. I ended up using the <a href="https://www.jitterlabs.com/support/calculators/ppm">JitterLabs PPM Calculator</a> to help with this. As you see above, I arrived at an offset of -7.2 ppm. You can also use WSPR spots to compare your reported frequency to that of the average reported frequency, and calculate your offset from the average. I saved the changes on the SD card, and, booted up the Red Pitaya with the SD card. It sprung into life immediately. After running for a while, I noticed that the spots had stopped. This turned out to be caused by an incorrect offset, and the fact that the master clock on the Red Pitaya drifted significantly with temperature. I ended up recalibrating against received WSPR spots slowly, to ensure that the temperature drift wasn't playing much of a part. This turned out to be the issue. My first calibration value was around -56 ppm! I also decided to add a bit of front end gain. Since I was using an active loop, the noise figure was already set by the loop, and so I simply used an MSA0286 wideband MMIC to add between 10-13 dB gain. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/RedPitaya_WSPR_MSA0286.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/RedPitaya_WSPR_MSA0286.png" width="400" alt="Red Pitaya MSA0286 Front End" class="aligncenter"></a> I left the decoder going overnight, and captured a lot of spots, all of which were uploaded to the WSPRnet site. An interesting aspect of many of the spotted bands can be seen: <blockquote> 170129 0610 3 -19 0.54 0.1374671 DC0DX JO31 10 0 1 0 170129 0610 8 -7 2.37 0.4756944 LA8AV JO59 30 0 1 0 170129 0610 6 -9 1.77 1.8380718 PA2W JO22 37 0 1 0 170129 0610 7 4 0.71 1.8381083 ON4LUC JO20 40 0 1 0 170129 0610 1 -21 1.69 3.5940149 G3JKF JO00 37 -1 1 0 170129 0610 2 -26 1.13 3.5940609 LA4YGA JO48 33 0 61 0 170129 0610 1 -30 2.67 10.1401380 G0NWB JO02 23 0 2094 -64 170129 0610 3 -23 1.05 14.0970763 M0HGU JO02 37 -2 1 0 </blockquote> After around 20 hours of spotting, I extracted the following map: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/RedPitaya_WSPR_WSPRmap.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/RedPitaya_WSPR_WSPRmap.png" width="600" alt="Red Pitaya WSPR Map" class="aligncenter"></a> Using LibreOffice Calc, I quickly graphed the number of spots per band. I will try and do some more analysis when I have a little more time. This graph shows 5767 spots: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/RedPitaya_WSPR_BandSpots.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/RedPitaya_WSPR_BandSpots.png" width="600" alt="Red Pitaya WSPR Band Spots" class="aligncenter"></a> The following map was taken at midnight on the 31st January 2017: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/RedPitaya_WSPR_WSPRmap2.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2017/01/RedPitaya_WSPR_WSPRmap2.png" width="600" alt="Red Pitaya WSPR Map 2" class="aligncenter"></a> <i>More to come on this soon...</i> WSPR Statistics http://new.george-smart.co.uk/wspr_statistics 3461 draft wspr_statistics 0 2012-05-20 19:11:09 closed page closed One of my interests is looking at data, representing it and looking for trends. With <a href="http://new.george-smart.co.uk/wspr">WSPR</a> the data it provides is great for doing looking at trends to do with the propagation of radio waves. Here, during the good HF conditions experienced over November 2011 I left <a href="http://new.george-smart.co.uk/wspr">WSPR</a> receiving constantly as I often do. The purpose being to collect enough data to enable me to observe the trends in propagation. You may also be interested in my time-lapse videos of WSPR on YouTube: <a href="http://www.youtube.com/watch?v=Vm3SuRKX0X0">TimeLapse WSPR Reception</a> and <a href="http://www.youtube.com/watch?v=uWeSA6w8qsA">TimeLapse WSPR Map</a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/WSPR_Stat_AnglesDX.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/WSPR_Stat_AnglesDX.png" width="500" alt="Bearings on DX from M1GEO" class="aligncenter"></a> <h1>Time of Day</h1> In radio communications, especially my hobby, Ham Radio, the <i>aim of the game</i> is to get your signal to go as far as possible. Signal propagation is influenced by layers of the Earth's atmosphere, amongst other factors, which change throughout the day. These first plots aim to show how the distance of communication changes with time of day. These results have been aggregated over time (6 weeks for 30 metres, 1 week for 10 metres), and then I have plotted using <i>gunplot</i>. <center><table cellpadding="10" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/WSPR_Stat_R30.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/WSPR_Stat_R30.png" width="300" class="aligncenter"></a></tr> </table> Click an image to get more information, and follow the link on the details page for high-resolution images. </center> As I had expected, distance is <i>normally distributed</i> around mid day - this can be seen from the bottom histogram plots. The first two rows show the raw plots of distance (top row) and received signal strength (middle row). The raw distance plots show many points where distance is very low, and these are uniformly distributed in time - these, I suspect, are from ground-wave radiation. Ground-wave radiation occurs when a receiver and a transmitter close together (hence the low distance); the receiver hears the transmitted signal without any reflections from the Earth's atmospheric layers and is therefore unaffected by time. <h1>Transmitter Power</h1> The next thing I was curious to see what how did the transmitter power effect the distances workable? The first two plots show the raw data, linear transmitter power (in milliwatts) against distance (in kilometres). The power is quantised in steps by the <a href="http://new.george-smart.co.uk/wspr">WSPR</a> program and set in dB. This was simply converted to milliwatts by the formula: <center>P_{mW} = 10^{\frac{P_{dB}}{10}}</center> There were some stations using a transmitter power of over 20 watts (20,000 mW), but these were removed, the largest majority of persons were using the displayed range. <center><table cellpadding="10" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/WSPR_Stat_Pwr_R30.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/WSPR_Stat_Pwr_R30.png" width="300" class="aligncenter"></a></tr> </table> Click an image to get more information, and follow the link on the details page for high-resolution images. </center> These plots didn't really show very much useful information. We can see that the majority of people are using less than 5000 mW, but this is not really what we set out to see. It does show however, that the higher the transmitter power the larger the probability the transmitter will make the longer distance - but this stands to reason! <h1>Bands</h1> Each frequency range (here, referred to by band <a href="as">in wavelength</a>) has specific properties when it comes to distance, time of contact, etc. We looked briefly at how the time of day effects the chances of a distant signal reception; this graph below shows the distance data for each band. It is important to note the number of spots on a given band, and understand that this skews results considerably. The <i>stocks</i> style of representing this data is useful, but may not necessarily be initially understood - the line runs from the smallest distance to the largest, the bar out is the average (mean) distance for the number of spots (bracketed next to the band on the X axis). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/WSPR_Stat_BandDistance.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/WSPR_Stat_BandDistance.png" width="500" class="aligncenter"></a> <h1>Comparison of Antennas</h1> Spurred on my fellow amateur's interests in these ideas, I decided to put a bit more effort into this page. The next thing I decided to do was to compare two antennas. The two antennas here are the G5RV and ZS6BKW, which are very similar. I will also compare my G5RV to the Delta Loop, and to a mobile vertical whip antenna. The graphs, though a little awkward, show the number of spots for a given bearing from my house, grouped into sets of 10 degrees. The left shows more of a histogram, while the right shows the same data in polar plot form. It is important to note that the polar plot's magnitude shows frequency of spots, and not distance. <center><table cellpadding="10" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/WSPR_Stat_CompAntennas.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/05/WSPR_Stat_CompAntennas.png" width="300" class="aligncenter"></a></tr> </table> </center> <b>FIXME_Category :WSPR</b> <b>FIXME_Category :Radio</b> <b>FIXME_Category :ToDo</b> WX http://new.george-smart.co.uk/wx wx draft 3859 closed closed page 0 2013-01-18 03:01:50 This page was moved here: <a href="http://new.george-smart.co.uk/weather">Weather</a>. <a href="/contact-me">Please report this message to the webmaster</a>. Xilinx JTAG Linux http://new.george-smart.co.uk/xilinx_jtag_linux draft xilinx_jtag_linux 4856 closed page closed 0 2013-12-22 14:37:05 <b>This page is an updated version of <a href="http://new.george-smart.co.uk/xilinx_jtag_linux_old">Xilinx JTAG Linux OLD</a>. If you are having problems with older versions of Ubuntu or the Xilinx ISE, then check out the old page, <a href="http://new.george-smart.co.uk/xilinx_jtag_linux_old">Xilinx JTAG Linux OLD</a>. This is updated for Ubuntu 11.04 and Xilinx ISE 13.2.</b> If you make copies of this page or rehost it, please host your own images. My poor <a href="http://new.george-smart.co.uk/server">Server</a> can't cope! <h1>Introduction</h1> If you found this information helpful, <b><a href="http://new.george-smart.co.uk/donate">you can Donate a small sum of money</a></b> (of your choosing) to help me get through my degree and for the upkeep of this server. Click for my <b>FIXME_User :George#Contact_Information|Contact Information</b>. This page originally gave a basic howto on installing the cable drivers for the Xilinx ISE (specifically iMPACT) under Linux/Unix. The page was well received, and I got many emails with various problems, which we overcome :) This page was modified to include the ISE installation. This was prompted by me having to reinstall ISE on Ubuntu 9.10 (64-bit). This method I have tested on Ubuntu 8.04, 10.04_beta and Mint Gloria. It should certainly be valid for any Debian based system, and probably any system where it is possible to do what I have suggested. <b>This Install Guide was written with Ubuntu 11.04 64-bit Desktop Edition and Xilinx ISE 13.2. Last tested by me on Ubuntu 13.10, Xilinx ISE 14.7</b> Finally, <b>I am no expert</b> in any of this: FPGAs, Xilinx or Linux. I just applied what knowledge I did have, and made it work. I offer my experience as help to you. <h1>Installing Xilinx ISE</h1> When installing Xilinx ISE, make sure that the installer is located on the hard drive. <b>The installer needs to have write permissions to the setup files</b>. Burning the files to DVD has been reported to create problems. <a href="http://www.xilinx.com/support/download/index.htm">Download Xilinx ISE</a> from their website. This guide assumes you have Xilinx_ISE_DS_Lin_13.2_O.61xd.0.0, which is the full version. However, the webpack should work in the same manor. Extract the archives to a place with <b>read and write</b> permissions, and chmod the installer file executable my all. To do this, change into the folder with the installer files are located and issue the command <blockquote> sudo chmod a+x xsetup </blockquote> Then you are ready to install the ISE suite. I suggest you do this as root. To start the installer, enter the following command: <blockquote> sudo ./xsetup </blockquote> Go though the menus, as they are fairly obvious. Here are my suggested responses: <ul> <li> Next the welcome screen.</li> <li> Accept the License Agreement (part 1).</li> <li> Accept the License Agreement (part 2).</li> <li> Except the default install path of /opt/Xilinx/13.2 - Feel free to change this, but the rest of this guide assumes you have not.</li> : Also note, when working and referring to this path, that Xilinx begins with a capitalised X.</ul> <ul> <li> Select what you wish to be installed. I chose everything, but if you're using a free WebPACK license, then just install that; save yourself the 15GB disk space!</li> </ul> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/Xilinx13.2_SelectOptions.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/Xilinx13.2_SelectOptions.png" width="600" class="aligncenter"></a> <ul> <li> You next have to select the last few installation options:</li> <li>* Check Aquire/Manage a License Key.</li> <li>* Uncheck Install cable drivers (does not work, use the method outlined below) - Saves you having to okay the dialog when it eventually fails! (see image below)</li> <li>* Check Enable WebTalk (stops it complaining if you use WebPACK).</li> </ul> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/Xilinx13.2_CableFail.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/Xilinx13.2_CableFail.png" class="aligncenter"></a> <ul> <li> Leave the default path, <i>/opt/Xilinx/13.2</i></li> <li> Review the proposed installation stuff, and start the install</li> <li> Wait for a small eternity.</li> <li> The Xilinx License Configuration Manager should appear:</li> : Select what best describes what you need. The "Start ISE WebPack" gives you unlimited access to fundamental applications, but not to everything. for help on what does what, check out the Xilinx Software Matrix, <a href="http://www.xilinx.com/publications/matrix/Software_matrix.pdf">here</a>. At this point, I select "Get my Purchased Licenses". This opens Firefox (or your default web browser), and asks you to log into their system. You can download your licenses file from them, and browse to it using the "Copy License" button under the "Manage Xilinx License" tab. Either way, get a license from Xilinx. Once you have done so, close the License Config Manager.</ul> <ul> <li> You should be told Installation is complete :) Press Okay.</li> <li> Move onto the next steps of installing cable drivers.</li> </ul> <h1>Errors with SysGen under Ubuntu 13.10 and ISE 14.7</h1> I found this error while trying to launch the System Generator under ISE 14.7: <blockquote> $ sysgen /opt/Xilinx/14.7/ISE_DS/ISE/sysgen/util/sysgen: 82: /opt/Xilinx/14.7/ISE_DS/ISE/sysgen/util/sysgen: Syntax error: "(" unexpected </blockquote> The answer is simple. You need to edit the sysgen script, <i>/opt/Xilinx/14.7/ISE_DS/ISE/sysgen/util/sysgen</i> and replace the top line to use <i>bash</i> instead of <i>sh</i> <blockquote> sudo nano /opt/Xilinx/14.7/ISE_DS/ISE/sysgen/util/sysgen </blockquote> and replace <blockquote> #!/bin/sh </blockquote> with <blockquote> #!/bin/bash </blockquote> You should now find that System Generator works. <h1>Using Xilinx USB JTAG Programmers under Linux (Installing Cable Drivers)</h1> Assuming you have followed the above installation howto, this next section should follow on. If you jumped straight here to this section the next section on installing Cable Drivers should standalone. If you have problems, please check that you have similar options set in your ISE install to those I outline in the previous section. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/XILINX-USB-JTAG-MOVED.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/XILINX-USB-JTAG-MOVED.jpg" width="400" alt="Xilinx JTAG Programmer (USB)" class="aligncenter"></a> <h2>Getting what's needed</h2> First of all, this guide assumes you have installed Xilinx ISE (version 11.1 is used here) into the default path of /opt/Xilinx Next, you will need to have GIT installed to get the required libraries. This approach does not use the official Xilinx libraries but a replica of them. You will also need <i>libusb-dev</i> which is required in the compiling of the drivers. You will also need build-essential metapackage for the compiler. On a 64-bit host, you will need to get the 32-bit version of libc6-dev-i386. <b>On 32-bit</b> <blockquote> sudo apt-get install gitk git-gui libusb-dev build-essential libc6-dev fxload </blockquote> <b>On 64-bit</b> <blockquote> sudo apt-get install gitk git-gui libusb-dev build-essential libc6-dev-i386 fxload <font color=red>Philipp Hörauf reports there is a need to install <i>ia32-libs-dev</i> on some 64-bit systems, though I didn't require this.</font></blockquote> <h2>Download the driver source</h2> You should firstly change to the installation directory. You need (assuming default install path) to change directory to /opt/Xilinx. Then you will be required to use <i>git</i> to download the source. <blockquote> cd /opt/Xilinx sudo git clone git://git.zerfleddert.de/usb-driver </blockquote> <h2>Compiling the Driver</h2> This step is once simple command, but the most important. It compiles the cable driver required. There are two versions depending on the version (32-/64-bit) of Xilinx ISE you have. Firstly change into the source directory created in the previous step. Then you need to issue the <i>make</i> command. <blockquote> cd usb-driver/ sudo make </blockquote> Since the drivers now support 64-bit too, you don't need to build the 32-bit version. If you have trouble, try <i>sudo make lib32</i> to build the 32-bit driver. <h2>Setting up the Cable Driver</h2> The newer versions of the usb-driver come with a setup script, which is very useful! You can run <i>setup_pcusb</i> and have it do all the complicated stuff for you, thusly... <blockquote> george@diode:/opt/Xilinx/usb-driver$ ./setup_pcusb /opt/Xilinx/13.2/ISE_DS/ISE/ </blockquote> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/Xilinx_Setup_Cable.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/Xilinx_Setup_Cable.png" class="aligncenter"></a> <h2>Fixing the Path</h2> <font color=red><b>This step may not be required if the Xilinx install appends to your .bashrc automatically:</b></font> Running the following two lines will add the Xilinx path to the system path, and will ensure that the Xilinx binaries are accessable by the system. <b>32-bit</b> <blockquote> echo "PATH=\$PATH:/opt/Xilinx/13.2/ISE_DS/ISE/bin/lin" >> ~/.bashrc echo "export PATH" >> ~/.bashrc </blockquote> <b>64-bit</b> <blockquote> echo "PATH=\$PATH:/opt/Xilinx/13.2/ISE_DS/ISE/bin/lin64/" >> ~/.bashrc echo "export PATH" >> ~/.bashrc </blockquote> <i>Some people reported that the 32-bit version didn't work correctly on 64-bit host.</i> <i>Ensure you are using the 64-bit version of the ISE software.</i> <i>The 64-bit stuff is located in /opt/Xilinx/11.1/ISE/bin/lin64/</i> <h1>Connect the Programmer</h1> Once you get to this point, the cable drives have been installed, and you're now ready to connect the Xilinx USB JTAG Programmer to the PC's USB port. If you follow the computer's system log (kernel messages) then you should be able to see the process of flashing the firmware happening as well as the Firmware light on the programmer illuminate. On the Spartan-3E board shown here in the video, you can see the firmware light to the left of the USB socket. The screen is split, showing you the webcam video on the left and the kernel messages on the right. <html><center><iframe width="425" height="349" src="http://www.youtube.com/embed/gkFOWCEtjUk?hl=en&fs=1" frameborder="0" allowfullscreen></iframe></center></html> <h1>iMPACT</h1> iMPACT seems to reliably crash for me every time I do a boundary scan. <blockquote> george@diode:/opt/Xilinx$ cat /home/george/_impact.log iMPACT Version: 13.2 iMPACT log file Started on Sat Jul 30 00:46:45 2011 Welcome to iMPACT iMPACT Version: 13.2 // *** BATCH CMD : setMode -bs GUI --- Auto connect to cable... // *** BATCH CMD : setCable -port auto </blockquote> <b>Xilinx ISE 12.1 will perform a boundary scan just fine. Seems to be an issue with ISE 13.2.</b> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/Xilinx_12.1_BScan.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/12/Xilinx_12.1_BScan.png" width="600" class="aligncenter"></a> <h1>Issues, Problems & Troubleshooting</h1> I had no issues with this approach; In fact, it surprised me how simple it had become. If you do have problems, there is much more depth to the <a href="http://new.george-smart.co.uk/xilinx_jtag_linux_old">old tutorial</a>, which you can view <a href="http://new.george-smart.co.uk/xilinx_jtag_linux_old">here</a>. It has a troubleshooting section, too! <b>FIXME_Category :Electronics</b> <b>FIXME_Category :FPGA</b> <b>FIXME_Category :Academic</b> <b>FIXME_Category :Computers</b> <b>FIXME_Category :Linux</b> <b>FIXME_Category :Howto</b> Xilinx JTAG Linux OLD http://new.george-smart.co.uk/xilinx_jtag_linux_old draft xilinx_jtag_linux_old 2289 page closed closed 0 2011-07-30 00:47:17 <b>This page is an older version of the new <a href="http://new.george-smart.co.uk/xilinx_jtag_linux">Xilinx JTAG Linux</a>. If you are running Ubuntu 11.04 (or newer) or Xilinx ISE 13.2 (or newer), then check out the new tutorial page, <a href="http://new.george-smart.co.uk/xilinx_jtag_linux">Xilinx JTAG Linux</a>.</b> If you make copies of this page or rehost it, please host your own images. My poor <a href="http://new.george-smart.co.uk/server">Server</a> can't cope! <h1>Introduction</h1> If you found this information helpful, <b><a href="http://new.george-smart.co.uk/donate">you can Donate a small sum of money </a></b> (of your choosing) to help me get through my degree and for the upkeep of this server. This page originally gave a basic howto on installing the cable drivers for the Xilinx ISE (specifically iMPACT) under Linux/Unix. The page was well received, and I got many emails with various problems, which we overcome :) This page was modified to include the ISE installation. This was prompted by me having to reinstall ISE on Ubuntu 9.10 (64-bit). This method I have tested on Ubuntu 8.04, 10.04_beta and Mint Gloria. It should certainly be valid for any Debian based system, and probably any system where it is possible to do what I have suggested. <b>I am interested in any feedback, good or bad - Please <b>FIXME_User :George#Contact_Information|Contact Me</b> with your location (for curiosity).</b> If this howto works perfectly for you, please let me know :) Finally, <b>I am no expert</b> in any of this: FPGAs, Xilinx or Linux. I just applied what knowledge I did have, and made it work. I offer my experience as help to you. <h1>A Short Guide to Installing Xilinx ISE</h1> <b>This Install Guide refers to Ubuntu 9.10 (Karmic Koala) 64-bit Desktop Edition.</b> When installing Xilinx ISE, make sure that the installer is located on the hard drive. <b>The installer needs to have write permissions to the setup files</b>. Burning the files to DVD has been reported to create problems. <a href="http://www.xilinx.com/support/download/index.htm">Download Xilinx ISE</a> from their website. This guide assumes you have Xilinx_11.1_ISE_DS_SFD, which is the full version, and not the webpack. However, the webpack should work in the same manor. Extract the archives to a place with read <b>and write</b> permissions, and chmod the installer file executable my all. To do this, change into the folder with the installer files are located and issue the command <blockquote> sudo chmod a+x xsetup </blockquote> Then you are ready to install the ISE suite. I suggest you do this as root. To start the installer, enter the following command: <blockquote> sudo ./xsetup </blockquote> Go though the menus, as they are fairly obvious. Here are my suggested responses: <ul> <li> Next the welcome screen.</li> <li> Accept the License Agreement.</li> <li> Accept the License Agreement, once again.</li> <li> Except the default install path of /opt/Xilinx/11.1 - Feel free to change this, but the rest of this guide assumes you have left this.</li> : Also note, when working and referring to this path, that Xilinx begins with a capitalised X. This tricked me for some time :)</ul> <ul> <li> Select what you wish to be installed. I chose ISE Design Suite Product including the Design Tools, PlanAhead, DSP Tools, Embedded Dev Kit, ChipScope Pro. Next when you are ready.</li> <li> Select the ISE Design Tools. I left everything checked: Design Enviroment Tools, WebPack Devices, Foundation/Edition Devices.</li> <li> Keep all the suggested paths.</li> <li> You next have to select the last few installation options. Check Aquire/Manage a License Key. Uncheck Install cable drivers (does not work, use the method outlined below) and Launch XilinxUpdate - This is a minor detail, and can be done later.</li> <li> Review the options summary. Here is mine. Yours will look different based on Distro, and your options.</li> </ul> <blockquote> <b>Install Location : /opt/Xilinx/11.1</b> Acquire or Manage a License Key Launch XilinxUpdate <b>ISE Design Tools</b> Install Location : /opt/Xilinx/11.1/ISE XILINX = /opt/Xilinx/11.1/ISE PATH = ${XILINX}/bin/${PLATFORM} LMC_HOME = ${XILINX}/smartmodel/${PLATFORM}/installed_${PLATFORM} LD_LIBRARY_PATH = ${XILINX}/lib/${PLATFORM} Design Environment Tools WebPack Devices Foundation/Edition Devices Enable WebTalk Set Xilinx Registry <b>PlanAhead Analysis Tool</b> Install Location : /opt/Xilinx/11.1/PlanAhead XILINX_PLANAHEAD = /opt/Xilinx/11.1/PlanAhead PATH = ${XILINX_PLANAHEAD}/bin PlanAhead Common Files Setup Environment <b>Embedded Development Kit (EDK)</b> Install Location : /opt/Xilinx/11.1/EDK XILINX_EDK = /opt/Xilinx/11.1/EDK LD_LIBRARY_PATH = ${XILINX_EDK}/lib/${PLATFORM} PATH = ${XILINX_EDK}/bin/${PLATFORM}:${XILINX_EDK}/lib/${PLATFORM} Platform Studio Tool and Processor IP <b>ChipScope Pro</b> Install Location : /opt/Xilinx/11.1/ChipScope CHIPSCOPE = /opt/Xilinx/11.1/ChipScope PATH = ${CHIPSCOPE}/bin/${PLATFORM} LD_LIBRARY_PATH = ${CHIPSCOPE}/lib/${PLATFORM}:${CHIPSCOPE}/xilinx/lib/${PLATFORM} ChipScope Pro Common Files and Serial I/O Toolkit option support <b>DSP Tools (System Generator, AccelDSP)</b> Install Location : /opt/Xilinx/11.1/DSP_Tools XILINX_DSP = /opt/Xilinx/11.1/DSP_Tools/lin64 LD_LIBRARY_PATH = ${XILINX_DSP}/sysgen/lib PATH = ${XILINX_DSP}/common/bin TEMP = /tmp TMP = /tmp System Generator for DSP Unix/Linux Post-installation script </blockquote> <ul> <li> Wait for a small eternity.</li> <li> The Xilinx License Configuration Manager should appear:</li> : Select what best describes what you need. The "Start ISE WebPack" gives you unlimited access to fundamental applications, but not to everything. for help on what does what, check out the Xilinx Software Matrix, <a href="http://www.xilinx.com/publications/matrix/Software_matrix.pdf">here</a>. At this point, I select "Get my Purchased Licenses". This opens Firefox (or your default web browser), and asks you to log into their system. You can download your licenses file from them, and browse to it using the "Copy License" button under the "Manage Xilinx License" tab. Either way, get a license from Xilinx. Once you have done so, close the License Config Manager.</ul> <ul> <li> You should be told Installation is complete :) Press Okay.</li> <li> Move onto the next steps of installing cable drivers.</li> </ul> <h1>Using Xilinx USB JTAG Programmers under Linux (Installing Cable Drivers)</h1> Assuming you have followed the above installation howto, this next section should follow on. If you jumped straight here to this section the next section on installing Cable Drivers should standalone. If you have problems, please check that you have similar options set in your ISE install to those I outline in the previous section. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/07/XILINX-USB-JTAG-MOVED.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/07/XILINX-USB-JTAG-MOVED.jpg" width="400" alt="Xilinx JTAG Programmer (USB)" class="aligncenter"></a> <h2>Getting what's needed</h2> First of all, this guide assumes you have installed Xilinx ISE (version 11.1 is used here) into the default path of /opt/Xilinx Next, you will need to have GIT installed to get the required libraries. This approach does not use the official Xilinx libraries but a replica of them. You will also need <i>libusb-dev</i> which is required in the compiling of the drivers. You will also need build-essential metapackage for the compiler. On a 64-bit host, you will need to get the 32-bit version of libc6-dev-i386. <b>On 32-bit</b> <blockquote> sudo apt-get install gitk git-gui libusb-dev build-essential libc6-dev fxload </blockquote> <b>On 64-bit</b> <blockquote> sudo apt-get install gitk git-gui libusb-dev build-essential libc6-dev-i386 fxload <font color=red>Philipp Hörauf reports there is a need to install <i>ia32-libs-dev</i> on some 64-bit systems, though I didn't require this.</font></blockquote> <h2>Download the driver source</h2> You should firstly change to the installation directory. You need (assuming default install path) to change directory to /opt/Xilinx. Then you will be required to use <i>git</i> to download the source. <blockquote> cd /opt/Xilinx sudo git clone git://git.zerfleddert.de/usb-driver </blockquote> <h2>Compiling the Driver</h2> This step is once simple command, but the most important. Firstly change into the source directory created in the previous step. Then you need to issue the <i>make</i> command. <blockquote> cd usb-driver/ </blockquote> <b>On 32-bit</b> <blockquote> sudo make </blockquote> <b>On 64-bit</b> <blockquote> sudo make lib32 </blockquote> <h2>Linking in the Compiled Driver</h2> <font color=red><b>This step is not needed for versions of Xilinx ISE newer than 10.1:</b></font> <i>LD_PRELOAD</i> instructs the loader to load additional libraries into a program, beyond what was specified when it was compiled. It allows us to load the USB CableDriver into iMPACT without recompiling it (which we clearly cannot do). <blockquote> export LD_PRELOAD=/opt/Xilinx/usb-driver/libusb-driver.so </blockquote> <h2>Satisfying udev</h2> <i>udev</i> is the device manager for the Linux 2.6 kernel series. Primarily, it manages device nodes and hotpluging, which means that it handles the adding/removing devices, including firmware loading. This is what we are required to do. The Xilinx Programmer doesn't have any firmware, and so we need to tell the computer that when we plug in the programmer, that it should attempt to load the correct firmware to it. <i>fxload</i> should do this for us. Fortunately all of the complex stuff comes with the driver source downloaded previously. All we need to do is put it in the places the computer expects it. Then we need to restart udev, so it sees the new configurations. <b>In Ubuntu 9.10/10.04 (or if udev doesn't appear to notice a plug-in):</b> <blockquote> sudo sed /opt/Xilinx/11.1/ISE/bin/lin/xusbdfwu.rules -e 's:TEMPNODE:tempnode:g' > /etc/udev/rules.d/xusbdfwu.rules sudo cp /opt/Xilinx/11.1/ISE/bin/lin/xusb*.hex /usr/share/ sudo /etc/init.d/udev restart </blockquote> <b>Other</b> <blockquote> sudo cp /opt/Xilinx/11.1/ISE/bin/lin/xusbdfwu.rules /etc/udev/rules.d/ sudo cp /opt/Xilinx/11.1/ISE/bin/lin/xusb*.hex /usr/share/ sudo /etc/init.d/udev restart </blockquote> <h2>Fixing the Path</h2> <font color=red><b>This step may not be required if the Xilinx install appends to your .bashrc automatically:</b></font> Running the following two lines will add the Xilinx path to the system path, and will ensure that the Xilinx binaries are accessable by the system. <b>32-bit</b> <blockquote> echo "PATH=\$PATH:/opt/Xilinx/11.1/ISE/bin/lin" >> ~/.bashrc echo "export PATH" >> ~/.bashrc </blockquote> <b>64-bit</b> <blockquote> echo "PATH=\$PATH:/opt/Xilinx/11.1/ISE/bin/lin64" >> ~/.bashrc echo "export PATH" >> ~/.bashrc </blockquote> <i>Some people reported that the 32-bit version didn't work correctly on 64-bit host.</i> <i>Ensure you are using the 64-bit version of the ISE software.</i> <i>The 64-bit stuff is located in /opt/Xilinx/11.1/ISE/bin/lin64/</i> <h2>Running the programs</h2> Before you can call any of the Xilinx ISE Suite, you must close the terminal you have open, and reopen a new one. This causes bash to reload, getting the new path variable. You can now run anything from the Xilinx ISE Suite. If you know the program you wish to run, for example, you can simply call it from a terminal window, like so: <blockquote> user@box:~$ impact </blockquote> <h1>All Done</h1> Once you get to here, the cable drivers should work. When you plug the programmer in, you will notice that after a short while, the programmer's status LED turns green. This indicates that the firmware was successfully loaded. If you open Xilinx's iMPACT with the programmer connected to the computer and a circuit, you should be able to execute a boundary scan. The image below shows Xilinx iMPACT running under Linux Mint 7 (Gloria) with a Boundary Scan of my <a href="http://new.george-smart.co.uk/spartan_3e">Spartan-3E</a> board. <h2>Xilinx iMPACT - GUI</h2> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/07/Xilinx_iMPACT_Linux-MOVED.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/07/Xilinx_iMPACT_Linux-MOVED.png" width="675" alt="It Working :D" class="aligncenter"></a> <h2>Xilinx iMPACT - Log Window Text</h2> This is the result of a boundary scan on my Spartan-3E board. <blockquote> Welcome to iMPACT iMPACT Version: 11.1 // *** BATCH CMD : setMode -bs // *** BATCH CMD : setMode -bs // *** BATCH CMD : setMode -bs // *** BATCH CMD : setMode -bs GUI --- Auto connect to cable... // *** BATCH CMD : setCable-port auto AutoDetecting cable. Please wait. PROGRESS_START - Starting Operation. OS platform = i686. Connecting to cable (Usb Port - USB21). Checking cable driver. File version of /opt/Xilinx/11.1/ISE/bin/lin/xusbdfwu.hex = 1030. File version of /usr/share/xusbdfwu.hex = 1030. Using libusb. Max current requested during enumeration is 74 mA. Type = 0x0004. Cable Type = 3, Revision = 0. Setting cable speed to 6 MHz. Cable connection established. Firmware version = 1028. File version of /opt/Xilinx/11.1/ISE/data/xusb_xlp.hex = 1303. Firmware hex file version = 1303. Downloading /opt/Xilinx/11.1/ISE/data/xusb_xlp.hex. Downloaded firmware version = 1303. PLD file version = 0012h. PLD version = 0012h. PROGRESS_END - End Operation. Elapsed time = 1 sec. Attempting to identify devices in the boundary-scan chain configuration... INFO:iMPACT - Current time: Thu Oct 8 18:50:31 2009 // *** BATCH CMD : Identify PROGRESS_START - Starting Operation. Identifying chain contents...'0': : Manufacturer's ID = Xilinx xc2c64a, Version : 0 INFO:iMPACT:1777 - Reading /opt/Xilinx/11.1/ISE/xbr/data/xc2c64a.bsd... INFO:iMPACT:501 - '1': Added Device xc2c64a successfully. ---------------------------------------------------------------------- ---------------------------------------------------------------------- '1': : Manufacturer's ID = Xilinx xcf04s, Version : 15 INFO:iMPACT:1777 - Reading /opt/Xilinx/11.1/ISE/xcf/data/xcf04s.bsd... INFO:iMPACT:501 - '1': Added Device xcf04s successfully. ---------------------------------------------------------------------- ---------------------------------------------------------------------- '2': : Manufacturer's ID = Xilinx xc3s500e, Version : 4 INFO:iMPACT:1777 - Reading /opt/Xilinx/11.1/ISE/spartan3e/data/xc3s500e.bsd... INFO:iMPACT:501 - '1': Added Device xc3s500e successfully. ---------------------------------------------------------------------- ---------------------------------------------------------------------- done. PROGRESS_END - End Operation. Elapsed time = 0 sec. // *** BATCH CMD : identifyMPM </blockquote> <h2>Linux Kernel</h2> Below shows the the linux kernel reporting that it finds the device. Notice that it finds the device 3 times. It finds the chip with no firmware, then once it recognises it, it uploads firmware, and then it restarts. It finds the chip with the firmware, initilises it, and then restarts the chip. You should see this. <blockquote> kernel: [690505.051492] usb 2-1: new high speed USB device using ehci_hcd and address 45 kernel: [690505.184191] usb 2-1: configuration #1 chosen from 1 choice kernel: [690505.296118] usb 2-1: USB disconnect, address 45 kernel: [690507.251482] usb 7-1: new full speed USB device using uhci_hcd and address 2 kernel: [690507.393556] usb 7-1: not running at top speed; connect to a high speed hub kernel: [690507.416882] usb 7-1: configuration #3 chosen from 1 choice kernel: [690510.041561] usb 7-1: USB disconnect, address 2 kernel: [690511.800521] usb 2-1: new high speed USB device using ehci_hcd and address 47 kernel: [690511.931390] usb 2-1: configuration #2 chosen from 1 choice </blockquote> <h2>The All-Telling Status LED</h2> If you do it all correctly, once the kernel has settled, you should get the status led illuminated. This will either be the LED on the front of the JTAG box, or on the <a href="http://new.george-smart.co.uk/spartan_3e">Spartan-3E</a> board, the status LED next to the USB-B socket (shown with the red arrow). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/07/XILINX-SPARTAN3E-JTAG-MOVED.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2011/07/XILINX-SPARTAN3E-JTAG-MOVED.jpg" width="320" alt="Xilinx JTAG Programmer (SPARTAN-3E)" class="aligncenter"></a> <h2>Troubleshooting</h2> Thying to make a perfect guide for many different possible combinations is hard. Here is a section of things to try before you dispondantly email me. <h2>Newer UDEV (Ubuntu 9.10/10.04)</h2> Many people are reporting problems with the new UDEV system, usually the one used in Ubuntu 9.10. This problem is easily overcome by simply editing your udev rules. Using your favorite editor, edit /etc/udev/rules.d/xusbdfwu.rules and change any reference to <i>$TEMPNODE</i> to <i>$tempnode</i>. This is done automatically in the howto above. Remember to restart udev after this: <blockquote> sudo /etc/init.d/udev restart </blockquote> <h2>Impact 64-bit</h2> If using the 64-bit version of Impact, there are some slight changes. Source 6 describes in more detail how to get the 64-bit version of Impact running, but simply all that needs to be done is: <blockquote> cd /usr/lib64 sudo ln -s libusb-0.1.so.4 libusb.so </blockquote> (<i>I have not personally tested this</i>) <h1>Sources</h1> <ul> <li> [1] Using Xilinx USB cable on LinuxMint / Ubuntu without windvr</li> ::(http://paddydempster.wordpress.com/2008/04/08/using-xilinx-usb-cable-on-ubuntu-without-windvr/) </ul> ::Taken on 19/Aug/2009 at 23:21 BST <ul> <li> [2] libusb/ppdev-connector for XILINX jtag tools</li> ::(http://git.zerfleddert.de/cgi-bin/gitweb.cgi/usb-driver?a=blob;f=README;h=265dd3941b23edf68c967b3e3a627c1265f1caa3;hb=HEAD)</ul> ::Also included in /opt/Xilinx/usb-drivers/README ::Taken on 19/Aug/2009 at 23:28 BST <ul> <li> [3] udev ignoring rules? any help appreciated! ubuntu 9.10</li> ::(http://ubuntuforums.org/showthread.php?t=1313572)</ul> ::Taken on 09/Nov/2009 at 01:11 GMT <ul> <li> <a href="4]">[ubuntu</a> How does USB work | Xilinx Spartan 3E driver problem</li> ::(http://ubuntuforums.org/showthread.php?t=1307574&highlight=xilinx+ise+11.1)</ul> ::Taken on 09/Nov/2009 at 00:20 GMT ::Thanks to <i>Mehmet Tukel, Teaching Assistant at Istanbul Technical University</i> for this source. <ul> <li> [5] Xilinx USB programmer - problems with Debian/Linux - Solved </li> :: (http://groups.google.com/group/comp.arch.fpga/browse_thread/thread/2492e85c32938119/386d80ad26dbb974?lnk=gst&q=Wojtek#386d80ad26dbb974)</ul> ::Taken on 09/Nov/2009 at 00:41 GMT ::Thanks to <i>Werner Hein</i> for this source. <ul> <li> [6] ISE 11.2, Impact can't find USB II cable, SLED 11 Linux 64 bit </li> ::(http://forums.xilinx.com/xlnx/board/message?board.id=INSTALLBD&message.id=467&query.id=386680#M467)</ul> ::Taken on 13/Nov/2009 at 11:03 GMT ::Thanks to <i>Jonathan Drolet</i> for this source. <h1>Updates</h1> <ul> <li> [29/Jul/2011] Added <i>ia32-libs-dev</i> to dependancies on 64-bit systems. (Thanks to Philipp Hörauf).</li> <li> [05/Feb/2010] Adjusted the dependencies, seperating 32/64-bit hosts. (Thanks to Jerry G. for pointing this confusion out).</li> <li> [15/Apr/2010] Added information for Ubuntu 10.04.</li> </ul> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :FPGA</b> <b>FIXME_Category :Academic</b> <b>FIXME_Category :Computers</b> <b>FIXME_Category :Linux</b> <b>FIXME_Category :Howto</b> Yaesu CAT Interface http://new.george-smart.co.uk/yaesu_cat_interface 2012-04-21 01:06:12 0 closed page closed 3355 draft yaesu_cat_interface This page will detail the design of my Yaesu CAT Interface. The board performs all the standard CAT functions offered by professional cables (such as those offered by Yaesu), as well as proving option to connect the audio paths to the computer in a convenient way. The project can be made entirely from parts obtainable from highstreet electronics stores, such as Maplin Electronics in the UK. The project requires a Maxim MAX232 RS-232 level converter IC and an opto-coupler for DC isolation. The interface allows for the use of CAT commands to change the radio from receive to transmit, or using DTS/RTS (jumper selectable) as required by some software. The interface works nicely with my <a href="http://new.george-smart.co.uk/yaesu_ft_857d">Yaesu FT-857D</a> and <a href="http://www.ham-radio-deluxe.com/">Simon Brown's Ham Radio Deluxe</a>. It also works with the <a href="http://hamlib.sourceforge.net/">hamlib Ham Radio Control Libraries</a> which offer CAT interface support in Linux/Unix. This enables the <a href="http://new.george-smart.co.uk/wspr">WSPR</a> program to control the radio frequency and for the use of programs such as <a href="http://www.w1hkj.com/Fldigi.html">Fldigi</a> and <a href="http://groundstation.sourceforge.net/grig/">gRig</a>. It should provide a suitable CAT interface to most Yaesu transceivers requiring a level shifting interface, and will certainly provide a nice tidy way of keying a radio via serial port and sound card. <h1>Prototype</h1> Below is an image of the prototype connected to my <a href="http://new.george-smart.co.uk/yaesu_ft_857d">Yaesu FT-857D</a>. <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/CAT_Prototype_1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/CAT_Prototype_1.jpg" width="300" alt="The very first one!" class="aligncenter"></a></tr> </table> Click an image to enlarge </center> <h1>gRig</h1> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/CAT_gRig.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/CAT_gRig.png" width="600" alt="Gnome Rig" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/yaesu_ft_857d">Yaesu FT-857D</a> on 30 meter <a href="http://new.george-smart.co.uk/wspr">WSPR</a> frequency <h1>Fldigi</h1> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/CAT_Fldigi.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/CAT_Fldigi.png" width="600" alt="Fldigi" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/yaesu_ft_857d">Yaesu FT-857D</a> showing the GB3VHF beacon's WSJT JT-65B transmission. See <a href="http://www.gb3vhf.co.uk/GB3VHFReceiving.html">for help decoding</a>. <b>FIXME_Category :Radio</b> <b>FIXME_Category :Electronics</b> <b>FIXME_Category :Computers</b> Yaesu FT-2800 PA Replacement http://new.george-smart.co.uk/yaesu_ft_2800_pa_replacement closed page closed 2015-07-24 01:29:12 0 yaesu_ft_2800_pa_replacement draft 5316 I have had my Yaesu FT-2800M for about 3 years. I bought it second hand at a radio rally and it has, until now, given me years of faithful service. While in a recent QSO I noticed that the power output had dropped to nothing. Googling around revealed that this is a common fault with the FT-2800. As you may have gathered from other pages on this site, that I am reasonably technical, and so I decided to do the repair myself. This page is offered to show you how I did it; more what's involved in doing this yourself. I only needed to replace the final transistor, but the driver is replaced in exactly the same way. The job is fairly simple if you've used a soldering iron before. You're dealing with power electronics, and so the soldering is big stuff. Nothing too fiddly. The <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/Yaesu_FT-2800M_Service_Manual.pdf">service manual for the FT2800 is here</a>. The transistor you are looking to replace. It's a <b>Mitsubishi RF power MOSFET RD70HVF1</b> (<a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/Mitsubishi_RD70HVF1_Datasheet.pdf">datasheet for part here</a>). In the FT-2800, it's transistor Q306 on the PCB and Yaesu's part number for it is G3090140. Check these numbers though, I may be wrong! It <i>is</i> electrostatic sensitive, so don't go touching the pins of the FET if you can help it. You don't want to kill it! <center><table align="center" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Mitsubishi_RD70HVF1_Blown.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Mitsubishi_RD70HVF1_Blown.jpg" width="300" alt="The blown power FET" class="aligncenter"></a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Mitsubishi_RD70HVF1_Burr.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Mitsubishi_RD70HVF1_Burr.jpg" width="300" alt="Burr on the bottom of the FET" class="aligncenter"></a></tr> </table> </center> From looking at the removed part (above left) you can see, and easily feel, a burr around the outside of the mounting holes (above right). This is where the device meets the heatsink. Very good contact between the FET and heatsink is required to transfer heat away from the FET. This burr lifts the FET from the surface of the heatsink very slightly but <i>greatly</i> reduces heat transfer. The device would have cooked itself - there is evidence of this in the black charring on the metal surface around the ceramic (white) top of the FET in the above left image. I ordered my replacement part from eBay. Double check that it is (a) a genuine Mitsubishi part, and; (b) that it is the correct part (Mitsubishi RD70HVF1 for the Yaesu FT-2800M - check your rig uses the same part). I paid around £20 delivered from Hong Kong. Remove the 6 screws holding the bottom plate on. There are 4 screws and two feet also screwed on. The bottom plate will lift off. Set the backplate aside. I removed my speaker. It's soldered on with 2 wires, clearly labelled SPK on the PCB. Usually this would be a case of removing a connector, but these are cheap radios and so there's not that luxury. Set the speaker aside. You don't have to remove it, but it will get in the way and probably break the wires anyway, later. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_SPK.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_SPK.jpg" width="300" alt="Speaker Connections" class="aligncenter"></a> <center>Click the image to enlarge</center> The PA is under the metal can. Remove the 5 screws holding the case - these also bolt the driver & power transistors down. The metal screen case is also soldered down, so won't move. Once the screws are out, use a solder sucker or solder braid to remove the solder around the screen can. Once all the solder is removed, heat up each pad while pulling the can gently. Not too hard, else you'll de-laminate the board. It's fairly sturdy so with a 'careful force' you shouldn't have problems. It's tricky, and is by far the hardest part of the job. Once you've removed the metal screen can, you're on the home straight... <center><table align="center" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_PAScreenOn.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_PAScreenOn.jpg" width="300" alt="The PA Cover" class="aligncenter"></a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_PAScreenOff.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_PAScreenOff.jpg" width="300" alt="PA Cover Removed" class="aligncenter"></a></tr> </table> </center> The final hurdle to remove the PA transistor is to take the mainboard out of the radio. The PA transistors are sandwiched between the PCB and the heatsink. You need to lift the PCB. Remove all the screws holding the board down. This includes the two holding the voltage regulator and audio amplifier, next to the large capacitor on the bottom left (front panel toward you) - these are slightly larger screws than the others holding down the PCB. I also removed the coax connector on the back. The pin that sticks out on the inside makes it hard to lift the board. The SO239 is held on using two screws, the same as held down the voltage reg and the audio amp. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_PCBScrews.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_PCBScrews.jpg" width="300" alt="PCB Screws" class="aligncenter"></a> <center>Click the image to enlarge</center> Once unscrewed, unsolder and remove the SO239 connector. Set it aside. Be careful not to knock any of the surrounding components, as they're part of the transmitters low pass filter. Work the power cable rubber grommit out, and using the thick wires for leverage, carefully lift the board upwards. Be very careful not to bed the connectors at the front, linking to the front panel. The front panel has pins poking out, which mate with holes on the edge of the main board. Also be aware of the heatsink compound on the transistor backs. Clean the heatsink compound from the heatsink and check the metal has a very smooth finish. DO NOT scratch the area of the heatsink under the transistors</td><td>! My chassis & heatsink had massive burrs around the screw holes, that had pushed up the transistors, compounding the overheating problem further. I used a very lightly abrasive sand block, and rubbed the burrs away. I was appalled at this. No wonder the PAs burn out on these! Here's what the cutout for the final FET looked like on my FT-2800M. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_Chassis.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_Chassis.jpg" width="300" alt="FET Chassis Mill" class="aligncenter"></a> <center>Click the image to enlarge</center> You want these cut outs to be a mirror surface. That comes with a good deal of sanding! This is what makes the difference. You need a nice smooth surface on the FET and a nice smooth surface on the heatsink. This allows for maximum contact area, therefore lowest thermal resistance, and therefore no more blown PAs! Spend the time to do this right - otherwise you'll add this page to your bookmarks! :) Once you've got the chassis smooth, set it aside, and turn to the PCB. We need to remove the old final FET. This is a fairly easy thing to do. Heat one of the two solder pads until the solder melts. Then, either twist the FET slightly so the melted side separates from the board, and slide the soldering iron bit into the gap to separate the lead from the pad. Repeat this for the other pad, and remove the FET. I suggest marking it that it's dead in some way. A felt tip penned 'X' on the back does for me. You'd hate to install the wrong one back! Clean the pads up so there is no solder on the pads. I only had trouble with the final stage, so I left the drive alone. If you are replacing the driver (the smaller transistor) then repeat the process for that FET too. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_PARemoved.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_PARemoved.jpg" width="300" alt="Removed PA" class="aligncenter"></a> <center>Click the image to enlarge</center> Next, you need to prepare the final FET. For this, I used some emery paper on a hard surface (ideally glass). Wet the emery paper, lay it on a hard flat surface, and carefully polish the back of the final FET (below, left). Once finished, it should feel smooth to the touch, just like the chassis you cleaned up previously. Note here, that you need to be careful of the other leads on the FET. It is static sensitive. After sanding the back smooth, bend the other leads to they're loosely right-angled (pointing upwards, below right) - this is so the leads will fit through the hole in the PCB. <center><table align="center" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_FETSand.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_FETSand.jpg" width="300" alt="Smoothing the FET" class="aligncenter"></a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_FETBendLegs.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_FETBendLegs.jpg" width="300" alt="Fitting the FET" class="aligncenter"></a></tr> </table> </center> At this stage, you need to apply the heat-sink compound. You need this, it isn't optional. It improves the thermal conduction between the PA FET and the chassis of the radio. Apply a thin layer to the back of the FET and a thin layer to the area of the chassis. If the device is fitted already, such as my driver, apply to both sides. For the final FET, which is loose, place it such that the mounting holes on the FET align with the holes in the chassis. <b>Note the correct orientation</b>. The RD70HVF1 has a corner cut from one of the leads. This matches the corresponding pad on the PCB. GET THIS RIGHT! If you're fitting the driver, then do the same, aligning the mounting holes while noting the orientation. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_NewFETMount.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_NewFETMount.jpg" width="300" alt="New FET Mounted" class="aligncenter"></a> <center>Click the image to enlarge</center> Now fit the main PCB again. Make sure to fit the pins from the front panel into the mainboard. Drop the board home, and wobble it to seat it fully. If one of the transistors in the PA is already soldered, then use two screws to bolt it down. It is important that the board isn't twisting the FETs, so by fitting presoldered FETs first, it ensures that it will be seated correctly later. I screwed the driver down. Then fitted the board's standard holding screws, refitted the SO239, audio amplifier IC and voltage regulator. Finally screw down the new FET. It should all align with the pads. Tighten the screws at each end in a balanced way. 1/4 of a turn on each screw, repeating until tight. This gives the heatsink compound a way to escape and ensures an even layer. Finally, solder down the final FET. My method is to tin the tips of the FET legs. Then pool a little solder on the pad, and using a fine screwdriver, push the pad down into the pool, holding until set. <center><table align="center" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_FETFitted.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_FETFitted.jpg" width="300" alt="Fitting the FET" class="aligncenter"></a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_FETSoldered.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_FETSoldered.jpg" width="300" alt="Soldering the FET" class="aligncenter"></a></tr> </table> </center> Once it's soldered in, refit the cover. Be sure to solder the metal can down once you're sure that everything is correct. Then perform the alignment procedure for the transmitter as outlined in the service manual (above). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_Done.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_Done.jpg" width="300" alt="Finished" class="aligncenter"></a> <center>Click the image to enlarge</center> All that remained was to give the rig a quick test. Connected to a dummy load, the power output was measured using a Bird ThruLine. <center><table align="center" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_LOW1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_LOW1.jpg" width="100" alt="Low Power #1" class="aligncenter"></a></td></tr><tr><td>5 Watts setting</td><td>10 Watts setting</td><td>25 Watts setting</td><td>65 Watts setting</tr> </table> </center> You may notice the radio is producing slightly less power; this is because of a low supply voltage. I later checked on a better regulated 13.8 volt supply and received the full 65 watts Yaesu state. <h1>Driver Replacement</h1> Some time after the replacement of the PA transistor, the driver went - the radio spent about 4 years in its box because I had no interest in working on it - it frustrated me! Anyway, in the process of clearing out the shack I came across the radio again, and figured now it had no real value to me, it'd be worth a shot. I wasn't too worried if I killed the rig, since it was no use as a TX and I didn't trust it anyway. I did a few tests: with a scope I could see there was signal going into the driver, and not coming out of it - i.e., the driver was attenuating. As a crude tell-tale test, I bypassed the driver stage with a 100pF capacitor, and transmitted, and I got about 6W out on maximum power. This was what I was expecting. The radio is 65W, and the driver is around 10dB. In bypassing the faulty driver, the PA strip looses 10dB of gain, so it's 65W becomes 6.5W. This implies the final stage is working, but the driver is dead. I decided to gamble I could fix it, and ordered the part... The driver is Q313, a <b>Toshiba 2SK3075 RF Power MOSFET</b> (<a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/bin/Toshiba_2SK3075_Datasheet.pdf">datasheet for part here</a>) for VHF/UHF, Pout>=7.5W, G>=11dB. This is surface-mount device which is soldered to the copper heat-spreader - be careful with a very hot iron! I picked up 2 driver parts online for around £5 each from a reputable supplier. Beware of Chinese fake PA transistors, which (to my experience) are re-badged 2N2222's :-) <center><table align="center" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_DriverA.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_DriverA.jpg" width="300" alt="Driver FET" class="aligncenter"></a> </td><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_DriverB.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_DriverB.jpg" width="300" alt="Driver FET" class="aligncenter"></a></tr> </table> </center> The existing part is very hard to remove because it is soldered to the copper heat-spreader, as mentioned. I had to destroy the old part to remove it. I used a very hot iron to then clean the central (heatsink) pad up. The image below shows the mess I made of it - extra care should be taken not to lift the gate and drain track pads (as I did on the gate!). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_DriverGone.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_DriverGone.jpg" width="300" alt="Old driver FET removed" class="aligncenter"></a> <center>Click the image to enlarge</center> Before fitting the replacement, I thought I'd use a transistor tester to check the replacement part at least measured sensibly. Just before everyone emails me and tells me this isn't how you check an RF part, I know, but it's a crude test to see if it's reasonable! A short circuit is still a short, an open is still an open. This seems reasonable! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_CheckNew.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_CheckNew.jpg" width="300" alt="Checking the new driver" class="aligncenter"></a> <center>Click the image to enlarge</center> From here, I cleaned the area up, removed the flux residue and then mounted the new part. This is extra complex too, because you need to make a good solder joint to the central pad on the heatsink/FET, since this is how the driver FET dissipates heat into the heatsink. Obviously, the soldering iron has its work cut out here, because the entire assembly is trying to stop the transistor getting hot. I packed around the copper heat-spreader with cotton wool to help it retain the heat. My 130W soldering iron was able to heat the central tab to a good temperature. I was then quickly able to clean the old solder away, and re-tin the heat-spreader pad. I then, carefully dropped the driver FET onto the slightly tinned heat-spreader <b>in the correct orientation</b> (refer to board silk), and the solder pulled and self aligned the part onto the pad. I rapidly soldered the remaining two ground connections, and then let the part cool somewhat before soldering the gate and drain. As previously mentioned, I ruined the driver gate track, so I used a single strand of copper wire to the plate-through-hole on the board. This was slightly moved away from the ground pad, and I also had to bend the screening can a little more to create some relief for the extra jumper wire. I'm not proud of this, but it's what I did: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_DriverReplaced.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_DriverReplaced.jpg" width="300" alt="New driver FET fitted" class="aligncenter"></a> <center>Click the image to enlarge</center> Finally, here's what the whole PA strip looked like. Just cleaning up of the flux and re-wetting the main transistor joints to go, and we're away! <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_PAmodule.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_PAmodule.jpg" width="300" alt="All of the PA strip" class="aligncenter"></a> <center>Click the image to enlarge</center> And after the alignment, here's the PA doing 65W again (approximately). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_newdriverbird.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2015/07/Yaesu_FT2800_newdriverbird.jpg" width="300" alt="PA doing 65W again" class="aligncenter"></a> <center>Click the image to enlarge</center> There you have it again. The third time I've worked on this radio's PA! Yaesu FT-7800 http://new.george-smart.co.uk/yaesu_ft_7800 yaesu_ft_7800 draft 2856 closed page closed 0 2011-12-11 21:12:19 This page was moved here: <a href="http://new.george-smart.co.uk/yaesu_ft_7900e">Yaesu FT-7900E</a>. <a href="/contact-me">Please report this message to the webmaster</a>. Yaesu FT-7900E http://new.george-smart.co.uk/yaesu_ft_7900e 5046 yaesu_ft_7900e draft 0 2014-08-14 14:54:57 closed closed page = Programming Cable = More recently I have been using the Yaesu FT-7900E in my new car for general VHF/UHF voice mobile, including repeater access. Since the FT7900 has a nice simple interface, and knowing about the radio's ability to hold repeater information in memory, I decided to attempt to make a cable to program the radio. This wasn't as simple as I had been lead to believe, although I managed it in the end, with thanks to Sam Ruddy (Yaesu UK) and <a href="http://www.g4hfq.co.uk/">Bob Freeth (G4HFQ)</a>. The diagram was provided to me, and is not my own design; however, I do present the schematic in a CAD format as well as really quick and dirty PCB design. The two schematic images are correctly scaled when printed at 300DPI. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/FT7900_ProgCable_Schematic.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/FT7900_ProgCable_Schematic.png" width="600" alt="FT7900 Programming Cable Schematic" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/FT7900_ProgCable_TopSilk.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/FT7900_ProgCable_TopSilk.png" width="300" alt="FT7900 Programming Cable Top Silk" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/FT7900_ProgCable_BotCopper.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/FT7900_ProgCable_BotCopper.png" width="300" alt="FT7900 Programming Cable Bottom Copper" class="aligncenter"></a> I have tried several adapters and the only reliable operation is with the 4069 inverter as a buffer between the radio and the USB TTL Adapter. The adapter used was one of these, purchased for £1 on eBay. Be careful as the pinout seems very variable in the ordering. Mine was <a href="http://www.ebay.co.uk/itm/290984791202">this one</a> (<i>New Upgrade PL2303HX USB Serial To RS232 TTL Chip Auto Converter Adapter Module</i>). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/FT7900_ProgCable_USBTTL.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/FT7900_ProgCable_USBTTL.png" width="400" alt="USB TTL Adapter" class="aligncenter"></a> Hope this helps someone else out! <h1>Mobile APRS</h1> Before the <a href="http://new.george-smart.co.uk/mobile_car_station">Mobile Car Station</a> replaced the Yaesu FT-7900E into the car, I had the Yaesu FT-7900 and <a href="http://www.foxdelta.com/products/foxtrak-old.htm">FoxDelta FoxTrak</a> in one of the side storage areas of the boot, and the GPS inside the cars paneling. The FoxTrak is connected via the FT-7900's DATA socket, and is controllable via the FT-7900's front panel. All of the electronics and radio are secure in the boot and no loose cabling can be seen. The radio is also used for accessing my <a href="http://new.george-smart.co.uk/echolink">EchoLink</a> node as well as general receiving when I am not using <a href="http://new.george-smart.co.uk/aprs">APRS</a>. The main hardware is mounted in a side compartment in the boot of the car. This contains the radio, the tracker and a few manual controls too. The radio front panel is installed in the front cabin with the microphone with an external speaker. The thumbnails below are of the page are images of the installation. <center><table cellpadding="2" border="0" > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/Radio_in_car.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2014/08/Radio_in_car.jpg" width="150" alt="Radio and Tracker in car boot" class="aligncenter"></a></tr> </table> Click to enlarge </center> <b>FIXME_Category :Radio</b> <b>FIXME_Category :Car</b> Yaesu FT-857D http://new.george-smart.co.uk/yaesu_ft_857d 2012-01-12 15:08:10 0 page closed closed 3045 draft yaesu_ft_857d <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/PortableOperation_YaesuFT857D.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/PortableOperation_YaesuFT857D.jpg" width="600" alt="Yaesu FT-857D" class="aligncenter"></a> The image above is Yaesu's promotion image the FT-857D. It is essentially a larger version of the FT-817ND. 100 watts on HF, 50 watts on VHF and 20 watts on UHF. It is an excellent radio. I have not met anyone who had used mine (or owns one) that is not impressed with it. May only fault is that the internal speaker is a little too tinny, but carrying an external speaker (I have a small Nokia speaker). <h1>Sense Wire Failure</h1> About a month or two after owning the radio (I bought it second hand), it developed a fault. No matter what I did, I could not get more than 20 watts out of the radio. After some hunting about, I emailed Yaesu technical support who informed me that it was probably the battery sensing wire. You can see the battery sense symbol next to the voltage on the top right of the main screen. This symbol is in contrast to the usual 'V' displayed (see the image above). <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Yaesu_FT857D_BatterySense_Symbol.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Yaesu_FT857D_BatterySense_Symbol.jpg" width="400" alt="Battery Sense Symbol" class="aligncenter"></a> I explained that I was an Electrical Engineer, and the Yaesu Engineer encouraged me to look at the radio myself, and save the repair fees. I decided I would peer inside and see, and if it was too stressful (as in, SMT components) I would send it Yaesu. Anyway. After Yaesu sent me the schematic, I started from the sense wire on the DC power connector, and worked my way into the radio, towards the microprocessor, trying to figure out where the signal was getting corrupted. On the under-side of the main circuit board, there is a small transistor: Q1032 in fact. It had blown. It is a digital transistor (i.e. it has biasing internally to work from 5V logic). However, it measured more akin to a capacitor! After explaining my findings to Yaesu, they confirmed my suspicion in that Q1032 was faulty. Yaesu sent me two new transistors <b>for free</b> as a good will gesture, which I was very impressed with. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Yaesu_FT857D_Replacement_Q1032.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Yaesu_FT857D_Replacement_Q1032.jpg" width="600" alt="Replacement Q1032" class="aligncenter"></a> Working on the radio is an experience. You can see the two transistors in the image above, in the plastic bag. The two black dots on the right. Just it you've wondered, here's what the inside of the radio looks like: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Yaesu_FT857D_Gubbins1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Yaesu_FT857D_Gubbins1.jpg" width="600" alt="Innards of the Radio" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Yaesu_FT857D_Gubbins2.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Yaesu_FT857D_Gubbins2.jpg" width="600" alt="Innards of the Radio" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Yaesu_FT857D_Gubbins3.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/01/Yaesu_FT857D_Gubbins3.jpg" width="600" alt="Innards of the Radio" class="aligncenter"></a> <b>FIXME_Category :Radio</b> <b>FIXME_Category :Electronics</b> Yaesu MH-31 Electret Condenser Mic Mod http://new.george-smart.co.uk/yaesu_mh_31_electret_condenser_mic_mod 0 2013-07-30 21:37:03 page closed closed 4717 draft yaesu_mh_31_electret_condenser_mic_mod This page came about one night when talking on 2 metres FM to <a href="http://www.webshed.org/">G7UVW</a>. During our QSO, the microphone cut out and I couldn't seem to get any audio out of the microphone. It just stopped, half way through a QSO. Expecting the lead, I swapped with another (I have 2 FT817's and an FT857) rig and found the lead to be okay, but the microphone unit was faulty. Further investigation showed the dynamic microphone coil resistance to be around 2.8 mega-Ohms. I suspect (with no evidence) that these are nominally 600 Ohm coils, and so this was at fault. Although I had a spare dynamic element, from an old Tait T500 microphone, I opted to use an electret condenser element instead because I had heard good things - they offer more punchy and fuller sounding audio. I tacked it together on the back of the microphone and the results were good. The rest of this page documents how I went about in modifying it to a reasonable standard. The first thing I did was found a piece of cardboard and cut a circle the same size as the faulty dynamic element. Then I made a smaller hole inside to hold the electret element. <center><table > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/07/MH31_Card1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/07/MH31_Card1.jpg" width="300" class="aligncenter"></a></tr> </table> </center> Next I placed the electret element into the cardboard ring, and then hot glued it in carefully. The idea being that there would be some air space between the microphone and the element, to absorb some of the physical <i>creaking</i> that sometimes occurs as well as to baffle some of the puffy sounds our voices make. That's the idea; and it worked to the best I can tell. <center><table > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/07/MH31_Glue1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/07/MH31_Glue1.jpg" width="300" class="aligncenter"></a></tr> </table> </center> I then glued the whole thing into the microphone space where the dynamic microphone had come from. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/07/MH31_Glue3.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/07/MH31_Glue3.jpg" width="600" class="aligncenter"></a> Once the glue has well set, it's time to wire the electrical parts up. I used the exact same values as <a href="http://www.m0ukd.com/mods/Yaesu_MH-31_Mic_Mod/">John, M0UKD</a> who has done similar. Here, I show his schematic taken from the link above: <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/07/MH31_ModSchematic_M0UKD.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/07/MH31_ModSchematic_M0UKD.jpg" width="600" class="aligncenter"></a> I started by adding the 1 nano-Farad capacitor across the microphone connection. Then I added the 8.2 kilo-Ohm resistor from the 5V power line to the signal side of the microphone, as shown in the picture below. Notice that I have put some plastic sleeving over the resistor wires. <center><table > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/07/MH31_Electical1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/07/MH31_Electical1.jpg" width="300" class="aligncenter"></a></tr> </table> </center> Next we change the two capacitors inside the microphone. I followed John's lead and went with 1 micro-Farad and 47 nano-Farad with the switch between - this gives good bass response on the 1 uF capacitor for standard rag-chews - the 47 nF gives very thin and punchy audio for DX chasing on SSB. I removed the 0.33 uF capacitor from the microphone. That done, place the microphone down on the table such that the back of the switch is facing up with the radio connector towards you. In this orientation, disconnect the right wire from the switch back, leaving only the middle wire connected. Maintaining this orientation throughout, connect the negative side of the 1 uF capacitor to the right side of the switch, and the positive side to the wire you just removed from the switch. The 47 nF capacitor goes from the left switch output to the same removed wire. See the two images below. <center><table > <tr><td><a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/07/MH31_Electical3.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/07/MH31_Electical3.jpg" width="300" class="aligncenter"></a></tr> </table> </center> Finally, connect the electret element to the reverse side of the board, across the 1 nF capacitor, observing the polarity; the mic connection furthest from the radio socket is the positive side, and carries the signal - the other tab is microphone ground. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/07/MH31_Done.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/07/MH31_Done.jpg" width="600" class="aligncenter"></a> Yaesu VX-8G http://new.george-smart.co.uk/yaesu_vx_8g closed page closed 0 2012-04-23 21:04:08 yaesu_vx_8g draft 3404 I bought a Yaesu VX-8GE to replace my old Yaesu VX-7R. As one of my main interests is <a href="http://new.george-smart.co.uk/aprs">APRS</a> and Packet Radio, I opted for the VX-8GE with the GPS built in. The other device, VX-8DE has the 6 metre band but the GPS is external (and an optional extra at ~£70) to make way for an optional Bluetooth module (also at ~£70). I was tempted to go for the Bluetooth device, but in the end settled for the internal GPS for convenience and because it is the cheaper option - I wasn't concerned with 6 metres at all, and Bluetooth is just too expensive for the return. I'm pleased with my choice! I purchased the radio on the spur of the moment at the Kempton Park Rally, Sunday 22nd April 2012. I walked away with the device for a good price of £320. This is at least the cheapest I'd seen anywhere to date for sale in the UK, so it's not bad. Cheaper options of importing the radio from China work out at about £280, but that doesn't include the 2 year warranty and a local place to return the item should I need to. I'd done a bit of research into the prices beforehand, and as always it paid off. Thought the purchase was on the spur of the moment, I had been intending to buy one for a few months. After speaking with the Yaesu sales rep to find out which radio suited my requirements most, I made the steal! Getting started was a breeze and I was soon up and on APRS. I was able to receive stations almost immediately, and view the basic data from stations in the <i>Station List</i>. I intend to take the radio on my belt into Central London to see how it follows my route. Look out for me, <a href="http://aprs.fi/a/M1GEO-9">M1GEO-9</a>. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Yaesu_VX8G_1.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Yaesu_VX8G_1.jpg" width="600" alt="Yaesu VX-8GE Boxed" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Yaesu_VX8G_2.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2012/04/Yaesu_VX8G_2.jpg" width="400" alt="Yaesu VX-8GE GPS Screen" class="aligncenter"></a> <b>FIXME_Category :Radio</b> ZigBee Packet Delivery Ratio http://new.george-smart.co.uk/zigbee_packet_delivery_ratio 2013-05-13 13:29:53 0 closed closed page 4478 zigbee_packet_delivery_ratio draft Much of the work I do as part of my <a href="http://new.george-smart.co.uk/phd">PhD</a> involves me working with wireless sensor network devices. These devices transmit and receive data primarily in the <a href="http://en.wikipedia.org/wiki/ISM_band">2.4 GHz ISM band</a>, which is shared with (amongst other things) Wireless LAN and Bluetooth. These services cause considerable problem with developing protocols for use with wireless sensor networks, which often rely on low packet loss, low electrical noise and good timing constraints. In WiFi rich environments, such as my office, much of the WSN traffic is lost due to collisions with other services. This page documents a very small experiment to show which ZigBee IEEE 802.15.4e channels provide the best environment. I use a metric called the packet delivery ratio (PDR) similar to that described <a href="https://openwsn.atlassian.net/wiki/display/OW/IEEE802.15.4e">IEEE802.15.4e here</a> to measure the ratio of packets received to those sent on a specific channel. Two TelosB nodes are used which employ the TI/Chipcon CC2420 RF simplex transceiver. The nodes were powered by mains electricity to eliminate the possibility of battery discharge effecting results. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/TelosB_PDR_Mainsplug.jpg"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/TelosB_PDR_Mainsplug.jpg" width="300" alt="TelosB connected via USB to mains socket" class="aligncenter"></a> The nodes were spaced direct line of site across the office, at a distance of 5 metres. A transmitting node sent 10,000 packets out, and the receiving node counted how many were received. From these two numbers we can calculate the percentage of packets received (delivered) and those lost. Clearly we are looking for the lowest loss. <h1>Preliminary Results</h1> The first run was a proof of concept test. The channels were sweeped and the PDR calculated for each. The image below shows the packet delivery ratio for the IEEE 802.15.4 ZigBee channels. Overlaid are some of the key channels for IEEE 802.11 WiFi. <i><a href="http://new.george-smart.co.uk/eduroam">Eduroam</a></i>, the <a href="http://new.george-smart.co.uk/university">universities</a> wireless network is on channel 1 in my part of the building which overlaps with ZigBee channels 11-14. A clear degradation in packet delivery ratio is visible where the ZigBee channels overlap with WiFi channels, especially as channel 1 is very busy. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/TelosB_PDR_Results.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/TelosB_PDR_Results.png" width="700" alt="PDR Results" class="aligncenter"></a> Here we see the results of <i><a href="https://play.google.com/store/apps/details?id=com.farproc.wifi.analyzer&hl=en">WiFi Anaylser</a></i> which shows which channels wireless networks are on and how strong they are. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/TelosB_PDR_Wireless.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/TelosB_PDR_Wireless.png" width="400" alt="WiFi Activities" class="aligncenter"></a> You notice from the results of WiFi Analyser that the busy networks (<i>eduroam</i> and <i>UCL_Guest</i>) are on WiFi channel 1. WiFi channel 13 has the staff (<i>UCL_EE</i>) network which is mildly busy. Other networks have little or no traffic and it's only the beacons so they don't effect the ZigBee traffic as much as is seen above. The raw data: <table cellpadding="5" border="1" > <tr><td><b>ZigBee Channel</b></td><td>11</td><td>12</td><td>13</td><td>14</td><td>15</td><td>16</td><td>17</td><td>18</td><td>19</td><td>20</td><td>21</td><td>22</td><td>23</td><td>24</td><td>25</td><td>26</td></tr><tr><td><b>PDR</b> (%)</td><td>98.89</td><td>98.55</td><td>83.23</td><td>71.51</td><td>99.49</td><td>97.57</td><td>99.82</td><td>99.91</td><td>99.59</td><td>99.74</td><td>99.69</td><td>99.07</td><td>97.05</td><td>97.38</td><td>97.59</td><td>99.04</tr> </table> <h1>Extended Results</h1> The graphs below show a much longer run over the course of a day. Here we can clearly see the effects of the 3 key WiFi channels used. The top graph comprises of 205 runs (24 hours of data) which are the red lines. The black line is the average all the runs for each channel, with PDR values in brackets. The lower graph shows the standard deviation for each channel, or how reliable the average is. Channels with a high standard deviation are unpredictable, in so much as the results are changing. Channels with a low standard deviation are channels which always experience similar losses. <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/TelosB_PDR_Results205runs.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/TelosB_PDR_Results205runs.png" width="700" alt="PDR Results" class="aligncenter"></a> <h1>At Home</h1> As I often work from home on these results, I decided to measure the environment at home: Again, the raw data: <table cellpadding="5" border="1" > <tr><td><b>ZigBee Channel</b></td><td>11</td><td>12</td><td>13</td><td>14</td><td>15</td><td>16</td><td>17</td><td>18</td><td>19</td><td>20</td><td>21</td><td>22</td><td>23</td><td>24</td><td>25</td><td>26</td></tr><tr><td><b>PDR</b> (%)</td><td>92.27</td><td>88.34</td><td>91.01</td><td>99.96</td><td>99.84</td><td>86.40</td><td>79.99</td><td>80.50</td><td>92.69</td><td>97.31</td><td>97.66</td><td>99.56</td><td>96.30</td><td>95.90</td><td>96.47</td><td>96.00</tr> </table> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/TelosB_PDR_Home_Results7runs.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/TelosB_PDR_Home_Results7runs.png" width="700" alt="PDR Results" class="aligncenter"></a> <a href="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/TelosB_PDR_WirelessHome.png"><img src="http://new.george-smart.co.uk/wordpress/wp-content/uploads/2013/05/TelosB_PDR_WirelessHome.png" width="400" alt="WiFi Activities" class="aligncenter"></a>