PD Stepper is a USB PD Powered Nema 17 stepper driver I made using the Silent Trinamic Driver TMC2209 controlled with a ESP32-S3. Works perfectly with ESPHome.
More info on YouTube: https://youtu.be/qECEGUZE04s?si=QT0izP_1x6_tVRf5
252 messages ยท Page 1 of 1 (latest)
PD Stepper is a USB PD Powered Nema 17 stepper driver I made using the Silent Trinamic Driver TMC2209 controlled with a ESP32-S3. Works perfectly with ESPHome.
More info on YouTube: https://youtu.be/qECEGUZE04s?si=QT0izP_1x6_tVRf5
When exactly would one use a single/standalone USB powered stepper?
Ok, I watched the whole video, thats pretty cool
Interesting i thought ESPHome only had support for the A4988 and the ULN2003 stepper drivers? https://www.esphome.io/components/stepper/
Currently using the A4988 component at the moment (just step and dir) and looking into specific TMC2209 component to make use of some of the extra TMC2209 features
@slender prawn Perhaps you will give my TMC2209 component a shot? Works with pure UART and S/D interface https://github.com/slimcdk/esphome-custom-components/tree/master/esphome/components/tmc2209
Thanks will check it out!
Your project reminds me of my long on going project ๐ https://github.com/slimcdk/wisweep
Can you keep track of continous motion with the as5600? I thought something like as5601 would be more suitable
Yep very easy to do "wrap around" from the absolute angle output with just a couple lines of code. The AS5601 can just do this for you with the quadrature output, works the same way though.
what's the pricetag on that beauty ?
65 / 80 NZD = 36 / 44 EUR
do you have a store link as well ?
I would like to see CAN and have it powered via XT30(2+2) connector, but this device is not for such cases. Ideal device when you need only one stepper - like for blinds, lock / door (chicken coop door? :D), or just for having fun with a stepper ๐
maybe in the PRO version ๐
lol, I didnt even realise @slender prawn was in NZ ๐
Not relevant here, but there is one in the kicad forum who has made a daisy chainable one with CAN for nema14.
@sour elm I think if I were to develop another version I would probably go for PoE next
That would be cool
I don't have an immediate use for them, but I think I need one of these and a PoE version immediately ๐
Have you had a chance to test? Let me know if there are any features you need or something I can improve
Not yet as it has been pretty full on organizing the pre-orders but it's on my list of things to do. I can send you a board to try out when the next batch arrives if you want
Already pre-ordered actually ๐ Understandable! Seems like a lot on reddit ordered as well. How many are you shipping out?
Ooh nice! last I think last I heard about your component it was still a wip, but it did inspire me to buy some other TMC2209 boards. I've only done the basic dir/step controlling so far, but was very much looking forward to trying out the uart controls
Awesome thanks for the support! Have just over 100 boards to ship
u ship to EU ( Germany) ?
oh yea u do
good...then you don't need to fight with customs ๐
When do you think you will start shipping?
I received my preordered one a couple of weeks ago.
Great design!! What PD chip are you using?
The schematic is in his repository https://github.com/joshr120/PD-Stepper/blob/main/PCB/PD Stepper V1.1 Schematic.pdf
So what have all done using this PD stepper? or what are the plans:D ?
Just received mine in the mail. I am looking at starting with a set of motorized window shades. If it all works well, will be purchasing a few more to get all the windows in house set up
All pre-orders have been fulfilled (ended up being a lot more than I expected so thanks!) and kits are now in stock
Just got three of these for controlling blinds along with this mount: https://www.printables.com/model/465889-minimalistic-motorized-roller-blinds-nema-17-stepp/files
I'm trying to understand the current settings. My motor has a max current of 1.5A; do I need to adjust the vref pot on the board or can it be set by software? The web interface offers a current control as a percentage; what's it a percentage of?
I already see good use, automatic window blind actuator with position control. You can set your window blinds to exact position.
(I'm talking about European ones, which are mounted outdoors)
Edit: now i saw the video, alright next time I'm gonna watch something before talking
I took that question about current settings to https://github.com/joshr120/PD-Stepper/issues/19
I printed a mount and gear for turning blinds.
With motor inset into the wall, and motor cables fairly hidden at the bottom. Didn't like having the USB power cable on the top so I fed power to the Vbus/GND pads on the back of the board.
Those S1761-42R spring terminals are a real PITA to deal with.
Putting them on veroboard was painful too (but gives a mechanically better result for the actual contacts).
Might have to learn how to design SMT boards and get them manufactured in China, just to get a handful of those 5mm x 25mm boards with two lanes on, but with the spring terminals soldered on competently ๐
But if the original PD stepper board had a 6-pin PH header which did motor and power, in place of the existing one, that would be amazing ๐
Nice! Did you have to gear it down? Or works directly?
Well... I went through three iterations of "need a bigger stepper motor" before I got my 3D printer, when I was using a gear cannibalised from the previous blind mechanism. But now I have a 3D printer I can "gear it down" by just printing a small gear which needs less torque. So I've dropped from 12 tooth to 10 tooth and it's working nicely.
Most of that is mine; I imported Josh's STL for the cover, to add hollow columns for light guides for the red and blue LEDs (2mm clear acrylic goes in those).
And a very much not hollow column to sit on top of the bright green power LED and hopefully hide it. Otherwise it shines out the heatsink hole.
Bah, I was being dim and thought I could use the QWIIC connector at the bottom (out of sight) because I wasn't using i2c for anything. Of course if I want to use the as5600 encoder I am using i2c. Guess I'll have to plug a wire in at the top after all. Unless I can find a GPIO pin on the back too... or use an i2c GPIO expander for the reed switch that detects the blind being fully open
Can you make a hard stop at the top and use stallguard to home the position?
There is a hard stop at the top, but I'd like to quietly stop when the reed switch triggers rather than have all that clicking.
I'm also going to teach the esphome setup that if the encoder goes up above what it thought was the top.... then that clearly wasn't the top, and to adjust the sensored_home_pos accordingly.
Right now there's something wrong with the run lengths. I tell it to close, and it does, but although it calculated the right number of steps, the encoder says it's only about 66% closed. Then when I tell it to open, it only opens about half way. Consistently. Going to redo all those calculations and debug...
There's also power weirdness. Pull on the blind cord fast, and even when the board is unpowered, its green LED lights up. Which is OK. But if you do that when it's powered, it crashes. Which is less OK but still maybe "don't do that then". But I think I've also seen it reset when the motor stops, which is definitely not helpful. And then it doesn't know whether it's open or closed (but the reed switch will help that)
Sounds like some flyback diodes might be needed?
Yeah.
If you tune the run parameters there shouldn't be any clicking - only a single clack ๐ Also, the distance issue sounds like you might use another microstepping and need to adjust the ratio between encoder and stepper. Could that be the case?
[09:19:26][W][component:237]: Component as5600.sensor took a long time for an operation (4184 ms).
[09:19:26][W][component:238]: Components should block for at most 30 ms.
That probably doesn't help. If it's off in the weeds for 4 seconds, it's going to miss turns as it counts the encoder wraps
I've removed the encoder ratio variable and just calculate directly in the cover lambdas, 400 * %{microsteps} / 4096
It isn't that.
Is it definitely connecting to the sensor? That seems like it's probably trying to repeatedly read and failing. Whatever it's doing, it should be broken up instead of blocking for 4s
Oh... I may have just destroyed a laptop. Was experimenting with it connected to serial so I could see results better than over MQTT. Moved the blind manually and now the laptop is dead
Wonder how many volts it got fed on its USB port.
Definitely need a diode there.
And I need a new laptop
The sensor was generally working, FWIW. But just occasionally skipping, I think
But it's going to be a while before I get to play with that again
OK... laptop isn't dead! Leaving it for a while and then using a pin to press the reset button for a whole minute seems to have worked. I'd tried shorter presses.
Thank $DEITY for that ๐
I think I finally have it all working.
It is not ESPHome. but i just got my PDStepper working:
Nice. What is it?
guess some curtain mover ๐ https://www.switch-bot.com/products/switchbot-curtain
ooh, shiny. I may look into that once I've finished with the blinds ๐
I'm toying with the idea of doing my own version of the PD Stepper board. There are some improvements that maybe I could try to persuade @slender prawn to make, like switching to an AS5601 for more reliable measurement, adding a diode or two for back EMF protection. But I also want to bring an AUX GPIO to the bottom of the board where it's less visible (a fifth pin on the existing QWIIC connector would do it, but then it wouldn't be a 4-pin QWIIC connector. Maybe it could be a separate i2c bus from the one used for the AS560[01] so it's usable as GPIO or I2C. And although I have worked out the spring terminal thing to apply power directly to the back of the board , it'd be nicer to have a connector on the board. If I were tweaking it myself I'd just put a single 7-pin connector where the motor connector is, and drop the 1.0mm connectors. I'd also move the green power LED. Even with a black case designed to block that, it still shines out the heatsink gap.l
I think with AS5601, maybe an added diode to protect USB, and separate GPIO pins for the QWIIC connector so that it can be either i2c or something else, that would suffice.
My current solution for getting at the GPIO is to have a single wire to the 3-pin AUX connector which comes straight back under the board and make my power connector (using the spring terminals as shown above) into 3 pins
That's so obviously going to break if I put it in production though.
That's the prototype version (motor underneath just out of sight, will be inset into the window frame).
The light guides for the blue/red LEDs are working nicely, and the black cover mostly hides the bright green ones
@dreamy terrace its my attempt at a tube cutter (feeder for now)
I would love to see your design for the board. Having some GPIOs would be great, but please keep the qwuiic, it is super handy.
now it makes sense why it is so complicated... anyway, I like the pneumatic cutter.
There are two GPIOs already. Just on the wrong side of the board for me ๐
I'd settle for a solder bridge that can choose which to bring out to the QWIIC connector: those or the standard I2c (if there aren't enough extra GPIOs on the ESP32)
So you used some pogopins or something similar?
But I'm hoping not to have to learn how to do this. If I can entice Josh into doing something like that, and switching to an AS5601, then I'll just buy three more of those (bringing me to seven in total) ๐
Spring contacts for the power, shown in photos above
GPIO is on the aux connector next to the USB-C
Aha, I can use another spring terminal to touch the pad for the NTC!
So I can do power and the single GPIO port I need, all on the back of the board.
But I'm all done soldering those awful spring terminals by hand. Designed a board with a 3-way PH connector on the underside, and three spring terminals in the right places, which can be inset into the 3d-printed mount I showed above.
S1761R rather than PogoPins but basically, yes. https://cdn.harwin.com/pdfs/S1761-XXR.pdf
I tried importing Josh's board into kicad but it's a little above my pay grade for now. I'm going to start with getting something really simple made, and maybe I can graduate to something more complex like a variant of the pd-stepper with an as5601.
I think I'd mostly tamed the ESPHome MQTT code so it doesn't just disappear off into the weeds for 20 seconds at a time. Just have to see how many months it is before that gets merged ๐
Mockup to see how the spring-terminal PCB will line up with the board itself.
The real PCB will actually have copper ๐
But I do think I'm going to abuse a "top" plugging through-board connector like the one shown, soldering it on a right angle like it is there. A proper side-plugging SMT socket on the back of the board would be much larger.
I don't think the right angle socket is that much thicker, and would be a lot sturdier
The right-angle SMT socket is 5.5mm, plus the 1.6mm of the PCB itself. And it's 9.95mm wide for the 3-pin version.
The top-plugging through hole one that I'm planning to abuse is 4.7mm deep (no PCB now) and only 7.9mm wide.
It's the depth I care about really. I don't have 7.1mm available in that part unless I expand it just to make room; it's just the cord guide which goes around the gear that drives the blind cord.
And I'm not too worried about it being sturdier because it's entirely enclosed in the 3d-printed part
But I've ordered both versions and will play
Ok, I found one that does 45w at 20V. I'm thinking that this stepper I found that draws 2A and wants 12-24V (24V recommended) will work with the power brick I found. The torque question still remains.
@vagrant ice I suspect I have a wrong answer... I tied a bag to the blind cord and added weights until it moved, and then measured the radius of the wheel at the top... ๐
It gave me a number in Nm...
I then tried different motors, with 'gears' from the previous blinds glued to a cog that would push onto the motor shaft. Hooked up in a crappy way to a Sparkfun 'big easy' stepper motor driver, pulsing a serial port's CTS line to step it.
And then I got bigger and bigger motors because I needed more torque, ending up with 42N.cm.
And then the project sat unfinished for years until I discovered the PD Stepper board, at which I started to play again. And it turns out that my 42N.cm motor with a theoretical max current of 1.5A... actually drives the blinds just fine with 100mA, and actually I think even 20mA ๐
Not sure about 24V but the ones I listed in https://www.google.com/search?client=ubuntu&channel=fs&q=big+easy+sparkfun are all doing 12V or 15V, which is sufficient for me (modulo occasionally cutting out, which seems not to be specific to any charger; I'm hoping that issue goes away when I just feed 12V directly to the VBUS/GND pads on the back and ignore the USB-PD).
I didn't use a gearbox, but I did reduce the diameter of the blind gear so it's only got 10 'teeth' (for the balls on the cord) instead of 12. Which reduces the required torque accordingly.
My 42N.cm motors take 1.5A at 2.4V.
I will publish all my 3d models when I'm done playing (or if anyone asks beforehand)
You may also want to bump up your track widths a fair bit more for VBUS and GND (and maybe an extra via or 2) . You have plenty of room and doesn't cost anything!
Thanks. Yeah, I think I already bumped them up to 0.75mm or so for the boards that are arriving this week
Those will have the spring terminals preassembled for me. I built a prototype last weekend with them soldered by hand, which is less pretty, but working. So I have the GPIO for the reed switch entering at the bottom with the power and the connection to the motor
Can still see that green LED; going to have to add some more to the cover to try to hide it more ๐
I have columns with holes to run 2mm acrylic as light guides for the red and blue LEDs. And solid black for the green one ๐
Some tape, black nail polish, or removing it entirely should do the job ๐
Yeah. Or an extra 0.5mm on the column which doesn't quite reach it
At least powering it like this I don't have to worry about the USB power good LED ๐
0.75mm tracks, 2 vias each with 0.4mm holes.
The boards on their way from JLCPCB are only one via and 0.6mm.
But do at least have precise dimensions for the locations of the pads that the spring terminals are contacting, having loaded the PD Stepper board into kicad to find them.
And they are precise, with dimensions like 155.1051 x 114.5286 for the midpoint of the VBUS pad, for example.
Not quite sure if that's a weirdness of importing into kicad.
Heh, my first preassembled boards arrived and the VBUS/GND leg is just a tiny bit too short (1mm or so).
Not sure why, as I picked the dimensions off the PD Stepper design files. Which are precise (if not accurate) to 0.0005 mm ๐
Perhaps it's the asymmetry of the spring terminals themselves; the contact part isn't entirely in the centre of the underlying pad on the PCB. Although I had allowed for the according to the dimensions in the datasheet. It looks a bit more off-centre than the datasheet says, though.
So new boards ordered with a extra mm (and more vias and 0.75mm tracks)
here are the dimensions relative to the edge of the PCB if that helps.
Thanks. Those match what I got by loading your files into KiCad I think (the 27.754 rings a bell, certainly)
But the pad of the spring terminal which makes contact with that isn't centred on the solder pad on my board. And isn't 0.5nm off-centre as suggested by the data sheet either; seems to be more. So I need to offset it a bit more than I had
Perhaps I should have put all three in the same orientation so I could just shift the whole board.
Deliberately made my connector-soldering jig also have cutouts so I could see how it marries up to the PD stepper board, and have exactly the same thickness underneath as the aluminium spacer
How well did that work? I need a KiCad S3 reference design for my project to start with and this project looks perfect. Really well done.
I don't know. It looked sane enough but I only did it to measure the precise location of the pads. I didn't actually try getting it manufactured based on the imported design. So if you have any experience at all of getting things built that have more than three traces and three "components", your guess is going to be much better than mine ๐
It imports into KiCad beautifully.
I could see that it was beautiful. I couldn't tell if it would work. ๐
I think I saw it say there were 14 disconnected nets?
Vbus pad placement looking much better on the new boards.
Less sure about NTC now (although I didn't intentionally move it). But that's just a signal pin and isn't critical
FWIW the overall blind operation is working nicely now. I deal with the random power cycles from all my PD power supplies, by making the first 'open' operation after a reset, actually a 'home' operation which goes all the way until it stalls (or the reed switch triggers).
And https://github.com/esphome/esphome/pull/8325 is working to fix the MQTT latencies and make the rotation encoder reliable.
Finally built all three. Now just need permission to cut into the walls to install them ๐
Will also write it up and publish the STL + FreeCAD files.
Just needed to work around https://github.com/esphome/esphome/issues/11820 because on_sunset was happening up to a minute apart on all three!
Up to you, but personally I would have a single on sunset automation in HA that triggers the three of these to move, vs having each determine when sunset is and triggering themselves. You could also potentially use ESP-NOW to keep them tightly in sync
Do the blinds end up reliably falling behind your housing like this on their own?
They are all configured with the same NTP server and lat/long despite actually being a few metres north/south of each other. So they agree on what time sunset is.
The WiFi reception hasn't been great there, so I didn't want to rely on external control for that.
And no, it doesn't always manage. And now the power is fed from behind, I'm thinking of making them a little pointy hat /\ that rests on top and kind of plugs into or around the USB socket.
Yeah a hat seems like a good idea
I don't think the sunrise/sunset triggers were really designed to be "trigger in lock step with (sub)second accuracy" and that "within a minute of sunrise/sunset" is generally enough for most people, but that can probably be reevaluated
I worked around it by using an on_time trigger every minute which basically does the same thing as on_sunset does in its loop(). "Did it change yet?" "Did it change yet?"
But the on_time triggers do trigger on the zeroth second, each minute. Not at some random time in each minute, according to when the device last started up.
I know my on_time trigger for 07:30 to open the blinds (when sunset was earlier, and I don't allow them to open that early) will not trigger at 07:30:01 on one of them, 07:30:20 on the next, and 07:30:54 on the third.
It's a beautiful sight when they go up/down in perfect step, which they do as they're stepper motors.
I've been telling Alexa to open and close them just so I can watch ๐
Next step is to print them in a similar colour to the wood, so they don't stand out as much ๐
But very nice work!
or get a matching veneer
I don't think plastic pretending to be wood is ever that good. Maybe I could actually do a veneer though ๐
But nah, with them inset and low profile I'm happy with them in the black PETG
And more to the point, The Boss is happy. Even if she made that face when I started cutting into the window frames and drilling into the walls and poking around with the endoscope
(that photo not part of the montage)
Perhaps the same colour as the paintwork? You can add the triangular hat to make sure the blinds slide past the motor at the same time ๐
under the stool is a sill and under that is nothing - so just two holes and it could be fully hidden. sure, it would be a big rework as the stool would act as an access panel
now the only option is to hide it with a wooden box
Why an ESP32-S3 instead of an ESP32-C3? somehting I'm missing?
Because the price difference is minuscule and it gives you overhead to run other things on it? People always seem to want to pack a million different things into one ESP
even the s3 had difficulty keeping up with the rotary encoder when I started playing with it
Yeah I was thinking another benefit of the S3 is you could dedicate a core to just the encoder/stepper work, although ESPHome doesn't really expose a good way to do that (currently)
encoders should be fine. Steppers are more difficult.
In canada prices are way different. Is CAD$2.7 for an esp32-C3 mini 1u cheap?
local webserver fits on here
ESP32-C3 H4
my challenge was to make a low cost feture rich ESP32-C3 board that can either control two dual coil latching relays and handle uart for a bl0939 or install wled on it for a RGBCW light strip. For now I can get away with using i2C I/O multiplexers for everything.
one hurdle was that if the ESP32 decided to boot loop or kick the bucket, the mosfet would stay on and burn the relay coils.
Trinamic also produces closed loop drivers with access to the encoder over uart/spi
It's only one data point, but at least using digikey in the US it's less than $2 difference when buying individually, and less than 75ยข difference when buying by the reel. If I'm going to buy a $65 stepper motor with integrated servo and ESP, I'd rather not try to shave $2 off that and discover it's underpowered for my application. ๐คทโโ๏ธ
This board literally has a stepper driver chip, so that part is fine. For the rotary encoding, the ESP gets a lot less help. There are better encoder chips, but this board doesn't use them because the AS5600 ought to have been enough. And after I go and beat on ESPHome's MQTT code not to disappear off into the weeds for ten seconds (yes, not a typo) at a time in its loop() it mostly does work. cf. https://github.com/joshr120/PD-Stepper/discussions/36
Did you try using the ESPHome API instead of MQTT?
ah, makes sense
I have a tape of 10 ESP32-C3-MINI-1U modules for future projects
I would buy a reel if it was my job though
@dreamy terrace Out of curiosity, do you use the component I created for the tmc2209?
I think so.
The one in Josh's documentation.
The one that changes direction abruptly if you ask it to change direction while it's moving, instead of stopping and then reaccelerating from a standstill ๐
Just switches direction and keep going as the same steps/sec.
Keep meaning to report that ๐
There, finally reported it: https://github.com/slimcdk/esphome-custom-components/issues/27
Yep, it uses the existing stepper implementation for ramping which doesn't gradually slow down and accelerate when changing direction. I have thought of doing an overhaul of my and the stepper implementation ๐
Oh, that's a core esphome issue?
IIRC the current stepper implementation(s?) are rather basic, but acceleration wouldn't be too hard to add
I have temporarily forgotten again how frustrating it is to wait for ESPHome PRs to be merged, so maybe I can line that up again before I am reminded...
I'm also not sure how best to approach it (possibly RMT?) but I have noticed that it can sort of "hiccup" if the other loop() tasks take longer ๐ค
The motor does? I've definitely seen that with the encoder
I thought the point in the driver chip was that the motor would continue doing the number of turns we told it to, even if the ESP actually resets (as long as it doesn't then reset the driver chip)
I think @shut gazelle is referring to the regular stepper driver in esphome which is software pulsed.
Ah yeah. I'm talking about the basic drivers either via h-bridge, or the direction/step plused one. It looks like you can control these TMC2209 drivers that way, but there are more advanced ways to as well.
Yea. I mean, I could however implement the extra ramping directly in the tmc2209 component, but thought it would be best to add that to the base stepper implementation at some point instead
Ramping is already there when going from zero to moving and vice versa. The issue is a smooth transition between directions or different speeds. They attempt to be instantaneous right now
RMT or MCPWM could be a way to implement hardware based step generation. The tmc2209 has a built-in pulse generator that can be controlled over uart
Can it do things like easing and acceleration curves though?
No, only velocity tho. Ramping has to come from the microcontroller
tmc2240 should be able to do an 8-point ramping profile IIRC
and it has direct encoder input, so IMO superior to tmc2209 for closed loop controllers
Which encoders does it support? I feel like those come in quite a few varieties with different signals/protocols/etc.
ABN quadrature encoders
First cut of documentation: https://github.com/dwmw2/PD-Stepper-Blinds
@slender prawn My config file https://github.com/dwmw2/PD-Stepper-Blinds/blob/main/esphome/blind.yaml is based on yours so I've made it GPLv3 but I'd prefer to just stick the whole project under CC BY-SA 4.0; may I use that config under that licence please?
oh crap, and I also used your cover STL.
So please may I use CC BY-SA 4.0 for that too?
I reimplemented the cover, as importing STL annoyed me anyway. Request stands for the config.
Just ordered! Iโve been eying this up for a while and finally gave in ๐
Sorry for the delayed reply, yep all good to release the config under that license.
Thank you.
Tidied up that write-up, I'm quite happy with it now.
I printed and built a fourth one, just to make sure I got it right ๐
Also to make it easier for US based customers, kits are now available through SparkFun!
https://www.sparkfun.com/pd-stepper.html
Hah! None of the blinds opened this morning, until I awoke from my jetlag at 10am and told Alexa to open them. Turns out it was because sunrise was after 8am and I had a stupid bug: https://github.com/dwmw2/PD-Stepper-Blinds/commit/70a576923cf05ca92713ad272e4a321e213eaa2c
We really ought to have helpers for that kind of thing.
For which things? Sunrise?
https://esphome.io/components/sun/
No, for the general case of "is the time in an ESPTime object after 7:30AM" and similar comparisons. I have similar horridness in e.g. https://git.infradead.org/?p=users/dwmw2/esp32-pool.git;a=blob;f=pool.yaml#l188
188 // Turn pump on if it's warm enough, between 7:30am and 10am (when it comes on anyway).
189 if (((t.hour == 7 && t.minute >= 30) || t.hour >= 8) &&
190 t.hour < 10 && outtemp >= 20.0 && intemp > 5.0 && !id(pool_pump).state &&
I'm aware of the 'on_sunrise' and 'on_sunset' but I didn't like it when the blinds all opened at different times, up to a minute apart. https://github.com/esphome/esphome/issues/11820
this is why automation in ha is handy than hardcoded ๐ but yea, it must be in sync - like warning lights on wind turbines or traffic lights when blinking
I don't want to automate it elsewhere. That isn't how this stuff should work. Those blinds should go up and down at the right time as long as the battery that feeds them exists. I'll tolerate them slowly losing NTP sync if an apocalypse takes out all of human civilisation and there's nothing for them to sync to. But as long as the front wall of my house exists and the battery has charge, they should be autonomous ๐
Hi Joshr, Love what you've done here that's some admirable craftmanship right there.
Did you end up getting an external component working on the driver?
.
I've been playing with nema 23 motors in esphome. The wiring got ugly pretty quick with the external driver requiring 5v signal. The configuration ended up being esp A5984 component, step and direction pins to ULN5984, going to DM5042 driver running the Nema23. This worked but wasn't getting full potential with limitations of the A5948 not meeting full potential of the external driver.
Since then I got an MKS SERVO57D and getting good results with rs485 on UART with an external component that chat GPT put together for me.
Running this with ESP32-S3-Touch-LCD-4.3 that has inbuilt rs485 resulted in a pretty neat set-up with a LVGL compatible HID.
It's working but not fully functioning, I still need to sniff more of the uart commands and I'm not sure I'll have enough memory for lvgl on top.
Just thought i'd share my experiment result in case you might get some ideas and inspiration on expanding your design to incorporate a master slave mks on steroids in esphome kinda thing.