Archive for December, 2011
Brrd Base Electrical Layout
Here is a drawing of what the electrical layout will most likely resemble for RoboBrrd with it’s custom brain board.

The voltage input for the servos will be located around the same area that the usb and dc jack are for the Arduino. I plan to make it noticeable with a silkscreen which input is for what. Also, there could be a shorting block for using an optional voltage regulator that could be plugged in via headers.
The servo headers would be located in the prototyping area nearest to the Arduino area. Hopefully the distance from the filtered voltage to the headers won’t effect anything too much.
There will be a lot of room for the wires going to the screw terminals, and you will also be able to mount a shield on the Arduino part. The prototyping area is a little smaller, but perhaps there could be a way to stack the prototyping areas if more room was necessary.
The brain will be able to be removed from the base because it will be a sliding drawer. Still haven’t worked out the thoughts as to how it will remain aligned, but an idea like this was explored with the Learning Pet version of RoboBrrd.
This clears up some of the fog I had last post about how the voltage regulator is going to be able to reach the battery. The battery is one of those details in robotics that can be often overlooked, this sometimes happens with FIRST teams that forget to plan for the battery, then end up placing it randomly … only to have it flying around in the middle of a match. Yikes! Hopefully this planning will assist the CAD’ing of the brain board!
RoboBrrd + gEDA Brain Progress
Happy holidays everyone! Last week I worked on the schematic and board for RoboBrrd’s brain. There was also great research done about how to go about the interactive games for RoboBrrd.
Here is are some timelapse clips of this week in gEDA for RoboBrrd:
Watch on YouTube
I based the schematic off of the Diavolino and GNUduino arduino clones, because they are in gEDA too. Learning gEDA gets better with the more practice you have!

The atmega328 symbol is from Matt Padina‘s TLC5940 knowledge base. It is so nice how it is organized and how the pins are labeled with everything!
The funny part about this schematic now is that I can see many small things that I dislike. For example, the amount of small capacitors. Are they really necessary on some of the power pins? I’m going to poke around at some of the other arduino clones to see how theirs is designed too. It’s kind of interesting, because there’s a boarduino on my desk beside me as I am typing it, and I just noticed it has an orange gumdrop-like component instead of a silver clock. I’ll research more into how that works!
One of the nice things about gEDA is that you can have multiple sheets! I use the input symbol with a custom netname to be able to ‘connect’ the pins from the first sheet to the second sheet. Here are the servo headers, on their own lonely sheet.

For creating the pcb, in gschm2pcb I was stuck for DAYS on this issue with the footprints. I just couldn’t work it out. For some reason on both the Diavolino and the GNUduino, the headers use a standard footprint that I couldn’t find in my library.

Finally, tonight I figured out a way to get the footprints! The ones on the Diavolino are nice, so to grab the footprint from the board and put it into a file, you can just do:
Buffer > Save buffer elements to file
Save as a .fp > Done!
Since I was editing the schematic and the pcb had to be updated often, I found that the best way to go about this was to always remove the old .new.pcb file. If you don’t, I’ve had it happen where all of the parts get scrambled up.
This is what the board looks like right now.

