Hi All
Bare with me here, quite new to everything…
I am trying to learn how to drive stepper motors with MicroPython using TMC2209 v3. So far I figured out how to drive it with steps… And then started learning PWM which lead me down the UART path (to set steps), this is where I’ve hit a wall.
So at this stage I am just trying to understand how to work with UART using TMC2209. I am using Pico and MicroPython (sys.version: 3.4.0; MicroPython v1.22.1 on 2024-01-05)
Code: Select all
from machine import UART, Pin
import utime
uart = UART(0, baudrate=115200, tx=Pin(0), rx=Pin(1))
uart.write(b"?V\n")
utime.sleep(1)
print("UART Response:", uart.readline())
Response is always “None”. I’ve spent hours trying this and that and I am not having any luck. Any advice would be super appreciated.
Regarding wiring: I am using 1k resistor on GP0, both GP0 and GP1 are jumper-wired to TMC RX pin.
Thanks!
2 Likes
hi @pinkerer - welcome to the forums
I’ve had super frustrating times with uart & micropython in the past so i can relate
readline()
is always a tricky one because it can be hard to debug with. If it times out it will always return None
, but you may have just been looking for the wrong return character
it might be prudent while debugging to print all uart activity to the shell. consider adding the following to your code. it can also go in a main loop to continuously provide debugging information.
The following will dequeue a character from the uart
whenever one is available
if uart.any(): # Check if any data is available in the buffer
buffer = uart.read() # Read data from UART
print(''.join([chr(b) for b in buffer]), end='') # Convert bytes to string and print
source: https://chat.openai.com/c/3507585f-4b35-4c60-a4cb-aa0c56a177f8
2 Likes
Did a bit ore digging. Things seems to be a lot more complex than simple UART r/w. There are experimental code snippets and some lib, but seems like serial communication with a stepper using Micropython is somewhat underdeveloped (unless you want to code from scratch) using C… Anyway, thought I’d just close this off
2 Likes
FWIW, there is this code, GitHub - kjk25/TMC2209_ESP32: a port of a TMC2209 Python Raspberry lib to Micropython esp32 Lolin32 Board
It’s a modified version of: GitHub - Chr157i4n/TMC2209_Raspberry_Pi: this is a Python library to drive a stepper motor with a Trinamic TMC2209 stepper driver and a Raspberry Pi
I’m having a little trouble with sensorless homing, and the micropython code hasn’t been kept up to date, I’m seeing if I can fix things… I’m using this on an SKR Pico … not using for printers, but it’s cheap for 4 x TMC2209 and a pico and all the other bells…
1 Like
fwiw, someone has forked the kjk25 code to something better suited for the Pico:
1 Like