Packet definition:
The message is composed by a 4 bytes header and 16 bytes payload (8x int16 values)
Messages are transmitted with UDP protocol from the app (iOS or Android) to the Arduino. Destination IP:, port 2222
There are two possible messages:
Header (ascii characters: 4 bytes)
JJBA or JJBM characters
Then the payload are 8 int16 values (with sign)
from channel 1 (iCH1) to channel 8 (iCH8)
Channel1 : Throttle
Channel2 : Steering (yaw)
Channel3 : Height control
Channel5 : Mode
   Mode 0=>manual,
   Mode 1=> Manual control with altitude hold
   Mode 2=> Yaw stabilization
   Mode 3=> Yaw stabilization with altitude hold
   Mode 100=> Stop motors
The other channels are available (not used so far)
Blimpduino arduino code transmit back a telemetry packet (text string) to IP:, port 2223 (UDP protocol) containing:
Battery value, Yaw angle, target_yaw_angle and laser_height:

“B:%02d A:%+04d T:%+04d H:%04d”, int(BatteryValue), int(MPU_yaw_angle), int(target_angle), int(laser_height);

Channels range values (min and max):

CH1 range: -500 to 500

CH2 range: -500 to 500
CH3 change in altitude in mm units (in actual app: button up +20mm, buttom down -20mm)
Need help with this? Ask the community