WEBVTT

00:00.000 --> 00:13.000
Give a warm welcome.

00:13.000 --> 00:18.000
Yeah, hi, everyone.

00:18.000 --> 00:19.000
Thank you.

00:19.000 --> 00:24.000
Yeah, my name's Daniel, and I'll talk about my tool,

00:24.000 --> 00:27.000
Wirevis, to make your wiring documentation easier,

00:27.000 --> 00:29.000
and hopefully more beautiful.

00:29.000 --> 00:33.000
When we're talking about electrical documentation of your projects,

00:33.000 --> 00:35.000
we can talk about different levels.

00:35.000 --> 00:40.000
On the PCB level, let's say you're designing your small circuit board,

00:40.000 --> 00:43.000
we have excellent tools, obviously, first and foremost,

00:43.000 --> 00:48.000
KaiKed, so this one gives you schematic capture,

00:48.000 --> 00:51.000
PCB layouting, perfect.

00:51.000 --> 00:55.000
On the other end of the spectrum, if you want to document your entire system,

00:55.000 --> 01:00.000
let's say, could be house wiring, could be a big machine,

01:00.000 --> 01:04.000
some switching cabinet, you also have some tools.

01:04.000 --> 01:08.000
For example, Q Electric, probably a bit lesser or less known,

01:08.000 --> 01:12.000
also an open source alternative to generate,

01:12.000 --> 01:14.000
also some wiring diagrams here.

01:14.000 --> 01:17.000
You can see, for example, the power distribution bus,

01:17.000 --> 01:20.000
and then how some consumers branch off from that.

01:20.000 --> 01:24.000
I don't think you see my pointer anyway.

01:24.000 --> 01:28.000
Yeah, there's something in the middle.

01:28.000 --> 01:31.000
What if you need to document individual cables?

01:31.000 --> 01:34.000
This happened to me a lot in my previous jobs,

01:34.000 --> 01:37.000
and I found that there were no good solutions.

01:37.000 --> 01:41.000
To give an example, let's say you want to build this simple cable,

01:41.000 --> 01:45.000
just one into the other, maybe the pin out is a bit,

01:45.000 --> 01:47.000
not a straightforward.

01:47.000 --> 01:50.000
Let's say you need to build a small harness,

01:50.000 --> 01:52.000
where one connector maps into multiple,

01:52.000 --> 01:56.000
so this could be in your robot, in your microscope,

01:56.000 --> 01:59.000
in your rocket, you never know.

01:59.000 --> 02:02.000
What if you need to document a wire that's a bit more complex?

02:02.000 --> 02:06.000
So in this case, one and maybe needs to be fed into some screw terminals,

02:06.000 --> 02:08.000
so you have some ferials.

02:08.000 --> 02:11.000
But actually, some of the wires,

02:11.000 --> 02:14.000
also need to branch off to some other connector.

02:14.000 --> 02:17.000
And on the other side, you need to shorten some wires,

02:17.000 --> 02:20.000
some custom connector, you also need to heat shrink,

02:20.000 --> 02:23.000
solder connections, and also there's a TBS diode in the middle,

02:23.000 --> 02:26.000
because EMC said so.

02:26.000 --> 02:30.000
How do you actually cleanly document this?

02:30.000 --> 02:33.000
And when I was designing wires for my projects,

02:33.000 --> 02:36.000
both personal and professional,

02:36.000 --> 02:41.000
I didn't really find much in this respect.

02:41.000 --> 02:45.000
Stuff I found, sometimes pin out,

02:45.000 --> 02:48.000
would just be described in Excel sheets, basically.

02:48.000 --> 02:52.000
Okay, pin one from this goes to pin nine over there.

02:52.000 --> 02:56.000
But it's not pretty, it's not very readable.

02:56.000 --> 03:00.000
You can use paint or other tools.

03:00.000 --> 03:03.000
I mean, yeah, it's a bit more understandable,

03:03.000 --> 03:07.000
graphically, but could look updating this every time you change a design.

03:07.000 --> 03:12.000
You kind of use other tools, so I think this is actually a key cut.

03:12.000 --> 03:15.000
I mean, yes, it's pretty clean,

03:15.000 --> 03:19.000
it's relatively understandable, but it's not really the tool for the job.

03:19.000 --> 03:21.000
You do have tools for the job.

03:21.000 --> 03:23.000
This I think is solid works electrical,

03:23.000 --> 03:25.000
so this looks pretty fancy.

03:25.000 --> 03:28.000
You can have like build materials,

03:28.000 --> 03:31.000
colors, color assignments, graphical representation,

