What Adurino do I need for Meccanoid?

Hello guys. I'm Darwin, and I am new to the Adruino hardware and how to program it (aside from other ways I know how to program). I brought and finished building the Meccanoid G15 KS robotics kit, and the Meccano site has gave me a way to program it on the computer, but I need help in deciding which Arduino I should get for Meccanoid. Are all the Adurino boards the same thing, (input, output), or is there something specific I need to program Meccanoid on the computer? And also, could you tell me how it would hook up to the MeccaBrain?

Do you have links to any of the Meccanno stuff?

I saw some Meccanno in the store the other day. Erector sets used to be all metal, used screws & nuts to hold it together, later little hex-head screws & nuts. Stuff I saw recently was all plastic!

CrossRoads:
Erector sets used to be all metal, used screws & nuts to hold it together, later little hex-head screws & nuts. Stuff I saw recently was all plastic!

A lot of it has gone to plastic, but you can still get metal pieces - they still make them, and the large Meccano/Erector community virtually need such for their creations - they'll take nothing less!

That said - it looks like this robot is mostly or all plastic (given the size and such - the motors would have to be huge to move steel):

The KS is the larger 4-foot tall robot.

Meccano - in something that is rarely seen today (?) - gives all the specs needed to control the smart servos (or LEDs) using another microcontroller - see their PDF here:

They show the circuit diagram needed to hook up to a smart servo - and the communication protocol is laid out nicely. It should be very straightforward to create a library - if someone else hasn't already done so. The servos and LEDs only need a 5 volt supply - a simple Uno would be a fine starting point; you'd have to experiment with how many you can daisy chain off a single I/O pin on the Arduino (that, or measure the current consumption for the servo data line, then divide that into 20 or 30). Likely you could use a couple of pins on the Arduino and control at least 4 of the servos daisy chained.

It's not clear what kind of connectors are being used - but a cursory glance seems to suggest standard R/C servo extensions would work OK.

Whoa!

Check this:

For $20.00 USD you can get one of these servos! Now - read that PDF I posted. You'll find that these motors can both be controlled via a daisy-chained serial connection - AND they can relay back position information!!!

$20.00 gets you a low-cost version of Robotis or Herculux "smart" digital servo! I was just lamenting the other day on that I wished a servo manufacturer would do something like this - I never expected Meccano would do it! They should sell these in multi-packs!

