mirror of
https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
synced 2025-12-29 07:53:15 +00:00
New documentation
This commit is contained in:
452
README.md
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.
|
||||
|
||||
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/).
|
||||
##**Choice 2:** Which RF modules to include
|
||||
|
||||
This enables full integration using the radio GUI to setup models with all the available protocols options.
|
||||
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.
|
||||
|
||||

|
||||
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
|
||||
|
||||
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
|
||||
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.
|
||||
|
||||
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 3:** Which protocols to upload the module
|
||||
|
||||
###Telemetry
|
||||
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.
|
||||
|
||||
There are 4 protocols supporting telemetry: Hubsan, DSM, FrSkyD and FrSkyX.
|
||||
##**Choice 4:** Choosing the type of interface with your Tx (PPM or Serial)
|
||||
|
||||
Hubsan displays the battery voltage and TX RSSI.
|
||||
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.
|
||||
|
||||
DSM displays TX RSSI and full telemetry.
|
||||
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.
|
||||
|
||||
FrSkyD displays full telemetry (A0, A1, RX RSSI, TX RSSI and Hub).
|
||||
#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!!!!!
|
||||
|
||||
FrSkyX displays full telemetry (A1, A2, RX RSSI, TX RSSI and Hub).
|
||||
# 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 (###)
|
||||
|
||||
### 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.
|
||||
|
||||
Reference in New Issue
Block a user