This is CAD or Computer Aided Design for Hackers !
Most Computer Aided Design Software Programs require that you design your Projects from Scratch including PCB's and so forth. This isn't how Hackers work. Often they take Boards that are already made and connect them together.
KayeIoT is designed for using existing Parts, you can use Fritzing Parts files for example. It can even AutoWire, telling you what wires to connect to what so that you don't need to figure that out.
KayeIoT will make a suggestion on how to wire it based on matching Pin Names such as VCC and GND, SDA/SCL, DOUT, DIN etc.
In addition to all of this, if that wasn't enough, KayeIoT can generate diagrams from Arduino Sketches. If you feed KayeIoT an Arduino Sketch it can generating a diagram for the Code.
If you are a Hacker, one of the things that you need in a Design Program is that ability to be able to add Parts to a Technical Diagram after the fact and in cases where no actual Technical Documentation can be found.
This may happen if you bought an Electronics Board from eBay or China and there simply is no proper documentation.
It may also happen if you have pulled apart something and have taken a part, such as an old Stepper-Motor or Electro-Mechanical component.
Most programs don't make it very easy in this case, but Kayeiot does.
The best way to describe the objectives are to say that we want something that draws like Fritzing but doesn't worry so much about Detail and allows to add Parts quickly.
KayeIot uses a parts library made with .board files. These are Windows .ini files that look like the following:
You can add Parts to your Drawing:
and you will get a Drawing with whatever Parts you need:
Here we have an Arduino Motor Shield and a DC Motor, now lets add a cable.
This will give you a Connection between the Arduino Shield and the DC Motor.
As a Final Trick, you can press [f] for Final Mode which will generate a Final Diagram including a BOM and an Automatically generated Cable Listing for your project.
All of this has been achieved using the QGraphicsScene classes in Qt.
Parts for this program are easy. Simply find Fritzing .fpz files for whatever boards you need or make your own files up in the simple .ini format.
So much work has gone into getting Kayeiot here that it's difficult to do a a microscopic build log. Each of the elements of functionality have taken days or weeks to get going.
If you can imagine how much work has gone in, that is going to be very close.
There are still things to do and more functionality to go in.
When I started working on Kayeiot, I didn't think it would have this particular feature. But I was trying really hard to impress the Competition Judges. And so the feature of being able to Diagram an Arduino Sketch by reading the Code was started.
If we all had a tool like this, it would make it so much easier to Document all our Arduino and IoT Projects.
The first thing to do is to download it and there is some code for that.
After that is done we have our Arduino Sketch and now we wish to create a Diagram.
We will need to have some C++ Classes. We created a C++ called ArduinoSketch assigned to process our Arduino Sketches and extract the information out of the Arduino Sketches.
In the Class we then scan the code to look for what include files are mentioned in the .ino with this code:
There are lots of details required to create a Graph of an Arduino Sketch. Some of the details about parts will need to be kept in files that can be read sort of like you would in a database lookup.
We are just using a simple but Open Format .board files for each Part that we want to know about. There will be more about the format of a .board file but here is an example of the small-servo.board file that gives us all the information that we need for Servo's.
As you can see down the bottom, the #include file for the Servo in Arduino is #include <Servo.h> and the device C++ Class is Servo.
All the variable names are then read for each of the classes and added as Components to the BOM on the right hand side.
The end result is that we were able to import the Arduino sketch, determine all the classes, add cables to get the parts connected and print a report.
Here is the whole process from start to finish. It doesn't take too long, the main thing is to enter the URL of the Arduino Sketch from Github and make sure that all the .board files exist.
KayeIoT has been built especially for the Hackaday.com 2018 Challenge. Otherwise it probably wouldn't have come into existence.
It was Started in March 2018, after David worked at a CNC Manufacturer writing C++ Customisations in Qt for LibreCad to support G-Code. Sometime after finishing the job, an idea then arose to write a CAD program specifically oriented towards the needs of Hackers that often work with parts that are already made, instead of insisting that all parts be made from scratch.
A typical example of what we are talking about would be a Sensor Boards from Sparkfun or some website in China. An Electric Motor, an Arduino board.
Whilst tools like Fritzing offer some solution, they don't really focus all that well on providing something that could be used in an Industrial Setting. For example, if there was a client requiring a specific Solution and a quick diagram was needed to go into a Quote or Proposition.