Pinouts / Remote / Sync
Last updated
Last updated
Pinouts
Freefly P/N 910-00713 can be used to power Ember from a D-Tap power supply or battery output.
Freefly P/N 910-00661 can be used directly to connect Mōvi Pro, Mōvi XL, or Mōvi Carbon to the GPIO port on Ember. It can also be used as a donor cable for making a custom cable for remote start/stop or menu control (see below).
GPI2/RS can be used to create a simple remote start/stop trigger, either using a physical momentary switch or with active logic from a host microcontroller:
Since the GPIO interface is optically isolated, the host most also supply 3.3-5.0V power on VIN, to power its side of the optocoupler. The current drawn will be <20mA. GPI2/RS is pulled up to VIN in the camera, so the host-supplied power should match the logic voltage.
There are two options for remote start/stop behavior: RS EDGE and RS LEVEL, selectable in the GPIO Menu Setting or in the App.
In RS EDGE, the rising edge of the GPI2/RS signal toggles recording on or off. Debouncing and edge detection are handled on-camera. The minimum low pulse is 10ms and the minimum high pulse is 500ms. Pulses shorter than these values may be ignored.
In RS LEVEL, the recording starts on the falling edge of the GPI2/RS signal and continues until the rising edge. Debouncing and edge detection are handled on-camera. The minimum low pulse is 500ms and the minimum high pulse is 500ms. Pulses shorter than these values may be ignored.
The GPI2 and GPO2 signals can also be used for frame synchronization.
When SYNC OUT is selected in the GPIO Menu Setting, GPO2 will output a short negative pulse for each frame with its falling edge aligned to the start of exposure. The GPO1 signal will also output FPS settings and record start/stop commands to control other cameras.
When SYNC IN is selected in the GPIO Menu Setting, a falling edge on GPI2 will trigger the start of exposure of a frame (subject to minimum and maximum FPS constraints). This can be used to synchronize to another Ember in SYNC OUT mode, or to an external frame trigger source.
An external host can control the camera by transmitting a specific packet to the camera, which receives it on the UART Rx pin. The UART configuration is 115200 8-N-1. Packets may be sent only when user inputs are made on the external device (preferred) or on a regular interval up to 100Hz.
The following table specifies the packet used to remotely control the on-camera menu and start/stop recording. Numbers with an 'h' suffix (e.g. 51h) are hexadecimal values. Numbers with no suffix are decimal values. Characters in single quotes (e.g. 'Q') are ASCII characters.
Position | Value | Description |
---|---|---|
0 | 'Q' (51h) | Start Byte 1 |
1 | 'X' (58h) | Start Byte 2 |
2 | 20 (14h) | The length of the packet between this position and the checksum, exclusive. |
3 | 91h | Attribute ID 1: 80h | (10001 & 7Fh) |
4 | 4Eh | Attribute ID 2: (10001 >> 7) & 7Fh |
5 | 62h | Options Byte: Tells the receiver that the packet is unencrypted and does not require a response. |
6 | Mode | Reserved for future use. Must be set to 00h. |
7 | Record | State of the remote Record button: 00h = Not Pressed 02h = Pressed All other values reserved for future use. |
8 | Jog | Signed two’s complement value indicating the number of positions to jog (scroll) the on-camera menu or playback cursor. Positive values scroll right or down, negative values scroll left or up. |
9 | Select | State of the remote Select button: 00h = Not Pressed 01h = Pressed |
10-22 | Reserved | Reserved for future use. Must be set to 00h. |
23 | Checksum | This checksum byte is set such that the sum of bytes 3-23, mod 256, is 255 (FFh). |
The Record and Select bytes are intended to represent remote Record and Select button presses. They should indicate the physical state of a button without any intervening logic. Edge detection logic is handled by the camera. The camera record state will toggle when the Record byte transitions from pressed (02h) to not pressed (00h). Recording can also be started on-camera and stopped remotely or vice versa.
The Jog byte is intended to represent a scroll-wheel-like function for navigating the menu, changing settings, or controlling playback speed. Jog values are accumulated across multiple packets. To scroll right or down by one position, send a jog value of 01h in only one packet. To scroll left or up by one position, send a jog value of FFh (-1 in two’s complement) in only one packet. A scroll wheel or encoder with 10-30 increments per revolution works well. If one isn’t available, D-Pad buttons can be used to send individual increments or decrements.