Catch the Magic

After Danny (7yo Stepson) and Spencer(Neighbour) visited the last #swmakers [] meeting a couple of weeks ago, they came away all excited with an idea of capturing Santa to prove he’s real. So the project #catchthemagic was born.

To keep the enthusiasm going, over the weekend I set up a mini Fab-Lab at the #Lovegroovestudio (home) in the kitchen and the kids from the neighbourhood came around and worked on the #RaspberryPi with #scratchgpio to build a #SantaCaptcha device that will detect and take a photo of Santa.

I initially had a few problems getting scratch GPIO working as the version with Jessie distribution of Raspberian didnt seem to want to see the GPIO pins for me, however I used instructions found here to get everything up and running.

The kids undertook the prototype development with their ideas and with a little bit of help in programming from yours truly, where they used a PIR Sensor, aka “The Santa Sensor” (their words not mine) and the stock standard camera in the Raspberry Pi to create a Santa Captcha device.

The following day they returned and fit the device into a housing, a fake present, as they didnt want Santa to see it and they thought this was the best way to hide it.

They now have a working prototype packaged as a fake present ready for testing, just needs some batteries .

The Scratch Script they created is very simple where it continually loops looking for change in the PIR pin from low to High and then takes a photo using the RPi Camera – Simple ! All the captured magic is stored under /home/pi/photos

I will upload the scripts and diagrams shortly – done

The kids are already planning to use this for the Tooth Fairy and Easter Bunny.

Stay tuned!

Please click through the photo below to the flickr album

Catch The Magic
Flickr Album Project: Catch the Magic

Care and Feeding of your 3D Printer

Over the last 12 months since owning the felix I’ve found that to keep it printing accurately I regularly check the following to make sure my prints are accurate and strong.

Level the print bed – this varies from machine to machine but rule of thumb is a paper thickness between your extruders and the print bed,  measure across each corner to make sure it’s level and adjust as required.

Calibration of all axis steps/mm – Move 50mm and measure that 50mm then adjust in the firmware the steps /mm using the formula below.   If these are out on one axis quite a bit then there must be a mechanical problem i.e. belts stretched.

New_steps = (wanted_length/measured_length)*old_steps

Course calibration of extruders – mark filament and extrude 50mm and adjust in the firmware until it’s correct using the above formula.  

Fine adjustment of extruders is performed through the slicing software using a thin wall test object, usually print a calibration cube with no top or bottom, no infix and 1 extrusion width on the perimeter, this will print out an object who’s wall thickness is exactly one extrusion width, when finished, the thickness must be measured and compared to the extrusion thickness of set within the slicer software,  adjustments are made again using the formula above with the extrusion multiplier instead of steps/mm as the target.  e.g. if your slicer software expects an extrusion with of 0.41 for the extrusion thickness, then after calibration you should be pretty close to this.  Factors that effect this will be you filament diameter

This fine adjustment of the extruder must be performed for every roll of filament you use as the thickness of the filament will effect this, of course no two batches of filament are the same.   Then saved within your slicer under a different filament profile.

Calibration of Dual Extruder – If you have more than one extruder then this is a little tricky, first the extruders heights at the tip must be exact, if not then one extruder will drag across and rip up your print.  This can be tricky to adjust, especially on the Felix, the only proper way is to shim up the heads until exact.  Not only must they be aligned on the Z Axis but also in the X and Y axis as when an extruder is selected it must go to exactly the same spot on X – Y Axis as the previous extruder.  This is adjusted in the firmware.

Once the main calibrations are done, then every time I get a new spool of filament I run a thin wall and a Temperature test, as mentioned above, the thin wall calibrates the filament diameter to the extrusion width, and a temperature test find the best temperature to be printing at.


Meet Felix…

…. he’s been part of the family for just over a year now :)

Last July I ordered and received my Felix V2 3D Printer Kit.

View the rest of my build album here on flickr

I must admit, I like absolutely LOVE having a 3D Printer.  Where I live, I have very limited space and hence no workshop, this printer has given me the freedom to make things for my projects right on my desktop.  Initially there was a bit of a learning curve with calibration, slicers, troubleshooting etc, but am happy to say over the last 12 months I love the quality of prints this printer puts out, it’s well and truly got me back in to 3D design and you can find all my designs up on thingiverse here –

One thing….don’t leave anything that’s printed in PLA in the car on a warm Aussie day else this can happen…..

After the Curtin Robofair last year, where we (swmakers) were invited to come and set up a stall, the next day I had some training in Perth for work, well woe was me!!!  I didn’t even think about the printer when I left it in the car.  V2 of the felix had printed parts which are PLA, sooooo low melting point and rendered my printer inoperable.

Thankfully FelixPrinters came to the rescue, where they offered to send me a complete set of the new V3 injection moulded parts for only the cost of postage…fantastic support thanks guys!!!

Happily I’m now running a Felix V3 and have since added a second extruder, my slicer of choice is  Simplify3D and Kisslicer pro as close second, both fantastic and much faster than the other open source alternatives.

