Germany
Asked — Edited

Control Ubtech Alpha Servos With The Ez-B V4?

Hello, I have a question .

I have these servos in my robot and have now bought the EZ-B V4.

But if it does not get to work, can the Ez b control these servos?

The servos are all connected and the controller only has 1 cable

greetings

User-inserted image


ARC Pro

Upgrade to ARC Pro

With ARC Pro, your robot is not just a machine; it's your creative partner in the journey of technological exploration.

PRO
USA
#1  

Can you post more details:

Servo brand and model ?

or

Product/Kit details ?

Germany
#2  

Hey, thanks for your answer.

It is the Ubtech Alpha s1

Data of the servo:

UBTECH Alpha 1S Robot Parts Digital servo UBT-12HC

description:

Model UBT-12HC Communications: Serial communication Speed: 6.5V: 0.238sec / 60 ° 8.5V: 0.198sec / 60 ° Torque: 6.5V: 8kg.cm 8.5V: 12kg.cm Gear: Copper alloy gear Bearing: Ball Bearings Angle range: 0-180 °, Adjustable Dimensions (mm): 44 * 22.5 * 29 Weight (g): 42 Amount of operating voltage (V): 7.4V Stable Current: 2.5A Operating temperature range: 0-55 ? Protection: Over Voltage, Over Current Dead bandwidth (no reaction zone): 0 Feedback: Position / angle feedback

PRO
Synthiam
#3  

If there's a data sheet for the serial communication protocol, then it would be an easy implementation as a plugin. Post the datasheet and I'll take a look.

PRO
Synthiam
#4  

I can't find the datasheet that contains communication protocol. Can anyone else find it? Maybe ubtech customer support has it

PRO
Belgium
#5  

There is no contact to get with ubtech.there is not even a forum.

Germany
#6  

