In this
article:
Software Articles (by date)
All other Articles
Navigation:
HomeHardware
Software
Techniques
Controllers
Reviews
Index
Overview
This page links to all of the articles on the site. On the left you can jump to a listing of just a specific type of article, categories include hardware articles, software articles, reviews, etc.
## Hardware Articles (by date)The world it is a-changin' as many have said. No where is this more apparent than in the “hobby” electronics space. It used to be that one of those plastic multi-drawer cabinets full of 74xx series TTL logic, a few resistors, capacitors, and crystals was all you needed to create a whole slew of interesting projects. Guess what, not any more.
Normally when you write in a “high level” language you expect the compiler to get you reasonably close to a good solution. In this example I could not get VHDL to synthesize a simple hex decoder without resorting to the HDL equivalent of writing in assembly language.
On the premise that you must crawl before you can walk, this first project was really all about learning how to use the WebPack ISE tools rather than doing any serious learning about VHDL. However, I did manage to learn something VHDLish in the process.
In this next project I start turning on LEDs in a 7 segment display. The result, when combined with my 10hz clock, is lighting LEDs in sequence to create a spinning loop effect.
Sometimes the lessons you learn aren’t about the languages, rather it’s about the tools. This was certainly the case with the HEX display decoder. A simple project that took me down an interesting side road.
Now we combine previous projects to build something slightly more complex. In this case a two digit HEX counter. Not rocket science but it taught me about constants in VHDL code.
Design a 32 bit (8 decimal digits) counter that displays its count on an eight digit, multiplexed LED display. The counter should count at a rate of 10 counts/second and display a decimal point between digits 7 and
- Use the CLOCK_10HZ and HEX_DISPLAY entities in this project. Include the ability to optionally blank leading zeros on the display.
When I was competing in BattleBots we had a number of robots in various weight classes. These were typically controlled with regular R/C radios and those radios generated a standard servo control signal. I built a small board to convert that signal into relay activation.
The “Dino Track” was a simple one channel Radio Controlled car offered by Radio Shack one year. During the closeout at the end of the year I bought several from the store for $4 each to use as ‘prey’ in my robot predator prey project. Taking it apart was quite fun.
When developing for a new architecture it is useful to have a system that is set up to let you quickly prototype ideas. When moving on to PIC16F628 development for my speed controller and Servo Gizmo projects I needed such a tool. I evaluated the MPLAB-ICD from Microchip and the LAB-X3 bundle from MicroEngineering Labs.
Hiding eggs during Easter festivities is fun, hiding them so well you can’t find them is a risk. What if you could find them with your pocket AM radio? Well if that sounds like fun read on.
Input devices tend to consume precious I/O pins on your projects. A new breed of input device, the Rotary Mechanical Encoder, has come down in price (from the high $20 each range to under $5) so that you might consider using them. I set up a PIC program to do just that.
These are David Tait’s original materials for his 16F84 programmer. The cool thing about the 16F84 was that it had an EEPROM in it and could be reprogramed without erasing via a UV light. Now of course every chip is programmed with flash memory and UV lights have faded away.
The ARBE-ONE was a very simple robot platform that we considered early on as a “club” robot kit.
Everything you needed to know about inexpensive hobby servos. These servos are used in a variety of robot projects, from the BoeBot to robotic arms. fortunately they are all constructed along similar lines and use a similar signaling mechanism.
This article was pretty famous for a while. Basically I built an electronic speed controller, like the ones used in R/C models, based on a PIC and four transistors. It has been copied many times, when I re-visited the topic I did so with the ServoGizmo.
Software Articles (by date)
Setting up the clocks for a Cortex-M chip from ST Micro can be fairly daunting. If you are used to using an ATMega AVR chip like the Arduino does, you probably soldered down a 16 MHz ceramic resonator and were done, with the Cortex-M you have a lot more options. This article covers those options for the M4 series.
Cross compiling for an architecture different than the one you were running the compiler on used to be something of an art. For the Cortex-M however, ARM has put a manufacturer supported port of the gcc toolchain for anyone to use. This is a much better answer than the one supported by the package managers and you should consider using it instead. A quick article on how to make that happen.
OpenOCD is an open source tool which can give you access to the ARM debug port. It supports a wide variety of programmer protocols that are often built into evaluation boards. Once you have a working OpenOCD setup, flashing and debugging your code is much easier.
Programming Cortex-M chips without and operating system is slightly more complicated than programming 8 bit micros. This article goes through some of the differences and gives a working example of “hello world” running on an STM32F4 …
These days programming an “embedded” chip is a much bigger endeavor than it was. This is because the price of 16 and 32 bit processors have plummeted to the point where it becomes trivial to get a “big” processor for even a “small” job, but there are costs to that too.
Working with embedded ARM systems using only a Linux system can be challenging but Blacksphere Technologies has come out with an excellent tool to help and its open source, so you change it to suit your needs.
This is the story of finding a small bug in a multiprecision addition routine which leads to a reexamination of doing multiprecision math on the PIC16 architecture.
Early on in Robotics one way to get intelligence on board was to use a cast off PC or laptop. Some folks ran MS-DOS on these but others wanted to boot to the bare metal. I researched a bit about what the exact mechanism was to get from power off to running OS and found Ray Knightly’s work useful. I’ve captured them here since his originals are no longer available on his web site.
This is a disassembly and analysis of the Windows 95 “b” (aka OSR2) boot program which is loaded on system boot.
This is a Ray Knightly’s disassembly and analysis of the Windows 95 “b” (aka OSR2) master boot record (MBR).
Programming for “Flashing” PIC chips requires a programmer. Early work like David Tait’s Programmer depended on bit banging the parallel port of a PC, as parallel ports started disappearing, and serial ports soon followed, I looked for a way to program PIC chips via USB and found a kit programmer that could do just that.
When I was competing in BattleBots we had a number of robots in various weight classes. These were typically controlled with regular R/C radios and those radios generated a standard servo control signal. I built a small board to convert that signal into relay activation.
One of the things I needed to do for my electronic speed controller was to use the output from an R/C receiver to control it. Those receivers generate a pulse which normally drive an rc-servo so I needed to meausure pulses accurately. This article describes the way I built and debugged code to do that on the PIC chip.
Input devices tend to consume precious I/O pins on your projects. A new breed of input device, the Rotary Mechanical Encoder, has come down in price (from the high $20 each range to under $5) so that you might consider using them. I set up a PIC program to do just that.
This article was pretty famous for a while. Basically I built an electronic speed controller, like the ones used in R/C models, based on a PIC and four transistors. It has been copied many times, when I re-visited the topic I did so with the ServoGizmo.
All other Articles
As I build and learn about robots I come across books that I find helpful. A very common question then becomes “What books should I read to get started or learn more?” This article provides a place holder for the recommendation list.
The PIC chip from Microchip, being low cost and a simple to implement, has powered a lot of robotic and sensor designs.
A common theme in robotics is a number of different sub-assemblies connected together with wires. Now building wiring harnesses can be tedious when prototyping so a quick way to prototype them is useful. This article talks about making your own jumper wires so that you can connect a variety of things (boards, sensors, breadboards) together easily and quickly.
A continual challenge for roboticists is the making of piece parts. My particular challenge was making decent wheels when toy car wheels wouldn’t do, but other things are also a challenge like linkages or containers. One solution is casting your own parts out of plastic.
This page describes my initial investigation using a cool plastic called “Alumilite” and the Super Casting Kit that you can buy from the Alumilite corporation.
Of course if you read the previous page you know that my first “wheel” didn’t look very wheel like. I changed the initial mold and my second go was much better.
Let’s say you want to buy switches that have handles like an old PDP-8. Impossible? Not quite. Bob Armstrong has put so much effort into creating the front panel, I had to see if I could help him out with some switch paddles.
Building robots is a lot of fun, and of course you need tools to build things. This article is a survey article of tools that I use on a regular basis when building robots. I try to give you an idea of what I use the tool for and why I use it. That may help inform your efforts to equip your own robotics laboratory.
This shows a closeup of the modification I made to the LAB-X3 in order to use the input capture pin as an input capture pin. This moved it away from the LCD. If you want to use my code unchanged you will need to make this mod
One of those perplexing things you find when doing robotics is that manufacturers seem to be your enemy. They want you to use their parts but they make doing so, in a cost effective way, very hard. That is fine if your company is buying you tools, but if this is a side project, look out. This article was my take on this strange situation.