Changes for page LSS-PRO Communication Protocol
Last modified by Eric Nantel on 2024/09/06 14:52
Change comment: There is no comment for this version
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -1,6 +1,8 @@ 1 1 {{warningBox warningText="More information coming soon"/}} 2 2 3 3 4 + 5 + 4 4 (% class="wikigeneratedid" id="HTableofContents" %) 5 5 **Page Contents** 6 6 ... ... @@ -8,7 +8,7 @@ 8 8 9 9 = Serial Protocol = 10 10 11 -The Lynxmotion Smart Servo (LSS) PROserial protocol was created in order to be as simple and straightforward as possible from a user perspective ("human readable format"), while at the same time staying compact and robust yet highly versatile. The protocol was based on Lynxmotion's SmartServo (LSS) protocol, which itself was based on the SSC-32 & SSC-32U RC servo controllers.The LSS PRO seriesandnormalLSS sharemanyof thesame commands, butbecauseofhigher angularprecision,slightlydifferent operationand differentfeatures,thetwoprotocolsdo not fully overlap.13 +The Lynxmotion Smart Servo (LSS) serial protocol was created in order to be as simple and straightforward as possible from a user perspective ("human readable format"), while at the same time staying compact and robust yet highly versatile. The protocol was based on Lynxmotion's SSC-32 & SSC-32U RC servo controllers and almost everything one might expect to be able to configure for a smart servomotor is available. 12 12 13 13 In order to be able to control each servo individually with commands, the first step should be to assign a different ID number to each servo (see details on the Configure ID, or "CID" command [[here>>doc:||anchor="HIdentificationNumber28ID29"]]). Only the servo(s) which have been configured to a specific ID will act on a command sent to that ID. There is currently no CRC or checksum implemented as part of the protocol. 14 14 ... ... @@ -23,13 +23,13 @@ 23 23 1. End with a carriage return **\r** or **<cr>** Unicode Character (U+000D) 24 24 25 25 ((( 26 -Ex: #5D1 30000<cr>28 +Ex: #5D18000<cr> 27 27 28 -This sends a serial command to all servo's RX pins which are connected to the bus and only servo(s) with ID #5 will move to a position (1 3000inhundredths of degrees) of 130.00degrees. Any servo on the bus which does not have ID 5 will take no action when receiving this command.30 +This sends a serial command to all servo's RX pins which are connected to the bus and only servo(s) with ID #5 will move to a position (1800 in tenths of degrees) of 180.0 degrees. Any servo on the bus which does not have ID 5 will take no action when receiving this command. 29 29 30 30 == Modifiers == 31 31 32 -{{html clean="false" wiki="true" __cke_selected_macro="true"}}34 +{{html clean="false" wiki="true"}} 33 33 <div class="cmdcnt"><div class="cmdpad"></div><div class="cmdtxt"> 34 34 Modifiers can only be used with certain **action commands**. The format to include a modifier is:<div class="wikimodel-emptyline"></div> 35 35 ... ... @@ -41,9 +41,9 @@ 41 41 1. Modifier value in the correct units with no decimal 42 42 1. End with a carriage return **\r** or **<cr>** Unicode Character (U+000D) 43 43 44 -Ex: #5D1 3000T1500<cr><div class="wikimodel-emptyline"></div>46 +Ex: #5D1800T1500<cr><div class="wikimodel-emptyline"></div> 45 45 46 -This results in the servo with ID #5 rotating to a position (1800 in tenths of degrees) of 1 30.00degrees in a time ("T") of 1500 milliseconds (1.5 seconds).<div class="wikimodel-emptyline"></div>48 +This results in the servo with ID #5 rotating to a position (1800 in tenths of degrees) of 180.0 degrees in a time ("T") of 1500 milliseconds (1.5 seconds).<div class="wikimodel-emptyline"></div> 47 47 <div class="wikimodel-emptyline"></div></div></div> 48 48 49 49 <div class="cmdcnt"><div class="cmdpad"></div><div class="cmdtxt"> ... ... @@ -54,9 +54,9 @@ 54 54 1. Query command (one to four letters, no spaces, capital or lower case) 55 55 1. End with a carriage return **\r** or **<cr>** Unicode Character (U+000D)<div class="wikimodel-emptyline"></div> 56 56 57 -Ex: #5QD<cr> Query the position in ( hundredthsof) degrees for servo with ID #5<div class="wikimodel-emptyline"></div>59 +Ex: #5QD<cr> Query the position in (tenth of) degrees for servo with ID #5<div class="wikimodel-emptyline"></div> 58 58 59 -The query will return a serial string (almost instantaneously) via the servo's Tx in the following format: 61 +The query will return a serial string (almost instantaneously) via the servo's Tx pin with the following format: 60 60 61 61 1. Start with an asterisk * (Unicode Character: U+0023) 62 62 1. Servo ID number as an integer ... ... @@ -66,9 +66,9 @@ 66 66 67 67 There is currently no option to control how fast a servo replies after it has received a query command, therefore when sending a query command to the bus, the controller should be prepared to immediately "listen" for and parse the reply. Sending multiple queries to multiple servos on a bus in fast succession may result in replies overlapping and giving incorrect or corrupt data. As such, the controller should receive a reply before sending a new query command. A reply to the query sent above might be:<div class="wikimodel-emptyline"></div> 68 68 69 -Ex: *5QD1 3000<cr><div class="wikimodel-emptyline"></div>71 +Ex: *5QD1800<cr><div class="wikimodel-emptyline"></div> 70 70 71 -This indicates that servo #5 is currently at 1 30.00degrees (13000tenths of degrees).73 +This indicates that servo #5 is currently at 180.0 degrees (1800 tenths of degrees). 72 72 <div class="wikimodel-emptyline"></div></div></div> 73 73 74 74 <div class="cmdcnt"><div class="cmdpad"></div><div class="cmdtxt"> ... ... @@ -249,8 +249,25 @@ 249 249 </div></div> 250 250 {{/html}} 251 251 252 -====== ====== 254 +====== __Configure RC Mode (**CRC**)__ ====== 253 253 256 +{{html wiki="true" clean="false"}} 257 +<div class="cmdcnt"><div class="cmdpad"></div><div class="cmdtxt"> 258 +This command puts the servo into RC mode (position or continuous), where it will only respond to RC PWM signal on the servo's Rx pin. In this mode, the servo will no longer accept serial commands. The servo can be placed back into smart mode by using the button menu.<div class="wikimodel-emptyline"></div> 259 + 260 +|**Command sent**|**Note** 261 +|ex: #5CRC1<cr>|Change to RC position mode. 262 +|ex: #5CRC2<cr>|Change to RC continuous rotation (wheel) mode. 263 +|ex: #5CRC*<cr>|Where * is any value other than 1 or 2 (or no value): stay in smart mode.<div class="wikimodel-emptyline"></div> 264 + 265 +EX: #5CRC2<cr><div class="wikimodel-emptyline"></div> 266 + 267 +This command would place the servo in RC wheel mode after a RESET or power cycle. Note that after a RESET or power cycle, the servo will be in RC mode and will not reply to serial commands. Using the command #5CRC<cr> or #5CRC3<cr> which requests that the servo remain in serial mode still requires a RESET command.<div class="wikimodel-emptyline"></div> 268 + 269 +**Important note: **To revert from RC mode back to serial mode, the [[LSS - Button Menu>>doc:lynxmotion-smart-servo.lss-button-menu.WebHome]] is required. Should the button be inaccessible (or broken) when the servo is in RC mode and the user needs to change to serial mode, a 5V constant HIGH needs to be sent to the servo's Rx pin (RC PWM pin), **ensuring a common GND** and wait for 30 seconds. Normal RC PWM pulses should not exceed 2500 milliseconds. After 30 seconds, the servo will interpret this as a desired mode change and change to serial mode. This has been implemented as a fail safe.<div class="wikimodel-emptyline"></div> 270 +</div></div> 271 +{{/html}} 272 + 254 254 ====== __Identification Number (**ID**)__ ====== 255 255 256 256 {{html wiki="true" clean="false"}} ... ... @@ -972,3 +972,5 @@ 972 972 == RGB LED == 973 973 974 974 The LED can be 994 + 995 +