Software, Hardware and Mechanical Learnings Part I
As I began to venture into new engineering domains, such as 3d printing, micro-controller software development, and cad design, I documented my thoughts along the way. Here are some suggestions that I thought would be useful to share.
Hardware Prototyping and 3D Design
- Custom machining everything is expensive and time consuming. Use off the shelf parts wherever possible and design interfacing and adapting components for specific use with custom components.
- Simple designs are more aesthetically pleasing. Consider careful placement of screws and other components. Set screws and flush simple edges can produce a significantly different aesthetic.
- Develop 3d prints and designs with simple cad primitives, mirror creation tools and leverage methods for joining and splitting to speed up the design process. Combine basic primitives with advanced functions such as shell/chamfer to produce high quality designs quickly.
- Use the sketch drawing tools and alignment functions in applications such as Fusion 360 to perfect positioning with multiple components.
- Using a 3d printer to prototype temporary components in place of other materials such as wood, and metal can be a great way to prove out a design.
- For fragile 3d prints you may want to design lift edges for simplicity in removing an object from a print bed.
- 3d printing simple prototypes with fast-performing settings, and then iterating and refining with better settings can be an overall time-saver early in the design process.
Electro-Mechanical
- Pay close attention to motor control, torque requirements of your application, power requirements and proper software control. Understanding what it looks and sounds like when the electro-mechanical components are working properly cannot be understated.
- Where possible, acquire backup boards to keep moving forward in case an electrical component fails.
- Hardware is harder to debug than pure software when something goes wrong. Acquire tools and strategies to isolate software, electrical wiring or component problems quickly.
Machining
- Machining things is dangerous. Always wear appropriate protective gear. The goal is not to machine one thing, it is to be able to machine future things.
- Create guides and tools for precision cutting. Better than measuring twice and cutting once, was measure once, and cut once without having to question the initial measurements.
- Line up tools and lock things down, if things can shift, they will.
- Use the appropriate metals when interfacing with other appropriate metals.
Software
- IoT patterns are different than typical web based development patterns. Assume hardware loops can be interrupted by an end-user at any point in time.
- Some library functions on micro-controllers are blocking, while others are not. Understanding library functionality and timing can greatly accelerate development.
Service-ability
- Assume any moving parts will become loose over time — use correct nuts/washers/sized bolts everywhere.
- Make it easy to reach and update the software running on the hardware.
- Document a plan for how to fix the machine in several common failure modes, and then figure out how to simplify that plan with an improved design.
I hope you have found these tips useful. Feel free to reach out via email @ smithxlabs [at] gmail, and follow me on twitter @ smithxlabs
Disclaimers:
The author assumes no responsibility or liability for any errors or omissions in the content of this site. The information contained in this site is provided on an “as is” basis with no guarantees of completeness, accuracy, usefulness or timeliness.