A forum post by New Zealand electronics enthusiast [zl2wrw] about retreiving waypoints from a mysterious floppy disk caught our eye. The navigation system on his friend’s fishing boat had died and was replaced. But the old waypoints were stored on a 3-1/2 inch floppy disk that was unreadable on a normal PC. Not to be deterred, [zl2wrw] then looked for another solution — apparently a list of hot NZ fishing spots is worth quite the effort.
The tool he discovered, and the main point of this story, is the bbc-fdc by [Jasper Renow-Clarke] aka [picosonic]. [Jasper] made this project to read 5-1/4 inch Acorn DFS floppies from his BBC Micro. But bbc-fdc can be used to read a variety of floppy disk formats, such as DOS, C64, Apple II, and others It can also just capture raw magnetic flux transitions on the disk, blissfully unaware of any logical structure to the data. We recently wrote about another Raspberry Pi Floppy Drive Controller project by [Scott Baker]. What sets [picosonic]’s project apart is that he’s not using an FDC controller chip here. The only interface electronics is a couple of open-collector 7406 ICs. Data is read using the SPI peripheral. If you need to archive old floppy disks or do a forensic analysis of unknown disks like [zl2wrw], then one of these two projects will almost certainly do the trick.
Meanwhile back in New Zealand, [zl2wrw] discovered that the floppy format was standard (Modified Frequency Modulation, MFM) by examining the raw flux dump. However, the filesystem was a mystery — it didn’t quite match any of the usual suspects. So [zl2wrw] dug into the hex dump of the data and figured out enough of the structure to manually recover the waypoints. Subsequently, a user on the forum found a document describing the file system used by Furuno GPS units, which proved to be a close match albeit after the fact. Alas, [zl2wrw] hasn’t publish the coordinates of those good fishing spots.
Have you had any successes (or failures) when it comes to reading data from old disks? Or have you encountered peculiar disk formats and/or file systems, where having a tool like this could have been helpful? Let us know in the comments below.
An SDR add-on for the Raspberry Pi isn’t a new idea, but the open source cariboulite project looks like a great entry into the field. Even if you aren’t interested in radio, you might find the project’s use of a special high-bandwidth memory interface to the Pi interesting.
The interface in question is the poorly-documented SMI or Secondary Memory Interface. [Caribou Labs] helpfully provides links to others that did the work to figure out the interface along with code and a white paper. The result? Depending on the Pi, the SDR can exchange data at up to 500 Mbps with the processor. The SDR actually uses less than that, at about 128 Mbps. Still, it would be hard to ship that much data across using conventional means.
On the radio side, the SDR covers 389.5 to 510 MHz and 779 to 1,020 MHz. There’s also a wide tuning channel from 30 MHz to 6 GHz, with some exclusions. The board can transmit at about 14 dBm, depending on frequency and the receive noise figure is under 4.5 dB for the lower bands and less than 8 dB above 3,500 MHz. Of course, some Pis already have a radio, but not with this kind of capability. We’ve also seen SMI used to drive many LEDs.
Looking to capitalize on his familiarity with the Raspberry Pi, [Sebastian Zen Tatum] decided to put the diminutive Pi Zero at the heart of his “antweight” fighting robot, $hmoney. While it sounds like there were a few bumps in the road early on, the tuxedoed bot took home awards from the recent Houston Mayhem 2021 competition, proving the year of Linux on the battle bot is truly upon us.
Compared to using traditional hobby-grade RC hardware, [Sebastian] says using the Pi represented a considerable cost savings. With Python and
evdev, he was able to take input from a commercial Bluetooth game controller and translate it into commands for the GPIO-connected motor controllers. For younger competitors especially, this more familiar interface can be seen as an advantage over the classic RC transmitter.
A L298N board handles the two N20 gear motors that provide locomotion, while a Tarot TL300G ESC is responsible for spinning up the brushless motor attached to the “bow tie” spinner in the front. Add in a Turnigy 500mAh 3S battery pack, and you’ve got a compact and straightforward electronics package to nestle into the robot’s 3D printed chassis.
In a Reddit thread about $hmoney, [Sebastian] goes over some of the lessons his team has learned from competing with their one pound Linux bot. An overly ambitious armor design cost them big at an event in Oklahoma, but a tweaked chassis ended up making them much more competitive.
There was also a disappointing loss that the team believes was due to somebody in the audience attempting to pair their phone with the bot’s Pi Zero during the heat of battle, knocking out controls and leaving them dead in the water. Hopefully some improved software can patch that vulnerability before their next bout, especially since everyone that reads Hackaday now knows about it…
While battles between these small-scale bots might not have the same fire and fury of the televised matches, they’re an excellent way to get the next generation of hackers and engineers excited about building their own hardware. We wish [Sebastian] and $hmoney the best of luck, and look forward to hearing more of their war stories in the future.
[Miroslav Nemecek] really pushes the limits of the Pico with his PicoVGA project, which packs a surprising number of features. His main goal with this library is to run retro games which can fit within the limited RAM and processing power of the Pico, but the demo video below shows a wide array of potential applications.
The library provides a whole slew of features, including frame buffering, sprites, overlays, and resolutions up to 1280×960 in either NTSC or PAL timings. A PWM-driven audio output channel is also included in the package. His library takes full advantage of the programmable I/O module functionality and uses the second core which is dedicated to video processing. However, with care, the second core can perform application tasks in certain circumstances. The VGA analog output signals are provided by resistor ladders, and pixel color is 8-bit R3G3B2 format. To be clear, [Miroslav] does cheat a little bit here in one regard — he overclocks the processor up to 270 MHz to meet the timing demands in some of the resolutions.
[Miroslav] has developed these tools using ARM-GCC on Windows, but he lacks the experience to make a Linux build. He welcomes help on that front from anyone familiar with Linux. And stay tuned — there may be more coming from [Miroslav] in the future. He notes that the PicoVGA library was created as part of a retro gaming computer project which is still under development. We look forward to hearing more about this when it gets released.
A couple of weeks ago we wrote about a monochrome VGA version of Pong for the Pico by [Nick Bild]. It’s exciting to see these projects which are exploring the limits of the Pico’s capabilities. Have you seen any boundary-pushing applications for the Pico? Let us know in the comments below. Thanks to [Pavel Krivanek] for sending this project to our tip line.
Continue reading “VGA Library For The Raspberry Pi Pico”
Over the last year or so we’ve noticed a definite uptick in the number of folks using OpenOCD on the Raspberry Pi. It’s a cheap and convenient solution for poking around with various microcontrollers and embedded devices, but not always the most elegant. Looking to improve on the situation somewhat, [Matthew Mets] has been working on a purpose-built JTAG Hat to clean things up a bit.
Onboard level shifters allow you connect to JTAG and SWD interfaces from 1.8 to 5 V, and if you power the target device from the Pi itself, there’s even support for measuring the voltage and current. To connect up to your target, the open hardware board features a “legacy” pin header perfect for jumper wires, as well as a dedicated 10-pin Cortex Debug Connector. Whether you spin up your own or buy one assembled, it certainly looks like a tool worth having around if you often find yourself working with the appropriate chips.
In addition to the design files for the hardware, [Matthew] has also provided some nice documentation on how to get the software side of things up and running. Starting with a blank SD card, it walks you through the initial setup of the Raspberry Pi all the way through the installation and configuration of a patched version of OpenOCD designed to support the JTAG Hat.
If you spend more time working with 8-bit AVR chips, don’t worry. Last year we covered a similar project to turn everyone’s favorite Linux SBC into an all-in-one microcontroller development powerhouse.
The release of the Raspberry Pi Foundation’s Raspberry Pi Pico board with RP2040 microcontroller has made big waves these past months in the maker community. Many have demonstrated how especially the two Programmable I/O (PIO) state machine peripherals can be used to create DVI video generators and other digital peripherals.
Alongside this excitement, it raises the question of whether any of this will cause any major upheaval for those of us using STM32, SAM and other Cortex-M based MCUs. Would the RP2040 perhaps be a valid option for some of our projects? With the RP2040 being a dual Cortex-M0+ processor MCU, it seems only fair to put it toe to toe with the offerings from one of the current heavyweights in the 32-bit ARM MCU space: ST Microelectronics.
Did the Raspberry Pi Foundation pipsqueak manage to show ST’s engineers how it’s done, or should the former revisit some of their assumptions? And just how hard is it going to be to port low-level code from STM32 to RP2040? Continue reading “Raspberry Pi RP2040: Hands-On Experiences From An STM32 Perspective”
In many people’s memories, Snake lived and breathed on Nokia handsets from the late 90s and early 2000s. However, the game has been around for much longer than that, and will continue to live on in the future. That’s at least in part thanks to people like [Hari Wiguna] keeping it alive by implementing it on new platforms.
[Hari] set about writing Snake in MicroPython for the Raspberry Pi Pico. The hardware side of things is simple enough – five buttons hooked up to the Pico, along with an 128×64 I2C OLED screen to display the game on. On the software side of things, [Hari] pushed the boat out, deciding that his version of Snake had to have the player character slither like the real thing. This took a little effort to get right, particularly when navigating corners in different directions. However, perseverance paid off and [Hari] got the job done.
Code is on GitHub for those that want to tinker at home. It’s a tidy piece of work, though not the weirdest place we’ve seen the game appear – we’ve actually seen it run within PCB routing software before thanks to some nifty scripting. Video after the break. Continue reading “Play Your Favorite Nokia Game On The Raspberry Pi Pico”