Saving PIC Microcontrollers With DIY Programmer

When working on a project, plenty of us will reach for an Atmel microcontroller because of the widespread prevalence of the Arduino platform. A few hackers would opt for a bit more modern part like an ESP32. But these Arduino-compatible platforms are far from the only microcontrollers available. The flash-based PIC family of microcontrollers is another popular choice. Since they aren’t quite as beginner or user-friendly, setting up a programmer for them is not as straightforward. [Tahmid] needed to program some old PIC microcontrollers and found the Pi Pico to be an ideal programmer.

The reason for reaching for the Pico in the first place was that [Tahmid] had rediscovered these decade-old microcontrollers in a parts bin but couldn’t find the original programmer. Thanks to advances in technology in the last ten years, including the advent of micropython, the Pico turned out to be the ideal programmer. Micropython also enables a fairly simple drag-and-drop way of sending the .hex file to the PIC, so the only thing the software has to do is detect the PIC, erase it, and flash the .hex file. The only physical limitation is that the voltages needed for the PIC are much higher than the Pico can offer, but this problem is easily solved with a boost converter (controlled by the Pico) and a level shifter.

[Tahmid] notes that there’s plenty of room for speed and performance optimization, since this project optimized development time instead. He also notes that since the software side is relatively simple, it could be used for other microcontrollers as well. To this end, he made the code available on his GitHub page. Even if you’re more familiar with the Arduino platform, though, there’s more than one way to program a microcontroller like this project which uses the Scratch language to program an ESP32.

Pico-Sized Ham Radio

There are plenty of hobbies around with huge price tags, and ham radio can certainly be one of them. Experienced hams might have radios that cost thousands of dollars, with huge, steerable antennas on masts that can be similarly priced. But there’s also a side to the hobby that throws all of this out of the window in favor of the simplest, lowest-cost radios and antennas that still can get the job done. Software-defined radio (SDR) turned this practice up to 11 as well, and this radio module uses almost nothing more than a microcontroller to get on the air.

The design uses the capabilities of the Raspberry Pi Pico to handle almost all of the radio’s capabilities. The RF oscillator is driven by one of the Pico’s programmable I/O (PIO) pins, which takes some load off of the processor. For AM and SSB, where amplitude needs to be controlled as well, a PWM signal is generated on another PIO which is then mixed with the RF oscillator using an analog multiplexer. The design also includes a microphone with a preamplifier which can be fed into a third PIO; alternatively it can receive audio from a computer via the USB interface. More processor resources are needed when generating phase-modulated signals like RF, but the Pico is still quite capable of doing all of these tasks without jitter larger than a clock cycle.

Of course this only outputs a signal with a few milliwatts of power, so for making any useful radio contacts with this circuit an amplifier is almost certainly needed. With the heavy lifting done by the Pico, though, the amplifier doesn’t need to be complicated or expensive. While the design is simple and low-cost, it’s not the simplest radio possible. This transmitter sends out radio waves using only a single transistor but you will be limited to Morse code only.

Continue reading “Pico-Sized Ham Radio”

The Pi Pico replacement board in question, assembled, held diagonally in some type of holder

ProPico For Your Pro Pico Needs

Ever feel like the Pi Pico board could be doing way more given its footprint? Does it bother you that the RP2040’s ADC quality is even further decreased because of the noisy onboard switching regulator? Miffed about decisions like the MicroUSB socket, the 2MB flash, or lack of the reset button? [Dmytro] brings us an open-source Pi Pico design, sporting the same RP2040 and a fully compatible footprint, but adding a number of improvements to its surroundings.

There’s a good few additions, all of them hacker-friendly – [Dmytro] adds comfortably-spaced reset and boot buttons, a USB-C socket, a dedicated low-noise voltage reference for the ADC, one more LED, and an I2C EEPROM footprint socket that is compatible with FRAM chips. Everything worth preserving is preserved – the pinout stays the same, including the SWD connector, which now sports an extra RESET pin. The bottom side USB testpoints remain, with only the four testpoints changed for more useful signals. Last but not least, the switching regulator is replaced by the venerable 1117 – you lose the ability to power your Pico from two AAs, and the capacitor series resistor requirement isn’t great, but you can easily put one of the drop-in 1117 replacement regulators on there.

What’s great is that the design is fully open-source, with KiCad files available. Want to design your own Pi Pico footprint board, improve upon this one even further, or maybe make a more tailored one? Treat yourself to the GitHub repository! There’s also a pinout diagram and a KiCanvas schematic for all your tinkering needs. We’ve covered drop-in replacements for classic drawer-inhabiting parts like the Pi Zero, for the 7805 (twice!), the 6502 CPU, and even for the DE9 serial port connector. No matter the purpose, they’re always a joy to see.

Gyro-Controlled Labyrinth Game Outputs To VGA

