A Bluetooth Mouse (for Cats)

Idea: My cat has a “bristle-bot” style toy, but it’s not a favorite. He’ll watch it as it wanders randomly around the floor, but he doesn’t really engage with a toy unless it “hides” — goes behind other objects so he can strategize about where it’s going to show up next.

The style of motion in these robots is kind of neat. There are no wheels. Instead, they operate with vibration.  There’s something insect-like about the movement.

Can I make a bristle-bot toy that I can control with my phone so my cat and I can have fun together? Yes… Well, I made a toy. I didn’t succeed in engaging my cat.

A Bluetooth Mouse for Cats. In this photo, I haven’t done much to finish the body. It’s just sanded. It could look a lot better with paint.

I experimented with a couple of different designs. The parts list for this version includes:

  • Bluetooth controller (I used Redbear Labs’ BLE Nano)
  • 2 6mm 3v disc-style vibration motors for motion.
  • 2 LEDs for eyeballs and status indication (disconnect: flash, connected: solid).
  • A pair of transistors for switching current to the motors.
  • A small LIPO battery (150 maH).
  • A power switch.

The design also includes a 3d-printed mouse body and a custom PCB to keep everything compact.

Interior view.

The operating principle is that since vibration motors are mounted to the sides of the body, when a motor is engaged, the vibration will cause the legs on one side of the body to flex. If both motors operate at roughly the same frequency, engaging both motors simultaneously will move the mouse forward.

Bottom view. I left the bottom open for convenience while I was iterating on the design. I’ve also found that minimizing the amount of structure improves the amount of vibration transferred to the legs.

I designed parts in Rhino 3d with Grasshopper. I 3d printed parts with a Form Labs Form 2, using the standard Grey resin.

Render of 3d model, using transparency to illustrate 2 distinct parts: platform (with legs) and shell. 
Lights indicate bluetooth device is connected.
Sammy is somewhat interested in the mouse.

Learnings:

  • While the 2 distinct vibration motors offer some control over the direction of the mouse, it’s not particularly precise. It’s hard to steer around objects.
  • In practice, any vibration motors I tried seemed to be somewhat unbalanced (presumably operating at different frequencies), so motion is biased to one side.
  • Battery wiring initially took up a lot of space. I had to trim the leads from the LIPO battery a recrimp the JST connector.  This was a pain to learn how to do. The Engineer PA-09 Micro Connector Crimpers turned out to be the right tool.

Hopper for Cocoa Nibs / Liquor Extraction

Chocolate making is messy business. One of the steps in nib-to-bar chocolate making is to extract the liquor from the nibs. We use a Champion Juicer.

Inevitably, when you add nibs to the chute … a lot of them fly back up the chute and land all over the kitchen.

So I built this hopper and plunger system to help. It has three parts:

  • A collar that fits on top of the chute and enables nibs to be added perpendicular to the chute..
  • A hopper that holds about a cup of nibs that are gravity-fed into the collar and chute.
  • A extended plunger to push nibs down the chute.

To operate: Lower the plunger to cover the collar opening, add nibs, lift the plunger to open the collar opening and gravity-feed some nibs, lower the plunger when the chute is part-way full. No nibs should escape.

Rendering of distinct parts.

I printed the parts on a Form Labs Form 2 SLA printer. Form Labs doesn’t make a food safe resin (though they do make dental-grade resins). In fact, I’m not aware of any food-grade resins or filaments for 3d-printing. This is a topic the Internets have a lot of opinions about. I chose to coat parts in many layers of poly-urethane, which is food-safe when fully cured.

Mecanum Wheels

Mecanum wheels are cool. Each wheel is composed of a series of rollers, pitched at 45 or -45 degrees. When moving forwards and backwards, the rollers do not engage, but when the front and back wheels rotate in opposite directions, the rollers engage to move the vehicle left or right.

These wheels are 3d printed, except for machine screws and bearings.

Modeled in Rhino3d with Grasshopper. Model is parametric, so it’s possible to change number of rollers, overall size, etc, easily.
Wheel assembly: Rollers, bearings, machine screws, roller hubs, and stand offs.
Wheels were printed with a Form 2 SLA printer.
Rollers were printed on Replicator 2 FDM printer with “Semiflex” filament. Semiflex provided reasonably good traction on wood floors.

The vehicle in the video was as basic as I could make it. Electronics are an ESP8266 for control and 2 dual H bridge motor controllers. The ESP8266 has 9 usable I/O pins, just enough to control 4 motors if they share a PWM pin.

The 2nd ESP8266 you might see in the video is running ESPLink and acting like a WIFI serial port for remote code updates.

