Sunday, September 21, 2025

Meshtastic 64 - A meshtastic radio for the Commodore 64


For this project I designed and built a meshtastic radio that plugs directly into the Commodore 64. My goal was to release this at the VCF Midwest show (VCFMW) in Chicago on September 13th and 14th. I barely made it!

 

meshtastic 64 for the commodore 64
The finished module plugs into the Commodore 64 User Port



The idea

I had heard some things about meshtastic, but I was no expert. As I looked into it, I learned that it is an open source, decentralized, peer-to-peer, text messaging network designed for long-range mesh communication.

This seems to attract people that are either interested in the technology, interested in a decentralized / non-monetized communication system, interested in emergency communication - or any combination. My take was a nerdy 8-bit project to get a 1980s computer on the mesh.

I bought some modules off Amazon and started getting results with the Heltec LoRa V3, so that became my platform.


Prototyping

I then started working on a proof-of-concept version. I wanted to hook up to it using a serial port which the meshtastic supports. I did need to find two IO pins to use and after some investigation settled on pins 45 and 46. The meshtastic typically communicates using protobuf commands. I spent some time untangling these, but soon shifted to the SERIAL>MODE>TEXT_MODE setting. This focuses on simply sending and receiving text through the meshtastic primary channel.

Soon I had a proto board which was sized to fit in a reproduction Commodore 64 cartridge shell. The shell's recessed label area is untextured and made a perfect lens over the little display.


 


Coding on the Commodore 64

I worked on a program for the Commodore 64. I chose to write the program in BASIC because it was quick for me to develop with, very retro, and the speed needed for text input and printing to the screen was acceptable. I did much of the programming on an actual Commodore 64, but transitioned to CBM Program Studio on my laptop while traveling.


Initial Programming Setup
First Programming Setup


PCB design

Then I laid out the PCB. I worked hard to get the display lined up with the "window" in the reproduction cartridge cases and position the Heltec so that the USB C would be accessible to the side. I also added a big rectangular cutout to the center of the PCB for an internal battery. I even added some fun LEDs that could be controlled by the Commodore 64.

When I got the boards, they looked great, fit well, but all the connections were mirrored. Ugh!



An ugly twisted wiring of the connector did prove it worked. I experimented with options of soldering the Heltec to the PCB. A cut cross-section of the plastic cartridge shell confirmed a method where the Heltec module was aligned right below the top bezel. So, it was off to design and order round two of the boards.





Refining the program

I worked further on the Commodore 64 code, now having two machines that could talk to each other. I experimented with PETSCII images for emojis and custom images, however the full PETSCII character set trades off the lower case characters on a Commodore 64.


   


In the end, I favored upper and lower case text communication between the Commodore 64 and others on the meshtastic network. To do this, the program must convert between ASCII and PETSCII. I used the commodore Upper and Lower case character set and provided no support for PETSCII graphics in the standard text messages.

But I couldn't resist getting some PETSCII art in this project, so implemented a separate PETSCII graphics message and include an editor, eight slots to hold graphics, SAVE and LOAD commands, and even a method to save incoming PETSCII graphics for editing or resending.


Finishing the case

To finish the case design and build, I cut slots for the USB C on the side, drill holes to mount the antenna on top, and worked on how to get button presses from the front surface of the cartridge shell. My solution used purchased acrylic rods cut to length as extended button actuators. I used my drill press to drill corresponding holes in the front bezel for the rods to protrude through. To hold the rods straight and in place, I glued in O-rings inside the shell which worked great and did not muffle the button click.




Race to the VCFMW 2025 show

Like any good hobby project, time was running out. The corrected PCBs arrived just 10 days before the show. I worked on building 20 units to take to the show. A couple of my buddies came to town a day before the show. I quickly finished a manual, a disk with the software, made a table info stand, and then made my buddies fold boxes and label disks. (We did have a nice BBQ dinner first) We completed 19 units for the show - which I was very happy with.





At the Show

After some "issues" during setup, the show went great. Many friends brought separate c64s to help test and play with the meshtastic 64 during the show. VCFMW had set up a special meshtastic channel for the show and there were up to 200 nodes all talking at once! The Commodore 64s were right in there, sending and receiving all the messages. Lots of people stopped and discussed the project with me.






Because the meshtastic 64 modules have a built-in rechargeable 1000mAh battery, they can operate independently from the c64 like a typical meshtastic radio. That meant I was able to keep up with the conversations when I wasn't on the show floor - even catching up on overnight messages over my Sunday morning breakfast.


Checking overnight messages at breakfast Sunday morning


Final thoughts

I think the meshtastic 64s worked very well. The BASIC program was able to keep up with the heavy traffic at the show. My tester friends were able to find a few software bugs which were easy enough to fix. We were able to have some fun sending small PETSCII artwork back and forth but it did look like lots of garbage to everyone else.

Overall the response at the show was great - seems others enjoyed seeing this as much as I enjoyed putting it together.

No comments:

Post a Comment