That robot of theirs is pretty expensive - about $190.00! But $160.00 of that is in the 8 servos. If you bought two of these robots (16 servos) - plus a couple of expansion packs (a total of about $400.00) - you could build yourself a very low-cost humanoid bipedal robot. You might have to 3D print some parts (plus you'd have to add a controller, and sensors, and such) - but for around $500.00 you could have a very cheap humanoid robot to play with - and smart servos.

You can only approach this price currently using standard servos and bracket kits from Chinese suppliers. I'm not sure what the bearings or gearing is in those smart servos - likely plastic bushings and gears - but they are so darn cheap!

I just wish I didn't have a ton of other backburner projects on my list - or I would tackle this in a heartbeat!

Edit: I just realized I made a mistake - the 8 servo robot isn't $190.00, but rather closer to $500.00 retail! Darn! Still - 18 of those servos alone would only cost $360.00, which is still very low cost. You would probably have to 3D print certain brackets (though they do come with some brackets that might work ok for part of the project)...

cr0sh:
They show the circuit diagram needed to hook up to a smart servo - and the communication protocol is laid out nicely. It should be very straightforward to create a library - if someone else hasn't already done so. The servos and LEDs only need a 5 volt supply - a simple Uno would be a fine starting point; you'd have to experiment with how many you can daisy chain off a single I/O pin on the Arduino (that, or measure the current consumption for the servo data line, then divide that into 20 or 30). Likely you could use a couple of pins on the Arduino and control at least 4 of the servos daisy chained.

So I need to get a Arduino Uno and daisy-chain the servos to control it through the Arduino? It sounds easy, but I have to figure out how to do it while the robot is at its humanoid state. Also, where would the I/O pin be, and is there anything else that I might need to know before hooking all the servos up to program?

I think the problem is that you need a library to allow control of these meccano smart servos, and as far as I can tell, there isn't one out there yet. I don't think that's a simple thing though. The library would need to be written to understand the specific mecanno smarr servo protocols described at http://cdn.meccano.com/open-source/Meccano_SmartModuleProtocols_2015.pdf

Hello

Im kinda lost in this universe.. Couple years ago i did build a 3D printer ( DIY RepRap Prusa i3 ).
Am a machinist.. so all the mechanical construction of it was pretty easy .. i had access to all the material to make the frame.. and did fallow a BOM list for all the electronics needed.

Thats where i got bad lol.. I mean electronic is not my playground.. i like it.. but i have no formation in it and no relation to it ..

Short story .. i took me 3 weeks to make the arduino communicate with marlin firmware and understand how to set up it ... And 2 month after i sold it (story of my life)

Now i just bought my son a Meccanoid G15 (the smaller version). And i cant connect the bluetooth on it.. so it make it kinda boring for the moment.. I taught i could program stuff on it ...

But just realize Meccano only let you program it with the help on the app or manually .

So i taught maybe i could try to access the code .. just like my 3d printer ...

So far i did install arduino ..

And im stuck LOL what is the trick to see whats in it .. ? i mean hoe do i retrieve to code ? i cant program from scratch ... i need the original code and from there i will try and error :stuck_out_tongue:

Also .. what is the difference between the motor ? the 20$ upgrade one is not the same as the original ?

tank you if you can help a bit lol

Actually there is this arduino library offered by meccano: Meccano

ncrusty:
Actually there is this arduino library offered by meccano: Meccano

Good job finding that - that site isn't very intuitive to find stuff, that's for sure!

ckielcave:
And im stuck LOL what is the trick to see whats in it .. ? i mean hoe do i retrieve to code ?

I'm not sure what you mean - if your mean the code that's in the controller that came with the robot - you can't. The best you can do is download the library that Meccano makes available for the Arduino, install it, then start writing code to use it.

ckielcave:
i cant program from scratch ... i need the original code and from there i will try and error :stuck_out_tongue:

Then you're going to have to learn, if you want to get anywhere with this. While Meccano has created an Arduino library for you to download and use (once you get the servos connected to the Arduino - which doesn't look very difficult) - you are still going to have to do a bit of work to get things "moving". There doesn't seem to be many (or any?) people who have purchased this robot kit - and who have gotten it to work with the Arduino - outside of maybe Meccano, and/or whomever they contracted with to get the library written.

In other words - you may be a pioneer, along with @Darwin7...!

ckielcave:
Also .. what is the difference between the motor ? the 20$ upgrade one is not the same as the original ?

I don't think there is a difference - but without the original kit motors, and the upgrade motor in hand, I can't say for certain. But I honestly doubt that they are different. They just offer the upgrade so you can expand the original functionality. That, and they offer a four motor version of the robot, but the "brain" can support eight motors - so there's that expansion possibility. For the robot kit that already has 8 motors, if you wanted to use more you would need to either use an Arduino or other microcontroller - or maybe the controller from the kit allows you to daisy chain multiple motors (up to some limit based on current consumption) per each of the eight ports. I don't know.

Actually, I did some research, and motors can be daisy-chained to the controller. The main limit is current consumption. By the way, I am considering getting the Meccanoid G15 myself as a cheap mobile robot platform (added with my various sensors and controllers, this should be interesting).

I couldn't find torque information on the TRU page.

$20 seems reasonable for a smart servo but I'm not very impressed with the communication protocol used by this system. If I'm reading the protocol correctly it has a very slow transmission rate. I'm pretty sure you can't take advantage of the Arduino's UART to communicate with the servos. I think you'll end up with each transmission blocking the program.

I think determining if these smart servos are worth the bother and money will depend on the servos' performance. What sort of torque to they produce?

Well, this shouldn't really be a problem if you are using Meccano-Erector parts for the mechanical hardware.

DuaneDegn:
I'm pretty sure you can't take advantage of the Arduino's UART to communicate with the servos.

I was right about the transmission rate being slow, but wrong about not being able to use the Arduino's UART.

