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”

FCC Filing Reveals Tasty Hardware McSecrets

If you’ve visited a McDonald’s recently, you might have noticed something of a tonal shift. Rather than relying on angsty human teenagers to take customer orders, an increasing number of McDonald’s locations are now using self-serve kiosks. You walk up, enter your order on a giant touch screen, and then take an electronic marker with you to an open table. In mere minutes your tray of nutritious delicious cheap food is brought to you by… well that’s still probably going to be an angsty teenager.

Thanks to a recent FCC filing pointed out to us by an anonymous tipster, we now know what kind of tech Ronald has packed into the electronic table markers (referred to as “tents” in McDonald’s parlance). It turns out they are Bluetooth Low Energy beacons powered by the Nordic nRF52832 chipset, and include some unexpected features such as an accelerometer to detect falls.

The Nordic nRF52832 features a 32-bit ARM Cortex M4F processor at 64 MHz with 512 KB flash and 64 KB SRAM. Quite a bit of punch for a table marker. Incidentally, this is the same chip used in the Adafruit Feather nRF52 Pro, so there’s already an easily obtainable development toolchain.

A image of the backside of the PCB shows a wealth of labeled test points, and we imagine figuring out how to get one of these table markers doing your own bidding wouldn’t be too difficult. Not that we condone you swiping one of these things along with your Quarter Pounder with Cheese. Though we are curious to know just why they need so much hardware to indicate which table to take a particular order to; it seems the number printed on the body of the device would be enough to do that.

This isn’t the first time we’ve taken a peek behind the Golden Arches. From reverse engineering their famous fries to hacking the toys they give out with Happy Meals, there’s more to do at the local McDonald’s than get thrown out of the ball pit again.

Turning Everything Into A Tap Controller

Our entire life is staring at glowing rectangles, and all our surroundings are hard, flat surfaces. [Ben] had the idea to turn those flat surfaces into a generic tap interface controller, and his project for the Hackaday Prize might just do that.

Some of the prior art that went into this project includes Ping Pong Plus Plus, an augmented-reality-ish implementation of ping pong that puts projected light wherever a ping pong ball hits the table. The game does this by mounting piezos to the bottom of a table and just a slight bit of math to determine where on the table the ball hit. There’s also MicLoc, a door lock that responds to knocking.

With this prior art, it’s all about microcontrollers and peripherals, and for that, [Ben] turned to the STM32F303RE, which sports four very fast ADCs and op-amps. There’s a lot of DMA usage on there, and the code is using a ton of signal processing. The important bit here is finding the difference between whatever the tabletop equivalent to an earthquake’s P-waves and S-waves are — [Ben] only wants the first bit of a waveform that travels through the table longitudinally, not the much louder vibrations of the entire table.

If [Ben] manages to put this together, an entire wall could be a light switch or a dimmer. You could add a secret knock to your door, and your desk could control your computer. It’s a promising idea, and the engineering that’s going into this project is just fantastic.

ARM Programming with Bare C

We confess. When starting a microcontroller project, we often start with the last one we did for that environment, copy it, and just make changes. And the first one? It — ahem — might have been found on the Internet. There’s a lot more than just your code that goes into this. If you want  to do (and understand) absolutely everything yourself on an ARM development project, you could use an all-in-one walkthrough. It just so happens [Jacob Mossberg] has a from scratch guide of what you need to do to get your C code running on ARM.

Starting with an ARM Cortex M3, he writes a simple C program and gets the assembly language equivalent. What follows is a detailed analysis of the machine code, exploring what the compiler assumed would be set up. This leads to understanding of what the start up code and linker script needs to look like.

It is a great approach and reminded us of the old saying about “teach someone how to fish.” He even devotes a little time to talking about getting debugging working with OCD. Of course, the exact details are specific to the chip he’s using, but most of it would apply to any ARM chip. Even if you don’t use ARM, though, the thought process and methodology is itself quite interesting.

This post would be just the thing if you are using Blue Pills and ready to move away from the Arduino ecosystem. Of course, if you want to veer away from the Arduino system, but don’t want to go all the way to bare metal, there’s always mBed.

Simple ESP8266 Weather Station using Blynk

