Suppose you take a few measurements of a time-varying signal. Let’s say for concreteness that you have a microcontroller that reads some voltage 100 times per second. Collecting a bunch of data points together, you plot them out — this must surely have come from a sine wave at 35 Hz, you say. Just connect up the dots with a sine wave! It’s as plain as the nose on your face.
And then some spoil-sport comes along and draws in a version of your sine wave at -65 Hz, and then another at 135 Hz. And then more at -165 Hz and 235 Hz or -265 Hz and 335 Hz. And then an arbitrary number of potential sine waves that fit the very same data, all spaced apart at positive and negative integer multiples of your 100 Hz sampling frequency. Soon, your very pretty picture is looking a bit more complicated than you’d bargained for, and you have no idea which of these frequencies generated your data. It seems hopeless! You go home in tears.
But then you realize that this phenomenon gives you super powers — the power to resolve frequencies that are significantly higher than your sampling frequency. Just as the 235 Hz wave leaves an apparent 35 Hz waveform in the data when sampled at 100 Hz, a 237 Hz signal will look like 37 Hz. You can tell them apart even though they’re well beyond your ability to sample that fast. You’re pulling in information from beyond the Nyquist limit!
This essential ambiguity in sampling — that all frequencies offset by an integer multiple of the sampling frequency produce the same data — is called “aliasing”. And understanding aliasing is the first step toward really understanding sampling, and that’s the first step into the big wide world of digital signal processing.
Whether aliasing corrupts your pristine data or provides you with super powers hinges on your understanding of the effect, and maybe some judicious pre-sampling filtering, so let’s get some knowledge.
If you’ve been putting off your own Geiger tube project, and we know you have, [Michal]’s detailed explanation of the driver circuit and building one from scratch should help get you off the couch. Since a Geiger tube needs 400 volts DC, some precautions are necessary here, and [Michal] builds a relatively safe inverter and also details a relatively safe way to test it.
The result is a nice piece of decor that simultaneously warns you of a nuclear disaster by flashing lights like crazy, or (hopefully) just makes a nice conversation piece. This is one of the cooler Geiger tube hacks we’ve seen since [Robert Hart] connected up eighteen Geiger tubes, and used them to detect the direction of incoming cosmic rays and use that to compose random music (YouTube, embedded below).
Tech artist [Alexander Reben] has shared some work in progress with us. It’s a neural network trained on various famous peoples’ speech (YouTube, embedded below). [Alexander]’s artistic goal is to capture the “soul” of a person’s voice, in much the same way as death masks of centuries past. Of course, listening to [Alexander]’s Rob Boss is no substitute for actually watching an old Bob Ross tape — indeed it never even manages to say “happy little trees” — but it is certainly recognizable as the man himself, and now we can generate an infinite amount of his patter.
Behind the scenes, he’s using WaveNet to train the networks. Basically, the algorithm splits up an audio stream into chunks and tries to predict the next chunk based on the previous state. Some pre-editing of the training audio data was necessary — removing the laughter and applause from the Colbert track for instance — but it was basically just plugged right in.
The network seems to over-emphasize sibilants; we’ve never heard Barack Obama hiss quite like that in real life. Feeding noise into machines that are set up as pattern-recognizers tends to push them to the limits. But in keeping with the name of this series of projects, the “unreasonable humanity of algorithms”, it does pretty well.
He’s also done the same thing with multiple speakers (also YouTube), in this case 110 people with different genders and accents. The variation across people leads to a smoother, more human sound, but it’s also not clearly anyone in particular. It’s meant to be continuously running out of a speaker inside a sculpture’s mouth. We’re a bit creeped out, in a good way.
We’ve covered some of [Alexander]’s work before, from the wince-inducing “Robot Bites Man” to the intellectual-conceptual “All Prior Art“. Keep it coming, [Alexander]!
We’ve seen a lot of hacks with the nRF24l01+ 2.4 GHz radio modules. The tiny chips pack a lot of bang for the buck. Since the radios can switch frequencies relatively quickly, [Shubham Paul] decided to take advantage of this feature to make a rudimentary frequency-hopping communications channel.
The code is actually incredibly simple. Both the transmitter and receiver simply scan up and down over the defined channels. Because the clock speeds of any given pair of Arduinos are likely to be slightly different, it’s not a surprise that the radios eventually drift out of sync. Right now, as a quickie solution, [Shubham] is using a serial-port resynchronization: both are connected to the same computer, and he just tells them to get on the same channel. That’s not a horribly satisfying workaround. (But it’s a great start!)
Keeping two radios that are continually swapping channels in sync is no easy task, but it could possibly be made easier by taking advantage of the nRF’s acknowledge mode. If the delay between a sent acknowledge message and a received one were constant, these events (one on TX and one on RX) could be used to re-sync the two hopping cycles. All of this would probably require more temporal resolution than you’re going to get out of a microprocessor running Arduino code, but should be possible using hardware timers. But this is pure speculation. We briefly looked around and couldn’t find any working demos.
So Hackaday, how would you remotely sync two nRF24s on the cheap? Or is this a crazy idea? It might help to make transmissions more reliable in the face of 2.4 GHz band interference. Has anyone implemented their own frequency hopping scheme for the nRF24l01+?
[Sufficiently Advanced]’s video gets us 90% of the way toward replicating this build. There’s a tube with a microphone and a Raspberry Pi inside. There are a bunch of ESP8266-powered gadgets scattered around the house that take care of such things as turning on and off the heater, watering plants, and even pressing a (spare) car remote with a servo.
We’d love to know what pitch- or song-recognition software the Raspberry Pi is running. We’ve wanted to implement a whistling-based home automation interface since seeing the whistled. We can hold a tune just fine, but we don’t always start out on the same exact pitch, which is a degree of freedom that [Sufficiently Advanced]’s system doesn’t have to worry about, assuming it only responds to one ocarina.
If you’re questioning the security of locking and unlocking your actual apartment by playing “Zelda’s Lullaby” from outside your window, you either overestimate the common thief or you just don’t get the joke. The use case of calling (and hopefully finding) a cell phone is reason enough for us to carry a bulky ocarina around everywhere we go!
[Sami Pietikäinen] was working on an embedded Linux device based on an Atmel SAMA5D3x ARM-A5 processor. Normally, embedded Linux boxes will boot up off of flash memory or an SD card. But if you’re messing around, or just want to sidestep normal operation for any reason, you could conceivably want to bypass the normal boot procedure. Digging around in the chip’s datasheet, there’s a way to enter boot mode by soldering a wire to pull the BMS pin. As [Sami] demonstrates, there’s also a software way in, and it makes use of mmap, a ridiculously powerful Linux function that you should know about.
Transparent, conductive glass is cool stuff and enables LCD panels and more. But the commercial method involves sputtering indium-tin oxide, which means a high vacuum and some high voltages, which is doable, but not exactly hacker-friendly. [Simplifier] has documented an alternative procedure that uses nothing more than a camp-stove hotplate and an airbrush. And some chemistry.
Make no mistake, this is definitely do-it-outside chemistry. The mixture that [Simplifier] has settled on includes stannous (tin) chloride and ammonium bifluoride in solution. This is sprayed uniformly onto the heated glass (350-400° C), and after it’s evaporated there is a thin, strong, and transparent layer of fluorine-doped tin oxide. [Simplifier] reports resistances down in the single-digit Ohms per square, which is pretty awesome. [Simplifier] didn’t get the mix down perfectly on the first pass, of course, so it’s also interesting to read up on the intermediate steps.
Our thoughts immediately spring to masking sections of glass off and building DIY transparent circuits and panels, but we suspect that we’re getting ahead of ourselves. Still, this is an incredible early result, and we hope that it opens up the way to crazy transparent-conductive applications. What would you do if you could make glass circuits? Well, now you can, and it doesn’t look too hard.