{"id":57,"date":"2025-05-19T12:14:12","date_gmt":"2025-05-19T10:14:12","guid":{"rendered":"https:\/\/iotlabs.pl\/?p=57"},"modified":"2025-11-11T13:00:00","modified_gmt":"2025-11-11T12:00:00","slug":"smart-motor-driver","status":"publish","type":"post","link":"https:\/\/iotlabs.pl\/en\/smart-motor-driver","title":{"rendered":"Smart Motor Driver"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">DC motors driver with encoder based on ESP32-S3<\/h2>\n\n\n\n<figure data-wp-context=\"{&quot;galleryId&quot;:&quot;6a2b7cea2f34f&quot;}\" data-wp-interactive=\"core\/gallery\" class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a2b7cea340b8&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a2b7cea340b8\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"812\" height=\"718\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" data-id=\"30\" src=\"https:\/\/iotlabs.pl\/wp-content\/uploads\/2025\/05\/CoverController.png\" alt=\"\" class=\"wp-image-30\" srcset=\"https:\/\/iotlabs.pl\/wp-content\/uploads\/2025\/05\/CoverController.png 812w, https:\/\/iotlabs.pl\/wp-content\/uploads\/2025\/05\/CoverController-300x265.png 300w, https:\/\/iotlabs.pl\/wp-content\/uploads\/2025\/05\/CoverController-768x679.png 768w\" sizes=\"auto, (max-width: 812px) 100vw, 812px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a2b7cea3453c&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a2b7cea3453c\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"900\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" data-id=\"29\" src=\"https:\/\/iotlabs.pl\/wp-content\/uploads\/2025\/05\/29B5DEF4-A39D-4217-A26A-71A5A4A43AF6_2cb4cfec8769a8a711b9e93357f9ceff-1.jpeg\" alt=\"\" class=\"wp-image-29\" srcset=\"https:\/\/iotlabs.pl\/wp-content\/uploads\/2025\/05\/29B5DEF4-A39D-4217-A26A-71A5A4A43AF6_2cb4cfec8769a8a711b9e93357f9ceff-1.jpeg 900w, https:\/\/iotlabs.pl\/wp-content\/uploads\/2025\/05\/29B5DEF4-A39D-4217-A26A-71A5A4A43AF6_2cb4cfec8769a8a711b9e93357f9ceff-1-300x300.jpeg 300w, https:\/\/iotlabs.pl\/wp-content\/uploads\/2025\/05\/29B5DEF4-A39D-4217-A26A-71A5A4A43AF6_2cb4cfec8769a8a711b9e93357f9ceff-1-150x150.jpeg 150w, https:\/\/iotlabs.pl\/wp-content\/uploads\/2025\/05\/29B5DEF4-A39D-4217-A26A-71A5A4A43AF6_2cb4cfec8769a8a711b9e93357f9ceff-1-768x768.jpeg 768w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a2b7cea3499e&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a2b7cea3499e\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"900\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" data-id=\"65\" src=\"https:\/\/iotlabs.pl\/wp-content\/uploads\/2025\/05\/BCDC07C3-CC4C-4A2A-B005-5D86BE414A99_5ab611c025d82eaeea771b87b6fdeb57-edited.png\" alt=\"\" class=\"wp-image-65\" srcset=\"https:\/\/iotlabs.pl\/wp-content\/uploads\/2025\/05\/BCDC07C3-CC4C-4A2A-B005-5D86BE414A99_5ab611c025d82eaeea771b87b6fdeb57-edited.png 900w, https:\/\/iotlabs.pl\/wp-content\/uploads\/2025\/05\/BCDC07C3-CC4C-4A2A-B005-5D86BE414A99_5ab611c025d82eaeea771b87b6fdeb57-edited-300x300.png 300w, https:\/\/iotlabs.pl\/wp-content\/uploads\/2025\/05\/BCDC07C3-CC4C-4A2A-B005-5D86BE414A99_5ab611c025d82eaeea771b87b6fdeb57-edited-150x150.png 150w, https:\/\/iotlabs.pl\/wp-content\/uploads\/2025\/05\/BCDC07C3-CC4C-4A2A-B005-5D86BE414A99_5ab611c025d82eaeea771b87b6fdeb57-edited-768x768.png 768w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/figure>\n\n\n\n<p class=\"is-style-default wp-block-paragraph\"><strong>Smart Motor Driver<\/strong> is a dual-channel DC motor controller with encoders, designed for precise motion control in applications such as home automation, robotics, mechatronics, and positioning systems. At its core is the <strong>ESP32-S3<\/strong>, a powerful microcontroller with Wi-Fi connectivity, offering extensive integration possibilities with control systems, including Home Assistant, thanks to full <strong>ESPHome<\/strong> compatibility.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd27 Key technical features:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2699\ufe0f Supports two DC motors with quadrature encoders<\/li>\n\n\n\n<li>\u26a1 Supply voltage range: 8\u201336 V<\/li>\n\n\n\n<li>\ud83d\udd0c Up to 800 mA per channel \u2013 ideal for JGA25-370 type drives<\/li>\n\n\n\n<li>\ud83e\udde0 ESP32-S3 on board \u2013 full flexibility for firmware (ESPHome, Arduino, custom solutions)<\/li>\n\n\n\n<li>\ud83d\udcd0 Compact size: 56 \u00d7 50 mm<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Advanced motors control<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Each channel is equipped with a <strong>full H-bridge implemented using the DRV8801<\/strong>, which allows:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Smooth motor speed control via PWM<\/li>\n\n\n\n<li>Direction selection<\/li>\n\n\n\n<li>Active braking<\/li>\n\n\n\n<li>Hardware protections: short-circuit, thermal, overvoltage, and overcurrent safeguards<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Limit switch support<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Each channel has <strong>two independent limit switch inputs<\/strong>, allowing protection of the drive\u2019s end positions (up\/down, left\/right, open\/closed). The inputs can operate in two modes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ud83d\udd18 <strong>Digital (ON\/OFF)<\/strong> \u2013 for classic mechanical or optical limit switches<\/li>\n\n\n\n<li>\ud83d\udcc9 <strong>Analog with adjustable threshold<\/strong> \u2013 e.g., for magnetic sensors with voltage output or phototransistors<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">This solution enables <strong>precise and flexible adaptation of the limit system<\/strong> to different types of drives and operating environments.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Advanced motion control \u2013 ready-to-use ESPHome firmware<\/strong><\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Smart Motor Driver comes with ESPHome firmware<\/strong>, enabling full integration with Home Assistant and providing smart servo functionality:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ud83d\udd01 <strong>Dual-loop PID controller:<\/strong>\n<ul class=\"wp-block-list\">\n<li><strong>Position loop (external)<\/strong> \u2013 precise positioning<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Velocity loop (internal)<\/strong> \u2013 motion stabilization and smoothness<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\ud83e\uddee <strong>Trajectory planner<\/strong> \u2013 dynamically generates ramps (acceleration, max speed, movement duration)<\/li>\n\n\n\n<li>\ud83d\udce1 <strong>Live encoder position reading<\/strong> \u2013 actual, non-estimated measurement<\/li>\n\n\n\n<li>\ud83d\udd17 <strong>Channel motion synchronization<\/strong> \u2013 coordinated control of two motors (e.g., simultaneous raising of a dual awning)<\/li>\n<\/ul>\n\n\n\n<p class=\"is-style-text-annotation has-large-font-size is-style-text-annotation--2 wp-block-paragraph\">Firmware available on: <a href=\"https:\/\/github.com\/IoTLabs-pl\/Smart-Motor-Driver\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/IoTLabs-pl\/Smart-Motor-Driver<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Applications<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The primary intended use of the <strong>Smart Motor Driver<\/strong> is controlling blinds, awnings, and curtains, where precise position control, motion synchronization, and remote integration with smart home systems are required.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Thanks to real-time position feedback from quadrature encoders, it is possible to determine the exact drive position <strong>without relying on time-based estimation<\/strong>. This significantly improves <strong>accuracy, repeatability, and system safety<\/strong>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ud83e\ude9f Automatic blinds, shutters, awnings, curtains<\/li>\n\n\n\n<li>\ud83e\udd16 Mobile robots and manipulators<\/li>\n\n\n\n<li>\ud83c\udfd7\ufe0f Rotating platforms, linear guides, XY systems<\/li>\n\n\n\n<li>\ud83c\udfe0 Smart home systems (Home Assistant, ESPHome)<\/li>\n\n\n\n<li>\ud83c\udf93 Educational projects and prototyping in mechatronics and IoT<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Intelligent dual DC motor controller with encoders, based on the ESP32-S3. Ideal for blinds and awnings, it features PID control, a trajectory planner, limit switch inputs, and live position feedback. Ready-to-use ESPHome firmware allows easy integration with Home Assistant and precise motion control.<\/p>\n","protected":false},"author":1,"featured_media":30,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[18,8,16,10,15,9,12],"class_list":["post-57","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devices","tag-drv8801","tag-enkoder-kwadraturowy","tag-esp32-s3","tag-esphome","tag-home-assistant","tag-regulator-pid","tag-rolety-automatyczne"],"_links":{"self":[{"href":"https:\/\/iotlabs.pl\/en\/wp-json\/wp\/v2\/posts\/57","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/iotlabs.pl\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/iotlabs.pl\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/iotlabs.pl\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/iotlabs.pl\/en\/wp-json\/wp\/v2\/comments?post=57"}],"version-history":[{"count":0,"href":"https:\/\/iotlabs.pl\/en\/wp-json\/wp\/v2\/posts\/57\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/iotlabs.pl\/en\/wp-json\/wp\/v2\/media\/30"}],"wp:attachment":[{"href":"https:\/\/iotlabs.pl\/en\/wp-json\/wp\/v2\/media?parent=57"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/iotlabs.pl\/en\/wp-json\/wp\/v2\/categories?post=57"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/iotlabs.pl\/en\/wp-json\/wp\/v2\/tags?post=57"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}