===== Building the Multi-Module =====
The Multi-Module is a small circuit-board + an AVR processor to allow controlling up to 4 transceivers via a 4-wire SPI interface
For the Walkera Devo transmitters, it adds the A7105, NRF24L01 and CC2500 modules.
For the X9d, it adds the above as well as a CYRF6936 module
The board can be ordered from Oshpark here:
[[https://oshpark.com/shared_projects/nNRSCkjI|V1.2]]
or [[https://oshpark.com/shared_projects/Df3iWl1J|V1.3]] <-- suggested
==== Additional requirements ====
ATTiny24A/44A/84A (must be the 'A' variant)
[[http://www.ebay.com/itm/400611170500|NRF24L01]]
[[http://www.ebay.com/itm/181091377178|A7105]]
or [[http://www.ebay.com/itm/A7105-2-4G-Wireless-Module-CC2500-NRF24L01-MD7105-SY-Transceiver-AA-/171154521980|no PA]]
[[http://www.aliexpress.com/item/CC2500-PA-LNA-wireless-module-far-distance-2-4G/359941652.html|CC2500]]
or [[http://www.skyartec.com/ProductShow.asp?ArticleID=1977|this one (needs antenna soldered)]]
[[http://www.digikey.com/product-detail/en/AWA24S/748-1003-ND/1687150|CYRF6936]]
or [[http://www.ehirobo.com/walkera-wk-devo-s-mod-devo-8-or-12-to-devo-8s-or-12s-upgrade-module.html|the stock]]
[[http://r.ebay.com/K8zPRJ|2mm pin headers]]
If using the Skyartec module, you need [[http://r.ebay.com/GlelB8|0.05" headers]]
0.1" pin header (optional)
==== Assembly ====
{{https://bitbucket.org/repo/Rg7kAk/images/3239500033-Board1.jpg}}
The board will have components on both sides. When placing components, always place them on the side with the white outline.
First wire an 8-pin connector to the bottom of the board. If planning to use the Walkera Devo CYRF6936 module, it will cover the connector, and wires should be used instead of a pin header. If not using the cyrf6936, or if using the AWA24S, it is recommended to use a 0.1" 2x4 pin header instead. Trim the pin headers/wires so that they barely protrude through the board.
{{https://bitbucket.org/repo/Rg7kAk/images/3947432587-Board2.jpg}}
Next attach the AVR chip (it will be programmed in-circuit, no need to program beforehand). Again, it is recommended to trim the pins of the ATTiny before installing it so that they barely protrude through the board. NOTE: The notch on the chip must align with the outline on the board. Make sure you've mounted it in the proper orientation
{{https://bitbucket.org/repo/Rg7kAk/images/472190820-Board_AVR.jpg}}
**//Note: If you are using a dedicated AVR programmer, now would be a good time to program the board. See the section below on programming. If you will be using your Devo transmitter to program the board, you can finish assembly 1st.//**
next install the CYRF chip if needed. In the images below, I have chosen to use female 2mm headers so that the modules can be removed, however, this will add to the thickness of the completed module and may make installation in a X9D difficult.
{{https://bitbucket.org/repo/Rg7kAk/images/1489394232-Board_AVR_CYRF.jpg}}
next install the A7105 module. Soldering a row of pin-headers to the module and then soldering those to the board is the easiest solution. try to get the A7105 as close to flush with the board as possible, but make sure there are no shorts to the solder pads. The NRF24L01 will be installed on top of the A7105, so make sure it is as close to the board as possible. I've placed a piece of Kapton tape on top of the shield to ensure it does not short to the NRF24L01 module
{{https://bitbucket.org/repo/Rg7kAk/images/2671317108-Board_A7105.jpg}}
{{https://bitbucket.org/repo/Rg7kAk/images/2755120280-BoardA7105_2.jpg}}
Next install the NRF24L01 module. The pin-headers that are pre-installed should be long-enough to just poke through the board.
{{https://bitbucket.org/repo/Rg7kAk/images/4156984944-Board_NRF24L01.jpg}}
Lastly install the CC2500 module. In this case, I was using an earlier version of the board, and the pin headers would not fit through the board fully, so the module protrudes more than desired. this issue has been corrected in the board design above
{{https://bitbucket.org/repo/Rg7kAk/images/3184160237-Board_CC2500.jpg}}
Completed board:
{{https://bitbucket.org/repo/Rg7kAk/images/2731889137-Board_All.jpg}}
==== Installation ====
The module can be installed as any other transceiver module. Installation instructions are can be found here: [[rf_module_installation|Module Installation]]
==== Programming ====
Before the switch can be used, it must be programmed. There are 2 options for programming: (1) a dedicated AVR programmer like the 'USBAsp' or (2) by using a special DFU in your Devo transmitter.
=== Programming with a dedicated programmer ===
**//NOTE: If you have any of the transceiver modules installed, you should use a 3.3V programmer (or use the DEVO programming method below) as the modules cannot take 5V input //**
You need to obtain the latest avr.hex file from here: https://www.deviationtx.com/downloads-new/category/4-multi-module
Attach your multi-module board to the AVR programmer. The relevant pins on the 8-pin header are:
2: Vdd
3: Reset
4: MOSI
5: MISO
6: SCK
7: Vss
Using AVRDude, the following commands will program the board:
The fuse settings will disable the divide-clock-by-8
avrdude -p t84 -c usbasp -e -U flash:w:avr.hex
avrdude -p t84 -c usbasp -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m
Change t84 to t44 (for ATTiny44a) or t24 (for ATTiny24a)
Change 'usbasp' to whatever programmer you use
=== Programming with a Devo transmitter ===
You need to obtain the avr.hex file from here:
https://www.deviationtx.com/repository/Multi-Module/
You also need a custom programming DFU for your transmitter from here:
https://www.deviationtx.com/downloads-new/category/7-programmer-dfus#
- Install the programming DFU for your transmitter with the DFuSe USB Upgrade tool
- Install the multi-module into your transmitter (if it isn't already)
- Enter USB mode by holding down the 'ENT' button while turning on your transmitter
- Copy avr.hex to the root directory of your transmitter
- Update (or create) hardware.ini at the root directory of your transmitter with:
[modules]
; there is no need to enable the cyrf6936 module unless
; it is wired to an alternate port. It is Enabled automatically otherwise
enable-multimod=A13
enable-cyrf6936=B12
has_pa-cyrf6936=1
enable-a7105=S1
has_pa-a7105=1
enable-cc2500=S3
has_pa-cc2500=1
enable-nrf24l01=S402
has_pa-nrf24l01=1
If there are any modules you do not have installed, comment those lines by adding a semicolon (';') at the beginning of the line.
- Turn on your Transmitter to program. If you get any errors see below for resolution:
* ERR: No switch cfg -- hardware.ini is notproperly configured
* ERR: Bad avr.hex -- avr.hex is not in the proper location
* ERR: No switch found -- avr didn't initialize. this one is common and you need to try several times before giving up. Itoculd be improper wiring or just that the code isn't working properly. I'm still working on this
* ERR: Unknown AVR -- This means the AVR is there but the dfu code didn't initialize properly, try it again
* ERR: Erase failed -- could not erase the device. Try again
* ERR:Failed at page 0x -- programming failed, try again