I’ve currently got some interesting projects on the go, one being a printed Mini-Quad, so stay tuned.

RaspberryPi Event – SWMakers Bunbury

We have an up and coming Raspberry Pi event for the the South West Makers, it’s going to be a fairly casual get-together, but will be RPi orientated for those wanting to get their feet wet on the RPi, but also a chance to show off and chat about projects.

…Breadboard   # if you want to interface the RPi with LED’s, switches and other hardware etc If you r getting into breadboarding, then it’s handy to have one of these: M-M jumpers (or make your own from Cat 5 cable) F-F jumpers # both are handy for interfacing to the breadboard or other gear USB Power supply   with a USB to micro USB cable # run the RPi from the mains.

We have an up and coming Raspberry Pi event for the the South West Makers, it’s going to be a fairly casual get-together, but will be RPi orientated for those wanting to get their feet wet on the RPi, and also a chance to show off and chat about other projects you have on the go.

The concrete is slowly settling into place and it’s looking like a small RPi event will be held on Sat. the 25th of May 2013 at perhaps 11:00 to 15:00, then clean-up and out by 16:00. The location is currently still being worked on, but should have it settled by this weekend. I am thinking there could be around 10-20 people coming along for the event.

Whats going to happen there?
There will be some RPi (at least: solar power a RPi, webcam/microscope, GPS and temperature data collection), Texas MSP430, PIC (RFID Race Timing Data collection) and PICAXE (macro photography) projects present and some other interesting axillary modules. There will be some brief talks on people projects and a workshop on getting started with a RPi.

So what do I need to bring?
Best if you can bring a Raspberry Pi
Laptop running Linux or Windows OS (needed to write the OS to a SD card)
2GB or larger SD card   # this will be used to run the RPi. Can be purchased locally.
SD card reader – need this to flash the SD card from your laptop. Does the laptop have one built in?
Breadboard   # if you want to interface the RPi with LED’s, switches and other hardware etc
If you r getting into breadboarding, then it’s handy to have one of these:
M-M jumpers (or make your own from Cat 5 cable)
F-F jumpers # both are handy for interfacing to the breadboard or other gear
USB Power supply   with a USB to micro USB cable # run the RPi from the mains. I purchased an Apple iPad charge for around $25 or $29 from the local JB-HiFi
240V power board or two and extension cord . Mark your boards and cables
Either a USB keyboard, USB mouse and a HDMI enabled monitor, or HDMI to DVI adaptor. Note not all work, I would recommend buying one from Element 14, or some place that sells a RPi compatible unit.
Bring a network cable, as we can network the RPi to your laptop, and connect to it via SSH and VNC etc.
USB drive, with 3GB of free space. There is no or limited (via smartphone) Internet access, so we will need all the extra RPi and Python modules downloaded ahead of time. Can any Ubuntu and Python gurus help me out here?
Or just bring along your current project work :-)
Bring a lunch

Where do I get the above gear from?   AU based, can also order breadboards, jumpers etc Pretty fast turnaround.   AU based, lots of goodies. lots of nice goodies here. Just watch the freight. Once it gets past a certain size/weight it goes through the roof (I know). The above two links sometimes carry the same items    An amazing place. Just have to dig around a bit. FREE FREIGHT! They have LOTS of cheap electronic parts and some RPi add-ons. Can take 6 weeks to be freighted in though.

Can I still come along and geek out if my gear doesn’t arrive in time?
Of course. Come along and see how it’s done, and what you can do with them. Meet other like-minded interesting people.
If you have one, bring some other project along. Even if you can’t stay for the entire event, do pop in and say hello and see what all the fuss is about.

How much is this going to cost?
I am calling this the inaugural Bunbury SW Makers event!   I am hoping this will be a free or very cheap event by having this hosted at a location that offers us free(?) accommodation for the day. Perhaps we might have to give a small gold coin donation? As I said above, I will know by the weekend.

Can I invite other people along?
We are trying to keep it to the ‘Bunbury-MakeSpace’ people and people really interested in RPi’s, PIC/PICAXE development. If you know of someone actually actively playing around with a RPi or PIC/PICAXE etc, then yes, invite them along. I have also made contact with TAFE and the UNI IT staff to see who might be interested. I don’t think we will have a big enough space to accommodate 30-40+ people. First in first registered get a place.

OK, I am hooked! What do I need to do now?
Great! Just RSVP with your mobile number to: and let me know if your bringing a project to talk about. It would be nice to know how many projects and talks we have before we start, ie: do we have 3 or 13 to discuss and table space requirements etc.

Rallylog (post) Update #1 – Adding a wrist strap to the SparkFun Case

As these were handheld devices I decided to add a wrist strap to stop things from getting dropped and damaged at the checkpoints, especially as it can get busy as the bikes pass through a checkpoint. … I simply purchased a heap of Wii straps from one of my favourite places and attached with a split pin through a hole I drilled into the base of the spark fun enclosures. to stop any abrasion to the plastic caused by movement of the split pin I used a washer on each side of the case.

