3D Printable Pillow Block

A pillow block, or linear shaft support block, is used for mounting a guide shaft on a linear table. I originally created this as a mount for a Proxxon rotary tool on my Shapeoko. As I got further into building the Shapeoko, I found that it wasn’t the best mount for the job. However, these are very popular so I thought I’d post in just in case someone else stumbles in here that could use it.

3D Printable Pillow Block

3D Printable Pillow Block

The dimensions were modeled after the SK20 pillow block found mostly on Alibaba or Ebay for around $6. They come in aluminum, and at that price are probably not worth the print for most. But with standard overseas shipping taking several weeks in some cases, this will get you going much faster.

Continue reading


3D Printable GoPro Tripod Adapter

Last weeks great idea turned out to be kind of a flop. While the Sharpie Spin Top didn’t make it onto WeeklyBuild, I did post it on Thingiverse if anyone is interested. The top had no troubles spinning, but it didn’t ‘walk’ around the paper like I had hoped.

On the other hand, it spawned off another idea. I had planned to use my GoPro camera to film the top doodling on some paper, but didn’t have a good way to mount the camera to my tripod. I didn’t think these were available (yes, they are..) so I decided to create my own.

hero3-tripod-adapter

3D Printed Hero3 Tripod Adapter

The photo above shows the completed tripod adapter connected to the GoPro waterproof enclosure. The remainder of this article shows the build process.

Continue reading


3D Printable GoPro Frame Mount

*Update* Many have asked if I would sell these. They are now available on ThingyLab for 5 bucks.

Last December I finally jumped on the 3D printing bandwagon. After reading reviews on over a dozen hobby grade 3D printers, I decided on the Afinia. The Afinia printer ranked well in Make magazines 3D printer buying guide and was awarded best overall experience.
After printing quite a few trinkets I’ve found on Thingiverse, I had an idea of something I wanted to create on my own. I thought I’d post this creation here on WB, and include a time lapse video of the print.

While pondering the time lapse feature on my GoPro camera, I decided to search for GoPro on Thingiverse. I can’t say I was surprised, but I received quite a few hits. The one that really caught my eye was a frame mount design created by [raster]. This was great, I had plans to purchase the frame mount for $40, but now I have one and it cost me next to nothing. The only problem was that it didn’t hold my Hero3 as snuggly as I’d like. It didn’t take much for the camera to slide out of the front or back when tilted. I could have thrown some tape on the inside and been done with it, or I could tweak the design a bit. I decided it was an easy fix, so I set out to make some changes. For now, my original creation would be on hold.

3D Printable GoPro Hero3 Mount

3D Printable GoPro Hero3 Mount

Continue reading


Creating an RTSP Stream with GStreamer

Recently, we have been using an IP camera as a baby monitor to watch our 18 month old in his crib. It ran for several months without issue but then, without warning, the WIFI just stopped working. The camera provided an RTSP stream that we had become accustomed to logging into via our Android phones.

Armed with an old PC, a webcam, and a few open source software packages I decided to piece together a quick fix. We have since replaced the IP camera, due to the less than desirable form factor and power consumption of a full blown PC. However, theres no reason the PC could not have been replaced with a BeagleBoard, BeagleBone, Raspberry Pi, etc..

What is RTSP?
Multiparty Multimedia Session Control Working Group (MMUSIC WG) of the Internet Engineering Task Force (IETF)
developed Real Time Streaming Protocol (RTSP) as a means to control streaming servers.
The RTSP protocol is similar to HTTP, but is tailored to better suit multimedia streams.
Read the deets on RTSP @ http://www.ietf.org/rfc/rfc2326.txt

GStreamer, a multimedia swiss army knife, enables you to easily do various processing on a video or audio stream. In GStreamer this processing is structured as a ‘pipeline’ of elements. Elements can be sources which provide an output, sinks that consume a stream, or both source and sink. You can easily test these pipelines on the command line before wrapping the working pipeline into your own application. This is the library I used for our interim baby monitor. The GStreamer library can be used with many languages. I chose to work in C just because of familiarity.
Continue reading


Setting Up User.Collections in Open Embedded

So you’ve got bitbake running, and you’ve built an image and file system and now you’re ready to start building your own apps. The recommended home for your own recipes is in a user.collection directory. This post outlines the steps taken to create this folder and make bitbake aware of the recipes found within.

To start, create a user.collections directory in your sources directory.

Then we need to set the BBFILES & BBPATH parameters so that bitbake knows where to find your recipes. Start by change the following line in your ~/oe/build/conf/local.conf file from

to

Then, the last step is to change the following line in your ~/.oe/environment file from

to

And your done. Now put all of your own recipes in the ~/oe/sources/user.collections/recipes directory.


Gumstix Overo Altium Library

Well, so far this lib only contains the Overo series. The 3D model was snagged from the Gumstix website and is linked to the footprint (see image). I’ve created a couple different carrier boards with this footprint already and haven’t found any issues.. I think its good to go.

It includes two components: the main footprint thats built across two 70 pin connectors, and the imager footprint that is a single 27 pin connector.

Download: GumstixIntLib_R0 (Version Zero)


Python Extension Modules In C

One of the great features of Python is the ability to extend its functionality with existing C code. This article presents a minimal example of how to create one of these extension modules.

This example shows calculating the first ‘n’ numbers in the Tribonacci sequence.
The Tribonacci sequence is calculated as a(n) = a(n-1) + a(n-2) + a(n-3).

Creating the module requires the creation of at least 2 files. In our case these files are tribonacci.c and setup.py. tribonacci holds the C code that we’d like available in our python library, and setup.py is used when build our library.

To start, you must create your C source file. Copy the following into a file called tribonacci.c

and copy this code into a file named setup.py

Now your ready to build and install your new library. Just run the following commands from the command line.

If there were no errors, you should now have a tribonacci library installed and waiting to be used in your python script. Test your new extension by firing up the Python interpreter and requesting the first 10 numbers in the Tribonacci sequence.

And thats it. Pretty cool huh?


CI Bootstrap – A Web App Jump Start

Edit: This project was recently renamed to CI-Bootstrap. Disregard references to ci-kickstart

CI Bootstrap combines Ellis Lab’s Code Igniter, Konyukhov’s Tank Auth, and Twitter’s Bootstrap into a bare bones web application. This gives you a clean presentation, & robust user authentication/registration all on top of a great MVC PHP framework. Now you can get started on your application immediately and not waste time with the boring and repetitive details that virtually all web apps require as a foundation.

The code is hosted on github.

I do plan on adding a few other features such as user roles, & profiles so check back or watch on github if you’re interested.


Creating printf() style functions with va_list

By ‘printf style’ I mean the ability to have an arbitrary number of parameters passed into a function. The key is to use va_start, va_arg, and va_end to work with va_list’s as shown in the snippet below.

Pass va_start a va_list structure and the last named argument in the function (just before …). In the example below I use this to indicate the number of parameters to add together.

Use va_arg to retrieve arguments by passing the va_list structure and the datatype of the next item to pull. Finally, pass va_end the va_list structure.