William McNamara Wins the CC Code Challenge (Week 16)

We have a winner of last week’s CC Weekly Code Challenge, sponsored by IAR Systems! We posted a code snippet with an error and challenged the engineering community to find the mistake!

Congratulations to William McNamara of The Colony, Texas, USA for winning the CC Weekly Code Challenge for Week 16! William will receive a CC T-Shirt and one year digital subscription/renewal.

William’s correct answer was randomly selected from the pool of responses that correctly identified an error in the code. William answered:

Line 5: the “do” needs to be on a separate line or have a semicolon in front of it.


You can see the complete list of weekly winners and code challenges here.

What is the CC Weekly Code Challenge?
Each week, Circuit Cellar’s technical editors purposely insert an error in a snippet of code. It could be a semantic error, a syntax error, a design error, a spelling error, or another bug the editors slip in. You are challenged to find the error.Once the submission deadline passes, Circuit Cellar will randomly select one winner from the group of respondents who submit the correct answer.

Inspired? Want to try this week’s challenge? Get started!

Submission Deadline: The deadline for each week’s challenge is Sunday, 12 PM EST. Refer to the Rules, Terms & Conditions for information about eligibility and prizes.

Jesper Poulsen Wins the CC Code Challenge (Week 15)

We have a winner of last week’s CC Weekly Code Challenge, sponsored by IAR Systems! We posted a code snippet with an error and challenged the engineering community to find the mistake!

Congratulations to Jesper Poulsen of København, Denmark for winning the CC Weekly Code Challenge for Week 15! Jesper will receive a CCGold Issues Archive.

Jesper’s correct answer was randomly selected from the pool of responses that correctly identified an error in the code. Jesper answered:

Line 23: Should be 0..@list-2 to avoid array overrun when taking $list[$i+1]


You can see the complete list of weekly winners and code challenges here.

What is the CC Weekly Code Challenge?
Each week, Circuit Cellar’s technical editors purposely insert an error in a snippet of code. It could be a semantic error, a syntax error, a design error, a spelling error, or another bug the editors slip in. You are challenged to find the error.Once the submission deadline passes, Circuit Cellar will randomly select one winner from the group of respondents who submit the correct answer.

Inspired? Want to try this week’s challenge? Get started!

Submission Deadline: The deadline for each week’s challenge is Sunday, 12 PM ESTRefer to the Rules, Terms & Conditions for information about eligibility and prizes.

Q&A: Peter Lomas – Raspberry Pi: One Year Later, 1 Million Sold

Peter Lomas

Clemens Valens, Editor-in-Chief of Elektor Online and head of Elektor Labs, caught up with Peter Lomas, hardware designer for the Raspberry Pi single-board computer, earlier this year at the Embedded World 2013 trade show in Nuremberg, Germany. This is a longer version of an interview with Lomas published in Elektor’s May 2013 issue. The Lomas interview provided a one-year update on the rapid growth of interest in the Raspberry Pi since Elektor’s April 2012 interview with Eben Upton, one of the founders and trustees of the Raspberry Pi Foundation. The UK-based charitable foundation developed the inexpensive, credit card-sized computer to encourage the study of basic computer science in schools. In early 2012, the Raspberry Pi’s first production batches were arriving. Since then, more than 1 million boards have been sold.

CLEMENS: Raspberry Pi, the phenomena. It is quite amazing what happened.

PETER: It is, and lots of people keep asking me, why has Raspberry Pi done what it has done, what makes it different? I think it’s something we’ve really been trying to grasp. The first thing that happened with Raspberry Pi, which I think is important, is that we had one of our very first prototypes on a UK blog for one of the BBC correspondents, Rory Cellan-Jones, and they made a little video, a YouTube video, and that got 600,000 hits. So I guess that if you look at it from one aspect, that created a viral marketing, a very viral marketing campaign for Raspberry Pi. The other I think, the name, Raspberry Pi was key. And the logo that Paul Beach did for us is absolutely key because it has become iconic.

CLEMENS: Yes, it’s very recognizable.

PETER: Very recognizable. If I show you that, you know exactly what it is, in the electronics circle. So I think the brand has been very important. But you know, we shouldn’t forget the amount of work that Liz Upton’s been doing with the blogs and on our website, keeping people informed about what we’re doing. Then, I think we’ve got the fact we are a charity… that we are focused on the education of computing and electronics and that’s our motive—not actually to make boards and to make money except to fund the foundation.

CLEMENS: I looked at the Raspberry Pi website, and it doesn’t look easy to me. You target education, children, and on the website it’s hard to find what Raspberry Pi exactly is. It’s not really explained. You have to know it. There are several distributions, so you have to know Linux and you have to program in Python.

PETER: Well, that’s true and, in a weird way, that’s part of its success, because you actually have to be active. In order to do something with Pi, you can’t just get it out of a shiny box, put it on the desk and press “on.” You have to do some mental work. You have to figure some things out. Now, I actually think that there’s a bit of a benefit there, because when it actually works, you have some achievement. You’ve done something. Not “we’ve done something.” You’ve done it personally, and there is a gratification from doing it.

CLEMENS: But it’s not the easiest platform.

PETER: No, but with our educational proposition, the whole object now is to package that up in easier-to-use bundles. We can make the SD card boot straight to Scratch (a website project and simple programming language developed at the Massachusetts Institute of Technology Media Lab), so Linux becomes temporarily invisible, and there’s a set of worksheets and instructions. But we’re never going to take away, hopefully, the fact that you have to put your wires in, and I do think that is part of the importance and the attraction of it.

CLEMENS: Because of all these layers of complexity and having to program it in English (Python is in English), for the non-English population it is yet another hurdle. That’s why Arduino was so successful; they made the programming really easy. They had cheap hardware but also a way to easily program it.

PETER: There’s no doubt Arduino is a brilliant product. You are right, it enables people to get to what I call “Hello World” very easily. But, in fact, on a Raspberry Pi, after you’ve made those connections and plugged the card in, you can get to an equivalent “Hello World.” But ours is the Scratch cat. Once you’ve moved the Scratch cat, you can go in a few different directions: you can move it some more, or you can use Scratch with an I/O interface to make an LED light up or you can press a button to make the Scratch cat move. There are endless directions you can go. I’ve found, and I think Eben has similarly experienced, that kids just get it. As long as you don’t make it too complicated, the kids just get it. It’s the adults who have more problems.

CLEMENS: I saw that there are at least three different distributions for the boards. So what are the differences between the three? Why isn’t there just one?

PETER: Well, they all offer subtly different features. The whole idea was to make Raspberry Pi as an undergraduate tool. You give it to Cambridge University, hopefully Manchester University, and undergraduates can view the science before they start it. They have the summer. They can work on it, come back, and say: “Look, I did this on this board.” That’s where it all started.

CLEMENS: OK. So, you were already on quite a high level.

PETER: Well we were on a high level, that’s true. We were on a high level, so Scratch wouldn’t have been on the agenda. It was really just Python—that’s actually where the Pi comes from.
What has really happened is that we’ve developed this community and this ecosystem around Pi. So we have to be able to support the, if you like, “different roots” of people wanting to use Pi. Now we’ve got the RISC OS that you can use. And people are even doing bare-metal programming. If we just gave one distribution, I guess we’re closing it up. I fully approve of having different distributions.

CLEMENS: From the website, it’s not clear to me what is different in these distributions. For the first one, it is written: “If you’re just starting out.”

PETER: I think maybe we do need to put some more material in there to explain to people the difference. I have to explain: I’m the hardware guy. I’m the guy who sat there connecting the tracks up, connecting the components up. My expertise with the operating systems, with the distributions that we have, is really limited to the graphical interface because that’s what I use day in, day out.

CLEMENS: Once you have chosen your distribution and you want to control an LED, you have to open a driver or something, I suppose?

PETER: Well, you’ve got the library; you just have to make a library call. Again, it’s not easy. You have to go and find the libraries and you have to download them. Which is where things such as the Pi-Face (add-on board) come in, because that comes with an interactive library that will go onto Scratch. And you’ve got the Gertboard (another extension board) and that comes with the libraries to drive it and some tutorial examples and then you can wind that back to just the bare metal interface on the GPIOs.

CLEMENS: So the simplicity is now coming from the add-on boards?

PETER: Some of the add-on boards can make it simpler, where they give you the switches and they give you the LEDs. You don’t need to do any wiring. My view is that I’m trying to make it like an onion: You can start with the surface and you can do something, and then you can peel away the layers. The more interested you get, the more layers you can peel away and the more different directions you can go (in what you do with it). You must have seen the diverse things that can be done.

CLEMENS: I’ve looked at some projects. I was surprised by the number of media centers. That’s how RS Components (which distributes the Raspberry Pi) is promoting the board. Aren’t you disappointed with that? It seems to be, for a lot of people, a cheap platform to do a Linux application on. They just want to have a media center.

PETER: I know exactly what you mean. And I suppose I should be disappointed that some people buy it, they make it into a media center, and that’s all it does. But I think if only 5% or 10% of those people who make it into a media center will think: “Well, that was easy, maybe I’ll get another and see if I can do something else with it,” then it’s a success.

CLEMENS: It would be an enabler.

PETER: Getting the technology in front of people is the first problem. Getting the “Hello World” so they’ve got a sense of achievement is the second problem. Then turning them over from doing that to “Okay, well what if I try and do this?”  then that’s  Nirvana. Certainly for the kids that’s crucial, because we’re changing them from doing what they’re told, to start doing things that they think they might be able to do—and trying it. That makes them into engineers.

CLEMENS: Let’s move on to the board’s hardware.

PETER: Sure.

CLEMENS: So, you chose a Broadcom processor. Because Eben worked at Broadcom?

PETER: He still works within Broadcom. It would be hard for me to argue that that wasn’t an influence on the decision, because Eben said: “Oh look, here’s the bright shiny chip. It can do all the things that we want, why wouldn’t we use it?” The decision we made is we nailed our credentials and our reputations to the website by saying it will cost $35—it will cost $25 for the basic one. And there was no way on Earth any of us were going to go back on that… We had a spreadsheet, the basic numbers looked plausible, we just had to do a lot of work to chop it down—to hone it, to get it tight so it would actually meet the prices. So, I think if we’d gone another way, like maybe with Samsung, that would have blown the budget.

CLEMENS: Did Broadcom help in any way to make this possible?

PETER: Every semiconductor manufacturer helped the project by making the chips available. Also, the price point of the chips is important. I think some of the people who helped us took an educated gamble and gave us good pricing from day one. Because the big problem you get with trying to bootstrap any project, is that if you don’t know what your volume is going to be. You have to be conservative.

So, initially, we priced for a thousand boards, but quickly we priced for 20,000 boards, but nowhere in our wildest dreams did we think we were going to get to a 200,000-board requirement on launch day and be so tantalizingly close to selling a million after our first year. So that’s helped in a lot of ways, because obviously it’s driven the price of all the components down. I’m not going to pretend it doesn’t please the vendors of the components that had faith in us from day one, because they’ve obviously made some money out of it.

We always had the rationale that we had to have a sustainable model where the foundation, our community that is buying the boards, and our suppliers were all making a living and could feed themselves. It would have been a total disaster if someone such as Broadcom had said: “Tell you what guys, let’s give you the processors. We’ll give you the first 20,000.” And so, we could have provided all sorts of extra bells and whistles to the design. Then, when we would have sold these 20,000 boards, we’re going to raise the price of everything by $12. That would’ve been the end of Raspberry Pi.

CLEMENS: If Eben and the others had not worked for Broadcom…

PETER: Would we have used a different chip? Well, I sort of speculated about this and I went around and had a look and, at the time for the price point, we couldn’t find anything that would’ve met our requirements as well as that chip. So I was comfortable that was the one that would allow us to get to where we wanted to be, and I think the big key crunch for that was the high-definition multimedia interface (HDMI). From a technical point of view, one of the challenges we had was getting the breakout under the BGA, because blind and buried vias on PCBs are very expensive.

CLEMENS: How many layers is the board?

PETER: Six, which is a pretty bog-standard layer count. The only little trick that we used was to put blind vias only on layers one and two—so we had an extra drilling stage—but only one bonding stage. So that added $0.02 onto the cost of the board. But, because the next layer down was a ground plane, it meant that a lot of the connections that come out of the Broadcom processor just go down one layer. And that meant that I could have space underneath to route other things and actually make it all happen.

CLEMENS: Don’t they have guidelines at Broadcom?

PETER: Oh, they do have guidelines! Use blind and buried vias or vias in pads. Our first prototype was all singing, all dancing, but it would have cost $100 to $110 to manufacture. So we got the machete out and started hacking down all the things that we didn’t need. So you’ve got all the functionality that you want. You can get the performance that you want, you can get the compliance, but it’s got nothing extra.

CLEMENS: Have you been thinking about the future of Raspberry Pi?

PETER: Well, yeah… In our industry, you know, Moore’s law guarantees that everything is old-hat in two years’ time. So we’re thinking about it, but that’s all we’re doing. We’re trying to improve our educational release. I mean, let’s face it, I’m not going to pretend that the Raspberry Pi is perfect. We only made one modification to the board from design to release. We’ve only made some minor modifications under the V2 release. Some of that is to fix some anomalies, some of that was also to help our new manufacturing partner, Sony (in Pencoed, Wales), take it. Their process needed some slight changes to the board to make it easier to manufacture.

CLEMENS: About the original idea of Raspberry Pi, the educational thing. I had a look at the forum and there are lots of forums about technical details, quite a lot of questions and topics about start-up problems. But the educational forum is pretty small.

PETER: You’re right. You’re absolutely right. A lot of that work has been going on slowly and carefully in the background. To be completely honest with you, we were caught on the hub with the interest with Raspberry Pi, and so I’ve certainly spent the last 12 months making sure that we can deliver the product to our community so that they can develop with it and perhaps talk a little bit about our educational goals. But we’re absolutely refocusing on that.

CLEMENS: First, get the hardware into people’s hands and then focus on the education.

PETER: Exactly. And of course, we’ve also released the first computers in schools as manual teaching tools. But also we’ve got Clive, who is a full-time employee helping with the educational deployment. And it’s great that we’ve had all this support (from Google Giving) to get 15,000 kits into schools. I won’t pretend we don’t have a lot of work to do but, I think of where we were a year ago, just still trying to launch.

CLEMENS: It all went really fast.

PETER: Oh yes, it’s gone like a rocket!

CLEMENS: Have you personally learned something valuable from it?

PETER: Well, I’ve learned lots of things. I think the most valuable, maybe not a lesson, but a reinforcement of something I already thought, is that education doesn’t just exist in the classroom. It exists all around us. The opportunity to learn and the opportunity to teach exists every day in almost every aspect in what we do. You know, there are people who spend their lives trying to keep every secret, keep everything to themselves. But there are also people who just give. And I’ve met so many people who are just givers. I suppose I’ve learned there is a whole new system of education that goes on outside of the standard curriculum that helps people do what they want to do.

Editor’s Note: Interview by Clemens Valens, Transcription by Joshua Walbey.


  • Embedded Linux Wiki, “RPi Gertboard,” elinux.org/RPi_Gertboard
  • W. Hettinga, “What Are You Doing? The Raspberry Pi $25 Computer,” Elektor April 2012.
  • Massachusetts Institute of Technology Media Lab, “Scratch,” scratch.mit.edu
  • University of Manchester School of Computer Science, Projects Using Raspberry Pi, “Pi-Face Digital Interface,” http://pi.cs.man.ac.uk/interface.htm


New Products: May 2013


iC-Haus iC-TW8

The iC-TW8 is a high-resolution signal processor designed to evaluate sine/cosine sensors. Its automatic functions help minimize angular errors and jitters. The processor can be used for initial, push-button calibration and to permanently adapt signal-path parameters during operation. The angular position is calculated at a programmable resolution of up to 65,536 increments per input cycle and output as an indexed incremental signal. A 32-bit word, which includes the counted cycles, is available through the SPI.

As an application-specific DSP, the iC-TW8 has two ADCs that simultaneously sample at a 250-ksps rate, fast CORDIC algorithms, special signal filters, and an analog front end with differential programmable gate amplifier (PGA) inputs that accepts typical magnetic sensor signals from 20 mVPP and up. Signal frequencies of up to 125 kHz enable high rotary and linear speeds for position measuring devices and are processed at a 24-µs constant latency period.

The device’s 12-bit measurement accuracy works with one button press. Measuring tools are not required. The iC-TW8 independently acquires information about the signal corrections needed for offset, amplitude, and phase errors and stores them in an external EEPROM.

The iC-TW8 has two configuration modes. Preset functions and interpolation factors can be retrieved through pins and the device can be calibrated with a button push. No programming is required for initial operation.

The device’s functions—including an AB output divider for fractional interpolation, an advanced signal filter to reduce jitter, a table to compensate for signal distortion, and configurable monitors for errors and signal quality—can be accessed when the serial interfaces are used. Typical applications include magnetic linear displacement measuring systems, optical linear scales, programmable magnetic/optical incremental encoders, high-resolution absolute/incremental angle sensors with on-axis, Hall scanning, and the general evaluation of sine/cosine signals (e.g., PC measuring cards for 1 VPP and 11 µAPP).

The iC-TW8 operates on a 3.1-to-5.5-V single-ended supply within a –40°C-to-125°C extended operating temperature range. It comes in a 48-pin QFN package that requires 7 mm × 7 mm of board space. A ready-to-operate demo board is  available for evaluation. An optional PC operating program, in other words, a GUI, can be connected with a USB adapter.

The iC-TW8 costs $7.69 in 1,000-unit quantities.

iC-Haus GmbH



Analog Devices AD9675

The AD9675 and the AD9674 are the latest additions to Analog Devices’s octal ultrasound receiver portfolio. The devices and are pin compatible with the AD9670/AD9671.

The AD9675 is an eight-channel ultrasound analog front end (AFE) with an on-chip radio frequency (RF) decimator and Analog Devices’s JESD204B serial interface. It is designed for mid- to high-end portable and cart-based medical and industrial ultrasound systems. The device integrates eight channels of a low-noise amplifier, a variable-gain amplifier, an anti-aliasing filter, and a 14-bit ADC with a 125-MSPS sample rate and a 75-dB signal-to-noise ratio (SNR) performance for enhanced ultrasound image quality. The on-chip RF decimator enables the ADC to be oversampled, providing increased SNR for improved image quality while maintaining lower data I/O rates. The 5-Gbps JESD204B serial interface reduces ultrasound system I/O data routing.

The AD9674 offers similar functionality, but includes a standard low-voltage differential signaling (LVDS) interface. Both devices are available in a 144-ball, 10-mm × 10-mm ball grid array (BGA) package.

The AD9674 and the AD9675 cost $62 and $68, respectively.

Analog Devices, Inc.



Melexis MLX92212

Melexis MLX92212

MLX92212 digital output Hall-effect sensors are AEC-Q100-qualified devices that deliver robust, automotive-level performance. The MLX92212LSE-AAA low-hysteresis bipolar latch and the MLX92212LSE-ABA high-hysteresis unipolar switch are optimized for 2.5-to-5.5-V operation. They pair well with many low-power microcontrollers in embedded systems. The sensor and specified microcontroller can share the same power rail. The sensors’ open-drain outputs enable simple connectivity with CMOS/TTL. They exhibit minimal magnetic switch point drift over temperature (up to 150°C) or lifetime and can withstand 8 kV electrostatic discharge.

The MLX92212LSE-AAA is designed for use with multipole ring magnets or alternating magnetic fields. It is well suited for brushless DC electric motor commutation, speed sensing, and magnetic encoder applications. Typical automotive uses include anti-trap/anti-pinch window lift controls, automatic door/hatch systems, and automatic power seat positioning. The MLX92212LSE-ABA enables the use of generic/weak magnets or larger air gaps. It can be used in simple magnetic proximity sensing and interlocks in covers/hatches or ferrous-vane interrupt sensors for precise position and timing applications.

Both MLX92212 devices utilize chopper-stabilized amplifiers with switched capacitors. The CMOS technology makes this technique possible and contributes to the sensors’ low current consumption and small chip size.

The MLX92212 sensors cost $0.35 each in 5,000-unit quantities and $0.30 in 10,000-unit quantities.

Melexis Microelectronic Integrated Systems



Byte SPI Storm

Byte SPI Storm

The SPI Storm 50 and the SPI Storm 10 are the latest versions of Byte Paradigm’s SPI Storm serial protocol host adapter. The adapters support serial peripheral interface (SPI), Quad-SPI, and custom serial protocols in the same USB device.

The SPI Storm 50 and the SPI Storm 10 support serial protocols and master up to 50 and 10 MHz, respectively. The SPI Storm 10 features an 8-MB memory, while the higher-end devices are equipped with a 32-MB memory.

The SPI Storm adapters enable system engineers to access, communicate, and program their digital board and digital ICs, such as field-programmable gate array (FPGA), flash memories, application-specific integrated circuit (ASIC), and

system-on-a-chip (SoC). The SPI Storm 10 is well suited for engineering schools and universities because it is a flexible, all-around access device for hands-on digital electronics. The 50- and 100-MHz versions can be used in mid- and high-end testing and debugging for telecommunications, medical electronics, and digital imaging industries.

The SPI Storm 50 and the SPI Storm 10 cost $530 and $400, respectively.

Byte Paradigm



Microchip MCP19111

Microchip MCP19111

The MCP19111 digitally enhanced power analog controller is a new hybrid, digital and analog power-management device. In combination with the expanded MCP87xxx family of low-figure-of-merit (FOM) MOSFETs, it supports configurable, high-efficiency DC/DC power-conversion designs for many consumer and industrial applications.

The MCP19111 controller, which operates at 4.5 to 32 V, integrates an analog-based PWM controller with a fully functional flash-based microcontroller. This integration offers the flexibility of a digital solution with the speed, performance, and resolution of an analog-based controller.

The MCP19111 devices have integrated MOSFET drivers configured for synchronous, step-down applications. The MCP87018, MCP87030, MCP87090, and MCP87130 are 25-V-rated, 1.8-, 3-, 9-, and 13-mΩ logic-level MOSFETs that are specifically optimized for switched-mode-power-supply (SMPS) applications.

The MCP19111 evaluation board includes Microchip’s high-speed MOSFETs. This evaluation board includes standard firmware, which is user-configurable through an MPLAB X IDE graphical user interface (GUI) plug-in. The combined evaluation board, GUI, and firmware enable power-supply designers to configure and evaluate the MCP19111’s performance for their target applications.

The MCP19111 controllers cost $2.81 each and the MCP87018/030/090/130 MOSFETs cost $0.28 each, all in 5,000-unit quantities.

Microchip Technology, Inc.



Ironwood SG-QFE-7011

Ironwood SG-QFE-7011

The SG-QFE-7011 is a high-performance QFP socket for 0.4-mm pitch, 128-pin QFPs. The socket is designed for a

1.6-mm × 14-mm × 14-mm package size with a 16-mm × 16-mm lead tip to tip. It operates at bandwidths up to 10 GHz with less than 1 dB of insertion loss and has a typical 20 mΩ per I/O contact resistance. The socket connects all pins with 10-GHz bandwidth on all connections. The small-footprint socket is mounted with supplied hardware on the target PCB. No soldering is required. The small footprint enables inductors, resistors, and decoupling capacitors to be placed close to the device for impedance tuning.

The SG-QFE-7011’s swivel lid has a compression screw that enables ICs to be quickly changed out. The socket features a floating compression plate to force down the QFP leads on to elastomer. A hard-stop feature is built into the compression mechanism.

The sockets are constructed with high-performance, low-inductance gold-plated embedded wire on elastomer as interconnect material between a device and a PCB. They feature a –35°C-to-100°C temperature range, a 0.15-nH pin self inductance, a 0.025-nH mutual inductance, a 0.01-pF capacitance to ground, and a 2-A per pin current capacity.

The SG-QFE-7011 costs $474.

Ironwood Electronics


Member Profile: Dr. Alexander Pozhitkov

Dr. Alexander Pozhitkov

Dr. Alexander Pozhitkov

Location: Seattle, WA

Education: MS in Chemistry, Moscow State University, PhD in Genetics and Bioinformatics, University of Cologne, Germany

Occupation: Research scientist

Member Status: He has been a subscriber for a year.

Technical Interests: Alex is interested in low-level hardware programming and high-voltage electronics, including vacuum tubes.

Most Recent Embedded Tech-Related Acquisition: He recently received a single-board fanless PC with a solid-state hard drive as a gift.

Current Projects: Alex is further developing the NakedCPU platform he wrote about in his two-part article series, “The NakedCPU,” (Circuit Cellar 259–260, 2012).

Thoughts on the Future of Embedded Technology: Alex says he’s worried that embedded solutions are becoming less transparent. He remembers working with one system that had several DVDs of examples and libraries but it didn’t have a comprehensive guide to the system’s architecture. “As a researcher and someone who wants to get to the bottom of things, such a situation is frustrating. This is certainly my personal researcher’s view. I am not commenting on the application side of increasingly complicated embedded systems.”

Electrostatic Cleaning Robot Project

How do you clean a clean-energy generating system? With a microcontroller (and a few other parts, of course). An excellent example is US designer Scott Potter’s award-winning, Renesas RL78 microcontroller-based Electrostatic Cleaning Robot system that cleans heliostats (i.e., solar-tracking mirrors) used in solar energy-harvesting systems. Renesas and Circuit Cellar magazine announced this week at DevCon 2012 in Garden Grove, CA, that Potter’s design won First Prize in the RL78 Green Energy Challenge.

This image depicts two Electrostatic Cleaning Robots set up on two heliostats. (Source: S. Potter)

The nearby image depicts two Electrostatic Cleaning Robots set up vertically in order to clean the two heliostats in a horizontal left-to-right (and vice versa) fashion.

The Electrostatic Cleaning Robot in place to clean

Potter’s design can quickly clean heliostats in Concentrating Solar Power (CSP) plants. The heliostats must be clean in order to maximize steam production, which generates power.

The robot cleaner prototype

Built around an RL78 microcontroller, the Electrostatic Cleaning Robot provides a reliable cleaning solution that’s powered entirely by photovoltaic cells. The robot traverses the surface of the mirror and uses a high-voltage AC electric field to sweep away dust and debris.

Parts and circuitry inside the robot cleaner

Object oriented C++ software, developed with the IAR Embedded Workbench and the RL78 Demonstration Kit, controls the device.

IAR Embedded Workbench IDE

The RL78 microcontroller uses the following for system control:

• 20 Digital I/Os used as system control lines

• 1 ADC monitors solar cell voltage

• 1 Interval timer provides controller time tick

• Timer array unit: 4 timers capture the width of sensor pulses

• Watchdog timer for system reliability

• Low voltage detection for reliable operation in intermittent solar conditions

• RTC used in diagnostic logs

• 1 UART used for diagnostics

• Flash memory for storing diagnostic logs

The complete project (description, schematics, diagrams, and code) is now available on the Challenge website.


Q&A: Stephan Lubbers (Sensory Innovation)

Stephan Lubbers enjoys sensing technology. He is a creative engineer and inventor whose designs often build on his need to monitor data and figure out how things work. Steve and I recently discussed some of his designs, his contest-entry process, his thoughts on the future of embedded technology, and what’s currently happening on his workbench.—Nan Price, Associate Editor

NAN: Where are you located?

Stephan Lubbers

Stephan Lubbers in his workspace

STEVE: I live in Dayton, OH.

NAN: Where did you go to school and what did you study?

STEVE: My formal education is a BS in Computer Science from Wright State University, Fairborn, OH. Outside of schools, I’ve taught myself many things ranging from radio electronics to achieving an extra class amateur radio license, to assorted computer languages, to FPGA programming—all from just sitting down and saying, “Let’s learn this.”

NAN: Tell us about your current occupation.

STEVE: I am employed as a Senior Software Engineer at Beijing West Industries, where I develop embedded systems that go under the hood of high-end automobiles. (BWI is the owner of what was once General Motors’s Suspension and Brakes components company.) If your “Service Vehicle Soon” light comes on, I may have written the code behind it.

NAN: Tell us about your technical interests.

STEVE: My technical interests fall into two categories. I like to build systems around new sensing technologies and I build systems to support ham radio.

I never really thought about specific technical interests until I was asked this question. Looking at the Circuit Cellar contests I’ve entered and exploring my parts closet, I discovered that I have an abundance of sensors and sensor systems. When a new sensing device comes out, I often get one, play with it, and then look around for something to do with it. That usually results in an invention of some kind. I’ve analyzed the motion of rodeo bulls and dogs with microelectromechanical (MEMS) accelerometers, tracked eyeball movements with optical sensors, and computed automobile speeds using both GPS and microwave electronics. I don’t know if it is cause or effect, but I was always amazed by the “tricorder” on Star Trek. Do I like sensors because of Scotty and Mr. Spock? Or did I watch Star Trek because of the gadgets? I don’t know.

My love of electronics led me to amateur radio at a young age. I wasn’t as much interested in talking to other people as I was in exploring the technology that enables people to talk. I had a little success building RF devices but found that I had a real knack for digital systems. I’ve used that ability to create satellite tracking controllers, antenna switchers, and computer-to-radio interfaces.

NAN: How long have you been reading Circuit Cellar?

STEVE: I’ve subscribed to Circuit Cellar since Issue 1. I still believe the tagline that said “Inside the Box Still Counts.”

NAN: You’ve written four articles for Circuit Cellar. Some focus on data logging, monitoring, and analysis. For example, your article “Precision Motion-Sensing System Analyzer” (Circuit Cellar 192, 2006) is about a microcontroller-based, motion-sensing system for bull riders. What inspired you to create this system?

STEVE: Several things came together to spark the creation of the “Precision Motion-Sensing System Analyzer,” a.k.a. the BuckyMeter. I had already begun work on a motion-logging system but had no clear goal in mind. Shortly after the logger started working, Circuit Cellar announced its 2005 design contest. I had a short-term goal of entering the contest with my data logger. But what should I log?

My dad provided the suggestion to strap the logger onto the back of a rodeo bull. My parents had become fascinated by the sport of professional bull riding and thought it would be fun to get behind the scenes by doing this science experiment. One of the questions I had when designing the system was: “What kind of maximum G force can I expect to see?” Nobody had an answer, but the doctors responsible for repairing bull riders thought it was an interesting question. They, too, wanted to know that answer. That question opened a few doors to give us access to some bulls. EE Times printed a humorous article about my experience strapping an electronic device on the back of 1,200 lb of angry cow. It was definitely an experience!

The BuckyMeter hardware went through several iterations. In the end, an off-the-shelf Motorola Z-Star evaluation module could be used to instrument the bull with the added bonus of wireless data logging.

The project died out after a trip to instrument competition-grade bulls from American Bucking Bull, Inc. (ABBI). In hindsight, I learned an important lesson about managing customer expectations. I went to Oklahoma on a mission to collect data and try out an engineering prototype. I think the people I met with were expecting to see a polished product. Their impression, after our meeting, was that an electronic scoring aid was too slow and too complicated.

NAN: Another article, “Electronic Data Logging and Analysis: A How-To Guide for Building a Seizure-Monitoring System” (Circuit Cellar 214, 2008), describes an Atmel ATmega32-based electronic monitoring system that enables pet owners and vets to monitor epileptic seizure patterns in dogs. How does the microcontroller factor into the design?

STEVE: My seizure monitor was an offshoot of the rodeo bull motion-sensing system. The original processor had way more power than was needed and it was difficult to hand solder the part. With a working baseline from the BuckyMeter, it was easy to pick a different chip to work with. I had some experience with Atmel AVRs from a previous Circuit Cellar contest, so I looked at its product line. I had a good estimate for RAM/ROM requirements, and I decided it would be nice to have additional SPI channels to interface with the accelerometers. That led to the selection of the ATmega32. It didn’t hurt that another Atmel contest popped up in 2006 when I was in the middle of the design.

I have always wanted to expand my data beyond a single patient to see if my theory held up, so I supplied systems to some other people with epileptic dogs. This required continuous design updates mostly to keep up with outdated parts. Unfortunately, I never got any data back from the systems I gave away. My pet (and science guinea pig) passed away a few years ago, so I don’t have a subject to continue with this project.

NAN: At the end of your article, “Doppler Radar Design” (Circuit Cellar 243, 2010), you note that upgrades to the project (e.g., an enclosure and a portable power supply) could make the system “an easy-to-use mobile device.” Tell us about the design. Did you end up implementing any of those upgrades?

STEVE: Doppler Radar Design has been my most popular project. I get e-mails all the time asking how to reproduce it. As I stated in the article, the RF section is now hard to come by and expensive. Not being an RF engineer, I haven’t been able to recommend replacement parts.

The project started when my dad loaned me the microwave electronics to play with. He had wired them up for two-way ham radio communications. I couldn’t manage to make any radio contact with anybody but myself, so I started looking for other experiments to perform. In one of the experiments, I learned how to make a motion detector. From that, I decided to try to turn the project into a speed radar.

This project took help from a lot of other people because I really didn’t know what I was doing. Some radar discussions on the Internet outlined the basic design for Doppler speed radar, so I followed the suggestions, essentially a transmitter/receiver pair supplied by my borrowed Gunnplexer and a frequency detector (FFT) to show the Doppler shift of the returned signal. Accounting for the radio frequency in use gives you the speed of the reflected target, which in my case was a car.

When I discovered Ramsey Electronics sells a radar kit for $100, I decided that my Doppler radar was really just a science experiment. It was educational for me, but for everyone who contacted me just wanting to have their own radar, the Ramsey option was cheaper, more accurate, and already packaged for portability.

I did get some helpful hints from Alan Rutz at SHF Microwave Parts Company, who suggested something called a dielectric resonator oscillator (DRO) could be used in place of the Gunnplexer I used. The advantage of his approach is that DROs are available and cost about $20. I have not yet been successful with this upgrade.

NAN: The Renesas Electronics RX62N development board is at the heart of your KartTracker’s monitoring system (“KartTracker: A GPS-Based Vehicle Timing & Monitoring System,” Circuit Cellar 259, 2012). Tell us about the design and how the KartTracker functions.


KartTracker: A GPS-Based Vehicle Timing & Monitoring System

STEVE: The KartTracker came about one day when the neighborhood NASCAR fans went out racing karts. We wondered how fast we went, so the local engineer (me) set about finding out.

I started with a GPS receiver and a data logger and drove around the track to see what happened. As it turns out, GPS receivers automatically give you your speed! That was too easy, so I started looking for more features.

The next couple of races I watched, I tried to pay attention to more than just the action and saw that teams were very concerned with lap times. Well, I could time my laps, but that didn’t seem very interesting or complicated enough. Then I saw a qualifying session where the TV showed a continuous real-time comparison between two cars. That seemed cool! If I could build that, I could race myself to see if I was doing better or worse.

So, the KartTracker concept was born. A GPS receiver feeds continuous position data into a Renesas RX62N board. The software continuously compares my time at some location against the last time I was there. It’s like looking at the lap time, but it updates every couple of seconds so you have continuous feedback.

All the timing data is retained so later we can compare times against each other and brag about who went the fastest. I would like to broadcast the times back to the spectators, but that radio is a project for another day.

NAN: You received an Honorable Mention for your 2010 Texas Instruments DesignStellaris Design Contest entry, “Hands-Free USB Mouse.” Tell us about the project and your contest-entry process.

Hands-Free USB Mouse

2010 Texas Instruments DesignStellaris Design Contest Honorable Mention “Hands-Free USB Mouse”

STEVE: My eyePOD hands-free USB Mouse is a head-mounted motion sensor that controls the mouse cursor on a PC. By moving your head, the mouse moves around the screen. You wink your eyes to click the mouse buttons. The goal was to produce a PC interface for someone who couldn’t use a typical mouse, with a secondary goal of teaching me about USB. There are some problems in certain lighting conditions, but overall it works pretty well.

After about a dozen contest entries, I have a bit of a process for creating an entry. I hope I don’t hurt my future chances by sharing my secrets, but since you asked, three things need to line up for me to start a project (contest or otherwise): I need an idea, I need some technology, and I need motivation.

Author James Rollins says, “Don’t ask where the ideas come from.” But, if you have to know, his story ideas come from a box. My contest ideas come from a little red notebook. In reality, we don’t know where the actual ideas come from, but when we get ideas we put them in the box (or book) and make a withdrawal when we need to use an idea.

Part two is that there needs to be a technology that will support the idea. I couldn’t build a rodeo bull monitor until there were cheap accelerometers available. I couldn’t build the KartTracker without a GPS. So, keep a list of technologies you like in your box of ideas.

Finally, you need motivation to execute the project. At work, your boss provides the motivation in the form of a paycheck. At home, you might have a dog that needs help or a neighbor who supplies beer for the answer of how fast his kart is. When I put the three pieces together, I have the starting point for a project. Apply your abilities and start building.

The only biggie after that is time management. Somewhere there is a deadline you need to meet. Do consistent work on your project and prioritize what needs to be done. I have a knack for drawing a line through the critical parts of a project to make sure I have something working when the end is near. You can always go back and improve a working project, but if you have too many half-built features, you have nothing to fall back on when time runs out. A good example is the radio link for the KartTracker. Without GPS and timing software, the project would be nothing. When I had time remaining, I added file I/O and data storage on an SD card. Nice features, but they weren’t necessary to demonstrate the project. The radio link fell by the wayside when entry time came up.

Finally, don’t forget the book report at the end. The judges need to know what you did, so you need to write about it. Who knows? Circuit Cellar might like what you wrote and decide to turn it into an article.

NAN: Have you recently purchased any embedded technology tools to help you with your data logging, monitoring, and analysis projects?

STEVE: My most recent tech purchase was an iPod Touch funded from a recent Circuit Cellar publication. Before you say, “That’s not embedded,” let me explain. I tend to make the user interfaces to my projects simple and to the point. Circuit Cellar contest deadlines don’t lend themselves to creating a new fancy interface for each project. Instead, I would offload debugging, control, and extra features to an external system. I started out using RS-232 serial to a PC. For portability and speed, I moved to a PalmPilot with an infrared data access  (IrDA) interface. A Bluetooth or Wi-Fi interface seems like a logical progression to me. The iPod Touch has these interfaces and it leaves me with a new gadget to play with.

A more embedded acquisition is the Texas Instruments MetaWatch. If you haven’t seen one of these, it’s a stylish digital watch that talks to your smartphone. For the more adventurous, the source code is available so you can add your own features. There must be something great that I can do with a wrist-mounted computer, I just haven’t had the “ah-ha” moment yet.

NAN: Are you currently working on or planning any embedded-design-related projects?

STEVE: I call my current project the SeeingEye for a dog. The blind have used guide dogs since the 16th century. That’s a huge debt man owes his best friend! To help repay that debt, I’m creating a twist on the seeing eye dog by creating a seeing eye for a friend’s vision-impaired dog. Using the sensors and technology robots use for collision avoidance, the SeeingEye will detect obstacles in a dog’s path. The trick seems to be the user interface to convey the collision avoidance information and training the dog to respond correctly to the stimulus. I figure if microchips in robots can learn to avoid walls, then puppy neurons should be able to do the same thing. I still have more work to do to figure out how to get the sensor to stay in place.

SeeingEye board

SeeingEye for dogs, circuit board


SeeingEye for dogs, in “use”

NAN: Do you have any thoughts on the future of embedded technology?

STEVE: As a builder of embedded systems, I am amazed at all of the things we can do with high-speed processors and multiple megabytes of memory. It seems like if we can imagine it, we can build it.

As a user of embedded technologies, it sometimes seems like the engineers are trying to be too clever by stuffing anything they can into the box whether those features are needed or not.

The complexity of some devices has skyrocketed to the point that stability has been affected and users don’t know what features they have or how to use them. We now take for granted a constant stream of software updates to our devices and press reset when it doesn’t work as desired.

Einstein is credited with saying, “Everything should be made as simple as possible, but no simpler.” I’d like to see the industry adopt Einstein’s advice and the “Keep it simple, stupid!” (KISS) principle to help us manage the growing complexities. We’d spend less time serving our devices by trying to make them work and more time being served by our devices as they flawlessly do the work we want done.

CC270: Forward Progress

As you might have noticed, parts of this issue look a bit different than the publication you’re used to reading. You can see a slightly updated layout, some different colors, and a few new sections. We’ve made these changes to reflect where we are today and where we’re taking this magazine in the months to come. It’s all about forward progress. Here are the broad strokes:


We’re planning an exciting layout redesign for 2013. The layout will be modern, clean, and engaging, but its fonts and colors won’t distract you from what you’re reading—professional engineering content. Since the new layout is still an issue or two away, we’re presenting you with this freshened up issue to mark the transition to 2013. We hope you like the changes.


On page 20 you’ll find a new section that will appear frequently in the coming months. The purpose of our client profiles is to shine a light on one company per month and bring you an exclusive offer for useful products or services.


Last month we ran Steve Ciarcia’s final “Priority Interrupt” editorial. This month we’re introducing a new section, “Tech the Future.” The EE/ECE community is on the verge of major breakthroughs in the fields of microcomputing, wireless communication, robotics, and programming. Each month, we’ll use page 80 to present some of the fresh ideas, thought-provoking research projects, and new embedded design-related endeavors from innovators who are working on the groundbreaking technologies of tomorrow.


You’ll soon have Circuit Cellar’s 25th (“CC25”) anniversary issue in your hands or on your PCs or mobile devices. Here are just a few of the exciting topics in the issue: Circuit Cellar in 1988, design/programming tips, engineers’ thoughts on the future of embedded tech, and much more. It’s going to be a classic.

Well, there’s certainly a lot of publishing-related innovation going on at our headquarters. And I know you’re equally busy at your workbenches. Just be sure to schedule some quiet time this month to read the articles in this issue. Perhaps one of our authors will inspire you to take on your first project of the new year. We feature articles on topics ranging from an MCU-based  helicopter controller to open-source hardware to embedded authentication to ’Net-based tools for energy efficiency. Enjoy!

Member Profile: Thomas Struzik

Member Thomas Struzik at his bench.


  • Member Name: Thomas Struzik
  • Location: Houston, TX
  • Education: BSEE, Purdue University
  • Occupation: Software architect
  • Member Status: He has been a subscriber since day one. “I’ve got Issue 1 sitting in a box somewhere,” he said. Thomas adds that he was a BYTE magazine subscriber before Circuit Cellar.
  • Technical Interests: Thomas enjoys automation through embedded technology, robotics, low-level programming, and electronic music generation / enhancement.
  • Most Recent Embedded Tech-Related Purchase: He recently bought a CWAV USBee SX Digital Test Pod and an Atmel AVR Dragon.
  • Current and Recent Projects: Thomas is working on designing an isolated USB power supply for his car.
  • Thoughts on the Future of Embedded Technology: Ever-increasing complexity is becoming a stumbling block for the “average” user. “Few people even realize the technology embedded in everyday items,” he said. “How many people know that brand-new LCD TV they’ve got is actually running Linux under the covers? Fortunately, there seems to be a resurgence of ‘need-to-know how stuff works’ with the whole DIY/maker culture. But even that is still a small island compared to the population in general.”

CC269: Break Through Designer’s Block

Are you experiencing designer’s block? Having a hard time starting a new project? You aren’t alone. After more than 11 months of designing and programming (which invariably involved numerous successes and failures), many engineers are simply spent. But don’t worry. Just like every other year, new projects are just around the corner. Sooner or later you’ll regain your energy and find yourself back in action. Plus, we’re here to give you a boost. The December issue (Circuit Cellar 269) is packed with projects that are sure to inspire your next flurry of innovation.

Turn to page 16 to learn how Dan Karmann built the “EBikeMeter” Atmel ATmega328-P-based bicycle computer. He details the hardware and firmware, as well as the assembly process. The monitoring/logging system can acquire and display data such as Speed/Distance, Power, and Recent Log Files.

The Atmel ATmega328-P-based “EBikeMeter” is mounted on the bike’s handlebar.

Another  interesting project is Joe Pfeiffer’s bell ringer system (p. 26). Although the design is intended for generating sound effects in a theater, you can build a similar system for any number of other uses.

You probably don’t have to be coerced into getting excited about a home control project. Most engineers love them. Check out Scott Weber’s garage door control system (p. 34), which features a MikroElektronika RFid Reader. He built it around a Microchip Technology PIC18F2221.

The reader is connected to a breadboard that reads the data and clock signals. It’s built with two chips—the Microchip 28-pin PIC and the eight-pin DS1487 driver shown above it—to connect it to the network for testing. (Source: S. Weber, CC269)

Once considered a hobby part, Arduino is now implemented in countless innovative ways by professional engineers like Ed Nisley. Read Ed’s article before you start your next Arduino-related project (p. 44). He covers the essential, but often overlooked, topic of the Arduino’s built-in power supply.

A heatsink epoxied atop the linear regulator on this Arduino MEGA board helped reduce the operating temperature to a comfortable level. This is certainly not recommended engineering practice, but it’s an acceptable hack. (Source: E. Nisley, CC269)

Need to extract a signal in a noisy environment? Consider a lock-in amplifier. On page 50, Robert Lacoste describes synchronous detection, which is a useful way to extract a signal.

This month, Bob Japenga continues his series, “Concurrency in Embedded Systems” (p. 58). He covers “the mechanisms to create concurrently in your software through processes and threads.”

On page 64, George Novacek presents the second article in his series, “Product Reliability.” He explains the importance of failure rate data and how to use the information.

Jeff Bachiochi wraps up the issue with a article about using heat to power up electronic devices (p. 68). Fire and a Peltier device can save the day when you need to charge a cell phone!

Set aside time to carefully study the prize-winning projects from the Reneas RL78 Green Energy Challenge (p. 30). Among the noteworthy designs are an electrostatic cleaning robot and a solar energy-harvesting system.

Lastly, I want to take the opportunity to thank Steve Ciarcia for bringing the electrical engineering community 25 years of innovative projects, essential content, and industry insight. Since 1988, he’s devoted himself to the pursuit of EE innovation and publishing excellence, and we’re all better off for it. I encourage you to read Steve’s final “Priority Interrupt” editorial on page 80. I’m sure you’ll agree that there’s no better way to begin the next 25 years of innovation than by taking a moment to understand and celebrate our past. Thanks, Steve.

Pi-Face: A New Raspberry Pi Accessory

Ready for the Pi-Face Digital? What’s that? you ask.

Pi-Face at Electronica 2012 (Source: Elektor.tv)

Pi Interface Digital, or Pi-Face Digital, is a Raspberry Pi accessory board Premier Farnell will begin distributing in early 2013. You can plug it into a Raspberry Pi and start designing immediately. Plus, you can connect sensors to Pi-Face Digital for a variety of purposes, such as temperature- or pressure-monitoring applications.

The following useful information is posted at the University of Manchester’s School of Computer Science site.

Pi-Face Digital is the first of a range of interfaces to allow the Raspberry Pi to control and manipulate the real world. It allows the Raspberry Pi to read switches connected to it – a door sensor or pressure pad perhaps, a microswitch or reed switch, or a hand held button. With appropriate easy to write code, the Raspberry Pi then drives outputs, powering motors, actuator, LEDs, light bulbs or anything you can imagine to respond to the inputs… The hardware provides an easy and consistent programming interface, in Scratch (as shown running on a Raspberry Pi in the photograph) and Python with good observability to promote easy development, and reduce technology barriers.

It will cost approximately €20 to €30. You can register at element14.

Want to see Pi-Face in action? Check it out on Elektor.tv!

CircuitCellar.com is an Elektor International Media publication.

Microcontroller-Based Markov Music Box

Check out the spectrogram for two FM notes produced by FM modulation. Red indicates higher energy at a given time and frequency.

Cornell University senior lecturer Bruce Land had two reasons for developing an Atmel AVR micrcontroller-based music box. One, he wanted to present synthesis/sequencing algorithms to his students. And two, he wanted the challenge of creating an interactive music box. Interactive audio is becoming an increasingly popular topic among engineers and designers, as we recently reported.

Land writes:

Traditional music boxes play one or two tunes very well, but are not very interactive. Put differently, they have a high quality of synthesis, but a fixed-pattern note sequencer and fixed tonal quality. I wanted to build a device which would play an interesting music-like note sequence, which constantly changed and evolved, with settable timbre, tempo, and beat… To synthesize nice sounding musical notes you need to control spectral content of the note, the rise time (attack), fall time (decay), and the change in spectral content during attack and decay.  Also it is nice to have at least two independent musical voices. And all of this has to be done using the modest arithmetic capability of an 8-bit microcontroller.

Land’s students subsequently used the music box for other projects, such as an auto-composing piano, as shown in the following video.

In early 2013 Circuit Cellar will run Land’s in-depth article on the Markov music box project. Stay tuned for more information.

Principles of Embedded System Design (CC 25th Anniversary Preview)

You have an idea an idea for an innovative microcontroller-based design? Once you start start soldering and wiring, you might want to keep an eye on Bob Japenga’s checklist of essential embedded system design principle. His complete list will appear in Circuit Cellar‘s 25th Anniversary issue, which will be available in early 2013. But since many of you will be attempting to complete projects before January 1, we’re giving you a sneak peek.

Japenga writes:

We all know that old adage: “If you don’t have time to do it right the first time, where do you find the time to do it right the second?” But this is the nature of developing robust embedded systems. There are literally thousands of little decisions that we make even in the simplest of projects. How can we minimize repeating mistakes?

So my goal in this article is twofold: to celebrate with Circuit Cellar 25 years of great service to us engineers and to hammer home some of those principles that we so often forget. I will divide the essentials into four categories: general essentials, essentials that exist because things (i.e., us and our designs) fail, essentials about testing, and essentials about memory use.

General Essentials

KISS & No Simpler“Keep it simple stupid (KISS).” How often do I need to hear this? I like the saying about KISS that’s often attributed to Albert Einstein but was actually Roger Session’s paraphrase: “Make things as simple as possible, but no simpler.” I am counting these as our first and second essentials.  Keep it simple is number one and no simpler is the second. I find this an immense challenge. When we are faced with schedule deadlines and tight budgets, it is costly to make a design simple. Some people have a gift at taking a problem and abstracting an elegant and simple solution. I remember giving a design specification to one of my employees a number of years ago when I worked for an aerospace company. After several days he came back with over 20 pages of algorithms and charts defining how the specification should be met in software. I wasn’t smart enough to know why it was too complex, but my gut feeling was: “This is too complex. Make it simpler.” Later, I turned it over to another young man who returned with an elegant two-page algorithm that worked perfectly.

How do we do that? “As simple as possible” can get us in trouble if we make it too simple. For example, just recently we were designing a multi-drop serial interface to be incorporated into a medical device. A strong case could be made for the simplicity of using a single-ended interface. But experience tells us that a differential interface will be more robust in the face of defibrillators and all the various noisy electronic instruments it will to play with. Which meets the KISS principle? The same tough decision comes when you’re trying to decide whether to go with a two-wire or a four-wire interface. Two wires has less cabling, but it’s more complex in the interface and forces single-duplex operation. Again, which meets the principle?

Sometimes the trade-off can come down to what you already have in the house. If you have well-debugged libraries for handling the two-wire 485 protocols, the reduced number of wires reduces the overall system complexity even though the software will in fact be more complex.

Sometimes when dealing with algorithm development, the KISS principle can also present ambiguous alternatives. At times, a straightforward linear programming approach can be many times more lines of code and more complex than an elegant algorithm. But the elegant algorithm may be obscure, difficult to maintain, or take too long to come up with. Therein lies the challenge to Keep It Simple Stupid but No Simpler.

Define the Problem/Create Clear SpecsHaving a clear set of specs is essential to every part of a design. We all know this and we always belly ache about how we don’t have perfect specifications. But get with it. You won’t always have perfect specs from your customer. But it is essential that you make them as good as possible. And in writing. If your customer is willing, keep pushing back and keep writing it down and refining it as you go.

I’ve found that essential for every phase of a project. Whether it is hardware or software, writing out the spec (on the schematic or in the code) is a wonderful act of discipline. Write out the spec for the module. Write out the spec for the algorithm. Write out the spec for the circuit. Writing it out forces you to think it through. End the belly-aching about the lack of good specs. Start creating them.

Don’t Skimp on the ToolsTools are our life blood. If you are a manager and your designers don’t have the best tools, you are wasting your money on their salaries. That said, we are not talking about buying tools you don’t use, tools that don’t pay for themselves, or tools that you can rent more cost effectively. Last week we were discussing a problem where one of our cell modem designs exceeded the limit for the second harmonic in spurious emissions. In talking over the problem with the test lab, I discovered that they had a tool that they brought inside the anechoic chamber that could tell the cell modem to transmit on such and such a frequency at maximum power. Naively, I asked, “Shouldn’t we have such a tool?” Someone responded: “Yes, but they cost almost a million dollars.” Oh. But we found we could rent one for $1,000 a day. So, I am not talking about being unwise with our money.

Many years ago while at the aerospace company, I was recommending an HP64000 system that appeared to be a very powerful tool for our software development team. I wrote up the proposal and presented it to the vice president of engineering. His question has haunted me ever since. “Would you buy it if it were your money?” I said then, and continue to say now, “Get the best tools that will allow you to do the job as quickly as possible. If a 200-man-hour job can be done for 100 hours with a $10,000 instrument, is it worth it. Absolutely.”

Read the DocumentationLast year we had a problem that showed up only after we started making the product in 1,000-piece runs. The problem was that some builds of the system took a very long time to power up. We had built about 10 prototypes, tested the design over thousands of power ups, and it tested just fine (thanks to POC-IT). Then the 1,000-piece run uncovered about a half-dozen units that had variable power-up times—ranging from a few seconds to more than an hour! Replacing the watchdog chip that controlled the RESET line to an ARM9 processor fixed the problem. But why did these half dozen fail? Many hours into the analysis we discovered that the RESET line out of the watchdog chip on the failed units would pulse but stay low for long periods of time. A shot of cold air instantly caused the chip to release the RESET. Was it a faulty chip lot? Nope. Upon a closer read of the documentation, we found that you cannot have a pull-up resister on the RESET line. For years we always had pull-ups on RESET lines. We’d missed that in the documentation.

Like it or not, we have to pour over the documentation of the chips and software library calls we use. We have to digest the content carefully. We cannot rely on what is intuitive.

Finally, and this is much more necessary than in years past, we have to pour over the errata sheets. And we need to do it before we commit the design. A number of years ago, a customer designed a major new product line around an Atmel ARM9. This ARM9 had the capability of directly addressing NOR memory up to 128 MB.  Except for the fact that the errata said that due to a bug it could only address 16 MB.  Ouch! Later we had problems with the I2C bus in the same chip. At times, the bus would lock up and nothing except a power cycle would unlock it. Enter the errata. Under some unmentioned conditions the I2C state machine can lock up. Ouch! In this case, we were able to use a bit-bang algorithm rather than the built-in I2C—but obviously at the cost of money, scheduling, and real time.

