home  >  Melissa Hands 12 September 2023

CraftHouse Melissa type-1 2020
After building the Five Finger Hand (below) I built the two Melissa type-1 hands I bought in 2020. The grip is stronger, but less than a baby's and the fingertips touch the palm but they still will not hold anything like a pen and just about grasp something as thick as a finger. Not much use apart from making your robot look like it has proper hands.

FiveFingerHand Sainsmart kit 2017
CraftHouse Melissa type-1

In 2017 when I bought the Sainsmart humanoid kit which I used for Ajax I also bought a pair of hands with independent fingers. They were too big for Ajax.
At the end of August 2023 I thought I would get one out and see how it worked from an Arduino. When I tried it, it was obvious the servos were not strong enough. The tendons are plastic wire ties clamped under plates against the servo horns, as soon as the horn moves away from the central position the tendon had to bend where it left the clamp. So I drilled 1mm holes in the centre of the clamp plates and when the tenndon was in the right place drilled through that, then used an offcut from a resistor lead pushed through and bent round to hold the tendon in place. Now the tendon does not have to bend there but still the servos are only just strong enough!
I had only put together the right hand and may put the left hand together using different servos and packing them closer together to make the wrist shorter.
The existing servos are 'Prime Elite Servo' made in China and hold the last received position so you only need to send one pulse to move to a new position but the servos can never be relaxed and take current all the time.

The interface shield has five 7805 5v regulators, one for each servo and they get hot when the servos are moved a lot or held at their max or min positions, there seems to be more strain on the tendons in those positions. MG90S are the same size as the ones supplied except for being a little taller and will fit with a little filing of the frame, and since they relax when not being pulsed their stationary current will be almost zero. There is no point in trying to hold the fingers in position becuse they are so floppy they can be moved thoughout all their travel without putting any strain on the servo.

The servos are each run from a regulated 5v, from the Arduino Uno Vexternal, but if they are sent a pulse from the Uno before Vexternal is connected (the Uno is then running from VUSB) they seem to get confused and don't respond to pulses afterwards, have to power everything down - removing Vexternal and the USB cable - and start again.

The distal joints on the fingers don't close as much as the first joint so the fingers don't close against the palm. To grip anything smaller than a golf ball the palm would need to be padded out.


moves - see Commands, below
Act8 autoplays

Act1 s1cocos9coco. - 12 bytes
Act2 d49d39d29d19dt9. - 15 bytes
Act3 dt0d10d20d30d40. - 15 bytes
Act4 f,,999. - 6 bytes
Act5 d17dt6. - 6 bytes
Act6 d49d39d29. - 9 bytes
Act7 s4w1ow3cw4ow2r. - 14 bytes
Act8 (12os2567)r. - 11 bytes
Note - The thumb and 1st finger pinch is very poor. Anybody who buys one is on their own to get it to work any better and if they can get it to work better they don't need my help and if they can't get it to work better no help from me will change that.
The positioning is not even repeatable depending on distance the finger ends have to be moved and the speed used. The servos are not up to combatting the stiffness of the tendon. If it was any less stiff then the finger would not straighten as the tendon was pushed. Even given parameters that cause the two finger tips to meet once doesn't mean they will meet again more than about one in five times. You wouldn't believe just how floppy the fingers actually are.


[Q],[Esc] - stop all
[.] - stop, quit current operation - recording, playing, input
["] - start/end of a comment, processed in GetCcmnd()
[(] - start of Do, Acts within a Do will be treated as subroutines
[)] - end of Do
[0] - use page0 for the next cmnd or Act, Acts [0][1] - [0][8]
      page 1 is the default
[1-8] Play act, or the Act to record, copy, load etc

[c] - close hand
[o] - open hand
[r] - relax hand - fingers to mid position
[h][0-9] - move all fingers to digit position
[f]<thumb><1st finger><2nd finger><3rd finger><4th finger> 
   eg [f][0-9][0-9][0-9][0-9][0-9] - move the fingers to digit positions where positions are scaled travel to close.
      commas can replace position where movement is not needed.
      [f],,,[0-9], - will only change the 3rd finger leaving the others where they were.  
[d][t,1-4][0-9] - will move only one digit, where thumb is t and little finger is 4, to position [0-9]
[s][0-9] - speed

[b][0] - Restore default behaviour
   [S] - Save behaviour as default
   [a][1-8] - Act to autorun on power on
      [0] - no autorun
      [d] - if Playing ends, run autorun Act
   [v] - verbose printing
   [q] - quiet printing, verbose off

[*][r][0 1-8] - record act, 0 use page0
   [l][0 1-8] - load act, 0 use page0
   [c][0 1-8][0 1-8] - copy act to act, 0 use page0
["] - start/end of a comment, processed in GetCcmnd()

[?][?] - prints all acts
   [a] - prints all acts
   [0] - prints acts 0, and changes [?][?] to just print current page
   [1-8] - print Act in current page
   [!] - print ReActs
   [b] - print behaviour
   [m] - print Mind
   [d] - dump all acts to PC without descriptions, for reloading
   [h] - print help
   [E] - print EEPROM use
   [f] - print free RAM

[(] - will show its location in EEPROM when played eg (=263
[)] - will show its location in EEPROM when played eg )=285
If a call to another Act is made from within a Do then the location to return to will be shown, eg (267)
Acts by default are stored in page 1, 0 changes to page 0 for the next command only.
Page 0 ia the first 256 bytes of EEPROM, Page 1 is EEPROM bytes 256-511, ReActs is the next 256 bytes, 
negative numbers allowed for F,B,R,L - so F-20 does B20