aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Odersky <jodersky@gmail.com>2015-02-28 21:08:13 +0100
committerJakob Odersky <jodersky@gmail.com>2015-02-28 21:32:39 +0100
commita7b93aad52f85b472c91d623c233b342a2e0cfb0 (patch)
treed1984aa09a8cec400903efdb9e093fcf52a2beab
downloadcondor-1-a7b93aad52f85b472c91d623c233b342a2e0cfb0.tar.gz
condor-1-a7b93aad52f85b472c91d623c233b342a2e0cfb0.tar.bz2
condor-1-a7b93aad52f85b472c91d623c233b342a2e0cfb0.zip
initial commit
-rw-r--r--README.md14
-rw-r--r--artwork/logo.svg62
-rw-r--r--calibration/motors/efficiency.odsbin0 -> 48019 bytes
-rw-r--r--calibration/power/data.dat27
-rwxr-xr-xcalibration/power/plot14
-rw-r--r--calibration/power/voltage.pdfbin0 -> 11241 bytes
-rw-r--r--datasheets/telemetry/radio.txt722
-rw-r--r--datasheets/trifle/trifle-board.pdfbin0 -> 28794 bytes
-rw-r--r--datasheets/trifle/trifle-schematic.pdfbin0 -> 33884 bytes
9 files changed, 839 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..4dac579
--- /dev/null
+++ b/README.md
@@ -0,0 +1,14 @@
+# Project Condor
+
+DIY Quadcopter - work in progress.
+
+## Projects created/ported for Condor
+ - Controller board [trifle](https://github.com/jodersky/trifle)
+ - Pilot firmware [PX4](https://github.com/jodersky/px4-firmware) (porting fork)
+ - Real-time OS [NuttX](https://github.com/jodersky/nuttx) (porting fork)
+ - Virtual cockpit [VFD](https://github.com/jodersky/vfd)
+ - Joystick remote control substitute [maverick](https://github.com/jodersky/maverick)
+
+## Related projects
+ - Communication protocol [MAVLink](https://github.com/mavlink/mavlink)
+ - Telemetry firmware [SiK](https://github.com/tridge/SiK) \ No newline at end of file
diff --git a/artwork/logo.svg b/artwork/logo.svg
new file mode 100644
index 0000000..5c94986
--- /dev/null
+++ b/artwork/logo.svg
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="420"
+ height="126"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.5 r10040"
+ sodipodi:docname="logo.svg">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.979899"
+ inkscape:cx="295.83438"
+ inkscape:cy="193.46654"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1920"
+ inkscape:window-height="1029"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-926.36218)">
+ <path
+ style="fill:#000000"
+ d="m 204.63001,1041.4769 c -4.306,-0.493 -12.163,-0.7723 -17.459,-0.6206 -5.297,0.1517 -9.638,-0.1295 -9.647,-0.6249 0,-0.4953 -0.301,-1.5983 -0.647,-2.451 -0.395,-0.974 1.903,-4.5694 6.182,-9.6695 3.746,-4.4654 6.4,-8.4749 5.897,-8.91 -1.524,-1.3192 -7.903,-3.0387 -8.897,-2.398 -0.512,0.3301 -2.69,0.041 -4.84,-0.6441 -2.151,-0.6843 -4.538,-1.3393 -5.305,-1.4555 -0.767,-0.1162 -4.76299,-0.7071 -8.87899,-1.313 -4.116,-0.6059 -8.778,-1.7323 -10.36,-2.5029 -1.581,-0.7707 -4.174,-1.5283 -5.761,-1.6836 -1.587,-0.1554 -4.443,-1.0518 -6.347,-1.9921 -4.746,-2.3442 -23.672,-6.6426 -30.035,-6.8216 -2.866,-0.08 -7.337,-1.05146 -9.937001,-2.15736 -6.923999,-2.9461 -10.453999,-3.9833 -15.712999,-4.6167 -2.584,-0.3112 -6.820999,-1.2686 -9.414999,-2.1273 -2.595,-0.8588 -7.738,-1.79193 -11.429999,-2.07364 -6.397,-0.48802 -6.629,-0.59977 -4.919,-2.36943 2.173,-2.25039 2.178,-2.25025 -5.261,-0.15945 -3.282,0.92232 -6.643999,1.68989 -7.470999,1.70583 -2.517,0.0479 1.197,-3.47788 6.756999,-6.41632 7.118,-3.76144 3.41,-3.86223 -10.711999,-0.29124 -15.365999,3.88547 -19.107999,3.49148 -9.875,-1.03978 3.689,-1.81061 9.879,-4.40197 13.757,-5.7586 3.877999,-1.35662 6.811999,-2.69621 6.519999,-2.97687 -0.291,-0.28065 -4.416,0.0589 -9.165999,0.75457 -13.424999,1.96622 -30.733998,3.1044 -28.935998,1.90269 2.514999,-1.68056 13.162999,-4.31053 25.917998,-6.40162 6.568,-1.0767 12.100999,-2.11933 12.295999,-2.31694 0.195,-0.19763 -5.664999,-0.21432 -13.020999,-0.0371 -7.357,0.17722 -15.491999,-0.005 -18.076999,-0.40648 -4.504,-0.69808 -4.578,-0.76524 -1.767,-1.59965 1.613,-0.47903 7.695,-1.07995 13.514999,-1.33535 14.985999,-0.65768 17.719999,-1.64739 7.931,-2.87063 -11.312999,-1.41367 -25.979998,-3.95157 -28.589998,-4.9471 -6.8617999,-2.61709 25.708998,-0.10248 42.091997,3.24975 7.987,1.63422 5.856,0.2651 -3.839,-2.46697 -5.099999,-1.43698 -12.104999,-3.69158 -15.567999,-5.01024 -7.394999,-2.81613 -21.608998,-9.60112 -21.138998,-10.09011 0.179,-0.18635 6.411999,1.84923 13.850999,4.52353 17.870999,6.42499 33.075998,11.14234 33.727998,10.46438 0.289,-0.30036 -2.246,-1.70867 -5.633,-3.12958 -8.211,-3.4446 -19.068999,-9.6802 -23.636999,-13.57453 -3.952999,-3.36991 -2.609999,-3.14022 2.612,0.4466 8.737,6.00149 24.270999,13.52213 28.979998,14.03107 1.399,0.1512 5.616,1.60077 9.371,3.22127 6.113,2.63824 20.245999,7.22677 39.829999,12.93204 10.65,3.10255 22.963,5.69471 29.807,6.27509 10.557,0.89528 14.121,1.51087 13.623,2.35311 -0.263,0.44405 0.796,0.79035 2.354,0.76953 1.557,-0.0206 5.658,0.69592 9.113,1.59274 3.45399,0.89681 10.20299,2.36613 14.99699,3.26516 8.7,1.63136 11.674,3.54426 10.102,6.49787 -0.382,0.7189 0.403,0.2159 1.745,-1.11771 2.046,-2.03259 2.19,-2.57375 0.891,-3.34574 -2.323,-1.38047 -1.166,-1.93623 6.665,-3.19885 5.411,-0.8725 9.037,-0.82233 15.044,0.2082 10.822,1.8563 21.213,1.48676 31.483,-1.11968 4.749,-1.20514 12.377,-2.54075 16.952,-2.96801 10.252,-0.95747 24.853,-3.42619 42.569,-7.19771 12.729,-2.70993 16.216,-3.71596 32.63099,-9.41368 3.699,-1.28409 9.521,-3.21273 12.938,-4.28588 9.777,-3.07091 21.313,-8.73445 35.938,-17.64454 3.867,-2.35532 7.241,-4.07881 7.5,-3.82999 1.238,1.19099 -22.707,15.14078 -32.807,19.1128 -3.269,1.28581 -5.935,2.82288 -5.924,3.41569 0.01,0.59887 0.825,0.75139 1.83,0.34322 4.32,-1.75458 43.431,-11.80671 45.826,-11.7782 1.455,0.0173 2.179,0.19712 1.61,0.39956 -9.147,3.25452 -28.62,8.91643 -36.334,10.56455 -5.464,1.16743 -10.244,2.4608 -10.622,2.87414 -0.643,0.70391 13.72,-0.17668 28.892,-1.77112 3.683,-0.38714 9.776,-0.40194 13.54,-0.0329 l 6.843,0.67098 -11.428,1.53174 c -6.286,0.84245 -14.942,1.6629 -19.235,1.8232 -14.61,0.54541 -11.85,1.8857 5.92,2.87578 9.675,0.53901 19.472,1.32603 21.772,1.74897 l 4.181,0.76896 -5.723,0.29231 c -10.588,0.54075 -27.553,0.52942 -32.709,-0.0219 -3.355,-0.35864 -4.883,-0.1867 -4.441,0.49957 0.371,0.57554 3.114,1.32251 6.095,1.6599 8.983,1.01666 32.679,7.22929 30.586,8.01902 -0.962,0.36265 -26.705,-2.80661 -38.311,-4.71636 -4.763,-0.78366 -2.244,1.31312 3.802,3.16569 6.604,2.02336 16.065,6.55749 19.699,9.4406 l 2.645,2.09754 -3.137,-0.63143 c -1.726,-0.34732 -3.847,-0.97252 -4.714,-1.38931 -2.829,-1.35953 -23.138,-6.0122 -23.699,-5.42933 -0.3,0.31212 1.036,1.33902 2.969,2.28199 3.941,1.92233 11.727,7.58133 11.194,8.13583 -0.191,0.1978 -4.044,-0.7367 -8.562,-2.0769 -4.519,-1.34003 -8.458,-2.18589 -8.753,-1.87949 -0.294,0.30628 0.366,1.51592 1.469,2.68809 l 2.004,2.1312 -12.372,-0.4401 c -6.805,-0.242 -12.649,-0.049 -12.986,0.4296 -1.147,1.627 -7.10399,4.64 -9.25499,4.6814 -1.179,0.023 -4.52,1.0308 -7.424,2.24036 -2.904,1.2096 -5.602,2.0101 -5.994,1.779 -2.591,-1.5257 -29.255,3.7851 -40.134,7.9937 -5.392,2.0858 -22.684,5.9752 -33.115,7.4486 -4.531,0.6397 -8.838,1.6817 -9.572,2.3153 -1.046,0.9022 0.621,3.1804 7.684,10.5022 l 9.019,9.3501 -3.9,0.5956 c -2.144,0.3276 -5.778,0.384 -8.074,0.1252 -2.297,-0.2586 -6.742,0.1708 -9.878,0.9545 -6.454,1.6131 -8.765,1.6597 -19.783,0.3982 z m 7.701,-9.681 c 1.868,-1.941 1.831,-2.7137 -0.126,-2.6761 -0.859,0.017 -1.558,0.226 -1.553,0.4654 0,0.2395 -0.262,1.1821 -0.592,2.0946 -0.748,2.0649 0.342,2.1205 2.271,0.1161 z m -7.914,-1.4236 c -0.01,-0.5388 -0.493,-1.2603 -1.072,-1.6033 -0.58,-0.3429 -1.04,0.107 -1.023,0.9998 0.02,0.8928 0.5,1.6143 1.073,1.6033 0.572,-0.01 1.032,-0.4608 1.022,-0.9998 z m 28.501,-24.1962 c 2.133,-1.8374 3.259,-3.7619 3.235,-5.5307 -0.02,-1.49186 0.44,-3.42496 1.021,-4.29536 0.789,-1.1824 0.99,-0.4619 0.792,2.8493 -0.299,5.00916 -0.298,5.00946 3.915,2.20386 1.697,-1.1302 3.782,-2.37656 4.634,-2.76956 0.852,-0.3931 2.7,-1.8006 4.106,-3.1278 2.451,-2.3122 12.971,-6.66926 14.835,-6.14458 0.493,0.13872 1.614,-0.36399 2.492,-1.11705 1.267,-1.08687 1.691,-1.10254 2.059,-0.076 0.696,1.94323 2.081,1.56612 6.879,-1.87231 3.924,-2.81227 5.503,-3.22234 15.734,-4.0855 9.133,-0.77059 12.188,-1.45347 15.52,-3.46911 2.301,-1.39231 6.91,-2.88265 10.352,-3.34744 5.276,-0.71245 19.85599,-6.63068 18.81099,-7.63585 -0.19,-0.18299 -3.112,0.84615 -6.494,2.28698 -3.38199,1.44083 -9.48999,3.38253 -13.57399,4.3149 -4.083,0.93236 -8.75,2.41324 -10.37,3.2908 -1.62,0.87761 -7.294,1.98017 -12.608,2.45016 -5.315,0.47 -10.829,1.32358 -12.254,1.89683 -1.425,0.57325 -4.786,1.10498 -7.468,1.1816 -2.683,0.0765 -6.738,0.86296 -9.013,1.74742 -2.275,0.88446 -7.879,1.93597 -12.455,2.3367 -13.846,1.21267 -25.305,5.27855 -25.451,9.03085 -0.293,7.49616 0.197,12.73496 1.189,12.71606 0.463,-0.01 2.313,-1.2843 4.113,-2.8342 z m -44.201,0.2182 c 0.751,-3.0325 0.669,-8.03436 -0.195,-11.96266 -0.64,-2.9061 -1.28,-3.2558 -10.264,-5.60391 -5.269,-1.37745 -11.75699,-2.70687 -14.41699,-2.95428 -2.659,-0.2474 -6.896,-1.16189 -9.413,-2.03218 -7.609,-2.63 -17.375,-4.45011 -34.632,-6.45442 -2.16,-0.25092 -7.58,-1.7601 -12.043,-3.35373 -4.463,-1.59364 -10.469001,-3.39973 -13.345,-4.01354 -2.876,-0.61379 -7.513,-2.4605 -10.304,-4.10379 -2.791,-1.64329 -5.512,-2.9794 -6.045999,-2.96914 -1.541,0.0296 -1.103,1.63802 0.914999,3.3584 2.097,1.78832 20.046999,7.50285 25.042,7.97258 1.804,0.16969 4.655,1.24814 6.335,2.39654 1.88,1.2846 6.131,2.4558 11.049,3.04385 8.772,1.04893 18.67,3.95689 25.838,7.59054 2.545,1.29015 6.14,2.3166 7.989,2.28108 1.849,-0.0354 3.959,0.6272 4.688,1.4725 0.729,0.8453 2.18,1.5206 3.224,1.5006 1.048,-0.02 2.532,1.2355 3.312,2.801 0.864,1.7355 3.49499,3.8085 6.77499,5.33846 2.95,1.3756 6.979,3.7371 8.955,5.2478 4.424,3.3822 5.787,3.4749 6.537,0.4443 z m 19.304,-5.3183 c -0.01,-0.5727 0.468,-1.0506 1.065,-1.0621 3.467,-0.067 7.323,-9.20236 5.185,-12.28256 -1.028,-1.48002 -7.105,-2.55981 -9.618,-1.70887 -1.981,0.67117 -4.12,4.81637 -4.061,7.87387 0.02,1.0744 1.278,3.3719 2.795,5.1054 2.767,3.16376 4.672,4.01606 4.634,2.07426 z m 2.004,-4.12616 c 0,-0.4935 0.681,-1.1804 1.534,-1.5266 0.852,-0.346 1.558,-0.2255 1.567,0.2679 0,0.4934 -0.68,1.1804 -1.533,1.5265 -0.853,0.3461 -1.558,0.2256 -1.568,-0.2678 z"
+ id="path3108"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="csccccccsscccccsccccccscscscccsccsscscccccsccscssccccccccccsscccccccccsccsccssccsccscccccccccccccccccccccccccccccscccsscccscccccccccccscscscccscsccccccccccsssscccsscscccscccccccccccsc" />
+ </g>
+</svg>
diff --git a/calibration/motors/efficiency.ods b/calibration/motors/efficiency.ods
new file mode 100644
index 0000000..a699731
--- /dev/null
+++ b/calibration/motors/efficiency.ods
Binary files differ
diff --git a/calibration/power/data.dat b/calibration/power/data.dat
new file mode 100644
index 0000000..e880486
--- /dev/null
+++ b/calibration/power/data.dat
@@ -0,0 +1,27 @@
+#Vin [mV] ADC Value
+0 10
+1000 81
+2000 149
+3000 219
+4000 290
+5000 362
+6000 435
+7000 499
+8000 557
+8500 609
+9000 643
+9500 678
+10000 712
+10500 747
+11000 784
+11500 820
+12000 853
+12500 889
+13000 923
+10500 746
+10800 768
+11100 790
+11400 810
+11700 832
+12300 872
+12600 893
diff --git a/calibration/power/plot b/calibration/power/plot
new file mode 100755
index 0000000..c4703d0
--- /dev/null
+++ b/calibration/power/plot
@@ -0,0 +1,14 @@
+#!/usr/bin/env gnuplot
+
+set terminal pdf enhanced font 'Helvetica,14' size 16cm,12cm
+
+f(x) = a*x+b;
+fit f(x) "data.dat" using 2:1 via a,b
+
+set grid
+set title "Voltage to measured ADC"
+set xlabel "ADC value"
+set ylabel "Voltage [mV]"
+
+plot "data.dat" using 2:1 with points title "data points", \
+ f(x) with lines title sprintf('linear fit curve mV(x) = %.5f·x%+.5f', a, b)
diff --git a/calibration/power/voltage.pdf b/calibration/power/voltage.pdf
new file mode 100644
index 0000000..cfec5ec
--- /dev/null
+++ b/calibration/power/voltage.pdf
Binary files differ
diff --git a/datasheets/telemetry/radio.txt b/datasheets/telemetry/radio.txt
new file mode 100644
index 0000000..841029e
--- /dev/null
+++ b/datasheets/telemetry/radio.txt
@@ -0,0 +1,722 @@
+== Using the 3DR Radio for telemetry with APM 2 ==
+
+http://wiki.ardupilot-mega.googlecode.com/git/images/3DRadio/3DR-radio-kit-dip-small.jpg
+
+The 3DRobotics [https://store.diydrones.com/3DR_RadioTelemetry_Kit_915_Mhz_p/kt-telemetry-3dr915.htm 3DR Radio] is the ideal way to setup a telemetry
+connection between your APM and a ground station. Small, inexpensive
+and with great range, the 3DR radio uses an open source firmware which
+allows us to do things that cannot be done with other radios.
+
+=== Radio Features ===
+
+ * supports point-to-point half duplex communication
+ * very small size
+ * light weight (under 4 grams without antenna)
+ * available in 900MHz or 433MHz variants
+ * receiver sensitivity to -121 dBm
+ * transmit power up to 20dBm (100mW)
+ * transparent serial link
+ * air data rates up to 250kbps
+ * MAVLink protocol framing and status reporting
+ * frequency hopping spread spectrum (FHSS)
+ * adaptive time division multiplexing (TDM)
+ * support for LBT and AFA
+ * configurable duty cycle
+ * builtin error correcting code (can correct up to 25% data bit errors)
+ * demonstrated range of several kilometres with a small omni antenna
+ * can be used with a bi-directional amplifier for even more range
+ * open source firmware
+ * AT commands for radio configuration
+ * RT commands for remote radio configuration
+ * adaptive flow control when used with APM
+ * based on HM-TRP radio modules, with Si1000 8051 micro-controller and Si4432 radio module
+
+
+=== Connecting your 3DR Radios ===
+
+Important note: *You cannot connect via the radios when your APM 2 is also connected via USB (they share the same port).* Make sure you disconnect your USB cable from the APM 2 board before attempting a wireless connection.
+
+You will need two 3DR radios, one for your aircraft, and the other for
+your ground station.
+
+Looking at the above picture you will see that typically the "ground" radio module has a USB connector, making it easy to connect them to your ground station. It uses a D2XX FTDI driver that you can get [http://www.ftdichip.com/Drivers/D2XX.htm here]. This driver is built into Windows 7 and above, so it is only necessary if you are using Windows XP or below.
+
+The 'aircraft' model has a FTDI six pin header, allowing it to be directly connected to your APM telemetry port.
+
+== For APM 2.5 ==
+
+Use the included cable:
+
+http://wiki.ardupilot-mega.googlecode.com/git/images/telemcable.jpg
+
+Plug it into the telemetry port on APM 2.5 and on the 3DR radio side, plug the connector with the red cable on the +5v pin and the black cable on the end on GND as shown:
+
+http://wiki.ardupilot-mega.googlecode.com/git/images/IMG_5408.JPG
+
+
+== For APM 2.0 ==
+
+http://wiki.ardupilot-mega.googlecode.com/git/images/APM2/telemtry.jpg
+
+http://wiki.ardupilot-mega.googlecode.com/git/images/3drradio.jpg
+
+
+The radios come pre-configured for a serial rate of 57600, which is
+the default rate that APM uses for telemetry, but you can change this
+to any rate you like, either using the AT command set, the
+APM Mission Planner radio setup interface, or the [http://vps.oborne.me/3drradioconfig.zip 3DR Radio Configuration Utility].
+
+=== Status LEDs ===
+
+The 3DR Radios have 2 status LEDs, one red and one green. The meaning
+of the different LED states is as follows:
+
+ * green LED blinking - searching for another radio
+ * green LED solid - link is established with another radio
+ * red LED flashing - transmitting data
+ * red LED solid - in firmware update mode
+
+=== Configuring using the Mission Planner ===
+
+The latest versions of the APM Mission Planner support configuring
+your 3DR radios using a simple GUI interface. In the Mission Planner (top right) select the Com port that your "ground" 3DR radio is connected to and 57k as the baud rate.
+
+Then switch to the Configuration screen. Choose the 3DR radio tab in the list at left, and click on "Load Settings" and it will populate it with data similar to that shown (the remote radio's settings will only show if it is also powered on and connected to APM running current !ArduPlane or !ArduCopter code).
+
+http://wiki.ardupilot-mega.googlecode.com/git/images/3DRradio.PNG
+
+This is the recommended configuration method for most users.
+
+----
+==Using a FTDI-to-USB cable to configure 3DR radios==
+ If the previous paragraphs don't work try the following…
+
+ ==Connect everything, Configure 3DR ground radio==
+ * Connect your 3DR air radio with FTDI-to-USB cable to your computer USB port & note Com port #
+ * Use Windows > Device Manager > Ports to identify com port #
+ * You'll know the FTDI cable is correctly oriented on the air radio when a green LED blinks.
+
+ * Connect the 3DR ground radio to a USB port on your PC & note Com port #
+ * In MP Flight Data tab, at top right, set baud to 57600 & select ground radio com port #
+
+ * In MP Flight, press Ctrl + A to open the radio configuration window
+
+ * Click on Load Settings (from the *ground* radio)
+
+ * In Mission Planner radio configuration window, (MP) check the Advanced Options box
+
+ * If loaded values aren't the same as above recommended settings, make it so, then click on Save
+
+ ==Configure 3DR air radio==
+ * In MP at top right, select the 3DR *air* radio's com port
+
+ * In MP radio configuration window, click on Load Settings (from *air* radio)
+
+ * Edit the air radio's settings (including Advanced Options) so they are *exactly* the same as the ground radio's, then click on Save Settings (to air radio)
+
+ * You may not be able to add a value in the Format field, that's OK
+
+ * In Mp, press Configure > 3DR Radio > enter exact same settings including advanced > click Save Settings.
+
+ Wait for both radios to connect (solid green LED)
+
+ ==Update firmware if above doesn't work==
+ * Click on Update Firmware while connected to each radio in turn. Then repeat the above.
+
+ * Keep in mind that while to are physically connected to a radio via a specific Com port, you can't use the 'Copy Required items to Remote' button (there is no remote until you go wireless)
+
+ ==To verify wireless telemetry==
+ * Remove the FTDI to USB cable from APM
+
+ * Connect the air radio to APM & LIPO
+
+ * In MP > Flight Data tab > select the ground radio com port then click on Connect
+
+ This section of the 3DRadio wiki was contributed by the Documentation User Group (DUG)
+----
+
+
+==== Serial and air rates 'one byte form' ====
+
+The SERIAL_SPEED and AIR_SPEED parameters are in the same form that
+APM uses for the SERIAL3_SPEED EEPROM parameter. It is the rate in
+kbps, truncated to an integer. So '9' means 9600 baud, '38' means
+38400, '115' means 115200 etc.
+
+=== Choosing the air data rate ===
+
+The key parameter that controls the range of your radios is the
+AIR_SPEED. The default is 64 (which is 64kbps) will give you a range
+of over a kilometre with small omni antennas. The lower you set the
+AIR_SPEED the longer your range, although lowering the AIR_SPEED also
+lowers how much data you can send over the link.
+
+The radio firmware can only support 13 possible air date rates, which are 2, 4, 8, 16, 19, 24, 32, 48, 64, 96, 128, 192 and 250. If your application needs a different air rate for some reason then we can potentially add it to the register tables. If you choose an unsupported air rate then the next highest rate from the supported list will be chosen.
+
+What air data rate you choose will depend on the following factors
+
+ * what range you need
+ * what data rate you will be sending
+ * whether you primarily send in one direction, or both
+ * whether you have ECC enabled
+ * whether you have an APM firmware with adaptive flow control
+
+For most telemetry applications you will primarily be sending data mostly in
+one direction, from the aircraft to the ground station. For most
+people, the amount of data sent from the ground station to the
+aircraft is small, just an occasional control packet plus heartbeat
+packets.
+
+If you are using a joystick to control your aircraft then you will be
+sending a lot more data from the ground station to the aircraft, and
+in that case you may find a higher AIR_SPEED is needed, although your
+range will be reduced.
+
+The ECC parameter makes a big difference to the data rate you can
+support at a given AIR_SPEED. If you have ECC set to zero, then no
+error correcting information is sent, and the radio uses a simple 16
+bit CRC to detect transmission errors. In that case your radio will be
+able to support data transfers in one direction of around 90% of the
+AIR_SPEED.
+
+If you enable ECC (which is highly recommended), then the data rate
+you can support is halved. The ECC system doubles the size of the data
+sent by the radios. It is worth it however, as the bit error rate will
+drop dramatically, and you are likely to get a much more reliable link
+at longer ranges.
+
+If you have the latest APM firmware (!ArduPlane 2.33 or later, or
+!ArduCopter 2.54 or later) then the APM will automatically adapt its
+telemetry rates to what the radio can handle, by using MAVLink RADIO
+packets injected into the MAVLink streams by the radios firmware. That
+allows you to 'oversubscribe' your link, by setting up a SERIAL_SPEED
+larger than what the radios can actually handle.
+
+The other factor in choosing the air data rate is the TDM 'sync
+time'. The two radios need to work out each others frequency hopping
+pattern. They do this by slowly changing the receive channel while
+rapidly changing the transmit channel. This process of getting in sync
+with the other radio takes just a few seconds at high air data rates,
+but gets slower for low air data rates.
+
+For most amateur UAV applications the default AIR_SPEED of 64 with ECC
+enabled will be good.
+
+=== Error Correction ===
+
+As mentioned above, the radios support a 12/24 Golay error correcting
+code if you set the ECC parameter to 1. This means that for every 12
+bits of data the radio will send 24 bits, calculating the bits using
+Golay code lookup tables. The process is reversed on the receiving
+end, and allows the radio to correct bit errors of up to 3 bits in
+every 12 bits send (i.e. 25% bit error rate).
+
+The downside of the ECC option is that it halves your available data
+bandwidth, but in most cases this is worth it, as you are able to
+sustain a reliable link over longer ranges. You will also get a lot
+less 'noise' in the serial stream.
+
+=== MAVLink framing ===
+
+If you set the MAVLINK option to 1 then the radio will do 'MAVLink
+framing'. The MAVLink protocol is used by APM for transmitting
+telemetry date to a ground station. When MAVLink framing is used, the
+radio will try to align radio packets with MAVLink packet
+boundaries. This means that if a packet is lost you don't end up with
+half a MAVLink packet being seen by the receiver. That partial packet
+would appear as line noise on your ground stations console.
+
+The radio firmware will try to fit multiple MAVLink packets into one
+radio packet where possible for maximum efficiency. The highest radio
+packet size is 252 bytes.
+
+The radio firmware supports both the MAVLink 0.9 and the MAVLink 1.0
+transmission formats.
+
+=== MAVLink reporting ===
+
+If you have MAVLINK set to 1, then the radio firmware will also look
+for MAVLink HEARTBEAT messages coming from the serial connection. If
+it sees a HEARTBEAT message then it knows that the MAVLink protocol is
+in use, and it will start injecting MAVLink 'RADIO' status packets
+into the the serial stream.
+
+The RADIO packets contain information about the RSSI (Received Signal
+Strength Indicator) level at both ends of the link, allowing the
+ground station or aircraft to take action in case the link quality
+falls too low.
+
+The RADIO packets also contain information about error rates, and how
+full the serial transmit buffer is (as a percentage). The latest APM
+firmware can use this information to automatically adapt the telemetry
+stream rates to the data rate that the radios can sustain.
+
+=== Power levels ===
+
+You need to be very careful to configure your radios to stay within
+the legal power limits of the country you are operating in. The
+default power level of 20dBm is fine for the US and Australia, as up
+to 30dBm is allowed by the LIPD class licenses there in the 915-928MHz
+frequency band for a frequency hopping radio. So as long as your
+antennas have a gain of less than 10dBi you should be within the ISM
+rules.
+
+The radio cannot support arbitrary power levels. It can only support the power levels given in the following table
+
+|| *Power (dBm)* || *Power (milliWatts)* ||
+|| 1 || 1.3 ||
+|| 2 || 1.6 ||
+|| 5 || 3.2 ||
+|| 8 || 6.3 ||
+|| 11 || 12.5 ||
+|| 14 || 25 ||
+|| 17 || 50 ||
+|| 20 || 100 ||
+
+If you choose an unsupported power level the radio will choose the next highest power level from the above table.
+
+Please carefully check the EIRP (Equivalent isotropically radiated power) power limits for your country, making
+sure you take into account the antenna gain. The 3DR radio is a 'DIY'
+radio part and it is entirely your responsibility to ensure any use of
+it is compliant with local rules.
+
+For example, if your local rules allow for a maximum of 30dBm (1W) EIRP, then if you use a amplifier with a 12dB transmit gain, and an antenna with 3dBi gain, then you will need to set TXPOWER to at most 14.
+
+If you don't know how to calculate it, we've made a tutorial for you here: [http://code.google.com/p/ardupilot-mega/wiki/db_watt_dbm Understanding dB, Watts and dBm].
+
+----
+
+=== Using the AT command set ===
+
+The 3DR radios support a variant of the Hayes 'AT' modem command set
+for configuration.
+
+If you connect with a serial console to a 3DR radio at the current
+serial baud rate, you can tell the radio to enter AT command mode by
+entering the sequence '+++'. To prevent data being seen as the command
+sequence there is a guard time required, so make sure you type nothing
+on the serial link for 1 second before and after you enter the
+sequence.
+
+When you enter AT command mode you will receive a 'OK' prompt from the
+radio and it will stop displaying data sent from the other radio.
+
+Once in AT command mode, you can give the radio either 'AT' commands
+to control the local radio, or (if successfully connected) you can use
+'RT' commands to control the remote radio.
+
+The AT commands available are:
+
+ * ATI - show radio version
+ * ATI2 - show board type
+ * ATI3 - show board frequency
+ * ATI4 - show board version
+ * ATI5 - show all user settable EEPROM parameters
+ * ATI6 - display TDM timing report
+ * ATI7 - display RSSI signal report
+ * ATO - exit AT command mode
+ * ATSn? - display radio parameter number 'n'
+ * ATSn=X - set radio parameter number 'n' to 'X'
+ * ATZ - reboot the radio
+ * AT&W - write current parameters to EEPROM
+ * AT&F - reset all parameters to factory default
+ * AT&T=RSSI - enable RSSI debug reporting
+ * AT&T=TDM - enable TDM debug reporting
+ * AT&T - disable debug reporting
+
+all of these commands, except for ATO, may be used on a connected
+remote radio by replacing 'AT' with 'RT'.
+
+Perhaps the most useful command is 'ATI5' which displays all user
+settable EEPROM parameters. That will produce a report like this:
+
+{{{
+ S0: FORMAT=22
+ S1: SERIAL_SPEED=57
+ S2: AIR_SPEED=64
+ S3: NETID=25
+ S4: TXPOWER=20
+ S5: ECC=1
+ S6: MAVLINK=1
+ S7: OPPRESEND=1
+ S8: MIN_FREQ=915000
+ S9: MAX_FREQ=928000
+ S10: NUM_CHANNELS=50
+ S11: DUTY_CYCLE=100
+ S12: LBT_RSSI=0
+}}}
+
+The first column is the S register to set if you want to change that
+parameter. So for example, to set the transmit power to 10dBm, use
+'ATS4=10'.
+
+Most parameters only take effect on the next reboot. So the usual
+pattern is to set the parameters you want, then use 'AT&W' to write
+the parameters to EEPROM, then reboot using 'ATZ'. The exception is
+the transmit power, which changes immediately (although it will revert
+to the old setting on reboot unless you use AT&W).
+
+The meaning of the parameter is as follows:
+
+ * FORMAT - this is for EEPROM format version. Don't change it
+ * SERIAL_SPEED - this is the serial speed in 'one byte form' (see below)
+ * AIR_SPEED - this is the air data rate in 'one byte form'
+ * NETID - this is the network ID. It must be the same for both your radios
+ * TXPOWER - this is the transmit power in dBm. The maximum is 20dBm
+ * ECC - this enables/disables the golay error correcting code
+ * MAVLINK - this enables/disables MAVLink framing and reporting
+ * MIN_FREQ - minimum frequency in kHz
+ * MAX_FREQ - maximum frequency in kHz
+ * NUM_CHANNELS - number of frequency hopping channels
+ * DUTY_CYCLE - the percentage of time to allow transmit
+ * LBT_RSSI - Listen Before Talk threshold (see docs below)
+
+For two radios to communicate the following must be the same
+at both ends of the link:
+
+ * the radio firmware version
+ * the AIR_SPEED
+ * the MIN_FREQ
+ * the MAX_FREQ
+ * the NUM_CHANNELS
+ * the NETID
+ * the ECC setting
+ * the LBT_RSSI setting
+
+the other settings may be different at either end of the link,
+although you will usually set them up the same at both ends.
+
+
+
+=== Support for different countries/regions ===
+
+It is very important that you find out what the local country or region regulations are on frequency, hopping channels and power levels and configure your 3DR Radios correctly for your local rules.
+
+Here is some general information to help you get started.
+
+|| *Region* || *Radio Model* || *Settings* || *Standard* ||
+|| USA || 3DR 900 || MIN_FREQ=902000 MAX_FREQ=928000 NUM_CHANNELS=50 || FCC 15.247 ||
+|| Canada || 3DR 900 || MIN_FREQ=902000 MAX_FREQ=928000 NUM_CHANNELS=50 || RSS-210 Annex 8.1 ||
+|| Australia || 3DR 900 || MIN_FREQ=915000 MAX_FREQ=928000 NUM_CHANNELS>=20 || LIPD-2000 item 52 ||
+|| Australia || 3DR 433 || MIN_FREQ=433050 MAX_FREQ=434790 TXPOWER<=14 || LIPD-2000 item 17 ||
+|| Europe (most countries) || 3DR 433 || MIN_FREQ=434040 MAX_FREQ=434790 TXPOWER<=8 NUM_CHANNELS>=30 || ETSI EN300 220 7.2.3 ||
+|| Europe (most countries) || 3DR 433 || MIN_FREQ=433050 MAX_FREQ=434790 TXPOWER<=8 DUTY_CYCLE=10 || ETSI EN300 220 7.2.3 ||
+|| United Kingdom || 3DR 433 || MIN_FREQ=433050 MAX_FREQ=434790 TXPOWER<=8 DUTY_CYCLE=10 || [http://stakeholders.ofcom.org.uk/binaries/spectrum/spectrum-policy-area/spectrum-management/research-guidelines-tech-info/interface-requirements/IR_2030.pdf IR2030/1/10] ||
+|| New Zealand || 3DR 900 || MIN_FREQ=921000 MAX_FREQ=928000 || Notice 2007, Schedule 1 ||
+|| New Zealand || 3DR 433 || MIN_FREQ=433050 MAX_FREQ=434790 || Notice 2007, Schedule 1 ||
+|| Brazil || 3DR 433 || MIN_FREQ=433000 MAX_FREQ=435000 TXPOWER<=8 || [http://legislacao.anatel.gov.br/resolucoes/23-2008/104-resolucao-506 Resolução ANATEL nº506/2008] ||
+|| Brazil || 3DR 900 || MIN_FREQ=902000 MAX_FREQ=907500 NUM_CHANNELS>=11 || Resolução ANATEL nº506/2008 ||
+|| Brazil || 3DR 900 || MIN_FREQ=915000 MAX_FREQ=928000 NUM_CHANNELS>=26 || Resolução ANATEL nº506/2008 ||
+|| Argentina || 3DR 900 || MIN_FREQ=902000 MAX_FREQ=928000 || [http://www.cnc.gov.ar/infotecnica/espectro/uso/destacados01.asp Comisión Nacional de Comunicaciones] ||
+|| South Africa || 3DR 433 || MIN_FREQ=433050 MAX_FREQ=434790 TXPOWER<=10mW || 2008 RR 5.138, Government Gazette No 31127,<br> Notice No 713 of 2008 and Government Gazette No 31290,<br> Notice No 926 of 2008 refer ||
+
+We'd be delighted to add more countries to this table! Please post the information on the forums, giving links to the applicable regulations and information on what it all means. Also, please point out any inaccuracies in the existing table.
+
+Note that the above table is for most users without any special license. If you are have an application specific license or have a HAM license then you should know what rules are applicable to you.
+
+Finally, compliance is your responsibility. The 3DR radio is a 'DIY' radio part and you need to ensure what whatever you build meets local regulations. Please check your local rules carefully.
+
+=== Available Frequency Ranges ===
+
+The following table may be helpful matching your local radio regulations to the two radio models available
+
+|| *Radio* || *Minimum Frequency (MHz)* || *Maximum Frequency (MHz)* ||
+|| 3DR 433 || 414.0 || 454.0 ||
+|| 3DR 900 || 895.0 || 935.0 ||
+
+
+=== Duty Cycle setting ===
+
+Most users will want to set the DUTY_CYCLE to 100. The DUTY_CYCLE is the maximum percentage of time that the radio will transmit packets.
+
+The reason the duty cycle is included is that some regions of the world allow for higher transmit power or more frequencies if you have a duty cycle below a given threshold. So for example in Europe you can transmit on a wider range of frequencies in the 433 band if your duty cycle is below 10%.
+
+When you set a duty cycle below 100% then your available bandwidth will be reduced, so you will find it will only work well for telemetry at higher baud rates. It is still quite practical to get good telemetry from an APM with a 10% duty cycle, as telemetry traffic is quite 'bursty', so the average transmit time is not generally high anyway.
+
+For example, you can easily receive all telemetry streams at 2Hz with AIR_SPEED set to 128, ECC enabled and a DUTY_CYCLE set to 10.
+
+You can also set a radio to receive only by setting the DUTY_CYCLE to 0. That will work best if you set NUM_CHANNELS to a low number, as otherwise the clock synchronisation will be poor.
+
+=== Listen Before Talk (LBT) ===
+
+The 3DR Radio can implement 'listen before talk' (LBT) functionality to allow it to comply with a wider range of regional regulatory requirements. LBT is a system where the radio is required to listen for a period of time and see no signal from other radios before it is allowed to transmit. By using a non-zero LBT_RSSI value your radio will become more 'polite', by waiting until everyone else has stopped transmitting before starting to transmit itself.
+
+To enable LBT in your radio you need to set the LBT_RSSI threshold. This is the signal strength that the radio considers to be an indication that the channel is busy. If you set LBT_RSSI to zero then LBT is disabled.
+
+The minimum non-zero setting is 25 which is a few dB above the receive sensitivity of the radio (-121 dBm). To setup LBT_RSSI you need to know what signal level your local radio regulations require for LBT functionality. Each increment in LBT_RSSI above 25 is roughly equal to 0.5dB above the radios receive sensitivity. So if you set LBT_RSSI to 40 then the radio will consider the channel to be free if the signal strength is less than 7.5dB above the receiver sensitivity.
+
+Alternatively, you can use this formula to get the received signal strength in dBm:
+{{{
+ signal_dBm = (RSSI / 1.9) - 127
+}}}
+This formula is approximate, but quite close. See the Si1000 data sheet for a more precise graph.
+
+You will need to lookup your local regulatory requirements to see what LBT_RSSI setting you should use.
+
+The LBT implementation in the 3DR radio uses a minimum listen time of 5ms, plus randomised listen time as per the European 9.2.2.2 rules.
+
+Note that in many regions you need to implement LBT in conjunction with AFA (Adaptive Frequency Agility). The 3DR Radio implements AFA as long as you have NUM_CHANNELS set to more than 1.
+
+=== Technical Details ===
+
+When evaluating if this radio meets your local regulations it may be helpful to know what technology it uses.
+
+The firmware implements frequency hopping spread spectrum (FHSS) with synchronous adaptive time division multiplexing (TDM).
+
+Specifically, the radio divides up the frequency range between MIN_FREQ+delta and MAX_FREQ-delta into NUM_CHANNELS channels. The 'delta' value is a guard range to ensure that we stay well away from the edges of the allowed band. The guard range is set to half a channel width. The channel width is defined as:
+{{{
+ channel_width = (MAX_FREQ - MIN_FREQ) / (NUM_CHANNELS+2)
+}}}
+
+Additionally, the radio skews the base frequency by up to one channel using a random seed based on NETID. This means that two radios using different NETID numbers use slightly different frequencies.
+
+The radios use GFSK (Gaussian Frequency Shift Keying) for transmission on a particular frequency.
+
+The TDM works by dividing up time into slices, based on multiples of 16 microsecond ticks. The time slicing is designed to give a maximum dwell time on any frequency of 0.4s (this is to meet US regulations). The TDM algorithm then works as follows:
+
+ * the EEPROM parameters determine a set of TDM parameters, particularly the transmit window and silence period, both are in 16 microsecond units. You can view the results using ATI6.
+ * the transmit window is scaled to allow for 3 full sized packets to be transmitted
+ * the silence period is equal to twice the packet latency, for the given data rate
+ * The two radios synchronise their clocks automatically by adding 13 bits of timestamp information to all packets. The timestamp is in 16 microsecond units.
+ * Each radio only transmits when it is 'their turn'. So a radio gets one transmit window worth of time, then there is a silence period when neither radio transmits, then the other radio gets its turn. We never have the situation where both radios transmit at the same time
+ * the transmit channels are organised into a random sequence based on the NETID
+ * the frequency is changed to the next channel twice for each full TDM round, during the silence periods
+ * when not transmitting, data that comes in over the serial port is buffered in a 2048 byte buffer
+ * to prevent the buffer from getting too much data (which increases latency and risks overflow) the radios send information on how full the buffer is to the connected device. The APM code adapts its telemetry rates by small amounts to keep the amount of buffered data reasonable.
+ * The TDM algorithm is also adaptive, in the sense that when it is the turn of radio A to transmit, it can send a small token to radio B saying "I don't need to send anything right now, you can take the rest of my timeslice". That is how the link auto-balances for asymmetric loads
+ * during the initial search for another radio, and any time the link is lost, the radios go into a mode where they move the receiving frequency very slowly but move the transmit frequency at the normal rate. This allows the two radios to find each other for initial clock sync. How long this takes depends on the number of channels, the air data rate and the packet loss rate.
+
+
+In some regions you may need to know the distribution of radiated energy within each channel. That depends on a number of factors, but mostly the frequency deviation used for the GFSK modulation. The following formula will give you an estimate of the frequency deviation:
+{{{
+ frequency_deviation = air_data_rate * 1.2
+ min freq deviation = 40
+ max freq deviation = 159
+}}}
+where frequency_deviation is in kHz and the air_data_rate is in kilo bits per second.
+
+=== Using a bi-directional amplifier for very long range ===
+
+You can combined a 3DR Radio with a bi-directional amplifier in order
+to extend the range to very long distances.
+
+We have had a lot of success testing amplifiers made by
+[https://www.shireeninc.com/ Shireen]. In particular, Shireen were
+kind enough to donate a 900MHz amplifier which we tested with a pair
+of 900MHz 3DR radios.
+
+http://wiki.ardupilot-mega.googlecode.com/git/images/3DRadio/Shireen_amplifier.jpg
+
+This amplifier gives 12dB transmit gain, and 18dB receive gain,
+automatically switching between transmit and receive modes when the
+radio starts and stops transmitting. It can either run on 5V from a
+UBEC, or can use a builtin switching regulator with a 2S or 3S !LiPo.
+
+We tested this amplifier at one end of a 7.6km link between two hills
+in Canberra, Australia. At one end we had a simple wire antenna, and
+at the other end we had a cheap eBay 3.5dBi omni antenna, plus the
+Shireen amplifier.
+
+This was the test rig at the end without the amplifier
+
+http://wiki.ardupilot-mega.googlecode.com/git/images/3DRadio/TestRig.jpg
+
+With the following setting:
+
+{{{
+ S0: FORMAT=22
+ S1: SERIAL_SPEED=9
+ S2: AIR_SPEED=24
+ S3: NETID=25
+ S4: TXPOWER=14
+ S5: ECC=1
+ S6: MAVLINK=1
+ S7: OPPRESEND=1
+ S8: MIN_FREQ=915000
+ S9: MAX_FREQ=928000
+ S10: NUM_CHANNELS=50
+}}}
+
+we found that we got a great link at 7.6 km range. We then
+progressively lowered the transmit power at each end of the link in
+order to measure the 'fade margin', which allows us to estimate how
+far the radios could transmit at full power. We found that the fade
+margin was about 12dB at both ends, which implies that the radios
+should have been able to sustain a link at approximately 4x the range
+we tested over.
+
+Note that if you use an amplifier (or high gain antenna) you need to be very careful not to exceed the EIRP level that your local rules allow.
+
+=== Monitoring the link quality ===
+
+You can use the MAVLink support in the 3DR Radios to monitor the link
+quality while flying, if your ground station supports it.
+
+The two key message parameters are RADIO.rssi and RADIO.remrssi. The
+first is the RSSI (signal strength) level that the local radio is
+receiving at. The remrssi parameter is the RSSI that the remote radio
+is receiving at.
+
+Here is a typical graph of the RSSI levels for a flight at my local
+flying field.
+
+http://wiki.ardupilot-mega.googlecode.com/git/images/3DRadio/rssi-distance.png
+
+The RSSI value scales approximately as 1.9x the dBm signal strength,
+plus an offset. See the Si1000 data sheet for the exact mapping
+between RSSI and dBm received signal strength, or use this approximate formula
+{{{
+ signal_dBm = (RSSI / 1.9) - 127
+}}}
+
+The reason the RSSI varies so much during this flight is that the
+signal is attenuated when the plane is rolled over in a turn as I was
+using a simple wire antenna in the plane. The RSSI values for this
+flight were plenty high enough for the link quality to be excellent
+throughout the flight using the default radio parameters.
+
+=== What range can I expect? ===
+
+The most common question about a telemetry radio is what range you can
+get with it. It is also a difficult question to answer, as it depends
+on so many factors.
+
+We have done a lot of test flights to try to gauge what the practical
+range of these radios is with small omnidirectional antennas and no
+amplifiers. Here is a typical result:
+
+http://wiki.ardupilot-mega.googlecode.com/git/images/3DRadio/3DR-915-txpower2-64kbps-ECC.png
+
+In this case the 3DR 900 radios were setup with default parameters,
+except that the TXPOWER had been set to 2 dBm, which means they were
+transmitting with just 1.6% of their maximum power. Theoretically, a
+radios range doubles with each additional 6 dB of transmit power, so
+the range achieved with this test should be about 1/8 of the range
+that the radios can achieve at an air rate of 64kbps. That is why the
+above graph shows the distance in meters times 8. This was on a tiny
+!SkyFun model, and I wanted to keep the plane where I could see it,
+which is why I did the test with reduced transmit power rather than
+just flying it a long distance.
+
+The radios kept a perfect link throughout this flight, so we are
+confident that these radios will achieve a few kilometers range in
+practice. In this particular case I was flying with a small 'wire'
+antenna in the !SkyFun and was using a cheap eBay 3.5dBi antenna on the
+ground station.
+
+Of course, the range would be considerably better if I had dropped the
+air data rate. I find 64kbps to be a good rate for general use, but I
+tend to use 24 kbps if I am wanting to test at longer ranges.
+
+The range of these radios has also been confirmed by other users. For example, I was sent a log showing a good link kept over a flight of 4.5km from the base station, using default radio settings for a 3DR 900 radio. That was using a small omni antenna in the plane, and a 8dB patch antenna on the ground station. The signal level in the log suggests it could have gone quite a bit further.
+
+=== Diagnosing range problems ===
+
+If you get less range than you would expect from the above information
+then what you need to do is graph the noise and signal levels from a
+flight to work out what the problem is.
+
+The most common source of range problems is noise. Noise is unwanted
+radio emissions in the same frequency range that your radio is using
+that interferes with the operation of your radio. The 3DR radios have
+telemetry logging built in to help you diagnose the source of the
+noise.
+
+There are three key types of noise that are likely to affect your 3DR
+radios
+ * noise from the electronics in your aircraft (such as your motor, ESC, APM etc)
+ * noise from your ground station computer, especially its USB bus
+ * noise from other people operating radios nearby that are on the same frequency as your 3DR radios
+
+To work out what sort of noise you have, open up mission planner and
+choose the "telemetry logs" tab. Then choose "Tlog>Kml or Graph". When
+the window pops up choose "Graph Log" and select a log from a test
+flight with your radios. Wait for the log to load, then choose the
+following items to log:
+ * rssi
+ * remrssi
+ * noise
+ * remnoise
+Put all 4 values on the one graph. You will end up with a plot like
+this:
+http://wiki.ardupilot-mega.googlecode.com/git/images/3DRadio/diag-range-graph.png
+
+That graph shows you 4 things:
+ * the amount of signal being received on the ground
+ * the amount of signal being received in the aircraft
+ * the amount of noise being received on the ground
+ * the amount of noise being received in the aircraft
+
+For the best possible range you want the two noise lines to be low,
+and the two signal lines to be high. In the above graph (taken from my
+!SkyFun with a pair of 3DR-433 radios) you can see that the noise
+levels in the plane are higher than the noise levels on the
+ground. Also note that at the start of the flight (before I started
+the motor) the noise levels on the plane were lower, then they went up
+after I started the motor. That shows I'm getting some noise from my
+motor. If I wanted more range I would need to move the radio further
+from the motor and ESC.
+
+Perhaps the most common source of noise with the 3DR-433 is noise from
+the USB bus on your ground station. That shows up as high values for
+the RADIO.noise value. If you get this, then you could try using a
+different USB cable, or a different laptop. You can also try using a
+USB hub between your laptop and your radio.
+
+If the 'rssi' and 'noise' levels meet on the graph then you will lose
+the link. To determine what your range would be, a rough rule of thumb
+is to subtract the 'rssi' and 'noise' numbers, then divide by 2. That
+tells you your "fade margin" in decibels. For each 6dB of fade margin
+your range doubles. So if you have 18dB of fade margin, then you will
+be able to do roughly 8x whatever range you were at when you measured
+the margin.
+
+Another key source of range problems is the antenna placement. Your
+ground station antenna should be well clear of obstructions and a
+couple of meters off the ground. You may need to build a stand to hold
+it to get the best range.
+
+=== Upgrading your radio firmware ===
+
+The firmware for the 3DR radios is open source, and new features are
+regularly added. You should check for new releases regularly to get
+the most from your radios.
+
+The easiest way to upgrade is using the APM Mission Planner. Go into
+the 3DR Radio configuration screen and use the 'Upload Firmware'
+button.
+
+After you upgrade please carefully check all your settings. A firmware update may change your settings to the default values if the EEPROM format has changed.
+
+We also encourage you to get involved in the development of the
+firmware. Start by looking at the
+[https://github.com/tridge/SiK firmware source code] and contribute some patches!
+
+=== Forcing bootloader mode ===
+
+If you somehow manage to get your radio in a state where you can't
+upload a new firmware via the Mission Planner then you may need to
+force the radio into bootloader mode.
+
+The way firmware upload normally works is the planner connects to the
+radio and sends a AT&UPDATE command to put the radio into bootloader
+mode ready to receive a new firmware. That only works if the planner
+can send AT commands to the radio.
+
+If you can't send AT commands, then you can force bootloader mode by
+shorting the CTS and GROUND pins on the radio while powering on. The
+red LED will light up when in bootloader mode.
+
+On the air radios the CTS and GROUND pins are easy to find, as they
+are marked on the back of the radio (they are two of the FTDI
+connector pins). On the USB radios it isn't as obvious, so this
+diagram may help:
+
+http://wiki.ardupilot-mega.googlecode.com/git/images/3DRadio/force-bootloader.jpg
+
+After you have the radio in bootloader mode you should be able to
+upload a firmware.
+
+=== 3DR Radio Discussion Forum ===
+
+The best place to get involved with the development or tuning of these radios is the [http://diydrones.com/forum/categories/3dr-radios/listForCategory 3DR Radios forum]. Join in on the forum to help make these radios even better! \ No newline at end of file
diff --git a/datasheets/trifle/trifle-board.pdf b/datasheets/trifle/trifle-board.pdf
new file mode 100644
index 0000000..75bc3bf
--- /dev/null
+++ b/datasheets/trifle/trifle-board.pdf
Binary files differ
diff --git a/datasheets/trifle/trifle-schematic.pdf b/datasheets/trifle/trifle-schematic.pdf
new file mode 100644
index 0000000..a6e7d93
--- /dev/null
+++ b/datasheets/trifle/trifle-schematic.pdf
Binary files differ