Posts Tagged ‘geda’
RoboGlyphs are pieces of pcb artwork that are interesting to look at, and can be functional in some form! This is the Plasma RoboGlyph! It’s just a fun little project that I figured I would try out. I ordered these boards along with the RoboBrrd Brain Boards, since the shipping is quite a bit.
Here are the pics of the board!
Check out the timelapse of the making of the board!
Watch on YouTube
It was interesting to make this, a lot of the programs kept crashing so it required so much patience! I started off with this plasma image. It was just some random CC image I found on flickr that was really good.
Here’s a screenshot of it in paused mode:
After using StippleGen, I opened it with Inkscape and made it so that the stipples were filled, and had no outline. Sometimes Inkscape would crash, but eventually it worked. I resized the image down, and exported it as a png. Pretty sure it was with 300 dpi. This png was then transferred into my handy Processing footprint sketch! From there, placed onto the board. It was important to make sure that the blobby part of the art didn’t touch anything major!
Some interesting things had to happen to make the pins/pads layer show up just how I imagined (thanks everyone who helped me with this!). In order for the art to appear with the gold, you have to make sure that the soldermask isn’t covering it, and have a copper fill behind it! This is what it looks like with the soldermask layer on:
With the .pcb file, it’s just a bunch of text, so it is easy to modify a huge amount of things that way. It was fun to see TextEdit struggling with replacing 62,919 items!
The pretty colours of the gerbers are always funky to look at!
My goal for releasing this open source is: to inspire people to do random cool scripty things with gEDA and make interesting art! Hopefully they will post up a pic up online of their creation too!
Below are the credits, let me know if I goofed up on anything so it can be fixed!
The Plasma RoboGlyph is an exploration in pcb art of sorts!
The plasma image is from Luc Viatour, check it out here:
StippleGen 2.02 was used to transform the plasma image. We used 8,268 stipples, 0.50 min. dot size, and 10.00 dot size range. StippleGen is made by Evil Mad Science! And you can play with StippleGen yourself here:
The charlieplexing aspect was inspired by Open Heart kit by Jimmie Rodgers. It’s sophisticated simplicity was really nice, and the Instructable was good to learn about charlieplexing too! (Hopefully I did it right!)
The first few prototypes of the Plasma RoboGlyph were fabbed at the OSH Park! Their boards are purple and gold, and it’s a great service. Check it out here:
The medium sized OSHW logo on the board is from the gEDA format of logos that Windell Oskay made. You can find all the logos here:
Finally, credit to the whole maker community for being fun, cool, and helpful with answering questions & learning more!
Well, maybe this will inspire more random and interesting pcb’s to be made It’s important to try and make sure they are functional in some way too, charlieplexed LEDs are good for that! Also speaking about functional… I don’t have these boards yet, so have no idea if they work or not!
PS: No, the website on the board doesn’t work yet. Still debating what to do with all these RoboGlyph experiments that I want to make!
Happy pcb art-ing everyone!
Since redesigning RoboBrrd went so well, the base was eliminated. This meant that the previous version of the RoboBrrd Brain Board was way too gigantic! Luckily, an Arduino does fit into the back of RoboBrrd. It’s a tight squeeze for all directions with all the items I wanted to put on the board.
Making all of the footprints and such was quite tedious and time consuming. Hopefully there will be no mistakes. Slowly getting better at designing boards, but it is still very challenging! Here’s a timelapse video of making the board… it was a lot of work.
Here is what the board will look like:
These images were actually rendered from the gerber files on OSH Park, it’s pretty fancy!
When I receive the boards from OSH Park, I will be desoldering some Arduino derivatives, using their parts in this one, and see if it works! They are going out to the fab on Friday, so perhaps I will receive them before August 10th!
To design the RoboBrrd Brain Board, I used the gEDA suite of tools. For creating the schematic, I used gschem. For creating the board from the schematic, gsch2pcb. For modifying the board, pcb. Finally, for viewing the gerbers, gerbv.
It is quite a delightful set of tools that can do basically whatever your imagination wants to (more on this in a later post ). Very scriptable, open source too.
There is one thing that happened to me with gEDA, but not directly gEDA’s fault. I believe a Dropbox mismatch happened, something was corrupted, which lead to this ‘Abort trap: 6′. Also, couldn’t find any backups.
Luckily that version did not have too much work done already. Here’s an image with everything as a work-in-progress:
As you have seen with the above final board, there are curved routes on it. The trick that I have found with curved routes is to use diagonal lines first, all of the same size (so it is better to copy and paste the same line). Afterwords, you can go through and replace the diagonal lines with an arc. This way the routing will still be tidy.
It is a good idea to keep an eye out on how ‘tidy’ your routes are, especially if you have to use vias. Since vias usually extend beyond the width of the route, there may not be enough space for them.
Also, on the topic of vias, make sure the soldermask is over them (thanks EMSL for pointing that out on Twitter!)
Another thing to look out for are drill sizes. Although the pins may all look to be roughly the same sizes, they may not be. This trickery can happen when using many different footprint files, so watch out! Having many drill holes can increase the cost that it takes to make your board. The drill hole info was generated when exporting the board as a postscript (ps) file, but you can also see it when exporting to a gerber.
In order to reduce the number of different drill holes in the RoboBrrd Brain Board v2, I grouped some together that should be the same size. Then opened the .pcb file in TextEdit (made a backup first as well), found the pads that needed fixing by searching for the name of the footprint or name of the element, and replaced the Pad information.
In the previous RoboBrrd Brain Board, I placed the artwork directly on the pcb. This time I created the artwork as a footprint, and placed the footprint on the pcb. This makes it much easier to delete it and replace it very quickly.
Here is a screenshot of the gerber view. Looking at the gerbers is always rewarding as it is brightly coloured!
Actually, there are a few changes from the screenshots to the final version, namely the fills and the edges. Gave the edges of the board a nice big arc so they will be smooth!
Hope that these lessons learned while designing this board will help some people thinking about making their own boards! It’s an interesting way of making things, and definitely recommend trying it at least once!
In the next RoboBrrd Brain Board v2 post, I’ll discuss why I placed components where they are! In the post after that, it will be about if they actually work! The post after that one will be about where to download all the filez!
This is a little tutorial for a little trick that was figured out! It stemmed from the question that I posted on the EMSL forums.
Here’s a video of the tutorial as well! Double sweet!
Watch on YouTube
Basically, in gEDA it’s pretty fantastically easy to put pictures on the silk layer using pstoedit. However, for the pins/pads layer this can’t be done because there is no support for polygons in the footprint files.
You could draw the picture yourself using lines, but if there are a lot of curves that could take a long time. Since it’s gEDA and everything is open, it’s pretty straight forward that you can make whatever you want to do whatever you want.
There is a really great document to read the describes the structure of the footprint files: “Footprint creation for the open- source layout program “PCB”“. This is where you can see what the variables for element and pad correspond to.
For pad, this is basically what it looks like:
Pad [x1 y1 x2 y2 thickness clearance mask name pad_number flags]
With this info, we could make tiny ‘pixel pads’ for the black pixels that we see in the image!
I created a Processing sketch that reads in the image, looks for non-white pixels, then creates a square line segment pad with a given width and clearance. You can grab the sketch on Github here!
Here are some additional commentary on some parts in the code.
int x1 = 0;
int y1 = 0;
These are our coordinate variables that are used when looping through the image. Essentially, each pixel pad is just x1 x x1, or y1 x y1. The width is what gives it how wide it is, and then the coordinates are incremented based on that width. It’s odd, but was quick to write it this way.
int t = 200; // thickness of line segment (aka pixel) 100
int c = t/4; // 2000
These are two fun variables.
t is the thickness of the pixel pad. The smaller it is, then essentially the more “resolution” you would get in your output footprint picture. Larger, the more pixely and big it will look.
c is the clearance on the solder mask layer. I’m not sure if you can get away with this being 0, but I guess it would depend on your board house. If you have it as t/4, it works out pretty well as it is a very tiny outline.
More on the c now. If the value is large (eg, 2000), it might look a little goofy:
If it is a small value, or say t/4, then it looks decent:
output.println("\tPad["+x1+" "+y1+" "+x1+" "+y1+" "+t+" "+c+" 0 \"\" \"1\" \"square\"]");
This is what makes up each pixel pad. It’s the start point, end point, thickness, and clearance. This is added to the footprint file for every non-white pixel that the sketch sees. You can check out the document linked to above for more information on the Pad structure details.
output.flush(); // Write the remaining data
output.close(); // Finish the file
Well, that was pretty easy, wasn’t it?!
It only took about 20 mins to write the sketch, which was pretty cool. It was pretty exciting when it worked first try!
So hopefully this will help people make their boards with more creativity. I was inspired by the SpikenzieLabs boards where sometimes they have their logo on the pins/pads layer (but they use Eagle).
What do I plan to do with it? I want to make an Arduino derivative that has lots of stars on it. I dunno why, it just sounds cool! It would look really good as a black board with silver solder. … or just good purple and gold from OSH Park
SQUAWK! Happy boarding!
Working on the board this week was a blast! It is really coming together, and things will start to ramp up pretty quickly. Here’s the back side of the board!
Check out the timelapse, this is probably the most action packed timelapse yet. It has good music too!
The problem with the path intersections from 2 weeks ago was solved by just drawing better. Usually I like to draw in Illustrator and mess around with it in Inkscape. Illustrator has better erasing, so I needed that for some of the drawings. Here’s the RoboBrrd drawing. I used the method ChangeSize(SelectedLines,+100,mils) in gEDA which makes it much easier and quicker to change the line width!
Here’s an example of messing around in Inkscape. Thanks for the pointers from Windell on the EMSL forums! I have no idea how I made it, but there was crosshatching and twisting involved, thanks to the eggbot Inkscape extensions. The cool part is that somehow I was able to combine and cut the two paths, wish I knew how I did this though! :p
I visited Spikenzie Labs last week and asked them some questions about the board! They suggested using a fill, so I tried it out. It gets rid of lots of unnecessary routes, which frees up some room for other things! They also described how to make some words shiny, which I have to try out
For the back of the board I was thinking it would be cool if it was sort of tartan, like a picknick of sorts. If the board is going to be red after the test boards, this would look pretty funky with white silkscreen!
The only problem is that sometimes with silkscreens that go over the solder pads, they interfere with the soldering, or the board house doesn’t like it, or nothing happens. So in general, assume the worst happens and now since there is silkscreen on the solder pads, then you can’t solder anything to it. This was pointed out to me by my Twitter friends, thanks everyone!
I printed out the boards on paper to test them out. gEDA was really great for this, export to ps, and then open it up in Preview and it gives you everything to print even with a Table of Contents.
For the printouts, Spikenzie Labs suggested to use foam underneath the paper to stop it from crinkling when you pressed in the parts. The idea worked great!
All of the parts fit through the holes without any issues.
But there was kind of a HUGE problem with the 7805. Originally I had it standing up, and if you wanted to put a shield on, well, you wouldn’t be able to.
The board is a bit longer than the current base of the Impy (orange) RoboBrrd.
There weren’t that many changes that had to be made…
So after the changes, this is what it looks like! The 7805 is laying down, and you’ll be able to attach it to the board. I moved the routes away from it incase it gets so hot and they get pulled up. Although in such a case, I think there would be more problems than just that Keep in mind this 7805 is just for the board- not for the servos. It won’t get too hot.
Now my fav part, the back of the board! There’s so much happening here. Along the digital pins there are clouds that are being pushed by the wind. The wind is moving some raindrops and swirlys onto a little fire down below. Next to that is a garden of flowers, and a sandbox of stars and swirlys. The music from RoboBrrd is traveling all around into the garden and beyond! And on the little nub is an infinity symbol and a flower and the OSHW logo. Can you guess what the infinity symbol and the flower represent?
There’s just some more cleaning up to do, and now I get to learn about gerbers. ….I didn’t really design with any DRUs, and whenever I try to run the test, X11 crashes… sooo I hope that my eyes will be good enough. Once this is all checked, I can send them off to Dorkbot to have a few printed!
Which brings me to my next point! We have a mailbox now. Mailboxes are great, because wherever in the world you happen to be, your mailbox will be at one spot AND it’s a bit more SECURE! Yesss! No more stolen whatevers! No more soggy electronics waiting in the snow!
Making the board last week has been like a marathon. It’s going to be great to see these printed out, I’m so excited! More later, peace and robots everyone!
It has been a while since the last progress update post for RoboBrrd, 3 weeks! Which in robot years, is 300 years! HOLY COW. I’ve been dealing with a lot of real-life stuff that is just craptastic, time consuming and stressful. Seriously, all I’ve been doing the past week and a bit is sifting through piles of crap and there’s hardly any time to do anything else. The world definitely would be a better place with more robots.
Watch on YouTube
Yesterday I finally had the chance to sit down and work for several hours straight on the board, and I made lots of good progress. Here is a screenie of what the board looks like right now. (actually there are some modifications where the Vin pin goes to the 7805 now)
The cool ‘RoboBrrd!’ part is actually an eps that was converted to pcb! Thanks to EMSL for describing how they did it. There’s a tool called pstoedit, and it can convert pretty much anything to anything. Sweeet! I’m going to add in a drawing of RoboBrrd on the back, as well as some random swirls and stars.
The silkscreen text for the board is annoying to make because you have to rotate every single text item. Also for the screw terminals I didn’t want the board to be sticking out very much just to say ‘GND’, so I experimented for a bit then decided to just make them all along the side. Hopefully it will be easy enough to read, it will be interesting to see how it looks printed out.
Figuring out the drill holes was tricky. This was one of the ideas… didn’t actually go with it though.
It’s a bit of extra effort, but I like the idea of having curvy lines as the routes. Maybe it’s a waste of time, but I think it will look more funky in the end.
Here’s a random screenie from a while ago. Still not sure if I’ll be going with a 2D or 3D program to create the models to be laser cut. Leaning towards 3d because it will be easier to catch some errors
And while we’re at it, a screenshot timelapse from a while ago:
Watch on YouTube
Fun gEDA tip: Ever want to change the layer of an element? Select it, and choose what layer you want it on, then press Shift+M! w00t!
I wish there was enough time to do everything that I wanted to, but right now digging through the crap is my #1 priority. Then I’m usually so tired afterwards to not want to go out and about, so I just work on RoboBrrd. I feel really bad for suddenly not being able to mentor FIRST, but no energy + no time doesn’t make for an enjoyable time. I’m sure things will pick up soon, or I will sink into more crap. :/
The goal is to finish up the PCB and test it on cardboard. I can probably buy a kit from Spikenzie labs that will have all the Arduino parts in it to see if the cardboard prototype will work!
Check out this week’s progress! The routing is done, updated the headers to R3 format, and there’s less zigzags!
It’s been a fun week to see this progress come along. Here’s a timelapse of all the action:
Watch on YouTube
This was the board at the point just before starting to fix everything up. I moved the analog lines to the screw terminals to between the proto area because since there is going to be PWM on the proto area, this would interfere with it. Thanks a bunch to dago for pointing this out!
Decided to change the headers to R3 format. It was supposed to be a small task, instead it ended up being this confusing mess that changed into a 40 minute issue. For some reason the pin numbers of the footprint and symbol just weren’t cooperating. Very frustrating:
This spot here will be filled in eventually. Can you guess what it would be for? You probably can, this is such a lame guessing game.
Here is the before shot of the de-zigging:
Here is the after shot of the de-zigging:
Now since I am a noob at all of this making hardware stuff, I have some questions. It would be really nice if people familiar in this area could lend some answers! I really appreciate everyone’s help and everything
1. Should there be a ground plane here? The ground route is actually quite short. If there was a fill, there would be many sides and edges, and wouldn’t be very big. Is there any advantage or disadvantage to this?
2. This is the 7805 for the servos, it’s going to be throwing off a lot of heat. Will this heat mess up any of the pads or the routes? What about the screw terminals and headers adjacent to it?
3. I use this V pattern to via together two of the wires. Is it better to use a V or a T? Why?
4. For joining the routes to these pads, it isn’t a straight line but rather one that angles in on both sides. Will this be okay, or is there not enough surface area on the route touching the pad?
5. Going horizontal are ALL of the power routes: Gnd, 5V (arduino) and 5V (servos). Going vertical are all of the digital inputs/outputs. These routes are on different sides. Will there be any effect on the digital inputs from the power? Why?
6. Will this work since there are going to be holes drilled in each of the pads? (Actually think I figured out this one, since the pads are conductive about their circumference, then it should work)
7. Do zigzags like these have a large effect on the signal from the pin? Is there any way to lessen the effect?
8. Is there any problem with having vertical and horizontal routes on different sides with different signals? Will there be noise? Also, is the spacing between the horizontal routes okay? It is 40 mil between the middle of the routes, and the routes are 15 mil.
9. Is this length of the ‘jump’ between this power route and this signal route okay? It is 70mil long, route is 15 mil. The power route is 20 mil. Just wondering if the length of this jump has any effect on the signal or anything.
10. Does having this power route come right through all the pin routes have any effect on the signal? It is on a different layer…
11. Do the routes close to the oscillator have any effect on the oscillator? Would this be bad?
12. Will these routes between the pins be okay, or will there be interference? The pads are 100 mil apart. The route is in the middle at 50 mil, and has a width of 15 mil. So the actual distance between the route and the pads is less than 10 mil. The distance between the digital and analog route is also less than 10 mil.
13. Do the 7805s for powering the Arduino generally get hot? Would it be better to have this laying down or standing up with a heatsink? Also if it is heating up, is it too close to the capacitors?
14. Are these jumps okay? The length is 80mil and they are going across a 25mil route.
15. Are these capacitors too close together? How close or far away should capacitors be?
16. Similar question to one previously, is it better to have a V or a T?
17. Are these vias big enough for the routes? I use the same size of via throughout the board on routes that are 15 mil, 20 mil, and 25 mil. The size of the via is:
Line width: 6 mil
Hole size: 11.81 mil
Ring size: 24.02 mil
18. What is the best way to go from one route size to another? For example here I’m going from 25 mil to 20 mil, but it leaves a weird sort of outline. Would this effect anything?
Thanks to anyone who answers any of these questions. You don’t have to answer any or all of them, but I do appreciate whatever answers there are because I’m still trying to wrap my head around this all I’ll also try to do my own researching for the answers too!
After editing some things based on the answers above, there are a few more things to do:
- mounting holes
- silkscreen labels
- silkscreen imagery (svg into gEDA), really looking forward to this
- change the arduino 5V pads in the proto area to squares to make it easier to understand
- use gerbv and stuff (have to research this more)
- get a few printed up at dorkbot pdx
- order parts for a few at local electronics store (ABRA)
I am kind of wondering how this attribution for the hardware will work. I used EMSL’s Diavolino a lot for reference, and the proto area on the side was obviously inspired by the Adafruit perma protos. Do I include a reference to these two things on the board, or can I do it on the schematic, pcb, and website files?
At least now that I have the dimensions of how big the board is, I can begin sketching out ideas for the shell. We are moving along, WOOHOO!
Also does anyone have any recommendation for testing equipment stuff? All I have right now is a multimeter, will that be adequate to debug this board when the time comes, or should I order something more complex, like perhaps a DSO nano or something? How do you test your boards?
For week 7 the goal is to get this board ordered, and to have some preliminary dimensional drawings done.
Yay! I am waiting on tonight’s Robot Party videos to be rendered, so figured I would write a little progress blog post that has been sitting in the journal for a few days.
The funny part about this post is that you as a reader will think that the board is a long time from being finished, but as a writer I can clearly see how it is beginning to wrap up! Not because I traveled in time, but because after I finished on Sunday (the 15th), I began working more on the routing and improved so many things. I guess this is kind of funny timing for a week 5 progress post when week 6 began half of a week ago, AND the board looks totally different. It will be a good surprise for the end of week 6 then! ^_^
Here was a video I uploaded to YouTube of the routing timelapses of week 5 (good reason to subscribe to my robotgrrl91 youtube channel- you will be alerted of video uploads even when I don’t post them here )
Watch the video on YouTube.
So here is the board half way through this progress… that headphone jack took tons of time to create the footprint for! There are two versions, one with an accurate silkscreen for the dimensions, and one with a silkscreen that is a little pushed out. This part will be added to my github repo of parts eventually- I may have a few more parts to add by the end of week 6!
And here is the final screenshot of this progress.
The progress done in week 5 really set up for the good progress so far in week 6. I’m so excited to share more of the progress of week 6, but it isn’t even finished yet! I do drop some hints on twitter sometimes though
Also, the FIRST Robotics Competition build season has started again! I’m mentoring team #296 again this year, helping with the vision code. We are using LabView this year!