As I mentioned in my last post that just before I lost my mojo I ended up completing my build of 10 Rallylogs and testing at a live event.

As these were handheld devices I decided to add a wrist strap to stop things from getting dropped and damaged at the checkpoints, especially as it can get busy as the bikes pass through a checkpoint.

Here some of the pics with a hand strap added. I simply purchased a heap of Wii Mote straps from one of my favourite places and attached with a split pin through a hole I drilled into the top cover of the spark fun enclosures, I used the top Cover as there was more room to drill the hole.

(Click on the images to view)


The Wii Mote strap is looped through the split pin at the base of the handheld, to stop any abrasion to the plastic caused by movement of the split pin I used a washer on each side of the case. I just placed a length of insulation tape over the inside covering the split pin (not shown) to protect any possible shorts with the PCB.

SCE_20110210-6917.jpg SCE_20110210-6914.jpg

To keep them all warm, cozy and dry when not being used these utility bags were purchased from the local surplus store, although I did see DX sells them as well (just can’t find the link atm), they’re a perfect fit for the spark fun case and also have belt loops on the back.


All 10 completed and ready to go for the big event…..

The Good, the Bad and the just plain AWESOME!!!

I thought I’d just fill you all in with what’s been happening the last couple of years, some bad, but a lot of awesomeness. Yes I’ve been a bad boy for not updating the blog so heres the real reason why…..

Namibian Sun

I thought I’d just fill you all in with what’s been happening the last couple of years, some bad, but a lot of awesomeness. Yes I’ve been a bad boy for not updating the blog so heres the real reason why…..

The bad – A very sad and messy divorce where I lost my mojo for all things geek.

The good – I got my mojo back!

The just Plain Awesomeness! – About 12months after the Bad, I’ve been travelling the world with my Daughter, Courtney, well to Africa mainly, but heading to LA in a couple of weeks, my daughter was fortunate to be cast in a fairly large role in George Millers up and coming Mad Max Movie, Fury Road, due to be released in 2014.

Becoming involved or at least getting a glimpse into the industry from the outside has been such an eye opener to me, I’ve never had an experience like it. I spend approximately 2 months on location in Namibia and another month in Cape Town in the Studio chaperoning my daughter, she was over there a total of 6 months and we had a roster of friends and family support us (no shortage of volunteers let me tell you haha).

I met some truly talented people at the top of their game in many fields, both in front of and behind the camera, and made many, many friends…and the toys OMG, both big and small that they had to play with from a geeks point of view were awesome! Unfortunately we are under an NDA so I can’t post my photos here yet. But It’s going to be one hell of a movie from what I’ve seen, I’ve been a Mad Max fan since the first movie that kicked off Georges career back around when I was 17(ish), little did I know that my daughter would be in one of his followup this many years later haha or should I say <groan> seeing how many years it’s been since I first watched the original Mad Max….

So despite its downs over the last 2 years, the universe has seen fit to put things back in balance all round….and my mojo is back with lots of projects that I want to sink my teeth into, also to update you on the progress of the Rallylog project. Before all this happened It was put into service, and I just didn’t get to blog about it, so now I have some post coming up about that very soon.

BTW if you want to follow my daughters career you can follower her on FB

SCE 20121107 7658

Oh Really!!!

The Namib Desert outside of Swakop where we stayed while on location in Namibia

Sand Dunes

Base Camp

One of the base camps while on set…Sand and very big sand dunes!!!

Let there be smoke

Let there be Smoke!

Smoke Machines on the desert

It's a Wrap!!!

It’s a wrap!

Last day of filming!! George, Courtney and I onset at Cape Town Studios

Pirate Birthday Party

Pirate Birthday Party!

Celebrating one of the cast members birthday, also ended up being the unofficial wrap party as filming had just finished after 6 months.

Putting the Project into an Enclosure–Part 2 Machining the Case

In my previous post I described the design process I went through in selecting the right components from my Rallylog that would fit into the Sparkfun Project Case, all while mounted on a PCB. What follows is the process of getting the actual case machined with my Zenbot CNC machine.

How am I going to machine this thing?

I didn’t tackle any machining until after my PCB design stabilised (three revisions) but the day did come when I had to work out how I was going to automate the machining of the project case. As I previously mentioned in my last post that I was going to use my ZenBot Mini CNC to do the work, I just need to figure out how it was going to do it.

To tell the truth I have hardly used my CNC other than for prototype PCB isolation routing. I had never used if for cut-outs or any 3D machining. One thing I needed was a way to produce my tool paths or G-Code that Mach3 uses, Mach3 is the controlling software I use with my Zenbot. It takes the G-Code and handles all the X,Y,Z movements. I could hand code G-Code but, hey, I’m not that good!!! So I needed some CAM software Alibre does have a CAM option, but I had a heart attack when I received the price, so after much googling I found Cambam,

The Fixture

As I mentioned I needed a way of holding the Sparkfun project case in a repeatable way as I need to machine 10 of these, also I was going to be doing the machining from the inside of the case, this way I could pocket around the LCD at the same time as I did my cut-outs and light pipe holes, all in one hit. So some sort of fixture was called for…..

