Many projects consist of a number of elements including physical, electronic and software components. I thought I'd share some of the software and links that I consider essential for helping design and fine tune such projects (I use all of these products almost daily - most of the files that I provide for my projects are in a format supported by the software presented here).

With one exception all of these tools are available on all three major desktop operating systems Windows, Linux and OS/X. All of it is free (or has a free version available) and the majority of the software is open source.

General Tools

These tools can be used for multiple purposes throughout the project life cycle and aren't tied to any particular type of project.

jEdit - A General Purpose Programmers Editor

Software - Download - Availability: Mac OS/X, Windows, Linux

Discussions about which is the best editor can become very contentious very quickly, if you've been programming for a while you have probably already settled on one that you prefer to use. If you are fairly new to programming (or your previous experience has been with a language or environment specific IDE) I highly recommend jEdit.

jEdit

This is a general purpose programmers editor. It has syntax highlighting support for hundreds of languages (including auto indentation), a huge range of plugins that add additional functionality and a powerful macro language so you can easily add your own customisations.

jEdit is not an IDE, out of the box it won't compile or assemble your programs (although you can do achieve this through macros or the console plugin that gives you access to the command line directly in the editor).

The major advantage of jEdit is that you can edit multiple files in multiple languages (OpenSCAD files, assembly, text files, even the HTML to describe your project to the world) without needing to switch applications when you switch tasks.

As jEdit is a Java application you will need to have the Java Runtime installed to be able to use it.

SketchUp - Interactive 3D Design Software

Software - Download - Availability: Mac OS/X, Windows

SketchUp is probably most well known as the tool for creating 3D objects for Google Earth. It is used for far more than that though and is a quite powerful yet easy to use interactive 3D editor. I have seen some quite amazing objects created in SketchUp (you can see a few on Thingiverse as well as in the 3D Warehouse).

Construction Lines

My 3D editing skills are nowhere near good enough to use SketchUp to generate complete models for printing (I use OpenSCAD for that, see more about that below) but I find it a very useful tool to generate visualisations of projects before I start building them. One of the best features of SketchUp in this aspect is that it allows you to add construction lines to your project (these show things like angles and distances which are annotations to your object and not part of the object itself).

Complex Objects

Another great resource available is the 3D Warehouse I mentioned earlier. This site has a huge database of models you can freely download, use and modify to match exactly what you need. This is especially useful when you are in the brainstorming stage of your project - it's an excellent way to get ideas and crystalise your design.

SketchUp is one of the few programs in this list that is not open-source, it comes in a free and professional (paid for) version. The free version provides more than enough functionality for general hobbyist use so it's well worth trying it out.

The free version of SketchUp doesn't support STL files 'out of the box'. To be able to export your model to STL format (as supported by most 3D printers) you need to install this extension and follow the instructions for 'SketchUp 8 MR2 or Later'.

Electronics

These tools are for the electronic aspects of your project.

Fritzing - Circuit Design and Breadboard Layout

Software - Download - Availability: Mac OS/X, Windows, Linux

I've been using the free version of Eagle PCB for quite a while, it is an excellent schematic editor and has a huge library of parts available for it. The problem was that I did far more bread-boarding of projects than making PCBs (and many of my projects that did make it to a permanent circuit were down on veroboard rather than custom PCBs).

Breadboard Layout

I discovered Fritzing quite late in the game and I was initially attracted to it because of it's ability to develop a breadboard layout from a schematic. Fritzing actually has three views of your circuit that you can switch between very easily - the schematic, the breadboard layout and the PCB layout. Changes made in any view will be reflected in all the others so it can be useful to reverse engineer a breadboard layout (or PCB layout if you are willing to take the time) into a schematic.

Schematic Layout

It also provides a number of features that are only available in the commercial version of Eagle - multiple pages of schematic per project and auto-routing to name just two. There are some limitations as well, the schematic editor is not as advanced as that in Eagle and it can take some time to get it looking nice, right angled connections can be a bit of a pain to achieve and some of the parts in the standard part library don't quite line up with the default grid-lines.

