Fri, 26 Dec 2014

Makering of Physical Digital Stuff

— SjG @ 6:11 pm

I’ve been playing with moving from digital space to physical space. Thus far, I’ve been doing it the easy way — I’ve been building models using OpenSCAD or Moment of Inspiration, and have been relying on Shapeways to perform the actual translation from digital to physical.

First project was to create a stocking-stuffer for Pastafarians. The Flying Spaghetti Monster was modeled in MoI, and printed into plastic by Shapeways. For the “Strong and Flexible Plastic” material, Shapeways uses selective sintering rather than the extruder technology used by most inexpensive desktop 3D printers. This technology allows for printing of larger unsupported shapes, thus my FSM is easily printable using their machines while it would not be with a home 3D printer (probably not impossible, but it would involve printing a lot of extra supports).

Anyway, here’s the FSM printed in purple amidst some whole-wheat penne (created using a commercial wheat extrusion system).

The next challenge was jewelry. Starting with a sketch, the idea was a ring with a colored pattern. This would involve mating halves, each printed in a different color or material. The sketch was quickly modeled in MoI.

sketch moi

I added only a tiny, tiny tolerance between the two shapes. I created the “cut out” portion of each half using a boolean subtraction of the other half, and then did an overall reduction of one half by a tiny percentage. In retrospect, of course, the approach used to create tolerance was incorrect for a number of reasons. But at the time, I measured up the resultant output file (using Autodesk’s MeshMixer) and it looked like it was good.

meshmix02 meshmix01

Yup. I was going to print a physical model with a tolerance of 3.34 microns (those measures on the MeshMixer are in millimeters). What could possibly go wrong with expecting that kind of resolution?

I had Shapeways print these in steel; one half with “stainless” finish and the other with “matte bronze” finish. Their process for printing steel involves using printing layers using liquid binder and a fine steel powder, then infusing the combined structure with (presumably liquid) brass. Pretty crazy! They claim an accuracy of ±1% with a layer thickness of 0.1mm.

Here’s what I got back:
Pretty nice!

It’s no big surprise that they don’t interlock as originally envisioned. For Christmas, I received a very nice micrometer set (thanks to E & Simon!), so I tried measuring my rings. I’m still learning proper micrometer technique, and it’s an interesting challenge to measure complicated shapes.

IMG_5021 IMG_5019

These measurements are farther off than I expected, even after reviewing my initial assumptions and realizing they were unrealistic. I see three possibilities to explain this:
1. My measuring technique still needs refinement.
2. My digital modeling tools are less accurate than I thought.
3. Shapeways is less accurate than they report.

In all likelihood, it’s a combination of the first two (and maybe all three). I strongly suspect I am not measuring the very edge dimension of a flared shape correctly. MoI is not really designed for high-precision engineering models. It’s NURBs based, and I had to convert the model into a polygonal STL file for printing. I did my measurement of the resultant STL file in MeshMixer.

In any case, this may not have produced the exact end results I desired, but it’s been educational. As I learn more, I’ll post more here.

Tue, 2 Dec 2014

Compiling Kannel 1.4.4 under Centos 7.0

— SjG @ 4:28 pm

This took me while to get to work. If you follow these steps in order, it should work nicely.

# yum install mariadb-devel
# yum install libxml2-devel
# yum install bison
# yum install byacc
# cd /usr/local/src
# wget
# tar xzvf gateway-1.4.4.tar.gz
# cd gateway-1.4.4
# ./configure --prefix=/usr/local/kannel --with-mysql --with-mysql-dir=/usr/include/mysql --disable-wap
# make

There are a few tricks here. First, just having libxml2 installed is not enough. You need the libxml development headers, etc. Should be obvious, but tricked me. Next, if you run ./configure before you have some of the dependencies installed (e.g., Bison), you will have modified source files that will still fail even after you install the dependency. Thus it’s important to install all that stuff before you run ./configure.

This stuff isn’t really that hard, but it can be time consuming to track down why it’s not working.