پروژه رزبری پای: به حرکت درآوردن سروو موتور با اشاره دست + کد پایتون

به حرکت درآوردن سروو موتور با اشاره دست

برای پروژه راه اندازی سروو موتور با رزبری پای به لوازم زیر نیاز خواهید داشت:

  1. برد Ultraborg
  2. سنسور آلتراسونیک HC-SR04
  3. سروو موتور،
  4. ۴ عدد باتری قلمی AA
  5. جا باتری

حرکت دادن رباتها به شکلهای گوناگونی قابل انجام است. سروو موتورها یکی از موتورهای محبوب دنیای رباتیک هستند که عمدتا به دلیل ارزان بودن در کاربردهای متفاوتی از قبیل پهبادها،‌ بازوهای رباتیک و ماشینهای کنترلی استفاده می­شوند. از طرفی سنسورهای التراسونیک نیز یکی دیگر از قطعات محبوب ربات سازها به شمار می­آیند. می­توانید از این سنسورها برای تعیین فاصله استفاده کنید و از برخورد ربات به موانع جلوگیری کنید. هر دو ارزان بوده و در دسترس هستند، بنابراین در این پروژه قصد داریم به شما نشان دهیم که چگونه می­توانید از هر دوی آنها با هم برای ساخت یک ربات بسیار ساده استفاده کنید، رباتی که به حرکت اجسام عکس العمل نشان می­دهد!

 

قدم اول: اتصال Ultraborg (شیلد، برد کنترلی مخصوص سروو موتور و سنسور آلتراسونیک)

با برداشتن جامپر نصب شده روی کانکتور دو پین شروع کنید که درست وسط برد قرار دارد. سپس بعد از اینکه از خاموش بودن رزبری مطمئن شدید،‌ با احتیاط یک جفت کابل سه تایی را بین Ultraborg و GPIO متصل کنید. اتصال کابلها را چک کنید طوریکه پین با علامت “1” در UltraBorg به پایه 1  GPIO متصل باشد، این پایه در GPIO پایه­ایست که نزدیک کارت حافظه SD قرار دارد.

 

قدم دوم: اتصال سروو موتور

در این مرحله سروو را به یکی از اتصالات سه پایه­ای نشان داده شده روی شکل وصل می­کنیم. پورتهای سروو از ۱ تا ۴ شماره­گذاری شده­اند (یعنی می­توانید ۴ عدد سروو موتور را به این برد متصل کنید) که شماره ۱ همانیست که به وسط برد نزدیکتر است. این پورتها مشابه بوده و از هر کدام به دلخواه می­توانید استفاده کنید، برای مثال در این پروژه از اتصال شماره ۱ استفاده شده است. از اتصال درست سروو اطمینان حاصل کنید  سیم زمین یا GND آن باید به پایه چپ نزدیک لبه­ی برد وصل شده باشد. رنگ سیمهای سرووهای مختلف متفاوت است اما معمولا سیم زمین به رنگ مشکی یا قهوه ایست.

 

قدم سوم: اتصال ماژول آلتراسونیک HC-SR04

پورتهای بالا و سمت چپ برد به اتصال ماژول آلتراسونیک اختصاص داده شده است و این برد قابلیت اتصال چهار ماژول را به صورت همزمان فراهم می­کند. با استفاده از جامپرهای ماده به ماده می­توانید سیمهای روی ماژول را روی برد متصل کنید. با دقت جامپرها را وصل کرده و رنگ جامپر مربوط به اتصال زمین یا GND را یادداشت کنید. حالا جامپرها را به درگاه شماره ۱ روی برد وصل کنید. سیم زمین باید به پایه نزدیک لبه­ی برد وصل شده باشد.

 

قدم چهارم: اتصال منبع تغذیه برد

برد Ultraborg دارای اتصال تغذیه خارجی برای سروو و سنسور است.  سیم مثبت تغذیه را داخل ترمینال سمت چپ مربوط به تغذیه فرو کرده و با استفاده از پیچ گوشتی محکم کنید. همین کار را برای سیم منفی انجام داده و آنرا به ترمینال سمت راست متصل کنید. حالا برای پر کردن مخزن باتری به چهار عدد باتری قلمی 5/1 ولتی نیاز دارید که حدودا اختلاف پتانسیلی به اندازه 5 ولت ایجاد شود. این مقدار اختلاف پتانسیل برای کار سروو موتور و ماژول آلتراسونیک کافیست.

 