Speaking of the standard part library it is very limited compared to Eagle although, to be fair, the majority of parts you are likely to use as a hobbyist are present. There is also a set of generic parts that you can use as placeholders for a more specific part with the same footprint. There is also a collection of user submitted parts that you can download and use, I also have my own library of parts that you can download and use as well. There is some work on tools to convert parts from Eagle to the Fritzing format but I haven't been able to find a completed version of one yet.

PCB Layout

Fritzing also has an integrated board ordering service, from within the program you can directly order one or more PCBs of your design. It does seem a little expensive though but thankfully Fritzing will quite happily export in PDF or SVG for home etching or as a Gerber file you can send to any PCB service.

It's worth noting that Fritzing only supports single and double sided PCBs, you cannot generate multilayer PCBs with the program (although if you need to do that your circuit is not likely to be breadboard compatible and you are better off using Eagle).

CircuitLab - An Online Circuit Editor and Simulator

Website - Link

Schematic Editor

This is one of the easiest to use and most fully featured circuit simulators I've come across that is free to use. Everything is done through a web interface, there is no software to download and install and you can save your projects to your account on the site and you can export them as PNG, PDF or SVG files for more public distribution.

DC Simulation

You can use CircuitLab just as a simple schematic layout editor for small circuits (or circuit modules) but it's real power lies in it's simulation capabilities. This is especially useful for analog circuits, you can do single DC simulations, DC sweeps (varying a voltage over a range and seeing a graph of the results) and time sweeps (injecting a waveform into your circuit and seeing the effect).

This has been especially useful for me dealing with Op Amp circuits and things like level shifters (as seen in the screenshots). Although I've concentrated on the analog side of things in this description CircuitLab also supports digital circuits (with basic boolean gates) so you can use it to test logic as well.

Datasheet Catalog - A Database of Component Datasheets

Website - Link

This site is great resource for finding manufacturer datasheets for electronic components, unlike other similar sites it doesn't bombard you with adverts and make you jump through hoops to actually get to the PDF files.

As well as being useful for avoiding navigating a range of different manufacturers sites to get to the datasheets this resource is excellent for analysing circuits made by others which use components you are not familiar with or for reverse engineering or refurbishing existing circuits.

The site has access to not only newer components but some much older ones as well, if you are refurbishing a control board for a pinball machine for example you might want the Motorola 6809 Processor datasheet.

This is a very handy link to keep in your bookmarks, you'll find yourself referring to it on a regular basis.

3D Printing

These tools are useful if you are designing and printing your own physical components for a project. They are more focused on the design stage - I don't cover basic printer software such as printer management or slicing tools.

OpenSCAD - 3D Design for Programmers

Software - Download - Availability: Mac OS/X, Windows, Linux

OpenSCAD is a 3D modelling program with a difference, instead of drawing the model you describe in a programming language using a mix of common 3D shapes (box, cylinder, sphere), extruded 2 dimensional shapes or imported 3 dimensional shapes (from an already generated STL file for example). You can replicate and transform this objects using rotation, translation and scaling.

CSG Example

One of the more powerful features of the program is it's support for Constructive Solid Geometry which allows you to combine objects using a mix of set operations like union, difference and intersection. This allows you to build up extremely complex objects from a collection of relatively simple ones.

Generating a Gear

Because the objects are described in a programming language (which supports variables, functions, conditionals and loops) this is an excellent tool to create parametric objects - where you have a similar object that is generated differently for different uses - gears for example. The majority of the objects I've posted on my Thingiverse page are parametric - the accept a number of constraint variables and will generate an object based on those constraints.

Quite frankly, if you have a 3D printer you NEED to have OpenSCAD installed and at least be able to operate, if not use it to design your own objects.

I've written in more detail about OpenSCAD before so it's worth taking a look at that post as well.

Thingiverse - A Repository of Printable Things

Website - Link

This site is the place to go to find a huge collection of 3D printable objects. You will find just about everything here - from completed objects for a specific purpose to OpenSCAD libraries for generating a range of necessary parts.

If you have a particular project in mind it is well worth searching this site to see what others have done that is similar (and could possibly modified to suit your needs). I also recommend you share your own objects on the site - not only will you get feedback you will be contributing back to the community and encouraging others to share in your projects. You can find my objects on the site here.

Summary

If you are doing any projects I highly recommend having all of the software above installed on your machine and all the links in your bookmarks. You will really appreciate having them available.