به حرکت درآوردن سروو موتور با اشاره دست
برای پروژه راه اندازی سروو موتور با رزبری پای به لوازم زیر نیاز خواهید داشت:
- برد Ultraborg
- سنسور آلتراسونیک HC-SR04
- سروو موتور،
- ۴ عدد باتری قلمی AA
- جا باتری
حرکت دادن رباتها به شکلهای گوناگونی قابل انجام است. سروو موتورها یکی از موتورهای محبوب دنیای رباتیک هستند که عمدتا به دلیل ارزان بودن در کاربردهای متفاوتی از قبیل پهبادها، بازوهای رباتیک و ماشینهای کنترلی استفاده میشوند. از طرفی سنسورهای التراسونیک نیز یکی دیگر از قطعات محبوب ربات سازها به شمار میآیند. میتوانید از این سنسورها برای تعیین فاصله استفاده کنید و از برخورد ربات به موانع جلوگیری کنید. هر دو ارزان بوده و در دسترس هستند، بنابراین در این پروژه قصد داریم به شما نشان دهیم که چگونه میتوانید از هر دوی آنها با هم برای ساخت یک ربات بسیار ساده استفاده کنید، رباتی که به حرکت اجسام عکس العمل نشان میدهد!
قدم اول: اتصال 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