If You Can’t Explain it to Mom, It Ain’t ClearThat’s another way to say: “Assume no one reads the user manual.” I recently read a blog post about the City of Boston’s electronic parking meters (http://usabilitylessons.wordpress.com/category/general/). Truly, one wonders who reviewed that user interface. If you want to make robust embedded systems with a user interface, they need to have intuitive interfaces, or you may be surprised at what the user comes up with. This takes time and effort, but it’s well worth it. Try it out on the uninitiated. Engineers are the worst kind of people for testing user interfaces. Try it on kids. My business partner’s one-year-old son found the first bug in our first product.

Be sure to get your hands on the upcoming anniversary issue to learn about the reset of the principles. He covers “Things Fail Essentials,” “Testing Essentials,” “Memory Management Essentials,” and more. Consider using it to create your own design principles checklist that you can keep at your workbench.

Autonomous Mobile Robot (Part 2): Software & Operation

I designed a microcontroller-based mobile robot that can cruise on its own, avoid obstacles, escape from inadvertent collisions, and track a light source. In the first part of this series, I introduced my TOMBOT robot’s hardware. Now I’ll describe its software and how to achieve autonomous robot behavior.

Autonomous Behavior Model Overview
The TOMBOT is a minimalist system with just enough components to demonstrate some simple autonomous behaviors: Cruise, Escape, Avoid, and Home behaviors (see Figure 1). All the behaviors require left and right servos for maneuverability. In general, “Cruise” just keeps the robot in motion in lieu of any stimulus. “Escape” uses the bumper to sense a collision and then 180 spin with reverse. “Avoid” makes use of continuous forward looking IR sensors to veer left or right upon approaching a close obstacle. Finally “Home” utilizes the front optical photocells to provide robot self-guidance to a strong light highly directional source.

Figure 1: High-level autonomous behavior flow

Figure 2 shows more details. The diagram captures the interaction of TOMBOT hardware and software. On the left side of the diagram are the sensors, power sources, and command override (the XBee radio command input). All analog sensor inputs and bumper switches are sampled (every 100 ms automatically) during the Microchip Technology PIC32 Timer 1 interrupt. The bumper left and right switches undergo debounce using 100 ms as a timer increment. The analog sensors inputs are digitized using the PIC32’s 10-bit ADC. Each sensor is assigned its own ADC channel input. The collected data is averaged in some cases and then made available for use by the different behaviors. Processing other than averaging is done within the behavior itself.

Figure 2: Detailed TOMBOT autonomous model

All behaviors are implemented as state machines. If a behavior requests motor control, it will be internally arbitrated against all other behaviors before motor action is taken. Escape has the highest priority (the power behavior is not yet implemented) and will dominate with its state machine over all the other behaviors. If escape is not active, then avoid will dominate as a result of its IR detectors are sensing an object in front of the TOMBOT less than 8″ away. If escape and avoid are not active, then home will overtake robot steering to sense track a light source that is immediately in front of TOMBOT. Finally cruise assumes command, and takes the TOMBOT in a forward direction temporarily.

A received command from the XBee RF module can stop and start autonomous operation remotely. This is very handy for system debugging. Complete values of all sensors and battery power can be viewed on graphics display using remote command, with LEDs and buzzer, announcing remote command acceptance and execution.

Currently, the green LED is used to signal that the TOMBOT is ready to accept a command. Red is used to indicate that the TOMBOT is executing a command. The buzzer indicates that the remote command has been completed coincident with the red led turning on.

With behavior programming, there are a lot of considerations. For successful autonomous operation, calibration of the photocells and IR sensors and servos is required. The good news is that each of these behaviors can be isolated (selectively comment out prior to compile time what is not needed), so that phenomena can be isolated and the proper calibrations made. We will discuss this as we get a little bit deeper into the library API, but in general, behavior modeling itself does not require accurate modeling and is fairly robust under less than ideal conditions.

TOMBOT Software Library
The TOMBOT robot library is modular. Some experience with C programming is required to use it (see Figure 3).

Figure 3: TOMBOT Library

The entire library is written using Microchip’s PIC32 C compiler. Both the compiler and Microchip’s 8.xx IDE are available as free downloads at www.microchip.com. The overall library structure is shown. At a highest level library has three main sections: Motor, I/O and Behavior. We cover these areas in some detail.

TOMBOT Motor Library
All functions controlling the servos’ (left and right wheel) operation is contained in this part of the library (see Listing1 Motor.h). In addition the Microchip PIC32 peripheral library is also used. Motor initialization is required before any other library functions. Motor initialization starts up both left and right servo in idle position using PIC32 PWM peripherals OC3 and OC4 and the dual Timer34 (32 bits) for period setting. C Define statements are used to set pulse period and duty cycle for both left and right wheels. These defines provide PWM varies from 1 to 2 ms for different speed CCW rotation over a 20-ms period and from 1.5 ms to 1 ms for CC rotation.

Listing 1: All functions controlling the servos are in this part of the library.

V_LEFT and V_RIGHT (velocity left and right) use the PIC32 peripheral library function to set duty cycle. The other motor functions, in turn, use V_LEFT and V_RIGHT with the define statements. See FORWARD and BACKWARD functions as an example (see Listing 2).

Listing 2: Motor function code examples

In idle setting both PWM set to 1-ms center positions should cause the servos not to turn. A servo calibration process is required to ensure center position does not result in any rotation. For the servos we have a set screw that can be used to adjust motor idle to no spin activity with a small Philips screwdriver.

TOMBOT I/O Library

This is a collection of different low level library functions. Let’s deal with these by examining their files and describing the function set starting with timer (see Listing 3). It uses Timer45 combination (full 32 bits) for precision timer for behaviors. The C defines statements set the different time values. The routine is noninterrupt at this time and simply waits on timer timeout to return.

Listing 3: Low-level library functions

The next I/O library function is ADC. There are a total of five analog inputs all defined below. Each sensor definition corresponds to an integer (32-bit number) designating the specific input channel to which a sensor is connected. The five are: Right IR, Left IR, Battery, Left Photo Cell, Right Photo Cell.

The initialization function initializes the ADC peripheral for the specific channel. The read function performs a 10-bit ADC conversion and returns the result. To faciliate operation across the five sensors we use SCAN_SENSORS function. This does an initialization and conversion of each sensor in turn. The results are placed in global memory where the behavior functions can access . SCAN_SENOR also performs a running average of the last eight samples of photo cell left and right (see Listing 4).

Listing 4: SCAN_SENOR also performs a running average of the last eight samples

The next I/O library function is Graphics (see Listing 5). TOMBOT uses a 102 × 64 monchrome graphics display module that has both red and green LED backlights. There are also red and green LEDs on the module that are independently controlled. The module is driven by the PIC32 SPI2 interface and has several control lines CS –chip select, A0 –command /data.

Listing 5: The Graphics I/O library function

The Graphics display relies on the use of an 8 × 8 font stored in as a project file for character generation. Within the library there are also cursor position macros, functions to write characters or text strings, and functions to draw 32 × 32 bit maps. The library graphic primitives are shown for intialization, module control, and writing to the module. The library writes to a RAM Vmap memory area. And then from this RAM area the screen is updated using dumpVmap function. The LED and backlight controls included within these graphics library.

The next part of I/O library function is delay (see Listing 6). It is just a series of different software delays that can be used by other library function. They were only included because of legacy use with the graphics library.

Listing 6: Series of different software delays

The next I/O library function is UART-XBEE (see Listing 7). This is the serial driver to configure and transfer data through the XBee radio on the robot side. The library is fairly straightforward. It has an initialize function to set up the UART1B for 9600 8N1, transmit and receive.

Listing 7: XBee library functions

Transmission is done one character at a time. Reception is done via interrupt service routine, where the received character is retrieved and a semaphore flag is set. For this communication, I use a Sparkfun XBee Dongle configured through USB as a COM port and then run HyperTerminal or an equivalent application on PC. The default setting for XBee is all that is required (see Photo 1).

Photo 1: XBee PC to TOMBOT communications

The next I/O library function is buzzer (see Listing 8). It uses a simple digital output (Port F bit 1) to control a buzzer. The functions are initializing buzzer control and then the on/off buzzer.

Listing 8: The functions initialize buzzer control

TOMBOT Behavior Library
The Behavior library is the heart of the autonomous TOMBOT and where integrated behavior happens. All of these behaviors require the use of left and right servos for autonomous maneuverability. Each behavior is a finite state machine that interacts with the environment (every 0.1 s). All behaviors have a designated priority relative to the wheel operation. These priorities are resolved by the arbiter for final wheel activation. Listing 9 shows the API for the entire Behavior Library.

Listing 9: The API for the entire behavior library

Let’s briefly cover the specifics.

  • “Cruise” just keeps the robot in motion in lieu of any stimulus.
  • “Escape” uses the bumper to sense a collision and then 180° spin with reverse.
  • “Avoid” makes use of continuous forward looking IR sensors to veer left or right upon approaching a close obstacle.
  • “Home” utilizes the front optical photocells to provide robot self-guidance to a strong light highly directional source.
  • “Remote operation” allows for the TOMBOT to respond to the PC via XBee communications to enter/exit autonomous mode, report status, or execute a predetermined motion scenario (i.e., Spin X times, run back and forth X times, etc.).
  • “Dump” is an internal function that is used within Remote.
  • “Arbiter” is an internal function that is an intrinsic part of the behavior library that resolves different behavior priorities for wheel activation.

Here’s an example of the Main function-invoking different Behavior using API (see Listing 10). Note that this is part of a main loop. Behaviors can be called within a main loop or “Stacked Up”. You can remove or stack up behaviors as you choose ( simply comment out what you don’t need and recompile). Keep in mind that remote is a way for a remote operator to control operation or view status.

Listing 10: TOMBOT API Example

Let’s now examine the detailed state machine associated with each behavior to gain a better understanding of behavior operation (see Listing 11).

Listing 11:The TOMBOT’s arbiter

The arbiter is simple for TOMBOT. It is a fixed arbiter. If either during escape or avoid, it abdicates to those behaviors and lets them resolve motor control internally. Home or cruise motor control requests are handled directly by the arbiter (see Listing 12).

Listing 12: Home behavior

Home is still being debugged and is not yet a final product. The goal is for the TOMBOT during Home is to steer the robot toward a strong light source when not engaged in higher priority behaviors.

The Cruise behavior sets motor to forward operation for one second if no other higher priority behaviors are active (see Listing 13).

Listing 13: Cruise behavior

The Escape behavior tests the bumper switch state to determine if a bump is detected (see Listing 14). Once detected it runs through a series of states. The first is an immediate backup, and then it turns around and moves away from obstacle.

Listing 14: Escape behavior

This function is a response to the remote C or capture command that formats and dumps (see Listing 15) to the graphics display The IR left and right, Photo left and Right, and battery in floating point format.

Listing 15: The dump function

This behavior uses the IR sensors and determines if an object is within 8″ of the front of TOMBOT (see Listing 16).

Listing 16: Avoid behavior

If both sensors detect a target within 8″ then it just turns around and moves away (pretty much like escape). If only the right sensor detects an object in range spins away from right side else if on left spins away on left side (see Listing 17).

Listing 17: Remote part 1

Remote behavior is fairly comprehensive (see Listing 18). There are 14 different cases. Each case is driven by a different XBee received radio character. Once a character is received the red LED is turned on. Once the behavior is complete, the red LED is turned off and a buzzer is sounded.

Listing 18: Remote part 2

The first case toggles Autonomous mode on and off. The other 13 are prescribed actions. Seven of these 13 were written to demonstrate TOMBOT mobile agility with multiple spins, back and forwards. The final six of the 13 are standard single step debug like stop, backward, and capture. Capture dumps all sensor output to the display screen (see Table 1).

Table 1: TOMBOT remote commands

Early Findings & Implementation
Implementation always presents a choice. In my particular case, I was interested in rapid development. At that time, I selected to using non interrupt code and just have linear flow of code for easy debug. This amounts to “blocking code.” Block code is used throughout the behavior implementation and causes the robot to be nonresponsive when blocking occurs. All blocking is identified when timeout functions occur. Here the robot is “blind” to outside environmental conditions. Using a real-time operating system (e.g., Free RTOS) to eliminate this problem is recommended.

The TOMBOT also uses photocells for homing. These sensitive devices have different responses and need to be calibrated to ensure correct response. A photocell calibration is needed within the baseline and used prior to operation.


The TOMBOT was successfully demoed to a large first-grade class in southern California as part of a Science, Technology, Engineering and Mathematics (STEM) program. The main behaviors were limited to Remote, Avoid, and Escape. With autonomous operation off, the robot demonstrated mobility and maneuverability. With autonomous operation on, the robot could interact with a student to demo avoid and escape behavior.

Tom Kibalo holds a BSEE from City College of New York and an MSEE from the University of Maryland. He as 39 years of engineering experience with a number of companies in the Washington, DC area. Tom is an adjunct EE facility member for local community college, and he is president of Kibacorp, a Microchip Design Partner.

From the IBM PC AT to AVRs & Arduinos (CC 25th Anniversary Preview)

During the last 25 years, hundreds of the world’s most brilliant electrical engineers and embedded developers have published articles in Circuit Cellar magazine. But only a choice few had the skill, focus, creativity, and stamina to consistently publish six or more articles per year. Ed Nisley is a member of that select group. Since Issue 1, Nisley has covered topics ranging from a video hand scanner project to X10 powerline control to Arduino-based designs to crystal characterization.

In the upcoming Circuit Cellar 25th Anniversary Issue—which is slated for publication in early 2013—Nisley describes some of his most memorable projects, such as his hand Scanner design from Issue #1. He writes:

The cable in the upper-left corner went to the serial port of my Genuine IBM PC AT. The hand-wired circuit board in front came from an earlier project: an 8031-based video digitizer that captured single frames and produced, believe it or not, RS-232 serial data. It wasn’t fast, but it worked surprisingly well and, best of all, the board was relatively inexpensive. Having built the board and written the firmware, I modified it to output compressed data from hand images, then wrote a PC program to display the results.

Combining a TV camera, a prototype 8031-based video digitizer, and an IBM PC with custom firmware and software produced a digital hand scanner for Circuit Cellar Issue 1. The aluminum case came from an external 8″ floppy drive!

The robust aluminum case originally housed an external 8″ floppy drive for one of my earlier DIY “home computers” (they sure don’t make ‘em like they used to!) and I assembled the rest of the hardware in my shop. With hardware and software in hand, I hauled everything to Circuit Cellar Galactic HQ for a demo.

Some of the work Nisley details is much more modern. For instance, the photo below shows the Arduino microcontroller boards he has been using in many of his recent projects. Nisley writes:

The processors, from the Atmel AVR microcontroller family, date to the mid-1990s, with a compiler-friendly architecture producing good performance with high-level languages. Barely more than breakout boards wrapped around the microcontrollers, Arduinos provide a convenient way to mount and wire to the microcontroller chips. The hardware may be too expensive to incorporate in a product, but it’s ideal for prototypes and demonstrations.

The Arduino microcontroller project provides a convenient basis for small-scale projects like this NiMH cell tester. Simple interconnections work well with low-speed signals and lowcurrent hardware, but analog gotchas always lie in wait.

Even better, a single person can still comprehend all of a project’s hardware and software, if only because the projects tend to be human scaled. The Arduino’s open-source licensing model fits well with my column’s readily available hardware and firmware: you can reproduce everything from scratch, then extend it to suit your needs.

Circuit Cellar’s Circuit Cellar 25th Anniversary Issue will be available in early 2013. Stay tuned for more updates on the issue’s content.