I’m not sure about the height of the board (the distance between the rows of headers). I need to figure out how to measure things in gEDA, that would be really handy.
The green rectangles are the screw terminals. They will only be on one side, because the board is going to be in the base on the right. In Impy RoboBrrd right now, it is really difficult to access the left side of the screw terminals because they are below the top face of the base. Plus, some of the wires stick out the side, which isn’t very good. Not to mention that the wires had to be longer, because it is longer to get to the other side of the board. And, they get tangled. Blech! As long as the board will be less than 12cm or so, it should be fine.
There is a large prototyping area on the board. It will be like a breadboard, hopefully this will help students! Also there is a mistake right now, the holes are vias when they should be pads. Have to fix that.
The blue rectangle will be an area to access all of the pins again. It will be handy. The brown rectangles will be some more pads that can be soldered to. The aqua rectangle is where the voltage regulator will eventually be able to plug in!
One of the things that I hope I’ll be able to do is silkscreen both sides of the board, because it will make it easier to see what pins are what when flipped over. I think the Arduino MEGA Protoshield does this, and it is extremely handy.
I’m not sure if I enjoy the placement of the voltage regulator near the back. This means that it would be at the front of the RoboBrrd, making the battery difficult to plug in. I have to think about this more, maybe it will be moved up to the front of the board, before the prototyping area.
Some cool things that I discovered this week that will be fun to play with in gEDA are:
SVG to PCB
PCB+GL
That wraps up week 2. The goal for this week mirrors that of last week, but to complete the progress that was started. FINISH THE BRAIN!
—
If anyone out there is trying to use gEDA to make Arduino related things, here are some of the resources that I found to be particularly helpful! And of course what better time to learn gEDA than now… there is even a gEDA badge!
Arduinos
http://www.evilmadscientist.com/article.php/diavolino
http://jeffrey.co.in/projects/gnuduino/
https://github.com/jeffreyantony/GNUduino
Shields
http://lowvoltagelabs.com/2010/11/16/arduino-shield-board-outline-in-geda-format/
http://lowvoltagelabs.com/products/videooverlayshield/
http://wiki.evilmadscience.com/ISP_Shield
More
http://sites.google.com/site/artcfox/demystifying-the-tlc5940
http://wiki.evilmadscience.com/Bulbdial
http://wiki.evilmadscience.com/Larson_Scanner
http://wiki.evilmadscience.com/Meggy_Jr_RGB
http://wiki.evilmadscience.com/Octolively
Random
http://wiblocks.luciani.org/remix/index.html
http://www.gedasymbols.org/user/russell_dill/cec.html
RoboBrrd’s Interactive Games Interfacing
One of the things that has been bugging me about RoboBrrd the past two days is wondering how it will interact with the software games. When planning this, I was thinking of making the games in Processing (Java). However, Java is getting old, and with new technologies on the rise, like websockets, I wanted to research this more.
You may be wondering, why are the interactive games so important for RoboBrrd anyway? If you are just trying to create an educational robot, who needs the games and software? We want to create a blended reality between the real RoboBrrd and the virtual RoboBrrd for the student, so that it is always accessible and available to the student to learn, hence the prior nickname ‘Learning Pet’. RoboBrrd is more than a robot, it’s a way to actively interact with virtual based learning applications.
One of the cool ideas that is arising in the hardware-software interface realm is driverless and middlewareless communication. The HIDUINO is a really cool implementation of this. Check out the website and the video for more information. http://dimitridiakopoulos.com/hiduino
Here are some ideas of ways of communicating that I was exploring:
- Socket.io on remote server
Benefits:
Sleek, new way of interfacing
Active community
Games are in the browser
Real time
Problems:
Hosting for node.js with socket.io…
Would have to run some sort of middleware to communicate between the socket and the Arduino.
- RoboBrrd as a keyboard HID
Benefits:
Easy way to interact with a game on a server
No middleware needed
Problems:
Only one way communication
- RoboBrrd as an audio or video HID
When researching this I found some ways of communicating to a usb webcam, but it is only for video streams mainly.
- RESTful API with AJAX auto-reload
Benefits:
Auto refresh
Openable API
Problems:
Still need a fancy server to enable long running ajax processes
- Processing game, RESTful API
Benefits:
It would work.
Problems:
It’s ancient.
Here are interesting links that were explored while researching:
physical-js JavaScript-based physical computing
Circuits@Home lots of USB Host & HID information here
Garmin communicator did some interesting this with communication
Mozilla Audio Data API
jasmid MIDI synthesis
WebRTC
getUserMedia
Device element discussion
Implementing device
WebRTC Group
LUFA
Node.js and Socket.io
Ajax periodic refresh
RESTful API with PHP and Apify
Node.js and WebSockets Demo
Nodejitsu
NodeSocket
Cure
Cloudnode
Webbynode
Nodester
Joyent
Heroku
nowjs
As you can see, the implementation that would most likely work would be the Processing game with a RESTful API back to the server for storing data. So yes, I did pretty much just go around in a complete circle, but I think that learning about more ways to communicate between software and hardware is really interesting.
So, happy holidays everyone- and there will be a week 2 progress update post later this evening!
Learning more CAD
Week 1 is finished, here is a progress update with some things that have been learned.
One of the problems with Eagle is that if you want to make boards commercially, you have to buy a $50 license. It also constrains the size. To put it in perspective, you wouldn’t be able to make a shield for an Arduino Mega.
There are two other popular ones out there, KiCAD and gEDA. So I figured I might as well try both of them and see which one will be the best. At first, I thought learning these two things would be quick, and I’d be able to do it without a tutorial. That assumption turned out wrong.
Here are two timelapse videos of me learning these two things. Watching schematic timelapse videos kind of fun, and it is a good record of how fast time goes as it takes a screenshot every 10 seconds.
Watch on YouTube
Watch on YouTube
The set up for KiCAD was on Ubuntu 11.10 through a VirtualBox VM. I was having issues with possibly the version from apt-get being out of date, so I followed this excellent tutorial on Wayne & Layne on how to build it from source. The Mac version is not user-friendly at all, but I did look at it for a bit.
In KiCAD, the 3d viewer is neat.

