satnogs-rotator-firmware/doxygen_files/html/README_8md_source.html

77 lines
29 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>satnogs-rotator-firmware: README.md Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">satnogs-rotator-firmware
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">README.md</div> </div>
</div><!--header-->
<div class="contents">
<a href="README_8md.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;# SatNOGS Rotator Firmware</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;Firmware [SatNOGS Rotator Controller](https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator-firmware).</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;Repository includes all source files for the SatNOGS rotator controller Firmware.</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;Electronics can be found on [satnogs-rotator-controller](https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator-controller)</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;## Instructions</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;In order to use this code, you need to install</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; * [AccelStepper library](http://www.airspayce.com/mikem/arduino/AccelStepper/index.html)</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; * [PID_v1 library](https://github.com/br3ttb/Arduino-PID-Library)</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; * Wire library</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;You need to choose the version of the Firmware you will be utilizing based on your controller and rotator setup. Namely we have two different versions (one for DC motors and one for Stepper motors).</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;##### Steps</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;* Download arduino IDE (tested with 1.8.5)</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;* Add these lines in /arduino-1.8.5/hardware/arduino/avr/boards.txt</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;```</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;##############################################################</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;satnogs.name=SatNOGS</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;satnogs.upload.tool=avrdude</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;satnogs.upload.protocol=buspirate</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;satnogs.upload.maximum_size=32256</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;satnogs.upload.maximum_data_size=2048</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;satnogs.upload.speed=115200</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;satnogs.bootloader.tool=avrdude</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;satnogs.bootloader.low_fuses=0xFF</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;satnogs.bootloader.high_fuses=0xDE</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;satnogs.bootloader.extended_fuses=0xFD</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;satnogs.bootloader.unlock_bits=0x3F</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;satnogs.bootloader.lock_bits=0x0F</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;satnogs.bootloader.file=optiboot/optiboot_atmega328.hex</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;satnogs.build.mcu=atmega328p</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;satnogs.build.f_cpu=16000000L</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;satnogs.build.board=AVR_SATNOGS</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;satnogs.build.core=arduino</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;satnogs.build.variant=eightanaloginputs</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;##############################################################</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;```</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;* Install [Arduino-Makefile](https://github.com/sudar/Arduino-Makefile)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;```</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;ARDUINO_DIR – Directory where Arduino is installed</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;ARDMK_DIR – Directory where you have copied the makefile</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;AVR_TOOLS_DIR – Directory where avr tools are installed</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;USER_LIB_PATH – Directory where arduino libraries are installed</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;AVRDUDE – Directory where avrdude are installed</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;AVRDUDE_ARD_BAUDRATE – Serial Baudrate (uncomment to use 57600 for FTDI)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;include – Directory where Arduino.mk are installed</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;```</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;* Build the code</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;```</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;make</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;```</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;* Upload using ISP</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; * Connect [arduino](https://www.arduino.cc/en/Tutorial/ArduinoISP) or buspirate for ISP programming</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; 1. Pin 13 (SCK) to Pin 13 of arduino pro mini, ISP connector</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; 2. Pin 12 (MISO) to Pin 12 of arduino pro mini, ISP connector</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; 3. Pin 11 (MOSI) to Pin 11 of arduino pro mini, ISP connector</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; 4. Pin 10 (RESET) to Pin RST of arduino pro mini, ISP connector</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; 5. 5+ (Vcc) to Pin VCC of arduino pro mini, ISP connector</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; 6. Gnd (Gnd) to Pin GND of arduino pro mini, ISP connector</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;* BusPirate</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;```</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;satnogs.upload.protocol=buspirate (in board.txt)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;ISP_PROG = buspirate (in Makefile)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;```</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;```</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;make ispload</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;```</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;* [Arduino](https://www.arduino.cc/en/Tutorial/ArduinoISP)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;```</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;satnogs.upload.protocol=arduino (in board.txt)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;ISP_PROG = arduino (in Makefile)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;```</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;```</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;make ispload</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;```</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;* Upload using FDTI, but is necessary to uninstall arduino pro-mini from board</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;Connect [FTDI](https://learn.sparkfun.com/tutorials/using-the-arduino-pro-mini-33v)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;```</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;satnogs.upload.protocol=arduino (in board.txt)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;```</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;```</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;make upload</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;```</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;* Burn optiboot</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;Only with ISP programming</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; * Arduino as ISP</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; * BusPirate as ISP</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;```</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;make burn_bootloader</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;```</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;## Easycomm implemantation</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;* AZ, Azimuth, number - 1 decimal place [deg]</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;* EL, Elevation, number - 1 decimal place [deg]</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;* SA, Stop azimuth moving</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;* SE, Stop elevation moving</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;* RESET, Move to home position</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;* PARK, Move to park position</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;* IP, Read an input, number</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; * Temperature = 0</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; * SW1 = 1</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; * SW2 = 2</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; * Encoder1 = 3</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; * Encoder2 = 4</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; * Load of M1/AZ = 5</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; * Load of M2/EL = 6</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; * Speed of M1/AZ (DPS) = 7</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; * Speed of M2/EL (DPS) = 8</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;* VE, Request Version</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;* GS, Get status register, number</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; * idle = 1</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; * moving = 2</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; * pointing = 4</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; * error = 8</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;* GE, Get error register, number</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; * no_error = 1</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; * sensor_error = 2</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; * homing_error = 4</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; * motor_error = 8</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; * over_temperature = 12</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; * wdt_error = 16</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;* VL, Velocity Left ,number [mdeg/s]</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;* VR, Velocity Right, number [mdeg/s]</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;* VU, Velocity Up, number [mdeg/s]</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;* VD, Velocity Down, number [mdeg/s]</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;* CR, Read config, register [0-x]</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; * Gain P for M1/AZ = 1</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; * Gain I for M1/AZ = 2</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; * Gain D for M1/AZ = 3</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; * Gain P for M2/EL = 4</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; * Gain I for M2/EL = 5</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; * Gain D for M2/EL = 6</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; * Azimuth park position = 7</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; * Elevation park position = 8</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; * Control mode (position = 0, speed = 1) = 9</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;* CW, Write config, register [0-x]</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; * Gain P for M1/AZ = 1</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; * Gain I for M1/AZ = 2</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; * Gain D for M1/AZ = 3</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; * Gain P for M2/EL = 4</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; * Gain I for M2/EL = 5</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; * Gain D for M2/EL = 6</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; * Azimuth park position = 7</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; * Elevation park position = 8</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; * This reg is set from Vx commands control mode (position = 0, speed = 1) = 9</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;* RB, custom command to reboot controller</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;## Controller Configurations</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;* Stepper Motor</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; * Endstops</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; * Encoders, optional</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; * UART or R485 (For both options the firmware is the same)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;* DC Motor</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; * Endstops</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; * Encoders</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; * UART or RS485 (For both options the firmware is the same)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;## Pins Configuration</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;```</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;M1IN1 10, Step or PWM1</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;M1IN2 9, Direction or PWM2</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;M1SF 7, Status flag</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;M1FB A1, Load measurment</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;M2IN1 11, Step or PWM1</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;M2IN2 3, Direction or PWM2</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;M2SF 6, Status flag</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;M2FB A0, Load measurment</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;MOTOR_EN 8, Enable/Disable motors</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;SW1 5, Endstop for axis 1</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;SW2 4, Endstop for axis 2</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;RS485_DIR 2, RS485 Half Duplex direction pin</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;SDA_PIN 3, Data I2C pin</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;SCL_PIN 4, Clock I2C pin</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;PIN12 12, Digital output pin</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;PIN13 13, Digital output pin</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;A2 A2, Analog input pin</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;A3 A3, Analog input pin</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;```</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;## Testing with hamlib - rotctl or with Serial Monitor</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;Connect the PC with contreller via UART to USB or RS485 to USB by using the right converter (as described in [rotator controller BOM](https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator-controller/blob/master/satnogs-rotator-controller-bom.ods)).</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;For both options must be soldered the suitable components as descrided in [rotator controller wiki page](https://wiki.satnogs.org/SatNOGS_Rotator_Controller).</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;Use commands of rotctl:</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;```</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;rotctl -m 204 -s 19200 -r /dev/ttyUSB1 -vvvvv</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;```</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;Replace the /dev/ttyUSB1 with the device which is connected to PC.</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;Use commands of easycomm 3:</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;Send directly commands of easycomm 3 as described in Easycomm implemantation section.</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;## Contribute</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;The main repository lives on [Gitlab](https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator-firmware) and all Merge Request should happen there.</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;## License</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;[![Libre Space Foundation](https://img.shields.io/badge/%C2%A9%202014--2018-Libre%20Space%20Foundation-6672D8.svg)](https://librespacefoundation.org/)</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;Licensed under the [GPLv3](LICENSE)</div></div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.14
</small></address>
</body>
</html>