I decided to mill out the profile of the top spark fun case to create a fixture where I can just drop in any case top lock it in and then press the ‘go’ on Mach3. To do this I imported the Sparkfun 3D STL Model that I used in Alibre, again I had some issues of the “standards” and used a open source program called Meshlab to first import in the STL model with the clean-up enabled then to save it as a new STL. This work and I now had the Sparkfun project case in the CAM software


Some of the traps I found is that the model needs to be aligned with the Z-Axis 0, this is how the Cambam sees the top of the work piece.

Cambam has a handy function for exactly what I want to do, this “Mold” function, allows a mold to be created from the 3D object, and by varying the Clip Areas I can control how deep I want my mold, in this case just 3MM so I can get the Case top to sit nicely in the fixture.

My Zenbot can only take a max shank size of 1/8 as I had initially replaced the Dremal for a Wolfgang Engineering Spindle for my PCB routing, for those interested these spindles Rock!!! the spinout is incredibly tight.

Creating Tool paths

I first created 2 tool-paths in Cambam, one to rough out and remove most of the material quickly with a 3.175mm end mill (1/8) and a second tool-path to finish with a ball mill to do the edge profiles. Cambam generates the crossovers and the plunge rates based on the tool size.




Setting Machine Origin

Another feature of Cambam is I can set the machine origin, this is the origin of all the Axis (X,Y,Z) in relation to the work piece, now I have the way to repeatedly setup my work pieces by referencing everything back to this origin mark (red X below). If I marked this on my fixture all I have to do is zero my Zenbot to this origin before I run the job and everything will be referenced correctly.   In this case it’s 5mm below the work piece corner.


Machining the Fixture

I had some scrap plastic board that came with some flat packed furniture that was to become my fixture. Below you can see the rough tooling has finished and it running the finishing tool-path. you can see where I marked my origin in the bottom right of the work piece. I use this to Zero Mach3.Sparkfun fixture

Zenbot Maching Sparkfun Project Case Fixture

Perfect fit, no slop or play, I did re-jig my tool paths to go down another 1mm in depth so the inside of the case is aligned with my Z-Axis Zero (or the top of the fixture) that makes things easier when I go to do my cut-outs and pocketing.

Test fit

Machining the Project Case

Now that I had my fixture for the actual case I needed to work out my cut-outs, drills and pocketing, using the same project file in Cambam that I used for the above fixture machining, I created addition layers for my cut-outs. This was good as I could see where everything was located in relation to the 3D model, I used measurements from my Alibre model to place the Circles and rectangles that were to become my machining profiles.

The only gotcha is that you have to think in reverse as I’m machining from the inside. Below are the cut-outs and drill points for the light pipes


This is with the pocketing areas added. I decided to add the pocketing around the buttons as well just in case.


With the machining tool-paths added, Cambam also has the ability to add tabs in the cut-outs so the work wont foul you bit. I decided to try this.


The Results

I’m very happy with the way everything has worked out. By putting in the extra work in the design stage it seems to have paid off, the Sparkfun Project Case fitted my assembled PCB like a glove, everything aligned up perfectly.

Here is the final result with cut-outs finished, light-pipes installed and the pocketing for the LCD and switches, the actual pocketing for the switches was not needed so the 3D model was fairly accurate. I didn’t photograph any of the cutting in actions so will post a few more when I finish the rest off.

Result cutout and pocketing

I used the same procedure to machine out the end piece from my USB and SD card, that is: mill a mould fixture with a known offset and then generate tool paths within cambam for the cut-outs.

Case and Assembled PCB

Project case end

This is showing my REV B PCB in the case, this had the range issue and the separation of the ground plane below the ID-20 reader corrected the issue.

Snug home

Front with LCD installed

Side profil

Side profile

Light pipes and LCD working, showing a card read under my test program.

Led working

Putting the Project into an Enclosure – Part 1

For the open Hardware Rallylog device I’ve been working on, I’d based my design around fitting into the handy Sparkfun Project Case and since most of my projects never get to the “enclosure” stage, they are either used bare PCB or thrown into anything that may provide some protection against the elements, such as the widget sensor housing.

This project was different for me since I’m required to build 10 of them for the local motorbike club, something a bit more “finished” than your standard geek project. Throughout this project I’ve learnt how to use 3D modelling to check mechanical layout and tolerances, also to use mechanical data supplied in technical data sheets in selecting my components. This along with taking into account PCB heights, button heights. Overcoming challenges like how do I get my LEDs to the outside without using panel mount LEDS, or how do I protect or mount my LCD display again with out using a panel mount. I then used all this to make things easier for me when it came to production to produce CNC tool path G-Code to cut my enclosures.

I thought I’d document the process that I’ve gone through to get my Rallylog nice and snug in the Sparkfun Project Case. BTW this may not be the right way, but it’s the journey I took, I would love to hear from people who do this professionally for a living to get a feel of the full product design process.

It has to be easy to make and assemble

