1

I'm building a rig with multiple DSLR cameras. I need to synchronize the cameras to take a photos with lowest possible latency. The only constraint is we want the ability to address each camera individually if needed.

I've seen in other posts: Choosing wireless tech for lowest possible lag

NRF24L01+ seems to be a good choice. An answer on that post states: sending a 32 byte payload...283µs on 2Mbps mode.

Given the esp8266 has a clock speed of 80MHz/160MHz I'm not too concerned about the lag involved in processing the signals.

Most multi-cast information out there is for sensor arrays, so multiple out single in. I'm after resources on single out multiple in for NRF24L01+ networks.

Added bonus of esp8266 is that non timing critical tasks such as logging and error checking could be performed over wifi so NRF24L01+ would be purely for one -way triggering.

If each camera had it's own esp8266 based board with attached NRF24L01+ hardware and was given an address in software from 0-255, is it possible to broadcast a single 32 byte packet of data where each bit would represent a camera address and have all receiver devices receive the same signal, do an AND against it's address and trigger if needed?

  • From another answer to a similar question they mentioned the NRF24LE1 module. Basically a programmable NRF24L01+. I wonder why this never took off? Seems super useful for simple triggering/data collection. – Geordie Jan 18 at 23:38
1

Yes, that should work, however also think about the following issues:

  • What if one (or more) camera does not receive the signal? You might need to add an ACK signal, but of course this will reduce the latency (a lot). If you don't want an ACK signal
  • To prevent an ACK, you can send the signal many times (and cameras who already processed the signal not react for a fixed amount of time). Of course it will received by the other cameras (at least) 283 us later.
  • If reliability is important, you could try using a less high speed, the latency will go up, but reality too.

Also you probably can fire the cameras even faster, if you first send the address bytes (4 bytes). And than send the shoot signal which can be in principle 1 bit. You can use one of the bits for that in case 128 cameras would suffice. Or send one byte extra which contains the signal to shoot.

  • Thanks! So to get this working from a hardware POV all I need to do is make sure all receiver NRF24L01+ are using the same channel/address (not my software address) and disable auto acknowledge? Good idea about splitting address and command. – Geordie Jan 18 at 23:02
  • Also, since configuring each receiver over wifi is not timing critical, are there any other simpler interfaces such as 433/900MHz? – Geordie Jan 19 at 0:00
  • 1
    I never worked with 433/900 MHz. I think you probably can better send the 'shoot' signal multiple times instead of a (complicated) ACK protocol. I think the protocol itself will not change if you use another frequency. – Michel Keijzers Jan 19 at 0:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.