Some learnings from building:

  • This was my 2nd time using Ninjaflex and Semiflex. It’s a challenge to print, because it’s so soft that it easily flexes inside the filament drive of an FDM printer, instead of being forced down the thermal barrier tube. It requires some babysitting to catch issues. If I plan to use this a lot, I’ll look into modifying my extruder.
  • For the rigid parts, I used Form Labs Gray Resin, which is designed for prototyping. It has some nice properties. It cures easily and sands well. It was a bit brittle and since the bearings were “force fit” into place with pliers, I managed to crack some of the bearing holders during assembly. I fixed some of these by just applying some resin to the crack and curing under light.
  • I *may* have had trouble with some bearing holes due to bad tolerances from my curing process. To date, I’ve just washed my parts by dipping and sloshing in Yellow Magic and IPA, then curing in open air under a light intended for curing acrylic nails. Maybe it’s time to try an ultrasonic bath and underwater curing.

Some learnings about Mecanum wheels:

  • Motion in the video may look smooth, but if you look closely, you can see some bouncing. When driving, you can definitely hear “clacking” as the rollers come in contact with the surface. This suggests that each wheel is often losing contact with the surface, so the traction isn’t great. A larger number of rollers would help.
  • Mecanum wheels are known to operate poorly when the weight distribution of the vehicle isn’t uniform, or under too much weight. I experimented with adding up to 15lbs of weight to the vehicle and it definitely had problems. Particularly, side-to-side motion stalled or became erratic.

Xaar 128 Printhead Driver

The Xaar 128 is a piezoelectric inkjet printhead used in large format vinyl sign-making. It *might* be useful in 3d printing, conductive ink, or masking applications.

Why piezo? TLDR: Most inkjet printheads are “thermal”: They work by superheating a fraction of the ink in a chamber, turning it into gas, which expands to force the remainder of the ink out of a nozzle. Superheating limits the range of materials that can be used in these printheads. Piezoelectric printheads are less common, and since they use a mechanical operation to force fluid out of a nozzle, they don’t have to modify the state of the fluid to operate, and can work with a broader range of materials.

More details on the Rep Rap wiki.

Starter source code on GitHub.

Learnings

  • While I planned to try some different materials with the Xaar 128, I started out with the Solvent Ink that it’s built for. I was mostly using used printheads that I could buy inexpensively on eBay, since new Xaar 128s are pretty expensive. Nozzle clogs were a big problem. I had to flush the nozzles every time I sat down to work. This wasn’t really compatible with an after-hours hacking schedule.
  • I used flexible flat cable (FFC or FPC) to connect my board to the printhead. I’ve been burnt by overflexing ribbon cable before, so I thought this was a good idea. But I didn’t properly anchor the connection points. After some use, I started getting erratic behavior and stalling from the printhead. After a lot of debugging, I found that the leads on one end of my cable had overflexed and would break contact at certain points in the movement. Lesson: anchor connection ends so that no flexing happens near the exposed leads.
  • I was never able to consistently push anything more viscous than solvent ink through the printheads. Epoxy or photo curing resin is much more viscous (eg. ~1000-2000+ cp vs ~10-20). This means these heads may be useful for something like depositing a low viscosity binder for powder printing, but probably not for depositing a material that can harden into a solid by itself. I’d love to find a printhead that can.

Boxen #1

Macro photo printed as a large format bitmap made up of 3d boxes in PLA Plastic, printed with Makerbot Replicator 2. Size: 6.5 feet X 2 feet.

Each “pixel” is a 3 dimensional box that tapers into a quadrilateral opening. The corners of the quadrilateral are determined by sampling the grayscale intensity of a grid of 9 subpixels within each box.

Example quadrilaterals, based on grayscale sampling

Inspired by “Bloom” from UC Berkeley.

Veronoi #3

Medium: PLA Plastic, printed on Makerbot Replicator 2 in 8 parts.

Modeled in Rhino3d with Grasshopper. Size of the veronoi part is 20″x20″. This was a super-challenging project to do with an FDM 3d printer, due to the large number of overhangs and small cavities. Each part took 10+ hours to print, but perhaps even more time to finish. I used a large amount of support material that was, at first a friend, then… a nightmare to extract and sand down.

Prototype part, before geometry was smoothed, shows volume of support material.
Support material removed. Rough sanded.
8 parts, primed and medium-sanded.
Original model.

Some learnings:

  • If a space is too small to get your fingers into, it’s going to be a bear to sand. I took a few breaks from this project because finishing was so tedious.
  • This project likely would have been much easier with access to a dual head printer with water-soluble filament or an SLA or SLS printer. When I started this in 2013, I didn’t have any access to such equipment and printing something this size with an online service would have been cost-prohibitive.
  • Solvent glue works great with PLA.
  • Makerware’s generated support is pretty good, but I could have saved myself a lot of time by modeling my own support for precarious overhangs and certain bridges. I had to throw away some prints and patch some gaps when Makerware’s support failed.