Roll Your Own Servo

Usually, when you want a servo motor, you simply buy one already made. But if you need something unusual, you can turn any DC motor into a custom servo you can control just like [Dejan] did. You can watch a video of the process below.

The custom servo can tune the endpoints, the center point, and the sensitivity. It also can be set to handle continuous rotation. A 12-bit encoder tells the microcontroller where the motor is and the output drivers can handle over 3 A of motor current. The microprocessor is a tried-and-true ATmega328. [Dejan] wanted to make the board as small as possible, and we think 40 mm square isn’t bad at all. There is also a 3D printed gearbox and housing. Overall, a very well-done project.

The motor control uses a PID algorithm. Potentiometers set the end range and sensitivity. A push button allows resetting the center position. DIP switches control the mode. The video shows a computer and an RC controller setting the position of the motors.

We have, of course, seen many variations on this idea. We’ve also seen servos rebuilt for better performance.

Continue reading “Roll Your Own Servo”

A purple PCB with a Raspberry Pi Pico and an MK3870 mask ROM microcontroller

A 1970s Mask ROM MCU Spills Its Secrets

If you buy any kind of electronic gadget today, chances are it’s powered by a microcontroller with a program stored in its internal flash ROM. That program’s code is often jealously guarded by the manufacturer, who will try their best to make sure you can’t just read back the chip’s contents by using lock bits or some sort of encryption. Things were more laid back in the 1970s and ’80s, when code was stored unencrypted in standard EPROM chips, or, for high-volume applications, in mask ROMs integrated in microcontrollers. Reading back the code of such micros was still very difficult because chips simply didn’t have a way of dumping their contents. [Andrew Menadue] ran into this issue when trying to repair an old HP calculator printer, and had to apply a clever hack to dump the contents of its Mostek MK3870 chip.

The main trick [Andrew] used was one discovered by [Sean Riddle] and explained on his website. It makes use of the fact that the MK3870 has a TEST pin that can be used to disable the mask ROM and load alternative program code directly into the micro’s processing core. By setting up a LOAD instruction pointing at a ROM location and briefly disabling test mode while that instruction is executed, the ROM’s contents can be read out by the externally loaded program.

Simple as this hack may seem, actually implementing it was tricky enough because of the strict timing requirements between signals on the clock pins, the data bus, and the TEST pin. [Andrew] got it to work on his Raspberry Pi Pico setup most of the time, but somehow the micro still returned a plainly wrong value every few hundred bytes. Not willing to spend too much time debugging this issue, [Andrew] applied a rather crude hack to his code: instead of reading each byte once, it runs the read cycle 200 times, and only returns a result when all 200 runs return the same value. Dumping the entire 4 kB of ROM now takes several minutes, but this isn’t much of an issue since [Andrew] only has one chip to read out.

If you do have a bucketload of MK3870 chips that you need to dump, you might want to try and optimize the code on [Andrew]’s GitHub page. It’s a lucky coincidence that the ‘3870 has the exploitable TEST feature; often, the only way to get inside mask ROM code is by decapping the chip and optically reading the bits one by one. Mask ROMs are great for very long term data storage, however.

Continue reading “A 1970s Mask ROM MCU Spills Its Secrets”

Building A Weather Display In Rust

We’ve seen a lot of weather displays over the years, and plenty of the more modern ones have been using some form of electronic paper. So what makes this particular build from [Harry Stern] different? The fact that the firmware running on the ESP32 microcontroller at its heart was developed in Rust.

The weather station itself is capable of operating for several months on its rechargeable NiMH battery bank. The Rust section of the project is in two parts, the first of which runs on a server which downloads the weather data and aggregates it into an image. The second part runs on the ESP32 using esp-idf which configures peripherals, turns on and connects to Wi-Fi, retrieves the image from the server, displays the image and then puts the display to sleep. By doing the heavy lifting on the server, the display should be able to run for longer than it would if everything was happening on the ESP32.

The project code is available from this GitHub page which should allow even Rust beginners to follow along, and the case file is also available for those with a 3D printer. [Harry] has a few upgrades planned for future releases as well, including a snap-fit case, a custom PCB, and improved voltage regulator for better battery life, and enhanced error handling for the weather API. And Rust isn’t the only interesting part of this project, either. As prices for e-paper displays continue to fall, more and more of them are found in projects like weather stations and even complete laptops which use these displays exclusively.

