after having some tough time with finishing my PhD and digging into my new job as power electronics scientist at Silicon Austria Labs I had some time to prepare a few new things.
Finally the idea of microcontrollers, connected with webservers and capturing, storing and presenting data got a lot easier last years. So I kept up by working on ideas for IoT projects as my flat and garden definitely needed improvements towards automation and optimization (well that’s the computer engineers point of view).
Despite the fact that I decided to use well established standard WiFi technology with off-the-shelf IoT devices and collecting data on a web server to keep system design complexity minimal.
The initial idea behind my proposed distributed microcontroller systems project was the same – but at some point I realized, it’s damn easy with WiFi MCUs nowadays!
Especially with new technologies and Microcontrollers (as e.g. the ESP8266 and ESP32) with WiFi onboard a whole new era for easy integration with web 2.0 services had begun. And with that in mind I started several projects in parallel to make our home a bit more intelligent.
As teaser a short preview of what is upcoming in the next posts:
First steps with running Linux VMs & docker containers,
Setup of a reverse-proxy for proxied services (nextcloud & IoT devices),
Home and Garden automation using a selfmade API on an ESP8266, a python scripts in the Backend and a awesome Husqvarna Automower API,
and an autonomous Nestbox for small birds with ESP32 connected to a Node-Red Backend (see photo below).
If you have a part symbol and package set up properly you can go on with setting up a new device and the devices technologies.
In the Device Editor you have to create a new Device and add a Symbol (by simply). To have an easy example we will start with an simple 2 terminal resistor, and call the device R. Then you add your Package Variants, as i did here. I’ve added some Packages i have drawn before, and connect Symbol Pins with the Package Pins.
The Package Variant Name will be directly shown in the Technology Name, therefore i named the Variants in my example 0603, 0805 and so on.
The Prefix of the Device will be Name of the Part in the Schematic trailed by a ongoing unique Number. Here it will be starting with R1, R2 etc.
The Description can contain html formatted Information, and is useful for containing links to Datasheets of used Parts in the technologies.
And at last the most important, creating technologies. Every Package Variant can have several Technologies.
For example think of a 0603 Resistor, in values 1kOhm and 100kOhm. These would be the Technologies (i created here some more technologies for later use) in the Package Variant 0603. After adding these technologies you can easily add attributes and fill in the Information for every technology and every attribute. If you include an attribute called Value, the placed technology would automatically set this value for the part in schematic and layout editor.
Some Attributes which should always be added for a complete BOM export: MF (Manufacturer) MPN (Manufacturer Part Number) OC (Order Code) OTHER (for some additional Information) VALUE (for the displayed Value)
additional Attributes for faster part choice which i use in some other devices could be:
POWER (rated Power)
TOLERANCE (Tolerance in Value)
COST-100 (cost of 100Parts@supplier)
I-SAT (saturation current of a coil)
RDC (DC Resistance of e.g. a coil)
IDC_MAX (maximum DC Current)
VOLTAGE (rated Voltage e.g. of a Capacitor)
If you keep all that in mind when creating a new Device you will get a sweet Bill of Materials with every Information you need with one easy click. To see such a sample BOM only created by filling in all listed attributes in every device you will get something like this:
Every electronic designer may need a simple mechanical integration into a housing or only some protective shields for his electronic assembly.
In my opinion the most critical point is, when some connectors have to be soldered directly onto the PCB or if they are mounted into the case walls and reaching far into the housing. In this case, some simple 3D PCB Information is sufficient to see if there are collisions, and if the whole assembly group fits into the housing. Well, this check may be part of the mechanical designer, but to ease this step 3D PCB Data is required.
So the Part of the electrical engineer is to generate 3D Data somehow :), which can be used by the mechanical engineer. I am generating STEP Files, which can be viewed with Free STEP Viewers, and integrated by every professional CAD Program.
To generate this type of STEP Data is easy and can be done with EAGLE and a tiny tool, called idfstepper, within seconds. In this Tutorial i will describe this few steps, which are needed to setup all EAGLE part libraries to generate STEP data.
The Symbol, displaed in the Schematic Editor The Package, displayed in the Layout Editor The Device, connects Symbol- with Package pins
What you really should consider is to use device technologies. This will enable you the power of one-click generation of your Bill of Materials (BOM), with all Part Numbers and Distributor Order Codes, of every Part you used in your Design. To benefit of this BOM Generation, since Ealge6 its directly located under
file->export, it is recommended to use device technologies, for every single Part!
At the first look it seems that this might be some horrible work, but its only the very first time. Once you have device technologies, for every part (resistors, capacitors etc.) schematic design with choosing all parts, will be very very easy, because you wont have to look up order codes never ever again.
Ordering Parts at your Distributor for a whole Project will be done in one minute with a simple copy paste of your BOM.
In the next Tutorial i will show you how to set up a Device and the technologies in a professional way.
FreeCAD – for viewing generated 3D Data and assembly with housing models.
If you are using EAGLE, you know how libraries are organized in Symbols, Packages and Devices.
In some other tutorials i will show how to set up all library Informations properly, this tutorial will focus only on the library parts concerning 3D Data, which is the Package Information. This additional Infomation to generate step-files will cost you maybe one additional minute when creating a new Package but the 3D Information you get is completely amazing.
First of all you will have to generate some new layers in the Package of a Device:
PackageLayer 57: for top placed parts
PackageLayer 58: for bottom placed parts
(just copy paste into the command line of eagle-Package Editor: layer ’57’ tCAD or layer ’58’ bCAD)
By only drawing the outlines of your part in this layers, shapes will later be extruded with the height of your line width (1 µm width = 1mm heigth). The line width determines the extrusion height. If you want some pins of your e.g. TQFP part shown in the 3D Model you will have to draw extra rectangular shapes for every pin.
Be aware, that eagle connects lines which are close together, to a single polygon, therefore, parallel outline shape of pins and plastic case should not be connected since you will get errors when generating the idf-file. You can check if they are connected, by zooming in wide, or only moving the shapes a bit. You will see if they stick together immediately. To have no problems i move the conours by entering the numbers directly into the Info of a shape contour, so they will always be in a distance of more than 1µm. In the 3D Model you wont see that distance between feet and plastic case.
NOTE: Be sure that you draw something like the maximum outline dimensions, since big parts may have mm Tolerances and they might collide in your housing if you don’t consider that sometimes parts are bigger than the typ. size shown in the Datasheets!
Next step is to generate a new layer in your .brd: .brdLayer 50: for the PCB Outline (you may copy only the Dimension to that Layer). as in the Package.
The line width also determines the PCB Thickness, in the same way.
If you want some cutouts or breaktroughs in your Board, you can do so by defining a Polygon with line width set to 0.0µm. When you are done with the Layout, here in my tiny example i only put one Resistor and another Capacitor onto the Board, it may look something like this.
After that you will have to generate the 3D idf Data with a eagle ulp Program called generate-3d-idf-data.ulp.
There will be 2 files generated. On is the named *.idf and it contains the information of the whole polygons. idf-stepper will generate a step file for every single polygon and store it in the root folder. The *.idb file contains the Information how the polygons are oriented to the Board origin. idf-stepper will take all the generated step files, put them in place to one big step assembly. In windows idf-stepper works with drag&drop the *.idf and *.idb files simply onto the executable and you are done!
When you are using your simple rectangular shapes like me in my little example you will then get a generated step file looking something like this. For most Mechanical Engineers this generated step Information is all what they need to place the parts in a mechanical assemly and check collisions and correctness of mounting points.
But idf-stepper also can also deal with advanced very complex step models. Exactly this function gives you the most powerful capability:
By only using the *.idb file you can take every very advanced 3D Model as Input source to the idf stepper. Only take a short look at the naming convention, take your advanced model, give it the right orientation and you can use it immediately by replacing the generated step file of this part generated by idf-stepper. If you deliver the idf-stepper only the *.idb file as Input, the existing step files wont be overwritten.
In another Project i used more advanced 3D Models for the LEDs, once you have rotated the advanded LED-Models into the right angles, you can use them every time again:
One addiotional highly useful and powerful feature: Since FreeCAD has the Ability to save the step file as *.html (every modern Browser can use WebGL) you can send your 3D Model as html-file to everyone, still if he has no CAD Viewer, he will be able to rotate the model, zoom in/out within the browser. The only thing you might have to adjust by your own with a simple text editor is, to set the camera Position far enough from your board, since if the standard Position is (0.0, 0.0, 1.0), which means the camera is set in the PCB, so by default you do not see any parts. I like to use something like that camera.position.set( 100.0, 100.0, 200.0 );
This last sample i provided here, outgoing from an with idf-stepper generated step-file, opened with FreeCAD and saved as html(webGL) file.