Building a mailbox

I’m a little late with this one but back in February, Sam asked me if I would build a mailbox for the kids in her class to post Valentine’s Day cards.

Not being a mailman or playing one on TV, I have little experience with building one but a design came to mind and here’s the evidence that I actually built it. I got thanks for this one.

Maggots and Cannons

Maggots and Cannons

Big Fish as the school musical this year? I think I remember it. A circus cannon, you say? Yes, that sounds easy. Anything I should be aware of? Capable of holding an actor so they can be seen to get into it? Hmm, it’ll be big but I think it’s do-able. I know how I can construct it. Sure. I’ll get onto that right away. Seems simple enough. Shouldn’t be a problem. At all.

I wish I didn’t keep saying things like that. Of course, it’s difficult. Of course I’ll have to rethink every constant of the universe. I wish I didn’t watch YouTube videos. They are the bane of my existence tricking me into thinking I’m capable of all things.

The cannon started out in my head as a kind of tube which was a frame of chicken wire, wood and surrounded by plaster bandages which I could then apply wall filler to sand down and make a smooth finish which would be lacquered and painted.

So, I started out building the frame. I already had the chicken wire and the wood ( basically the thickness of shims which had been trimmed off of 2x4s ).

 

It actually looked OK. It was the right size to fit a person.

With the frame constructed, I needed to build the shell of the body. I had the bright idea that, after I wrapped chicken wire around the frame, I could lay plaster-dipped gauze on the chicken wire and it would harden like papier mache.

Here’s the evidence of how far I went with this.

The reason it didn’t work was that the frame wouldn’t hold its shape and ended up looking like a 6ft maggot.

So, I had to quickly come up with MK2. This time with a more rigid frame. I had a heck of a time trying to find a material that would wrap around the frame but be hard enough to look like a thicker surface. I tried, and got bruised by hardboard (not cardboard) panels and I thought I’d got the solution with a thinner type of panel but the panel was under so much stress that the screws got pulled through. Luckily, there was a collection of very large cardboard (not hardboard) panels that I was able to fold enough to wrap around the frame. Because the cardboard was not as hard, the screws would still go through so I added Gorilla tape to the screw holes for reinforcement and that kept it all together. After a nice paint job by the cast and crew, the cannon took its place on the stage for all of the required 30 seconds.

 

raveloxmidi v0.3.0

A little diversion from the usual woodworking/maker projects…

You may or may not remember that I harboured ambitions to build an interface for drum pads to talk MIDI through a Raspberry Pi with the intention that the MIDI commands could be recorded using something like Logic Pro.

The electronics side of that equation never really materialised but I did continue to work on the software and so raveloxmidi was born.

I added the code to Github and developed it intermittently. I didn’t do anything to promote it and hoped people would stumble across it and find it useful.

It turns out that they did. I wouldn’t call it viral, more of a syndrome that one in several hundred million people have 🙂

In recent months, I’ve had users give me a shout-out and that’s been good for the ego. It’s spurred me on to add the ability for the software to read inbound MIDI over RTP and write that on to a file handle on a local machine. This is in response to a couple of long-standing requests to handle certain MIDI events.

I’m fascinated with how this project can grow with little ( to no ) marketing and I’m still enjoying writing the code for it.

Because it’s Linux-based, doing something with ALSA might be the next step but I have no experience of writing anything for ALSA  so it may be time to add more people to the project.

Stackable Tool Chest

I had a couple of weeks off and nothing better to do than to build something.

I’ve wanted to build a stackable tool chest on wheels for a while because the boxes I was using to carry my stuff to build days was falling apart.

This is the story of the journey that I took.

 

Rolling cabinet

On the rare occasion that I decide to make some (amateur) music, I head to the garage. For the longest time, I was using an old desk but this was taking up too much space. In our never-ending quest to tidy the garage, we donated it to a local goodwill store but that left me with needing something to store my recording equipment. It had to be more compact than a desk and I wanted something mobile too.

So, I put together a rolling cabinet using 3/4″ plywood with a couple of shelves and a couple of drawers. It gave me the excuse I needed to get out  the air compressor and brad nailer that I got for Christmas. So, only 7 months later and it’s finally being put to use.

What I learned from using it is that rectifying mistakes with brad nails is harder than with screws but it’s a cool tool to use 🙂

Speaker stand

With the opening of a new Living Spaces close by, we were tempted to get a new couch to replace our 15-year-old leather recliners. Multi-piece sectionals are the rage now but that complicates how we place the speakers for our surround system. Our old couch was a 2-seater and that meant we could put the rear speakers either side of it on the floor. They came in very handy for resting cups and stuff. The new couch is L-shaped and that means we can’t put one of the speakers at the side of it. So, time for another project. This time I built a speaker stand.

I learned how not to hold a handheld router so I only got 1 stand built. The mistake I made with that is in the video.

I’m not going to leave the wood bare, I plan to stain it a much darker colour.

LED light panel

I help build the sets for my daughter’s high school productions twice a year and it’s become a “tradition” that I have a little project for a specific part of the set that I build myself.

This year, the musical was “Little Shop of Horrors” and there’s a scene in the dentist’s office where Orin Scrivello ( the dentist ) shows Seymour an example of a neglected mouth on an X-ray image. I decided I was going to build a simple LED light panel to use with that X-ray.

It’s been a while since I recorded a build project and somehow managed to confuse record with stop so didn’t catch everything. However, I managed to salvage the footage I had and here’s the result:

Roombaduino – part 25 – Follow-up

A long while back, I demonstrated how to multiplex 2 OLED i2c displays which have the same i2c address. The video is here:

 

I was asked a couple of questions in the comments about how it worked.

Firstly, when the data has been sent to the display, does it stay there? That is do you need to refresh it?

Secondly, are both OLEDs able to share the SCL (clock) line?

I’ll answer in reverse order. Yes and No. 🙂

As I explained in the video, all the devices you want to multiplex share the clock line. The SDA (data) line is what is multiplexed.

For the actual data being sent, there is no need to refresh it. I don’t have the exact details on exactly how that information is stored ( who reads datasheets? ) but the code I used for the video demonstration is below and I don’t refresh anything.

 

#include <Wire.h>
#include <OzOLED.h>

#define MUX1 6
#define MUX2 7
#define MUX3 8

#define NUM_SCREENS 2
int screen = 1;
int i = 1 ;

void setDisplay( byte displaynum )
{
 digitalWrite( MUX1, (displaynum & 0x01 ? HIGH : LOW) );
 digitalWrite( MUX2, (displaynum & 0x02 ? HIGH : LOW) );
 digitalWrite( MUX3, (displaynum & 0x04 ? HIGH : LOW) );

}
void setup() {

 pinMode( MUX1, OUTPUT );
 pinMode( MUX2, OUTPUT );
 pinMode( MUX3, OUTPUT );


 for( int s = 1 ; s <= NUM_SCREENS; s++ )
 {
 setDisplay( s );
 OzOled.init();

 // Rotated 180 degrees
 OzOled.sendCommand( 0xC8 );
 OzOled.sendCommand( 0xA1 );
 OzOled.sendCommand( 0x0DA );
 OzOled.sendCommand( 0x012 );
 
 OzOled.setBrightness( 0xFF );
 OzOled.clearDisplay();
 OzOled.setNormalDisplay();

 OzOled.sendCommand( 0x8d );
 OzOled.sendCommand( 0x14 );
 }

 screen=1;
}

void loop()
{

 setDisplay( screen );

 screen++;

 OzOled.clearDisplay();
 OzOled.printNumber( (long)i );
 i++;
 if( screen > NUM_SCREENS ) screen = 1;
 delay(500);
}

Raspberry Pi 3 – NTP problem solved – some power issues

I got a Raspberry Pi 3 recently and installed the official Raspbian image from raspberrypi.org.

I came across a couple of issues:

  1. NTP would not sync.

ntpq -p would show that all the servers were in a state of .INIT.

ntpdate would work but ntpd would not.

It turns out that the kernel driver for the built-in WiFi chipset can’t handle the NTP packets over UDP. The solution is to add the following to /etc/rc.local:

/sbin/iptables -t mangle -I POSTROUTING 1 -o wlan0 -p udp --dport 123 -j TOS --set-tos 0x00

and reboot.

This is discussed on the raspberrypi.org forums at https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=141454

  1. Power management is a problem running it off an Anker 10-Port charger (http://www.amazon.com/Anker-10-Port-Charger-Multi-Port-PowerPort/dp/B00YRYS4T4)

I knew that the Raspberry Pi 3 drew more power but it seems to be unstable with this particular charger. That’s not to say the charger is at fault, it’s running 6 other Raspberry Pis quite happily but they are older models and I don’t think the ports supply the required current. I’m ordering a 5v 2.5A power supply to see if that resolves the issue.

The WiFi chip needs to have power management disabled to get it to be responsive.  To do that, you can create a file /etc/modprobe.d/8192cu.conf and add the following:

options 8192cu rtw_power_mgnt=0 rtw_enusbss=0

I’m not certain this is addressing my immediate problem but once I get a more powerful power supply, I’ll be able to check.