This gesture-controlled labyrinth game using two Raspberry Pi Pico units does a great job of demonstrating how it can sometimes take a lot of work to make something look simple.

To play, one tilts an MPU6050 inertial measurement unit (IMU) attached to one Pico to guide a square through a 2D maze, with the player working through multiple levels of difficulty. A second Pico takes care of displaying the game state on a VGA monitor, and together they work wirelessly to deliver a coherent experience with the right “feel”. This includes low latency, simulating friction appropriately, and more.

Taking a stream of raw sensor readings and turning them into control instructions over UDP in a way that feels intuitive while at the same time generating a VGA display signal has a lot of moving parts, software-wise. The project write-up has a considerable amount of detail on the architecture of the system, and the source code is available on GitHub for those who want a closer look.

We’ve seen gesture controls interfaced to physical marble mazes before, but two Raspberry Pi Picos doing it wirelessly with a VGA monitor for feedback is pretty neat. Watch it in action in the video, embedded just under the page break.

Continue reading “Gyro-Controlled Labyrinth Game Outputs To VGA”

Raspberry Pi Pico Becomes MIDI-Compatible Synth

ECE 4760 is a microcontroller course that runs at Cornell every year, and it gives students a wide remit to pursue various kinds of microcontroller projects. [Pelham Bergesen] took the class and built himself a MIDI-controllable synthesizer out of a Raspberry Pi Pico.

[Pelham] coded a library to parse MIDI messages on the Pico, with the microcontroller’s UART charged with receiving the input data. MIDI is basically just serial at a baud rate of 31.25k, with a set message structure, after all. From there, the Pico takes the note data and plays the relevant frequencies by synthesizing square waves using a PWM output. A second PWM channel can also be blended with the first to generate more complex tones.  The synthesizer is designed to be used with a source of MIDI note data such as a keyboard controller; [Pelham] demonstrates the project in use with a Roland JD-XI. It’s a fairly basic synthesizer, but [Pelham] does a good job of explaining all the steps required to get this far. If you’ve never done an audio or MIDI project before, you might find his guide very helpful for the way it steps through the basics.

[Pelham] didn’t get to implement fancier features like direct digital synthesis (DDS) or analog audio effects before the class closed out. However, that would be an excellent project for anyone else developing their own Pico synthesizer. If you whip up something that sounds good, or even just interesting, be sure to notify us on the tipsline. Video after the break.

Continue reading “Raspberry Pi Pico Becomes MIDI-Compatible Synth”

PicoDebugger Makes Development Easier

Debugging a Raspberry Pi Pico is straightforward enough; it simply involves hooking up something up to the USB and SWD pins. [Mark Stevens] whipped up the PicoDebugger to make this job easier than ever before.

The Raspberry Pi Foundation developed the Picoprobe system to allow a RP2040 to act as a USB to SWD and UART bridge for debugging another Pico or RP2040. The problem is that hooking it up time and time again can be fussy and frustrating.

To get around this, [Mark] whipped up the PicoDebugger board, which directly connects most of the important pins for you. Drop a Pico into the “Target” slot, and you can hook up the PicoDebugger to its UART lines with the flick of a DIP switch. The SWD pins can then also be connected via jumpers if so desired.  It also features a 2×20-pin header to allow the target to be wired into other hardware as necessary.

It’s a neat project, and it certainly beats running a bird’s nest of jumper wires every time you want to debug a Pico project. Simply dropping a board in is much more desirable.

We’ve seen some other neat debug tools over the years, too. If you’ve got your own development productivity hacks in the works, don’t hesitate to let us know!

A BASIC Interpreter For The Raspberry Pi Pico

It’s pretty easy to program the Raspberry Pi Pico in Python, or you can use C or C++ if you so desire. However, if you fancy the easy language of yesteryear, you might like PiccoloBASIC from [Gary Sims].

Putting it simply, piccoloBASIC is a BASIC interpreter that runs on the Raspberry Pi Pico. It features all the good bits of BASIC such as GOTO and GOSUB commands, that fancier languages kind of look down upon. It’s also got enough built-in routines to handle regular programming life, like sleeps, delays, a basic pseudorandom number source, trigonometric functions, and the ability to deal with floating point numbers. As far as microcontroller tasks go, it’s got rudimentary support for talking to GPIOs right now via the pinon and pinoff commands. However, it’s probably not the way to go if you want to bit-bang an SD card to within an inch of its speed rating.

Down the road, [Gary] hopes to add support for features like the Pico’s I2C, SPI, and PIO hardware, along with networking protocols and Bluetooth. PEEK and POKE are also hopefully on the way for those that like to fiddle with memory directly.

Meanwhile, if you’re looking for a different yet similar take, explore the port of MMBasic to the Pico platform. Video after the break.

Continue reading “A BASIC Interpreter For The Raspberry Pi Pico”