{"id":5070,"date":"2026-08-30T05:10:43","date_gmt":"2026-08-29T20:10:43","guid":{"rendered":"https:\/\/donguri3.net\/server-tech\/raspberry-pi-zero-w-bluetooth-robot-diy-2\/"},"modified":"2026-08-30T05:10:44","modified_gmt":"2026-08-29T20:10:44","slug":"raspberry-pi-zero-w-bluetooth-robot-diy","status":"publish","type":"post","link":"https:\/\/donguri3.net\/en\/diy-repair\/electronics-microcontroller\/raspberry-pi-zero-w-bluetooth-robot-diy\/","title":{"rendered":"Overcoming Parallel Import mBot Troubles! Building a Custom Bluetooth RC Car with Raspberry Pi Zero W"},"content":{"rendered":"<p>I purchased an mBot educational robot kit on Amazon. It had a reputation for being ideal as an introduction to visual programming for children, so I assembled it with great excitement, but what arrived turned out to be a parallel import. Upon checking the Bluetooth module, I noticed it lacked the Technical Conformity Mark (Telec certification). Powering it on as-is would transmit illegal radio waves, so I decided to remove the Bluetooth module and operate it without it.<br \/>\nAs a result, wireless control from a smartphone or tablet\u2014my original goal\u2014was abandoned. Only the initial features remained: remote control via an infrared remote, line follower mode, obstacle detection mode using an ultrasonic sensor, and program writing via a USB cable. Gritting my teeth with the frustration of &#8220;If I can&#8217;t use Bluetooth&#8230;&#8221;, an idea suddenly flashed through my mind\u2014<\/p>\n<blockquote>\n<p><strong>&#8220;If mBot doesn&#8217;t work out, why not just build a robot with Bluetooth connectivity myself?!&#8221;<\/strong><\/p>\n<\/blockquote>\n<p>Thus, sparked by the parallel import trouble, a custom RC car project began, combining a Raspberry Pi Zero W, commercially available DC motors, and a 3D-printed chassis. Using a Raspberry Pi Zero W, I built an RC car that drives DC motors with an MX1508 (L298-equivalent) control board. By combining a chassis and wheels designed and output with a 3D printer and silicone rubber tires from a 100-yen shop, I was able to create a robust body while keeping costs down. The Bluetooth remote is read using the <code>evdev<\/code> library, and smooth motor control is achieved via <code>pigpio<\/code>&#8216;s hardware PWM function.<\/p>\n<h2>The Challenge<\/h2>\n<p>The pink mBot sold on Amazon appeared to be a parallel import, and its Bluetooth module did not have the Technical Conformity Mark. Using it as-is would emit illegal radio waves, so I am using it with the module removed.<\/p>\n<p><a href=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_1875.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-1555\" src=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_1875.jpg\" alt=\"mbot's bluetooth module\" width=\"640\" height=\"446\" srcset=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_1875.jpg 640w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_1875-300x209.jpg 300w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_1875-530x369.jpg 530w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_1875-565x394.jpg 565w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<h2>The Solution<\/h2>\n<p>\u2460 Build a robot equipped with Bluetooth connectivity using a Raspberry Pi Zero W.<br \/>\n\u2461 Replace mBot&#8217;s built-in GUI-based movement assembly features with a visual flow editor like Node-RED.<\/p>\n<p>This time, we will implement approach \u2460.<\/p>\n<h2 class=\"\">Materials List<\/h2>\n<ul>\n<li class=\"\"><strong>Raspberry Pi Zero W<\/strong> (with the latest Raspberry Pi OS installed)<\/li>\n<li class=\"\"><strong>MX1508 Motor Driver Module<\/strong> (2-channel, 1.8\u20135 V drive)<br \/>\n<a href=\"https:\/\/amzn.to\/4eofXLz\">MX1508<\/a><\/li>\n<\/ul>\n<ul>\n<li class=\"\"><strong>DC Motors \u00d72<\/strong> (for axles)<br \/>\n<a href=\"https:\/\/amzn.to\/4vY099K\">Motor<\/a><\/li>\n<li class=\"\"><strong>3D-printed Chassis and Tire Wheels<\/strong> (custom data printed via 3D printer)<\/li>\n<li class=\"\"><strong>Caster Protective Silicone Rubber Tires<\/strong> (Seria)<br \/>\n<a href=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18671-e1746502257374.jpg\"><img decoding=\"async\" class=\"aligncenter size-thumb710 wp-image-1543\" src=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18671-e1746502257374-710x643.jpg\" alt=\"caster silicone cover\" width=\"710\" height=\"643\" srcset=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18671-e1746502257374-710x643.jpg 710w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18671-e1746502257374-300x272.jpg 300w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18671-e1746502257374-1024x927.jpg 1024w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18671-e1746502257374-768x696.jpg 768w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18671-e1746502257374-1536x1391.jpg 1536w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18671-e1746502257374-530x480.jpg 530w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18671-e1746502257374-565x512.jpg 565w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18671-e1746502257374-725x657.jpg 725w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18671-e1746502257374.jpg 1590w\" sizes=\"(max-width: 710px) 100vw, 710px\" \/><\/a><\/li>\n<li class=\"\"><strong>Bluetooth Remote Control<br \/>\n<\/strong><a href=\"https:\/\/amzn.to\/3S3ZCV7\">Elecom VR Remote Controller<\/a><\/li>\n<li class=\"\"><strong>Wires, Jumper Cables, Battery (5\u20139 V)<\/strong><\/li>\n<\/ul>\n<h2 class=\"\">Hardware Assembly<\/h2>\n<h3 class=\"\">3D Printing the Chassis and Wheels<\/h3>\n<p>Output the design data using a 3D printer to create the wheels and housing. The key point is to secure space on top of the housing to mount the Pi Zero W.<\/p>\n<div class=\"sketchfab-embed-wrapper\">\n<p><iframe loading=\"lazy\" title=\"Mini Robot Chassis (Body Case) for Raspberry Pi Zero W\" src=\"https:\/\/sketchfab.com\/models\/93a8132cede242b6b98be80186110a21\/embed\" width=\"640\" height=\"480\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"> <\/iframe><\/p>\n<p style=\"font-size: 13px; font-weight: normal; margin: 5px; color: #4a4a4a;\"><a style=\"font-weight: bold; color: #1caad9;\" href=\"https:\/\/sketchfab.com\/3d-models\/raspberry-pi-zero-w-93a8132cede242b6b98be80186110a21?utm_medium=embed&amp;utm_campaign=share-popup&amp;utm_content=93a8132cede242b6b98be80186110a21\" target=\"_blank\" rel=\"nofollow noopener\"> Mini Robot Chassis (Body Case) for Raspberry Pi Zero W <\/a> by <a style=\"font-weight: bold; color: #1caad9;\" href=\"https:\/\/sketchfab.com\/nando-256?utm_medium=embed&amp;utm_campaign=share-popup&amp;utm_content=93a8132cede242b6b98be80186110a21\" target=\"_blank\" rel=\"nofollow noopener\"> nando-256 <\/a> on <a style=\"font-weight: bold; color: #1caad9;\" href=\"https:\/\/sketchfab.com?utm_medium=embed&amp;utm_campaign=share-popup&amp;utm_content=93a8132cede242b6b98be80186110a21\" target=\"_blank\" rel=\"nofollow noopener\">Sketchfab<\/a><\/p>\n<\/div>\n<div class=\"sketchfab-embed-wrapper\">\n<p><iframe loading=\"lazy\" title=\"3D Printed Wheels for Small Robots\" src=\"https:\/\/sketchfab.com\/models\/ff9275fd0439456a89083f360e9f9c30\/embed\" width=\"640\" height=\"480\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"> <\/iframe><\/p>\n<p style=\"font-size: 13px; font-weight: normal; margin: 5px; color: #4a4a4a;\"><a style=\"font-weight: bold; color: #1caad9;\" href=\"https:\/\/sketchfab.com\/3d-models\/3d-ff9275fd0439456a89083f360e9f9c30?utm_medium=embed&amp;utm_campaign=share-popup&amp;utm_content=ff9275fd0439456a89083f360e9f9c30\" target=\"_blank\" rel=\"nofollow noopener\"> 3D Printed Wheels for Small Robots <\/a> by <a style=\"font-weight: bold; color: #1caad9;\" href=\"https:\/\/sketchfab.com\/nando-256?utm_medium=embed&amp;utm_campaign=share-popup&amp;utm_content=ff9275fd0439456a89083f360e9f9c30\" target=\"_blank\" rel=\"nofollow noopener\"> nando-256 <\/a> on <a style=\"font-weight: bold; color: #1caad9;\" href=\"https:\/\/sketchfab.com?utm_medium=embed&amp;utm_campaign=share-popup&amp;utm_content=ff9275fd0439456a89083f360e9f9c30\" target=\"_blank\" rel=\"nofollow noopener\">Sketchfab<\/a><\/p>\n<\/div>\n<h3 class=\"\">Wiring Motors and Driver Board<\/h3>\n<p>Connect VCC\/GND of the MX1508 module to the battery supply, and wire IN1\/IN2 to the Pi&#8217;s GPIOs. Connect the motors to OUT1\/OUT2 respectively. Please refer to the official tutorial for the driver board specifications.<\/p>\n<h3 class=\"\">Attaching Tires<\/h3>\n<p>Attach the 100-yen shop silicone rubber tires to the wheels, place a dummy wheel at the front center, and configure a rear-wheel-drive setup. Rubber tires are effective in preventing slippage.<\/p>\n<p><a href=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18721.jpg\"><img decoding=\"async\" class=\"aligncenter size-thumb710 wp-image-1545\" src=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18721-710x533.jpg\" alt=\"mbot knockoff\" width=\"710\" height=\"533\" srcset=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18721-710x533.jpg 710w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18721-300x225.jpg 300w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18721-1024x768.jpg 1024w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18721-768x576.jpg 768w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18721-1536x1152.jpg 1536w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18721-530x398.jpg 530w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18721-565x424.jpg 565w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18721-725x544.jpg 725w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18721.jpg 1920w\" sizes=\"(max-width: 710px) 100vw, 710px\" \/><\/a><\/p>\n<h3>The Original mBot<\/h3>\n<p><a href=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18691.jpg\"><img decoding=\"async\" class=\"aligncenter size-thumb710 wp-image-1544\" src=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18691-710x533.jpg\" alt=\"mbot\" width=\"710\" height=\"533\" srcset=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18691-710x533.jpg 710w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18691-300x225.jpg 300w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18691-1024x768.jpg 1024w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18691-768x576.jpg 768w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18691-1536x1152.jpg 1536w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18691-530x398.jpg 530w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18691-565x424.jpg 565w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18691-725x544.jpg 725w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/05\/IMG_18691.jpg 1920w\" sizes=\"(max-width: 710px) 100vw, 710px\" \/><\/a><\/p>\n<h2 class=\"\">Software Setup<\/h2>\n<h3 class=\"\">Pairing the Bluetooth Gamepad<\/h3>\n<p>Scan for the controller using the Raspberry Pi&#8217;s <code>bluetoothd<\/code>, and perform pairing and trust settings.<br \/>\nAs there are various challenges regarding Bluetooth connectivity, I plan to post a detailed article at a later date.<\/p>\n<h2 class=\"\">Code Explanation<\/h2>\n<ol>\n<li class=\"\"><strong>Input Acquisition (<code>evdev<\/code>)<\/strong>\n<ul>\n<li class=\"\">Reads REL_X\/REL_Y events from <code>\/dev\/input\/event2<\/code> to detect stick tilt and button presses.<\/li>\n<\/ul>\n<\/li>\n<li class=\"\"><strong>PWM Control (<code>pigpio.hardware_PWM<\/code>)<\/strong>\n<ul>\n<li class=\"\">Outputs a 50 Hz PWM signal to each GPIO, converting speed commands into duty cycles.<\/li>\n<\/ul>\n<\/li>\n<li class=\"\"><strong>Differential Drive Calculation<\/strong>\n<ul>\n<li class=\"\">Calculates left and right motor speeds from throttle and steer values, keeping them within \u00b1100% using clipping.<\/li>\n<\/ul>\n<\/li>\n<li class=\"\"><strong>Stop &amp; Emergency Stop<\/strong>\n<ul>\n<li class=\"\">Pressing BTN_LEFT sets a stop flag for all motors to bring them to a prompt halt.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&amp;amp;amp;amp;amp;amp;amp;lt;pre&amp;amp;amp;amp;amp;amp;amp;gt;from evdev import InputDevice, ecodes\nfrom select import select\nimport time\nimport pigpio\n\npi = pigpio.pi()\n\n# PWM \u51fa\u529b\u7528\u30d4\u30f3\u306e BCM \u756a\u53f7(\u6a2a\u3082\u3061)\nLEFT_FWD_PIN  = 19  # PWM1_CH1\nLEFT_REV_PIN  = 13  # PWM1_CH0\nRIGHT_FWD_PIN = 12  # PWM0_CH0\nRIGHT_REV_PIN = 18  # PWM0_CH1\n\n# # PWM \u51fa\u529b\u7528\u30d4\u30f3\u306e BCM \u756a\u53f7(\u7e26)\n# LEFT_FWD_PIN  = 12  # PWM1_CH1\n# LEFT_REV_PIN  = 13  # PWM1_CH0\n# RIGHT_FWD_PIN = 18  # PWM0_CH0\n# RIGHT_REV_PIN = 19  # PWM0_CH1\n\nfor pin in (LEFT_FWD_PIN, LEFT_REV_PIN, RIGHT_FWD_PIN, RIGHT_REV_PIN):\n    pi.set_mode(pin, pigpio.OUTPUT)  # \u30cf\u30fc\u30c9\u30a6\u30a7\u30a2 PWM \u30c1\u30e3\u30cd\u30eb\u3092\u6709\u52b9\n\n# PWM\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\ndef set_pwm(pin_fwd:int, pin_rev:int, speed:int):\n    &amp;amp;amp;amp;amp;amp;amp;quot;&amp;amp;amp;amp;amp;amp;amp;quot;&amp;amp;amp;amp;amp;amp;amp;quot;\n    pin_fwd: \u524d\u9032\u7528\u30d4\u30f3\n    pin_rev: \u5f8c\u9000\u7528\u30d4\u30f3\n    speed: -100\uff5e+100 (%)\n      +: \u524d\u9032, -: \u5f8c\u9000, 0: \u505c\u6b62\n    &amp;amp;amp;amp;amp;amp;amp;quot;&amp;amp;amp;amp;amp;amp;amp;quot;&amp;amp;amp;amp;amp;amp;amp;quot;\n    # PWM \u5468\u6ce2\u6570 50Hz \u3068\u30c7\u30e5\u30fc\u30c6\u30a3\u6bd4\uff080\uff5e1e6\uff09\n    FREQ = 50\n    if speed &amp;amp;amp;amp;amp;amp;amp;gt;= 0:\n        duty = int(speed \/ 100 * 1000000)\n        print(&amp;amp;amp;amp;amp;amp;amp;#039;pin: {}, FREQ: {}, speed: {}&amp;amp;amp;amp;amp;amp;amp;#039;.format(pin_fwd, FREQ, duty))\n        print(&amp;amp;amp;amp;amp;amp;amp;#039;pin: {}, FREQ: {}, speed: {}&amp;amp;amp;amp;amp;amp;amp;#039;.format(pin_rev, FREQ, duty))\n        pi.hardware_PWM(pin_fwd,  FREQ, duty)  # \u524d\u9032\u30c7\u30e5\u30fc\u30c6\u30a3\u3092\u8a2d\u5b9a\n        # pi.hardware_PWM(pin_rev,  FREQ, 0)\n        pi.set_mode(pin_rev, pigpio.OUTPUT)\n    else:\n        duty = int(-speed \/ 100 * 1000000)\n        print(&amp;amp;amp;amp;amp;amp;amp;#039;pin: {}, FREQ: {}, speed: {}&amp;amp;amp;amp;amp;amp;amp;#039;.format(pin_rev, FREQ, duty))\n        # pi.hardware_PWM(pin_fwd,  FREQ, 0)\n        pi.set_mode(pin_fwd, pigpio.OUTPUT)\n        pi.hardware_PWM(pin_rev,  FREQ, duty)  # \u5f8c\u9000\u30c7\u30e5\u30fc\u30c6\u30a3\u3092\u8a2d\u5b9a\n\ndef set_left_motor(speed:int):\n    set_pwm(LEFT_FWD_PIN, LEFT_REV_PIN, speed)\n\ndef set_right_motor(speed:int):\n    set_pwm(RIGHT_FWD_PIN, RIGHT_REV_PIN, speed)\n\n\ndev = InputDevice(&amp;amp;amp;amp;amp;amp;amp;#039;\/dev\/input\/event2&amp;amp;amp;amp;amp;amp;amp;#039;)  # \u5b9f\u969b\u306e\u30c7\u30d0\u30a4\u30b9\u306b\u5408\u308f\u305b\u3066\ndev.grab()  # \u6392\u4ed6\u5236\u5fa1\n\ndef read_stick():\n    &amp;amp;amp;amp;amp;amp;amp;quot;&amp;amp;amp;amp;amp;amp;amp;quot;&amp;amp;amp;amp;amp;amp;amp;quot;\n    \/dev\/input\/event2 \u304b\u3089 REL_X\/REL_Y \u306e\u30a4\u30d9\u30f3\u30c8\u3092\u8aad\u307f\u53d6\u308a\u3001\n    SYN_REPORT \u304c\u6765\u305f\u3068\u3053\u308d\u3067 x, y \u3092\u8fd4\u3059\u3002\n    \u623b\u308a\u5024\u306e x, y \u306f\u3001\u305d\u308c\u305e\u308c -31 .. +31 \u306e\u7bc4\u56f2\u3092\u60f3\u5b9a\u3002\n    &amp;amp;amp;amp;amp;amp;amp;quot;&amp;amp;amp;amp;amp;amp;amp;quot;&amp;amp;amp;amp;amp;amp;amp;quot;\n    x = 0\n    y = 0\n    mstop = True\n\n    # \u30c7\u30d0\u30a4\u30b9\u306b\u30a4\u30d9\u30f3\u30c8\u304c\u6765\u308b\u307e\u3067\u30d6\u30ed\u30c3\u30af\n    r, _, _ = select(&#x5B;dev.fd], &#x5B;], &#x5B;])\n    if dev.fd in r:\n        for event in dev.read():\n            # REL_X\uff0fREL_Y \u30a4\u30d9\u30f3\u30c8\u3092\u8db3\u3057\u8fbc\u3080\n            if event.type == ecodes.EV_REL:\n                mstop = False\n                if   event.code == ecodes.REL_X:\n                    x += event.value\n                elif event.code == ecodes.REL_Y:\n                    y += event.value\n            elif event.type == ecodes.EV_KEY and event.code == ecodes.BTN_LEFT and event.value == 1:\n                # BTN_LEFT \u304c\u62bc\u3055\u308c\u305f\u3089\u505c\u6b62\u30d5\u30e9\u30b0\u3092\u7acb\u3066\u308b\n                mstop = True\n            # SYN_REPORT \u3067\u4e00\u9023\u306e\u30a4\u30d9\u30f3\u30c8\u304c\u4e00\u533a\u5207\u308a\n            elif event.type == ecodes.SYN_REPORT:\n                break\n\n    # \u5024\u3092\u30af\u30e9\u30f3\u30d7\uff08\u5ff5\u306e\u305f\u3081\uff09\n    # x = max(-31, min(31, x))\n    # y = max(-31, min(31, y))\n    tx = max(-31, min(31, -y))\n    ty = max(-31, min(31, x))\n    x = tx\n    y = ty\n    return x, y ,mstop\n\ntry:\n    while True:\n        # \u4f8b\uff1a\u30b9\u30c6\u30a3\u30c3\u30af\u306e\u5024\u304b\u3089 -100\uff5e+100 \u306e speed \u3092\u7b97\u51fa\n        lx, ly, mstop = read_stick()      # -31\uff5e+31 \u306e\u5024\u3092\u8fd4\u3059\u60f3\u5b9a\n        # \u524d\u9032\u5f8c\u9000\u6210\u5206\n        throttle = int(ly \/ 31 * 100)\n        # \u65cb\u56de\u6210\u5206\n        steer    = int(lx \/ 31 * 100)\n\n        if(mstop):\n            left_speed = 0\n            right_speed = 0\n        else:\n            # \u5dee\u52d5\u8d70\u884c\u306e\u5de6\u53f3\u901f\u5ea6\u8a08\u7b97\n            left_speed  = throttle + steer\n            right_speed = throttle - steer\n\n            # \u30af\u30ea\u30c3\u30d4\u30f3\u30b0\n            left_speed  = max(-100, min(100, left_speed))\n            right_speed = max(-100, min(100, right_speed))\n\n        # \u30e2\u30fc\u30bf\u30fc\u51fa\u529b\n        set_left_motor(left_speed)\n        set_right_motor(right_speed)\n\n        time.sleep(0.1)\n\nexcept KeyboardInterrupt:\n    # \u505c\u6b62\n    set_left_motor(0)\n    set_right_motor(0)\n    pi.stop()\n&amp;amp;amp;amp;amp;amp;amp;lt;\/pre&amp;amp;amp;amp;amp;amp;amp;gt;\n<\/pre>\n<h2 class=\"\">Operation Check and Future Prospects<\/h2>\n<ul>\n<li class=\"\"><strong>Operation Check<\/strong>: Test forward\/reverse movement and turns via stick operation on a flat road. Please adjust tire grip and motor response accordingly.<\/li>\n<li class=\"\"><strong>Improvement Ideas<\/strong>: Speed stabilization via PID control and autonomous navigation for obstacle detection using ultrasonic sensors are conceivable. Web UI control via Wi-Fi and smartphone app integration are also the next steps.<\/li>\n<\/ul>\n<h2 class=\"\">Summary<\/h2>\n<p>In this article, we explained everything from the design to the operation of a custom RC car using a Raspberry Pi Zero W, combining low-cost and readily available components. Through creating a housing with a 3D printer and utilizing Python libraries, this content allows you to enjoy robot crafting full of the DIY spirit. Moving forward, let&#8217;s aim for further automation by advancing control algorithms and integrating sensors.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I purchased an mBot educational robot kit on Amazon. It had a reputation for being ideal as an introduction to [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":1545,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"en_US","_original_post":"https:\/\/donguri3.net\/?p=1536","footnotes":""},"categories":[1163],"tags":[9,566,47,565,275,106,278],"class_list":["post-5070","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-electronics-microcontroller","tag-diy","tag-mbot","tag-python","tag-raspberry-pi-zero-w","tag-275","tag-106","tag-278","en-US"],"_links":{"self":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts\/5070","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/comments?post=5070"}],"version-history":[{"count":1,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts\/5070\/revisions"}],"predecessor-version":[{"id":5073,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts\/5070\/revisions\/5073"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/media\/1545"}],"wp:attachment":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/media?parent=5070"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/categories?post=5070"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/tags?post=5070"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}