Embed With Elliot: Microcontroller Makefiles

Last time on Embed with Elliot, I began my celebration of the make command’s 40th birthday next month. We discussed using the default rules and how to augment them with your own variables defined in a makefile. Next, I’ll walk you through some makefiles that can be used for real-world microcontroller code development. This week, we’ll focus on one for the AVR platform, and later on, I’ll run through a slightly more complicated version for the ST32M series of ARM Cortex micros.

Along the way, we’ll pick up a couple of tricks, but the aim is to keep the makefiles minimal, readable, and easily extensible. Once you get a little taste of the power of writing your own makefiles, you probably won’t be able to stop adding bells and whistles — custom routines for flashing, checking the size of binaries, generating assembly listings, etc. I’ll leave the extras up to you, but you’ll eventually find that anything you do can be automated with a makefile.

Continue reading “Embed With Elliot: Microcontroller Makefiles”

Prime Numbers Are Stranger Than You Thought

If you’ve spent any time around prime numbers, you know they’re a pretty odd bunch. (Get it?) But it turns out that they’re even stranger than we knew — until recently. According to this very readable writeup of brand-new research by [Kannan Soundararajan] and [Robert Lemkein], the final digits of prime numbers repel each other.

More straightforwardly stated, if you pick any given prime number, the last digit of the next-largest prime number is disproportionately unlikely to match the final digit of your prime. Even stranger, they seem to have preferences. For instance, if your prime ends in 3, it’s more likely that the next prime will end in 9 than in 1 or 7. Whoah!

Even spookier? The finding holds up in many different bases. It was actually first noticed in base-three. The original paper is up on Arxiv, so go check it out.

This is a brand-new finding that’s been hiding under people’s noses essentially forever. The going assumption was that primes were distributed essentially randomly, and now we have empirical evidence that it’s not true. What this means for cryptology or mathematics? Nobody knows, yet. Anyone up for wild speculation? That’s what the comments section is for.

(Headline photo of researchers Kannan Soundararajan and Robert Lemke: Waheeda Khalfan)

Broken RC Car Goes Online

When the remote for your son’s RC car goes missing, what are you going to do? Throw away a perfectly good robot chassis? No, we wouldn’t either. And these days, with WiFi-enabled microcontroller boards so readily available, it’s almost easier to network the thing than it would be to re-establish radio control. So that’s just what [Stian Søreng] did.

Naturally, there’s an ESP8266 board at the heart of this hack, a WeMos D1 to be specific. [Stian] had played with cheap remote-controlled cars enough to be already familiar with the pinout of the RC IC, so he could simply hook up some GPIOs from the WeMos board to the pins and the brain transplant was complete.

On the software side, he implemented control over TCP by sending the characters “F”, “B”, “L”, or “R” to send the car forward, back, left, or right. Lowercase versions of the same letters turns that function off. He then wrote some client software in Qt that sends the right letters. He says that response time is around 150-250 ms, but that it works for his driving style — crashing. (We’d work on that.)

Anyway, it’s a fun and fairly quick project, and it re-uses something that was destined for the junk heap anyway, so it’s a strict win. The next steps are fairly open. With computer control of the car, he could do anything. What would you do next?

Thanks [Eyewind] for the tip!

EKG Business Card Warms Our Hearts

Giving out a paper business card is so 1960s. Giving out a PCB business card, well that gets you up to the early 2010s. If you really want to stand out these days, give them a fully-functional EKG in a business card. (Note: works best if you’re leading an open-source electrocardiography project.)

Looking through the schematics (PDF), there’s not much to the card. At the center of everything is an ADuC7061, which is an ARM microprocessor equipped with 24-bit ADCs that also has an internal DAC-driven voltage reference connected to one of the user’s thumbs. This, plus a little buffering circuitry, seems to be enough to translate the tiny voltage potential difference across your two hands into a beautiful signal on the included OLED display. Very nice!

Everything (including the big version of their EKG) is open source and made on an open toolchain. If you’re interested in health and medical sensing, you should head over to the project’s GitHub and check it out. The standalone open EKG is based on a much more complicated circuit, and stands to be more accurate. But the business card version is just soooo cute!

Thanks [Ag Primatic] for the tip!

How Many LEDs Are Too Many?

“Should you answer a rhetorical question?” But anyway, the answer is that you can never have enough LEDs. At least that’s what [Adam Haile] at maniacallabs seems to think. So far, he’s up to 3,072.

We’ve reported on a previous big-LED build of [Adam]’s before, called the “Colossus”. And while this current display is physically smaller, it’s got a lot more LEDs. And that means a lot more, well, everything else. Weighing in at roughly 500W when full-on, with 175-part 3D printed frame and diffuser elements and driven by three Teensy 3.2 microcontrollers driving shift registers, this display is capable of putting out 60 frames per second of blinding RGB LED goodness.

The designs, adapter boards, and animation code will be posted once they’ve “had a chance to clean things up a little”. Here’s hoping that’s soon! [Edit: Code and designs are here. Thanks Adam!]

If you’re in the greater Washington DC area, you can even swing by the NoVA Maker Faire in Reston to check it out in person. If you do, tell ’em Hackaday sent you.

Continue reading “How Many LEDs Are Too Many?”

Telegram Your Devices

[Erhan] has been playing around with the Telegram instant messaging service. Initially, he worked out how to turn on and off LEDs from his cell phone: he sent commands from the phone through the Telegram bot API, to a computer that’s connected over serial to an MSP430 board that actually controlled the LEDs.

But that’s a little bit complicated. Better to cut out the middleman (err…microcontroller) and implement the Telegram reception and LED blinking on a Raspberry Pi. For a project that’s already using a Pi, using the instant messaging service’s resources is a very simple way to interface to a cellphone.

The code for both the standalone RPi project and the MSP430-based microcontroller application are available at [Erhan]’s GitHub. You’re going to be installing Node.js for their telegram-bot-api and jumping through the usual OAuth hoops to get your bot registered with Telegram. But once you’ve done that all on the Raspberry Pi (or target computer of your choice) it’s all just a few lines of fairly high-level code.

We’ve only seen one other Telegram application on Hackaday.io and we’re wondering why. It looks pretty slick, and with the bot’s ability to send a custom “keyboard” to the phone along with the message, it could make cell-phone-based control interfaces a cinch. Anyone else using Telegram for bots?

Embed With Elliot: March Makefile Madness

The make tool turns the big 4-0 next month, and we thought we’d start up the festivities early. In a two-part series, I’ll cover some of the make background that I think is particularly useful, and then focus on microcontroller-specific applications. If you’re still cut-and-pasting a general purpose makefile to run your toolchain, hopefully you’ll get enough insight here to start rolling your own. It can be a lot simpler than it appears!

Just as soon as the C programming language was invented, and projects started to get a little bit bigger than a “hello world”, it became obvious that some tool was needed to organize and automate compilation. After all, if you’ve got a program that’s spread over a number of files, modules, or libraries, it’s a hassle to have to re-compile them all any time you make a change to just a single section of code. If some parts haven’t changed, you’re just wasting time by re-compiling them. But who can keep track of all of this? Make can!

Continue reading “Embed With Elliot: March Makefile Madness”