lba-screenshot-2

The Lightbulb Audit

For the past few months, I’ve been devoting a fair chunk of my “free time” (which is to say, very little time at all… I have a baby and a toddler, neither of whom sleep) to learning a bit of Java. Specifically, Java for Android. This has been… less fulfilling than expected. I’ve learnt a fair bit since the middle of the year, but not as much as I’d hoped. I do a little recreational programming in a few different languages, mostly Visual Basic and C++ derivatives, and while all languages and coding environments have their challenges, none of them compare the the peculiarities of android app development. I won’t wax poetic here, because this post isn’t actually about Java; this post is about results.

Finally, I have got my first Android app ready for public consumption (which is to say, I lowered my standards until they matched where my app was at). I think it’s pretty reasonable, in terms of presentation, but the important thing is that it’s useful. And that pretty much sums up my standards for anything.

The app is a light bulb tracking program, which I affectionately call The Lightbulb Audit. This app is designed to be a list of every light fitting in your house, and every bulb installed in those fittings, which can be carried in your pocket. That way, the next time you see LED lightbulbs on sale, instead of thinking to yourself: “Gee, that seems cheap. I wonder if I actually need more lightbulbs?”, you will check your phone and say “Wow, I actually have three blown lightbulbs that I haven’t replaced yet, no spares, that one dim bulb in the bathroom that really needs to be replaced with something more powerful, and most of my bulbs are ye-olde incandescent lightbulbs. What are we savages? time to upgrade!”… or something very much along those lines.

So, here is a link to my app on the Google Play store (sorry Apple users, after the experience I just had learning to program for Android, it’s unlikely I’ll get to you any time soon. Also, I don’t have an iPhone to test on. Also: *sound of me blowing a raspberry at you*):

https://play.google.com/store/apps/details?id=teslaandi.wordpress.com.lightbulbaudit

(Please see “important” note below!)

I appreciate feedback, comments, suggestions, and bug reports, so please feel free to leave comment on this blog post to let me know what’s on your mind (regarding the app).

But! Because I’m such a nice guy, I’ve also put up a copy of my Lightbulb Audit spreadsheet (which is how this thing originally started life). Not only can non-android users access this, but you can also export a CSV file from the app and paste it into this spreadsheet:

the-lightbulb-audit

Please, feel free to modify the spreadsheet, add colourful graphs, add features, etc. And please share your updated version if you do! Sharing is caring.

IMPORTANT!!!! – Because I’m such a nice guy and put my app up for free, I don’t make money off it just from you downloading and using it. Where I can make a few cents is from you clicking on the ad banner at the bottom of the app (which I’ve tried to make as unobtrusive as possible, because the afore mentioned niceness). So, if you see any ads that are even vaguely interesting: please, click on it. At the time of writing, my revenue is up to about $2.06… sigh… Oh well, I do it because I enjoy it, not to make money. Also because I’m just such a nice guy and want to help you and your lightbulb situation… Which is a mess, right? Be honest.

ALSO IMPORTANT!!!! – Please don’t leave poor reviews. Any comments, questions, queries, or suggestions: Please leave a comment here, and I’ll do my darndest to look after you…

…On account of being such a nice guy.

If people just designed things right to begin with… #2

I am normally relatively compassionate. Well, I am if you haven’t done anything that displeases me. So I prefer not to harm anything unless I have to. For example, if I can step over a trail of ants to avoid hurting them, I will. However if you’re a little ant bastard who is crawling all over my chicken wing just because I put down my plate at the picnic for half a second, you can expect a pretty stern talking to.
So when we moved into our house, I did my best to remain mouse-free without having to get nasty: keep food in sealed containers, don’t leave any friendly hiding places, etc. In fact, when I first started seeing signs of mice (chewed packets, and poo, all the poo), I just tried to hide the food chase them out. When this failed, and the mouse poo started spreading into more areas, and I started hearing mice scratching around in the pantry… while I slept… well, the mice were no longer on my christmas card list.
I didn’t want to put down poison, because then I have poisoned mouse corpses laying around (I have kids and dogs, and there is plenty of native wildlife outside my house which may like to eat a slow moving mouse if they ventured outside the house). Also, poisoning sounds slow and painful; a trap is quick, over before the mouse knows what’s happening.