03:31.000 --> 03:34.000
but you need to fork out probably thousands,

03:34.000 --> 03:37.000
if not tens of thousands of dollars.

03:37.000 --> 03:40.000
And so I decided to make my own.

03:40.000 --> 03:42.000
So what is my service?

03:42.000 --> 03:44.000
Let's just simply go for a demo.

03:44.000 --> 03:48.000
We start by creating a small text file, just a demo file.

03:48.000 --> 03:50.000
And let's start describing our little wire.

03:50.000 --> 03:55.000
Let's say we just want to connect some serial port on one device with some other one.

03:55.000 --> 03:59.000
So you need RX, TX, and maybe a ground line.

03:59.000 --> 04:02.000
So let's start with the connector on one side.

04:02.000 --> 04:05.000
Let's say we have some type of molex connector.

04:05.000 --> 04:08.000
It's a plug, three pins.

04:08.000 --> 04:11.000
Then that's a basic information we need.

04:11.000 --> 04:14.000
And then if we know a very specific wire that we want to use,

04:14.000 --> 04:19.000
we can specify some, yeah, manufacturer data as well.

04:19.000 --> 04:22.000
And in this case, because it's just one wire,

04:22.000 --> 04:24.000
we don't need to show the name.

04:24.000 --> 04:27.000
It's just something we use the reference internally.

04:27.000 --> 04:29.000
Now we've got a components.

04:29.000 --> 04:31.000
Let's hook them up.

04:31.000 --> 04:34.000
So we have a section in our file called connections.

04:34.000 --> 04:37.000
In this case, we'll just do one connection set.

04:37.000 --> 04:43.000
So we specify, we want to jump from connector X1, pin1,

04:43.000 --> 04:48.000
via cable one, wire number one, two connector X2.

04:48.000 --> 04:52.000
And in this case, because we actually label the pins,

04:52.000 --> 04:53.000
we can reference them.

04:53.000 --> 04:56.000
So we want to go to the ground pin of that connector zoo.

04:56.000 --> 04:59.000
This is just for one of the lines.

04:59.000 --> 05:02.000
And if we want to wire multiple connections,

05:02.000 --> 05:05.000
we just add more columns basically to this connection set.

05:05.000 --> 05:09.000
So here you see pin 2, wire 2 to the RX pin,

05:09.000 --> 05:13.000
and the same for wire 3, transmit.

05:13.000 --> 05:16.000
This basically describes our cable.

05:16.000 --> 05:21.000
So we feed this Yamufa that we just created into our wire viz tool.

05:21.000 --> 05:23.000
It's just a command line tool.

05:23.000 --> 05:28.000
And as output, we get a graphical representation of the wire.

05:28.000 --> 05:31.000
You look at it and you immediately understand what's going on here.

05:31.000 --> 05:33.000
You have a connector on one side, connect on the other.

05:33.000 --> 05:36.000
You can easily see the crossover of the cables.

05:36.000 --> 05:41.000
You have all the information you need to procure this.

05:41.000 --> 05:46.000
You procure the connectors to assemble it and to understand the function.

05:46.000 --> 05:51.000
So summarizing, wire viz is just text input.

05:51.000 --> 05:53.000
So it's easy to edit and it's easy to version control.

05:53.000 --> 05:59.000
You can just add these files to your kit of your project and easily update them.

06:00.000 --> 06:04.000
All the graphics are all generated and auto layout it as well.

06:04.000 --> 06:08.000
So you don't even need to care about dragging some boxes here and there to make it look pretty.

06:08.000 --> 06:10.000
It will just work.

06:10.000 --> 06:12.000
It understands some color codes.

06:12.000 --> 06:17.000
So for example, we said we want to fold the din standard for the conductors in the cable.

06:17.000 --> 06:22.000
It understands American wire gauge versus square millimeter gauge conversion.

06:22.000 --> 06:25.000
So some handy tools for engineers.

06:25.000 --> 06:27.000
It also generates a bill of materials.

06:27.000 --> 06:30.000
So if you have an ERP.

06:30.000 --> 06:36.000
For example, your PC system, you can just export the bomb and you'll know what you need to buy.

06:36.000 --> 06:38.000
You can add some metadata to your wire.

06:38.000 --> 06:40.000
So for example, who created it?

06:40.000 --> 06:41.000
Who approved it?

06:41.000 --> 06:42.000
When was it created?

06:42.000 --> 06:43.000
What revision is it?

06:43.000 --> 06:44.000
Et cetera.

06:44.000 --> 06:45.000
You can add title blocks.

