This is a setup guide for the 4-in-1 radio module from banggood.com
This radio module can speak almost every protocol on the market today. You can find the details of each protocol along with the full documentation and the firmware on the github page here: https://github.com/pascallanger/DIY-Multiprotocol-TX-Module#protocol-selection
When you get the multi-module, it comes without a case.
So I went ahead and printed this case by nebbian, download it here one from thingiverse.
Here's what the module looks like.
Then I made another case in purple.
You can see in the above photo I've upgraded the connector to a bottom-entry Molex 22172052 connector. Since this is a single point of failure, $1.20 seems like a small price to pay for some extra security.
You can also see I soldered some pin headers on the In System Programmer (ISP) header.
Download the latest release from https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/releases
You'll want to modify _Config.h
to include only the radio protocols you need.
Here is my whole config file: https://gist.github.com/nathantsoi/a65b7baff0e044af05f6854e799c5fc5
Here are my changes:
diff --git a/Multiprotocol/_Config.h b/Multiprotocol/_Config.h
index eb075a1..9add3f8 100644
--- a/Multiprotocol/_Config.h
+++ b/Multiprotocol/_Config.h
/****************************/
@@ -41,10 +41,10 @@
//Bellow is the list of all available protocols. Comment the protocols you are not using with "//" to save Flash space.
#ifdef A7105_INSTALLED
#define FLYSKY_A7105_INO
- #define HUBSAN_A7105_INO
+ //#define HUBSAN_A7105_INO
#endif
#ifdef CYRF6936_INSTALLED
- #define DEVO_CYRF6936_INO
+ //#define DEVO_CYRF6936_INO
#define DSM2_CYRF6936_INO
#define J6PRO_CYRF6936_INO
#endif
@@ -57,19 +57,19 @@
#define BAYANG_NRF24L01_INO
#define CG023_NRF24L01_INO
#define CX10_NRF24L01_INO
- #define ESKY_NRF24L01_INO
- #define HISKY_NRF24L01_INO
- #define KN_NRF24L01_INO
- #define SLT_NRF24L01_INO
- #define SYMAX_NRF24L01_INO
- #define V2X2_NRF24L01_INO
- #define YD717_NRF24L01_INO
- #define MT99XX_NRF24L01_INO
- #define MJXQ_NRF24L01_INO
- #define SHENQI_NRF24L01_INO
- #define FY326_NRF24L01_INO
- #define FQ777_NRF24L01_INO
- #define ASSAN_NRF24L01_INO
+ //#define ESKY_NRF24L01_INO
+ //#define HISKY_NRF24L01_INO
+ //#define KN_NRF24L01_INO
+ //#define SLT_NRF24L01_INO
+ //#define SYMAX_NRF24L01_INO
+ //#define V2X2_NRF24L01_INO
+ //#define YD717_NRF24L01_INO
+ //#define MT99XX_NRF24L01_INO
+ //#define MJXQ_NRF24L01_INO
+ //#define SHENQI_NRF24L01_INO
+ //#define FY326_NRF24L01_INO
+ //#define FQ777_NRF24L01_INO
+ //#define ASSAN_NRF24L01_INO
#endif
@@ -151,12 +151,12 @@ const PPM_Parameters PPM_prot[15]= {
/* 4 */ {MODE_HISKY , Hisky , 0 , P_HIGH , NO_AUTOBIND , 0 },
/* 5 */ {MODE_V2X2 , 0 , 0 , P_HIGH , NO_AUTOBIND , 0 },
/* 6 */ {MODE_DSM2 , DSM2 , 0 , P_HIGH , NO_AUTOBIND , 2 }, // option=2=6 channels @ 22ms
-/* 7 */ {MODE_DEVO , 0 , 0 , P_HIGH , NO_AUTOBIND , 0 },
+/* 7 */ {MODE_DSM2 , DSMX , 0 , P_HIGH , NO_AUTOBIND , 2 }, // option=2=6 channels @ 22ms
/* 8 */ {MODE_YD717 , YD717 , 0 , P_HIGH , NO_AUTOBIND , 0 },
/* 9 */ {MODE_KN , WLTOYS , 0 , P_HIGH , NO_AUTOBIND , 0 },
/* 10 */ {MODE_SYMAX , SYMAX , 0 , P_HIGH , NO_AUTOBIND , 0 },
/* 11 */ {MODE_SLT , 0 , 0 , P_HIGH , NO_AUTOBIND , 0 },
-/* 12 */ {MODE_CX10 , CX10_BLUE , 0 , P_HIGH , NO_AUTOBIND , 0 },
+/* 12 */ {MODE_CX10 , CX10_GREEN, 0 , P_HIGH , NO_AUTOBIND , 0 },
/* 13 */ {MODE_CG023 , CG023 , 0 , P_HIGH , NO_AUTOBIND , 0 },
/* 14 */ {MODE_BAYANG, 0 , 0 , P_HIGH , NO_AUTOBIND , 0 },
/* 15 */ {MODE_SYMAX , SYMAX5C , 0 , P_HIGH , NO_AUTOBIND , 0 }
@@ -250,4 +250,4 @@ const PPM_Parameters PPM_prot[15]= {
// As an exxample, it's usefull for the WLTOYS F929/F939/F949/F959 (all using the Flysky protocol) which requires a bind at each power up.
// Option: the value is between -127 and +127.
-// The option value is only valid for some protocols, read this page for more information: https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/blob/master/Protocols_Details.md
\ No newline at end of file
+// The option value is only valid for some protocols, read this page for more information: https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/blob/master/Protocols_Details.md
Connect the ISP header on the radio module to your programmer. Connect MISO
to MISO
, MOSI
to MOSI
etc, like so:
Open the Multiprotocol.ino
file in the Arduino IDE.
Pick the ISP programmer
Then choose "Upload Using Programmer"
You'll get a success message when it completes:
To enable the serial connection between your ER9X radio and the radio module for easy configuration, you'll need to do the following:
Depending on your board version either add resistors or a solder bridge as shown below:
1st revision, add 2 resistors as shown here:
For the 2nd version, like I have, just solder bridge the tx and rx pads:
I'm using a USB ASP programmer
You can get ER9X, which is the bit you install on the radio, here: http://www.er9x.com/
Also, download the latest version of Eepe from the same page, which runs on your computer to flash the radio.
I'm using a beta version of the firmware, which includes the 4-in-1 module protocol. The beta version is available here: http://openrcforums.com/forum/viewtopic.php?f=5&t=4598
I'm using avrdude which can be downloaded here or you can install on a mac with the terminal command: brew install avrdude
.
avrdude -c usbasp -p m64 -U flash:r:opentx.bin:r
avrdude –c usbasp –p m64 –u –U flash:w:er9x.hex
Note that flashing with avrdude didn't work for me, but flashing with EEPE worked great.
Binding with ER9X using the serial protocol is awesome. After you get ER9X installed and the radio module in the back, setup a new model and open the protocol page:
Move to the BIND
option, hit OK and you're in bind mode!
Plug in your RX in bind mode and you're good to go.
A couple notes on binding a Spektrum Satellite receiver.
Note that is it is easiest, when using a spektrum satellite receiver with a flight controller, to bind the satellite connected to the main receiver (not the flight controller) first. Then attach the satallite to the flight controller.
Alternatively, follow these steps:
Configure the flight controller for your receiver by setting the port for Serial RX and the protocol for Spektrum 2048 (DSMX) or Spektrum 1024 (DSM2).
In the CLI run:
set spektrum_sat_bind = 9
set spektrum_sat_bind_autorst = 0
save
Wait for the board to reboot, then unplug the USB (to remove power) and plug the USB back in.
The bind light should be flashing.
Turn on your transmitter, go into the model setup, protocol and go to bind then click and hold menu to enter bind mode.
The RX light should turn solid and you're good.
Final step is to turn of your transmitter and take the flight controller out of bind mode by running this in the CLI:
set spektrum_sat_bind = 0
save
The OPTION
option sets the number of AUX channels.