New documentation
452
README.md
@ -1,399 +1,111 @@
|
||||
# DIY-Multiprotocol-TX-Module
|
||||
# Overview
|
||||
|
||||
Multiprotocol is a 2.4GHz transmitter which enables any TX to control lot of different models available on the market.
|
||||
|
||||
The source code is partly based on the Deviation TX project, thanks to all the developpers for their great job on protocols.
|
||||
The source code is partly based on the [Deviation TX project](http://www.deviationtx.com), thanks to all the developers for their great job on protocols.
|
||||
|
||||
[Forum link on RCGROUPS](http://www.rcgroups.com/forums/showthread.php?t=2165676) for additional information or requesting a new protocol integration.
|
||||
## Quicklinks
|
||||
* [Download latest releases of the firmware](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/releases)
|
||||
* [Forum on rcroups](http://www.rcgroups.com/forums/showthread.php?t=2165676)
|
||||
* [Available Protocols list](docs/Protocol_Details.md)
|
||||
* [The old documentation](docs/README-old.md)
|
||||
* [Documentation to-do list](docs/Documentation_To_Do_List.md)
|
||||
|
||||
 
|
||||
## Outline of the documentation
|
||||
1. Introduction (this page)
|
||||
1. [Available protocols](docs/Protocol_Details.md)
|
||||
1. [Compatible Transmitters](docs/Transmitters.md)
|
||||
1. [Module Hardware options](docs/Hardware.md)
|
||||
1. [Compiling and programming the module (ATmega328)](docs/Compiling.md) and [Compiling STM32](Compiling_STM32.md).
|
||||
1. Transmitter Setup
|
||||
- [Taranis](docs/Tx-Taranis.md)
|
||||
- [FlySky TH9X, Turnigy 9X/R](docs/Tx-FlyskyTH9X.md)
|
||||
1. [How to for popular models](docs/Models.md)
|
||||
1. [Troubleshooting](docs/Troubleshooting.md)
|
||||
2. [Advanced Topics (not for the fainthearted!)](docs/Advanced_Topics.md)
|
||||
|
||||
**To download the latest compiled version (hex file), click on [Release](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/releases) on the top menu.**
|
||||
## Introduction
|
||||
A functioning DIY Multiprotocol module consists of (see image below):
|
||||

|
||||
|
||||
##Contents
|
||||
1. A host RC transmitter
|
||||
|
||||
[Compatible TX](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module#compatible-tx)
|
||||
1. DIY Multiprotocol module that connects to a host transmitter. This module is typically comprised of
|
||||
|
||||
[Protocols](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module#protocols)
|
||||
* A microprocessor (currently ATMega328P) that interfaces with the Tx, controls the module functions and forwards the RC commands to the RF hardware
|
||||
|
||||
[Hardware](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module#hardware)
|
||||
* One or more (but at least one) RF modules that provide the capability to communicate with RC receivers. To communicate with the receiver the RF module in the Tx must match with the RF module type in the receiver. The four most common 2.4GHz RF chips on the market are supported TI CC2500, Nordic NRF24L01, Cypress CYRF6936, and the Amiccom A7105
|
||||
|
||||
[Compilation and programmation](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module#compilation-and-programmation)
|
||||
* DIY Multiprotocol firmware loaded on to the microprocessor. At a high level, this firmware performs a few different functions:
|
||||
* It interfaces with signals from the host Tx and decodes these for transmission to the model, it manages the activation of the correct hardware RF module for each protocol
|
||||
* It implements the unique communication protocols for each receiver/model and manages the all-important binding process with a receiver/model
|
||||
* In the case of some protocols (for example DSMX and FrSky) it receives and decodes the telemetry information and makes this available to the receiver.
|
||||
1. The physical 2.4GHz antenna (or in some cases multiple antennas) for the modules
|
||||
|
||||
[Troubleshooting](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module#troubleshooting)
|
||||
|
||||
##Compatible TX
|
||||
|
||||
###Using standard PPM output (trainer port)
|
||||
The multiprotocol TX module can be used on any TX with a trainer port.
|
||||
In constructing a functioning module there are important choices to be made and tradeoffs to be aware of. The most important are:
|
||||
|
||||
Channels order is AETR by default but can be changed in the _Config.h.
|
||||
##**Choice 1:** Which module hardware option
|
||||
|
||||
The protocol selection is done via a dip switch, rotary dip switch or scsi ID selector.
|
||||
There are currently four generic paths to construct your own DIY Multiprotocol module. These are outlined in detail on the [hardware] page. Here they are in order of increasing difficulty:
|
||||
* You can purchase a ready-made DIY Multiprotocol module from Banggood
|
||||
* You can purchase a DIY Multiprotocol PCB from [OSHPark] and then buy and solder on your own RF modules
|
||||
* You can use a Orange Rx transmitter module available from Hobyking
|
||||
* You can build the module from scratch using an Arduino Pro Mini and a perf board base.
|
||||
The last option is where it all started and how the pioneers in this project made their boards. However, due to the growing interest in “one module to rule them all” you now have options to purchase a ready-made board (with old firmware that you will need to upgrade).
|
||||
|
||||

|
||||

|
||||

|
||||
For more information on these options see the [hardware](docs/Hardware.md) page
|
||||
|
||||
You can access to up to 15 different protocols and associated settings.
|
||||
##**Choice 2:** Which RF modules to include
|
||||
|
||||
Settings per selection are located in _Config.h:
|
||||
- Protocol and type: many main protocols have variants
|
||||
- RX Num: number your different RXs and make sure only one model will react to the commands
|
||||
- Power: High or low, enables to lower the power setting of your TX (indoor for example).
|
||||
- Option: -127..+127 allowing to set specific protocol options. Like for Hubsan to set the video frequency.
|
||||
- Autobind: Yes or No. At the model selection (or power applied to the TX) a bind sequence will be initiated
|
||||
This depends on your specific needs. However, recent the availability of the 4-in-1 RF modules from Banggood for less than $35 makes it easy to “have it all”. Most manufacturers of RC systems (Spektrum, FrSky, FlySky) and toys (Syma, Hubsan, Horizon Hobby, etc.) use one of these four RF chips to manage the RF link between the transmitter and the reciever/model. Here is an incomplete list of the RF modules and some of the most popular toys that use them. For the complete list see the [Protocol Details](docs/Protocol_Details.md) page.
|
||||
|
||||
###Using a serial output
|
||||
The multiprotocol TX module takes full advantage of being used on a Turnigy 9X, 9XR, 9XR Pro, Taranis, 9Xtreme, AR9X, ... running [er9x](http://openrcforums.com/forum/viewtopic.php?f=5&t=4598) or [ersky9X](http://openrcforums.com/forum/viewtopic.php?f=7&t=4676). An OpenTX version for Taranis is available [here](http://plaisthos.de/opentx/).
|
||||
Manufacturer|RF Chip|Example Protocols
|
||||
:-----------|-------|:-------
|
||||
Cyprus Semiconductor| CYRF6936|DSM/DSMX
|
||||
||Walkera Devo
|
||||
||J6Pro
|
||||
Texas Instruments|CC2500|FrSky
|
||||
||Futaba SFHSS
|
||||
Amiccom|A7105|FlySky
|
||||
||Turnigy (most)
|
||||
||Hubsan
|
||||
Nordic Semiconductor|NRF24L01|HiSky
|
||||
||Syma
|
||||
||ASSAN
|
||||
||and most other Chinese models
|
||||
|
||||
This enables full integration using the radio GUI to setup models with all the available protocols options.
|
||||
For example, if you have no interest in binding your Tx to an model with and FrSky or Futaba SFHSS receiver you do not need to include the CC2500 RF module in your system.
|
||||
|
||||

|
||||
##**Choice 3:** Which protocols to upload the module
|
||||
|
||||
Options are:
|
||||
- Protocol and type: many main protocols have variants
|
||||
- RX Num: number your different RXs and make sure only one model will react to the commands
|
||||
- Power: High or low, enables to lower the power setting of your TX (indoor for example).
|
||||
- Option: -127..+127 allowing to set specific protocol options. Like for Hubsan to set the video frequency.
|
||||
- Bind: bind a RX/model
|
||||
- Autobind: Yes or No. At the model selection (or power applied to the TX) a bind sequence will be initiated
|
||||
- Range: test range by setting the transmission power to the lowest value
|
||||
Of course there always a catch. There is a 32K memory limit on the ATmega328 processor. Due to the amazing work done by devs on this project, the memory required by all the possible protocols exceeds the limit. This means that you will need to make a choice of which protocols you will compile into your firmware. Fortunately, the process of selecting and compiling is not too difficult and it is fully documented on the [Compiling and Programming](docs/Compiling.md) page.
|
||||
Also, the lead dev Pascal Langer (rcgroups:hpnuts) makes this process even easier for many users by making compiled binaries available for three popular combinations of RF modules. These are always “fresh” (based on the latest stable firmware) and available on the [Releases](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/releases) page.
|
||||
|
||||
Notes:
|
||||
- Using this solution does not need any modification of the TX since it uses the TX module slot PPM pin for serial transfer.
|
||||
- There are 2 versions of serial protocol either 8 or 16 channels. 16 channels is the latest and only available version going forward. Make sure to use the right version based on your version of er9x/ersky9x.
|
||||
- Channels order is AETR by default but can be changed in _Config.h.
|
||||
##**Choice 4:** Choosing the type of interface with your Tx (PPM or Serial)
|
||||
|
||||
###Telemetry
|
||||
The DIY Mulitprotocol module supports industry standard PPM interface that works with all transmitters with either a module bay, and/or a trainer port. Even the older 72MHz FM radios support this standard.
|
||||
|
||||
There are 4 protocols supporting telemetry: Hubsan, DSM, FrSkyD and FrSkyX.
|
||||
If you are the owner of a transmitter that supports the er9X/erSky9X or OpenTX firmwares (Frsky Taranis running erSky9x or OpenTx, or any of the FlySky/Turnigy family of Txs running ER9X, ERSky9x or OpenTx) you have the additional option to use a serial protocol to communicate between your Tx and the DIY Mulitprotocol module. (Owners of Walkera Devo transmitters should look at the [Deviation Tx](http://www.deviationtx.com) project for how to achieve the same end goal). This serial protocol does not require any hardware modifications, but will require updating the firmware on your radio. For those willing to do this, there are some nice advantages:
|
||||
* The model and protocol selection and binding is done from the Model Settings menu on the Tx
|
||||
* For telemetry capable receivers, the telemetry integration is done seamlessly with the Tx firmware.
|
||||
See the [Setting up your Tx](docs/TransmitterSetup.md) page for more details.
|
||||
|
||||
Hubsan displays the battery voltage and TX RSSI.
|
||||
#How to get started?
|
||||
1. Browse the [Protocols] page to see which protocols you would like on your module
|
||||
1. Go to the [Hardware Options] page to decide what Tx module you need and which RF modules you plan to integrate
|
||||
1. Once you have your module, you should go to [Compiling and Programming](docs/Compiling.md) page to download, compile and program the DIY Multiprotocol module
|
||||
1. Finally, you should visit the [Setting up your Tx](docs/TransmitterSetup.md) page to configure the last few settings before you can fly to your heart’s content!!!!!
|
||||
|
||||
DSM displays TX RSSI and full telemetry.
|
||||
# Troubleshooting
|
||||
Visit the [Troubleshooting](docs/Troubleshooting.md) page. Please bear in mind that the DIY Multiprotocol module is a complex system of hardware and software and it make take some patience to get it up and running. Also remember that the developers of the system are actual users of the system. This means that at any moment in time the system is working perfectly for them. A corollary to this is that if you are struggling there are likely two scenarios. First, that the problem is with your hardware or with your configuration, second, and much more unlikely but not impossible scenario, is that you are struggling with a new undiscovered bug. (The author of this documentation speaks from experience ;-) Please check the RC Groups forum and search for keywords relating to your problem before posting a reply. When you do post a reply please so humbly and respectfully – you will find many helpful people there. In your reply please include as much relevant information as possible and attach compilation output and _Config.h files as text attachments to keep the forum clean.
|
||||
# A final word
|
||||
A very big thanks to all the people who have shared their time so graciously to create this great project. If you come across them on RC Groups, please be kind and show appreciation. In no particular order:
|
||||
* Pascal Langer (rcgroups: hpnuts)
|
||||
* Mike Blandford (rcgroups: Mike Blandford)
|
||||
* (rcgroups: midelic)
|
||||
* victhz – from Deviation-tx
|
||||
* Enter the other Deviation people here (###)
|
||||
|
||||
FrSkyD displays full telemetry (A0, A1, RX RSSI, TX RSSI and Hub).
|
||||
|
||||
FrSkyX displays full telemetry (A1, A2, RX RSSI, TX RSSI and Hub).
|
||||
|
||||
### If used in PPM mode
|
||||
|
||||
Telemetry is available as a serial 9600 8 n 1 output on the TX pin of the Atmega328p using the FrSky hub format for Hubsan, FrSkyD, FrSkyX and DSM format for DSM2/X.
|
||||
|
||||
You can connect it to your TX if it is telemetry enabled or use a bluetooth adapter (HC05/HC06) along with an app on your phone/tablet ([app example](https://play.google.com/store/apps/details?id=biz.onomato.frskydash&hl=fr)) to display telemetry information and setup alerts.
|
||||
|
||||
### If used in Serial mode
|
||||
Telemetry is built in for er9x and ersky9x TXs.
|
||||
|
||||
To enable telemetry on a Turnigy 9X or 9XR you need to modify your TX following one of the Frsky mod like this [one](http://blog.oscarliang.net/turnigy-9x-advance-mod/).
|
||||
|
||||
Note: DSM telemetry is not available on er9x due to a lack of flash space.
|
||||
|
||||
Enabling telemetry on a 9XR PRO and may be other TXs does not require any hardware modifications. The additional required serial pin is already available on the TX back module pins.
|
||||
|
||||
Once the TX is telemetry enabled, it just needs to be configured on the model (see er9x/ersky9x documentation).
|
||||
|
||||
##Protocols
|
||||
|
||||
###TX ID
|
||||
The multiprotocol TX module is using a 32bits ID generated randomly at first power up. This global ID is used by nearly all protocols.
|
||||
There are little chances to get a duplicated ID.
|
||||
|
||||
For DSM2/X and Devo the CYRF6936 unique manufacturer ID is used.
|
||||
|
||||
It's possible to generate a new ID using bind button on the Hubsan protocol during power up.
|
||||
|
||||
###Bind
|
||||
To bind a model in PPM Mode press the physical bind button, apply power and then release.
|
||||
|
||||
In Serial Mode you have 2 options:
|
||||
- use the GUI, access the model protocol page and long press on Bind. This operation can be done at anytime.
|
||||
- press the physical bind button, apply power and then release. It will request a bind of the first loaded model protocol.
|
||||
|
||||
Notes:
|
||||
- the physical bind button is only effective at power up. Pressing the button later has no effects.
|
||||
- a bind in progress is indicated by the LED fast blinking. Make sure to bind during this period.
|
||||
|
||||
###Protocol selection
|
||||
|
||||
####Using the dial for PPM input
|
||||
PPM is only allowing access to a subset of existing protocols.
|
||||
The protocols, subprotocols and all other settings can be personalized by modifying the **_Config.h** file.
|
||||
|
||||
The default association dial position / protocol in every release is listed below.
|
||||
|
||||
Dial|Protocol|Sub_protocol|RX Num|Power|Auto Bind|Option|RF Module
|
||||
----|--------|------------|------|-----|---------|------|---------
|
||||
0|Select serial||||||
|
||||
1|FLYSKY|Flysky|0|High|No|0|A7105
|
||||
2|HUBSAN|-|0|High|No|0|A7105
|
||||
3|FRSKYD|-|0|High|No|40|CC2500
|
||||
4|HISKY|Hisky|0|High|No|0|NRF24L01
|
||||
5|V2X2|-|0|High|No|0|NRF24L01
|
||||
6|DSM|DSM2|0|High|No|6|CYRF6936
|
||||
7|DEVO|-|0|High|No|0|CYRF6936
|
||||
8|YD717|YD717|0|High|No|0|NRF24L01
|
||||
9|KN|WLTOYS|0|High|No|0|NRF24L01
|
||||
10|SYMAX|SYMAX|0|High|No|0|NRF24L01
|
||||
11|SLT|-|0|High|No|0|NRF24L01
|
||||
12|CX10|BLUE|0|High|No|0|NRF24L01
|
||||
13|CG023|CG023|0|High|No|0|NRF24L01
|
||||
14|BAYANG|-|0|High|No|0|NRF24L01
|
||||
15|SYMAX|SYMAX5C|0|High|No|0|NRF24L01
|
||||
|
||||
Note:
|
||||
- The dial selection must be done before the power is applied.
|
||||
|
||||
####Using serial input with er9x/ersky9x
|
||||
Serial is allowing access to all existing protocols & sub_protocols listed below.
|
||||
|
||||
#####A7105 RF module
|
||||
Protocol|Sub_protocol
|
||||
--------|------------
|
||||
Flysky|
|
||||
|Flysky
|
||||
|V9x9
|
||||
|V6x6
|
||||
|V912
|
||||
Hubsan|
|
||||
|
||||
#####CC2500 RF module
|
||||
Protocol|Sub_protocol
|
||||
--------|------------
|
||||
FrSkyV|
|
||||
FrSkyD|
|
||||
FrSkyX|
|
||||
|CH_16
|
||||
|CH_8
|
||||
SFHSS|
|
||||
|
||||
#####CYRF6936 RF module
|
||||
Protocol|Sub_protocol
|
||||
--------|------------
|
||||
DSM|
|
||||
|DSM2
|
||||
|DSMX
|
||||
Devo|
|
||||
J6Pro|
|
||||
|
||||
#####NRF24L01 RF module
|
||||
Protocol|Sub_protocol
|
||||
--------|------------
|
||||
Hisky|
|
||||
|Hisky
|
||||
|HK310
|
||||
V2x2|
|
||||
YD717|
|
||||
|YD717
|
||||
|SKYWLKR
|
||||
|SYMAX4
|
||||
|XINXUN
|
||||
|NIHUI
|
||||
KN|
|
||||
|WLTOYS
|
||||
|FEILUN
|
||||
SymaX|
|
||||
|SYMAX
|
||||
|SYMAX5C
|
||||
SLT|
|
||||
CX10|
|
||||
|GREEN
|
||||
|BLUE
|
||||
|DM007
|
||||
|Q282
|
||||
|JC3015_1
|
||||
|JC3015_2
|
||||
|MK33041
|
||||
|Q242
|
||||
CG023|
|
||||
|CG023
|
||||
|YD829
|
||||
|H8_3D
|
||||
Bayang|
|
||||
ESky|
|
||||
MT99XX|
|
||||
|MT
|
||||
|H7
|
||||
|YZ
|
||||
|LS
|
||||
MJXQ|
|
||||
|WLH08
|
||||
|X600
|
||||
|X800
|
||||
|H26D
|
||||
|E010
|
||||
Shenqi|
|
||||
FY326|
|
||||
FQ777|
|
||||
ASSAN|
|
||||
HONTAI|
|
||||
|HONTAI
|
||||
|JJRCX1
|
||||
|X5C1
|
||||
|
||||
Note:
|
||||
- The dial should be set to 0 for serial. Which means all protocol selection pins should be left unconnected.
|
||||
|
||||
###Protocols details
|
||||
**Check the [Protocols_Details.md](./Protocols_Details.md) file for a detailed description of every protocols with channels assignements.**
|
||||
|
||||
##Hardware
|
||||
|
||||
###RF modules
|
||||
Up to 4 RF modules can be installed:
|
||||
- [A7105](http://www.banggood.com/XL7105-D03-A7105-Modification-Module-Support-Deviation-Galee-Flysky-p-922603.html) for Flysky, Hubsan
|
||||
- [CC2500](http://www.banggood.com/CC2500-PA-LNA-Romote-Wireless-Module-CC2500-SI4432-NRF24L01-p-922595.html) for FrSkyV, FrSkyD, FrSkyX and SFHSS
|
||||
- [CYRF6936](http://www.ehirobo.com/walkera-wk-devo-s-mod-devo-8-or-12-to-devo-8s-or-12s-upgrade-module.html) for DSM, DEVO, J6Pro
|
||||
- [NRF24L01](http://www.banggood.com/2_4G-NRF24L01-PA-LNA-Wireless-Module-1632mm-Without-Antenna-p-922601.html) for Hisky, V2x2, CX-10, SYMAX and plenty other protocols
|
||||
|
||||
RF modules can be installed for protocols need only. Example: if you only need the Hubsan protocol then install only a A7105 on your board.
|
||||
|
||||
You also need some [antennas](http://www.banggood.com/2_4GHz-3dBi-RP-SMA-Connector-Booster-Wireless-Antenna-Modem-Router-p-979407.html) and [cables](http://www.banggood.com/10cm-PCI-UFL-IPX-to-RPSMA-Female-Jack-Pigtail-Cable-p-924933.html).
|
||||
|
||||
###Board
|
||||
The main program is running on an ATMEGA328p running @16MHz and 3.3V.
|
||||
An [Arduino pro mini 16Mhz/5V](http://www.banggood.com/Wholesale-New-Ver-Pro-Mini-ATMEGA328-328p-5V-16MHz-Arduino-Compatible-Nano-Size-p-68534.html) powered at 3.3V (yes it works) can be used to build your own Multimodule. An Arduino Mini based on Atmega328p can also be used.
|
||||
|
||||
####Using stripboard:
|
||||
|
||||

|
||||

|
||||
|
||||
####Using a [home made PCB](http://www.rcgroups.com/forums/showpost.php?p=32645328&postcount=1621):
|
||||
|
||||

|
||||

|
||||
|
||||
####Build your own board using [SMD components](http://www.rcgroups.com/forums/showpost.php?p=31064232&postcount=1020) and an [associated PCB v2.3c](https://oshpark.com/shared_projects/MaGYDg0y):
|
||||
|
||||

|
||||

|
||||
 
|
||||
|
||||
If you build this PCB v2.3c and want to enable serial mode for er9x/ersky9x, you have to do [this mod](http://static.rcgroups.net/forums/attachments/4/0/8/5/8/3/a8667856-242-multi.jpg).
|
||||
|
||||
**[New PCB v2.3d!](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/tree/master/PCB%20v2.3d) available**
|
||||
|
||||
Repository includes Kicad files of schematic and pcb. This is a variant of the Multipro V2.3c circuit design. It is basicly the same as the 2.3c board as far as component placement goes. What's changed is the added resistors for the serial protocol and also
|
||||
the addition of solder jumpers on the bottom of the board for the various options to connect the TX, RX, and PPM
|
||||
lines through them.
|
||||
|
||||

|
||||

|
||||
|
||||
[OSH Park link](https://oshpark.com/shared_projects/Ztus1ah8) if you want to order.
|
||||
|
||||
####Buy a ready to use and complete Multi module
|
||||

|
||||
|
||||
This module can be purchased [here](http://www.banggood.com/2_4G-CC2500-A7105-Flysky-Frsky-Devo-DSM2-Multiprotocol-TX-Module-With-Antenna-p-1048377.html). All the 4 RF modules are already implemented A7105, NRF24L01, CC2500 and CYRF6936. The board is also equiped with an antenna switcher which means only one antenna for all.
|
||||
|
||||
**It is highly recommended to update the firmware** of this board as it is distributed with a really old and bugged one. For this you have to solder a 6 pin header (top left) and use an USBASP like explained [below](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module#upload-the-code-using-isp-in-system-programming).
|
||||
|
||||
If you want to enable serial mode for er9x/ersky9x/Taranis/... and depending on your board revision, you have to do one of these modifications:
|
||||
- 1st revision, add 2 resistors as shown here: 
|
||||
- 2nd revision, solder pads together as shown:
|
||||
|
||||
<img src="http://static.rcgroups.net/forums/attachments/4/8/3/5/8/4/a9206217-177-IMG_5790.jpg" width="350">
|
||||
|
||||
Note: if you have the 1st board revision (check pictures above), sometime bind occures at power up even without pressing the bind button or not having an autobind protocol. To solve this issue, replacing the BIND led resistor (on the board back) of 1.2K by a 4.7K.
|
||||
|
||||
###Schematic
|
||||

|
||||
|
||||
Notes:
|
||||
- Attention: All modules are 3.3V only, never power them with 5V.
|
||||
- For serial, the dial switch is not needed and the bind button optionnal
|
||||
|
||||
###Radio integration
|
||||
If you build your own version of the board you can 3D print this case (details [here](http://www.rcgroups.com/forums/showpost.php?p=33294140&postcount=2034)):
|
||||
|
||||

|
||||

|
||||
|
||||
If you have the Banggood ready to use board you can 3D print this case (details [here](http://www.rcgroups.com/forums/showpost.php?p=35349049&postcount=3)):
|
||||
|
||||
<img src="http://static.rcgroups.net/forums/attachments/4/8/3/5/8/4/a9206211-97-Screen%20Shot%202016-07-27%20at%2011.02.35%20am.png" width="200">
|
||||
<img src="http://static.rcgroups.net/forums/attachments/4/8/3/5/8/4/a9206411-90-IMG_5793.jpeg" width="200">
|
||||
<img src="http://static.rcgroups.net/forums/attachments/4/8/3/5/8/4/a9206445-131-IMG_5796.jpeg" width="200">
|
||||
|
||||
##Compilation and programmation
|
||||
|
||||
###Toolchain
|
||||
Multiprotocol source can be compiled using the Arduino IDE.
|
||||
|
||||
The currently supported Arduino version is [1.6.10](https://www.arduino.cc/download_handler.php?f=/arduino-1.6.10-windows.exe).
|
||||
|
||||
Download the [zip file](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/archive/master.zip) of this repository, unzip it in a folder, navigate to the Multiprotocol directory and then click on Multiprotocol.ino. The Arduino environment will appear and the Multiprotocol project will be loaded.
|
||||
|
||||
**[_Config.h file](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/blob/master/Multiprotocol/_Config.h) must be modified** to select which protocols will be available, change protocols/sub_protocols/settings associated with dial for PPM input, different TX channel orders and timing, Telemetry or not, ...
|
||||
This is mandatory since all available protocols will not fit in the ATmega328. You need to pick and choose what you want.
|
||||
|
||||
Notes:
|
||||
- Make sure to select "Arduino Pro or Pro Mini, ATmega328 (5V,16MHz)" before compiling.
|
||||
- Compilation of the code posted here works. So if it doesn't for you this is a problem with your setup, please double check everything before asking.
|
||||
- If you want to reduce the code size even further, you can modify the file platform.txt located in "C:\Program Files (x86)\Arduino\hardware\arduino\avr". Set the line "compiler.c.elf.extra_flags=" to "compiler.c.elf.extra_flags=-Wl,--relax".
|
||||
|
||||
###Upload the code using ISP (In System Programming)
|
||||
It is recommended to use an external programmer like [USBASP](http://www.banggood.com/USBASP-USBISP-3_3-5V-AVR-Downloader-Programmer-With-ATMEGA8-ATMEGA128-p-934425.html) to upload the code in the Atmega328. The programmer should be set to 3.3V or nothing to not supply any over voltage to the multimodule and avoid any damages.
|
||||
|
||||
The dial must be set to 0 before flashing!
|
||||
|
||||
From the Arduino environment, you can use this shortcut to compile and upload to the module: Skecth->Upload Using Programmer (Ctrl+Maj+U)
|
||||
|
||||
To flash the latest provided hex file under [Release](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/releases), you can use a tool like [AVR Burn-O-Mat](http://avr8-burn-o-mat.aaabbb.de/), set the microcontroller to m328p and flash it.
|
||||
|
||||
###Upload the code using FTDI (USB serial to TTL)
|
||||
Use this method only for Arduino Pro Mini boards with bootloader.
|
||||
|
||||
Use an external FTDI adapter like [this one](http://www.banggood.com/FT232RL-FTDI-USB-To-TTL-Serial-Converter-Adapter-Module-For-Arduino-p-917226.html).
|
||||
|
||||
The programmer should be set to 3.3V or nothing to not supply any over voltage to the multimodule and avoid any damages.
|
||||
|
||||
From the Arduino environment, you can use Upload button which will compile and upload to the module: Skecth->Upload (Ctrl+U)
|
||||
|
||||
To upload the latest provided hex file under [Release](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/releases), you can use a tool like [XLoader](http://russemotto.com/xloader/), set the microcontroller to Atmega328 and upload it.
|
||||
|
||||
###Set fuses
|
||||
Use a tool like [AVR Burn-O-Mat](http://avr8-burn-o-mat.aaabbb.de/) to set the fuses of the Atmega328 to:
|
||||
- Extended Fuse 0x05 (or 0xFD which is the same)
|
||||
- High Fuse 0xD2
|
||||
- Low Fuse 0xFF
|
||||
|
||||
This will make sure your ATMEGA328 is well configured and the global TX ID is not erased at each updates.
|
||||
|
||||
##Troubleshooting
|
||||
|
||||
###LED status
|
||||
- off: program not running or a protocol selected with the associated module not installed.
|
||||
- flash(on=0.1s,off=1s): invalid protocol selected (excluded from compilation or invalid protocol number)
|
||||
- slow blink(on=0.5s,off=0.5s): serial has been selected but no valid signal has been seen on the RX pin.
|
||||
- fast blink(on=0.1s,off=0.1s): bind in progress.
|
||||
- on: normal operation.
|
||||
|
||||
###Protocol selection
|
||||
####Input Mode - PPM
|
||||
- The protocol/mode selection must be done before the power is applied.
|
||||
- Connect 1 to 4 of the selection protocol pins to GND.
|
||||
|
||||
####Input Mode - Serial
|
||||
- Make sure you have done the mods to the v2.3c PCB by adding the 2.2k and 470 ohm resistors as indicated in the [Board section] (https://github.com/pascallanger/DIY-Multiprotocol-TX-Module#board).
|
||||
- Leave all 4 selection pins unconnected.
|
||||
|
||||
###Bind
|
||||
Make sure to follow this procedure: press the bind button, apply power and then release it after 1sec. The LED should be blinking fast indicating a bind status and then fixed on when the bind period is over. It's normal that the LED turns off when you press the bind button, this behavior is not controlled by the Atmega328.
|
||||
For serial, the preffered method is to bind via the GUI protocol page.
|
||||
|
||||
If your module is always/sometime binding at power up without pressing the button:
|
||||
- Arduino Pro Mini with an external status LED: to work around this issue connect a 10K resistor between D13 and 3.3V.
|
||||
- 4in1 module V1 (check 4in1 pictures): to solve this issue, replacing the BIND led resistor (on the board back) of 1.2K by a 4.7K.
|
||||
|
||||
###Report issues
|
||||
You can report your problem using the [GitHub issue](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/issues) system or go to the [Main thread on RCGROUPS](http://www.rcgroups.com/forums/showthread.php?t=2165676) to ask your question.
|
||||
Please provide the following information:
|
||||
- Multiprotocol code version
|
||||
- TX type
|
||||
- Using PPM or Serial, if using er9x or ersky9x the version in use
|
||||
- Different led status (multimodule and model)
|
||||
- Explanation of the behavior and reproduction steps
|
||||
Your help would be greatly appreciated. If protocol reverse-engineering and dev is not your thing then any help with testing and contributing to the documentation would be amazing. Given the number of different Tx/module hardware/RF module/protocol/model combinations the process of testing and documenting is a major bottleneck for the developers. Anything you can do to help will free them up to do even greater things. Check out this quick guide {How to help with documentation} for how you can submit changes to the documentation.
|
||||
|
70
docs/Advanced_ATmega_Serial_Uploader.md
Normal file
@ -0,0 +1,70 @@
|
||||
#ATmega Serial Uploader
|
||||
|
||||
Mike Blandford adapted the optiboot bootloader for the 4-in-1 module to allow flashing of the module using a standard Arduino USB to serial adapter or FTDI adapter. No need to open the module case. Once set up is very easy to use:
|
||||
|
||||
1. plug the serial wires into the module connector,
|
||||
2. To activate the bootloader, set the rotary switch to 0
|
||||
3. hold the bind button down for 0.5s while connecting the USB end of the serial cable into the computer
|
||||
4. Press upload on the Arduino IDE or issue an AVRdude command from the terminal.
|
||||
|
||||
It uses a baudrate of 57600, so is the same as a Pro Mini.
|
||||
|
||||
The Serial / FTDI connections on the Tx module are as follows:
|
||||
- Top Pin: Programmer Tx
|
||||
- 2nd Pin:
|
||||
- 3rd Pin: Programmer V+
|
||||
- 4th Pin: Programmer Gnd
|
||||
- 5th Pin: Programmer Rx
|
||||
|
||||
The bootloader starts up, waits half a second, then checks the rotary switch and the bind button. If they aren't as described above, then the normal application runs.
|
||||
|
||||
While the bootloader is running, if it detects a communication problem, it configures the watchdog to reset in 16mS, then waits forever. 16mS later the board should reset, and then restart the bootloader, dropping back to the application half a second later.
|
||||
|
||||
This bootloader is for reading and writing the flash only, the EEPROM is not supported, neither is reading/writing the fuses, but it only uses 512 bytes of flash.
|
||||
|
||||
##Install the bootloader
|
||||
To get the bootloader onto the ATmega you need to connect an flashing tool (like USBasp) to the 6-pin ISP connector on the board.
|
||||
Simply flash the .hex file to get the bootloader on the chip, and change the high fuse at the same time.
|
||||
|
||||
The bootloader only uses 512 bytes of flash and is avaialble for download [here](http://www.rcgroups.com/forums/showatt.php?attachmentid=9291360&d=1472324155). The orginal rcgroups post is [here](http://www.rcgroups.com/forums/showpost.php?p=35584619&postcount=4867).
|
||||
|
||||
The HIGH fuse needs to be set to 0xD6. (See the section below on Setting the Fuses with AVRdude.)
|
||||
|
||||
## Setting fuses with AVRdude
|
||||
###Determining the location of the avrdude program
|
||||
The Arduino IDE is used to upload firmware and set fuses on the ATMega microprocessor.
|
||||
|
||||
You can install avrdude on your computer, but it is already contained in the Arduino IDE bundle and we suggest that you use the Arduino-bundled version.
|
||||
1. Unplug any programmer that may be connected to the computer
|
||||
1. In the Arduino IDE click on Sketch -> Upload Using Programmer
|
||||
1. After a series of compiling messages you will see an error that a programmer is not found. Scroll up and find the programming command that caused the errors (usually the last white line before the red errors) and copy it into TextEdit or Notepad.
|
||||
1. This is your programming command and it should look something like this:
|
||||
|
||||
**Mac:**
|
||||
|
||||
|
||||
> ```
|
||||
> /Applications/Arduino.app/Contents/Java/hardware/tools /avr/bin/avrdude -C/Applications/Arduino.app/Contents/ Java/hardware/tools/avr/etc/avrdude.conf -patmega328p -cusbasp -Pusb -Uflash:w:{this part will be unique to your system} /Multiprotocol.ino.hex:i
|
||||
> ```
|
||||
|
||||
**PC:**
|
||||
|
||||
|
||||
> ```
|
||||
> C:\Program Files (x86)\Arduino\Contents\Java\hardware\tools\ avr\bin\avrdude -CC:\Program Files (x86)\Arduino\Contents\Java\ hardware\tools\avr\etc\avrdude.conf -patmega328p -cusbasp -Pusb -Uflash:w:{this part will be unique on your system}\ Multiprotocol.ino.hex:i
|
||||
> ```
|
||||
|
||||
|
||||
Select all the text up to the ```-Uflash ``` command, copy it and paste it into a new line and add a “-v” (without the "") at the end of the line.
|
||||
|
||||
This is your “verify” command and it should look something like this:
|
||||
|
||||
> ```
|
||||
> /Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avrdude -C/Applications/Arduino.app/Contents/Java/hardware/ tools/avr/etc/avrdude.conf -patmega328p -cusbasp -Pusb -v
|
||||
> ```
|
||||
|
||||
|
||||
We will be using these two commands to program the module.
|
||||
|
||||
1. Verify that the connection is working by pasting the Verify line into a terminal. You should see output that includes the fuse settings.
|
||||
2. 1. To program the High Fuse copy the “verify” command and paste it into the shell add the following text to the end of the line ```-U hfuse:w:0xD6:m ``` . Press Enter.
|
2
docs/Advanced_Bluetooth_Telemetry.md
Normal file
@ -0,0 +1,2 @@
|
||||
#Bluetooth Telemetry
|
||||
{The documentation goes here}
|
12
docs/Advanced_Topics.md
Normal file
@ -0,0 +1,12 @@
|
||||
#Advanced Topics {This page is currently a proof of concept}
|
||||
Warning: the topics on this page are not for the fainthearted. It is strongly recommended that you have some experience in getting up and runnning with your module before you dive in there. On the other hand what is described on this page are some very useful options that could greatly increase the value and the enjoyment of your Multiprotocol module.
|
||||
#Serial uploader that works through the transmitter pins
|
||||
This document describes how you can set up your ATmega-based Mulitprotocol module to allow you to update the firmware by connecting a USB to TTL serial (like a FTDI) adapter to the module's transmitter interface pins. It is great if you exclusively use the Serial interface with your transmitter because the Bind button is used as "bootloader" button. It requires a small custom bootloader to be uploaded and a simple interface cable to be soldered up. See the [Advanced ATmega Serial Uploader](Advanced_ATmega_Serial_Uploader.md) page for more details.
|
||||
Created and supported by: Mike Blandford
|
||||
|
||||
RCGroups page: {insert page here}
|
||||
#Bluetooth telemetry board for telemetry in PPM mode
|
||||
This document describes a simple bluetooth module to stream telemetry information to a mobile device like an Android smartphone or tablet. This is very useful with modules used in the PPM mode with transmitters that do not support telemetry. See the [Advanced Bluetooth Telemetry](Advanced_Bluetooth_Telemetry.md) page for more details.
|
||||
Created and supported by: Miledic
|
||||
|
||||
RCGroups page: {insert page here}
|
10
docs/Bind_Timing.md
Normal file
@ -0,0 +1,10 @@
|
||||
#Getting your Bind timing right.
|
||||
On many consumer models it it important for the Tx to send a bind signal in a narrow window once the model has powered up.
|
||||
|
||||
If the bind signal is not recieved during this window, the bind sequence times out. Try this:
|
||||
|
||||
1. power the transmitter up with the throttle stick high. This will trigger the warning window on the transmitter and put a hold on the transmitter bind process.
|
||||
1. turn on the model
|
||||
1. while holding the bind button (if in PPM mode), at the right moment bring the throttle down to instantly bring the transmitter into bind mode.
|
||||
|
||||
If you are using Serial Mode it is best to check the Autobind box in the Model Settings menu. This will automatically initiate a bind sequence as soon as the Tx module powers up (Note: the Tx module only powers up when the transmitter passes the Switch/Throttle Warning page).
|
206
docs/Compiling.md
Normal file
@ -0,0 +1,206 @@
|
||||
# Compiling and Programming (ATmega 328P)
|
||||
|
||||
**If you are Compling for the STM32 version of the Multiprotocol Module please go to the dedicated [Compiling and Programming STM32](Compiling_STM32.md) page.**
|
||||
|
||||
**This page describes the basic Compiling and Programming process. There are some other more advanced processes that have some superior features described under the [Advanced Topics](Advanced_Topics.md) page.** Some options are:
|
||||
- Using an FTDI cable to upload firmware over the module - Tx pins
|
||||
|
||||
|
||||
Multiprotocol source can be compiled using the Arduino IDE.
|
||||
|
||||
##Install the Arduino IDE and the Multiprotocol project
|
||||
1. Download the Arduino IDE. The currently supported Arduino version is 1.6.10. available for [Windows]( https://www.arduino.cc/download_handler.php?f=/arduino-1.6.10-windows.exe) and [Mac OSX](http://arduino.cc/download_handler.php?f=/arduino-1.6.10-macosx.zip)
|
||||
1. Download the zip file with the Multiprotocol module source code from [here](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/archive/master.zip)
|
||||
1. Unzip and copy the source code folder **Multiprotocol** to a folder of your choosing
|
||||
1. Click on the **Multiprotocol.ino** file in the **Multiprotocol** folder and the Arduino environment should appear and the Multiprotocol project will be loaded.
|
||||
|
||||
##Prepare the Arduino IDE:
|
||||
The Arduino IDE must be customized to optimally compile the firmware. The following additions to the environment will remove the Arduino bootloader to free up additional memory for protocols.
|
||||
###Mac OSX:
|
||||
1. Using finder navigate to ```Applications``` folder
|
||||
1. Ctl-Click on the Arduino application and select **Show Package Contents**.
|
||||
1. Browse to ```Contents/Java/hardware/arduino`` and double click on boards.txt
|
||||
1. Copy and paste the following text into the end of the file and save it:
|
||||
|
||||
```
|
||||
##############################################################
|
||||
## Multi 4-in-1 (3.3V, 16 MHz) w/ ATmega328
|
||||
## --------------------------------------------------
|
||||
multi.name=Multi 4-in-1
|
||||
|
||||
multi.upload.tool=avrdude
|
||||
multi.upload.protocol=arduino
|
||||
|
||||
multi.bootloader.tool=avrdude
|
||||
multi.bootloader.unlock_bits=0x3F
|
||||
multi.bootloader.lock_bits=0x0F
|
||||
|
||||
multi.build.board=AVR_PRO
|
||||
multi.build.core=arduino
|
||||
multi.build.variant=eightanaloginputs
|
||||
|
||||
multi.menu.cpu.16MHzatmega328=ATmega328 (3.3V, 16 MHz)
|
||||
|
||||
multi.menu.cpu.16MHzatmega328.upload.maximum_size=32768
|
||||
multi.menu.cpu.16MHzatmega328.upload.maximum_data_size=2048
|
||||
multi.menu.cpu.16MHzatmega328.upload.speed=57600
|
||||
|
||||
multi.menu.cpu.16MHzatmega328.bootloader.low_fuses=0xFF
|
||||
multi.menu.cpu.16MHzatmega328.bootloader.high_fuses=0xD3
|
||||
multi.menu.cpu.16MHzatmega328.bootloader.extended_fuses=0xFD
|
||||
|
||||
multi.menu.cpu.16MHzatmega328.build.mcu=atmega328p
|
||||
multi.menu.cpu.16MHzatmega328.build.f_cpu=16000000L
|
||||
##############################################################
|
||||
```
|
||||
1. Open the file *platform.txt* in the same folder and change the line that reads
|
||||
|
||||
```compiler.c.elf.extra_flags= ```
|
||||
|
||||
to
|
||||
|
||||
```compiler.c.elf.extra_flags=-Wl,--relax ```
|
||||
|
||||
paste the following text into the end of the file and save it.
|
||||
|
||||
Close and reopen the Arduino IDE and load the Multiprotocol project.
|
||||
|
||||
### Windows: {customize for windows}
|
||||
Using File Explorer navigate to
|
||||
|
||||
```C:\Program Files(x86)\Arduino\hardware\arduino\avr ```
|
||||
|
||||
Open ```boards.txt``` in your favourite text editor (Notepad)
|
||||
|
||||
Copy and paste the "Multi 4-in-1" text listed above into the end of the file and save it.
|
||||
|
||||
Open the file *platform.txt* in the same folder and change the line that reads
|
||||
|
||||
```compiler.c.elf.extra_flags= ```
|
||||
|
||||
to
|
||||
|
||||
```compiler.c.elf.extra_flags=-Wl,--relax ```
|
||||
|
||||
Close and reopen the Arduino IDE and load the Multiprotocol project.
|
||||
|
||||
## Common process for OSX and Windows
|
||||
If you have module with an Arduino Pro-Mini then scroll down to Programming Arduino Pro-Mini Boards
|
||||
|
||||
If you are using one of the DIY Mulitprotocol modules with the ATmega soldered directly to a PCB (like the 3.2d board or the Banggood readymade 4-in-1 module) then follow these instructions.
|
||||
###Preparing for ATMega328P microcontroller
|
||||
1. Under the Tools -> Board select the Multi 4-in-1 board
|
||||
1. Under Tools -> Programmer select your programmer (probably USBASP)
|
||||
|
||||
###Customize the firmware to your hardware and your needs
|
||||
On all modules with ATMega microprocessors, the memory required for all the protocols exceeds the available 32k of flash memory. You will need to select which protocols you wish to use that will fit into the available memory.
|
||||
|
||||
Before customizing your firmware it would be good to review the protocol on the [Protocol Details](Protocol_Details.md) page and to identify the protocols you would like to support on your module.
|
||||
|
||||
At the same time make a note of RF modules required by your protocols. For example, if you do not wish to use the FlySky or the Husan protocols then you do not need to compile support the the A7105 RF Module into your firmware. Similarly, if you have no need to bind with ASSAN RC receivers then you do not need to compile the ASSAN protocol into your firmware.
|
||||
|
||||
If you plan to use the PPM communication interface with your transmitter, then you need to perform protocol selection with the 16 position switch on your module. This will limit the available protocols you can usefully include on your firmware to 15. You should make a list of your 15 chosen protocols, sub protocols and options like this:
|
||||
|
||||
Switch Position|Protocol|Sub-Protocol|Option|Notes
|
||||
---------------|--------|------------|------|-----
|
||||
1.|DSM|DSM2|2|6 channels @ 22ms
|
||||
2.|DSM|DSMX|6|6 channels @ 11ms
|
||||
....|...|...|...|...
|
||||
....|...|...|...|...
|
||||
15.|FRSKYX|CH_16| |FrSky X receiver 16 chan
|
||||
|
||||
|
||||
With the above information (required RF modules, selected protocols and 16 pos switch mapping) you are ready to customize your firmware.
|
||||
|
||||
All customization is done by editing the ```_Config.h ``` file in the Multiprotocol Arduino project.
|
||||
|
||||
In the Arduino IDE and click on the down arrow on the far right of the tab bar to show a list of project files (see the red circle on the screenshot below). Scroll down and select the _Config.h file.
|
||||
<img src="images/Arduino.png" width="600" height="400" />
|
||||
|
||||
Comment out any of the RF modules that you do not need by typing ```// ``` at the begining of the line that reads :
|
||||
```#define <RF Module name>_INSTALLED ``` . The following line shows the CC2500 module removed
|
||||
|
||||
> ```#define A7105_INSTALLED ```
|
||||
|
||||
> ```#define CYRF6936_INSTALLED ```
|
||||
|
||||
> **```//#define CC2500_INSTALLED ```**
|
||||
|
||||
> ```#define NFR24L01_INSTALLED ```
|
||||
|
||||
Scroll down to the available protocols and comment out all the protocols you will not require. The following example shows the DEVO protocol commented out.
|
||||
|
||||
> **```#ifdef CYRF6936_INSTALLED ```
|
||||
|
||||
> **``` // #define DEVO_CYRF6936_INO ```**
|
||||
|
||||
> ``` #define DSM_CYRF6936_INO ```
|
||||
|
||||
> ``` #define J6PRO_CYRF6936_INO ```
|
||||
|
||||
> ``` #endif ```**
|
||||
|
||||
If you have a Taranis Tx and you plan on using Serial mode with telemetry find and uncomment the INVERT_TELEMETRY line below:
|
||||
> ```//Uncomment to invert the polarity of the telemetry serial signal.```
|
||||
|
||||
> ```//For ER9X and ERSKY9X it must be commented. For OpenTX it must be uncommented.```
|
||||
|
||||
> ```#define INVERT_TELEMETRY 1```
|
||||
|
||||
Scroll down to the bottom of the file and list your switch mapping to your desired **protocol/sub-protocol/options**. You typically only need to change the three relevant columns. On models that require a rebind on every start-up (like Syma quads) you can change the **```NO_AUTOBIND ```** to **```AUTOBIND ```**.
|
||||
|
||||
You can now compile the firmware by clicking on the check mark (Tooltip: Verify) on the menu bar. If everything goes according to plan you should see something like the following line in the lower pane of the window:
|
||||
|
||||
> Sketch uses 32,464 bytes (99%) of program storage space. Maximum is 32,768 bytes.
|
||||
> Global variables use 1,219 bytes (59%) of dynamic memory, leaving 829 bytes for local variables. Maximum is 2,048 bytes.
|
||||
|
||||
if you see something like the following, your firmware is still too big and you need to deselect additional protocols:
|
||||
> Sketch uses 34,096 bytes (104%) of program storage space. Maximum is 32,768 bytes.
|
||||
> Global variables use 1,236 bytes (60%) of dynamic memory, leaving 812 bytes for local variables. Maximum is 2,048 bytes.
|
||||
> Sketch too big; see http://www.arduino.cc/en/Guide/Troubleshooting#size for tips on reducing it.
|
||||
|
||||
If there is another error carefully read the error to see the approximate line number where you made a typing error.
|
||||
|
||||
|
||||
###Connecting the programmer
|
||||
To complete this step you need an USBASP programmer like the one shown below and a 10-pin to 6-pin programming cable.
|
||||
|
||||
1. Before you connect the programmer make sure that you have selected the 3.3V mode and not the 5V mode. The RF Modules are not 5V tolerant and you will harm with 5V. On most programmers this is done by moving a jumper on the programmer.
|
||||
1. Please re-read item 1. above before going on.
|
||||
1. Turn the rotary switch on the DIY Multiprotocol module to the 0 position. If you do not have a switch (if you are using only Serial mode) then it the same as being in the 0 position. The upload will not work if the switch is in any other position.
|
||||
1. Connect the 6-pin programming connector to the 6-pin ASP IVR connector on the DIY Multiprotocol board. Be sure to match the ground pin of the programmer connector to the ground pin on the board (see the images below for the pin layout and the location of the ground pin on the board) {insert pictures AVR ISP Pinout.png and images of boards with ground pin marked}
|
||||
1. You are now ready to plug in the USB programmer to the computer
|
||||
1. You are now ready to flash the firmware. In the Arduino IDE click **Sketch -> Upload Using Programmer**.
|
||||
2. If you get an error that indicates a valid microprocessor was not found there is something wrong with:
|
||||
- your connections,
|
||||
- your programmer, or
|
||||
- your board
|
||||
- Google around with the specific error message to get suggestions of how to fix it. The most common cause is problems with the connection setup and in some cases problems with the cheap programmers from Chinese sources.
|
||||
1. The final step is to flash the fuses of the microprocessor. These correct fuses will do a few things:
|
||||
- Prevent the EEPROM from being erased each time the firmware is flashed. This will preserve your Tx ID and save you from having to rebind all your models after an update of the firmware
|
||||
- Configure the clock source of the board - this is very important if you built the board from components. The ATMega328P microprocessor is configured at the factory to use an internal 8Mhz clock. The DIY Multiprotocol boards have a much more accurate 16MHz external crystal and the fuses will tell the MCU to use this clock source. (If you were able to flash the board but after setting the fuses the board no longer responds, it is very likely that you have a problem with your external clock.)
|
||||
- Set the program counter to point at the right place when the module is powered up. The fuses configure the MCU to use a bootloader or not. If you compiled the firmware without a bootloader then the fuses must be set accordingly.
|
||||
1. In the Arduino IDE ensure that the **4-in-1 Multi** is selected under **Tools -> Board"** click on **Tools -> Burn Bootloader**. Do not worry if it returns the error that no bootloader was found (in the case of the 4-in-1 board), it has burned the fuses. If you IDE was set to provide verbose compilation and uploading output, you should be able to see the final value of the fuses in the Arduino IDE.
|
||||
|
||||
If the output indicates that the fuses have been successfully written give yourself a pat on the back. Well done, you have successfully programmed your DIY Multiprotocol module and you are ready to go on to the final step [Setting up your Transmitter](TransmitterSetup.md) before you can begin to fly!!!!
|
||||
|
||||
##Programming Arduino Pro-Mini Boards
|
||||
Use this method only for Arduino Pro Mini boards with bootloader.
|
||||
1. Use an external FTDI adapter like this one.
|
||||
1. The programmer should be set to 3.3V or nothing to not supply any over voltage to the multimodule and avoid any damages.
|
||||
1. Under the Tools -> Board select the Arduino Pro-Mini
|
||||
1. Under Tools -> Processor select the Atmega328p (5V, 16Mhz)
|
||||
1. Under Tools -> Port select your the serial port your programmer is connected to (it should appear on the the list)
|
||||
1. Scroll back to the section [Customize the firmware to your hardware and your needs] above and follow the instructions remembering that you can simply use the Upload button in the Arduino IDE to upload firmware using the Arduino bootloader:
|
||||
- From the Arduino environment, you can use Upload button which will compile and upload to the module: Sketch->Upload (Ctrl+U)
|
||||
|
||||
To change the fuses you will need to use an external programmer (like USBasp mentioned above) and a flash tool that fits over the MCU and connects to the required pins. Follow the same instructions to set the fuses in the section above.
|
||||
|
||||
If building the board from scratch was your chosen strategy we suspect that you would already know how to do this. If not, Google is your friend, try something like “how to flash fuses on Arduino pro-mini”.
|
||||
|
||||
You may also find a Atmel socket flash tool like this useful
|
||||
|
||||
[<img src="http://www.hobbyking.com/hobbyking/store/catalog/27195.jpg" />](http://www.hobbyking.com/hobbyking/store/__27195__Atmel_Atmega_Socket_Firmware_Flashing_Tool.html)
|
||||
|
||||
|
||||
It connects to the USBASP programmer and connects directly to the pins on the microcontroller and it will allow you to program the Pro-Mini like the 4-in-1 boards above, without using the bootloader.
|
150
docs/Compiling_STM32.md
Normal file
@ -0,0 +1,150 @@
|
||||
# Compliling and Programming (STM32)
|
||||
|
||||
**If you are Compling for the Arduino ATmega328p version of the Multiprotocol Module please go to the dedicated [Compiling and Programming ATmega328](Compiling.md) page.**
|
||||
|
||||
Multiprotocol source can be compiled using the Arduino IDE using STM32 Core (Maple) and Arduino ARM-Cortex-M3 libraries.
|
||||
|
||||
###Install the Arduino IDE and the Multiprotocol project
|
||||
1. Download the Arduino IDE. The currently supported Arduino version is 1.6.5. available for [Windows]( https://www.arduino.cc/download_handler.php?f=/arduino-1.6.5-windows.exe) and [Mac OSX](http://arduino.cc/download_handler.php?f=/arduino-1.6.5-macosx.zip)
|
||||
1. Download the [STM32 Core](https://github.com/rogerclarkmelbourne/Arduino_STM32/archive/master.zip) and copy the Arduino_STM32 folder to:
|
||||
- OSX: ```Arduino.app/Contents/Java/hardware``` (you can open Arduino.app by Ctl Clicking on Arduino.app and selecting "Show Package Contents")
|
||||
- Windows: ```C:\Program Files (x86)\Arduino\hardware```
|
||||
1. Download the zip file with the Multiprotocol module source code from [here](https://github.com/midelic/DIY-Multiprotocol-TX-Module/archive/multi-STM32.zip)
|
||||
1. Unzip and copy the source code folder ```Multiprotocol``` to a folder of your choosing
|
||||
1. Click on the ```Multiprotocol.ino file``` in the ```Multiprotocol``` folder and the Arduino environment should appear and the Multiprotocol project will be loaded.
|
||||
|
||||
###Prepare the Arduino IDE:
|
||||
|
||||
1. In order to compile successfully you need also to modify a maple library file. In ```....\hardware\Arduino_STM32\STM32F1\cores\maple\libmaple\usart_f1.c``` comment out the 2 functions as shown below. This is required to have low-level access to the USART interrupt.
|
||||
|
||||
> ```//void __irq_usart2(void) { usart_irq(&usart2_rb, USART2_BASE); } ```
|
||||
|
||||
> ```//void __irq_usart3(void) { usart_irq(&usart3_rb, USART3_BASE); } ```
|
||||
1. Run the IDE, and on the **Tools** menu, select **Board** and then **Boards manager**. Click on the Arduino DUE (32 Bits ARM-Cortex M3) from the list of available boards. You must do this step, it installs the arm-none-eabi-g++ toolchain!
|
||||
1. Close and reopen the Arduino IDE and load the Multiprotocol project.
|
||||
1. Click on the **Verify** button to test compile the before you make any changes. If there are errors check the process above and be sure to have the right version of the Arduino IDE.
|
||||
|
||||
|
||||
## Common process for OSX and Windows
|
||||
|
||||
###Customize the firmware to your hardware and your needs
|
||||
On all modules with STM32F103 microcontroller, the program flash memory on the microcontroller is large enough to accommodate all the protocols. You do not have to make choices on which protocols to upload. Also, it is likely that you used the Banggood 4-in-1 RF module and you will therefore have access to all the RF modules. However, you can follow these instructions to select only a subset protocols.
|
||||
|
||||
If you plan to use the PPM mode then you should follow the instructions to customize the protocol selection switch to protocol mapping.
|
||||
|
||||
Before customizing your firmware it would be good to review the protocol on the [Protocol Details](Protocol_Details.md) page and to identify the protocols you would like to support on your module.
|
||||
|
||||
At the same time make a note of RF modules required by your protocols. For example, if you do not wish to use the FlySky or the Husan protocols then you do not need to compile support the the A7105 RF Module into your firmware. Similarly, if you have no need to bind with ASSAN RC receivers then you do not need to compile the ASSAN protocol into your firmware.
|
||||
|
||||
If you plan to use the PPM communication interface with your transmitter, then you need to perform protocol selection with the 16 position switch on your module. This will limit the available protocols you can usefully access in PPM mode on your module to 15 (this limitation does not apply to Serial mode). You should make a list of your 15 chosen protocols, sub protocols and options like this:
|
||||
|
||||
Switch Position|Protocol|Sub-Protocol|Option|Notes
|
||||
---------------|--------|------------|------|-----
|
||||
1.|DSM|DSM2|2|6 channels @ 22ms
|
||||
2.|DSM|DSMX|6|6 channels @ 11ms
|
||||
....|...|...|...|...
|
||||
....|...|...|...|...
|
||||
15.|FRSKYX|CH_16| |FrSky X receiver 16 chan
|
||||
|
||||
|
||||
With the above information (required RF modules, selected protocols and 16 pos switch mapping) you are ready to customize your firmware.
|
||||
|
||||
All customization is done by editing the ```_Config.h ``` file in the Multiprotocol Arduino project.
|
||||
|
||||
In the Arduino IDE and click on the down arrow on the far right of the tab bar to show a list of project files (see the red circle on the screenshot below). Scroll down and select the _Config.h file.
|
||||
<img src="images/Arduino.png" width="600" height="400" />
|
||||
|
||||
It is unlikely that you would need to do this, but you can comment out any of the RF modules that you do not need by typing ```// ``` at the begining of the line that reads :
|
||||
```#define <RF Module name>_INSTALLED ``` . The following line shows the CC2500 module removed
|
||||
|
||||
> ```#define A7105_INSTALLED ```
|
||||
|
||||
> ```#define CYRF6936_INSTALLED ```
|
||||
|
||||
> **```//#define CC2500_INSTALLED ```**
|
||||
|
||||
> ```#define NFR24L01_INSTALLED ```
|
||||
|
||||
Again it is unlikely that you would want to do this, but you can scroll down to the available protocols and comment out all the protocols you will not require. The following example shows the DEVO protocol commented out.
|
||||
|
||||
> **```#ifdef CYRF6936_INSTALLED ```
|
||||
|
||||
> **``` // #define DEVO_CYRF6936_INO ```**
|
||||
|
||||
> ``` #define DSM_CYRF6936_INO ```
|
||||
|
||||
> ``` #define J6PRO_CYRF6936_INO ```
|
||||
|
||||
> ``` #endif ```**
|
||||
|
||||
Look for the line containing ```#define INVERT_TELEMETRY``` and make sure that it is uncommented:
|
||||
> ```#define INVERT_TELEMETRY ```
|
||||
|
||||
Scroll down to the bottom of the file and list your switch mapping to your desired **protocol/sub-protocol/options**. You typically only need to change the three relevant columns. On models that require a rebind on every start-up (like Syma quads) you can change the **```NO_AUTOBIND ```** to **```AUTOBIND ```**.
|
||||
|
||||
Finally, if you have not already done so, specify the correct board for the compiler. Under **Tools** -> **Board:** select the **Generic STM32F103C series** board. You can now compile the firmware by clicking on the check mark (Tooltip: Verify) on the menu bar. If everything goes according to plan you should see something like the following line in the lower pane of the window:
|
||||
|
||||
> Sketch uses 32,464 bytes (99%) of program storage space. Maximum is 32,768 bytes.
|
||||
> Global variables use 1,219 bytes (59%) of dynamic memory, leaving 829 bytes for local variables. Maximum is 2,048 bytes.
|
||||
|
||||
If you get an error carefully read the error to see the approximate line number where the error occured and correct it.
|
||||
|
||||
###Preparing for STM32 microcontroller for firmware flashing
|
||||
|
||||
There are two option for flashing the firmware. The first (and strongly recommended) is flashing it while it is plugged into and powered by the transmitter. The second is flashing it out of the transmitter (the power is supplied by the FTDI cable). The second option is very risky because if the 3.3V bridge jumper is not removed after flashing it will fry your RF module - **you have been warned**.
|
||||
|
||||
####Option 1: Flashing with Tx power
|
||||
|
||||
1. Put the module in the Tx
|
||||
1. Place a jumper over the BOOT0 pins
|
||||
1. Connect your 3.3V/5V FTDI cable (USB - TTL serial) to Multiprotocol serial port (RX,TX,GND,5V).The multimodule RX pin connected to FTDI TX pin and multi TX pin connected to FTDI RX pin.Connect only TX and RX pins(2 pins),the power will be supplied by TX.
|
||||
1. In arduino IDE under the **Tools** -> **Board:** check that you have selected the **Generic STM32F103C series** board
|
||||
1. Under **Tools** -> **Upload Method:** select **Serial**
|
||||
1. Click "Upload" and the sketch will be uploaded normally.This is valid for all arduino versions.
|
||||
1. Once the firmware has uploaded, remove the BOOT0 jumper.
|
||||
|
||||
|
||||
####Option 2: Flashing without Tx power
|
||||
|
||||
The key difference of this method is that the 3.3V FTDI cable must also provide power to the 5V circuitry during the flashing process. To do this, a jumper must be enabled connecting the 3.3V VCC to the 5V line.
|
||||
|
||||
**If the module is powered through the transmitter and this jumper is enabled, then it will feed 5V throughout the 3.3V circuit and this will fry your RF modules.**
|
||||
|
||||
1. Set BOOT0 jumper
|
||||
1. Set the 3.3V jumper.This step only for 3.3V USB-serial!!!.Skip this step if using 5V USB-serial.
|
||||
1. Connect your 3.3V FTDI cable (USB - TTL serial) to Multiprotocol serial port (RX,TX,GND,5V).If set 3.3V jumper ,3.3V supply from USB-serial goes to 5V pin.
|
||||
1. In arduino IDE under the **Tools** -> **Board:** check that you have selected the **Generic STM32F103C series** board
|
||||
1. Under **Tools** -> **Upload Method:** select **Serial**.
|
||||
1. Click "Upload" and the sketch will be uploaded normally.
|
||||
1. Once the firmware has uploaded:
|
||||
- Remove the 3.3V jumper!!!!
|
||||
- Remove the BOOT0 jumper
|
||||
- Check that you removed the 3.3V jumper
|
||||
|
||||
|
||||
###Flashing binary file:
|
||||
If you want to flash a pre-compiled binary file (like the Release .bin files) you need specialized software and the FTDI cable.
|
||||
1. Set BOOT0 jumper
|
||||
1. Connect your 3.3V FTDI cable (USB - TTL serial) to Multiprotocol serial port (RX,TX,GND,5V)
|
||||
1. The other steps regarding power supply the same as previous recommandation regarding jumpers.
|
||||
For uploading binaries(.bin files) there is a specialized software you need to install on your computer.
|
||||
|
||||
#### Windows:
|
||||
Download the ST Flash Loader Demonstrator from here: http://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-programmers/flasher-stm32.html
|
||||
|
||||
Run the ST Flash Loader program. There are many tutorials on the web on how to use this program.For example
|
||||
|
||||
[here](http://www.scienceprog.com/flashing-programs-to-stm32-embedded-bootloader)
|
||||
|
||||
#### OSX:
|
||||
To be checked.
|
||||
|
||||
###Report issues for the STM32 board
|
||||
You can report your problem using the [GitHub issue](https://github.com/midelic/DIY-Multiprotocol-TX-Module/issues) system or go to the [Main thread on RCGROUPS](http://www.rcgroups.com/forums/showthread.php?t=2165676) to ask your question.
|
||||
Please provide the following information:
|
||||
- Multiprotocol code version
|
||||
- STM32 version
|
||||
- TX type
|
||||
- Using PPM or Serial, if using er9x or ersky9x the version in use
|
||||
- Different led status (multimodule and model)
|
||||
- Explanation of the behavior and reproduction steps
|
BIN
docs/DIY Multiprotocol Module Overview.png
Normal file
After Width: | Height: | Size: 87 KiB |
28
docs/Documentation_To_Do_List.md
Normal file
@ -0,0 +1,28 @@
|
||||
#Documentation ToDos
|
||||
1. Documentation on all the FlySky boards: (MikeB?)
|
||||
- SKY board erSky9x
|
||||
- AR9X board erSky9x
|
||||
- 9Xtreme board erSky9x
|
||||
- AR9X UNI board
|
||||
1. Add to the troubleshooting page
|
||||
1. Document the OrangeRx Transmitter module (Mikeb?)
|
||||
1. enabling Serial on the DIY PCB page
|
||||
1. lots of pictures mentioned between the {} markers
|
||||
2. Add how to wire the antenna switcher in the "solder your own board and use 4-in-1 Rf module (add pictures of the wires from the ATmega pins to PE1 and PE2)
|
||||
3. Must this be added to the (Compiling for Taranis)Also, if you are using a Taranis, then you need to invert the telemetry as shown:
|
||||
Code:
|
||||
//Uncomment to invert the polarity of the telemetry serial signal.
|
||||
//For ER9X and ERSKY9X it must be commented. For OpenTX it must be uncommented.
|
||||
#define INVERT_TELEMETRY1
|
||||
1. ~~restructure the transmitter setup documentation~~
|
||||
- ~~PPM setup all on one page~~
|
||||
- ~~Serial setup by Transmitter~~
|
||||
|
||||
1. PPM Telemetry: added different serial speeds based on protocol for none inverted telemetry:
|
||||
FrSkyD (Incl Hubsan): 9600bps 8n1
|
||||
FrSkyX: 57600bps 8n1
|
||||
DSM: 125000bps 8n1
|
||||
I've done this if people wants to connect something (arduino, bluetooth,...) behind the module to display telemetry when used in PPM mode. It's using the default speed of the original transmitter.
|
||||
This is not something supported by er9x or ersky9x which are meant to be used in serial mode.
|
||||
1. Someone to add the Build the board from scratch if it is still relevant
|
||||
|
19
docs/Hardware.md
Normal file
@ -0,0 +1,19 @@
|
||||
# Hardware Options
|
||||
|
||||
The choice of hardware is the single biggest choice you will make. Due to the growing popularity of this project the number of hardware choices is growing almost monthly.
|
||||
|
||||
There are currently four common hardware options. They are:
|
||||
|
||||
1. A ready-made DIY Mulitprotocol module from Banggood.com (see [here](http://www.banggood.com/2_4G-CC2500-A7105-Flysky-Frsky-Devo-DSM2-Multiprotocol-TX-Module-With-Antenna-p-1048377.html)) that integrates the microprocessor with all four supported RF modules and a hardware antenna switcher.
|
||||
[](Module_BG_4-in-1.md)
|
||||
1. A host PCB for the DIY Multiprotocol module onto which the MCU and the desired RF modules can be soldered
|
||||
[](Module_Build_yourself_PCB.md)
|
||||
1. Orange DSM Transmitter transmitter module that natively supports the CYRF6936 RF module. This module can be improved with Mulitprotocol firmware.
|
||||
[](Module_OrangeRx.md)
|
||||
1. A module built from scratch using perfboard, an Arduino Pro-Mini and the desired RF modules.
|
||||
Unless you are handy with a soldering iron and you have access to electronic test equipment (like an oscilloscope) you should consider only Option 1. For a price of about $44 you can get everything you need, neatly assembled
|
||||
|
||||
[ ](Module_Build_From_Scratch.md)
|
||||
|
||||
Click on any of the images above to understand more about each option.
|
||||
|
19
docs/Models.md
Normal file
@ -0,0 +1,19 @@
|
||||
#Model Setup
|
||||
This is the page to document model or receiver specific setup instructions.
|
||||
The complete list of models the protocols they use are documented [here](https://docs.google.com/spreadsheets/d/1nBHzT3VWF6ShAhOqRB5y0Bcc7aXFuRFFlQkHn1RIM84/edit#gid=0)
|
||||
#Syma X5C
|
||||
<img src="http://img2.cheapdrone.co.uk/images/upload/2014/12/X5C%203/SKU115108-7.jpg" Width="200" Height="200" />
|
||||
##Binding
|
||||
There are no special binding instructions. The model powers up in Autobind mode and expects the bind sequence from the transmitter within the first 4-5 seconds.
|
||||
##Tx Setup
|
||||
{How to setup the transmitter switches for rates, flip, picture and video}
|
||||
|
||||
#Inductrix (Horizon Hobby)
|
||||
|
||||
<img src="https://s7d5.scene7.com/is/image/horizonhobby/BLH8700_a0" Width="200" Height="200" />
|
||||
|
||||
##Binding
|
||||
{Enter bind instructions here - Which DSM mode works best?}
|
||||
|
||||
##Tx Setup
|
||||
{How to setup the transmitter optimally for leveling and acro mode}
|
47
docs/Module_BG_4-in-1.md
Normal file
@ -0,0 +1,47 @@
|
||||
|
||||
#4-in-1 Banggood module
|
||||
Currently the form factor of this module is designed for the JR-style module bay. Many of the popular RC transmitters use the JR-style module bay: FrSky Taranis, FlySky Th9x, Turnigy 9X/R/Pro {other transmitters that come to mind?}
|
||||
##What you need
|
||||
1. The ready-made module is available from Banggood.com [here](http://www.banggood.com/2_4G-CC2500-A7105-Flysky-Frsky-Devo-DSM2-Multiprotocol-TX-Module-With-Antenna-p-1048377.html)
|
||||
<img src="images/4-in-1_Module_BG.jpeg" width="200" height="200" />
|
||||
1. A module case that fits your receiver like the one [here](https://www.xtremepowersystems.net/proddetail.php?prod=XPS-J1CASE)
|
||||
<img src="https://www.xtremepowersystems.net/prodimages/j1case.jpg" width="200" height="180" />
|
||||
or you can 3D print your own from a selection on Thingiverse (example [here](http://www.thingiverse.com/thing:1661833)).
|
||||
<img src="http://thingiverse-production-new.s3.amazonaws.com/renders/0a/a8/2e/9b/1f/fa4e1c11282f5ef9cbf555bb84d3bd61_preview_featured.jpg" width="200" height="200" />
|
||||
1. 3x2 header pins (to solder onto the board for programming)
|
||||
1. AVR ISP programmer like the popular USBASP programming dongle that is 3.3V safe - available from many sellers on [ebay.](http://www.ebay.com/sch/i.html?_odkw=usbasp+progammer&_osacat=0&_from=R40&_trksid=p2045573.m570.l1313.TR3.TRC2.A0.H0.Xusbasp+progammer+3.3V.TRS1&_nkw=usbasp+progammer+3.3V&_sacat=0) There are reports that some of the cheap programmers are not safe to use with 3.3V units (like this unit). Look for USBAsp programmers with the “LC Technologies” label. {Pascal to confirm these reports are true} Also, you will need a 10-pin to 6-pin connector to connect the USBASP to the board.
|
||||
|
||||
|
||||
##Build instructions
|
||||
The assembly process is trivial but it does depend on:
|
||||
- The communication interface between your transmitter and the module, and
|
||||
- The version of the module you have
|
||||
|
||||
###Common steps
|
||||
|
||||
1. Solder the 3x2 header pins onto the module as shown below {insert picture of module with pins}. These header pins are required to program the microcontroller.
|
||||
1. Fit the module into the module case. This may require some careful filing or sanding of the module to ensure a nice fit.
|
||||
|
||||
###PPM interface
|
||||
If you are only planning on using the PPM interface with transmitter you are ready to program the module as described in Compiling and Programming the module.
|
||||
|
||||
###Enabling Serial interface
|
||||
If you have a transmitter that can support serial communication with the board then you need to wire up the board appropriately. There are two versions of the module and the steps are slightly different.
|
||||
|
||||
Check which module you have and based on the pictures below. If you purchased the module after June 2016 then it is likely that you have V2 module.
|
||||
|
||||
#### **Version 2 (V2) module**
|
||||
|
||||
Solder two bridges over the pads shown in the picture below.
|
||||
|
||||
<img src="images/4-in-1_Module_BG_SerialJumpers.jpeg" width="300" height="340" />
|
||||
<img src="images/V2_Serial_Enable.jpeg" width="340" height="340" />
|
||||
|
||||
You are now ready to go over to [Compiling and Programming](Compiling.md).
|
||||
|
||||
#### **Version 1 (V1) module**
|
||||
|
||||
Solder bridges and resistors as illustrated in the picture below.
|
||||
<img src="images/V1_Serial_Enable.jpeg" width="500" height="340" />
|
||||
|
||||
You are now ready to go over to [Compiling and Programming](Compiling.md).
|
17
docs/Module_Build_From_Scratch.md
Normal file
@ -0,0 +1,17 @@
|
||||
#Build from stratch
|
||||
|
||||
If you can help to fully document this page, or just add additional detail please let us know on the rcgroups [forum](http://www.rcgroups.com/forums/showthread.php?t=2165676).
|
||||
|
||||
## Bill of materials
|
||||
If this is the option you are following, then you must have a pretty good idea of what you are doing. Check the BOM for the DIY PCB version of the hardware as a starting point. You can find the link [here](Module_Build_yourself_PCB.md).
|
||||
|
||||
The Arduino Pro-Mini is available many places online. Check Sparkfun (the original developers of the Pro-Mini) page [here](https://www.sparkfun.com/products/11113)
|
||||
|
||||
You will require a second Arduino or a FTDI (USB to TTL serial) cable to program the Pro-Mini. Like the one [here](https://www.sparkfun.com/products/9717). **Make sure you get only a 3.3V FTDI cable - or you will fry your 3.3V RF modules when you connect it up.**
|
||||
|
||||
##Reference Schematic <a name="Schematic"></a>
|
||||
Here is the schematic you can use to troubleshoot the module
|
||||
<img src="images/DIY_Mulitprotocol_Module_Schematic.jpeg" width="1000" height="500" />
|
||||
|
||||
##Compiling and programming
|
||||
Follow the instruction on the [Compiling and programming page](Compiling.md)
|
91
docs/Module_Build_yourself_PCB.md
Normal file
@ -0,0 +1,91 @@
|
||||
|
||||
#Build your own by soldering a PCB
|
||||
Currently the form factor of this module is designed for the JR-style module bay. Many of the popular RC transmitters use the JR-style module bay: FrSky Taranis, FlySky Th9x, Turnigy 9X/R/Pro {other transmitters that come to mind?}
|
||||
##What you need
|
||||
First you must choose the PCB onto which to solder all the components. There are two PCB options:
|
||||
* ATmega (8-bit) powered PCB V2.3d supporting individual RF modules
|
||||
* STM32 (32-bit) powered PCB supporting the 4-in-1 RF module
|
||||
|
||||
The **ATmega-based board** has been designed to accept individual RF modules. This way you can select just the module or modules you want. The downside is that each module requires its own antenna. It can become cumbersome with 4 antennas protruding from the module. It is possible to soder the 4-in-1 module to the PCB using thin insulated wire. This 4-in-1 module requires only one antenna. Finally, the Atmega board has a 32k flash memory. This is big enough to accommodate more than 15 protocols, but it cannot accommodate all the available protocols.
|
||||
|
||||
<img src="images/MPTM_with_RF_modules.jpeg" width="150" height="120" />
|
||||
|
||||
The **STM32-based** board has been designed to accept the 4-in-1 RF module with the antenna switcher (shown below). This means only one antenna. The STM32F103 processesor also has a much larger flash memory.
|
||||
|
||||
<img src="images/Board_PCB_STM32.jpeg" width="100" height="125" /> <img src="images/Multi_4-in-1_RF_module.jpg" width="100" height="125" />
|
||||
|
||||
###ATmega board V2.3d
|
||||
1. ATmega (8-bit) powered PCB V2.3d available from OSHPark [here](https://oshpark.com/shared_projects/Ztus1ah8).
|
||||
2. Individual RF modules The modules are available here:
|
||||
- [CC2500](http://www.banggood.com/2_4G-500K-CC2500-Long-Range-Wireless-Transceiver-Module-p-1075492.html) for FrSkyV, FrSkyD, FrSkyX and SFHSS
|
||||
- CYRF6936 {Can someone please give me a source} for DSM, DEVO, J6Pro
|
||||
- [A7105](http://www.banggood.com/A7105-Wireless-RF-2_4GHz-Transceiver-Module-3_3V-Power-Supply-Module-p-909404.html) for Flysky, Hubsan
|
||||
- [NRF24L01](http://www.banggood.com/2_4G-NRF24L01-PA-LNA-Wireless-Module-16+32mm-Without-Antenna-p-922601.html?utm_source=tradetracker&utm_medium=tradetracker_SE&utm_campaign=tradetracker&utm_content=227736) for Hisky, V2x2, CX-10, SYMAX and plenty other protocols
|
||||
- The 4-in-1 RF module (available [here](http://www.banggood.com/DIY-2_4G-CC2500-NRF24L01-A7105-CYRF6936-Multi-RF-4-IN-1-Wireless-Module-p-1046308.html)) can also be connected with solder wires. To enable the antenna switcher the PE1 and PE2 pads must be soldered to ATmega pins, check the [schematic](#V23D_Schematic)
|
||||
1. Electronics component BOM is downloadable [here](http://www.rcgroups.com/forums/showatt.php?attachmentid=7565057&d=1423770640). This BOM is inclusive, you many not need all the parts depending on your needs.
|
||||
|
||||
The schematic for the board is [here](#V23D_Schematic). Please note that is is the general schematic - there will be some minor differences (like solder jumpers) between this and the board.
|
||||
|
||||
###STM32 powered PCB
|
||||
1. STM32 (32-bit) powered PCB supporting the 4-in-1 RF module available from OSHPark [here](https://oshpark.com/shared_projects/toBXcpNK).
|
||||
2. The 4-in-1 RF module is available [here](http://www.banggood.com/DIY-2_4G-CC2500-NRF24L01-A7105-CYRF6936-Multi-RF-4-IN-1-Wireless-Module-p-1046308.html)
|
||||
1. The BOM for this board is available [here](https://github.com/midelic/DIY-Multiprotocol-TX-Module/blob/multi-STM32/Multiprotocol_STM32.txt). The github project page for the STM32 module is [here](https://github.com/midelic/DIY-Multiprotocol-TX-Module).
|
||||
|
||||
The schematic for the board is [here](#STM32_Schematic)
|
||||
|
||||
###Common parts
|
||||
1. A module case that fits your receiver like the one [here](https://www.xtremepowersystems.net/proddetail.php?prod=XPS-J1CASE)
|
||||
<img src="https://www.xtremepowersystems.net/prodimages/j1case.jpg" width="200" height="180" />
|
||||
or you can 3D print your own from a selection on Thingiverse (example [here](http://www.thingiverse.com/thing:1661833) or [here](http://www.thingiverse.com/thing:1691786)).
|
||||
<img src="http://thingiverse-production-new.s3.amazonaws.com/renders/0a/a8/2e/9b/1f/fa4e1c11282f5ef9cbf555bb84d3bd61_preview_featured.jpg" width="200" height="200" />
|
||||
1. A 2.4GHz antenna and pigtail
|
||||
1. AVR ISP programmer like the popular USBASP programming dongle that is 3.3V safe - available from many sellers on [ebay.](http://www.ebay.com/sch/i.html?_odkw=usbasp+progammer&_osacat=0&_from=R40&_trksid=p2045573.m570.l1313.TR3.TRC2.A0.H0.Xusbasp+progammer+3.3V.TRS1&_nkw=usbasp+progammer+3.3V&_sacat=0) There are reports that some of the cheap programmers are not safe to use with 3.3V units (like this unit). Look for USBAsp programmers with the “LC Technologies” label. {Pascal to confirm these reports are true} Also, you will need a 10-pin to 6-pin connector to connect the USBASP to the board.
|
||||
|
||||
|
||||
##Build instructions
|
||||
If you got this far you already know what you are doing!!
|
||||
|
||||
###Common steps
|
||||
|
||||
1. Solder all the parts according to the BOM part numbering and the images for your board (see OSHPARK for the images)
|
||||
1. Fit the module into the module case. This may require some careful filing or sanding of the module to ensure a nice fit.
|
||||
|
||||
###PPM interface
|
||||
If you are only planning on using the PPM interface with transmitter you are ready to program the module as described in Compiling and Programming the module.
|
||||
|
||||
###Enabling Serial interface
|
||||
If you have a transmitter that can support serial communication with the board then you need to solder some jumpers.
|
||||
|
||||
|
||||
#### **ATmega V2.3d board**
|
||||
|
||||
There are four solder type jumpers on the bottom side of the board near the lower left corner when the bottom of the board is facing towards you. The silkscreen shows which jumper is which. These four jumpers enable the board to be configured in several ways as explaned below.
|
||||
|
||||
(J-1) Use (PPM V/V) if the incoming PPM signal is at a higher voltage level, leave open if ~~5V.
|
||||
|
||||
(J-2) Use (Jumper 2) to connect the incomming PPM signal to the RX pin on the processor
|
||||
|
||||
(J-3) Short (TELEM) only if you have done a telemetry mod to your radio, leave open if not needed. When connected, pin 2 of the two pin header (P3) is also connected.
|
||||
|
||||
(J-4) Use (MOD) only to connect the transmitter pin 2 to pin 1 of the two pin header (P3).
|
||||
|
||||
**It is most likely J-2 will be the only one needing to be shorted for the serial method of sending model protocols.**
|
||||
|
||||
You are now ready to go over to [Compiling and Programming](Compiling.md).
|
||||
|
||||
#### **STM32 board**
|
||||
|
||||
Solder bridges and resistors as illustrated in the picture below. {need to get info from midelic}
|
||||
<img src="" width="500" height="340" />
|
||||
|
||||
You are now ready to go over to [Compiling and Programming STM32](Compiling_STM32.md).
|
||||
|
||||
#Reference Schematic <a name="Schematic"></a>
|
||||
Here is the schematic you can use to troubleshoot the module
|
||||
## <a name="V23D_Schematic"></a> PCB V2.3d Schematic
|
||||
<img src="images/DIY_Mulitprotocol_Module_Schematic.jpeg" width="1000" height="500" />
|
||||
## <a name="STM32_Schematic"></a> PCB STM32 Schematic
|
||||
<img src="http://static.rcgroups.net/forums/attachments/4/0/8/5/8/3/a9220887-113-multi-STM32.png" width="1000" height="500" />
|
||||
|
||||
|
||||
|
3
docs/Module_OrangeRx.md
Normal file
@ -0,0 +1,3 @@
|
||||
#OrangeRx Transmitter module
|
||||
{need someone to do this if it is important}
|
||||
|
56
docs/PPM_Setup.md
Normal file
@ -0,0 +1,56 @@
|
||||
#PPM Setup
|
||||
|
||||
The Multiprotocol Module is compatible with any transmitter that is able to generate a PPM (Pulse Postion Modulation) output. This includes all transmitters with a module bay or a trainer port. It supports up to 16 channels from a PPM frame in the normal or inverted format (sometimes called positive or negative format in some transmitters).
|
||||
If you want the best performance you can set the number of channels and framerate corresponding to the number of channels of the specific receiver/model.
|
||||
|
||||
##PPM Connections
|
||||
If you do not have a module bay, there are only three wires you need to connect to get PPM to work. (The pins are numbered from top to bottom)
|
||||
- PPM on pin 1
|
||||
- vbat on pin 3
|
||||
- ground on pin 4
|
||||
Note: vbat should be between 6V and 13V when using the 4-in-1 and 2.3 PCB boards. If you built a module from scratch it depends on the voltage regulator you chose.
|
||||
|
||||
|
||||
##Enabling PPM mode in your transmitter
|
||||
|
||||
1. Enable the default Tx mode to be AETR. If you do not want to change the default channel order on your Tx you must remember to change the channel order for each new model using the module to AETR under the Model Mixer menu.
|
||||
1. The default PPM settings is 8 channels with a frame period of 22.5 ms (sometimes called the frame rate). If you want to optimize performance you should change the channels to the actual number of channels required by your model. The corresponding frame period should be set to (number of channels + 1) * 2.5 ms. For example:
|
||||
- A 4 channel model the frame period is (4 + 1)*2.5 = 12.5 ms.
|
||||
- A 6 channel model the frame period is (6 + 1)*2.5 = 17.5ms.
|
||||
|
||||
## Protocol selection in PPM mode
|
||||
|
||||
To select the protocol simply switch off the transmitter and rotate the protocol selection switch on the module to the desired position.
|
||||
|
||||
*Note that the dial selection must be done before the module receives power - this is not necessarily the same time that the transmitter is powered up. The transmitter often only provides power to the module once it has passed switch checks and throttle position checks. *
|
||||
|
||||
The default mapping of protocols to switch positions can be viewed on the Protocol Details page found [here](Protocol_Details.md#DefaultMapping)
|
||||
|
||||
The mapping of protocols to protocol selection switch positions can be changed in configuration settings as described on the [Compiling and Programming page](Compiling.md).
|
||||
|
||||
##Binding in PPM mode
|
||||
|
||||
In PPM mode follow the standard transmitter - receiver binding process:
|
||||
1. Switch off the transmitter
|
||||
1. Switch on the receiving device in bind mode (if it is not already autobind). Check the documentation for your device.
|
||||
1. Press and hold the bind button on the back of the module as you power up the transmitter. Hold the button down until the transmitter powers up the module. The red LED on the module should be flashing at about 5Hz - indicating bind mode.
|
||||
1. Watch the receiver for the completion of the bind process
|
||||
1. This is a model supporting autobind (binds every time it powers up) then you should be ready to go
|
||||
1. For traditional RC receivers with a bind memory - power down the receiver and the Tx and then power up the Tx and the Rx to confirm bind.
|
||||
|
||||
If you are having trouble binding to a consumer quad check the section below on [Getting your Bind Timing right](Bind_Timing.md). For more details on setting up specific receivers or models, check out the [Protocol Details page](Protocol_Details.md).
|
||||
|
||||
##Telemetry in PPM mode
|
||||
|
||||
Telemetry is available as a serial stream on the TX pin of the Atmega328p in the FrSky HUB format. The serial parameters are based on the protocol selected by the protocol selection dial.
|
||||
|
||||
Protocol|Serial Parameters
|
||||
--------|-----------------
|
||||
Hubsan|9600bps 8n1
|
||||
FrSkyD|9600bps 8n1
|
||||
FrSkyX|57,600bps 8n1
|
||||
DSM2/X|125,000bps 8n1
|
||||
|
||||
The serial stream is also available on pin 5 of the Module connector (pins numbered from top to bottom) on the [4-in-1 module]() and the [V2.3d modules]() provided the Tx jumper has been soldered. See the linked module documentation for what this means.
|
||||
|
||||
You can connect it to your TX if it is telemetry enabled or use a bluetooth adapter (HC05/HC06) along with an app on your phone/tablet [(app example)](https://play.google.com/store/apps/details?id=biz.onomato.frskydash&hl=fr) to display telemetry information and setup alerts.
|
447
docs/Protocol_Details.md
Normal file
@ -0,0 +1,447 @@
|
||||
#Protocols details
|
||||
Here are detailed descriptions of every supported protocols (sorted by RF modules) as well as the available options for each protocol.
|
||||
|
||||
If you want to see a list of models that use these protocols see the [Models](Models.md) page.
|
||||
|
||||
## Default Mapping of Protocols <a name="DefaultMapping"></a>
|
||||
Here is the default mapping of protocols to the 16-position protocol selection switch on the module. You can customize these when you compile your own firmware as described in [Compiling and Programming.](Compiling.md)
|
||||
|
||||
**Note that the protocol must be selected before the unit is turned on.**
|
||||
|
||||
Dial|Protocol|Sub_protocol|RX Num|Power|Auto Bind|Option|RF Module
|
||||
----|--------|------------|------|-----|---------|------|---------
|
||||
0|Select serial||||||
|
||||
1|FLYSKY|Flysky|0|High|No|0|A7105
|
||||
2|HUBSAN|-|0|High|No|0|A7105
|
||||
3|FRSKYD|-|0|High|No|-41|CC2500
|
||||
4|HISKY|Hisky|0|High|No|0|NRF24L01
|
||||
5|V2X2|-|0|High|No|0|NRF24L01
|
||||
6|DSM|DSM2|0|High|No|6|CYRF6936
|
||||
7|DEVO|-|0|High|No|0|CYRF6936
|
||||
8|YD717|YD717|0|High|No|0|NRF24L01
|
||||
9|KN|WLTOYS|0|High|No|0|NRF24L01
|
||||
10|SYMAX|SYMAX|0|High|No|0|NRF24L01
|
||||
11|SLT|-|0|High|No|0|NRF24L01
|
||||
12|CX10|BLUE|0|High|No|0|NRF24L01
|
||||
13|CG023|CG023|0|High|No|0|NRF24L01
|
||||
14|BAYANG|-|0|High|No|0|NRF24L01
|
||||
15|SYMAX|SYMAX5C|0|High|No|0|NRF24L01
|
||||
|
||||
## Useful notes and definitions
|
||||
- **Extended limits supported** - A command range of -125%..+125% will be transmitted. Otherwise the default is -100%..+100% only.
|
||||
- **Autobind protocol** - The transmitter will automatically initiate a bind sequence on power up. This is for models where the receiver expects to rebind every time it is powered up. In these protocols you do not need to press the bind button at power up to bind, it will be done automatically.
|
||||
- **Channel Order** - The channel order assumed in all the documentation is AETR and it is highly recommended that you keep it this way. You can change this in the compilation settings. However, please indicate your channel order in all questions and posts on the forum pages.
|
||||
|
||||
***
|
||||
#A7105 RF Module
|
||||
|
||||
##FLYSKY
|
||||
Extended limits supported
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8
|
||||
---|---|---|---|---|---|---|---
|
||||
A|E|T|R|CH5|CH6|CH7|CH8
|
||||
|
||||
Note that the RX ouput will be AETR.
|
||||
|
||||
###Sub_protocol V9X9
|
||||
CH5|CH6|CH7|CH8
|
||||
---|---|---|---
|
||||
FLIP|LIGHT|PICTURE|VIDEO
|
||||
|
||||
###Sub_protocol V6X6
|
||||
CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12
|
||||
---|---|---|---|---|---|---|---
|
||||
FLIP|LIGHT|PICTURE|VIDEO|HEADLESS|RTH|XCAL|YCAL
|
||||
|
||||
###Sub_protocol V912
|
||||
CH5|CH6
|
||||
---|---
|
||||
BTMBTN|TOPBTN
|
||||
|
||||
##HUBSAN
|
||||
Models: Hubsan H102D, H107/L/C/D and Hubsan H107P/C+/D+
|
||||
|
||||
Autobind protocol
|
||||
|
||||
Telemetry enabled for battery voltage and TX RSSI
|
||||
|
||||
Option=vTX frequency (H107D) 5645 - 5900 MHz
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9
|
||||
---|---|---|---|---|---|---|---|---
|
||||
A|E|T|R|FLIP|LIGHT|PICTURE|VIDEO|HEADLESS
|
||||
|
||||
***
|
||||
#CC2500 RF Module
|
||||
|
||||
##FRSKYV = FrSky 1 way
|
||||
Models: FrSky receivers V8R4, V8R7 and V8FR.
|
||||
|
||||
Extended limits supported
|
||||
|
||||
Option=fine frequency tuning. This value is different for each board. To determine the option value, find the two limits where the RX loses connection then set the option value to half way between them. If you have a 4in1 V2 board the value is around 40.
|
||||
|
||||
CH1|CH2|CH3|CH4
|
||||
---|---|---|---
|
||||
CH1|CH2|CH3|CH4
|
||||
|
||||
##FRSKYD
|
||||
Models: FrSky receivers D4R and D8R. DIY RX-F801 and RX-F802 receivers.
|
||||
|
||||
Extended limits supported
|
||||
|
||||
Telemetry enabled for A0, A1, RSSI, TSSI and Hub
|
||||
|
||||
Option=fine frequency tuning. This value is different for each board. To determine the option value, find the two limits where the RX loses connection then set the option value to half way between them. If you have a 4in1 V2 board the value is around 40.
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8
|
||||
---|---|---|---|---|---|---|---
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8
|
||||
|
||||
##FRSKYX
|
||||
Models: FrSky receivers X4R, X6R and X8R.
|
||||
|
||||
Extended limits supported
|
||||
|
||||
Telemetry enabled for A1 (RxBatt), A2, RSSI, TSSI and Hub
|
||||
|
||||
Option=fine frequency tuning. This value is different for each board. To determine the option value, find the two limits where the RX loses connection then set the option value to half way between them. If you have a 4in1 V2 board the value is around 40.
|
||||
|
||||
###Sub_protocol CH_16
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13|CH14|CH15|CH16
|
||||
---|---|---|---|---|---|---|---|---|----|----|----|----|----|----|----
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13|CH14|CH15|CH16
|
||||
|
||||
###Sub_protocol CH_8
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8
|
||||
---|---|---|---|---|---|---|---
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8
|
||||
|
||||
##SFHSS
|
||||
Models: Futaba RXs and XK models.
|
||||
|
||||
Option=fine frequency tuning. This value is different for each board. To determine the option value, find the two limits where the RX loses connection then set the option value to half way between them. If you have a 4in1 V2 board the value is around 40.
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8
|
||||
---|---|---|---|---|---|---|---
|
||||
A|E|T|R|CH5|CH6|CH7|CH8
|
||||
|
||||
***
|
||||
#CYRF6936 RF Module
|
||||
|
||||
##DEVO
|
||||
Extended limits supported
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8
|
||||
---|---|---|---|---|---|---|---
|
||||
A|E|T|R|CH5|CH6|CH7|CH8
|
||||
|
||||
Note that the RX ouput will be EATR.
|
||||
|
||||
Bind procedure using serial:
|
||||
- With the TX off, put the binding plug in and power on the RX (RX LED slow blink), then power it down and remove the binding plug. Receiver should now be in autobind mode.
|
||||
- Turn on the TX, set protocol = Devo with option=0, turn off the TX (TX is now in autobind mode).
|
||||
- Turn on RX (RX LED fast blink).
|
||||
- Turn on TX (RX LED solid, TX LED fast blink).
|
||||
- Wait for bind on the TX to complete (TX LED solid).
|
||||
- Make sure to set the RX_Num value for model match.
|
||||
- Change option to 1 to use the global ID.
|
||||
- Do not touch option/RX_Num anymore.
|
||||
|
||||
Bind procedure using PPM:
|
||||
- With the TX off, put the binding plug in and power on the RX (RX LED slow blink), then power it down and remove the binding plug. Receiver should now be in autobind mode.
|
||||
- Turn on RX (RX LED fast blink).
|
||||
- Turn the dial to the model number running protocol DEVO on the module.
|
||||
- Press the bind button and turn on the TX. TX is now in autobind mode.
|
||||
- Release bind button after 1 second: RX LED solid, TX LED fast blink.
|
||||
- Wait for bind on the TX to complete (TX LED solid).
|
||||
- Press the bind button for 1 second. TX/RX is now in fixed ID mode.
|
||||
- To verify that the TX is in fixed mode: power cycle the TX, the module LED should be solid ON (no blink).
|
||||
- Note: Autobind/fixed ID mode is linked to the dial number. Which means that you can have multiple dial numbers set to the same protocol DEVO with different RX_Num and have different bind modes at the same time. It enables PPM users to get model match under DEVO.
|
||||
|
||||
##DSM
|
||||
###Sub_protocol DSM2
|
||||
Extended limits supported
|
||||
|
||||
Telemetry enabled for TSSI and plugins
|
||||
|
||||
option=number of channels and frame rate:
|
||||
- 0 : 4 channels @22ms
|
||||
- 1 : 5 channels @22ms
|
||||
- 2 : 6 channels @22ms
|
||||
- 3 : 7 channels @22ms
|
||||
|
||||
- 4 : 4 channels @11ms
|
||||
- 5 : 5 channels @11ms
|
||||
- 6 : 6 channels @11ms
|
||||
- 7 : 7 channels @11ms
|
||||
|
||||
- 8 : 8 channels @22ms
|
||||
- 9 : 9 channels @22ms
|
||||
- 10 : 10 channels @22ms
|
||||
- 11 : 11 channels @22ms
|
||||
- 12 : 12 channels @22ms
|
||||
|
||||
Value 6 is usually giving the best results with most of the RX.
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12
|
||||
---|---|---|---|---|---|---|---|---|----|----|----
|
||||
A|E|T|R|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12
|
||||
|
||||
Note that the RX ouput will be TAER.
|
||||
|
||||
###Sub_protocol DSMX
|
||||
Same as above
|
||||
|
||||
##J6Pro
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12
|
||||
---|---|---|---|---|---|---|---|---|----|----|----
|
||||
A|E|T|R|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12
|
||||
|
||||
***
|
||||
#NRF24L01 RF Module
|
||||
|
||||
##ASSAN
|
||||
Extended limits supported
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10
|
||||
---|---|---|---|---|---|---|---|---|---
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10
|
||||
|
||||
The transmitter must be close to the receiver while binding.
|
||||
|
||||
##BAYANG
|
||||
Models: EAchine H8(C) mini, BayangToys X6/X7/X9, JJRC JJ850, Floureon H101 ...
|
||||
|
||||
Autobind protocol
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10
|
||||
---|---|---|---|---|---|---|---|---|----
|
||||
A|E|T|R|FLIP|RTH|PICTURE|VIDEO|HEADLESS|INVERTED
|
||||
|
||||
##CG023
|
||||
Models: EAchine CG023/CG031/3D X4
|
||||
|
||||
Autobind protocol
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9
|
||||
---|---|---|---|---|---|---|---|---
|
||||
A|E|T|R|FLIP|LIGHT|PICTURE|VIDEO|HEADLESS
|
||||
|
||||
###Sub_protocol YD829
|
||||
Models: Attop YD-822/YD-829/YD-829C ...
|
||||
|
||||
CH5|CH6|CH7|CH8|CH9
|
||||
---|---|---|---|---
|
||||
FLIP||PICTURE|VIDEO|HEADLESS
|
||||
|
||||
###Sub_protocol H8_3D
|
||||
Models: EAchine H8 mini 3D, JJRC H20/H22
|
||||
|
||||
CH5|CH6|CH7|CH8|CH9
|
||||
---|---|---|---|---
|
||||
FLIP|LIGTH|OPT1|OPT2|CAL
|
||||
|
||||
JJRC H20: OPT1=Headless, OPT2=RTH
|
||||
|
||||
JJRC H22: OPT1=RTH, OPT2=180/360° flip mode
|
||||
|
||||
H8 3D: OPT1=RTH then press a direction to enter headless mode (like stock TX), OPT2=switch 180/360° flip mode
|
||||
|
||||
CAL: calibrate accelerometers
|
||||
|
||||
##CX10
|
||||
Extended limits supported
|
||||
|
||||
Autobind protocol
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6
|
||||
---|---|---|---|---|---
|
||||
A|E|T|R|FLIP|RATE
|
||||
|
||||
Rate: -100%=rate 1, 0%=rate 2, +100%=rate 3
|
||||
|
||||
###Sub_protocol GREEN
|
||||
Models: Cheerson CX-10 green pcb
|
||||
|
||||
Same channels assignement as above.
|
||||
|
||||
###Sub_protocol BLUE
|
||||
Models: Cheerson CX-10 blue pcb & some newer red pcb, CX-10A, CX-10C, CX11, CX12, Floureon FX10, JJRC DHD D1
|
||||
|
||||
CH5|CH6|CH7|CH8
|
||||
---|---|---|---
|
||||
FLIP|RATE|PICTURE|VIDEO
|
||||
|
||||
Rate: -100%=rate 1, 0%=rate 2, +100%=rate 3 or headless for CX-10A
|
||||
|
||||
###Sub_protocol DM007
|
||||
|
||||
CH5|CH6|CH7|CH8|CH9
|
||||
---|---|---|---|---
|
||||
FLIP|MODE|PICTURE|VIDEO|HEADLESS
|
||||
|
||||
###Sub_protocol Q282 and Q242
|
||||
|
||||
CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12
|
||||
---|---|---|---|---|---|---|---
|
||||
FLIP|LED|PICTURE|VIDEO|HEADLESS|RTH|XCAL|YCAL
|
||||
|
||||
Model: JXD 509 is using Q282 with CH12=Start/Stop motors
|
||||
|
||||
###Sub_protocol JC3015_1
|
||||
|
||||
CH5|CH6|CH7|CH8
|
||||
---|---|---|---
|
||||
FLIP|MODE|PICTURE|VIDEO
|
||||
|
||||
###Sub_protocol JC3015_2
|
||||
|
||||
CH5|CH6|CH7|CH8
|
||||
---|---|---|---
|
||||
FLIP|MODE|LED|DFLIP
|
||||
|
||||
###Sub_protocol MK33041
|
||||
|
||||
CH5|CH6|CH7|CH8|CH9|CH10
|
||||
---|---|---|---|---|---
|
||||
FLIP|MODE|PICTURE|VIDEO|HEADLESS|RTH
|
||||
|
||||
##ESKY
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6
|
||||
---|---|---|---|---|---
|
||||
A|E|T|R|GYRO|PITCH
|
||||
|
||||
##FY326
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9
|
||||
---|---|---|---|---|---|---|---|---
|
||||
A|E|T|R|FLIP|RTH|HEADLESS|EXPERT|CALIBRATE
|
||||
|
||||
##FQ777
|
||||
Model: FQ777-124
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8
|
||||
---|---|---|---|---|---|---|---
|
||||
A|E|T|R|FLIP|RTH|HEADLESS|EXPERT
|
||||
|
||||
##HISKY
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8
|
||||
---|---|---|---|---|---|---|---
|
||||
A|E|T|R|GEAR|PITCH|GYRO|CH8
|
||||
|
||||
GYRO: -100%=6G, +100%=3G
|
||||
|
||||
###HK310
|
||||
Models: RX HK-3000, HK3100 and XY3000 (TX are HK-300, HK-310 and TL-3C)
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8
|
||||
---|---|---|---|---|---|---|---
|
||||
|||T|R|AUX|T_FSAFE|R_FSAFE|AUX_FSAFE
|
||||
|
||||
##KN
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11
|
||||
---|---|---|---|---|---|---|---|---|----|----
|
||||
A|E|T|R|DR|THOLD|IDLEUP|GYRO|Ttrim|Atrim|Etrim
|
||||
|
||||
Dual Rate (DR): +100%=full range, Throttle Hold (THOLD): +100%=hold, Idle Up (IDLEUP): +100%=3D, GYRO: -100%=6G, +100%=3G
|
||||
|
||||
###Sub_protocol WLTOYS
|
||||
###Sub_protocol FEILUN
|
||||
Same channels assignement as above.
|
||||
|
||||
##MJXQ
|
||||
Autobind protocol
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13
|
||||
---|---|---|---|---|---|---|---|---|---|---|---|---
|
||||
A|E|T|R|FLIP|LED|PICTURE|VIDEO|HEADLESS|RTH|AUTOFLIP|PAN|TILT
|
||||
|
||||
###Sub_protocol WLH08
|
||||
###Sub_protocol X600
|
||||
Only 3 TX IDs available, change RX_Num value 0..2 to cycle through them
|
||||
###Sub_protocol X800
|
||||
Only 3 TX IDs available, change RX_Num value 0..2 to cycle through them
|
||||
###Sub_protocol H26D
|
||||
###Sub_protocol E010
|
||||
Only 1 TX ID available
|
||||
|
||||
##MT99XX
|
||||
Autobind protocol
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9
|
||||
---|---|---|---|---|---|---|---|---
|
||||
A|E|T|R|FLIP|LED|PICTURE|VIDEO|HEADLESS
|
||||
|
||||
###Sub_protocol MT
|
||||
Models: MT99xx
|
||||
###Sub_protocol H7
|
||||
Models: Eachine H7, Cheerson CX023
|
||||
###Sub_protocol YZ
|
||||
Model: Yi Zhan i6S
|
||||
Only one model can be flown at the same time since the ID is hardcoded.
|
||||
###Sub_protocol LS
|
||||
Models: LS114, 124, 215
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9
|
||||
---|---|---|---|---|---|---|---|---
|
||||
A|E|T|R|FLIP|INVERT|PICTURE|VIDEO|HEADLESS
|
||||
|
||||
##Shenqi
|
||||
Autobind protocol
|
||||
|
||||
Model: Shenqiwei 1/20 Mini Motorcycle
|
||||
|
||||
CH1|CH2|CH3|CH4
|
||||
---|---|---|---
|
||||
| |T|R
|
||||
|
||||
Throttle +100%=full forward,0%=stop,-100%=full backward.
|
||||
|
||||
##SLT
|
||||
Autobind protocol
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6
|
||||
---|---|---|---|---|---
|
||||
A|E|T|R|GEAR|PITCH
|
||||
|
||||
##Symax
|
||||
Autobind protocol
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9
|
||||
---|---|---|---|---|---|---|---|---
|
||||
A|E|T|R|FLIP|RATES|PICTURE|VIDEO|HEADLESS
|
||||
|
||||
###Sub_protocol SYMAX
|
||||
Models: Syma X5C-1/X11/X11C/X12
|
||||
|
||||
###Sub_protocol SYMAX5C
|
||||
Model: Syma X5C (original) and X2
|
||||
|
||||
##V2X2
|
||||
Models: WLToys V202/252/272, JXD 385/388, JJRC H6C, Yizhan Tarantula X6 ...
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11
|
||||
---|---|---|---|---|---|---|---|---|----|----
|
||||
A|E|T|R|FLIP|LIGHT|PICTURE|VIDEO|HEADLESS|MAG_CAL_X|MAG_CAL_Y
|
||||
|
||||
PICTURE: also automatic Missile Launcher and Hoist in one direction
|
||||
|
||||
VIDEO: also Sprayer, Bubbler, Missile Launcher(1), and Hoist in the other dir
|
||||
|
||||
##YD717
|
||||
Autobind protocol
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9
|
||||
---|---|---|---|---|---|---|---|---
|
||||
A|E|T|R|FLIP|LIGHT|PICTURE|VIDEO|HEADLESS
|
||||
|
||||
###Sub_protocol YD717
|
||||
###Sub_protocol SKYWLKR
|
||||
###Sub_protocol SYMAX4
|
||||
###Sub_protocol XINXUN
|
||||
###Sub_protocol NIHUI
|
||||
Same channels assignement as above.
|
399
docs/README-old.md
Normal file
@ -0,0 +1,399 @@
|
||||
# Legacy Documentation
|
||||
|
||||
Multiprotocol is a 2.4GHz transmitter which enables any TX to control lot of different models available on the market.
|
||||
|
||||
The source code is partly based on the Deviation TX project, thanks to all the developpers for their great job on protocols.
|
||||
|
||||
[Forum link on RCGROUPS](http://www.rcgroups.com/forums/showthread.php?t=2165676) for additional information or requesting a new protocol integration.
|
||||
|
||||
 
|
||||
|
||||
**To download the latest compiled version (hex file), click on [Release](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/releases) on the top menu.**
|
||||
|
||||
##Contents
|
||||
|
||||
[Compatible TX](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module#compatible-tx)
|
||||
|
||||
[Protocols](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module#protocols)
|
||||
|
||||
[Hardware](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module#hardware)
|
||||
|
||||
[Compilation and programmation](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module#compilation-and-programmation)
|
||||
|
||||
[Troubleshooting](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module#troubleshooting)
|
||||
|
||||
##Compatible TX
|
||||
|
||||
###Using standard PPM output (trainer port)
|
||||
The multiprotocol TX module can be used on any TX with a trainer port.
|
||||
|
||||
Channels order is AETR by default but can be changed in the _Config.h.
|
||||
|
||||
The protocol selection is done via a dip switch, rotary dip switch or scsi ID selector.
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
You can access to up to 15 different protocols and associated settings.
|
||||
|
||||
Settings per selection are located in _Config.h:
|
||||
- Protocol and type: many main protocols have variants
|
||||
- RX Num: number your different RXs and make sure only one model will react to the commands
|
||||
- Power: High or low, enables to lower the power setting of your TX (indoor for example).
|
||||
- Option: -127..+127 allowing to set specific protocol options. Like for Hubsan to set the video frequency.
|
||||
- Autobind: Yes or No. At the model selection (or power applied to the TX) a bind sequence will be initiated
|
||||
|
||||
###Using a serial output
|
||||
The multiprotocol TX module takes full advantage of being used on a Turnigy 9X, 9XR, 9XR Pro, Taranis, 9Xtreme, AR9X, ... running [er9x](http://openrcforums.com/forum/viewtopic.php?f=5&t=4598) or [ersky9X](http://openrcforums.com/forum/viewtopic.php?f=7&t=4676). An OpenTX version for Taranis is available [here](http://plaisthos.de/opentx/).
|
||||
|
||||
This enables full integration using the radio GUI to setup models with all the available protocols options.
|
||||
|
||||

|
||||
|
||||
Options are:
|
||||
- Protocol and type: many main protocols have variants
|
||||
- RX Num: number your different RXs and make sure only one model will react to the commands
|
||||
- Power: High or low, enables to lower the power setting of your TX (indoor for example).
|
||||
- Option: -127..+127 allowing to set specific protocol options. Like for Hubsan to set the video frequency.
|
||||
- Bind: bind a RX/model
|
||||
- Autobind: Yes or No. At the model selection (or power applied to the TX) a bind sequence will be initiated
|
||||
- Range: test range by setting the transmission power to the lowest value
|
||||
|
||||
Notes:
|
||||
- Using this solution does not need any modification of the TX since it uses the TX module slot PPM pin for serial transfer.
|
||||
- There are 2 versions of serial protocol either 8 or 16 channels. 16 channels is the latest and only available version going forward. Make sure to use the right version based on your version of er9x/ersky9x.
|
||||
- Channels order is AETR by default but can be changed in _Config.h.
|
||||
|
||||
###Telemetry
|
||||
|
||||
There are 4 protocols supporting telemetry: Hubsan, DSM, FrSkyD and FrSkyX.
|
||||
|
||||
Hubsan displays the battery voltage and TX RSSI.
|
||||
|
||||
DSM displays TX RSSI and full telemetry.
|
||||
|
||||
FrSkyD displays full telemetry (A0, A1, RX RSSI, TX RSSI and Hub).
|
||||
|
||||
FrSkyX displays full telemetry (A1, A2, RX RSSI, TX RSSI and Hub).
|
||||
|
||||
### If used in PPM mode
|
||||
|
||||
Telemetry is available as a serial 9600 8 n 1 output on the TX pin of the Atmega328p using the FrSky hub format for Hubsan, FrSkyD, FrSkyX and DSM format for DSM2/X.
|
||||
|
||||
You can connect it to your TX if it is telemetry enabled or use a bluetooth adapter (HC05/HC06) along with an app on your phone/tablet ([app example](https://play.google.com/store/apps/details?id=biz.onomato.frskydash&hl=fr)) to display telemetry information and setup alerts.
|
||||
|
||||
### If used in Serial mode
|
||||
Telemetry is built in for er9x and ersky9x TXs.
|
||||
|
||||
To enable telemetry on a Turnigy 9X or 9XR you need to modify your TX following one of the Frsky mod like this [one](http://blog.oscarliang.net/turnigy-9x-advance-mod/).
|
||||
|
||||
Note: DSM telemetry is not available on er9x due to a lack of flash space.
|
||||
|
||||
Enabling telemetry on a 9XR PRO and may be other TXs does not require any hardware modifications. The additional required serial pin is already available on the TX back module pins.
|
||||
|
||||
Once the TX is telemetry enabled, it just needs to be configured on the model (see er9x/ersky9x documentation).
|
||||
|
||||
##Protocols
|
||||
|
||||
###TX ID
|
||||
The multiprotocol TX module is using a 32bits ID generated randomly at first power up. This global ID is used by nearly all protocols.
|
||||
There are little chances to get a duplicated ID.
|
||||
|
||||
For DSM2/X and Devo the CYRF6936 unique manufacturer ID is used.
|
||||
|
||||
It's possible to generate a new ID using bind button on the Hubsan protocol during power up.
|
||||
|
||||
###Bind
|
||||
To bind a model in PPM Mode press the physical bind button, apply power and then release.
|
||||
|
||||
In Serial Mode you have 2 options:
|
||||
- use the GUI, access the model protocol page and long press on Bind. This operation can be done at anytime.
|
||||
- press the physical bind button, apply power and then release. It will request a bind of the first loaded model protocol.
|
||||
|
||||
Notes:
|
||||
- the physical bind button is only effective at power up. Pressing the button later has no effects.
|
||||
- a bind in progress is indicated by the LED fast blinking. Make sure to bind during this period.
|
||||
|
||||
###Protocol selection
|
||||
|
||||
####Using the dial for PPM input
|
||||
PPM is only allowing access to a subset of existing protocols.
|
||||
The protocols, subprotocols and all other settings can be personalized by modifying the **_Config.h** file.
|
||||
|
||||
The default association dial position / protocol in every release is listed below.
|
||||
|
||||
Dial|Protocol|Sub_protocol|RX Num|Power|Auto Bind|Option|RF Module
|
||||
----|--------|------------|------|-----|---------|------|---------
|
||||
0|Select serial||||||
|
||||
1|FLYSKY|Flysky|0|High|No|0|A7105
|
||||
2|HUBSAN|-|0|High|No|0|A7105
|
||||
3|FRSKYD|-|0|High|No|-41|CC2500
|
||||
4|HISKY|Hisky|0|High|No|0|NRF24L01
|
||||
5|V2X2|-|0|High|No|0|NRF24L01
|
||||
6|DSM|DSM2|0|High|No|6|CYRF6936
|
||||
7|DEVO|-|0|High|No|0|CYRF6936
|
||||
8|YD717|YD717|0|High|No|0|NRF24L01
|
||||
9|KN|WLTOYS|0|High|No|0|NRF24L01
|
||||
10|SYMAX|SYMAX|0|High|No|0|NRF24L01
|
||||
11|SLT|-|0|High|No|0|NRF24L01
|
||||
12|CX10|BLUE|0|High|No|0|NRF24L01
|
||||
13|CG023|CG023|0|High|No|0|NRF24L01
|
||||
14|BAYANG|-|0|High|No|0|NRF24L01
|
||||
15|SYMAX|SYMAX5C|0|High|No|0|NRF24L01
|
||||
|
||||
Note:
|
||||
- The dial selection must be done before the power is applied.
|
||||
|
||||
####Using serial input with er9x/ersky9x
|
||||
Serial is allowing access to all existing protocols & sub_protocols listed below.
|
||||
|
||||
#####A7105 RF module
|
||||
Protocol|Sub_protocol
|
||||
--------|------------
|
||||
Flysky|
|
||||
|Flysky
|
||||
|V9x9
|
||||
|V6x6
|
||||
|V912
|
||||
Hubsan|
|
||||
|
||||
#####CC2500 RF module
|
||||
Protocol|Sub_protocol
|
||||
--------|------------
|
||||
FrSkyV|
|
||||
FrSkyD|
|
||||
FrSkyX|
|
||||
|CH_16
|
||||
|CH_8
|
||||
SFHSS|
|
||||
|
||||
#####CYRF6936 RF module
|
||||
Protocol|Sub_protocol
|
||||
--------|------------
|
||||
DSM|
|
||||
|DSM2
|
||||
|DSMX
|
||||
Devo|
|
||||
J6Pro|
|
||||
|
||||
#####NRF24L01 RF module
|
||||
Protocol|Sub_protocol
|
||||
--------|------------
|
||||
Hisky|
|
||||
|Hisky
|
||||
|HK310
|
||||
V2x2|
|
||||
YD717|
|
||||
|YD717
|
||||
|SKYWLKR
|
||||
|SYMAX4
|
||||
|XINXUN
|
||||
|NIHUI
|
||||
KN|
|
||||
|WLTOYS
|
||||
|FEILUN
|
||||
SymaX|
|
||||
|SYMAX
|
||||
|SYMAX5C
|
||||
SLT|
|
||||
CX10|
|
||||
|GREEN
|
||||
|BLUE
|
||||
|DM007
|
||||
|Q282
|
||||
|JC3015_1
|
||||
|JC3015_2
|
||||
|MK33041
|
||||
|Q242
|
||||
CG023|
|
||||
|CG023
|
||||
|YD829
|
||||
|H8_3D
|
||||
Bayang|
|
||||
ESky|
|
||||
MT99XX|
|
||||
|MT
|
||||
|H7
|
||||
|YZ
|
||||
|LS
|
||||
MJXQ|
|
||||
|WLH08
|
||||
|X600
|
||||
|X800
|
||||
|H26D
|
||||
|E010
|
||||
Shenqi|
|
||||
FY326|
|
||||
FQ777|
|
||||
ASSAN|
|
||||
HONTAI|
|
||||
|HONTAI
|
||||
|JJRCX1
|
||||
|X5C1
|
||||
|
||||
Note:
|
||||
- The dial should be set to 0 for serial. Which means all protocol selection pins should be left unconnected.
|
||||
|
||||
###Protocols details
|
||||
**Check the [Protocols_Details.md](./Protocols_Details.md) file for a detailed description of every protocols with channels assignements.**
|
||||
|
||||
##Hardware
|
||||
|
||||
###RF modules
|
||||
Up to 4 RF modules can be installed:
|
||||
- [A7105](http://www.banggood.com/XL7105-D03-A7105-Modification-Module-Support-Deviation-Galee-Flysky-p-922603.html) for Flysky, Hubsan
|
||||
- [CC2500](http://www.banggood.com/CC2500-PA-LNA-Romote-Wireless-Module-CC2500-SI4432-NRF24L01-p-922595.html) for FrSkyV, FrSkyD, FrSkyX and SFHSS
|
||||
- [CYRF6936](http://www.ehirobo.com/walkera-wk-devo-s-mod-devo-8-or-12-to-devo-8s-or-12s-upgrade-module.html) for DSM, DEVO, J6Pro
|
||||
- [NRF24L01](http://www.banggood.com/2_4G-NRF24L01-PA-LNA-Wireless-Module-1632mm-Without-Antenna-p-922601.html) for Hisky, V2x2, CX-10, SYMAX and plenty other protocols
|
||||
|
||||
RF modules can be installed for protocols need only. Example: if you only need the Hubsan protocol then install only a A7105 on your board.
|
||||
|
||||
You also need some [antennas](http://www.banggood.com/2_4GHz-3dBi-RP-SMA-Connector-Booster-Wireless-Antenna-Modem-Router-p-979407.html) and [cables](http://www.banggood.com/10cm-PCI-UFL-IPX-to-RPSMA-Female-Jack-Pigtail-Cable-p-924933.html).
|
||||
|
||||
###Board
|
||||
The main program is running on an ATMEGA328p running @16MHz and 3.3V.
|
||||
An [Arduino pro mini 16Mhz/5V](http://www.banggood.com/Wholesale-New-Ver-Pro-Mini-ATMEGA328-328p-5V-16MHz-Arduino-Compatible-Nano-Size-p-68534.html) powered at 3.3V (yes it works) can be used to build your own Multimodule. An Arduino Mini based on Atmega328p can also be used.
|
||||
|
||||
####Using stripboard:
|
||||
|
||||

|
||||

|
||||
|
||||
####Using a [home made PCB](http://www.rcgroups.com/forums/showpost.php?p=32645328&postcount=1621):
|
||||
|
||||

|
||||

|
||||
|
||||
####Build your own board using [SMD components](http://www.rcgroups.com/forums/showpost.php?p=31064232&postcount=1020) and an [associated PCB v2.3c](https://oshpark.com/shared_projects/MaGYDg0y):
|
||||
|
||||

|
||||

|
||||
 
|
||||
|
||||
If you build this PCB v2.3c and want to enable serial mode for er9x/ersky9x, you have to do [this mod](http://static.rcgroups.net/forums/attachments/4/0/8/5/8/3/a8667856-242-multi.jpg).
|
||||
|
||||
**[New PCB v2.3d!](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/tree/master/PCB%20v2.3d) available**
|
||||
|
||||
Repository includes Kicad files of schematic and pcb. This is a variant of the Multipro V2.3c circuit design. It is basicly the same as the 2.3c board as far as component placement goes. What's changed is the added resistors for the serial protocol and also
|
||||
the addition of solder jumpers on the bottom of the board for the various options to connect the TX, RX, and PPM
|
||||
lines through them.
|
||||
|
||||

|
||||

|
||||
|
||||
[OSH Park link](https://oshpark.com/shared_projects/Ztus1ah8) if you want to order.
|
||||
|
||||
####Buy a ready to use and complete Multi module
|
||||

|
||||
|
||||
This module can be purchased [here](http://www.banggood.com/2_4G-CC2500-A7105-Flysky-Frsky-Devo-DSM2-Multiprotocol-TX-Module-With-Antenna-p-1048377.html). All the 4 RF modules are already implemented A7105, NRF24L01, CC2500 and CYRF6936. The board is also equiped with an antenna switcher which means only one antenna for all.
|
||||
|
||||
**It is highly recommended to update the firmware** of this board as it is distributed with a really old and bugged one. For this you have to solder a 6 pin header (top left) and use an USBASP like explained [below](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module#upload-the-code-using-isp-in-system-programming).
|
||||
|
||||
If you want to enable serial mode for er9x/ersky9x/Taranis/... and depending on your board revision, you have to do one of these modifications:
|
||||
- 1st revision, add 2 resistors as shown here: 
|
||||
- 2nd revision, solder pads together as shown:
|
||||
|
||||
<img src="http://static.rcgroups.net/forums/attachments/4/8/3/5/8/4/a9206217-177-IMG_5790.jpg" width="350">
|
||||
|
||||
Note: if you have the 1st board revision (check pictures above), sometime bind occures at power up even without pressing the bind button or not having an autobind protocol. To solve this issue, replacing the BIND led resistor (on the board back) of 1.2K by a 4.7K.
|
||||
|
||||
###Schematic
|
||||

|
||||
|
||||
Notes:
|
||||
- Attention: All modules are 3.3V only, never power them with 5V.
|
||||
- For serial, the dial switch is not needed and the bind button optionnal
|
||||
|
||||
###Radio integration
|
||||
If you build your own version of the board you can 3D print this case (details [here](http://www.rcgroups.com/forums/showpost.php?p=33294140&postcount=2034)):
|
||||
|
||||

|
||||

|
||||
|
||||
If you have the Banggood ready to use board you can 3D print this case (details [here](http://www.rcgroups.com/forums/showpost.php?p=35349049&postcount=3)):
|
||||
|
||||
<img src="http://static.rcgroups.net/forums/attachments/4/8/3/5/8/4/a9206211-97-Screen%20Shot%202016-07-27%20at%2011.02.35%20am.png" width="200">
|
||||
<img src="http://static.rcgroups.net/forums/attachments/4/8/3/5/8/4/a9206411-90-IMG_5793.jpeg" width="200">
|
||||
<img src="http://static.rcgroups.net/forums/attachments/4/8/3/5/8/4/a9206445-131-IMG_5796.jpeg" width="200">
|
||||
|
||||
##Compilation and programmation
|
||||
|
||||
###Toolchain
|
||||
Multiprotocol source can be compiled using the Arduino IDE.
|
||||
|
||||
The currently supported Arduino version is [1.6.10](https://www.arduino.cc/download_handler.php?f=/arduino-1.6.10-windows.exe).
|
||||
|
||||
Download the [zip file](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/archive/master.zip) of this repository, unzip it in a folder, navigate to the Multiprotocol directory and then click on Multiprotocol.ino. The Arduino environment will appear and the Multiprotocol project will be loaded.
|
||||
|
||||
**[_Config.h file](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/blob/master/Multiprotocol/_Config.h) must be modified** to select which protocols will be available, change protocols/sub_protocols/settings associated with dial for PPM input, different TX channel orders and timing, Telemetry or not, ...
|
||||
This is mandatory since all available protocols will not fit in the ATmega328. You need to pick and choose what you want.
|
||||
|
||||
Notes:
|
||||
- Make sure to select "Arduino Pro or Pro Mini, ATmega328 (5V,16MHz)" before compiling.
|
||||
- Compilation of the code posted here works. So if it doesn't for you this is a problem with your setup, please double check everything before asking.
|
||||
- If you want to reduce the code size even further, you can modify the file platform.txt located in "C:\Program Files (x86)\Arduino\hardware\arduino\avr". Set the line "compiler.c.elf.extra_flags=" to "compiler.c.elf.extra_flags=-Wl,--relax".
|
||||
|
||||
###Upload the code using ISP (In System Programming)
|
||||
It is recommended to use an external programmer like [USBASP](http://www.banggood.com/USBASP-USBISP-3_3-5V-AVR-Downloader-Programmer-With-ATMEGA8-ATMEGA128-p-934425.html) to upload the code in the Atmega328. The programmer should be set to 3.3V or nothing to not supply any over voltage to the multimodule and avoid any damages.
|
||||
|
||||
The dial must be set to 0 before flashing!
|
||||
|
||||
From the Arduino environment, you can use this shortcut to compile and upload to the module: Skecth->Upload Using Programmer (Ctrl+Maj+U)
|
||||
|
||||
To flash the latest provided hex file under [Release](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/releases), you can use a tool like [AVR Burn-O-Mat](http://avr8-burn-o-mat.aaabbb.de/), set the microcontroller to m328p and flash it.
|
||||
|
||||
###Upload the code using FTDI (USB serial to TTL)
|
||||
Use this method only for Arduino Pro Mini boards with bootloader.
|
||||
|
||||
Use an external FTDI adapter like [this one](http://www.banggood.com/FT232RL-FTDI-USB-To-TTL-Serial-Converter-Adapter-Module-For-Arduino-p-917226.html).
|
||||
|
||||
The programmer should be set to 3.3V or nothing to not supply any over voltage to the multimodule and avoid any damages.
|
||||
|
||||
From the Arduino environment, you can use Upload button which will compile and upload to the module: Skecth->Upload (Ctrl+U)
|
||||
|
||||
To upload the latest provided hex file under [Release](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/releases), you can use a tool like [XLoader](http://russemotto.com/xloader/), set the microcontroller to Atmega328 and upload it.
|
||||
|
||||
###Set fuses
|
||||
Use a tool like [AVR Burn-O-Mat](http://avr8-burn-o-mat.aaabbb.de/) to set the fuses of the Atmega328 to:
|
||||
- Extended Fuse 0x05 (or 0xFD which is the same)
|
||||
- High Fuse 0xD2
|
||||
- Low Fuse 0xFF
|
||||
|
||||
This will make sure your ATMEGA328 is well configured and the global TX ID is not erased at each updates.
|
||||
|
||||
##Troubleshooting
|
||||
|
||||
###LED status
|
||||
- off: program not running or a protocol selected with the associated module not installed.
|
||||
- flash(on=0.1s,off=1s): invalid protocol selected (excluded from compilation or invalid protocol number)
|
||||
- slow blink(on=0.5s,off=0.5s): serial has been selected but no valid signal has been seen on the RX pin.
|
||||
- fast blink(on=0.1s,off=0.1s): bind in progress.
|
||||
- on: normal operation.
|
||||
|
||||
###Protocol selection
|
||||
####Input Mode - PPM
|
||||
- The protocol/mode selection must be done before the power is applied.
|
||||
- Connect 1 to 4 of the selection protocol pins to GND.
|
||||
|
||||
####Input Mode - Serial
|
||||
- Make sure you have done the mods to the v2.3c PCB by adding the 2.2k and 470 ohm resistors as indicated in the [Board section] (https://github.com/pascallanger/DIY-Multiprotocol-TX-Module#board).
|
||||
- Leave all 4 selection pins unconnected.
|
||||
|
||||
###Bind
|
||||
Make sure to follow this procedure: press the bind button, apply power and then release it after 1sec. The LED should be blinking fast indicating a bind status and then fixed on when the bind period is over. It's normal that the LED turns off when you press the bind button, this behavior is not controlled by the Atmega328.
|
||||
For serial, the preffered method is to bind via the GUI protocol page.
|
||||
|
||||
If your module is always/sometime binding at power up without pressing the button:
|
||||
- Arduino Pro Mini with an external status LED: to work around this issue connect a 10K resistor between D13 and 3.3V.
|
||||
- 4in1 module V1 (check 4in1 pictures): to solve this issue, replacing the BIND led resistor (on the board back) of 1.2K by a 4.7K.
|
||||
|
||||
###Report issues
|
||||
You can report your problem using the [GitHub issue](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/issues) system or go to the [Main thread on RCGROUPS](http://www.rcgroups.com/forums/showthread.php?t=2165676) to ask your question.
|
||||
Please provide the following information:
|
||||
- Multiprotocol code version
|
||||
- TX type
|
||||
- Using PPM or Serial, if using er9x or ersky9x the version in use
|
||||
- Different led status (multimodule and model)
|
||||
- Explanation of the behavior and reproduction steps
|
59
docs/Transmitters.md
Normal file
@ -0,0 +1,59 @@
|
||||
# Compatible Transmitters
|
||||
|
||||
Any Tx that provides a PPM output (like a trainer port, or a RF module bay) is compatible with the DIY Multiprotocol module. In practice, most of the documentation on this site is focused on building modules that slip into your transmitter’s module bay.
|
||||
{insert picures of different modules}
|
||||
|
||||
There are two different options for the interface between the Mulitprotocol Module and the transmitter: PPM and Serial. The considerations are different for each.
|
||||
- **PPM** is more generic, easy to implement and will work with most transmitters.
|
||||
- **Serial** requires custom firmware on the transmitter but brings added functionality including telemetry and protocol selection through the Tx interface
|
||||
|
||||
##PPM
|
||||
The DIY Mulitprotocol module supports industry standard PPM interface that works with all transmitters with either a module bay, and/or a trainer port. Even the older 72MHz FM radios support this standard.
|
||||
|
||||
When using the standard PPM Tx output, the protocol selection is achieved through a 16 position rotary switch on the module. This enables 15 protocol/sub-protocol/options combinations to be selected. Binding is achieved by pressing a bind button on the back of the module (see picture below)
|
||||
|
||||
<img src="images/4-in-1_Module_PPM_Controls.jpg" width="150" height="180" />
|
||||
|
||||
Since the module supports literally hundreds of protocol/sub-protocol/options combinations, you must select which of these will map to the 15 positions on the switch. Refer to the [Compiling and Programming](Compiling.md) page for information on how to do his.
|
||||
|
||||
Telemetry is available as a serial 9600 8 n 1 output on the TX pin of the Atmega328p using the FrSky hub format for Hubsan, FrSkyD, FrSkyX and DSM format for DSM2/X.
|
||||
|
||||
You can connect it to your TX if it is telemetry enabled or use a bluetooth adapter (HC05/HC06) along with an app on your phone/tablet ([app example](https://play.google.com/store/apps/details?id=biz.onomato.frskydash&hl=fr)) to display telemetry information and setup alerts.
|
||||
|
||||
For transmitter setup using the PPM protocol go to the [PPM Setup page](PPM_Setup.md)
|
||||
|
||||
##Serial
|
||||
Transmitters that run er9X, erSky9X or OpenTx firmwares - like the FrSky Taranis and FlySky TH9X/Turnigy 9X/R family of transmitters - have the option of using a fast, two-way serial, communication protocol between the Tx and the DIY Multiprotocol module. Using this serial communication protocol has some significant advantages:
|
||||
|
||||
1. selecting the specific radio protocol (e.g. DSM) and the sub protocol (e.g. DSMX) directly in the menu system of the Tx (see the picture below)
|
||||
1. binding through the menu on the Tx
|
||||
1. range checking through the menu on the Tx
|
||||
1. enabling two-way telemetry for telemetry capable receivers and protocols.
|
||||
|
||||
<img src="images/OpenTx_Multi_Menu.jpg" width="470" height="180" /> <img src="images/er9X_Multi_Menu.jpg" width="250" height="180" />
|
||||
|
||||
|
||||
This serial protocol does not require any hardware modifications, but **will** require updating the firmware on your radio.
|
||||
|
||||
Transmitters and firmware combinations that support the Serial protocol are:
|
||||
|
||||
{Can someone check the transmitters click through to the right pages? How should the "erSky9x" boards be handled? A separate Tx- page or a link to the Taranis page?}
|
||||
|
||||
Transmitter|Firmware Options
|
||||
:----------|:-------
|
||||
[FrSky Taranis/Plus/9XE](Tx-Taranis.md)| [erSky9x](http://www.er9x.com), [OpenTx 2.1.8 Multi](http://plaisthos.de/opentx/)
|
||||
[Turnigy 9X/9xR](Tx-FlyskyTH9X.md)|[er9x](http://www.er9x.com)
|
||||
[Turnigy 9XR-Pro](Tx-Taranis.md)|[erSky9x](http://www.er9x.com)
|
||||
[FrSky TH9x](Tx-FlyskyTH9X.md)|[er9x](http://www.er9x.com)
|
||||
SKY board|[erSky9x](http://www.er9x.com)
|
||||
AR9X board|[erSky9x](http://www.er9x.com)
|
||||
9Xtreme board|[erSky9x](http://www.er9x.com)
|
||||
AR9X UNI board|[erSky9x](http://www.er9x.com)
|
||||
|
||||
Click on your transmitter above to view specific setup instructions.
|
||||
|
||||
Other Notes:
|
||||
- er9X and erSky9X firmware already supports Multiprotocol Module as a standard feature. At time of writing it looks like that the next major release of OpenTx - OpenTx 2.2 - will have DIY Mulitprotocol support as a standard feature.
|
||||
|
||||
- Owners of Walkera Devo transmitters should look at the [Deviation-Tx](http://www.deviationtx.com) project for how to achieve the same end goal with your transmitters.
|
||||
|
40
docs/Troubleshooting.md
Normal file
@ -0,0 +1,40 @@
|
||||
# Troubleshooting
|
||||
|
||||
##LED status
|
||||
###Green LED
|
||||
- Off: no power to the module
|
||||
- On: module is powered up
|
||||
|
||||
###Red LED (bind LED)
|
||||
- Off: program not running or a protocol selected with the associated module not installed
|
||||
- Flash(on=0.1s,off=1s): invalid protocol selected (excluded from compilation or invalid protocol number)
|
||||
- Fast blink(on=0.1s,off=0.1s): bind in progress
|
||||
- Slow blink(on=0.5s,off=0.5s): serial has been selected but no valid signal has been seen on the RX pin.
|
||||
- On: Module is in normal operation mode (transmitting control signals).
|
||||
|
||||
##Protocol selection
|
||||
###Input Mode - PPM
|
||||
- The protocol/mode selection must be done before the power is applied
|
||||
- Check the Green LED to see when power is applied. Often power is not applied to the module until the transmitter has performed safety checks (like switch and throttle position settings)
|
||||
- Check that at least one of the protocal selection to GND.
|
||||
|
||||
###Input Mode - Serial
|
||||
- Make sure you have done the mods to the v2.3c PCB by adding the 2.2k and 470 ohm resistors as indicated in the [hardware page for your board] (Hardware.md).
|
||||
- Protocol selection dial must be in the 0 position or leave all 4 selection pins unconnected.
|
||||
|
||||
##Bind
|
||||
Make sure to follow this procedure: press the bind button, apply power and then release after the red LED starts flashing. The LED should be blinking fast indicating a bind status and then fixed on when the bind period is over. It's normal that the LED turns off when you press the bind button, this behavior is not controlled by the Atmega328.
|
||||
For serial, the preffered method is to bind via the GUI protocol page.
|
||||
|
||||
If your module is always/sometime binding at power up without pressing the button:
|
||||
- Arduino Pro Mini with an external status LED: to work around this issue connect a 10K resistor between D13 and 3.3V.
|
||||
- 4in1 module V1 (check 4in1 pictures): to solve this issue, replacing the BIND led resistor (on the board back) of 1.2K by a 4.7K.
|
||||
|
||||
##Report issues
|
||||
You can report your problem using the [GitHub issue](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/issues) system or go to the [Main thread on RCGROUPS](http://www.rcgroups.com/forums/showthread.php?t=2165676) to ask your question.
|
||||
Please provide the following information:
|
||||
- Multiprotocol code version
|
||||
- TX type
|
||||
- Using PPM or Serial, if using er9x or ersky9x the version in use
|
||||
- Different led status (multimodule and model)
|
||||
- Explanation of the behavior and reproduction steps
|
37
docs/Tx-FlyskyTH9X.md
Normal file
@ -0,0 +1,37 @@
|
||||
#Flysky TH9X family of transmitters
|
||||
This page is relevant to the following transmitters:
|
||||
* FlySky TH9X
|
||||
* Turnigy 9X, Turnigy 9XR
|
||||
* EURGLE
|
||||
|
||||
|
||||
## Features
|
||||
The DIY Multiprotocol module can be used in the Flysky family of transmitters in either PPM mode or in Serial mode. To operate in Serial mode, a version of er9X supporting the DIY Multiprotocol must be installed on the Tx. If your transmitter is running an earlier firmware that is not Serial enabled, and if you wish to run in Serial mode jump down to the section [Enabling Serial Mode]
|
||||
|
||||
## PPM Mode
|
||||
Please refer to the [PPM Setup](PPM_Setup.md) page.
|
||||
|
||||
|
||||
## Serial Mode
|
||||
Serial mode is only supported by the er9X firmware. Loading this firmware is beyond the scope of this document but it is well covered in tutorial and video tutorials online.
|
||||
###Enabling Serial Mode
|
||||
1. Confirm that the DIY Multiprotocol module has the required physical connections between the pins on the back of the Tx and the ATMega328 microprocessor. This may require some soldering and depends on which version of the DIY Multiprotocol module you have. Check out your module’s hardware page under the section [Enabling your module for Serial](### insert link) for details.
|
||||
1. Plug in your DIY Multiprotocol module into the transmitter module bay. If you have a rotary protocol selection switch, turn the switch to position 0 to put the unit into Serial mode.
|
||||
1. Ensure throttle is down and all switches are in the start position and power up the Tx. The red LED on the DIY Multiprotocol module should be flashing with a period of about 1 second indicating that it has not established a valid serial link with the Tx. This is expected as we have not set up the Tx yet.
|
||||
1. {er9x expert to review this} Create a new model
|
||||
1. In the Model Settings menu scroll down to change the RF settings to {pascal mikeb! }. Your transmitter settings should look like this: {mikeb insert picture of er9X screen showing RF settings}
|
||||
1. The red LED on the DIY Multiprotocol module should briefly flash and then go off. This confirms that the DIY Multiprotocol module has established serial communication with the Tx. If the red LED on the module continues to flash at a period of about 1 seconds then it signals that serial communication has not been established. Check your settings under the model menu as described above and check that the protocol selection switch on the module is at 0 (enable Serial mode). If there is still no communication, power down and power up the Tx. Finally check that you have correctly enabled your module for serial as described on the hardware page for your module under the heading [Enabling your module for Serial](### insert link)
|
||||
|
||||
###Protocol Selection in Serial mode
|
||||
To select the protocol:
|
||||
1. In the Model Setting menu, scroll through the available options under the MULTI option {mikeb to confirm}.
|
||||
1. Depending on which protocol you have selected you may be required to select a sup-protocol and options. For example, the DSM protocol has two sub-protocols DSM2 and DSMX. Each of these sub-protocols have options that specify the number of channels and the packet frame rate. The following picture shows DSM – DSMX – Option 6 (6 channels and 11ms frame rate). Check out the [Protocol Details](###) page for detailed information and suggestions regarding the sub-protocols and options. {insert picture mentioned above}
|
||||
|
||||
###Binding in Serial mode
|
||||
1. Switch on the model or put the receiver into bind mode
|
||||
1. On the transmitter go to the Model Settings menu and scroll down to the [Bind] menu option and press Enter.
|
||||
1. Press Enter again to exit Bind mode
|
||||
|
||||
For many consumer models consider checking the Autobind option. This will initiate the bind sequence as soon as the module is powered up by the transmitter.
|
||||
|
||||
If you are struggling to get a bind please see the [Getting the bind timing right page](Bind_Timing.md)
|
43
docs/Tx-NewTrasmitter.md
Normal file
@ -0,0 +1,43 @@
|
||||
# Transmitter Setup
|
||||
Describe the transmitters this applies to.
|
||||
|
||||
Describe the firmware required for the transmitters. The transmitters covered here are:
|
||||
1. [tx1](###)
|
||||
1. [tx2](###)
|
||||
|
||||
Does it work in PPM and/or Serial mode?
|
||||
|
||||
## PPM Mode
|
||||
Please refer to the [PPM Setup](PPM_Setup.md) page.
|
||||
|
||||
|
||||
##Serial mode
|
||||
###Enabling Serial Mode
|
||||
To operate in serial mode, you need one of these firmwares:
|
||||
1. OpenTx supporting the DIY Multiprotocol mdule (2.18 Multi or 2.2)
|
||||
1. erSky9x
|
||||
|
||||
Check and upload a supported firmware. The latest available version at time of writing are:
|
||||
- OpenTx 2.1.8 Multi and the hex files are available [here](http://plaisthos.de/opentx/)
|
||||
- erSky9x Revision 218 and the hex files are available [here](http://www.er9x.com).
|
||||
|
||||
Tutorials for uploading new firmware using the SD Card are available [here](http://www.dronetrest.com/t/how-to-upgrade-firmware-for-frsky-taranis-x9d/959) or the CompanionTx software (recommended) are available [here](http://open-txu.org/home/undergraduate-courses/fund-of-opentx/part-2-flashing-opentx/).
|
||||
|
||||
**Note: in the tutorials substitute the shown firmwares with the fimware donwloaded from the links above.**
|
||||
|
||||
First confirm that the DIY Multiprotocol module has the required physical connections between the pins on the back of the Tx and the ATMega328 microprocessor. This may require some soldering and depends on which version of the DIY Multiprotocol module you have. Check out this [Enabling Your Module for Serial] page for details.
|
||||
|
||||
Plug in your DIY Multiprotocol module into the Taranis module bay. If you have a rotary protocol selection switch, turn the switch to position 0 to put the unit into Serial mode. Ensure throttle is down and all switches are in the start position and power up the Taranis. The red LED on the DIY Multiprotocol module should be flashing with a period of about 1s indicating that it has not established a valid serial link with the Tx. This is expected as we have not set up the Tx yet.
|
||||
|
||||
Create a new model (make sure channel order is AETR) and on the first Model Settings page scroll down to disable the internal RF and enable the external RF by selecting MULTI as the external RF. Your Taranis settings should look like this: {insert picture of Taranis screen showing external RF settings}
|
||||
|
||||
The Red LED on the DIY Multiprotocol module should briefly flash and then go off. This confirms that the DIY Multiprotocol module has established serial communication with the Tx. If the red LED on the module continues to flash at a period of about 1s then it signals that serial communication has not been established. Check your settings under the model menu as described above and check that the protocol selection switch on the module is at 0 (zero). If there is still no communication, power down and power up the Tx. Finally check that you have correctly enabled your module for serial as described here [Enabling Your Module for Serial]
|
||||
###Protocol Selection in Serial mode
|
||||
To select the protocol, scroll through the available options under the Model Settings menu. Depending on which protocol you have selected you may be required to select a sup-protocol and options. For example, the DSM protocol has two sub-protocols DSM2 and DSMX. Each of these sub-protocols have options that specify the number of channels and the packet frame rate.
|
||||
|
||||
The following picture shows DSM – DSMX – Option 6 (6 channels and 11ms frame rate). Check out the [Available Protocols] page for detailed information and suggestions regarding the sub-protocols and options.
|
||||
###Binding in Serial mode
|
||||
1. Switch on the model or put the receiver into bind mode
|
||||
1. On the transmitter go to the Model Settings menu and scroll down to the [Bind] menu option.
|
||||
|
||||
|
49
docs/Tx-Taranis.md
Normal file
@ -0,0 +1,49 @@
|
||||
# FrSky Taranis Setup
|
||||
This page contains setup instructions for the FrSky Taranis family of transmitters. These include the Trananis X9D, Taranis X9D Plus and Taranis X9E. It may also be relevant to the following transmitters: Turnigy 9XR Pro, Sky board-based, AR9X board-based, 9Xtreme board-based and AR9X Uni board-based.
|
||||
|
||||
<img src="http://www.frsky-rc.com/product/images/pic/1456723548.jpg" width="300" height="200" />
|
||||
<img src="http://www.frsky-rc.com/product/images/pic/1456723588.jpg" width="300" height="200" />
|
||||
|
||||
The instructions below are relevant to the following firmwares:
|
||||
1. Taranis with erSky9X available [here](http://www.er9x.com)
|
||||
1. Taranis with OpenTx available [here](http://plaisthos.de/opentx/)
|
||||
|
||||
|
||||
The DIY Multiprotocol module can be used with all transmitters and firmwares in PPM mode. Taranis transmitters running erSky9X or OpenTX (Version 2.1.8 Multi or Version 2.2) fully support Serial mode.
|
||||
## PPM Mode
|
||||
Please refer to the [PPM Setup](PPM_Setup.md) page.
|
||||
|
||||
##Serial mode
|
||||
###Enabling Serial Mode
|
||||
To operate in serial mode, you need one of these firmwares:
|
||||
1. erSky9x
|
||||
1. OpenTx supporting the DIY Multiprotocol Module (Version 2.18 Multi or Version 2.2)
|
||||
|
||||
Check and upload a supported firmware. The latest available version at time of writing are:
|
||||
- erSky9x Revision 218 and the hex files are available [here](http://www.er9x.com).
|
||||
- OpenTx 2.1.8 Multi and the hex files are available [here](http://plaisthos.de/opentx/)
|
||||
|
||||
Tutorials for uploading new firmware using the SD Card are available [here](http://www.dronetrest.com/t/how-to-upgrade-firmware-for-frsky-taranis-x9d/959) or the CompanionTx or eepe software (recommended) are available [here](http://open-txu.org/home/undergraduate-courses/fund-of-opentx/part-2-flashing-opentx/).
|
||||
|
||||
**Note: In these tutorials, substitute the firmwares from the links to the supported firmwares above.**
|
||||
|
||||
First, confirm that the DIY Multiprotocol module has the required physical connections between the pins on the back of the Tx and the ATMega328 microprocessor. This may require some soldering and depends on which version of the DIY Multiprotocol module you have. Check out the specific pages for your module hardware (under the section "Enabling Serial") linked [here](Hardware.md) for details.
|
||||
|
||||
1. Plug in your DIY Multiprotocol module into the Taranis module bay.
|
||||
2. If you have a rotary protocol selection switch, turn the switch to position 0 to put the unit into Serial mode.
|
||||
2. Ensure throttle is down and all switches are in the start position and power up the Taranis. The red LED on the DIY Multiprotocol module should be flashing with a period of about 1s indicating that it has not established a valid serial link with the Tx. This is expected as we have not set up the Tx yet.
|
||||
3. Create a new model (make sure channel order is AETR) and on the first Model Settings page scroll down to disable the internal RF and enable the external RF by selecting MULTI as the external RF. Your Taranis settings should look like this: {insert picture of Taranis screen showing external RF settings} The Red LED on the DIY Multiprotocol module should briefly flash and then go off. This confirms that the DIY Multiprotocol module has established serial communication with the Tx.
|
||||
4. If the red LED on the module continues to flash at a period of about 1s then it signals that serial communication has not been established. Check your settings under the model menu as described above and check that the protocol selection switch on the module is at 0 (zero). If there is still no communication, power down and power up the Tx. Finally check that you have correctly enabled your module for serial as described in specific pages for your module hardware (under the section "Enabling Serial") linked [here](Hardware.md)
|
||||
|
||||
###Protocol Selection in Serial mode
|
||||
To select the protocol, scroll through the available options under the Model Settings menu. Depending on which protocol you have selected you may be required to select a sup-protocol and options. For example, the DSM protocol has two sub-protocols DSM2 and DSMX. Each of these sub-protocols have options that specify the number of channels and the packet frame rate.
|
||||
|
||||
The following picture shows DSM – DSMX – Option 6 (6 channels and 11ms frame rate). Check out the [Protocol Details](Protocol_Details.md) page for detailed information and suggestions regarding the sub-protocols and options.
|
||||
###Binding in Serial mode
|
||||
1. Switch on the model or put the receiver into bind mode
|
||||
1. On the transmitter go to the Model Settings menu and scroll down to the [Bind] menu option and press Enter.
|
||||
1. Press Enter again to exit Bind mode
|
||||
|
||||
For many consumer models consider checking the Autobind option. This will initiate the bind sequence as soon as the module is powered up by the transmitter.
|
||||
|
||||
If you are struggling to get a bind please see the [Getting the bind timing right page](Bind_Timing.md)
|
BIN
docs/images/4-in-1_Module_BG.jpeg
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
docs/images/4-in-1_Module_BG.png
Normal file
After Width: | Height: | Size: 520 KiB |
BIN
docs/images/4-in-1_Module_BG_SerialJumpers.jpeg
Normal file
After Width: | Height: | Size: 321 KiB |
BIN
docs/images/4-in-1_Module_PPM_Controls.jpg
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
docs/images/Arduino.png
Normal file
After Width: | Height: | Size: 318 KiB |
BIN
docs/images/Board_PCB_STM32.jpeg
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
docs/images/DIY_Mulitprotocol_Module_Schematic.jpeg
Normal file
After Width: | Height: | Size: 238 KiB |
BIN
docs/images/DIY_Multiprotocol_Module_Overview.png
Normal file
After Width: | Height: | Size: 87 KiB |
BIN
docs/images/MPTM_PCB_3.2d.png
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
docs/images/MPTM_with_RF_modules.jpeg
Normal file
After Width: | Height: | Size: 8.4 KiB |
BIN
docs/images/Module_perfboard1.jpeg
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
docs/images/Module_perfboard2.jpeg
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
docs/images/Multi_4-in-1_RF_module.jpg
Normal file
After Width: | Height: | Size: 134 KiB |
BIN
docs/images/Multiprotocol_3.2.jpeg
Normal file
After Width: | Height: | Size: 5.6 KiB |
BIN
docs/images/OpenTx_Multi_Menu.jpg
Normal file
After Width: | Height: | Size: 9.1 KiB |
BIN
docs/images/OrangeRx_Module.jpg
Normal file
After Width: | Height: | Size: 104 KiB |
BIN
docs/images/V1_Serial_Enable.jpeg
Normal file
After Width: | Height: | Size: 86 KiB |
BIN
docs/images/V2_Serial_Enable.jpeg
Normal file
After Width: | Height: | Size: 107 KiB |
BIN
docs/images/er9X_Multi_Menu.jpg
Normal file
After Width: | Height: | Size: 6.5 KiB |
1
docs/images/test
Normal file
@ -0,0 +1 @@
|
||||
|