Right from the outset of the project I wanted this to be easy to assemble. Seeing I have to make 10 of them (to start with) I wanted everything to be mounted on the PCB so all I have to do is get my enclosure and put in the finished PCB, screw it all up and its working, i.e. I didn’t want to have a panel mounted LCD or LEDS that I had 1) manually fix to the Enclosure, and then 2) “wire” back to the PCB. I wanted something that I can reproduce easily and with the least amount of human work, I love my projects, but quickly hate having to manually do a lot of repetitive work like solder up individual LEDS etc. (I guess I ‘m lazy). I also have a small CNC machine at home, A Zenbot Mini that I purchased off eBay some time ago, so I wanted to automate the panel cut outs as much as possible. I wanted this to be repeatable, using a handheld Dremal is not my idea of fun, especially if I have 10 to do now I will quickly loose interest after the first one, and it’s definitely not repeatable. Also if I get an order for another 1, 10, 100 down the track I definitely don’t want to do it manually, and I don’t want to think too hard about getting things set up.

I could have also gone with an Arduino board and made up a custom shield or use the RFID shield, again it would have meant more painful hand assembly, so I decided to stick with a custom board fitted into a readymade enclosure.

It all starts with the User Interface

Whilst I already had my initial schematic laid out (in Kicad), before I started my PCB layout process I needed to work out what it was going to live in. I was very eager to start laying down track as I love designing PCBs, but I had to hold myself back and ask a couple of questions first:

  1. What am I going to put it in? It needs to be functional, fairly robust, and fit everything in, including the battery, the RFID module, the LCD, SD Card socket and so on. It needs to be off the shelf that I can easily modify, no custom injection moulded case for this project ( I wish)
  2. What is the user interface going to look like? I needed to keep to the KISS principle. The majority of users at this motorcycle club are semi-retirement to retirement age, so not the most savvy when it comes to geek gadgets,
  3. Will it be easy to assemble?

When you stop and think about it, it makes sense to start with the user interface and how this will fit into an enclosure, then move onto the physical PCB layout and component selections, else my PCB might not fit into the case, it may be too big, too small, same goes for components selected. The user interface may not be functional and then we’d have to start again.

The User Interface design

My initial schematics included a Nokia LCD display and a joystick for user input. Also a couple of LEDS for visual feedback.  

When I asked myself the three questions above I quickly went back to the drawing board, as the Nokia display failed Question 3), same went for the Joystick, also I felt that it was would have been a bit too had for the target audience to use, so it failed Question 2) as well.

In the end I decided to go back to a tried and proven UI design that consisted of a simple and easy to read backlight 2×16 LCD character display with three push buttons for user input and two LED indicators, something a bit easier for the end user to use.

As yet I had not selected the parts i.e. the LCD or switches, I just had the layout in my mind (or on paper) the UI layout that was a three button input under a standard 2×16 backlit character LCD, and x2 LEDS to the left of the LCD display, these LEDS would be Red and Green, which could be used to indicate different statuses easily, really simple!

UI sketch

The Enclosure

Once I had the basis of the interface this is where the engineering juggling started, I had to find an enclosure that would meet my requirement, and find components at the right price that would work with the selected enclosure in the way I wanted.

I had a look around on a number of sites and found there is a wide variety of enclosures out there, however without physically having one, its a bit hard to start working out measurements and getting a general feel for it in your hand. As luck would have it I already had a couple of Sparkfun Project cases at home that I had purchased for a “future” project, well this was that “future” project, I used this initially as my enclosure of choice, it seemed to fit well in the hand and be spacious enough to seemingly fit everything in, i did this initial check by putting in the ID-20 RFID reader module and a 9V battery to see how things would fit. At this point I still did not have an LCD or buttons selected.

Once I had my enclosure selected it is now a matter of finding the right size components to fit, as mentioned above I wanted everything mounted on my PCB, and now I had the dimensions of the enclosure I could start my PCB design and component selection, this process I found to be the most time consuming. However I initially needed to start working out my clearances with my PCB in the enclosure, I’m also a visual person, I need to see things to make it easier for me to understand, so I decided it would be much easier to utilise 3D modelling and model the enclosure and mock up my UI, I’ve used Alibre in the past and this is what I modelled the Rallylog enclosure in.

The 3D Model

Not wanting to re-invent the wheel I contacted Sparkfun customer support with a request for a 3D model of the Project enclosure and received an email from Casey Haskill, the designer of the enclosure, he was more than accommodating (Many Thanks Casey!!!) and sent me the files in IGES format, one that Alibre supported……supposedly.

The great things with standards is that everyone has their own take on them, obviously Alibre was no exception, the problem was that each time I went to import it failed, after a bit of research I found a small utility program that I used in a two step process that allowed me to clean up the IGES and export it as an STP file, one that worked with Alibre.


Once imported I can now can get accurate measurements and start modelling individual components. My modelling is very simple, make a basic 3D model using the supplied mechanical data, no fancy surface or trying to emulate the real thing.

