DIY smart roller blinds motor

1–2 minutes

Parts list:

  • wt32-eth01 (esp32-s1)
  • A4988 driver (TMC2xxx is better e.g. TMC2240 or TMC2209)
  • LM2596 (buck converter)
  • Nema17 stepper motor 34mm
  • 10 turn potentiometer
  • O-ring as a drive belt
  • barrel jack 5.5×2.1mm
  • 24V power brick GST36E24-P1J

Fun little project with better specs, in certain aspects, than off the shelf solutions.

  • Absolute position tracking
  • mDNS
  • Fully self contained interface, no app no cloud
  • Wired interface, batteries won’t go flat, microwaves won’t knock it of the network.
  • OTA (Over The Air) updates enabled via espota.py

Main feature is ethernet and no need for an app and a multi-turn pot as a cheap “multi-turn absolute encoder”, so when I inevitably need to open or close and don’t want to use a phone or desktop I can just move the blinds without a worry that it will need to be recalibrated. Also it has mDNS so blinds.local is enough for the browser to find it, unless you try to do it on an android phone that is made in 2025 and still doesn’t support it at the OS level…

If someone tries to do something similar I warn you that esp32 “12bit” ADC is more like a 7bit ADC with 3 additional bits that are correlated with reality and 2 bits of pure noise. Thusly you should definitely consider using an external ADC, if I had known this I would have. Using only 7bits (128 discrete points) leaves us with not enough resolution to accurately position the system but this can be somewhat addressed with filtering which can causes issues of its own if like oscillation due to ADC value lagging behind and the motor overshooting the target position.

files:

https://cad.onshape.com/documents/99d5c4fabdc9c308bca75db3/w/10602548bcaf2bcacc7ce1f0/e/012953437aa52898b395a942?renderMode=0&uiState=69a09c77bce8c4f385cf6a2d

code (a real mess, beware):


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *