Teenage Engineering PO-80 or Gakken Record Factory 78RPM Hack

Recently, Teenage Engineering released the PO-80 Record Factory, which is a rebranding of the Japanese Gakken Record Maker kit.  It is a really neat record player that can also cut custom records.  One problem I had with it is that it only plays 33RPM and 45RPM, but we had a lot of 7″ 78s I wanted to play on it, so I fixed it.

Most cheap record players use the same 5-pin motor module which is a DC motor with a speed controller built in. This particular one uses the EG530SD-3F.  By wiring  3 of the pins in different ways, it will automatically play at constant speeds of 33RPM, 45, RPM or 78RPM. The 33 and 45 are basically the two built-in speeds, which is what this kit uses.  To add the functionality of 78RPM, you can add a resistor to the circuit.

There wasn’t a detailed datasheet explaining what’s inside the motor, but rather many listings for this motor had the following instructions.

Adjusting Method:

  • When the changeover switch reaches 33, use a small flat-blade screwdriver to adjust the resistance of the L hole of the motor, and the normal disc is 33 revolutions per minute.
  • When the changeover switch reaches 45, use a small flat-blade screwdriver to adjust the resistance of the H hole of the motor, and the normal disc is 45 revolutions per minute.
  • When the transfer switch reaches 78, use a small flat-blade screwdriver to adjust the resistance on the PCBS board. The normal disc is 78 revolutions per minute.

Luckily I found someone online who had taken one apart and described the controller circuit. This, along with the “official documentation” to get in the resistance range was all that was needed to make the simple hack.  The official info is as follows:

For this hack, I needed  a way to add in the resistance for when I wanted to play 78s, but I had to be able to completely remove the resistance to use the 33 or 45 speeds. For this I just found a JST connector, but any female wire connector would work. I soldered the wires of the JST connector to the motor based on the link above. I made sure my wires were long enough to reach out the side the connector for the record cutter extended to.

For the resistor, the only info I could find online were several schematics showing the use of a 300Ω potentiometer so you can adjust it, however, I only had a 5k so I threw a 1kΩ in parallel with it to get me somewhat within the range.  The actual resistance needed is around 160Ω but it is nice to have the knob for adjustment.  I intentionally left the resistor leads long so I could use them to plug into the JST connector. Notice that for this, you only need one side and the center lead from the potentiometer.

The final result looks pretty clean. It’ll look cleaner when I throw some heatshrink on the potentiometer. Again, this is only used for playing 78s so when playing the other speeds I disconnect the potentiometer and store it in the box the record player came in. Check the video out below.

COM Port Name Pop-up

When working with microcontrollers, especially helping students debug their work, I hate having to open device manager or a serial terminal to search for the serial port name of the device I most recently plugged in.  I wrote a small python script to hook into Window’s notification system to know when a new COM port has been plugged in, and then display its name in a popup window.

The first step in this was to find out when something is plugged in.  I tried all sorts of things with windows event viewer to see if I could detect this because I didn’t want to have yet another service running in the background on my PC eating resources all the time, and I wanted the reaction to be fast, so polling every 10 seconds or something would be too long to wait for a popup.  Alas, I couldn’t find any way to get USB port data to trigger an event in windows when you plug in a USB port.

Looking online for examples I only seemed to find C# or VS code.  I’m not installing anything more to develop this one project, and at first I wanted to see if there was a cross-platform solution since I was going to have to write it all from scratch.  Eventually I settled on a windows-only solution because I found an excellent site that is full of good code examples for win32 python interfacing from a user’s post on stackoverflow. these kinds of sites are few and far between, so I’m glad I came across it!  This code example connects into Windows Notification center and WMI (Windows Management Interface) to detect when USB items are plugged in. You can detect drives, networking, and serial ports based on the example in the link.

Once this info is gathered, the next step is to create a popup with the COM port name. For this I came across an example using the plyer library for python which is dead-simple.

When you run python code, by default, the command window is always visible, so I tried a few things to hide it. Firstly, you should be able to just use pythonw.exe instead of python to run the code and it should hide the window. For some reason, this didn’t always work. The next thing I tried was using the win32 library in python. This grabs the foreground window and hides it. Since the foreground window is likely this python script, it works fine. Running it sometimes takes a faction of a second for it to hide the window so sometimes you see it flash a command window.

The final step is to have this app start when you turn on the computer. Some folks said you could just put your python file into the windows startup folder, but this never worked for me. Instead, I keep the python script in my installations folder (where I keep all my useful apps) and I wrote a batch script to run the python code. I saved the batch script into my startup folder and rebooted.  It works great and doesn’t use many resources at all!

Get my python code and batch script here.  If you use it, let me know in a comment.

Now,  if you use linux or mac, I recommend you check out usb-ser-mon which has some of the same functionality of detecting plugged-in devices. Then you can use the same plyer code to generate a popup from what I understand.

Making Procedurally Generating Spalting Patterns

I did this a while back, but someone had an interest in this on hackaday so I tried to dig up my old code.

The goal is to generate wood grain patterns for laser cutting/CNC of plywood. Mainly, I wanted to have something similar to spalted maple laser etched onto the plain birch veneered plywood. The thing that inspired this project was this post of speaker boxes on imgur I came across. The design looked really cool, and while spalted maple is expensive, birch plywood is relatively cheap.

My first step was to procedurally create a random pattern.  Similar to the imgur post, I looked at creating camouflage. I found a great example code on openprocessing by ThingOnItsOwn that used perlin noise to create a camouflage pattern. I tweaked the values a bit experimentally, then stretched the entire design to make the final design look more like woodgrain.

The next step was to just capture the edges of these blob shapes from the first pattern. I came across this example from Richard Bourne It is forked from this example from R. Luke DuBois.   Honestly I was being lazy because I had written edge detection code in college as it is standard image processing, but I knew someone else had it already in processing. Instead of using for loops, this version manually calculates out the kernel.

This leaves me with a result that looks pretty realistic.

Camo:

Spalting:

This creates a PNG filetype which can be used to add texture to a 3D print in the slicer. The slicer will adjust the print to incorporate the texture in 3D giving it a woodgrain-like effect. You technically could use this as-is on a laser cutter to create spalting like my inspiration, however being raster data, it would take the laser a long time. It’d have to scan the laser (the thickness of a human hair) across the entire area of the panel you are applying the texture on. To make this faster, you can vectorize the PNG in inkscape or other software to outline the dark areas of the PNG.  This will cut fast as it is a vector (the laser would just have to draw the lines the same way your hand would. That would save a lot of time.

If anyone wants to add vectorizing to my code, please do! You can clone my github and put it on P5.js. I was going to add it, but I got lazy again. I even asked ChatGPT3 to help combine this code with something like potrace or imagetracerjs but it produced code that looked great, some even compiled after a few tweaks, but never worked.

Baofeng TP-8Plus, UV-13 Pro, GM-30, and similar radios

So I was at the bin store the other day and I came across a couple of Baofeng TP-8Plus radios. I’m no expert on HAM radios in general (please correct me on anything I’m wrong about on this page BTW), but I got these two for $7 each so I couldn’t beat it. It turns out, the models I picked up are now a ubiquitous hardware model with different firmware which can be used for multiple purposes.

Firstly, I can’t tell the differences, but the TP-8Plus is apparently also called the UV-13 Pro.. as well as many other models (listed below). There are different levels when talking about radios like this, HAM and GMRS. HAM radio is amateur radio and you have to pass certifications tests for the license. These radios are classified as HAM radios since their broadcast power is too high for GMRS (which is a higher powered two-way walkie-talkie band). To use GMRS band, you need a radio rated for this band and a GMRS license (no certification test required) and your whole family can use the radios apparently. The radios are too powerful as they are for this, however there’s a firmware you can get for them that limits the broadcasting power turning them into GMRS-legal radios (from what I have read..)

Where to get Firmware:

Before doing anything, I took a pic of the current firmware version as shown below. You can see this by holding the flashlight button as you turn on the radio

I was unable to figure out how to copy this ROM onto my PC, but I did find an older version of the UV-13 firmware I could use to replace it if I needed to… which I did. I wish I could find the firmware online.

Where do you get firmware? It depends on what you want your radio to do. I have it on the authority of some random dude on reddit and other that this radio’s hardware “is the same for Baofeng UV-13, TP-8, Explorer QRZ-1, TYT TH-UV88, Pofung P15UV,  Rugged GMR2, TIDRADIO TD-H5, Retevis RT85, and Radioddity MU-5, GM-30.”  Firmware for those radios should work here. They each have slightly different abilities, so it is really up to you. what you’d like it to do. Do your research to see what legal licensing steps you can take based on how you want to use your radios. Comment below if you know where to find other firmware for this radio.

For using this as a HAM radio (where you can enter in frequencies manually or scan them in the 2m band) the UV-13 firmware was easiest to find. The only version I came across online from multiple sources was UV13-Firmware-V06.01.013-20211104_01013.bin I was able to successfully install this without issue and I can still write program settings using the P15-UV software.

For GMRS walkie-talkie usage, I came across the Radioddity page with their firmware. It is important to note that after installing this firmware, I had to use Radioddity’s own version of P15-UV branded “GM-30”. The link to their firmware and programming app is here. From what I read, this firmware limits the transmit frequency making it legal to use the radio. NOTE: I am not a lawyer and I have no way to test the radio’s power with this firmware to compare, it is just what I read on the internet.

Programming:

There are 2 programming modes. One for just reading/writing programmed channels and settings, and another mode for updating firmware. There’s a trick to program firmware I describe below.

The software for the Baofeng firmware is P15-UV CPS software. I was able to find a version of it from a company called abbree.  This only works for the Baofeng firmware. I had to get my copy from the wayback machine as the link on their main download page was broken. This is different software than my older UV-5R used. If you have the GM-30 firmware installed, you must use this Radioddity branded version of the programming software.

    1. I already had a USB cable for these radios since I had an older model. Once installed you can plug it up to the radio, turn on the radio and connect. In the PUV-15 software, select “Program–>Communication Port” and select the com port. If you don’t know which this is, open windows device manager and look for the COM port that disappears when you unplug the cable.
    2. Next you want to back up and save all the channels and settings from the radio by selecting “Program–>Read from Radio” and click “OK” to read all the default settings. Then you have to click “File–>Save As.” This will save your channels and any program settings to a file on your computer.
    3. To flash the firmware, download your preferred firmware version (more on this below) and select “Program–>Tool” For this to work you must manually put the radio in programming mode by turning it off, holding down the PTT and Flashlight button as you turn it back on again.  You know you did this right when the screen does NOT come on, but the red light at the top glows dimly.
    4. Click “Upgrade” button on the app to change the firmware. DO NOT INTERRUPT THIS PROCESS or you might brick the device.
    5. Rewrite the channels and program settings by choosing “Program–>Write to Radio”
    6. If you were a genius like me and forgot to backup your settings, your menus and voice might now be Chinese.  No problem, simply change the language by scrolling through the menu that says this:

      Then pressing the menu button to edit and the down button to change it to English. Press menu again to confirm the change.

    Licensing:

    Again, I am no expert on the matter, but here’s what I learned from all the forum posts and videos I found on this radio. There is no license required to use these radios as listening-only devices. You can use them as weather radios or even emergency service scanners. If you wish to transmit at all you’ll need either a GMRS license or a HAM radio license depending on what firmware you have and how you plan to use the radio. See the comparison chart below:

    GMRS HAM
    One license covers your family. Licensing process is confusing, so watch a recent tutorial video on the process to find out the steps required. One license covers you. You can allow your family to broadcast, but you must be there with them at the time.
    No exam required Must pass a certification exam (there are different levels)
    To be used as walkie-talkies (eg. in your family) because they are shorter-range transmissions. Connect with community of HAM radio operators all over the country, world, and even on the international space station!
    Use Radioddity GM-30 firmware and their custom programming app. Use Beofeng UV-13 firmware and the P15-UV programming app.
    License last 10 years License lasts 10 years
    Cost $35 Cost $35

Ultimate List of Tips, Tricks, and Tutorials for Fab Lab Students

This post is a not on a lot of techniques for using different types of machines and processes for making stuff. I’ve had this for years but decided to finally publish it. I’ll add to it periodically, but I figured others might find it useful as well. RIGHT-CLICK to open in new windows.

Laser Cutting:

Embedded Systems, Microcontrollers, and Arduino

Circuit Board design and Fabrication:

3D Printing:

Casting and Mould Making:

CNC:

Machines:

Mechanical:

Metal-Bending:

Miscellaneous:

 

 

================================================

My favorite Fabrication-related researchers:

Dr. Stephanie Meuller at MIT’s research group

Dr. Patrick Baudisch at Hasso Plattner Institute Human computer interaction reserach group

 

Teaching Research:

Sketchnoting basics

Graphic Recording

Sketchnote travel journal to get started

Control Theory:

Brian Douglas’s awesome youtube channel explains Control with some great examples.

Kat Kim has another great channel on Controls as well as other Electrical and Computer engineering examples and lectures

George Gillard has a great whitepaper explaining PID controls

Another great PID example is from this Reddit thread

Learning Math concepts:

MathVault – Learn higher-level (college-level) math concepts more intuitively

BetterExplained.com ADEPT model for learning math intuitively

Good sources of materials:

XXXXXXXXXXX    Todo when I’m not so busy or lazy: XXXXXXXXXXXXX

Add sections for PCL shapelock and other named plastics to ultimate FabLab list.

Also add cardboard modeling guy and nibbler tool

Add anodizing alum and titanium, bluing/blacking steel,

And interesting research I like with lasers  hydrographics and uv printers and metal hologram art