06:45.000 --> 06:47.000
You'll see this in a second.

06:47.000 --> 06:51.000
You can use templates if you're constantly using the same connector types.

06:51.000 --> 06:56.000
Or always wiring a bunch of SPI or simple bus connectors.

06:56.000 --> 06:59.000
You can just template that.

06:59.000 --> 07:02.000
And of course, it's open source goes without saying here.

07:02.000 --> 07:04.000
Let's look at a more complex example.

07:04.000 --> 07:08.000
So here you can see this is more of a wiring harness.

07:08.000 --> 07:09.000
Kind of thing.

07:09.000 --> 07:11.000
You see multiple connectors, multiple wires between them.

07:11.000 --> 07:16.000
You even see some LEDs and discrete components like the TBS diode I mentioned before.

07:16.000 --> 07:19.000
They're just treated as connectors right now.

07:20.000 --> 07:23.000
So if you zoom in on a few parts of this diagram.

07:23.000 --> 07:28.000
You see we don't only show the connector of our actual wiring harness,

07:28.000 --> 07:32.000
but we can show the relationship of that connector with whatever's on the other side.

07:32.000 --> 07:35.000
In this case, the Raspberry Pi like GPIO header.

07:35.000 --> 07:40.000
So now we can also map the names on the header to the names of our signals.

07:40.000 --> 07:44.000
And with a few arrows in between, you actually can understand how the data is flowing.

07:44.000 --> 07:47.000
What's going where?

07:47.000 --> 07:50.000
In the wires themselves.

07:50.000 --> 07:56.000
Obviously, the colors are very, very visual way of understanding what goes where.

07:56.000 --> 08:01.000
But if you print this out or if you're color blind or you just cannot represent it with colors.

08:01.000 --> 08:04.000
The color codes are also included here.

08:04.000 --> 08:08.000
And if the wiring gets a bit too messy and you cannot even follow the lines from one into the other,

08:08.000 --> 08:12.000
each wire also tells you, okay, where is this, for example, on the top of the red wire going.

08:12.000 --> 08:16.000
Oh, it comes from connector X1, pin number two, which is five volts in.

08:16.000 --> 08:19.000
And it goes to connect X4 pin one.

08:19.000 --> 08:22.000
So you don't need to manually trace every line there.

08:22.000 --> 08:29.000
You can see on the bottom cable, W2, it adds some extra components that you need.

08:29.000 --> 08:31.000
In this case, it's just a bit of heat shrink.

08:31.000 --> 08:35.000
Also, it's just a tool that you can use to describe graphs basically.

08:35.000 --> 08:39.000
So this is the example they use on their documentation.

08:39.000 --> 08:43.000
You have some nodes, you join them with edges or some arrows.

08:44.000 --> 08:48.000
And this is how it's created. It's just another simple markup language.

08:48.000 --> 08:53.000
If you have you define some properties, for example, the colors.

08:53.000 --> 08:55.000
I think it's quite easy to understand.

08:55.000 --> 09:01.000
And then you represent the relationships between the nodes with the arrows.

09:01.000 --> 09:06.000
So, for example, in the sub graph, you can see they, their A0 goes to A1, goes to A2, goes to A3,

09:06.000 --> 09:09.000
and that creates the little arrows that join them.

09:09.000 --> 09:13.000
So, describe the graph.

09:13.000 --> 09:17.000
It's simple language. It takes care of the layout.

09:17.000 --> 09:20.000
By itself, you just describe the relationships.

09:20.000 --> 09:23.000
And the output that it creates is pretty clean.

09:23.000 --> 09:27.000
It's a bit boring at first. It's not the most beautiful.

09:27.000 --> 09:30.000
It's a bit unpredictable, so because it does the auto layouting,

09:30.000 --> 09:33.000
you don't always have full control over what goes where.

09:33.000 --> 09:36.000
So in this case, you can notice the nodes in the B column.

09:36.000 --> 09:40.000
They're not fully aligned because it tries to optimize the distance between nodes,

09:40.000 --> 09:44.000
and stuff a bit unpredictable, but it's very customizable.

09:44.000 --> 09:47.000
So, how do we get from something that looks like this,

09:47.000 --> 09:50.000
to a pretty wiring diagram that looks like that?

09:50.000 --> 09:54.000
I'm not going to give a full explanation of how this is done,

09:54.000 --> 10:00.000
but I'll give you some little hints, and maybe you can find something that works for you

10:00.000 --> 10:04.000
in your project to use graph vids for some other uses.