One of the immediate things I could see is that either I had to use a panel mounted PCB or I needed a two tiered PCB design as the headroom above the PCB was quite large. The panel mounted LCD was ruled out due to easy of assembly rule, so I knew that I would be dealing with a two layered PCB design.

Alibre is great for quickly creating 3D objects and by changing dimensions it regenerates the 3Dmodel, so I quickly created a two tiered mock up of a PCB with the correct thicknesses of the PCB substrate being used, this was added to the enclosure assemble so I could visualise the internal dimensions. The two PCB layers are separated by the dimensions of a standard 0.100 header and socket of 8.5mm.



From this I now had the dimensions required from the top of my PCB to the inside and outside of my case.

Now I needed to know what LCDs, buttons and LEDs out there that when mounted on the PCB how they would interact mechanically as far as clearances with the enclosure, however I had to work into the constrains of my circuit design and of course price.

Due to I/O restraints I couldn’t use the standard character LCD in 8 bit or even 4 bit mode, so that ruled out most of the cheapest LCD displays around. So it had to be I2C, SPI or Serial, my initial design was done with the Nokia LCD in mind and so used SPI, as I wanted it to mount onto my PCB, almost all LCD I’ve found have their own PCB with a connector that either plugs into a cable or you plug it into a socket onto the PCB, so another layer on top of the existing PCB was not feasible. I located the I2C range of New Haven Displays and found one that would fit given the dimensions, however I couldn’t get them locally and ordering in from New Haven was approx. $USD50 per display, not economical! Unfortunately there were not many alternatives.

After talking with my local local supplier he put me onto the EA-DOGM Series of LCD Character displays, these can be run in SPI Mode or traditional 4 or 8 bit mode, there are also directly mounted on the PCB, and have an optional LCD backlight module that mounts under the LCD module. The price was even better, $AUD15 for 2×16 and $AUD4 for backlight, perfect pricing just need to check how they would fit. From the Technical data sheet I whipped up a simple model and added it to the PCB





From this I could see that the LCD would fit if PCB mounted, but had an interference with the top of the Sparkfun case, this was acceptable as I would need to machine the cut-outs at some point.

I then did the same for switches and their buttons, I wanted the button to just clear the case and not be too pronounced or the reverse I didn’t want it to be recessed. In the example below using 6mm Omron switches and their associated square buttons. I found they were too pronounced out of the case.


I ended up finding the 12mm Sparkfun Push Button which met the right criteria and the button just cleared the case, after modelling it looked perfect, however the switch body itself has some interference with the top of the case, this meant that if I wanted to have a switch with the right height I would have to machine out the inside of the case.  


Engineering decision time….After weighing up the aesthetics and the work involved in machining out the case I decided to stick with machining out the inside as I would already have the top case mounted for cut outs, what if I just flip it around and machine from the inside, that way I could kill two birds with one stone. I could pocket out around the switches ( and the LCD if required) and then perform the panel cut out. I didn’t know how I was going to perform this but seemed doable.

Just to make sure where my interferences I used a great feature of Alibre called “Assembly Boolean” where I can select the top of the project box as my blank, and then select all the buttons and the LCD as my tools, the Result is the top of the Project box with all interferences subtracted so I can I know where to machine.


Just to cover my bets I added both switches to my design, that way I could use either if the other didn’t work, much easier to add the extra footprint at design time that to find out after that I really should have used the other switch, so I had an escape clause Winking smile



What about The next thing I needed to worry about was what to do with the LEDS. Where possible I now use SMD components rather that PTH, but using the PTH over SMD was going to be my only choice, however they would be standing quite tall off the board, and as the end user would have to remove the back of the case to eventually change batteries, I didn’t want them to be able to damage the LEDs if incorrectly re-assembled for any reason.

I started looking around for solutions, not being in the industry I wondered how they did it, looking at every day consumer electronics I saw that pretty well every LED indicator is displayed through a plastic window, that’s what I needed, but what are they, after much Googling I found the correct term of “Light Pipe”, this made things easy. I could stick with my 0603 SMD LEDS and have a standard 3mm vertical light pipe (they come in many different flavours) bought directly to the top of the SMD LED.


The Final PCB

Happy with the components selected I then proceeded to finished my PCB design, again to make things easy to assemble I designed the two layers as a single board separated by tabbed routes and tooling strips so the individual boards can be separated after assembly. I also moved my LEDS over to the right hand side to accommodate for the PCB connectors finished result.

To see the full assembly steps see my previous blog entry

rallylog pcb

Next…How I machined my enclosure cut-outs

#Rallylog Fusebits

While testing the serial functions I had issues as mentioned in the previous post where the AVR <-> FTDI seemed not to be working.

Initially I thought it was a hardware problem due to a hidden solder bridge or such, further testing on the ASCII example sketch revealed that something was being sent, albeit garbage, to me it looked like incorrect baud rate. After unsuccessfully checking bitrates, I filed it as a fail and moved on, however last night when I set about writing the RFID read function using NewSoftSerial on the RFID I was getting nothing reported back back on the AVR, not a thing coming back from the RFID Rx Pin, yet my logic analyser showed that the correct data was being presented on the correct pin of the CPU, it then got me thinking that it must be a fuse setting on the AVR.

