Welcome to a special edition of Enginursday! Why is it special, you ask? Well, because I’m not actually a SparkFun engineer. I am here to bring you a cool new tool though – a few months ago one of our engineers commented that he had found these sheets online and it would be great if we had something similar on our site. Having used them quite a bit while in tech support, I agreed. While they are open source and we could have used them, we didn’t have much control over them and they may or may not exist for the products we wanted. So I sat down to figure out how to make our own.
Sheet for the Arduino Pro Mini from Pighixxx.com
The first thing I noticed was that I would never get all those boxes lined up on my own. After deciding on SVG as a final format I found an SVG library and dug into Python. Before you grill me too hard on my sloppy and inefficient code, keep in mind that it does what I want, and I didn’t know any Python before I started.
[ I eliminate the source code section, please visit the original news source ]
Another big thing was getting the data. I have to say, I did cheat a bit and get the basic ATmega328 and ATmega32U4 information from our Italian friend. But all that data has to be collected and there aren’t many shortcuts. The plus side is most of the work only needs to be done once per microcontroller, and then copied and pasted to each board that uses it. Finally, each board ends up with a .csv file full of pin data. The Python script then reads the .csv and makes each row of data in colored boxes.
Output of the Python script for the Arduino Pro Mini
The next step involved the image we were going to use. I considered using a Fritzing image, but I didn’t want to have to limit these to ones we had Fritzing diagrams for (or learn to make them myself). I considered using the image from Eagle, but that got messy and didn’t look that great. I finally settled on the product images off the site. They don’t scale as well as some formats like SVG, but they are there and readily available, and if need be should be fairly straight forward to take a picture for one that isn’t.
At this point I have an SVG with all my boxes, and a .jpg with the image of my board. Time to open a new SVG and drag everything into place. The boxes are about the right size, so I pull them in, and resize the .jpg. I then line the boxes up and resize the whole thing a bit if I need to. The next step is basically design. For the most part the rest of the data is in the .csv file as well, it just shows up as text that I can move around. At this point there are tweaks that could probably be added into the Python script, but since each file is different it would take just as much time to add it to Python as to do it by hand.
Final version of the Arduino Pro Mini
Once I’ve gotten everything onto the page we get to the most important step: printing it out and bugging the engineers. It is always a good idea to have someone double check your work, and who better to check it than the engineer who designed the board? This is especially useful for boards I haven’t had a chance to use. Once everything has been tweaked and is ready to go I save a PDF version for the webpage and get the PDF and SVG files to our GitHub guru to add to the appropriate page. So all in all it took quite a few people from Italy, to the US, and all over SparkFun to bring you these graphical datasheets. Tomorrow’s new products will actually have graphical datasheets available when they go live. I hope you enjoy them.
Boards that currently have graphical datasheets:
SparkFun Redboard
Arduino Pro Mini 3.3V
Arduino Pro Mini 5V
FreeSOC (Arduino Configuration)
ESP8266 Thing
Pro Micro 3.3V
Pro Micro 5V
More coming with tomorrow’s new products!
SamD21 Dev Board
SamD21 Mini Board
Let me know what your favorite one is and your favorite feature. Currently I’m working on the more popular boards, but let me know if you have any requests.