Skip to content

Latest commit

 

History

History
196 lines (196 loc) · 63.4 KB

MiPosaur-Protocol.md

File metadata and controls

196 lines (196 loc) · 63.4 KB
Name Code Direction Length Data Notes
Driving Features
Distance Drive 0x70 ->Miposour 5 BYTE 1 : Forward: 0X00 or Backward: 0X01 20 commands are queued
BYTE 2 : Distance (cm): 0x00-0xFF No speed control
BYTE 3 : Turn Clockwise: 0X00 or Anti-clockwise: 0X01
BYTE 4 : Turn Angle(High byte): 0x00~0x01
BYTE 5 : Turn Angle(Low byte): 0x00~0xFF Note:0x0000(0)~0x0168(360)
Drive forward with Time 0x71 ->Miposour 2 BYTE 1 : Speed (0~40)
BYTE 2 : Time in 7ms intervals (0~255) 35ms
Drive backward with Time 0x72 ->Miposour 2 BYTE 1 : Speed (0~40)
BYTE 2 : Time in 7ms intervals (0~255) Time = Byte2 Value * 7ms
Turn left by Angle 0x73 ->Miposour 2 BYTE 1 : Angle in intervals of 5 degrees (0~255) Angle = Byte1 Value * 5
BYTE 2 : Speed (0~24)
Turn right by Angle 0x74 ->Miposour 2 BYTE 1 : Angle in intervals of 5 degrees (0~255) Angle = Byte1 Value * 5
BYTE 2 : Speed (0~24)
Continuous Drive 0x78 ->Miposour 2 Fw:0x01(slow)~-0x20(fast) Buffer = 0
OR Bw:0x21(slow)~0x40(fast) This command is for single drive or turn
right spin:0x41(slow)~0x60(fast) Note:Sending per 50ms if held
OR Left spin:0x61(slow)~0x80(fast)
Carzy Fw:0x81(slow)~-0xA0(fast)
OR Carzy Bw:0x81(slow)~0xC0(fast)
Carzy right spin:0xC1(slow)~0xE0(fast)
OR Carzy Left spin:0xE1(slow)~0xFF(fast)
Interaction Features
Play Animation 0x76 ->Miposour 1 BYTE 1 : AnimationID The same as cancel Gesture and Radar. If we send multiple play animation command, they should queue up
BYTE 2 : 0x00 - Enable Sound, 0x01 - Disable Sound
Play Animation Finished 0x76 iOS <- 1 BYTE 1 : AnimationID Send back to APP when animation finish
Play Sound 0x06 ->Miposour 1 BYTE 1 : Sound file index (1~106) or send 0xF7-0xFE for volume Send 105 to stop playing
2 BYTE 2 : Delay in intervals of 30ms (0~255)
… (repeat sound file index then delay for as many files as you want to play)
17 BYTE 17 : Number of times to repeat (0-255) Only need to send if you want the sequence to repeat
Battery/Position Features
Request Miposour Status 0x79 -> Miposour -
Miposour Status 0x79 iOS <- 4 BTYE 1 : Battery Level :0x4D(4.0V)-0x7C(6.4V)
BYTE 2 : Position Status
On Front - Can't Get up: 0x00
On Front: 0x01
Upright: 0x02 Note:Send one time per 30 seconds
On Back: 0x03 Note:it will be sent after(connecting,falldown,pickup….)
Sleeping Position:0x09
Picked up - Upright: 0x07
BYTE 3 : 0x00:Annoyed 0x01:Curious 0x02:Excited
BYTE 4: 0x00:Normal battery 0x01:rechargeable battery
Set Miposour Position 0x08 -> Miposour 1 BYTE 1 : On back: 0x00, Face down: 0x01, Upright: 0x02
Shake Detected 0x1A iOS <- 1 -
Delay time between two claps 0x20 -> Miposour 2 BYTE1(high)~BYTE2(low)(Delay time by two clap)
Ball Detection Features
Miposour Ball Situation 1 0x09 iOS <- 6 BYTE 1 : 0x01:Dance 0x02:Meat 0x03:TeddyBear 0x04:Ball 0x05:Leash 0x06:Nest
BYTE 2 :0x01:Shaking as standing 0x02:Shaking as sitting
BYTE 3 :0x01 - Beam off
BYTE 4 :0x01:Short range as standing 0x02:Short range as sitting
BYTE 5 :0x01~0xFF - Clap times
BYTE 6 : 0x01:See object on left 0x02:See object on center 0x03:See object on Right
Miposour Ball Situation 2 0x17 iOS <- 1 BYTE 1 :0x01--Got the Dance IR code data in Ball dancing mode
Miposour Ball Situation 3 0x15 iOS <- 2 BYTE 1 :0x01~0xFF--range
BYTE 2 :0x00:>=0 angle 0x01:<0 angle
BYTE 3 :angel
LED Features
Request Chest LED 0x83 ->Miposour - -
Chest LED 0x83 iOS <- 3 BYTE 1 : Red (0~255)
BYTE 2 : Green (0~255)
BYTE 3 : Blue (0~255)
BYTE 4 : if flashing then, TIME ON in 10ms intervals (0255) else Fade in time in 10ms intervals (0255)
BYTE 5 : if flashing then, TIME OFF in 10ms intervals (0~255) else will only be 4 bytes
Set Chest LED 0x84 ->Miposour 4 BYTE 1 : Red (0~255)
BYTE 2 : Green (0~255)
BYTE 3 : Blue (0~255)
Flash Chest LED 0x89 ->Miposour 4 BYTE 1 : Red (0~255) Value of 0 means LED color will be changed immediately
BYTE 2 : Green (0~255)
BYTE 3 : Blue (0~255)
BYTE 4 : TIME ON in 20ms intervals (0~255)
BYTE 5 : TIME OFF in 20ms intervals (0~255)
Set Head LED 0x8A ->Miposour 2 BYTE 1 : Eyes On time Time on = Byte4 Value * 8ms
BYTE 2 : Eyes Off time Time off = Byte5 Value * 8ms
BYTE 3 : Eyes flash times 1~255
Request Head LED 0x8B ->Miposour -
Head LED 0x8B iOS <- 3 BYTE 1 : Eyes On time
BYTE 2 : Eyes Off time
BYTE 3 : Eyes flash times
IR/Gesture Detection
Set Gesture Or Radar Mode 0x0C ->Miposour - BYTE 1 :
0x00: Keep IDLE mode Gesture or Radar(Radar:Sit down or face down Gesture:stand up)
0x01: Disable Gesture and Radar
0x02: Enable Gesture only
0x03: Enable Radar only
Get IR Status 0x0D ->Miposour - -
IR Status 0x0D iOS <- 1 BYTE 1 :
0x00: Keep IDLE mode Gesture or Radar(Radar:Sit down or face down Gesture:stand up)
0x01: Disable Gesture and Radar
0x02: Enable Gesture only
0x03: Enable Radar only
Miposaur Detection Mode 0x0E -> Miposaur 2 BYTE 1 : Off: 0x00, On: 0x1-255 for ID number
BYTE 2 : Set IR Tx power(1120)(About 1cm300cm)
Request Miposaur Detection Mode 0x0F -> Miposaur - -
Miposaur Detection Status 0x0F iOS <- 2 BYTE 1 : Off: 0x00, On: 0x1-255 for ID number This constantly 'pings' other MiPs/MiPosaurs to check if any are in range. When this is enabled it will automatically disable Radar mode & gesture mode
BYTE 2 : Set IR Tx power(1120)(About 1cm300cm)
Miposaur Detected 0x04 iOS <- 1 BYTE 1 : ID number,if got the 0x00 means find one MiPosaur without setting number
Set Mood 0x0B -> Miposour 1 BYTE 1 : 0x00:Annoyed 0x01:Curious 0x02:Excited
Gesture and Radar Detect 0x0A IOS<- 1 BYTE 1 :
0x01 - Swipe Front (L->R)
0x02 - Swipe Front (R->L)
0x03 - Swipe Around (L->R->B)
0x04 - Swipe Around (R->L->B)
0x05 - Hold Front and Back
0x06 - Front Towards
0x07 - Back Towards
0x08- Pulled
0x09- Pushed
0x0A- Seated_Backward
0x0B- Seated_Left
0x0C- Seated_Right
0x0D- Seated_Center
Miposour Detected 0x04 iOS <- 1 BYTE 1 : ID number,if got the 0x00 means find one Miposour without setting number
Send IR Dongle code 0x8C -> Miposour 6 BYTE1:IR data bit31~bit24
BYTE2:IR data bit23~bit16
BYTE3:IR data bit15~bit8
BYTE4:IR data bit7~bit0
BYTE5:IR data numbers(1~32):e.g. BYTE5=0x08 means BYTE4 is useful.
BYTE6:IR Tx power(1120)(About 1cm300cm)
Note:It can be useful in shoting game.
Receive IR Dongle code 0x03 iOS <- 3~5 BYTE 1 : 0x02,0x03,0x04 Receive an IR command
BYTE2~BYTE5 are the datas of Transmiting.
Byte2 is high byte,Byte5 is low byte
(0x03,0x02,0xNN,0xNN)
(0x03,0x03,0xNN,0xNN,0xNN)
(0x03,0x04,0xNN,0xNN,0xNN,0xNN)
Miposour Settings Features
Set Eeprom Data 0x12 -> Miposour 2 BYTE 1 : Data address(0x20~0x2F)
BYTE 2 : Data
Get Eeprom Data 0x13 -> Miposour 1 BYTE 1 : User Data address(0x20~0x2F) and other data is in Eeprom
BYTE 2 : Data
Miposour Eeprom Data 0x13 iOS <- 2 BYTE 1 : User Data address(0x20~0x2F) and other data is in Eeprom
Stop 0x77 ->Miposour - -
Sleep 0xFA Miposour<->IOS - Power down Power down bluetooth.
Disconnect App Mode 0xFE ->Miposour - - Miposour should switch off app mode and return to previous mode
Get Miposour Software Version 0x14 -> Miposour - -
Miposour Software Version 0x14 iOS <- 4 BYTE 1: Year1
BYTE 2: Year2
BYTE 3: Month
BYTE 4: Day
(BYTE1:0x20 BYTE2:0x15 BYTE3:0x03 BYTE4:0x27) means built in 20150327
Get Miposour Bootloader Bootloader version 0x34 -> Miposour - -
Miposour Bootloader Bootloader version 0x34 iOS <- 4 BYTE 1: Year (software ver)
BYTE 2: Month (software ver) Gets some software version info
BYTE 3: Day (software ver) Date of the software release
BYTE 4: Unique Version #
Get Miposour Hardware Info 0x19 -> Miposour - - this is used if more than one release on one day, normally it is 0x00
Miposour Hardware Info 0x19 iOS <- 2 BYTE 1: Voice chip version
BYTE 2: Hardware Version
Set MiPosaur Volume 0x18 -> MIP 1 BYTE 1: Volume level between 0-7 Sets the MiPosaur volume level, Power off save
Get MiPosaur Volume 0x16 -> MIP - -
MiPosaur Volume 0x16 iOS <- 1 BYTE 1: Volume level between 0-7 Reads the current MiPosaur volume level