I re-programmed it to the same settings as my wireless widget using the internal oscillator and now everything is now working.

I had assumed, incorrectly, that the AVR defaults to 8Mhz internal clock, which is the case, however it also has the divide by 8 fuse enabled by default, so reprogramming my fuses to the settings below fixed everything

L:0xE2 H:0xDA E:0x3F

Site Housekeeping

It’s been long overdue but as you can see the site is getting a makeover. 

I’m also doing some long overdue housekeeping with the pages, categories and tags.  There may be some 404 page errors, I am monitoring and fixing these as I come across them, however if you’re having any problems please contact me.

I’ve also added some mobile themes for those visitors on the go. 

RallyLog Testing Progress

Over the last couple of nights I’ve been verifying the respective individual circuits of Rallylog before I get down to developing the application.

Test Results so far:

3.3 V PASS
5V Enable PASS
LCD Back Light PASS
SD Card FAIL (Fixed)
SD Card Detect PASS
Buttons PASS
Buzzer PASS
Battery Voltage Monitor PASS
Programmer I/F PASS
Reset Button PASS
USB – AVR (Serial) FAIL


RFID Module

I’ve had a couple of problems so far, first the RFID module has very short pins that only just go through the PCB to allow for soldering, I had what looked to be a dry joint on one of the pins, after re-soldering with a bit more heat and solder all joints now are solid and is working no problems.  The Range of the card read seems to be far less than specified, so I’m wondering if the GND fills on both sides of the PCB near the RFID module could be causing this, I will remove them in the next PCB iteration. However it is working and the range is sufficient to work as required.

SD Card

I now have writing to the SD card working, had an initial problem where the pull-up resistors were causing the problem, removed and now ok.  I’m using the filelogger library ( and have it writing the test message to the card.  A gotcha was an existing 1-Byte sized file needs to already exist on the SD card for the library to work.  I’m also having some problems when the card is removed and re-inserted no writing takes place.  This appears to be a library problem so will investigate further later.


Another problem is the USB side of things.  I’m using an FTDI FT232RL USB-Serial conversion chip, fairly common, however the output on my Tx is garbled, I’m also assuming that my Rx is the same as I have yet to delve deeper into the problem.  It may be an unidentified solder bridge somewhere that I can’t see, the pitch on this component is pretty fine.  

I’ve checked correct bit rates but still failing.  I initially found I had problems when I went to program the bootloader and could not get any of them to work, so have filed this as a FAIL and moved on to complete the rest of the testing as I’m using the programmer interface to load my test sketches.   I’ll revist in detail later. 

UPDATE: I have downloaded the FTDI chip programmer utility and this sees the FTDI chip and alls it’s registers ok, so the USB-FTDI circuit appears to be working, but the FTDI – AVR is not.

Rallylog Assembly Progress

Last Friday I received my second revision of PCBs.  As mentioned in one of my previous posts I majorly stuffed up on my LCD footprint along with some additional board changes including the larger 3V regulator and the 5V regulator PCB.  

I’m very happy with my switch to Kicad also with it’s resulting PCB below.

(Click through to flickr images for more details. Some are commented and have notes)

rallylog pcb

After verifying the PCB again (this time successfully), I set aside some time over the weekend to assemble the first unit for testing.


Rally log with all SMD components assembled

rallylog smd assembled


Rallylog with all components assembled and removed from the tooling strips

rallylog assembled


Test fit in Sparkfun project Case, have yet to fit the top cover, i.e. drill holes for LEDs, Buttons and LCD, will be leaving this until after testing, but happy with the results so far :)

rallylog assembled

New Tool for PCB inspections

My latest toy acquisition arrived in the post today, it’s a small usb microscope from Deal Extreme –  I purchased this so I could do my PCB inspections alot easier. 


Some of it’s specs:

  • max  resolution of 1600*1200 (these ones below were taken at VGA resolution – 640×480)
  • Manual zoom levels x25 – x200
  • 8 LED white light that you can control the brightness via a pot on the cable.
  • Measurements and markups via the software.
  • can use handheld and comes with a stand for hands free use.
  • snapshop button so you can quickly take still images.
  • Software filters to apply to the video stream.

The screen shot below shows me calibrating against a steel ruler with 0.5mm increments.  This is the outermost Zoom level of x25.


The calibration process is very simple once you work out how, the manual is written in “Chinglish” and not that helpful.  However I soon worked things out that to calibrate you pause the video source and then use the measurement tool to take a number of readings, from these you average the readings and enter the units and pixels measured into the calibration data, after the calibration has been performed then at the current zoom level you can make measurements, angle measurements, area calculations all through the software.

The down side is the calibration is only good for the zoom level you’re currently at so if you re-zoom you need to re-calibrate, so keep the steel rule on hand.

Here is a quick test on the rallylog board at the lowest zoom at VGA resolution.  The tracks are 10mil so not too far off with the measurements if you do the conversion.