10:04.000 --> 10:09.000
If we look at what wire vids generates, it generates graph vids code.

10:09.000 --> 10:12.000
In the beginning, you just specify a few basic attributes,

10:12.000 --> 10:16.000
like colors, a bit of layout information that it should go from left to right,

10:16.000 --> 10:18.000
instead of touch bottom, et cetera.

10:18.000 --> 10:22.000
And then, actually, it's a ton of HTML code.

10:22.000 --> 10:29.000
Each of the nodes, because graph vids has this nice property,

10:29.000 --> 10:33.000
that if you define your node, in this case, X1,

10:34.000 --> 10:36.000
and you define the label.

10:36.000 --> 10:40.000
Instead of using quote marks, you use these angle brackets.

10:40.000 --> 10:43.000
Everything that's within it will be interpreted as HTML,

10:43.000 --> 10:46.000
so you can start designing tables and tables within tables.

10:46.000 --> 10:50.000
It feels a bit retro, kind of, but it works very well

10:50.000 --> 10:54.000
for the structured information that I want to convey.

10:54.000 --> 11:00.000
Also, if you using tables, the cells within have a special property called port.

11:00.000 --> 11:05.000
Here you can see I've named it port P1R for port 1 on the right,

11:05.000 --> 11:09.000
and this allows you to, later when drawing the arrows or in my case,

11:09.000 --> 11:12.000
the wires to not just go to the node of the cable,

11:12.000 --> 11:17.000
but to the actual pin of the connector.

11:17.000 --> 11:20.000
And lastly, when you're defining the edges,

11:20.000 --> 11:23.000
so the arrows are wires between the nodes.

11:23.000 --> 11:27.000
If you give them a color, it will just render them on color,

11:27.000 --> 11:30.000
but you can just specify a list of colors,

11:30.000 --> 11:33.000
and it will basically draw parallel lines,

11:33.000 --> 11:37.000
so this allows us to have nice black borders,

11:37.000 --> 11:39.000
and then any color we want in between.

11:39.000 --> 11:43.000
And then when we're defining the connection between them,

11:43.000 --> 11:48.000
so we say from X1 to Y1, et cetera,

11:48.000 --> 11:51.000
we can expand this a bit with the ports that we defined earlier,

11:51.000 --> 11:55.000
so we say from X1, port 5 right to Y1,

11:56.000 --> 12:00.000
and then small W1 to specify the first conductor,

12:00.000 --> 12:03.000
so this gives us better control of how we actually link up stuff.

12:03.000 --> 12:07.000
And to make it look pretty, you can actually add one more thing.

12:07.000 --> 12:10.000
So these letters, they basically stand for east and west,

12:10.000 --> 12:13.000
and it just makes sure that the arrow or in my case the wire

12:13.000 --> 12:15.000
doesn't come in like some random direction,

12:15.000 --> 12:19.000
but actually cleanly from the east or west or from the left or from the right,

12:19.000 --> 12:23.000
and this really helps in keeping things clean.

12:24.000 --> 12:26.000
That's pretty much all I have.

12:26.000 --> 12:28.000
The main aim of this tool.

12:28.000 --> 12:29.000
At least not right now.

12:31.000 --> 12:32.000
Hello.

12:32.000 --> 12:35.000
Yeah, I'm one of you users, really like it.

12:35.000 --> 12:36.000
Thank you.

12:36.000 --> 12:37.000
Thank you.

12:37.000 --> 12:40.000
I wanted to ask, so I've had some cases where,

12:40.000 --> 12:42.000
for example, I have a connector,

12:42.000 --> 12:46.000
and I'm trying to connect pin 1 to pin 3 of the same one,

12:46.000 --> 12:51.000
and because you just showed an example of how the routing work

12:51.000 --> 12:53.000
is the graph is, so using the right side,

12:53.000 --> 12:56.000
and then usually connecting it to the left side,

12:56.000 --> 12:58.000
so kind of ends up doing a route around.

12:58.000 --> 13:02.000
Is there where you can force it to go to itself from the same side?

13:02.000 --> 13:03.000
Yes.

13:03.000 --> 13:05.000
To repeat the question,

13:05.000 --> 13:06.000
if you want to do a loop back,

13:06.000 --> 13:10.000
basically from one pin of the connector to another pin of the same connector,

13:10.000 --> 13:11.000
how that's, how that's doable.

13:11.000 --> 13:13.000
Because the basic logic is,

13:13.000 --> 13:15.000
if you are kind of left or right,

13:15.000 --> 13:17.000
so you would have the connector,