قدم پنجم: نصب نرم افزار

در این مرحله باید رزبری را راه اندازی کنیم. تغذیه آنرا وصل کنید و منتظر بمانید که آماده به کار شود. برای نصب نرم افزار یک ترمینال باز کرده و عبارت زیر را تایپ کنید:

bash <(curl https://www.piborg.org/install-ultraborg.txt)

بعد از نصب نرم افزار، رزبری پای را ریستارت کنید. خواهید دید که موتور و ماژول متصل شده و با کمک آیکون راهنمای GUI که در دسکتاپ قرار داده شده قابل کنترل هستند. مقدار فاصله تشخیص داده شده باید با جلو و عقب بردن اجسامی که جلوی سنسور هستند تغییرکند. نوار لغزنده­ای که در سمت چپ قرار گرفته نیز باعث حرکت سروو خواهد شد. حالا فقط به کد نمونه­ای نیاز داریم که حرکت سروو را برای کاربر قابل کنترل کند.

 

قدم ششم: مثال برای پروژه راه اندازی سروو موتور با رزبری پای

قبل از هر کاری کد نمونه را از آدرس زیر دانلود کنید:

git clone https://github.com/piborg/MoveMyServo.gi

 

حالا به فولدر جدیدی رفته و دستور زیر را اجرا کنید:

cd MoveMyServo

./MoveMyServo.py

همین کد برای به حرکت درآوردن سروو کافیست ولی می­توانیم بهترش کنیم. خط ۸ تا ۱۱ کد برای تغییر نحوه­ی حرکت است. با تنظیم مقادیر   distanceMin  و distanceMax   می­توانید محدوده­ی حرکت دست خود یا اجسام دیگر را مشخص کنید. و یا با تغییر  fastMode به  False می­توانید سرعت حرکت سروو را کندتر کنید. همچنین با تغییر   updateInterval می­توانید زمان عکس العمل موتور را تغییر دهید. به نظر شما آیا باز هم می­توان تغییراتی در برنامه ایجاد کرد؟

 

کد پروژه راه اندازی سروو موتور با رزبری پای به زبان پایتون

# Import the libraries we need
import UltraBorg
import time
Settings#
distanceMin = 100.0
distanceMax = 300.0
True moves faster, False gives a more stable position#
fastMode = True
Time between updates, smaller is faster#
updateInterval = 0.1
Start the UltraBorg#
UB = UltraBorg.UltraBorg() # Create a new UltraBorg object
UB.Init() # Set the board up (checks the board is connected)

distanceDiv = (distanceMax – distanceMin) / 2.0

print ‘Press CTRL+C to finish’
try:
Set our initial position#
lastServoPosition = 0.0
newServoPosition = 0.0
UB.SetServoPosition1(lastServoPosition)
This is the loop which reads the sensor and sets the servo#
while True:
Read the ultrasonic values#
:if fastMode
We use the raw values so we respond quickly#
distanceMeasured = UB.GetRawDistance1()
:else
We use the filtered values so we get stable readings#
distanceMeasured = UB.GetDistance1()
# Convert to the nearest millimeter
distanceMeasured = int(distanceMeasured)
Generate the servo positions based on distance readings#
:if distanceMeasured != 0
newServoPosition = ((distanceMeasured – distanceMin)
/ distanceDiv) – 1.0
:if newServoPosition > 1.0
newServoPosition = 1.0
:elif newServoPosition < -1.0
newServoPosition = -1.0
Display our readings#
,print ‘%4d mm -> %.1f %%’ % (distanceMeasured
newServoPosition * 100.0)
Set our new servo position if it has changed#
:if newServoPosition != lastServoPosition
UB.SetServoPosition1(newServoPosition)
lastServoPosition = newServoPosition
#Wait between readings
time.sleep(updateInterval)
:except KeyboardInterrupt
User has pressed CTRL+C#
‘print ‘Done
Languag
>PYTHON 2.7
:DOWNLOAD
/github.com
/piborg
MoveMyServo

هر سه شنبه با مقالات رزبری پای همراه توسکانیک باشید

منبع: Rspberry Pi Projects Book

 

کتاب راهنمای رسمی شروع کار با رزبری پای

آخرین مقالات

مقالات مرتبط