Category Archives: Python GPIO

การใช้งาน stepper motor บน raspberry pi ด้วย Python

การใช้งาน stepper motor บน raspberry pi ด้วย Python  แอดมินซื้อของมาดองไว้ทำ lab หลายอาทิตย์ วันนี้ได้เลิกขี้เกียจ จับเอา stepper กับ driver มาลองยำเล่นดู รวมทั้งแงะเอา stepper เก่าๆ จากเครื่อง scanner มาเล่นด้วย ซึ่งใช้ได้กับของโคลนราคาถูกๆ ด้วย มาดูกันครับ

stepper motor stepper motor scanner

เตรียมของ

  1. Raspbian OS ลง python-dev
  2. Stepper motor พร้อม driver  (120 บาท)

การต่อสาย

  1. จากตัว stepper มาที่วงจร driver จะมีสายอยู่ 5 เส้น น้ำเงิน ชมพู เหลือง ส้ม (IN1-4) แดง (+)  ถ้าเป็นชุดที่มากับสามารถเสียบลง socket ได้เลย แต่ถ้าแงะมาจากเครื่องอื่น ต้องลองไล่สายดู สายแดงปรกติจะเป็นไฟเลี้ยง (+) อยู่แล้ว
  2. จากบอร์ด driver ไปหา Raspberry Pi จะมีอยู่ 6 เส้น คือ
    1. ground ต่อกับขา PIN 2 ของ Raspberry Pi
    2. +5v ต่อกับขา PIN 6 ของ Raspberry Pi
    3. IN1 ต่อกับขา PIN 18 ของ Raspberry Pi
    4. IN2 ต่อกับขา PIN 22 ของ Raspberry Pi
    5. IN3 ต่อกับขา PIN 24 ของ Raspberry Pi
    6. IN4 ต่อกับขา PIN 26 ของ Raspberry Pi

Python Code

#———————————–
# Name: Stepper Motor
#
# Author: matt.hawkins
#
# Created: 11/07/2012
# Copyright: (c) matt.hawkins 2012
#———————————–
#!/usr/bin/env python
 
# Import required libraries
import time
import RPi.GPIO as GPIO
 
# Use BCM GPIO references
# instead of physical pin numbers
GPIO.setmode(GPIO.BCM)
 
# Define GPIO signals to use
# Pins 18,22,24,26
# GPIO24,GPIO25,GPIO8,GPIO7
StepPins = [24,25,8,7]
 
# Set all pins as output
for pin in StepPins:
  print “Setup pins”
  GPIO.setup(pin,GPIO.OUT)
  GPIO.output(pin, False)
 
# Define some settings
StepCounter = 0
WaitTime = 0.5
 
# Define simple sequence
StepCount1 = 4
Seq1 = []
Seq1 = range(0, StepCount1)
Seq1[0] = [1,0,0,0]
Seq1[1] = [0,1,0,0]
Seq1[2] = [0,0,1,0]
Seq1[3] = [0,0,0,1]
 
# Define advanced sequence
# as shown in manufacturers datasheet
StepCount2 = 8
Seq2 = []
Seq2 = range(0, StepCount2)
Seq2[0] = [1,0,0,0]
Seq2[1] = [1,1,0,0]
Seq2[2] = [0,1,0,0]
Seq2[3] = [0,1,1,0]
Seq2[4] = [0,0,1,0]
Seq2[5] = [0,0,1,1]
Seq2[6] = [0,0,0,1]
Seq2[7] = [1,0,0,1]
 
# Choose a sequence to use
Seq = Seq1
StepCount = StepCount1
 
# Start main loop
while 1==1:
 
  for pin in range(0, 4):
    xpin = StepPins[pin]
    if Seq[StepCounter][pin]!=0:
      print ” Step %i Enable %i” %(StepCounter,xpin)
      GPIO.output(xpin, True)
    else:
      GPIO.output(xpin, False)
 
  StepCounter += 1
 
  # If we reach the end of the sequence
  # start again
  if (StepCounter==StepCount):
    StepCounter = 0
  if (StepCounter<0):
    StepCounter = StepCount
 
  # Wait before moving on
  time.sleep(WaitTime)

sudo nano stepper.py แล้ว copy code ข้างบน มาวาง  sudo python stepper.py เพื่อรัน

ทดลองแก้ จาก

Seq1[0] = [1,0,0,0]
Seq1[1] = [0,1,0,0]
Seq1[2] = [0,0,1,0]
Seq1[3] = [0,0,0,1]

เป็น

Seq1[3] = [1,0,0,0]
Seq1[2] = [0,1,0,0]
Seq1[1] = [0,0,1,0]
Seq1[0] = [0,0,0,1]

การใช้งาน Servo , Python , Black Raspi (Distro Occidentalis จาก Adafruit)

การใช้งาน Servo , Python , Black Raspberry (Distro Occidentalis จาก Adafruit) การควบคุม servo ด้วย Python บนบอร์ด ราสพาย ทำได้ไม่ยาก ถ้าใช้ distro ของ adafruit ที่ชื่อ Occedentalis (Download ที่นี่)
หลังจาก burn SD เรียบร้อยแล้ว ก็มาเตรียมของกัน (ห้ามอัพเกรด เพราะอาจจะได้ burn. ใหม่ class บางตัวจะหายไปหลังจาก upgrade)

การใช้งาน Servo , Python , Black Raspi

อุปกรณ์ที่ต้องมี

  1. Servo (สายไฟ 3 เส้น น้ำตาล แดง ส้ม)
  2. สาย Jumper
  3. แหล่งจ่ายไฟสำหรับ servo (ผมใช้ IC regulator เบอร์ 7805 ได้ไฟ 5V) ห้ามใช้ไฟจากบอร์ด raspi

การต่อสาย

  1. สาย servo น้ำตาล ต่อกับ ขั้วลบ (-) ของแหล่งจ่ายไฟ servo
  2. สาย servo แดง ต่อกับ ขั้วลบ (+) ของแหล่งจ่ายไฟ servo
  3. สาย servo ส้ม เป็นสายดาต้า ต่อกับ PIN 12  ของบอร์ดราสพาย (GPIO pin 18)
  4. PIN 6 (ground) ของราสพาย ต่อกับ ขั้วลบ (-) ของแหล่งจ่ายไฟ servo

Python Code

# Servo Control
import time
def set(property, value):
        try:
                f = open(“/sys/class/rpi-pwm/pwm0/” + property, ‘w’)
                f.write(value)
                f.close()
        except:
                print(“Error writing to: ” + property + ” value: ” + value)

def setServo(angle):
        set(“servo”, str(angle))

set(“delayed”, “0”)
set(“mode”, “servo”)
set(“servo_max”, “90”)
set(“active”, “1”)

setServo(15)
time.sleep(3)
setServo(30)
time.sleep(3)
setServo(45)
time.sleep(3)
setServo(0)
time.sleep(1)

set(“active”, “0”)

Command

  1. sudo nano servo.py แล้ว copy ด้านบนไปวาง , crlt+o เพื่อ save , crlt+x เพื่อออก
  2. sudo python servo.py เพื่อรัน script  ลองแก้ code และทดลองรันดู

WordPress SEO fine-tune by Meta SEO Pack from Poradnik Webmastera