13:17.000 --> 13:18.000
then it goes to the wire,

13:18.000 --> 13:21.000
and then it kind of forces the wire to loop around

13:21.000 --> 13:24.000
and come in on the other side of the connector.

13:24.000 --> 13:26.000
It's something that's still open.

13:26.000 --> 13:28.000
One hack that I found is you can define,

13:28.000 --> 13:32.000
let's say, from pin 1 to wire, whatever,

13:32.000 --> 13:33.000
and just not go anywhere,

13:33.000 --> 13:35.000
and then as a second connection,

13:35.000 --> 13:37.000
you say from pin 3 goes to the same wire,

13:37.000 --> 13:41.000
and then you end up with like a wire shaped or like a forked wire,

13:41.000 --> 13:43.000
that goes to two places on one end,

13:43.000 --> 13:45.000
and nowhere on the other.

13:46.000 --> 13:48.000
And so if you know what to expect,

13:48.000 --> 13:49.000
or if you know what this means,

13:49.000 --> 13:50.000
it's pretty clear,

13:50.000 --> 13:52.000
but it's not the prettiest.

13:52.000 --> 13:55.000
So definitely a point for improvement in the future.

14:02.000 --> 14:03.000
Thanks for the talk.

14:03.000 --> 14:04.000
Really interesting.

14:04.000 --> 14:06.000
Is there any kind of validation

14:06.000 --> 14:09.000
on the electrical layer possible in this too?

14:09.000 --> 14:12.000
Like to grab on TX, whatever.

14:13.000 --> 14:14.000
Yeah. So the question was,

14:14.000 --> 14:16.000
is there any validation on the,

14:16.000 --> 14:19.000
basically electrical logic of this circuit?

14:19.000 --> 14:23.000
So are all the grounds connected or are there any short circuits?

14:23.000 --> 14:24.000
Not right now,

14:24.000 --> 14:26.000
an intermediate step would be to export,

14:26.000 --> 14:27.000
for example, a net list,

14:27.000 --> 14:30.000
that at least tells you which pins are connected,

14:30.000 --> 14:32.000
like if you have multiple connectors,

14:32.000 --> 14:34.000
where is one signal actually routed,

14:34.000 --> 14:35.000
where does it go?

14:35.000 --> 14:37.000
So you have a better overview.

14:37.000 --> 14:39.000
It's not yet implemented.

14:39.000 --> 14:41.000
It's definitely a cool feature.

14:41.000 --> 14:45.000
It's a bit tricky because sometimes,

14:45.000 --> 14:47.000
yeah,

14:47.000 --> 14:49.000
so, yes, go ahead.

14:49.000 --> 14:52.000
If you're also showing like connections that are external

14:52.000 --> 14:53.000
to your actually wiring harness,

14:53.000 --> 14:55.000
but just referenced, for example,

14:55.000 --> 14:57.000
like this Raspberry Pi connection,

14:57.000 --> 14:59.000
you would have to make sure that there's no,

14:59.000 --> 15:04.000
like you would also need to define those.

15:04.000 --> 15:05.000
So it gets a bit tricky,

15:05.000 --> 15:08.000
but in principle, it should be doable,

15:08.000 --> 15:10.000
but not yet so far.

15:10.000 --> 15:15.000
Thank you very much for that.

15:15.000 --> 15:18.000
How much does this scale, for example,

15:18.000 --> 15:22.000
is anybody used this to document the structure cable

15:22.000 --> 15:25.000
in system inside data center?

15:25.000 --> 15:26.000
So the question was,

15:26.000 --> 15:27.000
how much does it scale,

15:27.000 --> 15:29.000
and can I actually represent

15:29.000 --> 15:32.000
the full wiring of data centers?

15:32.000 --> 15:33.000
And by default,

15:33.000 --> 15:35.000
it deletes it because most people

15:35.000 --> 15:36.000
don't really need it,

15:36.000 --> 15:37.000
but you can specify,

15:37.000 --> 15:39.000
I only want the graph is output,

15:39.000 --> 15:41.000
and then you can use it for whatever you want.

15:41.000 --> 15:43.000
So yes, it's totally doable.

15:43.000 --> 15:44.000
Yes.

15:44.000 --> 15:45.000
Okay, thank you, Daniel,

15:45.000 --> 15:46.000
any further question,

15:46.000 --> 15:48.000
till be out in the hallway,

15:48.000 --> 15:49.000
and thank you.

15:49.000 --> 15:50.000
Thank you.

15:50.000 --> 15:51.000
Thank you.

15:51.000 --> 15:52.000
Thank you.

