[Strn] and his friends love to barbecue no matter what it’s like outside. But something always seems to interrupt the fun: either it’s time to get up and turn the meat, or the music stops because somebody’s phone ran out of juice, or darkness falls and there aren’t enough flashlights or charged-up phones. He had the idea to build the Swiss Army knife of barbecues, a portable powerhouse that solves all of these problems and more (translated).
Most importantly, the E-Mangal rotates the skewers for even cooking. It does this with a 3D-printed worm gear system driven by the heater flap actuator from a car. After 25 minutes of slow rotation, a voice announces that it’s time to eat. [Strn] and friends will never hurt for music options between the pre-loaded tracks, Bluetooth audio, FM antenna, USB, and SD options running through a 3W amp. Two USB lights illuminate nighttime barbecuing, and the 10 Ah battery can do it all and keep everyone’s phone charged. For safety’s sake, [Strn] included a half-liter water tank to extinguish the coals via jet stream. Everything is run by a PIC18F, and it can be controlled at the box or through a simple web interface.
We love the look of this barbecue controller almost as much as the functionality. The sturdy stance of those short, angled legs give it a mid-century appliance feel, and seeing all the guts on display is always a plus. Grab a turkey leg and take the tour after the break.
The E-Mangal has a thermocouple in the coal box to measure the temperature, but there’s no direct control. If you’re more interested in temperature options than entertainment, here’s a project that micromanages everything on the grill.
You don’t often hear hackers say a lot of good things about Microsoft. Sure, you might use Windows, especially if you have one of those embarrassing day jobs. But at night in a hacker’s secret lab, you are likely to find something that looks more like Unix, even if it has a penguin, a piece of fruit, or even a green robot on the label. But we’ll give Microsoft credit. Their new MakeCode site will be a great boon for educators, students, and anyone who wants to learn how to code. What’s more is they are joined by a lot of familiar hacker faces including AdaFruit, Sparkfun, and Seeed Studios.
The idea is to have tutorials and if that was all there was to it, this would be a short post. But what is really entertaining about the site is that there are web-based emulators for all the hardware so you can actually do the projects in your browser with no extra hardware. You can also do your own projects from scratch.
Back in the old days, when we were still twiddling bits with magnetized needles, changing the data on an EPROM wasn’t as simple as shoving it in a programmer. These memory chips were erased with UV light shining through a quartz window onto a silicon die. At the time, there were neat little blacklights in a box sold to erase these chips. There’s little need for these chip erasers now, so how do you erase and program a chip these days? Build your own chip eraser using components that would have blown minds back in the 70s.
[Charles] got his hands on an old 2764 EPROM for a project, but this chip had a problem — there was still data on it. Fortunately, old electronics are highly resistant to abuse, so he pulled out the obvious equipment to erase this chip, a 300 watt tanning lamp. This almost burnt down the house, and after a second round of erasing of six hours under the lamp, there were still unerased bits.
Our ability to generate UV light has improved dramatically over the last fifty years, and [Charles] remembered he had an assortment of LEDs, including a few tiny 5mW UV LEDs. Can five milliwatts do what three hundred watts couldn’t? Yes; the LED had the right frequency to flip a bit, and erasing an EPROM is a function of intensity and time. All you really need to do is shine a LED onto a chip for a few hours.
With this vintage chip erased, [Charles] slapped together an EPROM programmer — with a programming voltage of 21V — out of an ATMega and a bench power supply. It eventually worked, allowing [Charles]’ project, a vintage liquid crystal display, to have the right data using vintage-correct parts.
When the ESP32 microcontroller first appeared on the market it’s a fair certainty that somewhere in a long-forgotten corner of the Internet a person said: “Imagine a Beowulf cluster of those things!”.
Someone had to do it, and it seems that the someone in question was [Kodera2t], who has made a mini-cluster of 4 ESP32 modules on a custom PCB. They might not be the boxed computers that would come to mind from a traditional cluster, but an ESP32 module is a little standalone computer with processing power that wouldn’t have looked too bad on your desktop only in the last decade. The WiFi on an ESP32 would impose an unacceptable overhead for communication between processors, and ESP32s are not blessed with wired Ethernet, so instead the board has a parallel bus formed by linking together a group of GPIO lines. There is also a shared SPI SRAM chip with a bus switchable between the four units by one of the ESp32s acting as the controller.
You might ask what the point is of such an exercise, and indeed as it is made clear, there is no point beyond interest and edification. It’s unclear what software will run upon this mini-cluster as it has so far only just reached the point of a first hardware implementation, but since ESP32 clusters aren’t exactly mainstream it will have to be something written especially for the platform.
Plenty of PC games rely on the mouse for input, and browser games are no exception. Unfortunately though, this isn’t always the most intuitive controller. [Nathan Ramanathan] combined a couple hacks to get the controller he wanted for playing browser games like Agar and Slither. No rodents were harmed in this project.
The games he wanted to dominate were top-down view so there was no need to move the mouse far from the center of the screen. For a more intuitive interface, a Wii nunchuck with its integrated joystick was selected. Nunchucks were notoriouslyhackable. An Arduino converted the nunchuck’s data into mouse movements. Inside the computer, Autohotkey kept the mouse pointer reined in where it was useful. Autohotkey was a scripting tool for executing keyboard and mouse macros.
The result was a joystick which controlled these browser games exactly the way you would expect a joystick to control a game. Mouse functionality, including standard and fast scrolling, was an added bonus so games like Minecraft aren’t left behind. The ergonomics of the nunchuck make us wonder why it hasn’t been seen in more wearable hacks.
Who knows how far the Vectrex system, or vector graphics gaming in general could have gone if not for the crash of ’83? The console wars might have been completely different if not for this market saturation-based reset button.
[Matt Carr] doesn’t own a Vectrex, but he does have a Tektronix 465 oscilloscope. After an intense labor of love and documentation, he also has a shiny new vector graphics arcade system that he built himself. It’s based on a dsPIC33 and uses a dual-channel DAC to produce wire frame 3-D graphics and send X-Y coordinates to the ‘scope via phono outputs. The PIC’s internal DAC is meant for audio and didn’t do so well with graphics, so [Matt] used a TLV5618A piggybacked on the PIC’s DAC pins.
The Ocelot doesn’t take cartridges, though it might someday. For now, changing games means getting out the PICkit. There are currently two to choose from: Star Lynx, an awesome flying shooter where you get to save a feline population, and Mattsteroids, which is exactly what it sounds like. There’s only one Ocelot in existence, and although it isn’t for sale, [Matt] has terrific technical documentation should you care to replicate it. One thing you might not be able to replicate is the awesome vintage advert he made for the Ocelot, which is cued up after the break.
What do you do, when you need a random number in your programming? The chances are that you reach for your environment’s function to do the job, usually something like rand() or similar. This returns the required number, and you go happily on your way.
A shift register configured as a pseudo-random number generator. [by KCAuXy4p CC0 1.0]Except of course the reality isn’t quite that simple, and as many of you will know it all comes down to the level of randomness that you require. The simplest way to generate a random number in software is through a pseudo-random number generator, or PRNG. If you prefer to think in hardware terms, the most elementary PRNG is a shift register with a feedback loop from two of its cells through an XOR gate. While it provides a steady stream of bits it suffers from the fatal flaw that the stream is an endlessly repeating sequence rather than truly random. A PRNG is random enough to provide a level of chance in a computer game, but that predictability would make it entirely unsuitable to be used in cryptographic security for a financial transaction.
There is a handy way to deal with the PRNG predictability problem, and it lies in ensuring that its random number generation starts at a random point. Imagine the shift register in the previous paragraph being initialised with a random number rather than a string of zeros. This random point is referred to as the seed, and if a PRNG algorithm can be started with a seed derived from a truly unpredictable source, then its output becomes no longer predictable.
Selecting Unpredictable Seeds
Computer systems that use a PRNG will therefore often have some form of seed() function alongside their rand() function. Sometimes this will take a number as an argument allowing the user to provide their own random number, at other times they will take a random number from some source of their own. The Sinclair 8-bit home computers for example took their seed from a count of the number of TV frames since switch-on.
The not-very-random result of a thousand analogRead() calls.
The Arduino Uno has a random() function that returns a random number from a PRNG, and as you might expect it also has a randomSeed() function to ensure that the PRNG is seeded with something that will underpin its randomness. All well and good, you might think, but sadly the Atmel processor on which it depends has no hardware entropy source from which to derive that seed. The user is left to search for a random number of their own, and sadly as we were alerted by a Twitter conversation between @scanlime and @cybergibbons, this is the point at which matters start to go awry. The documentation for randomSeed() suggests reading the random noise on an unused pin via analogRead(), and using that figure does not return anything like the required level of entropy. A very quick test using the Arduino Graph example yields a stream of readings from a pin, and aggregating several thousand of them into a spreadsheet shows an extremely narrow distribution. Clearly a better source is called for.
Noisy Hardware or a Jittery Clock
As a slightly old-school electronic engineer, my thoughts turn straight to a piece of hardware. Source a nice and noisy germanium diode, give it a couple of op-amps to amplify and filter the noise before feeding it to that Arduino pin. Maybe you were thinking about radioactive decay and Geiger counters at that point, or even bouncing balls. Unfortunately though, even if they scratch the urge to make an interesting piece of engineering, these pieces of hardware run the risk of becoming overcomplex and perhaps a bit messy.
The significantly more random result of a thousand Arduino Entropy Library calls.
The best of the suggestions in the Twitter thread brings us to the Arduino Entropy Library, which uses jitter in the microcontroller clock to generate truly random numbers that can be used as seeds. Lifting code from the library’s random number example gave us a continuous stream of numbers, and taking a thousand of them for the same spreadsheet treatment shows a much more even distribution. The library performs as it should, though it should be noted that it’s not a particularly fast way to generate a random number.
So should you ever need a truly random number in your Arduino sketch rather than one that appears random enough for some purposes, you now know that you can safely disregard the documentation for a random seed and use the entropy library instead. Of course this comes at the expense of adding an extra library to the overhead of your sketch, but if space is at a premium you still have the option of some form of hardware noise generator. Meanwhile perhaps it is time for the Arduino folks to re-appraise their documentation.