I've been wanting to build something with the MATRIX Creator and Snips.ai, but all my ideas were too involved to knock out over a weekend. And the magnifying glass on my third hand kept falling off. Eventually, I got mad enough at my janky third hand that I decided to replace it (after even hot-glue failed to secure the magnifying glass in its holder... again).
Now, I'm turning it into a smart little lab assistant! Threepio can hold things for me, and will eventually have a camera that he can use to take pictures of stuff, illuminating it with the Creator's built-in LED. I'll be able to trigger this using voice commands!
I modeled the "wrists" and adjustable ring holder in OnShape:
You can copy and edit my designs via this workspace! I'm also working on a smaller version for the MATRIX Voice, which can run just on the built-in ESP32 (after programming it via a Raspberry Pi).
I printed my parts in sky blue ColorFabb filament.
The electronic assembly was pretty simple – I attached the Raspberry Pi to the back of the MATRIX Creator, then wired the servos to pins 0 and 1, as well as 5V and GND. To do this, I stripped the ends of the servo wires and soldered them to female headers – with both positive wires attached to one header pin, and both ground wires on another. This allows me to cut down on spaghetti wiring and provides secure, but reconfigurable, connections.
I placed short pieces of heat-shrink along the length of the wires, to hold them together without the rigidity of a single big piece of tubing. There's still plenty of slack for me to move the claws around.
(In the current version, Thr33p10 is running off a Pi 4!)
This li'l guy is set up to stream directly to a service called LetsRobot.tv . It's created as a really positive space where anyone can jump into a robot and remotely control it through the browser, as well as sending chats that the robot will speak aloud! The creator, Jillian Ogle, is working on a replacement called remo.tv – but this is what I set up first, so I'm sticking with it for now.
To connect your robot to the service, follow these directions: https://letsrobot.readme.io/docs/connect-a-robot-to-letsrobottv
Right now, Thr33p10 doesn't have any motion capability, so I've enabled "dev mode" in the settings on the website, to save people confusion when the "left/right/forward/back" buttons don't work.
Alfred and Samreen from the wonderful MATRIX Labs team helped me set this up! I ran into them at Arm TechCon, where they had some new demos showing off the Creator board's built-in NFC capabilities. Not only can you write data to a tag, but you can also read them and trigger code based on that! I realized this would be a sweet security system for Thr33p10.
So, we got together at the office and with their help (as well as Carlos chiming in from Miami), I coded up a system that:
- Waits to start the streaming until a tag is scanned;
- When the black "launch" tag is scanned, it starts streaming to LetsRobot AND turns on the "Everloop" rainbow LED pattern: this alerts you that you're live, and also gives a little extra light :)
- When the white "kill" tag is scanned, it stops streaming and turns off the ring light.
To keep it lightweight, I installed Raspbian Stretch Lite from the Raspberry Pi downloads page. Then, I completed the installation guide (linked above) over SSH; this does require first enabling WiFi and SSH on your Pi, which can be done from the command line via:
This may require you to use a monitor and keyboard for the initial setup. Of course, I recommend also changing the password while you're at it.
The final step gave me a bunch of warnings and said, "found 1 high severity vulnerability" / "run `npm audit fix` to fix them, or `npm audit` for details", so I ran the suggested fix command. The feedback said "1 vulnerability required manual review and could not be updated", but I decided to keep going and see what happens.
I also created a simple script to test the servo functionality. It worked, too – twitching motors!! But the servos sucked down too much power, and the Pi rebooted itself. Have to give it a separate power source! Fortunately, the power supply has decent amperage and I think I can cannibalize a Micro USB splitter cable from my Pi touchscreen kit, so the controller and motors can draw power separately. :)
See below for the servotest.js code, which I put together from the excellent reference documentation. I'll have to put up a video on this, as well.
I joined the MATRIX Labs weekly livestream to talk about this project and some other cool, nerdy hardware stuff. :)