<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[Zensunni.org]]></title>
  <link href="http://blog.zensunni.com/atom.xml" rel="self"/>
  <link href="http://blog.zensunni.com/"/>
  <updated>2014-03-21T21:03:32+00:00</updated>
  <id>http://blog.zensunni.com/</id>
  <author>
    <name><![CDATA[Matthew Robinson]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[Arduino - Elecraft T1 Interface]]></title>
    <link href="http://blog.zensunni.com/blog/2011/01/19/arduino-elecraft-t1-interface/"/>
    <updated>2011-01-19T21:47:00+00:00</updated>
    <id>http://blog.zensunni.com/blog/2011/01/19/arduino-elecraft-t1-interface</id>
    <content type="html"><![CDATA[<p><img src="http://blog.zensunni.com/images/arduinot1/elecraft_interface.jpg" title="Arduino, Interface and T1" ></p>

<p>I recently built an <a href="http://www.elecraft.com/T1/T1.htm">Elecraft T1 automatic tuner</a> to use with my <a href="http://flexradio.com/Products.aspx?topic=F1.5k_features">Flex-1500 SDR</a>. The manual for the T1 ATU gives information about the protocol that is used to remotely control the ATU allowing the ATU to retune the antenna on band changes. Elecraft only sell a cable to interface with the FT-817 so I began to wonder if I could interface the Flex-1500 with the T1 using an Arduino prototyping board.</p>

<p>Being a software defined radio the “brains” of the Flex-1500 actually run on a PC in the form of PowerSDR. I had a Google and it appeared that most people were using a piece of software called <a href="http://k5fr.com/DDUtil.htm">DDUtil</a> to interface between PowerSDR and external hardware. I downloaded DDUtil, installed it and quickly came to the conclusion that I needed to create a device that acted as a “passive listener”.</p>

<p>DDUtil can be configured to send a simple CAT command to a serial port on a repeated basis. I configured some virtual serial ports in Windows to monitor the signal being sent from DDUtil to the external device and found that it simply sends an IF CAT command on a repeating basis. The IF command contains the frequency that the radio is tuned to.</p>

<p>When connected to a PC the Arduino presents itself to the operating system as a serial port so all I needed to do was program the Arduino to decode the IF command, convert the frequency into a band and then send the band information to the Elecraft T1.</p>

<p>The connection to the T1 is made using a 3.5mm stereo plug. The tip carries the data about the band, the ring is used to trigger a retune of the ATU and the sleeve is the ground. The tune is connected to the Arduino using an NPN transistor (I used a generic PN100) in an open-collector configuration. The band is sent to the T1 as a number between 0 and 12 by encoding the four bits and sending them via the tip of the connector. The details are described in the <a href="http://www.elecraft.com/manual/T1%20owners%20man%20rev%20A2.pdf">T1 manual</a> on page 8.</p>

<p>A schematic for the interface is shown below. I built this as a daughter board that the <a href="http://arduino.cc/en/Main/ArduinoBoardNano">Arduino Nano</a> can plug into. This board contains the NPN transistor, a current limiting resistor and a three pin connector that is used to connect the cable that carries the signal to the T1. I made the cable from a good quality shielded twin core microphone cable.</p>

<p><img src="http://blog.zensunni.com/images/arduinot1/t1_schematic.jpg" title="T1 Interface Schematic" ></p>

<p>The completed board is shown below. There are a number of header sockets on the board which are there simply to support the Arduino. Only three pins are actually connected between the Arduino and the board (D2, D3 and GND).</p>

<p><img src="http://blog.zensunni.com/images/arduinot1/elecraft_daughter_board.jpg" title="Elecraft Interface Daughter Board" ></p>

<p>The Arduino sketch is as follows:</p>

<figure class='code'><figcaption><span>Elecraft T1 Interface Arduino Sketch  </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
<span class='line-number'>29</span>
<span class='line-number'>30</span>
<span class='line-number'>31</span>
<span class='line-number'>32</span>
<span class='line-number'>33</span>
<span class='line-number'>34</span>
<span class='line-number'>35</span>
<span class='line-number'>36</span>
<span class='line-number'>37</span>
<span class='line-number'>38</span>
<span class='line-number'>39</span>
<span class='line-number'>40</span>
<span class='line-number'>41</span>
<span class='line-number'>42</span>
<span class='line-number'>43</span>
<span class='line-number'>44</span>
<span class='line-number'>45</span>
<span class='line-number'>46</span>
<span class='line-number'>47</span>
<span class='line-number'>48</span>
<span class='line-number'>49</span>
<span class='line-number'>50</span>
<span class='line-number'>51</span>
<span class='line-number'>52</span>
<span class='line-number'>53</span>
<span class='line-number'>54</span>
<span class='line-number'>55</span>
<span class='line-number'>56</span>
<span class='line-number'>57</span>
<span class='line-number'>58</span>
<span class='line-number'>59</span>
<span class='line-number'>60</span>
<span class='line-number'>61</span>
<span class='line-number'>62</span>
<span class='line-number'>63</span>
<span class='line-number'>64</span>
<span class='line-number'>65</span>
<span class='line-number'>66</span>
<span class='line-number'>67</span>
<span class='line-number'>68</span>
<span class='line-number'>69</span>
<span class='line-number'>70</span>
<span class='line-number'>71</span>
<span class='line-number'>72</span>
<span class='line-number'>73</span>
<span class='line-number'>74</span>
<span class='line-number'>75</span>
<span class='line-number'>76</span>
<span class='line-number'>77</span>
<span class='line-number'>78</span>
<span class='line-number'>79</span>
<span class='line-number'>80</span>
<span class='line-number'>81</span>
<span class='line-number'>82</span>
<span class='line-number'>83</span>
<span class='line-number'>84</span>
<span class='line-number'>85</span>
<span class='line-number'>86</span>
<span class='line-number'>87</span>
<span class='line-number'>88</span>
<span class='line-number'>89</span>
<span class='line-number'>90</span>
<span class='line-number'>91</span>
<span class='line-number'>92</span>
<span class='line-number'>93</span>
<span class='line-number'>94</span>
<span class='line-number'>95</span>
<span class='line-number'>96</span>
<span class='line-number'>97</span>
<span class='line-number'>98</span>
<span class='line-number'>99</span>
<span class='line-number'>100</span>
<span class='line-number'>101</span>
<span class='line-number'>102</span>
<span class='line-number'>103</span>
<span class='line-number'>104</span>
<span class='line-number'>105</span>
<span class='line-number'>106</span>
<span class='line-number'>107</span>
<span class='line-number'>108</span>
<span class='line-number'>109</span>
<span class='line-number'>110</span>
<span class='line-number'>111</span>
<span class='line-number'>112</span>
<span class='line-number'>113</span>
<span class='line-number'>114</span>
<span class='line-number'>115</span>
<span class='line-number'>116</span>
<span class='line-number'>117</span>
<span class='line-number'>118</span>
<span class='line-number'>119</span>
<span class='line-number'>120</span>
<span class='line-number'>121</span>
<span class='line-number'>122</span>
<span class='line-number'>123</span>
<span class='line-number'>124</span>
<span class='line-number'>125</span>
<span class='line-number'>126</span>
<span class='line-number'>127</span>
<span class='line-number'>128</span>
<span class='line-number'>129</span>
<span class='line-number'>130</span>
<span class='line-number'>131</span>
<span class='line-number'>132</span>
<span class='line-number'>133</span>
<span class='line-number'>134</span>
<span class='line-number'>135</span>
<span class='line-number'>136</span>
<span class='line-number'>137</span>
<span class='line-number'>138</span>
<span class='line-number'>139</span>
<span class='line-number'>140</span>
<span class='line-number'>141</span>
<span class='line-number'>142</span>
<span class='line-number'>143</span>
<span class='line-number'>144</span>
<span class='line-number'>145</span>
<span class='line-number'>146</span>
<span class='line-number'>147</span>
<span class='line-number'>148</span>
<span class='line-number'>149</span>
<span class='line-number'>150</span>
<span class='line-number'>151</span>
<span class='line-number'>152</span>
<span class='line-number'>153</span>
<span class='line-number'>154</span>
<span class='line-number'>155</span>
<span class='line-number'>156</span>
<span class='line-number'>157</span>
<span class='line-number'>158</span>
<span class='line-number'>159</span>
<span class='line-number'>160</span>
<span class='line-number'>161</span>
<span class='line-number'>162</span>
<span class='line-number'>163</span>
<span class='line-number'>164</span>
<span class='line-number'>165</span>
<span class='line-number'>166</span>
<span class='line-number'>167</span>
<span class='line-number'>168</span>
<span class='line-number'>169</span>
<span class='line-number'>170</span>
<span class='line-number'>171</span>
</pre></td><td class='code'><pre><code class='c'><span class='line'><span class="cm">/******************************************************</span>
</span><span class='line'><span class="cm">*  Elecraft T1 Interface                              *</span>
</span><span class='line'><span class="cm">*                                                     *</span>
</span><span class='line'><span class="cm">*  This Arduino sketch allows DDUtil to control       *</span>
</span><span class='line'><span class="cm">*  an Elecraft T1 ATU via the T1&#39;s remote control     *</span>
</span><span class='line'><span class="cm">*  interface.                                         *</span>
</span><span class='line'><span class="cm">*                                                     *</span>
</span><span class='line'><span class="cm">*  Copyright (c) Matthew Robinson - VK6MR, 2011       *</span>
</span><span class='line'><span class="cm">*                                                     * </span>
</span><span class='line'><span class="cm">*  This code is released under a Creative Commons     *</span>
</span><span class='line'><span class="cm">*  Attribution-NonCommercial-ShareAlike 3.0           *</span>
</span><span class='line'><span class="cm">*  Unported (CC BY-NC-SA 3.0) license.                *</span>
</span><span class='line'><span class="cm">*                                                     *</span>
</span><span class='line'><span class="cm">*  http://creativecommons.org/licenses/by-nc-sa/3.0/  *</span>
</span><span class='line'><span class="cm">*                                                     *</span>
</span><span class='line'><span class="cm">******************************************************/</span>
</span><span class='line'>
</span><span class='line'>
</span><span class='line'><span class="kt">int</span> <span class="n">TUNE</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
</span><span class='line'><span class="kt">int</span> <span class="n">DATA</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'><span class="kt">int</span> <span class="n">prevBand</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
</span><span class='line'><span class="kt">int</span> <span class="n">band</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'><span class="kt">char</span> <span class="n">buffer</span><span class="p">[</span><span class="mi">64</span><span class="p">];</span>
</span><span class='line'><span class="kt">int</span>  <span class="n">bufptr</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'><span class="kt">void</span> <span class="nf">setup</span><span class="p">()</span> <span class="p">{</span>
</span><span class='line'>  <span class="n">Serial</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="mi">9600</span><span class="p">);</span>
</span><span class='line'>
</span><span class='line'>  <span class="n">pinMode</span><span class="p">(</span><span class="n">TUNE</span><span class="p">,</span> <span class="n">OUTPUT</span><span class="p">);</span>
</span><span class='line'>  <span class="n">digitalWrite</span><span class="p">(</span><span class="n">TUNE</span><span class="p">,</span> <span class="n">LOW</span><span class="p">);</span>
</span><span class='line'>
</span><span class='line'>  <span class="n">pinMode</span><span class="p">(</span><span class="n">DATA</span><span class="p">,</span> <span class="n">INPUT</span><span class="p">);</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'>
</span><span class='line'><span class="kt">void</span> <span class="nf">loop</span><span class="p">()</span> <span class="p">{</span>
</span><span class='line'>  <span class="k">if</span> <span class="p">(</span><span class="n">Serial</span><span class="p">.</span><span class="n">available</span><span class="p">())</span> <span class="p">{</span>
</span><span class='line'>    <span class="kt">char</span> <span class="n">character</span> <span class="o">=</span> <span class="n">Serial</span><span class="p">.</span><span class="n">read</span><span class="p">();</span>
</span><span class='line'>
</span><span class='line'>    <span class="k">if</span> <span class="p">(</span><span class="n">character</span> <span class="o">!=</span> <span class="sc">&#39;\n&#39;</span> <span class="o">&amp;&amp;</span> <span class="n">character</span> <span class="o">!=</span> <span class="sc">&#39;\r&#39;</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>
</span><span class='line'>      <span class="n">buffer</span><span class="p">[</span><span class="n">bufptr</span><span class="p">]</span> <span class="o">=</span> <span class="n">character</span><span class="p">;</span>
</span><span class='line'>      <span class="k">if</span> <span class="p">(</span><span class="n">buffer</span><span class="p">[</span><span class="n">bufptr</span><span class="p">]</span> <span class="o">==</span> <span class="sc">&#39;;&#39;</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>
</span><span class='line'>        <span class="c1">// Message should always be 14 chars</span>
</span><span class='line'>        <span class="k">if</span> <span class="p">(</span><span class="n">bufptr</span> <span class="o">==</span> <span class="mi">13</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>          <span class="n">parseBuffer</span><span class="p">();</span>
</span><span class='line'>
</span><span class='line'>          <span class="k">if</span> <span class="p">(</span><span class="n">band</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>            <span class="k">if</span> <span class="p">(</span><span class="n">band</span> <span class="o">!=</span> <span class="n">prevBand</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>              <span class="n">sendBand</span><span class="p">();</span>
</span><span class='line'>              <span class="n">prevBand</span> <span class="o">=</span> <span class="n">band</span><span class="p">;</span>
</span><span class='line'>            <span class="p">}</span>
</span><span class='line'>          <span class="p">}</span>
</span><span class='line'>        <span class="p">}</span>
</span><span class='line'>
</span><span class='line'>        <span class="n">bufptr</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span><span class='line'>      <span class="p">}</span>
</span><span class='line'>      <span class="k">else</span> <span class="p">{</span>
</span><span class='line'>        <span class="n">bufptr</span><span class="o">++</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'>        <span class="c1">// Don&#39;t overrun the buffer, messages should only be 14 chars anyway</span>
</span><span class='line'>        <span class="k">if</span> <span class="p">(</span><span class="n">bufptr</span> <span class="o">&gt;</span> <span class="mi">60</span><span class="p">)</span>
</span><span class='line'>          <span class="n">bufptr</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span><span class='line'>      <span class="p">}</span>
</span><span class='line'>    <span class="p">}</span>
</span><span class='line'>  <span class="p">}</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'>
</span><span class='line'><span class="c1">// buffer is of form:</span>
</span><span class='line'><span class="c1">// IF00003700000;</span>
</span><span class='line'><span class="c1">// IF00051000000;</span>
</span><span class='line'>
</span><span class='line'><span class="kt">void</span> <span class="nf">parseBuffer</span><span class="p">()</span> <span class="p">{</span>
</span><span class='line'>  <span class="k">if</span> <span class="p">(</span><span class="n">buffer</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;I&#39;</span> <span class="o">||</span> <span class="n">buffer</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;F&#39;</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>    <span class="n">band</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
</span><span class='line'>    <span class="k">return</span><span class="p">;</span>
</span><span class='line'>  <span class="p">}</span>
</span><span class='line'>
</span><span class='line'>  <span class="c1">// We are only interested in the significant figures</span>
</span><span class='line'>  <span class="kt">int</span> <span class="n">freq</span> <span class="o">=</span> <span class="n">buffer</span><span class="p">[</span><span class="mi">6</span><span class="p">]</span> <span class="o">-</span> <span class="mi">48</span><span class="p">;</span>
</span><span class='line'>  <span class="n">freq</span> <span class="o">+=</span> <span class="p">(</span><span class="n">buffer</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="o">-</span> <span class="mi">48</span><span class="p">)</span> <span class="o">*</span> <span class="mi">10</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'>  <span class="n">band</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'>  <span class="k">if</span> <span class="p">(</span><span class="n">freq</span> <span class="o">&gt;=</span> <span class="mi">1</span> <span class="o">&amp;&amp;</span> <span class="n">freq</span> <span class="o">&lt;=</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>    <span class="n">band</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="c1">// 160</span>
</span><span class='line'>  <span class="p">}</span>
</span><span class='line'>  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">freq</span> <span class="o">&gt;=</span> <span class="mi">3</span> <span class="o">&amp;&amp;</span> <span class="n">freq</span> <span class="o">&lt;=</span> <span class="mi">4</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>    <span class="n">band</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span> <span class="c1">// 80</span>
</span><span class='line'>  <span class="p">}</span>
</span><span class='line'>  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">freq</span> <span class="o">==</span> <span class="mi">5</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>    <span class="n">band</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span> <span class="c1">// 60</span>
</span><span class='line'>  <span class="p">}</span>
</span><span class='line'>  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">freq</span> <span class="o">==</span> <span class="mi">7</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>    <span class="n">band</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span> <span class="c1">// 40</span>
</span><span class='line'>  <span class="p">}</span>
</span><span class='line'>  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">freq</span> <span class="o">==</span> <span class="mi">10</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>    <span class="n">band</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span> <span class="c1">// 30</span>
</span><span class='line'>  <span class="p">}</span>
</span><span class='line'>  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">freq</span> <span class="o">==</span> <span class="mi">14</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>    <span class="n">band</span> <span class="o">=</span> <span class="mi">6</span><span class="p">;</span> <span class="c1">// 20</span>
</span><span class='line'>  <span class="p">}</span>
</span><span class='line'>  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">freq</span> <span class="o">==</span> <span class="mi">18</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>    <span class="n">band</span> <span class="o">=</span> <span class="mi">7</span><span class="p">;</span> <span class="c1">// 17</span>
</span><span class='line'>  <span class="p">}</span>
</span><span class='line'>  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">freq</span> <span class="o">==</span> <span class="mi">21</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>    <span class="n">band</span> <span class="o">=</span> <span class="mi">8</span><span class="p">;</span> <span class="c1">// 15</span>
</span><span class='line'>  <span class="p">}</span>
</span><span class='line'>  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">freq</span> <span class="o">==</span> <span class="mi">24</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>    <span class="n">band</span> <span class="o">=</span> <span class="mi">9</span><span class="p">;</span> <span class="c1">// 12</span>
</span><span class='line'>  <span class="p">}</span>
</span><span class='line'>  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">freq</span> <span class="o">&gt;=</span> <span class="mi">28</span> <span class="o">&amp;&amp;</span> <span class="n">freq</span> <span class="o">&lt;=</span> <span class="mi">29</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>    <span class="n">band</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span> <span class="c1">// 10</span>
</span><span class='line'>  <span class="p">}</span>
</span><span class='line'>  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">freq</span> <span class="o">&gt;=</span> <span class="mi">50</span> <span class="o">&amp;&amp;</span> <span class="n">freq</span> <span class="o">&lt;=</span> <span class="mi">54</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>    <span class="n">band</span> <span class="o">=</span> <span class="mi">11</span><span class="p">;</span> <span class="c1">// 6</span>
</span><span class='line'>  <span class="p">}</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'>
</span><span class='line'><span class="kt">void</span> <span class="nf">sendBand</span><span class="p">()</span> <span class="p">{</span>
</span><span class='line'>
</span><span class='line'>  <span class="c1">// Pull the TUNE line high for half a second</span>
</span><span class='line'>
</span><span class='line'>  <span class="n">digitalWrite</span><span class="p">(</span><span class="n">TUNE</span><span class="p">,</span> <span class="n">HIGH</span><span class="p">);</span>
</span><span class='line'>  <span class="n">delay</span><span class="p">(</span><span class="mi">500</span><span class="p">);</span>
</span><span class='line'>  <span class="n">digitalWrite</span><span class="p">(</span><span class="n">TUNE</span><span class="p">,</span> <span class="n">LOW</span><span class="p">);</span>
</span><span class='line'>
</span><span class='line'>  <span class="c1">// The ATU will pull the DATA line HIGH for 50ms</span>
</span><span class='line'>  <span class="k">while</span><span class="p">(</span><span class="n">digitalRead</span><span class="p">(</span><span class="n">DATA</span><span class="p">)</span> <span class="o">==</span> <span class="n">LOW</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>  <span class="p">}</span>
</span><span class='line'>  <span class="k">while</span><span class="p">(</span><span class="n">digitalRead</span><span class="p">(</span><span class="n">DATA</span><span class="p">)</span> <span class="o">==</span> <span class="n">HIGH</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>  <span class="p">}</span>
</span><span class='line'>
</span><span class='line'>
</span><span class='line'>  <span class="c1">// Wait 10ms</span>
</span><span class='line'>  <span class="n">delay</span><span class="p">(</span><span class="mi">10</span><span class="p">);</span>
</span><span class='line'>
</span><span class='line'>  <span class="c1">// and then send data on the DATA line</span>
</span><span class='line'>  <span class="n">pinMode</span><span class="p">(</span><span class="n">DATA</span><span class="p">,</span> <span class="n">OUTPUT</span><span class="p">);</span>
</span><span class='line'>
</span><span class='line'>  <span class="c1">// 1 bits are HIGH for 4ms </span>
</span><span class='line'>  <span class="c1">// 0 bits are HIGH for 1.5ms</span>
</span><span class='line'>  <span class="c1">// Gap between digits is 1.5ms LOW</span>
</span><span class='line'>
</span><span class='line'>  <span class="c1">// 1st bit</span>
</span><span class='line'>  <span class="n">sendBit</span><span class="p">(</span><span class="n">band</span> <span class="o">&amp;</span> <span class="mi">8</span><span class="p">);</span>
</span><span class='line'>  <span class="n">sendBit</span><span class="p">(</span><span class="n">band</span> <span class="o">&amp;</span> <span class="mi">4</span><span class="p">);</span>
</span><span class='line'>  <span class="n">sendBit</span><span class="p">(</span><span class="n">band</span> <span class="o">&amp;</span> <span class="mi">2</span><span class="p">);</span>
</span><span class='line'>  <span class="n">sendBit</span><span class="p">(</span><span class="n">band</span> <span class="o">&amp;</span> <span class="mi">1</span><span class="p">);</span>
</span><span class='line'>
</span><span class='line'>  <span class="c1">// Leave the line LOW</span>
</span><span class='line'>  <span class="n">digitalWrite</span><span class="p">(</span><span class="n">DATA</span><span class="p">,</span> <span class="n">LOW</span><span class="p">);</span>
</span><span class='line'>
</span><span class='line'>  <span class="c1">// and switch it back to an input</span>
</span><span class='line'>  <span class="n">pinMode</span><span class="p">(</span><span class="n">DATA</span><span class="p">,</span> <span class="n">INPUT</span><span class="p">);</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'>
</span><span class='line'><span class="kt">void</span> <span class="nf">sendBit</span><span class="p">(</span><span class="kt">int</span> <span class="n">bit</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>
</span><span class='line'>  <span class="n">digitalWrite</span><span class="p">(</span><span class="n">DATA</span><span class="p">,</span> <span class="n">HIGH</span><span class="p">);</span>
</span><span class='line'>  <span class="k">if</span> <span class="p">(</span><span class="n">bit</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>    <span class="n">delay</span><span class="p">(</span><span class="mi">4</span><span class="p">);</span>
</span><span class='line'>  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span><span class='line'>    <span class="n">delayMicroseconds</span><span class="p">(</span><span class="mi">1500</span><span class="p">);</span>
</span><span class='line'>  <span class="p">}</span>
</span><span class='line'>
</span><span class='line'>  <span class="n">digitalWrite</span><span class="p">(</span><span class="n">DATA</span><span class="p">,</span> <span class="n">LOW</span><span class="p">);</span>
</span><span class='line'>  <span class="n">delayMicroseconds</span><span class="p">(</span><span class="mi">1500</span><span class="p">);</span>
</span><span class='line'><span class="p">}</span>
</span></code></pre></td></tr></table></div></figure>



]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Yaesu VX-6R USB Programming Interface]]></title>
    <link href="http://blog.zensunni.com/blog/2010/09/09/yaesu-vx-6r-usb-programming-interface/"/>
    <updated>2010-09-09T22:07:00+01:00</updated>
    <id>http://blog.zensunni.com/blog/2010/09/09/yaesu-vx-6r-usb-programming-interface</id>
    <content type="html"><![CDATA[<p>A couple of years ago I built a programming interface for my Yaesu VX-6R handheld radio based on the <a href="http://www.kc8unj.com/CATbox%20WSARC.pdf">CATbox</a> circuit created by G4TIC. I have been using the interface with the excellent <a href="http://www.kc8unj.com/vx6.html">VX-6 Commander</a> from <a href="http://www.kc8unj.com/">Jim Mitchell (KC8UNJ)</a>. Even at the time I no longer had a computer with an RS232 serial port and although the interface worked it was never reliable using USB to RS232 converter cables.</p>

<p><img class="right" src="http://static.sparkfun.com/images/products/00718-03-L_i_ma.jpg"></p>

<p>I have recently been playing with the FT232RL USB to TTL serial chip on a number of other projects. It occurred to me that this would make the basis for a much more reliable interface to the VX-6. In order to make it easier to use the FT232 SMD chip I have been using a breakout board from <a href="http://www.sparkfun.com/commerce/product_info.php?products_id=718">Sparkfun Electronics</a> (available from <a href="http://www.littlebirdelectronics.com/products/Breakout-Board-for-FT232RL-USB-to-Serial.html">Little Bird Electronics</a> in Australia) which contains all the support circuitry to get the FT232RL working, including TX and RX LEDs.</p>

<p>Before embarking on building an interface based on the FT232RL, I returned to Jim Mitchell’s site and checked out the page on <a href="http://www.kc8unj.com/interface.html">interface cables</a> where I found a <a href="http://www.kc8unj.com/usb_engl.pdf">USB design</a> from Alexander Meier (DG6RBP) which uses an older chip from the same manufacturer as the FT232RL. I quickly breadboarded an interface using the buffer circuit from Alexander’s circuit, the section of the circuit consisting of four transistors and seven resistors connected to TX/RX on the older FT232BM chip, and the FT232RL Sparkfun breakout board. Much to my surprise and delight it worked first time, a refreshing change from the previous interface I built.</p>

<p>Having proved that the circuit would work, I then moved on to consider how I could build a permanent interface based on the FT232RL. After some consideration it occurred to me that it made sense to simply integrate the buffering circuit with the breakout board. Using protoboard, I built a circuit consisting of the transistor buffering (I used the generic PN100 NPN transistor) and two headers into which the Sparkfun breakout board can be plugged.</p>

<p><img src="http://blog.zensunni.com/images/vx6/top.jpg" title="Protoboard Top" >
<img src="http://blog.zensunni.com/images/vx6/bottom.jpg" title="Protoboard Bottom" ></p>

<p>The board has a four pin header which connects to the radio. The header consists of data out, data in and ground. However, for the VX-6R the data in and data out are connected and I only use two wires to connect to the radio. If I want to use the interface with a radio that requires separate data lines I can remove the solder bridge connecting them.</p>

<p><img src="http://blog.zensunni.com/images/vx6/stacked.jpg" title="VX-6 Programming Interface" ></p>

<p>The resulting board and FT232RL combination is extremely compact and works flawlessly every time (so far at least). I have the added benefit of being able to unplug the FT232RL breakout board and use it to connect with other devices and projects.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Virgin Broadband Huawei E169 Installer Remover for Mac OS X]]></title>
    <link href="http://blog.zensunni.com/blog/2010/02/10/virgin-broadband-huawei-e169-installer-remover-for-mac-os-x/"/>
    <updated>2010-02-10T21:54:00+00:00</updated>
    <id>http://blog.zensunni.com/blog/2010/02/10/virgin-broadband-huawei-e169-installer-remover-for-mac-os-x</id>
    <content type="html"><![CDATA[<p>I have wireless broadband from Virgin Mobile Australia which came with a Huawei E169 USB modem. As Mac users of this modem will know, EVERY single time you plug the modem in a “CD disk” mounts on the desktop and if you are really unlucky the installer application starts running.</p>

<p>I have found a way to stop this happening by telling OS X (Leopard, Snow Leopard and Lion) to not automount the “CD disk”.</p>

<p>I have written a package installer which will set the configuration so this disk wont mount in future. The package can be downloaded from <a href="http://www.blendedcocoa.com/downloads/VirginInstallerDiskRemover.pkg">http://www.blendedcocoa.com/downloads/VirginInstallerDiskRemover.pkg</a>.</p>

<p>Download and run the package installer. Follow the instructions to install the configuration change. If you get an error it is probably because the modem can’t be found, make sure it is plugged in and that the installer disc is mounted on your desktop.</p>

<h2>How It Works</h2>

<p>Basically, the package contains a script that adds a configuration line to the <code>/etc/fstab</code> file, if the file doesn’t exist (which is probably the case) it is created. The following line is added to the file:</p>

<pre><code>UUID=A97C9EAF-E18F-3BE3-80CD-8A8C6FB6E8E7 none hfs ro,noauto
</code></pre>

<p>The <code>A97C...E8E7</code> text is the universal unique identifier (UUID) of the “CD disk” image. I am fairly certain that this UUID will not change between different VBB E169′s but the script should determine the correct UUID using diskutil anyway.</p>

<p>If <code>/etc/fstab</code> exists the script will make a backup (<code>/etc/fstab.previrgin.date</code>) and then add the above configuration to the end of <code>/etc/fstab</code>. If <code>/etc/fstab</code> already has an entry for the UUID the script will do nothing.</p>

<p>The script isn’t particularly complicated and should work in most cases. However, <strong>USE THE SCRIPT AT YOUR OWN RISK!!!</strong></p>

<p>P.S. If you aren’t using the latest drivers from Virgin (particularly if you are using Snow Leopard) go and get them from <a href="http://virginmobile.custhelp.com/app/answers/detail/a_id/175/p/132/r_id/100671">http://virginmobile.custhelp.com/app/answers/detail/a_id/175/p/132/r_id/100671</a>.</p>

<p><strong>Update – 4th Jan 2012:</strong> Added Lion to the list of tested versions of OS X that the fix works with.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[They're Gone]]></title>
    <link href="http://blog.zensunni.com/blog/2008/11/25/theyre-gone/"/>
    <updated>2008-11-25T22:03:00+00:00</updated>
    <id>http://blog.zensunni.com/blog/2008/11/25/theyre-gone</id>
    <content type="html"><![CDATA[<p>I dropped my parents at the airport yesterday morning ready for their 8:40am flight to Singapore. This meant getting up at 5am and getting to the airport at about 6am. After they had checked in we had some over-priced coffee and orange juice before saying our goodbyes at the security checkpoint.</p>

<p>I got in to work at about 7:30am and by the time it got to 4pm I was stuffed so I went home early. The house felt different with only Zac and me.</p>

<p>Zac doesn’t seem to have taken it well. He is missing all the attention and as a consequence has only me to annoy. He was particularly grumpy this morning as I didn’t immediately get up and feed him in the way that he has become accustomed.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[In which I miss the dust and mention some stuff I've been doing]]></title>
    <link href="http://blog.zensunni.com/blog/2008/11/02/in-which-i-miss-the-dust-and-mention-some-stuff-ive-been-doing/"/>
    <updated>2008-11-02T22:20:00+00:00</updated>
    <id>http://blog.zensunni.com/blog/2008/11/02/in-which-i-miss-the-dust-and-mention-some-stuff-ive-been-doing</id>
    <content type="html"><![CDATA[<p>So, I’ve been home from Burning Man and the USA for over a month now but until now I haven’t gotten around to moving the Gone to Burning Man post from the top of my blog. I suspect this is probably because I’d still like to be at Burning Man.</p>

<p>Anyway, since getting back a few notable events have occurred.</p>

<ul>
<li>My parents have come over to stay for a couple of months :-D</li>
<li>I went to Tambellup as part of the <a href="http://cv.curtin.edu.au/programs/jcw/index.cfm">John Curtin Weekend</a> of volunteering.</li>
<li>We’ve been to Melbourne for a week, where I graduated from my Masters degree.</li>
<li>I went to the weekend CampOut with a bunch of people from the Perth fire crew.</li>
<li>I have finally made the switch to Mac OS X with a <a href="http://www.apple.com/macbook/">shiny new aluminium MacBook</a>.</li>
<li>I’ve started doing an <a href="http://www.radioelectronicschool.net/">online course</a> to upgrade my radio license to the Advanced level.</li>
<li>Watched the <a href="http://www.redbullairrace.com/">Red Bull Air Race</a> yesterday afternoon.</li>
</ul>


<p>I think those are the events of importance that have occurred in the last month or two. Hopefully I will get back to more regular posting now that I have shifted the Gone to BM image from the top of the blog.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Gone to...]]></title>
    <link href="http://blog.zensunni.com/blog/2008/08/10/gone-to-dot-dot-dot/"/>
    <updated>2008-08-10T22:25:00+01:00</updated>
    <id>http://blog.zensunni.com/blog/2008/08/10/gone-to-dot-dot-dot</id>
    <content type="html"><![CDATA[<p><img src="http://www.zensunni.org/uploads/2008/08/burning_man_3.jpg" title="Gone to Burning Man - Used without permission, original source unknown" ></p>

<p>Don’t forget to check the <a href="http:/www.zensunni.org/burningman">Burning Man blog</a> :-D</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[T-28 days and counting]]></title>
    <link href="http://blog.zensunni.com/blog/2008/07/13/t-28-days-and-counting/"/>
    <updated>2008-07-13T22:30:00+01:00</updated>
    <id>http://blog.zensunni.com/blog/2008/07/13/t-28-days-and-counting</id>
    <content type="html"><![CDATA[<p>It is now just four short weeks until Rusty and I fly out to Dallas for Burning Man. I feel like there is lots of stuff that needs doing before we can go but I’m sure it’ll all get done in time.</p>

<p>If you are a regular visitor to this blog it is probably worth adding our Burning Man blog to your bookmarks and/or RSS reader. You can get to the Burning Man blog at <a href="http://www.zensunni.org/burningman">http://www.zensunni.org/burningman</a> or by clicking on the handy link on the right hand side of this page.</p>

<p>Hopefully, the Burning Man blog will start to get updated more regularly now that the trip approaches.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Roads? Where we're going we don't need roads!]]></title>
    <link href="http://blog.zensunni.com/blog/2008/06/16/roads-where-were-going-we-dont-need-roads/"/>
    <updated>2008-06-16T23:11:00+01:00</updated>
    <id>http://blog.zensunni.com/blog/2008/06/16/roads-where-were-going-we-dont-need-roads</id>
    <content type="html"><![CDATA[<p>Now that I have free time, I’ve spent the odd minute here and there building a masterpiece.</p>

<p><img src="http://blog.zensunni.com/images/delorean/delorean.jpg" title="DeLorean" ></p>

<p>Well perhaps not a masterpiece&#8230;</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[That's it, I'm done!]]></title>
    <link href="http://blog.zensunni.com/blog/2008/06/14/thats-it/"/>
    <updated>2008-06-14T23:15:00+01:00</updated>
    <id>http://blog.zensunni.com/blog/2008/06/14/thats-it</id>
    <content type="html"><![CDATA[<p>As of about 20 minutes ago I submitted the last two assignments for my Masters degree in Astronomy. Obviously I won’t officially know that I’ve passed these units for about 3 weeks but I am happy that I have done what is needed to pass and complete the degree.</p>

<p>I’m glad to be finished but a little bit sad that I won’t be doing more next semester.</p>

<p>Yay! All done!</p>

<p>I’m going off for a sleep now.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Is there a doctor in the house?]]></title>
    <link href="http://blog.zensunni.com/blog/2008/06/01/is-there-a-doctor-in-the-house/"/>
    <updated>2008-06-01T23:18:00+01:00</updated>
    <id>http://blog.zensunni.com/blog/2008/06/01/is-there-a-doctor-in-the-house</id>
    <content type="html"><![CDATA[<p>Back in March I mentioned that I had entered a <a href="http://www.zensunni.org/?p=24">Microsoft scripting competition</a> and that I’d <a href="http://www.zensunni.org/?p=39">won a prize</a>. Well the Dr Scripto bobble head finally arrived last week :-D. Here he is sitting on my bookshelf.</p>

<p><img src="http://blog.zensunni.com/images/drscripto/drscripto.jpg" title="Dr Scripto" ></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Something I didn't expect to see at Hyde Park]]></title>
    <link href="http://blog.zensunni.com/blog/2008/05/28/something-i-didnt-expect-to-see-at-hyde-park/"/>
    <updated>2008-05-28T23:21:00+01:00</updated>
    <id>http://blog.zensunni.com/blog/2008/05/28/something-i-didnt-expect-to-see-at-hyde-park</id>
    <content type="html"><![CDATA[<p>A certain American exchange student (who shall remain nameless for fear of Google) kneeling on the grass in front of a random guy pulling his skirt down :-/</p>

<!-- more -->


<p>The skirt in question was a skirt that W wanted to show to Gnor in order to find out how she would go about turning it into flag poi. Random guy wanted to try it on. Once he was wearing the skirt he entertained us with his poi and hip wiggle.</p>

<p>He wandered off to talk to some other people. Next thing I see him taking a lit fire staff off someone else. I shout ‘No’, Gnor shouted ‘Stop’. W turned round and shouted ‘No, not in that skirt’. I remember that last one in slow motion, ‘NNNOOOOOOOOOO…’</p>

<p>Random guy handed the staff back and walked over to us. I suggested that W get her skirt back, next thing I see a certain American exchange student kneeling on the grass in front of a random guy pulling his skirt down</p>
]]></content>
  </entry>
  
</feed>