Proper Video, From An ESP32

Back in the day a miniature television, probably on a wristwatch, was the stuff of science fiction. Now, it’s something which can be done with a commodity microcontroller, as [Atomic14] shows us with the ESP32-TV that plays both video and sound. Even with modern silicon it’s still somewhat pushing the envelope.

As he explains in the video below the break, not all formats are simple enough to be decoded on the fly by a microcontroller. But he finds an AVI file to be within its capabilities which can be created with a bit of ffmpeg wizardry. The board is a fairly standard ESP32 device with an I2C bus, and the video stream isn’t too fast for this meager interface. You’ll maybe recognize the Muppets clip, but it’s possible that the early-80s BBC comedy staple The Young Ones might have passed you by if you’re not British.

We think this code is likely to be of use in quite a few projects, and it would be great to see it further refined. Small video players for not a lot of money can never be a bad thing.

Previous ESP32 video projects which have appeared on these pages have been more likely to involve driving a display directly.

Continue reading “Proper Video, From An ESP32”

Dead E. Ruxpin Appears Alive And Well

What are you doing to scare trick-or-treaters this Halloween? Surely something, right? Well, Hackaday alum [CameronCoward] certainly has his holiday under control with Dead E. Ruxpin, a murderous, cassette tape-controlled animatronic bear.

Readers of a certain vintage will no doubt see the correlation to Teddy Ruxpin, an animatronic bear from the 1980s whose mouth moved as it read stories from cassette tapes. Cleverly, the engineers used one stereo channel for the story’s audio, and the other channel to control the bear’s mouth.

Dead E. Ruxpin takes this idea and expands it, using the same two channels to send audio and control three servo motors that move both arms and the mouth. How is this possible? By sending tones built from one or more frequencies.

Essentially, [Cameron] assigned a frequency to each movement: mouth open/closed, and left and/or right arm up or down. These are all, of course, synced up with specific points in the audio so Dead E. doesn’t just move randomly, he dances along with the music.

The bear is actually a hand puppet, which leaves room for a 3D-printed skeleton that holds the RP2040 and the servos and of course, moves the puppet’s parts. We can’t decide if we prefer the bulging bloodshot eyes, or think the cutesy original eyes would have made a scarier bear. Anyway, check out the build/demo video after the break to see it in action.

Are you now into Teddy Ruxpin? Here’s a bit more about those scare bears. And don’t forget, Halloween Hackfest runs now until October 31st.

Continue reading “Dead E. Ruxpin Appears Alive And Well”

$13 Scope And Logic Analyzer Hits 18 Msps

We aren’t sure what’s coolest about [Richard Testardi’s] Flea-Scope. It costs about $13 plus the cost of making the PCB. It operates at 18 million samples per second. It also doesn’t need any software — you connect to it with your browser! It works as an oscilloscope, a logic analyzer, and a waveform generator. Not bad. The board is basically a little life support around a PIC32MK and the software required to run it.

Of course, for $13, you need to temper your expectations. One analog input reads from -6 to 6V (hint: use a 10X probe). The goal was for the instrument to be accurate within 2%.  There are also nine digital inputs sampled simultaneously with the analog sampling. The signal generator portion can output a 4 MHz square wave or a 40 kHz arbitrary waveform.

Continue reading “$13 Scope And Logic Analyzer Hits 18 Msps”

Button, Button, Who’s Got The (Pico) Button?

There is an episode of Ren and Stimpy with a big red “history eraser’ button that must not be pressed. Of course, who can resist the temptation of pressing the unpressable button? The same goes for development boards. If there is a button on there, you want to read it in your code, right? The Raspberry Pi Pico is a bit strange in that regard. The standard one lacks a reset button, but there is a big tantalizing button to reset in bootloader mode. You only use it when you power up, so why not read it in your code? Why not, indeed?

Turns out, that button isn’t what you think it is. It isn’t connected to a normal CPU pin at all. Instead, it connects to the flash memory chip. So does that mean you can’t read it at all? Not exactly. There’s good news, and then there’s bad news.

The Good News

The official Raspberry Pi examples show how to read the button (you have read all the examples, right?). You can convert the flash’s chip-select into an input temporarily and try to figure out if the pin is low, meaning that the button is pushed. Sounds easy, right?

Continue reading “Button, Button, Who’s Got The (Pico) Button?”