Making CNC controllers in the laziest way possible.
Forgot to update this, did add a StepStick Buffer board as a distinct project, had a PCB made by OshPark, worked fine on a RAMPS board.
After getting the STM board reprogrammed with a bootloader I realized that was still quite a bit of work.
In investigating boards for my 3d printer there are a plethora of 32 bit cheap boards out there now with step-stick style drivers which are designed for easy upgrades.
I've found many Step Stick format boards that pass through Step Direction and Enable to external pins. But often these 32 bit 3d printer boards are 3.3v and sometimes low current, which may not be enough for my CNC drivers. So I'm now working on a buffer board that will take Step Dir and En, level shift them to 5v at up to 16mA, and put them out on the motor pins to be connected to an off-board driver with its own on-board optoisolator, which likes 5v better than 3.3v.
The other half would be making the end-stop inputs tolerate 12 or 24v. The easiest path to this seems to be a commercial optoisolator board, or 2, depending on number of inputs.
Then there's the 0-10v for the motor drive, but those should be easy.
Success, part 1. Was able to use an ST-Link debug probe and ST-Link utility to wipe the MCU on this board:
SainSmart 5-Axis Mach3 USB Controller STB5100 https://www.amazon.com/gp/product/B07L3DYVJ1
This board appears to use an STM32F103 with the serial numbers filed off.
Used the leads shown in the main photo: https://www.amazon.com/gp/product/B07P5BSWFH
Used the ST-Link Utility to disable read protection(which wipes the chip) then wiped the chip and disabled flash protection, then installed DAPBoot https://github.com/devanlai/dapboot using the ST-Link and set the bootloader to use PB5 which is broken out on the HD15 connector. Pull it high and the bootloader runs, leave it low and it lets blinky LED run(after sending it to the board with dfu-util)
Only problem was I left the board connected to the debugger, which pulled NRST down when I unplugged it from USB power so the first couple attempts to flash the bootloader didn't seem to work(flashed fine then USB didn't enumerate) because the chip was held in reset.
Next to write a quick program to show the state of all GPIO pins so they can be probed. Will set them all to inputs then inject signals to each(the output pins by injecting to the buffer that drives them so I can see which output is which STM32 pin)
1. Mach3/4 USB breakout boards often run an STM microcontroller, reprogram it and make it run GBBL locally instead and then use the USB input for GCODE transfer from another device, or hook to something like an ESP to feed wirelessly.
2. Cypress PSOC5lp has a nice, cheap carrier board and runs at 5v. Make the worlds simplest interface board and break out pins to 26 pin IDC for connection to 25 pin Dsub. Hook up to easily available CNC parallel breakout board and run maybe GRBL-HAL. It looks like there are enough pins to do 2 breakouts, maybe use the second one for more inputs with a cheap commercial opto board instead of a parallel board.
3. Same as 2 but with other simple carrier boards(STM nucleo/bluepill, ESP32, TI, ?), maybe more complex based on 3.3v interfacing.