Introducing: EasyEDA 2 KiCad
When designing Printed Circuit Boards, my tool of choice is KiCad. After using Eagle for some years (I even designed my first ever PCB with it), I tried KiCad and never looked back. Earlier this year I also learned about EasyEDA, an online PCB design tool. ?
What are highlights of each tool and how can you have the best of all worlds?
TL;DR
If you are just looking to convert a file from EasyEDA to KiCad, here is the link to the tool:
https://wokwi.com/easyeda2kicad
Comparing KiCad and EasyEDA
KiCad packs in many great capabilities: an extensive library of component symbols and footprints, an awesome 3D viewer with many built-in models, and a very powerful interactive Push & Shove router. On top of all, you can extend it with Python and write powerful automations:
EasyEDA, on the other hand, has some great advantages too: it's a Web application that opens instantly. This is a huge advantage when running a workshop, or writing a tutorial. Contrast it with KiCad, where you first have to download 1GB+ bundle and then wait a few minutes until the software installs.
But for me the best past in EasyEDA is the built-in part library, which has a tight integration with their LCSC, partner component distributor. You can easily see the prices and stock status for each part as you are designing the PCB, and not worry about mismatching footprint or incorrect pinout (these still get me every time)!
EasyEDA also comes with a huge library of user-contributed footprints which are all one click away, unlike KiCad where you'd have to google it, download the file, install it, well... not the best UX.
Finally, EasyEDA has nice support for importing graphic files into the PCB (which is cool for creating custom PCBs), while with KiCad the process is a bit more involved and requires third-party tools.
However, I find EasyEDA's interface and interactive routing much less convenient, compared to KiCad, and it doesn't integrate with Git, which is a big drawback for me.
As you can see, each tool has its own strength and weaknesses, which means I use both - KiCad for larger projects, such as the Smart Conference Badge, and EasyEDA for smaller projects, workshops and quick experiments.
EasyEDA also supports importing KiCad projects, which means I can start a project in KiCad and eventually migrate to EasyEDA. But what about the other way around?
Enjoy the Best of Both Worlds
Over time, I found myself manually re-creating footprints from EasyEDA in KiCad in several projects. This was time consuming, error-prone, and it felt stupid, so I decided to create a tool to automate this.
This is how easyeda2kicad was born - a command line tool that can convert EasyEDA board layouts into .kicad_pcb
files. Fortunately, EasyEDA stores your designs in a JSON file, and they even provide some documentation about their file format.
KiCad also document their PCB file format, which was tremendously helpful when I tried to figure out how to deal with stuff like unit conversions.
Yet, god knows why they decided to use S-expressions for their PCB file format... Any LISP enthusiasts in the audience?
Easyeda2kicad is open-source, written using TypeScript, so you can run it directly from your browser, without having to download or install anything:
https://wokwi.com/easyeda2kicad
The package is also published to npm, so you can install it on your own machine. First, make sure you have Node.js installed (you want the LTS version), and then install the tool by running:
npm install -g easyeda2kicad
Then, save any board file from EasyEDA by clicking on File
→ Export
→ EasyEDA...
, which would download a JSON file. Once you downloaded the file, simply run the command line tool to perform the conversion:
easyeda2kicad board.json board.kicad_pcb
And voila! You can open the converted board in KiCad!
Some Examples
Here are some examples of boards I converted using easyeda2kicad, to show you the tool in action:
As you can see, most of the features should be converted seamlessly, with the exception of texts which may look a bit different. If you find a bug, please file an issue - or even better, fix it and send a pull-request.