The last post about this project aimed at building a long-range camera remote control ended with a few working prototypes in need of a case. Designing such a case to be practical, good looking and easy enough to manufacture in small quantities proved to be way more complicated than I expected however, and it lead me back to the drawing board. Here is the story of how it went and the valuable lesson I learned along the way.
Where I got it wrong
When I started working on this project, I did what sounds logic at first to an electronics engineer (or at least to me) : I laid out the components on the PCB while at the same time giving some, but not much, thought to its integration in a case. Mainly, I put the buttons on the right side, the display on the left side, and tried to fit everything else on the smallest rectangular area possible around this. I didn’t have enough space for mounting holes so I thought I would make a snap-fit case. Anyway, this was tomorrow’s problem, right?
When tomorrow arrived I opened my favorite CAD software and tried a bunch of designs, but none of them really gave satisfaction. The snap-fit joints were not easy to 3D-print even on an SLA printer, and ended up being pretty fragile. Tolerances were hard to get right, and the top and bottom parts of the case would not align properly, even with lugs. In the top-right corner I couldn’t place a proper tab because of the antenna connector, leading to the case bending slightly near the top buttons (because of some misalignment) and exposing the PCB inside. I also tried a few designs for the buttons, either as separate parts or as flexible cutouts, but none of them really worked.
And overall, the case looked bulky and… ugly.
Besides the problems with making the case, other issues started to appear during these tests, with details I didn’t plan for at the beginning :
- all the connectors, especially the input and output 2.5mm jack connectors, were on the same side, and they were sometimes a bit too close to each other depending on the size of the cables that were plugged in
- the five navigation buttons on the right (up, down, left, right, center), even tough they appear gigantic when you are fully zoomed on your design on a 27″ monitor, felt in real life too small and too close to each other
- even though the breakout board of the OLED display was taking the full height of the board, the actual useful display area was actually off-centered (vertically) and looked too small as well
- the antenna connector sticked out of the board too much
- the two right-angle buttons at the top (power and trigger), next to the antenna, were more difficult to integrate, and were not confortable to reach for the user because of the antenna
- while testing the first prototypes I realized it would be great to be able to fix the receiver on the hotshoe at the top of the camera, but I didn’t have enough space to easily add such an anchor point
All of these details started to add up, until I was convinced that I needed to re-think my design from scratch.
Let’s pause and think about it
As I now realize, designing a small handheld device such as this one requires a tight integration between the electronics side and the mechanical side of the design. You can’t just make one of them and think about the other one later, you need to design both at the same time (which is certainly why professional ECAD and MCAD softwares tend to be more and more integrated to each other nowadays). I am by no means an expert on the subject and there will be nothing revolutionary exposed below, but here are a few personal takeaways from my experience with this project that you may find interesting.
Thinking as a user, not as an engineer
The user experience needs to be taken into account from the beginning.
When designing the first prototype I focused on the functional side of things : “Does the text appear on the screen? Does it react when I press the button? Great, it’s finished!”. But there is a completely different aspect of the problem that is equally important : is the screen large enough to be readable at the distance it will actually be used? Are the buttons wide enough and efficiently placed to instinctively fall under the thumb? Do they feel good to press? Is every external component (buttons, connectors, …) located somewhere which is both logical and practical from the user‘s point of view, instead of the layout‘s point of view?
For instance, when routing a layout it is sometimes instinctive to place connectors where they are easier to connect on the board, with shorter tracks and less zigzaging around. It may even offer better performances, when you consider high-speed signals or noisy high-power tracks. But a user (who might not even have seen a single PCB in their life) obviously doesn’t know or care about this sort of stuff, and expects to plug the cable where it makes sense to plug it. For example, it is usually more intuitive to find an input connector (power, data, …) on the left side, and an output connector (video output, actuators, …) on the right side.
This necessarily makes routing the board more difficult. However, you (and other people) will hopefully spend way more time using the device than you will spend working on this more complicated PCB design, making it well worth it in the end.
On a side note, when working with microcontrollers, a simple trick to make things easier at this stage is to identify what flexibility you have regarding GPIOs. During the development of the first prototype on a breadboard, GPIOs are usually assigned more or less at random, or at least for what makes sense for this particular implementation. But when designing the final schematic, it might be a good idea to make a list of the GPIO lines that are required without connecting them. Later in the layout stage, when the most important components (including the microcontroller) are placed and oriented on the board, the GPIO lines can be connected one by one in the schematic where it makes the most sense to minimize the layout complexity. You just need to remember to update the pin definitions in the firmware when you are done.
From the outside to the inside
Another point to think about from the beginning is the integration of everything (electronic or mechanic) that doesn’t necessarily appear on the layout but should be taken into account in the design. For instance, if an external component (battery, screen, …) is taped on one side of the board but the connector for it is on the other side, how the cables will fit in the case? It might be a good idea to add a notch in the outline of the PCB to route them cleanly. By the way, what is the actual length of cable available? If it is too short, a deeper notch might be necessary. If it is too long, moving the connector further away to cleanly “consume” the length of cable is a good option to consider. Thinking of the overall outside package and pushing things inside to fit everything will look better in the end than having to add protuberances or enlarge the whole case because of that one connector that sticks out of the board too much.
Adding mounting points is a pretty standard practice, but simply putting a 3mm hole at each corner of the board and hoping for the best is not always the best approach. Here are a few questions that might be worth considering :
- What size of screws (if using screws) is necessary? Mounting holes on off-the-shelf breakout boards are usually 3mm because M3 is a widespread standard, but could your design be strong enough with smaller (M2 or M1.6) screws, and would that make integration easier?
- Where can these mounting points be placed in order to not interfere with external components (both electronics and mechanical) while keeping the case rigid enough?
- Are screws really the best solution anyway? For example, maybe a notch on the board can fit into a corresponding notch in the case on the right side, while being locked into place on the left side by one of the screws for the case. This can be useful if there is no room for screws on the right side because of a large connector, or simply if you are running out of useful board area for routing components there.
- Do some external components on the board require additional mounting points? Even if this is not the case (assembled with double-sided tape, …), maybe they need some kind of lugs to make sure they are properly aligned during assembly.
- Is there enough clearance around every mounting point? Are there other areas where the board is in direct contact with the case which must be marked as “tracks but no component here” zones?
For example, here I saved some space by using M1.6 screws and only cutting a notch on each corner of the board instead of a closed circular hole. The PCB is sandwiched between the front and rear parts of the case, and the contact surface on both sides is marked on the silkscreen layer to make sure no component will be placed in the vicinity.
Another thing to take into account is the height of some components : connectors, some large capacitors or inductors, through-hole components… In order to make the integration as tight as possible, they must be placed somewhere they won’t interfere with another part above them. For instance, I wanted to ensure that the screen panel was as close to the PCB as possible in order not to waste space (which would have made the case thicker), therefore I had to make sure that no component under it was thicker than a 0603 capacitor. Ideally, if the height can be approximately consistent in this area, it might help the screen being level when assembled with double-sided foam tape.
Bottom line : all these considerations take space on the board and add lots of constraints on the layout, making routing more difficult. However, it will probably still be easier than having to deal with integration issues later.
Now, doing it right
In order to solve all these issues, I decided to completely change my workflow and start with the mechanical design first.
I found a larger screen panel on buydisplay.com (a 1.3″ one with a flat cable connector, no breakout board this time), made a 3D model of it, and placed larger buttons to its right, all of them on the front side. I then placed the connectors and their associated LEDs where it made sense, and added the hotshoe support. Finally, I designed a case around that and tried to make it better looking than before.
A few iterations were 3D-printed to make sure it felt good in hands.
Now that it looked good on the outside, I worked on fitting everyting inside. I added a PCB in the 3D model with cutouts to accomodate the components already in place, then the other bigger components, such as the battery.
When I was satisfied with this model, I simply exported the board profile as a DXF and imported it inside Kicad on the board outline (Edge.Cuts) layer.
I then placed every “fixed” component (connectors, buttons, LEDs, …) on the layout according to their position in the 3D model (by manually measuring and moving the components one by one, unfortunately I didn’t find a way to automate this step), isolated the components and areas with height constraints (mainly the internal connector for the battery), and added silkscreen markings for the clearances around the mouting points.
Finally, placing and routing the rest of the components was business as usual.
I exported the 3D model in STEP format from Kicad and imported it into Fusion. This allowed me to check that there was no conflict between parts and that everything fit perfectly inside the case. By the way, if you are using Kicad and FreeCAD, there are plugins for the latter that allow seemless synchronization between both.
As usual, OSHPark skillfully transformed the design into cute purple boards, which I promptly assembled by hand. I updated the firmware to account for these modifications on the board, and added a few features at the same time, such as a footer (which can be seen in the renders above) with the battery gauge and the progress of the intervallometer.
Time to make the cases. I 3D-printed some of them on my Form2, but I also had a set printed in white PA12 Nylon (with an SLS printer) by Sculpteo to see how it would compare (I will talk more about the exact reason in a later post).
I battle-tested these prototypes at this year’s C’Space, during which I used them intensively for 5 days to capture launches of experimental rockets.
My set up during the event was slightly complicated and proved the versatile capabilities of these modules. I had my two cameras on the launchpad, usually one at 11mm (wide angle) shooting the ramp and the sky and the other one at 35mm (tighter frame) shooting the rocket exiting the ramp. Both of them had a Silver connected to them, while I had the third one in my hand acting as the remote control. The IR sensor fixed on the ramp to detect the launch was used as a backup and plugged into the input port of one of the modules on the launchpad. This way I could trigger the burst of photos manually using the remote, but in case I forgot (or if the radio packet lost itself in the air), the sensor automatically triggered the first receiver which then triggered the other one by radio.
Overall, I’m very happy with the result. I am now experimenting with different manufacturing methods for the case, but this is still very much a work in progress and will be the subject of a later post.