Today’s hacker finds themself in a very interesting moment in time. The availability of powerful microcontrollers and standardized sensor modules is such that assembling the hardware for something like an Internet-connected environmental monitor is about as complex as building with LEGO. Hardware has become elementary in many cases, leaving software as the weak link. It’s easy to build the sensor node to collect the data, but how do you display it in a useful and appealing way?

This simple indoor temperature and humidity sensor put together by [Shyam Ravi] shows one possible solution to the problem using Blynk. In the video after the break, he first walks you through wiring the demonstration hardware, and then moves on to creating the Blynk interface. While it might not be the ideal solution for all applications, it does show you how quickly you can go from a handful of components on the bench to displaying useful data.

In addition to the NodeMCU board, [Shyam] adds a DHT11 sensor and SSD1306 OLED display. He’s provided a wiring diagram in the repository along with the Arduino code for the ESP8266, but the hardware side of this demonstration really isn’t that important. You could omit the OLED or switch over to something like a BME280 sensor if you wanted to. The real trick is in the software.

For readers who haven’t played with it before, Blynk is a service that allows you to create GUIs to interact with microcontrollers from anywhere in the world. The code provided by [Shyam] reads the humidity and temperature data from the DHT11 sensor, and “writes” it to the Blynk service. From within the application, you can then visualize that data in a number of ways using the simple drag-and-drop interface.

We’ve seen Blynk and ESP8266 used to control everything from mood lighting to clearance-rack robotic toys. It’s a powerful combination, and something to keep in mind next time you need to knock something together in short order.

Continue reading “Simple ESP8266 Weather Station using Blynk”

What’s Behind the Door? An IoT Light Switch

We’re not sure who designed [Max Glenister]’s place, but they had some strange ideas about interior door positioning. The door to his office is right next to a corner, yet it opens into the room instead of toward the wall. Well, that issue’s been taken care of. But the architect and the electrician got the last laugh, because now the light switch is blocked by the open door.

Folks, this is the stuff that IoT is made for. [Max] here solved one problem, and another sprang up in its place. What better reason for your maiden voyage into the cloud than a terrible inconvenience? He studied up on IoT servo-controlled light switching, but found that most of the precedent deals with protruding American switches rather than the rockers that light up the UK. [Max] got what he needed, though. Now he controls the light with a simple software slider on his phone. It uses the Blynk platform to send servo rotation commands to a NodeMCU, which moves the servo horn enough to work the switch. It’s simple, non-intrusive, and it doesn’t involve messing with mains electricity.

His plan was to design a new light switch cover with mounting brackets for the board and servo that screws into the existing holes. That worked out pretty well, but the weight of the beefy servo forced [Max] to use a bit of Gorilla tape for support. He’s currently dreaming up ways to make the next version easily detachable.

Got those protruding American switches? [Suyash] shed light on that problem a while back.

Programmable Badge uses E-Ink and ESP8266

You’ve probably noticed that the hacker world is somewhat enamored with overly complex electronic event badges. Somewhere along the line, we went from using a piece of laminated paper on a lanyard to custom designed gadgets that pack in enough hardware that they could have passed for PDAs not that long ago. But what if there was a way to combine this love for weighing down one’s neck with silicon jewelry and the old school “Hello my name is…” stickers?

[Squaro Engineering] might have the solution with Badgy, their multi-function e-ink name…well, badge. Compatible with the Arduino SDK, it can serve as anything from a weather display to a remote for your smart home. Oh, and we suppose in an absolute emergency it could be used to avoid having to awkwardly introduce yourself to strangers.

Powered by an ESP-12F, Badgy features a 2.9″ 296×128 E-Ink display and a five-way tactical switch for user input. The default firmware includes support for WiFiManager and OTA updates to make uploading your own binaries as easy as possible, and a number of example Sketches are provided to show you the ropes. Powered by a LIR2450 3.6 V lithium-ion rechargeable coin cell, it can run for up to 35 days in deep sleep or around 5 hours of heavy usage.

Schematics, source code, and a Bill of Materials are all available under the MIT license if you want to try your hand at building your own, and assembled badges are available on Tindie. While it might not be as impressive as a retro computer hanging around your neck, it definitely looks like an interesting platform to hack on.