The bmp tool is fun to play with:

This is what the LM317 board looks like so far:


Here are some good resources in KiCAD that were used:
- Building Kicad on Ubuntu (Wayne and Layne)
- Kicad step by step tutorial
- Kicad wiki
- Kicad wiki FAQ
- Kicad resources (Meat and Networking)
- Arduino modules on thingiverse
- Clock3 resources
- Adding kicad libraries
- Kicad libraries converted from Eagle
- Kicad libraries
- Kicad on Mac OS X
- Compiling Kicad on Mac OS X
This is what the schematic looks like in gEDA:

Having some issues with using a custom footprint in gsch2pcb:

Also having some issues with xgsch2pcb through the launchers:

Luckily the people at Evil Mad Science are super knowledgable in gEDA, so I asked two questions on their forum. Here, and here.
Here are some good resources in gEDA that were used:
- gEDA Homepage
- gsch2pcb tutorial
- DJ Delorie’s Getting Started With PCB tutorial
- EMSL gEDA wiki
- EMSL gEDA Resources
- gEDA Symbols
- PCB Footprints
- Pcb Library Creation
- PCB tips
All in all, the pace of this progress is not as fast as it should be. There’s a lot to learn about the CAD programs that is kind of hard as a computer science brain to adjust to. Once I get more familiarized with these programs, it will be quicker (hopefully).
In addition to learning these two cad programs, research was done in determining what chip to use in RB’s brain board. It is a choice between an atmega32u4 and a atmega328P. There are major pitfalls to both choices, but this will be discussed in more depth in the next week’s progress post.
The Robot Party was fantastic last week too. You can watch all of the videos with this YouTube playlist! There will be another Robot Party again this week too, Thursday at 8PM ET, so bring your robots and hope to see ya there!
The goal for this week’s progress is to have a first cad version of the RB brain complete, and begin planning about the pieces/size constraints.
On Twitter and Google+ the progress throughout the week is micro-blogged. Here’s the Google+ post where I dive in to comparing upverter, Eagle, KiCAD, and gEDA crazy robot style. Thanks everyone for the replies to the questions, they are really helping with learning the new tools!
Progress update: Learning EAGLE
Quick little progress update here! I have been spending some time to learn Eagle CAD so that I can make boards for RoboBrrd! I want the voltage regulator to be able to be plugged in/out of the main RoboBrrd shield, so this is what the main focus has been on first. There will probably be two versions available at the beginning, a LM317 version and a 7805 version. I started off with the LM317, since that one is quite familiar to me and RoboBrrd right now
Here is a screenshot timelapse video of moving things around for the latest version of the board, which isn’t complete yet!
View on Youtube
I was tweeting my progress of the boards and taking regular screenshots. It was really great and valuable to get everyone’s feedback. As you can see, it has helped!
This was the beginning:

There was a version that looked like this, too:

This one is compact, but the caps are too far away:

Here is the latest version:

It still needs a silkscreen and some mounting holes. I was having trouble with a schottky diode, it is driving me crazy, but there needs to be one on the input line.
Also, here is a video of a weekend update. It is all loose ends, so nothing too fancy just yet.
View on Youtube
There is no time to lose, and I’m determined to stay focused. I’ll be documenting the progress that I am making to keep everyone in the loop and ask for any suggestions. I’m super thankful for this opportunity!
Don’t forget! The Robot Party is on Thursday at 8PM ET! If you have a robot, join in on the hangout and tell us all about it- even if it isn’t working!
RoboBrrd wins a 2011 WyoLum Innovation Grant!
RoboBrrd has won a WyoLum Innovation Grant!

Thanks to everyone who has helped to get to where we are now! The next 6 months are going to be really exciting!
I will keep everyone posted as we keep making progress! Woohoo!
Robot Party tonight and RoboBrrd in IEEE Spectrum!

The Robot Party is tonight at 8PM ET! You can join the Robot Party through Google+, or you can watch through Ustream on the Robot Party page.
We will be discussing our robots, and sharing our knowledge with each other! It is a great way to learn more about robotics and see what other roboticists are making.
Also, I will give a mini tutorial about braking techniques for wheeled robots
This is the first time for trying tutorials during the Robot Party, so we will see how it goes!
RoboBrrd was featured in IEEE Spectrum’s blog yesterday! What an honour, and I hope that this inspires more robot makers out there to make more robots (and share the experience with everyone), or just make a RoboBrrd too!

Read the full article RoboBrrd Highlight Reel: RoboBrrdalicious on IEEE Spectrum here!


