General Purpose I/O: How To Get More

The first program anyone writes for a microcontroller is the blinking LED which involves toggling a general-purpose input/output (GPIO) on and off. Consequently, the same GPIO can be used to read digital bits as well. A traditional microcontroller like the 8051 is available in DIP packages ranging from 20 pins to 40 pins. Some trade the number of GPIOs for compactness while other devices offer a larger number of GPIOs at the cost of complexity in fitting the part into your design. In this article, we take a quick look at applications that require a larger number of GPIOs and traditional solutions for the problem.

A GPIO is a generic pin on an integrated circuit or computer board whose behavior, including whether it is an input or output pin, is controllable by the user at runtime. See the internal diagram of the GPIO circuit for the ATmega328 for reference.

Simply put, each GPIO has a latch connected to a drive circuit with transistors for the output part and another latch for the input part. In the case of the ATmega328, there is a direction register as well, whereas, in the case of the 8051, the output register serves as the direction register where writing a 1 to it sets it in output mode.

The important thing to note here is that since all the circuits are on the same piece of silicon, the operations are relatively fast. Having all the latches and registers on the same bus means it takes just one instruction to write or read a byte from any GPIO register.
Continue reading “General Purpose I/O: How To Get More”

It’s UNIX. On A Microcontroller.

It’s difficult to convey in an era when a UNIX-like operating system sits in your pocket, how there was once a time when the mere word was enough to convey an aura of immense computing power. If you ran UNIX, your computer probably filled a room, and you used it for Serious Stuff rather than just checking your Twitter feed. UNIX machines may still perform high-end tasks, but Moore’s Law has in the intervening years delivered upon its promise, and your phone with its UNIX-like OS is far more powerful than that room-sized minicomputer of the 1970s. A single chip for a few cents can do that job, which begs the question: just how little do we need to run UNIX today? It’s something [Joerg Wolfram] could advise you upon, because he’s got a functional UNIX running on a microcontroller.

Of course, the UNIX in question is not exactly the same as the one you’d find on a supercomputer, either in the 1970s or now. Mini UNIX is a minimalist version of the operating system developed by [Heinz Lycklama] at Bell Labs four decades ago. It gives you a complete UNIX V6 system for the DEC PDP-11, but which needs only 56K of RAM, and no MMU. Emulating a PDP-11 on an STM32 microcontroller allows it to run happily, and while it’s not the most minimalist of microcontrollers it’s still a pretty cheap part upon which to run UNIX.

It’s doubtful whether a 1970s version of an operating system on a commodity microcontroller will take the world by storm, but that’s hardly the point of such a neat hack. It’s certainly not the first time we’ve seen similar work, though this PIC32 offering has a little more in the way of resources to offer.

Header image: Golonlutoj [CC BY-SA 3.0].

Ask Hackaday: How Do You DIY A Top-Octave Generator?

One of the great joys of Hackaday are the truly oddball requests that we sometimes get over the tip line. Case in point: [DC Darsen] wrote in with a busted 1970s organ in need of a new top-octave generator, and wondered if we could help. He had found a complicated but promising circuit online, and was wondering if there was anything simpler. I replied “I should be able to get that done with a single Arduino” and proceeded to prove myself entirely wrong in short order.

So we’re passing the buck on to you, dear Hackaday reader. Can you help [DC Darsen] repair his organ with a minimum amount of expenditure and hassle? All we need to do is produce twelve, or maybe thirteen, differently pitched square waves simultaneously.

Continue reading “Ask Hackaday: How Do You DIY A Top-Octave Generator?”

Investigating The Tiny Salvaged UPS From A Lightbulb

Recently I had the opportunity to do a teardown of a battery-backed LED bulb, and found some interesting details on how the device operated. Essentially, the bulb contained a low voltage DC uninterruptible power supply that would automatically switch between AC power and internal battery as needed. The implications of this seemed pretty exciting. For around $12 at big box retailers, this little bulb could be a cheap and convenient solution for providing fault tolerant power to microcontrollers and other low-power devices.

The teardown was a runaway success, with quite a bit of discussion of the UPS idea specifically. Some people hated it, others loved it. But as we’ve come to expect from Hackaday readers, the comments from both sides of the aisle contained keen observations and invaluable real-world experience. From the safety of the device to the accuracy of the manufacturer’s claims, it seems like every element of the product was addressed.

I had ended the teardown with a promise that I’d continue experimenting with the tiny salvaged UPS, but even if I hadn’t, with so much feedback it seemed revisiting the subject was all but a necessity. It this little UPS really viable? Is it too dangerous to safely implement in your project? Will the thing just blow up?

So with your comments as a guide, and free of the somewhat restrictive teardown format, I set out to conduct a more thorough investigation of this little circuit that caused so much debate last month. It’s not all good news, but it’s not in the trash either. Not yet, anyway.

Continue reading “Investigating The Tiny Salvaged UPS From A Lightbulb”

The Pros And Cons Of Microcontrollers For Boost Converters

It never fails — we post a somewhat simple project using a microcontroller and someone points out that it could have been accomplished better with a 555 timer or discrete transistors or even a couple of vacuum tubes. We welcome the critiques, of course; after all, thoughtful feedback is the point of the comment section. Sometimes the anti-Arduino crowd has a point, but as [Great Scott!] demonstrates with this microcontroller-less boost converter, other times it just makes sense to code your way out of a problem.

Built mainly as a comeback to naysayers on his original boost-converter circuit, which relied on an ATtiny85, [Great Scott!] had to go to considerable lengths to recreate what he did with ease using a microcontroller. He started with a quick demo using a MOSFET driver and a PWM signal from a function generator, which does the job of boosting the voltage, but lacks the feedback needed to control for varying loads.

Ironically relying on a block diagram for a commercial boost controller chip, which is probably the “right” tool for the job he put together the final circuit from a largish handful of components. Two op amps form the oscillator, another is used as a differential amp to monitor the output voltage, and the last one is a used as a comparator to create the PWM signal to control the MOSFET. It works, to be sure, but at the cost of a lot of effort, expense, and perf board real estate. What’s worse, there’s no simple path to adding functionality, like there would be for a microcontroller-based design.

Of course there are circuits where microcontrollers make no sense, but [Great Scott!] makes a good case for boost converters not being one of them if you insist on DIYing. If you’re behind on the basics of DC-DC converters, fear not — we’ve covered that before.

Continue reading “The Pros And Cons Of Microcontrollers For Boost Converters”

Optocouplers: Defending Your Microcontroller, MIDI, And A Hot Tip For Speed

Deep in the heart of your latest project lies a little silicon brain. Much like the brain inside your own bone-plated noggin, your microcontroller needs protection from the outside world from time to time. When it comes to isolating your microcontroller’s sensitive little pins from high voltages, ground loops, or general noise, nothing beats an optocoupler. And while simple on-off control of a device through an optocoupler can be as simple as hooking up an LED, they are not perfect digital devices.

But first a step back. What is an optocoupler anyway? The prototype is an LED and a light-sensitive transistor stuck together in a lightproof case. But there are many choices for the receiver side: photodiodes, BJT phototransistors, MOSFETs, photo-triacs, photo-Darlingtons, and more.

So while implementation details vary, the crux is that your microcontroller turns on an LED, and it’s the light from that LED that activates the other side of the circuit. The only connection between the LED side and the transistor side is non-electrical — light across a small gap — and that provides the rock-solid, one-way isolation.

Continue reading “Optocouplers: Defending Your Microcontroller, MIDI, And A Hot Tip For Speed”

Morse Code Blinking Jewelry

With the size of electronic parts and batteries these days, very small items are obviously becoming more and more viable. [Yann Guidon] has made some awesome pieces of LED jewelry using a minimal number of surface mount parts and a small lithium-ion battery. To make the jewelry stand out a bit, other than just blinking on and off, these LEDs blink a short message in Morse code.

This is an update and open sourcing of some work that [Yann] did a few years ago, and the iterations have resulted in a smaller design. But the main part of the latest version is the addition of the Morse code blinking using a small microcontroller. The microcontroller [Yann] used is the SMD version of the PIC10F200, a small, 8 pin PIC microcontroller. This, a resistor and a metal clip are soldered to pads on a Luxeon Star LED.  The LEDs are undervolted so they’re not too bright, so the heat sink isn’t really needed, but it’s a good size for the components. Because the LEDs don’t generation much heat, the back of the aluminum frame that the LED is on is carved out a bit so that the small lithium-ion battery can go there.

The final component is the code itself, and [Yann] has released it as an assembly file. An associated text file contains the text of the message that you want the earrings to blink. The text file can contain up to 190 bytes. A shell script converts the text to a file that can be included in the asm file. After that script is run, assemble the code and flash it to the PIC and you’re done!

We’ve seen a couple of other LED jewelry projects done, including this LED engagement ring, and these tiny light-up earrings. You can see video of [Yann]’s project in the video below:
Continue reading “Morse Code Blinking Jewelry”