Elinchrom EL-Skyport triggered by Arduino

After figuring out how the Elinchrom EL-Skyport Transmitter works, I wanted to do a proof of concept implementation with an Arduino. This would allow me verifying my assumptions I made in my previous investigation. The hardware is based on an Arduino Leonardo equipped with a cheap (< 4 USD) nRF24L01+ module. After powering up the Arduino, it sends out a trigger pulse to the EL-Skyport Receiver every 500 ms.





Here is how it works.

Hardware Setup



The original EL-Skyport transmitter uses a Nordic nRF2402G chip, as I have described here. You could hook up this chip to the Arduino, but I would not recommend in doing so. Neither does Nordic, because the chip has reached EOL. Instead, use a nRF24L01+. I bought a ready module for EUR 2.5 (~USD 3.4). They are easy to get via eBay. Make sure you use the plus (+) version. The modules look like this:





It comes with a standard 2.54 mm pitch connector (power, data via SPI bus) and the PCB already includes an antenna. I just made a quick adaptor board to place the module on top of the Arduino Leonardo. The pinout of the module I used can be found at various places, here is just one example. If you buy a different module, the pinout may be different as well.




The Leonardo does not have SPI on the two side pin headers anymore (as with previous/other Arduino boards). So I had to use the ICSP header for SPI. For older boards, you can just follow maniacbug's instructions for connecting the module to the Arduino.
I have also connected the module's IRQ pin to the Arduino pin 2. You don't need to do this if you just want to follow this proof of concept (it is used for more advanced controlling). The nRF24L01+ is 5V tolerant for all the data lines and can be connected to the Arduino directly without level shifters. But please make sure to only use the +3.3V pin for power supply (not +5V). The Arduino does supply enough current to operate the module.




I also made sure to expose the module a little to keep the antenna free from influences of the PCB, not to compromise on transmitting range.




And that's how the complete assembly looks like next to the EL-Skyport Receiver.


Source code


For controlling the nRF24L01+, there are already two good Arduino libraries available. One is the mirf library and one is maniacbug's excellent RF24 library. But I wanted to keep my source code to a minimum and allow for easy understanding and easy portability to other microcontrollers. So I just coded the bare minimum SPI commands. Based on this it should be fairly easy to do a full implementation of the EL-Skyport Transmitter if you follow my protocol description and the comments in the code.



I've done my implementation with the Arduino 1.0.1 IDE but it should work with newer versions as well. And here is the source code if you want to play around with it.


Outlook


Now what are the next possible steps for someone who can trigger the EL-Skyport system with an Arduino, Raspberry Pi or other microcontrollers? There are several possible projects which I am thinking of.

Increase the range of the EL-Skyport Transmitter


Not satisfied with the range of the original EL-Skyport transmitter? You could possibly violate some laws in your home country. But instead of the nRF24L01+ module described above, you could use the modules with built in transmit power amplifier. They are almost as cheap as the usual modules. But keep in mind that you must power them with an external 3.3V power source. The +3.3V Arduino power source is not strong enough.They also come with a nice antenna socket, so you can screw on your favorite high-gain WiFi antenna.

Built a small remote for power setting and switching the modeling light


Since the first days I didn't like the ergonomics of setting my flash power and switching the modeling light with the EL-Skyport Transmitter when it's mounted on top of my camera which resides on a tripod. You always have to guess which button is which (as you cannot see it when it's above eye level). Switching on the modeling light often accidentially increases flash power. What would be very handy is a small remote around your neck on a lanyard. This then could have a dedicated button for the modeling light.

Get to know all EL-Skyport System messages


What's still missing are all the SPEED messages (maybe just higher data rate modes are used?). I would also like to know all messages of the EL-Skyport USB RX SPEED. Anyone able to help with SPI sniffing as I do not own those modules?

Trackbacks

  1. PingBack

Comments

Display comments as (Linear | Threaded)

  1. hans martens says:

    Hi Tobias,

    Thanks for great work reverse engineering the Skyport protocol.

    I can confirm that the SPEED mode increases the data rate to 1 Mbps. Just change the NRF RF_SETUP register to 0b00000110 and you will send or receive SPEED messages. Easy:)

  2. t0bY! says:

    Hi Hans,

    change the transmission mode to 1 Mbps only? That's an easy one. Thanks for letting us know!

    Regards,
    Toby

  3. christian says:

    hi toby,

    yay, pretty cool work mate. now i can combine various other flashes with my BRx's - wireless!
    have you figured out the messages your rangers use to broadcast back the actual powerlevel ?
    as my gossen digisky is showing that data, there is already a implementation for this in the flash - time to spi-sniff some of my BRx, maybe.
    now anyone can make his own additional camera triggers for less than 5€/pcs :)


    cheers

    christian


    p.s: hast mir ne menge arbeit erspart :)

  4. t0bY! says:

    Hi Christian,

    I didn't know that the (or some Elinchrom units) are able to report back the actual power level. If you have the ability to do so, you might want to sniff the SPI traffic happening in your BRX head.

    Have a good day!

    Toby

    PS: Gern! Meld' Dich, falls Du noch Fragen hast oder Hilfe brauchst. Ich arbeite gerade noch am Code für den Elinchrom-kompatiblen Empfänger...


Add Comment

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
E-Mail addresses will not be displayed and will only be used for E-Mail notifications.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA