Ask Hackaday Answered: The Tale Of The Top-Octave Generator

We got a question from [DC Darsen], who apparently has a broken electronic organ from the mid-70s that needs a new top-octave generator. A top-octave generator is essentially an IC with twelve or thirteen logic counters or dividers on-board that produces an octave’s worth of notes for the cheesy organ in question, and then a string of divide-by-two logic counters divide these down to cover the rest of the keyboard. With the sound board making every pitch all the time, the keyboard is just a simple set of switches that let the sound through or not. Easy-peasy, as long as you have a working TOG.

I bravely, and/or naïvely, said that I could whip one up on an AVR-based Arduino, tried, and failed. The timing requirements were just too tight for the obvious approach, so I turned it over to the Hackaday community because I had this nagging feeling that surely someone could rise to the challenge.

The community delivered! Or, particularly, [Ag Primatic]. With a clever approach to the problem, some assembly language programming, and an optional Arduino crystalectomy, [AP]’s solution is rock-solid and glitch-free, and you could build one right now if you wanted to. We expect a proliferation of cheesy synth sounds will result. This is some tight code. Hat tip!

Squeezing Cycles Out of a Microcontroller

Let’s take a look at [AP]’s code. The approach that [AP] used is tremendously useful whenever you have a microcontroller that has to do many things at once, on a rigid schedule, and there’s not enough CPU time between the smallest time increments to do much. Maybe you’d like to control twelve servo motors with no glitching? Or drive many LEDs with binary code modulation instead of primitive pulse-width modulation? Then you’re going to want to read on.

There are two additional tricks that [AP] uses: one to fake cycles with a non-integer number of counts, and one to make the AVR’s ISR timing absolutely jitter-free. Finally, [Ag] ended up writing everything in AVR assembly language to make the timing work out, but was nice enough to also include a C listing. So if you’d like to get your feet wet with assembly, this is a good start.

In short, if you’re doing anything with hard timing requirements on limited microcontroller resources, especially an AVR, read on!

Continue reading “Ask Hackaday Answered: The Tale Of The Top-Octave Generator”

The Square-Inch Project Rides Again!

Want to play a game? Your challenge is to do something incredible with a printed circuit board that measures no more than one inch by one inch. It’s The Return of the One Square Inch Project and it’s going to be amazing!

We can’t believe that it’s been three years! The original One Square Inch Project was a contest dreamt up by Hackaday.io user [alpha_ninja] back in 2015, and we thought it was such a great idea that we ponied up some prizes. The entries were, frankly, the best we’ve ever seen. So we’re doing it again!

Last time around, the size constraint focused the minds and brought out the creativity in some of the best and brightest of Hackaday.io. What functionality or simply amusement can you pack into a square PCB that’s just a tad over 25 mm on a side? We’d like to see.

We’ll be featuring entries throughout the contest. We think geek ‘cred is the best reward but if you want something more to sweeten the pot here you go:

  • Grand Prize:

    • $500 Cash!
  • Four Top Entries Win Tindie Gift Certificates:

    • Best Project – $100
    • Best Artistic PCB Design – $100
    • Best Project Documentation – $100
    • Best Social Media Picture or Video – $100
  • Five Runner-Up Entries:

    • $100 OSH Park gift cards
Quadcopter in One Inch

Want some inspiration? Last time the winner was a quadcopter in one square inch, but there were tons of useful and amusing projects crammed into tight quarters, and many of them transcend their constraints. There were not one but two hi-fi sound cards: one for your laptop’s USB port and one for your microcontroller projects that is now officially supported by the Teensy Audio Library. Need a MPPT power converter for a small solar project? How about a plug-load meter that fits on a US mains plug or an I2C to WS2818 converter to make blinking easier?

There were breakout boards for nearly every imaginable chip, a radio downconverter from our own [Jenny List], and a great magnetic rotary encoder design. Key Pass, an Arduino in the size of a DIP-8, and of course a bat detector, a bubble display volt meter, a smart watch, and a capacitive touch wheel.

It’s been three years, and parts have gotten cheaper, smaller, and more capable. What’s newly feasible in a square inch that wasn’t way back in 2015? Show us what you got.

CortexProg Is A Real ARM-Twister

We’ve got a small box of microcontroller programmers on our desktop. AVR, PIC, and ARM, or at least the STMicro version of ARM. Why? Some program faster, some debug better, some have nicer cables, and others, well, we’re just sentimental about. Don’t judge.

[Dmitry Grinberg], on the other hand, is searching for the One Ring. Or at least the One Ring for ARM microcontrollers. You see, while all ARM chips have the same core, and thus the same SWD debugging interface, they all write to flash differently. So if you do ARM development with offerings from different chip vendors, you need to have a box full of programmers or shell out for an expensive J-Link. Until now.

[Dmitry] keeps his options open by loading up the flash-specific portion of the code as a plugin, which lets the programmer figure out what chip it’s dealing with and then lookup the appropriate block size and flash memory procedures. One Ring. He also implements a fast printf-style debugging aid that he calls “ZeroWire Trace” that we’d like to hear more about. Programming and debugging are scriptable in Lua, and it can do batch programming based on reading chip IDs.

You can build your own CortexProg from an ATtiny85, two diodes, and two current-limiting resistors: the standard V-USB setup. The downside of the DIY? Slow upload speed, but at least it’ll get you going. He’s also developed a number of fancier versions that improve on this. Version four of the hardware is just now up on Kickstarter, if you’re interested.

If you’re just using one vendor’s chips or don’t mind having a drawer full of programmers, you might also look into the Black Magic Probe. It embeds a GDB server in the debugger itself, which is both a cool trick and the reason that you have to re-flash the programmer to work with a different vendor’s chips. Since the BMP firmware is open, you can make your own for the cost of a sacrificial ST-Link clone, about $4.

On the other hand, if you want a programmer that works across chip families, is scriptable, and can do batch uploads, CortexProg looks like a caviar programmer on a fish-bait budget. We’re going to try one out soon.

Oh and if you think [Dmitry Grinberg] sounds familiar, you might like his sweet Dreamcast VRU hack, his investigations into the Cypress PSOCs, or his epic AVR-based Linux machine.

SPIDriver Shows You What’s Going On

When you’re debugging two bits of electronics talking SPI to each other, there’s a lot that can go sideways. Starting from the ground up, the signals can be wrong: data not synced with clocks right, or phase inverted. On top of that, the actual data sent needs to make sense to the receiving device. Are you sending the right commands?

When nothing’s working, you’re fighting simultaneously on these two fronts and you might need different tools to debug each. An oscilloscope works great at the physical layer, while something like a Bus Pirate or fancier logic analyzer works better at the data layer because it can do parsing for you. [James Bowman]’s SPIDriver looks to us like a Bus Pirate with a screen — giving you a fighting chance on both fronts.

SPIDriver also has a couple more tricks up its sleeve: a voltage and current monitor for the device under test, so you don’t even have to break out your multimeter when you’re experiencing random resets. We asked [James] if these additions had a sad history behind them. He included this XKCD.

Everything about SPIDriver is open, so you can check out the hardware design, browse the code, and modify any and all of it to your taste. And speaking of open, [James] is also the man behind the Gameduino and an amazing FPGA Forth soft-CPU.

It’s fully crowd-funded, but it closes in a couple of days so if you want one, get on it soon.

And if you want to learn more about SPI debugging, we’ve written up a crash-course. With the gear and the know-how, you at least stand a fighting chance.

Fatalities Vs False Positives: The Lessons From The Tesla And Uber Crashes

In one bad week in March, two people were indirectly killed by automated driving systems. A Tesla vehicle drove into a barrier, killing its driver, and an Uber vehicle hit and killed a pedestrian crossing the street. The National Transportation Safety Board’s preliminary reports on both accidents came out recently, and these bring us as close as we’re going to get to a definitive view of what actually happened. What can we learn from these two crashes?

There is one outstanding factor that makes these two crashes look different on the surface: Tesla’s algorithm misidentified a lane split and actively accelerated into the barrier, while the Uber system eventually correctly identified the cyclist crossing the street and probably had time to stop, but it was disabled. You might say that if the Tesla driver died from trusting the system too much, the Uber fatality arose from trusting the system too little.

But you’d be wrong. The forward-facing radar in the Tesla should have prevented the accident by seeing the barrier and slamming on the brakes, but the Tesla algorithm places more weight on the cameras than the radar. Why? For exactly the same reason that the Uber emergency-braking system was turned off: there are “too many” false positives and the result is that far too often the cars brake needlessly under normal driving circumstances.

The crux of the self-driving at the moment is precisely figuring out when to slam on the brakes and when not. Brake too often, and the passengers are annoyed or the car gets rear-ended. Brake too infrequently, and the consequences can be worse. Indeed, this is the central problem of autonomous vehicle safety, and neither Tesla nor Uber have it figured out yet.

Continue reading “Fatalities Vs False Positives: The Lessons From The Tesla And Uber Crashes”

Frozen Rat Kidney Shipping Container

The biggest allure of 3D printing, to us at least, is the ability to make hyper-personalized objects that would otherwise fall through the cracks of our mass-market economy. Take, for instance, the Frozen Rat Kidney Shipping Container, or maybe some of the less bizarro applications in the US National Institute of Health’s 3D Print Exchange.

The Exchange is dominated, at least in terms of sheer numbers, by 3D models of proteins and other biochemical structures. But there are two sections that will appeal to the hacker in you: prosthetics and lab equipment. Indeed, we were sent there after finding a nice model of a tray-agitator that we wanted to use for PCB etching. We haven’t printed one yet, but check out this flexible micropositioner.

While it’s nowhere near as comprehensive a resource as some other 3D printing model sites, the focus on 3D printing for science labs should really help those who have that particular itch to find exactly the right scratcher. Or a tailor-made flexible container for slicing frozen rat kidneys. Whatever you’re into. We don’t judge.

Man with skull image: [jaqtikkun]

DIY Coil Winding Machine Counts The Hacky Way

“Wait, was that 423 or 424?” When you’re stuck winding a transformer or coil that has more than a few hundred turns, you’re going to want to spend some time on a winding jig. This video, embedded below, displays a simple but sufficient machine — with a few twists.

The first elaboration is the addition of a shuttle that moves back and forth in sync with the main spindle to lay the windings down nice and smooth. Here, it’s tremendously simple — a piece of threaded rod and a set of interchangeable wheels that are driven by a big o-ring belt. We love the low-tech solution of simply adding a twist into the belt to swap directions. We would have way overthought the mechanism.

But then the hack is the digital counter made out of an old calculator. We’ve seen this before, of course, but here’s a great real-world application.

Thanks [Jānis] for the tip!

Continue reading “DIY Coil Winding Machine Counts The Hacky Way”