So I went for traps. However, the traps didn’t work! I kept finding mousetraps with no bait on them. I tried a number of attractants, none of them caught the mouse. They all got eaten, but the trap didn’t trigger. I tried:

  • Cheese
  • Peanut butter
  • Ham
  • Raspberry liquorice
  • Mouse attractant paste from Bunnings

The baits got eaten, but the trap didn’t trigger, the mouse wasn’t pushing on the lever hard enough while eating. That’s why I tried the liquorice, I could wedge it under the catch on the lever (this worked once, but that’s it). I straightened the retaining rod, and even used some PTFE sleeve to reduce friction. The problem is that in order to get the required activation force so low that the mouse would trigger it, the trap because so sensitive that I couldn’t set it. It’s a very fine line to walk.

So what’s the solution? If the activation force needs to be above a certain threshold to be useful, then the mouse needs to push harder. How do we convince the mouse to push harder? Well, have a look at this:

I designed an 3D printed small cages that slide onto the trigger plate, into which you place some cheese. If you’re feeling keen, also smear some attractant paste into the gaps in the cage.

This meant that the mouse tried to squeeze it’s nose through the bars of the cage, triggering it. These worked really well, and after just half a dozen uses, we appear to be mouse free! I can see why the original traps weren’t working, because our mice were tiny, so small I could barely feel the weight of it in my hand.

I don’t feel good about killing the mice, but they had to go.

The design for the cage is here, and should fit most standard 50 cent mouse traps (the design opening is to fit 10 mm wide x 1mm thick mousetrap levers):

http://www.thingiverse.com/thing:1720799

I hope this helps your rodent problems!

Glow Egg Plus – Alpha Version

transparent shell

Now that I have a baby boy, I’m coming to terms with the fact that there are so many new baby related accessories that you need to buy. Going through this process, there are plenty of times when you ask yourself:

Why is this stuff so expensive, and why isn’t it better?

One such experience that we had was on the first day that we took our baby boy home from the hospital, in the middle of winter, and we started freaking out about temperature…

Is he going to be warm enough? How warm is warm enough? How much clothing should we wrap him in? What if the room gets colder over night? What if it gets too hot during the day? What temperature is the room meant to be anyway? How large a temperature fluctuation can a baby tolerate before we end up on A Current Affair? *Hyperventilate and pass out*

Or something along those lines.

At a friends’ house, I’d seen an item which shows (via changing colours) the temperature of the room. I decided that this seemed like the way to go, so I drove 15 minutes to a shop which I knew to have these thermometers on sale. Long and painful story short, I returned home two hours later, at about 5 p.m., with “the egg”, and while I was only $30 poorer (on sale, down from $50), I was a lot more stressed out.

Almost immediately, I got to thinking about the relatively small cost of components to make a room thermometer for the baby, and (as any engineer would) thinking about the other features that I would like this thermometer to have:

  • Battery power
  • Ability to connect additional temperature probe (i.e. to skin temperature sensor… just to be REALLY sure that the baby is warm/cool enough)
  • Adjustable temperature scale
  • Easier to turn off when the light’s annoying me and I’m sleepy
  • Basic night-light function
  • Timed nightlight, for when the baby is older, to tell baby when it’s time to wake up (i.e. “See how the light is blue? Daddy doesn’t want to hear a peep out of you until it turns yellow. UNDERSTOOD?”)
  • Replaceable outer skin; to make it more fun for the child, by making it look like their favourite animal or influential scientist (Yes, I’m talking about Tesla), instead of the basic Egg shape.

So I set about building one myself. In order to maximise the customisability of the device, I based it on an Arduino board, and went for the lowest possible cost for all components (while still being fit for purpose). Design process went along these lines:

  1. Write I/O Schedule
  2. Select control board
  3. Draw schematic
  4. Layout test circuit on breadboard
  5. Layout and solder circuit onto prototyping PCB
  6. Trim PCB and measure overall dimensions
  7. Design and 3D print circuit board holder (main unit to go inside outer shell)
  8. Design and 3D print outer shell
  9. Basic calibration of thermistor
  10. Writing the user manual