Can not find anything to unfortunately:( That's a shame I was so happy to test my ezb.

Germany
#7  

Is it possible to read the datasheet of the servo via the Ubtech Pc software?

PRO
Belgium
#8  

not with the standard program from alpha1 and 2 this is the only link i can google.

ubtech

Germany
#9  

Does the Alpha 1 Series PC communication proto continue to help?

PRO
Belgium
#10  

i didn get any contact with UB on there site or FB or skype.they dont just respond.

#11  

Quote:

Does the Alpha 1 Series PC communication proto continue to help?
No, that is for communicating with the controller, not the servos.

Alan

Germany
#12  

I have also ubtech times now hopefully they have an answer. Or do you have any idea Dj Sures?

Germany
#13  

Which data do we need exactly?

#14  

Quote:

Which data do we need exactly?

Serial protocol for the servos.

Alan

Germany
#15  

And that is not enough? Sorry for the questions I'm newbie

User-inserted image

#16  

No, that is not enough. Most servos use a standard communication method called PWM (see hte servo tutorial in the learn section of the web site). These are custom servos that use Serial communication, and probably a proprietary instruction set. Dynamixel servos also do this, but they publish the instruction set so DJ was able to write a plugin. For anyone to write a plugin for these, we need the data rate and other connection properties, and the instructions and responses of the communication protocol.

Very unlikely UB is going to provide this.

Alan

Germany
#17  

Okey, I have no hope. Then I'll have to resell the Ubtech again:(

PRO
Belgium
#18  

andy627

what is it what you try to do ?

PRO
Belgium
#20  

RR

he wanted to use the UB servo's on ezbv4 ? or does he wanted to make a robot ?

#21  

@Nomad... He wants to control those servos with the ezb4... But without the communication protocol he won't be able to...

Germany
#22  

Have received an answer from Ub:

Hi Andy , that information is confidential and we can´t share it.

PRO
Belgium
#23  

amazing you get respons from UB witsh adres did you use if i may ask.

Germany
#24  

YES: D I wrote a message today at noon on Facebook page and 2 hours later I had the answer

PRO
Belgium
#25  

yes they have a few FB off UB

PRO
Synthiam
#26  

The protocol can easily be reverse engineered using a logic analyizer. I use saleae logic 16

Australia
#27  

after getting 2 reasonably cheap ubtech Alpha 2 robots I'd also love to be able to use ezb to control them

I've been able to find the following,

from https://alexsonea.com/2017/10/15/jimu-hacking-the-communication-protocol/ For the time being here is a summary of the finds:

the communication is at 115,200bps packages are send separately by servo; it doesn’t seem to be a bulk send instruction the package has the following structure: byte 1 and 2 = preamble = 0xFA 0xAF byte 3 = servo ID byte 4 = Command; for go to command we have = 0x01; we will try to find some other commands shortly byte 5 8 = Command parameters; for command = 0x01 (go to) they are: byte 5 = position = 120 + desired position in degrees byte 6 = duration = duration in ms / 20 byte 7 = 0x00 (? we don’t know what this is yet) byte 8 = 0x01 (? we don’t know what this is yet) byte 9 = checksum = sum(byte 3 through 8) mod 256 byte 10 = closure = 0xED (from END?) the servo returns one byte that seems to contain something specific to the ID of the servo (for ID 1 it answers with 0xAB, for 5 it answers with 0xAF; the content could be a status information where each bit has a meaning, similar to the status packet in the Dynamixel protocol

https://www.thanksbuyer.com/ubtech-alpha1s-digital-servo-built-in-avr-develop-board-6v-9v-ubt12hb-55166Protocol analysis method:(need robot)

FA AF 01 04 00 00 00 00 05 ED switch on led light FA AF 01 04 01 00 00 00 06 ED switch off led light Write servo:FA AF id 01 angle ? ? ? SUM ED Servo response:FA AF id AA ? ?real angle sum ED Read data:FA AF id 02 00 00 00 00 SUM ED Present experiment order (CD order is modification servo ID.) Order can do experiments in 01..FF sequence. Frame header:FA AF;frame ender:ED,SUM=ID+order+parameter,get the lowest 1 byte Frame header (2 byte) ID(1 byte) order(1 byte) parameter (4 byte) SUM(1 byte)frame ender(1 byte) Communicaton protocol format (length:10 byte) Initialization,electricity is on.And then separate it and control single servo with computer TTL. Connect computer TTL serial to the servo port.The computer (sscom32 serial software) can record it to the file when playing robot. Protocol analysis method:(need robot)

Modify ID:FA AF ID CD 0 newid 0 0 SUM ED

being able to control this LED eye with ezb would also be very cool ( https://alexsonea.com/2017/11/19/jimu-led-light-breakdown/ ) unfortunately I don't have the skills to create a plugin, but would be more than happy donate some $ to someone who can

Germany
#28  

Dj can you do something with it?

PRO
Synthiam
#29  

I can. I won’t be able to test but I can whip something up. Stay tuned

Australia
#30  

thanks DJ, more than happy to test whatever you come up with

Germany
#31  

Thank you DJ you are the best

Germany
#32  

hey one question yet these servos run but without problems with the Ez-b v4?

User-inserted image

#33  

Quote:

hey one question yet these servos run but without problems with the Ez-b V4?

They should. From what I could find, they are 7.4v, so OK to use a 2s LiPo battery (recommended for EZ-B) to drive them directly from an EZ-B without worrying about alternate power or voltage regulators.

Alan

PRO
Belgium
#36  

i tested these servo's today.wiht a lipo 1300 mah you do some 12 minites then your batt is empty.if you want to build a complete robot you need a batt, aleast 2500 mah

PRO
Synthiam
#37  

nomad - what servos are those? 12 minutes is not very long!

PRO
Belgium
#39  

i forgot the robot has a 2800 mah batt.

Germany
#40  

Hello Nomad I'm just building my EZb in an almost same robot. Do you have more videos? Can you let him go? If so, can I get the script?

PRO
Belgium
#41  

he's charging now.i try the walk later and post a video. you will need to adjust a lot.all standard jd have to go. and make your own.

Germany
#42  

Ok thanks , i am excited to look the Video

PRO
Belgium
#43  

here an update metal robot.you can choose for original jd movement do, you have to adjust everything.also calibrate everthing with the levers and horns, off.the problem with raising arms is solved,found that one. now hope i get the walking and sit down and so.

User-inserted image

PRO
Synthiam
#44  

The frame assigned to the STOP action in Auto Position has his arms raised.

Edit the frame that is assigned to the STOP action and move his arms into the position that you wish.

Locate the name of the frame that is assigned to STOP action...

User-inserted image

Edit that frame...

User-inserted image

PRO
Belgium
#45  

hi dj

i found this .sofar ok but walking will be really diff.

PRO
Synthiam
#46  

Andy/Nick anyone... can you try this? This is a quick script i created to test moving the servos based on the info you provided. I'll use this as an EZ-Script test before making it a plugin.

  1. Connect the servos to the UART #0 TX
  2. Power the servos with appropriate power

# Move Alpha 2 servo attempt using UART
# Connect signal of the Alpha 2 servo to UART #0 TX port
# Moves the servo set for ID #0

DefineArray($data, 10)

$data[0] = 0xfa
$data[1] = 0xaf
$data[2] = 0x00 # servo ID 0
$data[3] = 0x01 # command: goto
$data[4] = 120  # Position: We will modify this value in the loop 
$data[5] = 100  # MS/20 duration? no idea
$data[6] = 0x00 
$data[7] = 0x01
$data[8] = 0    # we calculate checksum in the loop
$data[9] = 0xed 

UartInit(0, 0, 115200)

:loop

# some random position to try moving to
$data[4] = 120 + getrandom(10, 100) 

print("Moving to position " + $data[4])

# calculate checksum
$data[8] = ($data[2] + $data[3] + $data[4] + $data[5] + $data[6] + $data[7]) % 256

UartWriteBinary(0, 0, $data)

# pause for 2 seconds between movements
sleep(2000) 

goto(loop)

#47  

Great robot!

I love the work you're doing and the community's help with your project.

Scott

Australia
#48  

Hi DJ,

I should be able to test out the script tonight, sorry for the late reply just got back from holidays.

Nick

Australia
#49  

Hi DJ,

Great news the script works, tested on ubtech servo's for alpha 2 and the Jimu robot set

thank you so much for taking the time to create a plugin for these servos I really appreciate it

Nick

PRO
Synthiam
#50  

Okay, can you try something for me? I’ll need to know the range. The documentation says it’s 120+position. The maximum value is 255.

So does that mean the position is between 120 and 255?

Can you remove the GetRandom() and change it to some values to find the max and min positions values for me?

Australia
#51  

both servos can move from 0 - 252

PRO
Synthiam
#52  

Interesting, so adding +120 to the desired position from the documentation is incorrect?

Australia
#53  

yes it appears so, I inputed the values directly into $data[4] anything above 253 actually comes up with an error

PRO
Belgium
#54  

is there a tutorial how to do this what you did with the servo nick777 ?

Australia
#55  

Hi Nomad,

all I did is connect the positive and negative of the servo to D0 and the control wire to TX from uart0

PRO
Belgium
#56  

ah i can use D23 too the control wire is the signal white wire ?too TX

Australia
#57  

yes I meant signal wire

PRO
Belgium
#58  

what do i need to adjust in the script from dj? i have an alpha2 too and a metal robot. thanks

PRO
Belgium
#59  

got it .i have 151 to 216 not alpha2 but the mettal robot

User-inserted image

#60  

Quote:

what do i need to adjust in the script from dj? i have an alpha2 too and a metak robot. thanks

Patrick,

The script was just for testing. DJ is going to write a plugin based on the results. You don't need to do anything with the script and should not use it.

Alan

Australia
#63  

Thanks so much DJ, can't wait to give it a try tonight

PRO
Belgium
#64  

nick777

did you open your alpha 2.?

Australia
#65  

Hi DJ,

just had an opportunity to try the plugin but can't get it to work

added the plugin to a new project with the following settings Hardware uart0 two virtual servos checked V1 and V2 plugin shows Connected Events UART 0 @ 115200bps added a Movement Panel and added the 2 virtual servos tried moving the servos but nothing happens?

the script still works fine

running windows 10 with latest updates

PRO
Synthiam
#66  
  1. The id’s of the servos are V1 and V2? They need to match. In the test code I sent earlier, the ID was 0 (zero). Can you try with that servo again, on V0?

  2. What Movement Panel did you add?

  3. the plugin removed the 120+position as we discussed. To clarify, in your testing you also removed the 120+? So you tested with 0 and 252? Not adding 120 to anything?

  4. Also, can you try it with only one Servo?

Australia
#67  
  1. the id's on the servos are 1 and 2, I changed your test script to match. I don't have any servos with id 0

  2. I tried both

3)yes I removed the 120 from your script and inputed the values from 0 - 252 directly into $data[4]

  1. have tried both servos separately no difference

also noticed that once I remove the Ubtech plugin from a project and try to add it again it crashes the plugin on startup and the only way to get it to load again is by restarting windows. Unfortunately I was unable to get a screen shot of it last night, will post later.

I will load ARC on a another computer and try that just in case

Nomad, have you had a chance to try the plugin ?

PRO
Synthiam
#69  

Okay thanks. I’m trying in the dark here without servos to test with, so thanks for your patience!

PRO
Belgium
#70  

alan said not to use it?

#71  

Quote:

alan said not to use it?

I said that you should let others help with the test script and wait for the plugin. We are now talking about the plugin. You should try it.

Alan

PRO
Synthiam
#73  

Nick, can you try the plugin with only one V port selected. Meaning, only attempt to move one servo. And, use this script...


:loop

ServoRandom(v2, 10, 100)

Sleep(2000)

goto(loop)

And tell me if the servo moves using the plugin and this script - thanks!

PRO
Synthiam
#75  

@Nick - any word on the updated plugin?

Australia
#76  

Hi DJ,

Sorry no, been away from home on business since last Thursday, back Friday will be able to test then.

I’d be more than happy to send you a Jimu robot kit with servo’s from amazon if it would make things easier ? Just email me a shipping address

Either way I’ll do the tests you’ve asked for by Friday

Nick

PRO
Synthiam
#77  

Let’s try the plugin first. I had a few mistakes that I didn’t notice when I first published it. Thanks for the offer though.

Australia
#79  

Hi DJ,

The plugin works great, had problems initially with it crashing on startup but this seems to be resolved after a windows reload

tested so far with 3 different types of ubtech servos chained together, working really well.

I know I'm pushing my luck but a feature request would be to add an option to read a set of linked servos and get it to automatically generate a frame in the auto-position plugin, my reason for requesting this is to make it easier for younger kids to be able to use it to make robot skits.

Thanks again, now I just to give the Alpha 2 an EZB brain transplant

Nick

PRO
Synthiam
#81  

Latest update fixes a crash of ARC when adding the control with ez-b already connected.

#82  

Cool, I just got a 16 servo Jimu robot off ebay. It needs an EZ Robot upgrade! They make a set to build a humanoid robot, but it can't hear, see or talk. If I want it to walk forward then I need to make my own walk cycle for it. It can't move its head and no lights for eyes. I just really wanted the 16 servos to use for another EZ Robot! If they sold these sets with an EZ Robot brain and a camera they would have something super cool. It would still need a few more servos so it could look around and hands to pick things up. Glad I have a JD robot, he does everything right out of the box.

PRO
Synthiam
#83  

Contact ubtech and let them know:)

South Africa
#84  

Andy627 did you get the Ubtech servos to work. ? I want to do the same thing

#85  

So if I understand we can replace all the alpha 1 electronics with your board and have a fully custom alpha?

South Africa
#86  

ruallapeira. Thats exactly what I want to do farley@voltex.co.za

#87  

Hi guys:

I am thinking how would I use the IOTiny with this and I only see this line on wiring:

"all I did is connect the positive and negative of the servo to D0 and the control wire to TX from uart0 " (guess this is with the EZ-B V4)

Do we have specific info on how to do the following with the IoTiny:

"This plugin requires the RX signal wire of the servo be connected to TX of the selected UART or digital port (if Software UART is selected)"

I dont mind buying some EZ-B but I rather stick with a way to use IoTiny if possible.

PRO
Synthiam
#88  

The help in the plugin explains how to use it with iotiny. Simply use any of the digital ports for the connection. And specify the correct port in the plugin. Read the blue question marks and the plugin help beside options and it’ll make senses

#89  

thanks I will acquire a couple of boards... probably with the board in my hand it will be obvious

PRO
Belgium
#90  

[color=#442e5f][size=3][font=OpenSans, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"]hi raullapeira

[color=#442e5f][size=3][font=OpenSans, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji]do you have any video about this project with the ubt robot? [/font][/size][/color]

[/font][/size][/color]

#91  

Hi all guys ! I see that the alpha 1S issue is intriguing many people . I have it  and of  course I'd like to control it by ezb v4.  I need to know more about interfacing its servos. I saw there's a plug-in and some hardware information. I need to know, (I hope somebody in the forum has experienced these matters) :

Hardware : I'm attaching a photo, where 4  3-pin JST plugs can be seen. I think each of them drives  , by 4 independent serial buses, some  of the servos . Which  pins are  +,-, rx/tx pin ? how to connect these 4 buses to ezb ? I saw in the forum a simple scheme, but more detail is needed.

Software: the plug-in I found in this  forum is designed for  such 4-bus hardware , so to control , by ezb, each servo separately ?

attachment

User-inserted image

#92  

I downloaded the plug in. It's an old PC, with win 7, non recent ezb version. I got this error.

User-inserted image

What's going on ?

PRO
USA
#94  

Update the ARC.

What's going on?

It looks like the plugin uses a more recent or non existent class/object in an older ARC version.

Keep your ARC updated, is a good recipe to avoid trivial issues.

#95  

Is the last ezb release (jan 2019) compatible with win 7 ? if not, I might have a problem with this old PC.

PRO
Synthiam
#96   — Edited

Ptp is correct. In order to add new features, the software continues to grow.

The latest ARC beta will technically run on Windows 7 but it’ll give a warning because it’s not recommended. Windows 7 was discontinued by Microsoft and no longer supported. This means new features of ARC are absolutely impossible to be supported in Windows 7 because Microsoft doesn’t support it.

*note: do not duplicate post.

#97   — Edited

Yes, I got the warning you say in the win 7 PC, but everything seems to work.  I intend to test  alpha 1S servos with ezb v4. The servo plugin seems to work.  Now I have only this old PC available for this test. I need information about the hardware connection  of those 16 servos to ezb. I asked for this in another post. Can you help  ?

PRO
Synthiam
#98  

Wish I could help - but i do not have a servo or that robot to test with. In this conversation thread, there is someone way way up there who had a link to someone who reverse engineered the protocol. Maybe they showed how to connect the wires? I also believe Nink got them working, as he stated above. I would recommend browsing this conversation thread. There's 92 comments on that developed this thread - with great help i hope

#99  

I posted in this thread a photo of the  robot controller, showing  4 JST plugs connecting  to 4 serial buses to the servos. The servos  work connected to a common line, addressed  by their specific address , the way  it happens in a serial I2C  bus.  Somebody has certainly tested this connection, but I don't know how to communicate with him. I hope he will reply to this post.

PRO
Synthiam
#100  

It isn't i2c. It's UART, as stated everywhere in this thread AND the plugin description. All you need to do is identify the Data, GND and Power wires of the servo connector. Follow the instructions on the ubtech plugin page here: https://synthiam.com/Software/Manual/UBTECH-Alpha-Servos-UBT-12HC-16022

If you read this conversation thread as i stated, you will find that there is a link that discusses the ID's and how it works. You will need to put a little leg work in to get it rock'n. Each servo has an ID. The lowest ID is 1. I'm sure the UB Tech software shows what ID is for what servo. If not, you'll have to experiment and try.

Connect them as described by the plugin. To the UART that you choose and power and gnd. I don't have a servo, but it would be pretty easy to look and see what wires are for what. Or, use google to research and find it. That's all i can do to help

#101  

I know it's not I2C. I meant that those servos work on a common bus (like I2C  does), instead of  individual connections like usual PWM servos.

I think  all the 16 servos should  work  on  a single control  line. I'll study the  plugin information , looking for details., i.e.:

  1. Direct connection of one digital or UART ezb port to a single servo control  line, with  16 servos on it ? 2)Control wire is bi-directional.  What happens if ezb sends bytes to servos while servos themselves are sending bytes on the control line ?)

I hope that experienced members could explain . In lack of information , I'll look at the control pins   with an oscilloscope a let everybody know.

#102  

Yes one control line can control all 16 of the servos all at once. The timing is set so the servos and the EZ Robot board always send and receive at the right times. You can use the IO Tiny with a camera to make this robot do much more than it could before.

#103   — Edited

Thanks, mcsdaver.  Alpha robot has 4 jst plugs with  4 separate 3-wire cables to the servos (as you can see in  a previous post of mine). I think they are separated only for mechanical convenience of wiring, but probably they are all connected together in the pcb. I see no logic reason to control several groups of servos independently  by the controller. I assume that the ezb v4  (uart or digital pin)  can drive the common line of all the 16 ubtech servos. Do you know which jst pins are +,-, rx/tx ?

#104  

I don't have the same servos that you have, so I am not sure how to connect them to the V4 or IO Tiny.

PRO
Synthiam
#105  

Yah - they would be separated for mechanical reasons. The left side is probably one wire and the right side is another wire. But they all group together at the same place to the same connections on the PCB.

I looked around and can't seem to find any info on which wire is + or GND or signal. I'm guessing you can figure it out by looking at the board OR probing the connector with a volt meter

#106   — Edited

I discovered the voltages with a volt  meter:   7,5 v power is  center oin , one side is GND, other side is 5 V (control wire, high logic level ). I connected one of the jst plugs and tested the ezb plugin . It was able , by the real time control in the frame screen,  via UART and  V3,V4,V5, the 3 servos of one arm. The other plugs are probably for the other arm and the two legs. The movement is  slow and weak. Those servos, when operated from their controller, are quite fast and strong. I made an action with 2 different frames alternating ,  pausing for of 500 ms, but it doesn't work. The servos  remain in one of the frames. I haven't found in this thread  someone who has done such tests. I'd like to hear from  someone who did . I hope that  DJ could have one servo and some time to do a test , to understand what happens.

#107   — Edited

Hi all,  here is my research and what I found :

Baud rate:115200 Data bit:8 Stop:1 Check:0 Flow control:NONE TTL multi-layer connection,shared-bus ID:1-240 Feedback:position:deviation adjustment,version information

Serial parameter:115200,8,n,1,1

Protocol analysis

EMBEDDED LED // FA AF 01 04 00 00 00 00 05 ED switch on led light // no LED on mine // FA AF 01 04 01 00 00 00 06 ED switch off led light// no LED on mine RESPONSE AA + id // not tried yet as I cannot see with my proto board

GET VERSION FC CF {id} 01 00 00 00 00 {sum} ED            // not tried yet  RESPONSE FC CF {id} {V-1} {V-2} {V-3} {V-4} {sum} ED this can be used to check if servo exist in a loop "for id"

MOVE SERVO // FA AF {id} 01 {angle} {time} {T1} {T2} {sum} ED whre T1=0 and T2= {time}= TIME to execute in ms / 20 0 to 255(FF) ie 5.12 second to execute RESPONSE AA + id // not tried yet as I cannot see with my proto board

GET POSITION // FA AF {id} 02 00 00 00 00 {sum} ED // not tried yet REPONSE FA AF {id} 00 {angle} 00 {real} {sum} ED // not tried yet as I cannot see with my proto board

SET OFSET ANGLE // FA AF {id} D2 00 00 {A1} {A2} {sum} ED where A1 adjValue/256 and A2 adjValue%256  // not tried yet RESPONSE FA AF {AA + id} 00 00 00 00 {sum} ED

GET OFSET ANGLE // FA AF {id} D4 00 00 00 00 {sum} ED   // not tried yet RESPONSE FA AF {AA + id} D4 00 00 {A1} {A2} {sum} ED where A1 adjValue/256 and A2 adjValue%256

All works now, just think to cross wire in the daisy chain, else GND become DATA on next servo and block all transmission....

Unknown Country
#108  

hey guys, just wondering if this protocol will be compatible with this old UBTech servos... I think those are Pre-Alpha version servos...

Any hint? Thanks!

PRO
Synthiam
#109  

Only one way to find out:)  Give it a try!

Unknown Country
#110   — Edited

I have some Arduino, SN74LS241N (for communications though one wire), Dynamixel control board and some raspberry Pi around. Any hint how to try it?  Those motors I commented about are from the UBTECH ALPHA MINI robot, which came later than the Alpha 1 and 2, hopefully they use the same code!

PRO
Belgium
#111  

hi

there are no updates for win7