Here is another couple, this is of the problem zone pour that I picked up in my previous blog post.


Zooming in on the above area with the microscope zoom function



Another using the emboss filter, you can see quality of the ATMega328 pads on the with HASL surface finish from Gold Phoenix (no so great on the one circled)


and with no filters applied and zoomed in.


The best thing is the price, at USD42 it’s a great addition to my toolbox.

Rallylog PCB Boards REVA

As mentioned in my last post, Rallylog is a new open Hardware project it also uses Kicad as the EDA.  Well late last week my prototype boards arrived from Gold Phoenix and very happy with the results, well sort of…..


When I receive a new design, one of the first things I do before any components or power is applied to my boards is to check all the physical connections with my trusty multi-meter on continuity settings then with schematics in hand I proceed to check every connection and check it off on my schematic.

From the schematics below you can see how I was progressing.  the green highlights are errors I’ve picked up, only a couple of minor ones that are easy fixed, until I got to my LCD board.  This PCB design is across two boards to account for a LCD, buttons and LEDS for the UI so that I can fit it all in the sparkfun project case.  I had created a new component for the LCD module I’m using, a low cost SPI based backlit LCD module, and I had placed the top row of pins on the module the wrong way around.  Still can’t work out why I hadn’t picked it up, but these are the problems when you’re a 1 man development team and there is no one else around for a design review…sigh, anyway changes have been incorporated into REV B.

20100713164141445_0001-cropped 20100713164141445_0002

Voltage Regulator sizing

Other significant change is to the 3.3V Regulator circuit, when I initially did my power budget I calculated that my 3.3V rail power requirements would be around:

Atmega328  – 5mA
LCD – 250uA
LCD Backlight – 80mA (20% Duty cycle)
SD Card – 80mA (200mA Spec)
RTC – 300uA

In total ~ 165mA .  The 3.3V regulator I had chosen had a max load of 200mA so plenty of headroom right? Wrong!!!

After revisiting my original design I realised I had made a mistake, I had not taken into account the input voltage and the de-rating effect of the volt drop across it.  In my case a 9v battery is being regulated by an LDO regulator down to 3.3V so in the process heat is generated, the larger the difference between Vin and Vout the warmer it will get, and the warmer it gets means my Max current output of the regulator drops, so how do I find if my regulator will still cut the mustard in this design? 

After a bit of research I found that I need to calculate the maximum power that can be  dissipated by the regulator and use this along with the max power of my circuit.  In this case my LDO is a SOT23-5 device.

so for my circuit:

Power(dissipated) = (Vin – Vout) * Imax

VIn = 9V (from battery)

Vout = 3.3V

Imax = 165mA

Power(dissipated) = (9 – 3.3) * 0.165 = 0.94W

This is close enough to 1W of power to dissipate in my SOT23-5 device.  Next thing is to see if the device can dissipate this amount of power.

From my technical datasheet the device has a max operating temperature of 125DegC and the thermal Resistance from Junction to Air is 220 DegC/W.  I also need to allow for Maximum ambient temperature, in this case 40DegC.  The thermal Resistance determines how efficient heat is transferred away from the junction i.e. the lower the number the better, meaning it’s more efficient at transferring away the heat from where it’s generated.  If the temperature reaches it’s operating max then the device will thermal limit, i.e. shutdown the output, which is not good.

Power(dissipatedMAX) = (TempMax – AmbientMax) / 220 DegC/W (for SOT23 Device)

= (125 – 40) / 220 = 0.386W

So my device has a max power dissipation @ ambient (40DegC) of 0.386mW , however the power being dissipated by my circuit is ~1W which is > 0.386W, so is not good :(   I need to go to a larger device, or lower the input voltage, in this case it will be a larger device as I’m not changing the battery type.

Calculating again for a SOT89 LDO Regulator with some better thermal parameters.

Max Junction Temperature = 125DegC

Thermal Resistance (Junction To Case) = 35DegC/W

= (125-40)/35 =  2.42W

So compared with my original regulator this one can handle the power dissipation as 1W < 2.42W with plenty of overhead.

Now the 5V Regulator

Doing the same for my 5V rail @ 85mA using the same SOT23-5 regulator (but 5V fixed output) gives  me:

Power(dissipated) = (9 – 5) * 0.085 = 0.34W

This is less than the Max power able to be dissipated by the regulator, i.e. 0.34w<0.386w so will be ok….just….although will run a little warm.

So if I add a PCB heat sink of 25mm square around (and underneath) the regulator using vias to transfer the heat how will that go?

So re-calculating with the PCB heat sink of 25mm square copper trace that has a thermal resistance of ~ 35DegC/W

Thermal resistance from Junction to Case = 81DegC/W

(125-40)/(81 +35) = 0.732W

So by adding a heat sink integrated into the PCB has increased the efficiency of the regulator to get rid of the heat by 89%.    

What I’ve done is to add a couple of vias directly beneath the regulator and opened up the solder mask so that bare copper is directly beneath the regulator.