The result of this is as follows:

I/O Schedule:

  • PWM Out
    • LED 1 – Red
    • LED 1 – Green
    • LED 1 – Blue
  • Digital In
    • Button 1 – Mode Adjust Button
    • Jumper 1 – Temperature Sensing Mode
    • Jumper 2 – Sleep Timer Mode
    • Jumper 3 – Colour Cycle Nightlight Mode
    • Jumper 4 – Colour Select Nightlight Mode
    • Jumper 5 – Spare Mode
    • Jumper 6 – Spare Mode
  • Analogue In
    • Thermistor 1 – Main Thermistor
    • Thermistor 2 – Spare Thermistor
  • Power Connections
    • Vcc – Connection for regulated 5V power supply
    • RAW – Connection for 5-12V battery pack, or 5-12V regulated power supply

Board Selection:

My control board selection process was pretty straightforward. I wanted the cheapest board I could find, and needed to make sure it had sufficient I/O pins to perform the functions listed above. The cheapest board was an Arduino Pro Mini (a couple of dollars on eBay), and it has ~12 Digital I/O pins (6 capable of PWM) and 4 analogue input pins, it was more than sufficient for my purposes.

Note: Since the Arduino Pro Mini only has TTL communication provided by the ATMega chip, I also had to connect a Serial-to-TTL converter (USB to RS232 TTL) to the RX/RX/GND/VCC pins when programming the board.

Schematic:

I drew the following schematic in Design Spark PCB. I used to use ExpressPCB and ExpressSCH, which are very good for drawing a schematic and converting it into a PCB, but I have been trying to migrate over to Design Spark, since they offer some cool features, and in theory you can upload parts available from RS Components into your schematics. Still not convinced, but I have to give it a fair crack to see if DS can speed up the process of designing circuits.

glow egg plus schematic

Bill Of Materials:

  • Arduino Pro Mini – $5
  • RGB LED (Common Cathode) – $1
  • Thermistor: 100 kOhm (NJ28RA0104HCC, see notes below on thermistor measurement) – $1
  • 1/4W resistors: 3 x 120 Ohm, 2 x 120 kOhm – $0.20
  • 5cm x 7cm prototyping PCB – $0.2
  • 9V battery connector clip – $0.3
  • Push button (round, outer diameter ~5mm)
  • Foot switch (I used a spring return SPDT lever switch)
  • 2.54mm male header strips: 2 x 6 pin, 6 x 2 pin, 1 x 4 pin – $1
  • Female dupont wire terminators and housings: 5 x 2 pin, 2 x 4 pin – $0.2
  • Assorted length of wire

total cost: ~$9

(Costs above are approximate based on what it cost me at the time)

Circuit:

I’m slowly working on a PCB router (made primarily from scrounged parts from old printers, etc), but it’s still a long way off (due to previously mentioned baby taking up a lot of my time that used to be spent on recreational engineering). In the meantime, I am using cheap prototyping PCBs (PCB equivalent of a breadboard, only about $2 on eBay for a 10 pack of 5cm x 7cm boards)… Like some kind of undomesticated animal.

For more details, see the manual below.

Board markings

20141026_090904

3D printed parts:

The printed parts are on Thingiverse.

I designed the circuit board holder to suit the circuit board and to accommodate a 9V battery, with a base that allows attachment to a variety of outer shells. It includes an opening for a small pushbutton (scrounged from a VCR) and small microswitch with a spring lever (for cutting power when the thermometer isn’t sitting on its base).

internals - right iso

internals - left iso

I designed the shell to fit the base. In terms of printability, I took a shortcut and thickened the top section of the egg shell to allow it to print without support. it needs to be printed in White or Opaque/Natural PLA/ABS. I printed in Natural ABS, because it’s what I had laying around.

transparent shell

Programming:

For a copy of the Arduino code used, refer to the back of the manual below:

Thermistor Calibration:

To calibrate the thermistor, I started by calculating the theoretical value that the Arduino analogue input will measure (from 0 to 1024 for a voltage range of 0 to 5v) for the temperatures of interest for the thermometer. To get more information on this, refer to my post on Thingiverse: Thermistor Table Generator. This calculator is for generating thermistor tables for a 3D printer, but can be used for any thermistor application.

By leaving the egg connected to my computer’s USB and monitoring the serial port, I could record the analogue readings that the Arduino sent to the serial port. I compared this to the temperature measured by a commercially produced digital thermometer, I then fine-tuned the settings in my code to be more accurate.

Manual:

Here’s the manual that I wrote for the thermometer.

Glow Egg Plus

(Sorry, Kate, Ara was meant to email it to you a while ago)

Conclusion:

The Glow Egg Plus worked reasonably well. Some final tweaking would be required before I’d be 100% happy with it, but I was happy enough with the Alpha version to give it to some friends who recently had a handsome pair of twin boys. Word of the day: Polyzygotic. Polyzygotic twins (Fraternal Twins) come from two separate eggs, as opposed to Identical Twins (Monozygotic, I guess), who come from one egg which splits into two embryos.

If people just designed things right to begin with, I wouldn’t have to fix it for them.

Having recently put in a new kitchen, it was immediately apparent to my wife that the wooden stools that we owned were not in ANY WAY suitable. For anything. Not even worth turning into kindling.

So we decided to buy some new stools/chairs. They had to have backs on them, rather than just being stools, so that we could sit comfortably in them for an extended period of time. They also had to be at the correct height for the new kitchen island (900mm high, 40mm thick benchtop), which (I discovered after experimenting with the wooden stools and a hacksaw) is exactly 650mm. Now here’s what I have since learned about chairs and stools:

  • They’re too damn expensive. Even the replicas. And expecially the “fancy” replicas (yeah. apparently that’s a thing too).
  • Most of them are far to unstable to be so expensive.
  • Most of them are far too uncomfortable to be so unstable.
  • They are all the wrong height

Despite these difficulties, we found some chairs that were comfortable, stable, and not QUITE expensive enough to make me cry a little bit when no-one else was around. but of course, they were the wrong height. It was a 70cm (-ish) Bertoia chrome “replica” chair. I say it was a replica chair, but… it still behaved like a chair when I sat on it, so I’m not exactly sure what that’s all about…

I decided that the best option was to get the right chair, and then just fix their design flaw, but cutting 55mm off the height of the chair. We bought one chair to make sure I could do this without completely wrecking the chair, and once I proved that it was fine, we bought another three.

Since I didn’t want to waste that much money, I did the following:

  • Took some careful measurements of the height to the top of the cushion where the thigh rests, and the angle of the chair legs.
  • Took the measurements again.
  • Designed a mitre block to act as a guide while cutting.
  • Printed the mitre block on my 3D printer
  • Cut the legs to the correct length.
  • Re-capped the legs.
  • Designed and printed a replacement cap for one leg that came with a broken cap.
  • Sat and went “Ahhh”.

The mitre block only needed to cut perpendicularly, since the caps only fit square to the leg. I made two blocks: one for the front legs, one for the rear legs. Realistically, I didn’t need to. The front legs, being at 81.5° to the ground, needed 55.6mm cut off. The rear legs, being at 76.5° to the ground, needed 56.6mm cut off. But, I made two different mitre blocks anyway, just for the hell of it. I made sure the hole through the blocks fit easily, but not loosely, around the leg of the chairs, and provided an open section to allow the block to be clamped to the leg of the chair. To see what the block looked like, check out the Thingiverse files.

http://www.thingiverse.com/thing:347759

Here are some photos of the chairs, and the process:

1 - Before

Before

2 - jig going on

Jig going on

3 - jib clamped in place

Jig clamped in place

4 - cutting leg

Cutting the leg

7 - first chair complete

First chair complete

 

8 - four chairs complete

Four chairs complete

9 - chairs at correct height

Chairs at correct height

 

And some photos of the end cap replacement:

a - damaged end cap

Damaged end cap

b - replacement end cap

Replacement end cap – you can barely tell which one is the replacement…

c - replaced chair leg

Replaced chair leg cap