How to Control Servo Motor Sweeping Using Arduino and Python with PyFirmata - Beginner Guide

How to Control Servo Motor Sweeping Using Arduino and Python with PyFirmata - Beginner Guide

Objective

This guide demonstrates how to control a servo motor sweeping using Arduino and Python with the PyFirmata library. You will learn to sweep a servo motor from 0 to 180 degrees and back to 0 degrees continuously.

Project Goals

  • Establish a connection between Python and Arduino using PyFirmata.
  • Control a servo motor connected to the Arduino.
  • Implement a sweeping motion for the servo motor.

Required Components

ComponentDescriptionLink
Arduino UnoMain microcontroller for controlling the servo motorAmazon Link
Servo MotorMotor for executing the sweeping motionAmazon Link
Jumper WiresConnects components to ArduinoAmazon Link

Understanding the Servo Basics

This project uses a servo motor connected to digital pin 9 on the Arduino. The motor will sweep back and forth, creating a simple motion effect. Below is a description of the servo connection:

ConnectionDescription
Arduino Pin 9Connected to the control wire of the servo motor
GNDConnected to the ground wire of the servo
5VConnected to the power wire of the servo

Arduino Circuit Connection

Use the following connections to set up the Arduino with the servo motor:

Arduino PinServo PinConnection Description
Digital Pin 9Control wire of the servoControls the servo's position
GNDGround wire of the servoCompletes the circuit
5VPower wire of the servoPowers the servo motor

How This Arduino-Python Project Works

The Arduino sends PWM signals to the servo motor connected to pin 9 to control its position. The Python program uses the PyFirmata library to execute a loop that sweeps the servo motor from 0 to 180 degrees and back.

Safety Tips for Beginners

  • Ensure the power supply for the servo is adequate to avoid damage.
  • Check that all connections are secure before powering on the Arduino.

Python Programming Section

Key Python Functions Used

  • Arduino('COM8') – Connects Python to the Arduino on the specified COM port.
  • servo_pin.write(angle) – Moves the servo motor to the specified angle (0-180 degrees).
  • time.sleep(seconds) – Pauses the program for a specified duration to control the sweep speed.

Setting Up the Python Environment

  • Install the PyFirmata library in Python by running: pip install pyfirmata.
  • Connect your Arduino to the computer and note the COM port it is connected to (e.g., COM8).

Python Code for Controlling Servo Motor Sweeping


import time
from pyfirmata import Arduino

# Change the port to the one your Arduino is connected to
board = Arduino('COM8')

# Set the pin where the servo is connected (e.g., pin 9)
servo_pin = board.get_pin('d:9:s')  # 'd' for digital, 9 is the pin number, 's' for servo

def sweep_servo():
    try:
        while True:
            # Sweep from 0 to 180 degrees
            for angle in range(0, 181, 1):
                servo_pin.write(angle)  # Move servo to the specified angle
                time.sleep(0.001)  # Adjust the speed of the sweep

            # Sweep back from 180 to 0 degrees
            for angle in range(180, -1, -1):
                servo_pin.write(angle)  # Move servo to the specified angle
                time.sleep(0.001)

    except KeyboardInterrupt:
        # Handle the program interruption by the user (Ctrl+C)
        print("Sweep interrupted by user.")

    finally:
        # Safely exit the program and close the connection to the Arduino
        board.exit()

# Run the sweep function
sweep_servo()

How to Run the Python Code

  • Connect your Arduino to your computer and note the COM port (replace 'COM8' in the code with your port).
  • Install the PyFirmata library in Python by running pip install pyfirmata in the terminal.
  • Save the code to a Python file and run it using python your_script_name.py.

Expected Output

  • The servo motor will sweep from 0 to 180 degrees and back continuously.
  • Press Ctrl+C to stop the program.

Troubleshooting Tips

  • If the servo does not respond, ensure the connections are correct and the power supply is adequate.
  • Check that the correct COM port is specified in the code.

Suggestions for Beginners

If you're new to Arduino and Python, consider starting with simpler projects such as LED control or basic button presses. Understanding these basics will help in tackling more complex projects like this one.

Recommended Book for Learning Arduino

Arduino Programming for Absolute Beginners – This book provides straightforward, step-by-step Arduino projects that are ideal for building a solid foundation in Arduino programming and electronics.

For more free tutorials and Arduino projects, visit MechatronicsLab.net for resources on Arduino, ESP32, and more.

No comments

Theme images by Dizzo. Powered by Blogger.