I have been able to spend a few hours on the project, and I thought I could share some of the progress so far.
I was going crazy trying to figure out a solution to the screen and processor dilemma. I still haven't figured out a perfect solution, but I choose to focus on other parts in the meantime.
One problem with upgrading a small, handheld device is that there are serious space constraints you have to work around. Finding out how much room (or rather how little room!) I have to work with inside the empty shell is very time consuming, but spending the time now makes things a lot easier later on.
I have two goals with the mechanical design:
- Everything must fit inside the original enclosure
- Reuse as many mechanical features as possible (pushbuttons, battery compartment, connectors etc.)
The easiest route towards these goals is to start out from what I already have, in my case that is a main board from one of my Psions that wouldn't boot. (Bonus points to anyone who can spot the problem, it's actually visible in the photo below)
For my first attempt, I used my digital calipers to measure the outline of the board. While this worked OK for the most part, i ran into some trouble.
- I wanted to reuse components like the battery spring, but the spring holder was obscuring how it mounts to the PCB
- It was very difficult to accurately measure the location of the mounting holes since they are closer to the middle of the PCB, making it too easy to take crooked measurements
- The most complex shape (the lower right part in the picture) was very difficult to measure accurately, and that is the area with I have the least space to spare.
So I decided to take a more refined approach. I assaulted the PCB with my hot air soldering tools until only the board itself was left:
I had planned to harvest some components that I want to reuse for my own PCB from this board anyway. Now that the PCB was flat again, I could use a flatbed scanner to digitize the board.
At the left is a ruler I included in the scan. This was partly to help keep the PCB horizontal in the scanner, and partly to have a size reference to make sure that I got the scaling correct. This actually came back to bite me in the rear, but we'll get back to that.
With my scanned image trimmed down to the very edges of the PCB, it was only a matter of importing the image in FreeCAD and drawing the outline on top of the image.
I also did some fine adjustment of the rotation of the image to get it exactly horizontal. If you want to try this yourself, make sure that you place your reference picture slightly below your sketch plane, or it will be impossible to see the lines you are drawing.
To verify that I got the outline correct, I printed the outline on my laser printer and laid the PCB on top. To my surprise, it almost, kinda matched. I measured my printout carefully and concluded that printing something in 1:1 scale on my printer actually made it just a tiny bit to small. Once I had figured that out, I could adjust the scale and print it again. But it still looked off! What was going on?
After spending more than an hour backtracking all my work so far and taking lots of careful reference measurements from the actual PCB and comparing them to my printouts and CAD model, I realized what went wrong - the scanned image has a small difference in scale between the vertical and horizontal axis!
I thought I was being clever when I included a ruler in my scan, but it turns out the proper thing to do would have been to place another ruler in the horizontal direction as well to verify that the scale was the same in both directions. I also realized that I had been bitten by this behavior from a scanner before, but apparently I didn't get bit hard enough that time since i forgot about it...
Now that I knew what the problem was, it was easily fixed by adjusting the size of my reference picture in FreeCAD and tweaking my drawing. Now the printout and the PCB matched perfectly!
Getting the outline into KiCad
The next step is to get my freshly drawn outline into KiCad. From FreeCAD I exported my sketch as an "Autodesk DXF", since KiCad can import DXF. Unfortunately, KiCad doesn't support all features of the file format so not everything is included in the import. To get around this, import your DXF into LibreCAD (or other software with complete DXF support), select everything and use the "Block / Explode" feature. Save the DXF, and now you can import it in the footprint editor.
In KiCad, I made a dummy footprint with the outline from the DXF file (the gray outline). I can then draw the outline of my own PCB (the yellow line) along the outline of the original board. I could have used the DXF file to create the Edge.Cuts layer directly, but that would only give me an exact copy of the board outline which isn't really what I need. The important part is that I have a clear visual indication of the constraints I have to work with.
The next step
Right now I'm using my outline to create a board that fits perfectly into the Psion shell. It looks a bit empty still, but I'm planning to include the following features:
- My USB keyboard controller for the Psion keyboard
- USB micro connector where the original serial port used to be
- Charging port / barrel jack
- AVR ISP connector accessible through the Psion debug port
- Battery spring connector for main batteries
- Battery /speaker flex connector for main batteries
- Battery spring connectors for backup / RTC battery
- Lid open / closed switch
- Voice recorder button switches
- Compact Flash slot cover open / closed switch
- Indicator LEDs
... and that's about it! The end result will look and feel like an original Psion, but in practice it will just be a very over-engineered keyboard since it won't do anything unless it is connected to a computer. But I'm getting closer! Once I get this working, I'll have a much better idea of how much room I have to work with, and I can start thinking about what CPU I should use again.
I'll keep you posted with the progress. Happy hacking! :)