The "MeccaBrain" transmits the data out at 2400bps. It looks like this is the usual 8-bit serial data. While this is still really slow, at least you can use the Arduino's UART to send the data.

In comparison, Dynamixel's smart servos can use transmission rates up to 2Mbps. I think 250kbps is a common baud (it's what I generally use).

What's really strange about the Smart Modules is they don't transmit data back using normal serial communication. Instead the data coming back from the module is closer to the protocol used to control NeoPixels, with ones and zeros being defined by the length of the pulse.

There's got to be an error in Mecconoid's documentation. The following is from page 10 of the protocol datasheet.

The bits of Smart Module data bytes are about 1.1ms long. Each byte has a start bit that is
~2ms LOW. There is no stop bit.
Unlike the bits from the MeccaBrain™ which are just HIGH and LOW for 1 and 0, the bits
from the Smart Modules are based on high pulse widths. A “1” bit is when a High pulse is

400ms; a “0” bit is when the High pulse is < 400ms.

The last sentence uses milliseconds when it should have used microseconds. You can't have a 400ms pulse produce a data bit which only take 1.1ms. If "us" is used instead of "ms" then the "400" value makes sense.

So the outgoing data uses a bitrate of 2400bps and the incoming data has a bitrate of 909bps.

These slow data rates would make using many of these servos in a robot very difficult to control.

goodinventor:
Well, this shouldn't really be a problem if you are using Meccano-Erector parts for the mechanical hardware.

I'm not sure what you mean by this. What shouldn't be a problem? The torque or the communication rate?

Knowing what sort of torque these servos produce would be important to know no matter what parts were being used.

The same goes for the communication rate. If you want to control lots of servos based on sensor input, the communication rate will play a significant part in determining what sort of update rate you can maintain in your control algorithm. All robot parts, no matter who manufactured them, have to obey the laws of physics. :slight_smile:

I meant the torque problem.

It's a slow data rate but I'd assume it's a robust one -- and that's probably the tradeoff they were making. 2400 baud really isn't that bad when you compare it to how quickly the servos move anyway, and if you have "a lot" of servos you can still create separate strings and use SoftwareSerial for the various strings.

Chagrin:
It's a slow data rate but I'd assume it's a robust one -- and that's probably the tradeoff they were making. 2400 baud really isn't that bad when you compare it to how quickly the servos move anyway, and if you have "a lot" of servos you can still create separate strings and use SoftwareSerial for the various strings.

I don't understand how SoftwareSerial will be helpful. I'm pretty sure SoftwareSerial blocks the flow of the program.

I mentioned my reasons for wanting to control the position of each servo at 50Hz in this post.

I think SoftwareSerial would slow the program down too much to use the strategy I described.

I don't know why they're using 2400bps, I suppose it could be to insure reliable communication but it's certainly possible to have reliable communication at 50 times the speed of the Meccanoid communication protocol.

Chagrin:
It's a slow data rate but I'd assume it's a robust one -- and that's probably the tradeoff they were making. 2400 baud really isn't that bad when you compare it to how quickly the servos move anyway, and if you have "a lot" of servos you can still create separate strings and use SoftwareSerial for the various strings.

So, Adruino wouldn't be a good choice because of its slow rate to send data? I'll try my best in getting it to program even though I'm new to the Adruino hardware. My project for Meccanoid was to make him more social and less "voice commands" to use him. Like making a code where he would move around on his own, and maybe notice movements by ultrasonic sensors, but will just have to see what Adruino can do. Still, Adruino Uno would be the best way to go, right?

you have to open arduino library at :

and select arduino library

Darwin7:
So, Adruino wouldn't be a good choice because of its slow rate to send data?

The slow data rate is on the Meccanoid side. I'm not sure what you can do to get around this. A Mega has multiple hardware serial ports but I don't know how much sending a bunch of serial data will slow down your program.

I haven't looked at the Meccanoid library to see how they handle the incoming data. I don't know if the code blocks the program while it receives the data.

You should be able to use the Meccanoid hardware like other robot hardware. You use your sensors to detect obstacles and control the motors to move where you want to go. In some ways the Meccanoid hardware should make many tasks easier.

The main trick will be learning to use the protocol but the library should make this easier than trying to figure it out on your own.