RP2040 DMA Hack Makes Another ‘CPU Core’

[Bruce Land] of Cornell University will be a familiar name to many Hackaday readers, searching the site for ‘ECE4760′ will bring up many interesting topics around embedded programming. Every year [Bruce] releases yet more of the students’ work out into the wild to our great delight. This RP2040-based project is a bit more abstract than some previous work and shows yet another implementation of an older hack to utilise the DMA hardware of the RP2040 as another CPU core. While the primary focus of the RP2040 DMA subsystem is moving data between memory spaces, with minimal CPU intervention, the DMA control blocks have some fairly complex behaviour. This allows for a Turing-complete CPU to be implemented purely with the DMA hardware and a sprinkling of memory.

The method ties up three of the twelve DMA channels, and is estimated to have a similar performance to ‘an Arduino’ but [Bruce] doesn’t specify which one of the varied models that could be. But who cares anyway? Programming the CPU is a matter of leveraging the behaviour of the hardware, which is all memory mapped and targetable by the DMA. For example, the CPU can waggle GPIO pins by using the DMA to write values to the peripheral address space. The basic flow can be seen in the image above. DMA0 is used as the program counter, which points DMA1 to an array of DMA control blocks, a sequence of which codes for some of the ‘opcodes’ of the CPU model. DMA0 chains to (hands over control to) DMA1 which reads the control blocks and configures itself accordingly. DMA1 performs whatever data move is programmed, chains to DMA2, which in turn reprograms the DMA0 program counter to point to the next block in the list to be executed by DMA1.

Continue reading “RP2040 DMA Hack Makes Another ‘CPU Core’”

A small electronic board next to colorful stylized speaker

Soundscape Sculpture Is Pleasing Art For Your Ears

Artist and self-described “maker of objects” [Daric Gill] is sharing some of the world’s most pleasing and acoustically interesting soundscapes with museum patrons in his latest work, ‘The Memory Machine: Sound‘.

Now featured at the Center of Science and Industry museum, the interactive stereo soundscape generator resembles three decorated ‘tree trunks’, suspended high above the exhibition floor. When visitors approach the artwork, they are treated to a randomly selected soundscape sample.

The build, which is described in blog form here, teases just some of the sixty soundscape samples that can be heard. These include the noisy chattering of crowds underneath the Eiffel Tower in Paris, the mellow melodies of a meadow high in the Swiss Alps, and the pumping atmosphere of a baseball match played in Yankee Stadium, New York City.

Only the middle trunk reveals the electronic soul of the installation – an Adafruit M4 Feather Express, Music Maker Featherwing and a motion sensor. The flanking trunks house the speakers and amplifier. The motion sensor triggers the microcontroller, which then plays a randomly selected sample from an SD card.

[Daric] went to great lengths to reuse discarded materials, and even cannibalized parts from other sculptures to see his vision through. This focus underpins a substantial amount of woodworking and machining that went into this build, so the full video is certainly worth a watch to see the whole project come together.

Make sure to check out our coverage of other funky installations, like this mesmerizing ceiling decoration.

Continue reading “Soundscape Sculpture Is Pleasing Art For Your Ears”

A Number Maze For Younger Hackers

[David Johnson-Davies] has a lofty goal of building a small device to give to younger hackers on a semi-yearly basis. So this last year, he designed and created The Number Maze Game, a small handheld logic puzzle maze.

It’s based on several 4-digit seven-segment displays controlled by an AVR128DA32. Navigation is just a few push buttons and a buzzer to let you know when you’ve won. The game is simple: you jump the amount listed on the space you’re currently on, trying to get to the space labeled “H.” [David] lays out how he built it in great detail, discussing the process of designing and assembly. He also expounds on many decisions, such as using a TQFP microcontroller instead of the through-hole ATmega328P due to the I/O pin count.

The instructions and design process are so detailed we’re confident most people could easily reproduce it, especially with the code and board files. But the value of this project is not in blindly copying it. Instead, we love how something so simple can be wonderfully entertaining and valuable to younger hackers. Programming headers are included so they can add new mazes. We suspect there are many out there who would love to get something so tactile, simple, and modifiable.

Of course, we’ve seen other minimal maze games, so there’s no lack of inspiration for making some different.

An E-Ink Progress Bar For Your Unborn Child

Having a child is a major milestone in a person’s life, and there’s a long list of things to get done before that little bundle of joy kicks and screams its way into the world. What better way to make sure you’ve still got time to paint the nursery and assemble the crib than to have an automated loading screen that shows just how far along the organic 3D printing process is?

This fetal development tracker was put together by [mokas] using Adafruit’s ESP32-S2 powered MagTag. As the name implies, the all-in-one electronic ink development board is designed so that it can be adhered to a metallic surface with integrated magnets. The idea is that you can pop a battery in the low-power device, stick it on your refrigerator, and have a regularly updated display of…well, whatever you want. Continue reading “An E-Ink Progress Bar For Your Unborn Child”

Arduino Library Brings Rtl_433 To The ESP32

If you have an RTL-SDR compatible radio there’s an excellent chance you’ve heard of the rtl_433 project, which lets you receive and decode signals from an ever-expanding list of supported devices in the ISM radio bands. It’s an incredibly useful piece of software, but the fact that it requires an external software defined radio and a full-fledged computer to run dictated the sort of projects it could realistically be used for.

But thanks to the rtl_433_ESP Arduino library developed by [NorthernMan54], we’re now able to pack that functionality into a much smaller package. All you need is an ESP32 microcontroller and a CC1101 or SX127X transceiver module. If you’re looking for a turn-key hardware platform, the documentation notes the LILYGO LoRa32 V2 board includes the required hardware, plus adds a handy OLED display and microSD slot. It should be noted that the range of these radios don’t compare particularly well to a full-size RTL-SDR device, but that probably won’t come as much of a surprise. Continue reading “Arduino Library Brings Rtl_433 To The ESP32”

A Simple Serial Display

Often with more “modern” complex protocols involving handshaking, token exchanges, and all the other hoops and whistles accompanying them, we forget how useful and powerful serial can be. In what might be a wonderful tribute to that, [Davide Gironi] created a simple AVR-powered 16-digit serial display.

It can display two numbers, and that’s it. A MAX7219 drives the display, and the brains are an ATmega8. It’s straightforward to send new values: a start byte, a CRC, the data to display, and an end byte. A CP2102 provides a UART to USB interface to connect to a host. An EEPROM helps it remember the last numbers shown. It supports positive, negative, and floating-point numbers.

This is a beautiful example of doing one thing and doing it well. The design is simple and allows it to be used for anything. You can show the current stock market price, the time for the next two trains for your commute, or whatever else you can think of. [Davide] included a schematic, code, and a 3d printed enclosure.

Perhaps the idea could be combined with a clever design for a single-motor seven-segment display.

Continue reading “A Simple Serial Display”

Low-Cost 433 MHz Door Sensors Get Open Firmware

It’s an unfortunate reality these days that if you see a cheap piece of consumer electronics, there’s a good chance its only cheap because it’s designed to lock you into some ecosystem where you’ll either end up paying a subscription, or worse, have your personal information sold behind your back. One of the best tools we have against these sort of anti-consumer practices is the development of open source firmware replacements that put control of the device into the hands of the community, rather than a corporation.

Now, thanks to the work of [Jonathan Armstrong] we have such a firmware for the 433 MHz magnetic door and window sensors that you can pick up on AliExpress for $4 USD a piece. The new firmware not only ensures you can use these sensors with a wide array of receivers, but adds a number of new features over their stock configuration. Continue reading “Low-Cost 433 MHz Door Sensors Get Open Firmware”