TITLE: Article Index (Everything)
AUTHOR: Chuck McManis
LAST UPDATE: 27-Sep-2019

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)
Read More ...
FPGAs and VHDL - an Odyssey

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.

The Road not Traveled : Full Spec Display

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.

Project #1: Clock Generator

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.

Project #2: LED Display Gizmo (looper)

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.

Project #3: HEX Decoder/Display Driver

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.

Project #4: Two Digit HEX Counter

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.

Project #5: Multi-digit Counting Display

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

  1. Use the CLOCK_10HZ and HEX_DISPLAY entities in this project. Include the ability to optionally blank leading zeros on the display.
Read More ...
Battlebots Weapon Systems Module

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.

Read More ...
Hacking the Dinotrack

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.

Read More ...
A Tale of Two Programmers

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.

Read More ...
Emergency Easter Egg Locator Beacon (EELB)

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.

Read More ...
Quadratrack: Using Mechanical Rotary Encoders

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.

Read More ...
David Taits Inexpensive 16F84 PIC Programmer

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.

Read More ...
The ARBE-ONE Platform

The ARBE-ONE was a very simple robot platform that we considered early on as a “club” robot kit.

Read More ...
Servos 101 : R/C Hobby Servos

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.

Read More ...
A PIC Based Electronic Speed Controller

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)

Read More ...
Setting up STM32F4 Clocks

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.

Read More ...
Cross compiling from Linux for the Cortex-M

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.

Read More ...
Building OpenOCD on a Fresh Ubuntu

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.

Read More ...
Bare Metal ARM Programming

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 …

Read More ...
Retargeting the C Library

In the blink article I showed how to blink the LED on the butterfly board with a minimum of support from the C library. The “Hello World” of hardware. But sometimes you do want to use the features of C that are part of the C library, even when you don’t have an OS. Enter C library retargeting.

Read More ...
Blink, the HelloWorld of Hardware

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.

Read More ...
Black Magic Debugging

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.

Read More ...
Multi-byte Math on the 16Fxxx PIC chips

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.

Read More ...
Booting an x86 PC for Robot Use

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.

Windows 95b Boot Sector

This is a disassembly and analysis of the Windows 95 “b” (aka OSR2) boot program which is loaded on system boot.

Windows 95b (OSR2) Master Boot Record (MBR)

This is a Ray Knightly’s disassembly and analysis of the Windows 95 “b” (aka OSR2) master boot record (MBR).

Read More ...
PIC Programming with USB

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.

Read More ...
Battlebots Weapon Systems Module

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.

Read More ...
Pulse Measurement with the LAB-X3

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.

Read More ...
Quadratrack: Using Mechanical Rotary Encoders

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.

Read More ...
A PIC Based Electronic Speed Controller

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

Read More ...
Bibliography - Interesting Books

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.

Read More ...
The PIC Instruction Set Architecture

The PIC chip from Microchip, being low cost and a simple to implement, has powered a lot of robotic and sensor designs.

Read More ...
Jumper Wires for Prototyping

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.

Read More ...
Plastic Casting

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.

My Initial Experience with Casting

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.

Making Better Wheels

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.

Making Switch Handles

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.

Read More ...
Tools of the Trade: Building Robots

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.

Read More ...
"Fixing" the LAB-X3

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

Read More ...
Common Sense: What's up with that?

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.