Direct memory access (DMA) systems in computers are more powerful than you might think, and [Bruce Land] and [Joseph Primmer] have done some clever hacking to take full advantage of this on the PIC32 microcontrollers. This is a cool proof-of-concept hack — you can do general computing in the DMA subsystem without using the CPU at all if you don’t mind taking your time — but they also include two useful examples: a direct digital synthesis machine and a random number generator. Both of these run using exactly 0% CPU time.
How do they do it? DMA is a mechanism for shuttling data around in memory or between hardware peripherals without involving the CPU. Say you want to take a large block of memory containing music, and spit it out slowly to an I2S audio converter. A DMA subsystem could be configured to take an interrupt from the sound chip, pass it a chunk of data, increment the data pointer, and wait for the next interrupt.
The gimmick, which goes back at least to [Rushanan] and [Checkoway]’s “Run DMA” paper, is that you can modify the memory source and destination addresses of one DMA service from another DMA service, and that some registers automatically perform mathematical operations on whatever data is put into them. Combine these together, and you’ve got transport-triggered programming.
(An awesome side-note: our own [Al Williams] developed a one-instruction transport-triggered CPU way back in the day: the One Instruction Wonder.)
What is this good for? Writing simple helper applications that run independent of the CPU on a PIC32 microcontroller. [Land] and [Primmer]’s direct-digital synthesis example is a great one. But there are a lot of cases where you simply want to take in some new data and pre-process it a little bit before it enters the main program flow. While creating weird machines in the DMA engine might be a slower way to get it done, it keeps the CPU free for doing other stuff. We’re sure you’ll come up with something.
Have you ever tried to weigh a cat? For that matter, have you ever tried to get a cat to do anything they don’t want to do? The wilful independence of our feline companions is a large part of what endears them to us, and must have done ever since the ancient Egyptians first had a hybrid wildcat that became domesticated
No wonder it’s so hard to care for multiple cats with different dietary needs. But the mere act of weighing the cats just might be the key to automating their diets while giving them the choice of when they want to eat. It’s a task that [Psy0rz] has cracked with the Meowton, a weighing machine/feeder combo designed to regulate the diets of his various moggies.
The multi-faceted system involving a scale to weight the cat, a food hopper with dispenser, and a scale for the food bowl. The cat has to stand on the scale to eat, and the dispenser doles out some food when it detects this. It identifies each cat by weight, and controls the quantity dispensed accordingly to spread that cat’s allotted diet over the course of the day.
Behind it all is an ESP32, which delivers the stats to a web interface and makes them available for import to a database. He’s identified a flaw in the system, that two cats of the same weight could cause misidentification. To that end he has an RFID reader under way, but it’s still a work in progress. There is even a live stream of the unit in action.
We’re suckers for cats here, and while the various Hackaday Cats provide plenty of companionship and entertainment we’re always up for more. Over the years we’ve featured plenty of cat feeders, but only one cat elevator.
If you’re serious about engineering the things you build, you need to know the limits of the materials you’re working with. One important way to characterize materials is to test the tensile strength — how much force it takes to pull a sample to the breaking point. Thankfully, with the right hardware, this is easy to measure and [CrazyBlackStone] has built a rig to do just that.
Built on a frame of aluminium extrusion, a set of 3D printed parts to hold everything in place. To apply the load, a stepper motor is used to slowly turn a leadscrew, pulling on the article under test. Tensile forces are measured with a load cell hooked up to an Arduino, which reports the data back to a PC over its USB serial connection.
It’s a straightforward way to build your first tensile tester, and would be perfect for testing 3D printed parts for strength. The STEP files (13.4 MB direct download) for this project are available, but [CrazyBlackStone] recommends waiting for version two which will be published this fall on Thingiverse although we didn’t find a link to that user profile.
Want to see what exactly is inside the $500 (headset only price) Valve Index VR headset that was released last summer? Take a look at this teardown by [Ilja Zegars]. Not only does [Ilja] pull the device apart, but he identifies each IC and takes care to point out some of the more unique hardware aspects like the fancy diffuser on the displays, and the unique multilayered lenses (which are much thinner than one might expect.)
[Ilja] is no stranger to headset hardware design, and in addition to all the eye candy of high-res photographs, provides some insightful commentary to help make sense of them. The “tracking webs” pulled from the headset are an interesting bit, each is a long run of flexible PCB that connects four tracking sensors for each side of the head-mounted display back to the main PCB. These sensors are basically IR photodiodes, and detect the regular laser sweeps emitted by the base stations of Valve’s lighthouse tracking technology. [Ilja] also gives us a good look at the rod and spring mechanisms seen above that adjust distance between the two screens.
Typically, when we think of 3D printed parts, we think of unique parts with complex geometries that would be hard to fabricate with other techniques. Strength is rarely the first thing that comes to mind, due to the limitations of thermoplastics and the problem of delamination between layers. However, with smart design, it’s possible to print parts capable of great feats, just as [Brian]’s high-torque gearbox demonstrates.
The gearbox consists of entirely 3D-printed gears, along with the enclosure, with the only metal parts being a few bearings and shafts. Capable of being produced out of PLA on a regular FDM printer, [Brian] has successfully tested the gearbox up to 132 kg∗cm. The suspicion is that there may be more left in it, but some slippage was noticed in the gear train when trying to tow a Ford Focus with the handbrake still on.
Even better, with the addition of a potentiometer, the gearbox can be used as an incredibly tough servo. [Brian] demonstrates this by lifting 22 kg at a distance of 6 cm from the center of the output shaft. The servo does it with ease, though eventually falls off the bench due to not being held down properly.
It’s a build that shows it’s possible to use 3D-printed parts to do some decently heavy work in the real world, as long as you design appropriately. [Brian] does a great job of explaining what’s involved, discussing gear profile selection and other design choices that affect the final performance. We’ve seen similar work from others before, too. Video after the break.
The holy grail of every particle physics experiment is the discovery of a new particle. Finding a new constituent of matter may earn you eternal glory within the history of physics. Unfortunately, since the last missing piece of the Standard Model, the Higgs boson, was discovered in 2012, and with still no clue about the nature of dark matter and dark energy, there is not much hope to stumble upon a new fundamental building block of matter any time soon.
Each course is led by expert instructors who have refined their topics into a set of four live, interactive classes plus one Q&A session we like to call Office Hours. Topics range from leveling up your Linux skills and learning about serial buses to building interactive art and getting into first-person view (FPV) drone flight.
Checkout the course titles, instructors, and details listed below. If you’d like to hear about each class from the instructors themselves, their teaser videos are embedded after the break.
Course overview: We’ll get familiar with the multi-rotor category of Unmanned Aerial Vehicles (UAVs) including physics, aerodynamics, electronics, digital signal processing (DSP), and writing software that is involved.
Course overview: This course is for those who had wanted to go from Arduino to a Linux computer small enough to fit the project but greatly more powerful to full fill the project’s needs and don’t know where to start.
HackadayU courses are “pay-as-you-wish”. To help ensure the live seats don’t go to waste, the minimum donation for each class is $1. Proceeds go to charity and we’re happy to report a donation of $4,200 going to Steam Coders from the summer session of HackadayU. A new charity will be chosen for the fall classes, details to follow.
Each class will be recorded and made available once they’ve been edited. You can take a look at the excellent Reverse Engineering with Ghidra series right now. Videos of the Quantum Computing and KiCad + FreeCAD courses are coming soon.