پروژه الکترونیکپروژه های بلوتوثپروژه های پایتونپروژه های رباتپروژه های رزبری پای

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

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

آموزش ساخت ربات کنترلی با بلوتوث android و Raspberry pi

Raspberry Pi به دلیل توانایی یکپارچه ارتباط بی سیم از طریق اینترنت برای پروژه های IoT بسیار محبوب است. Raspberry Pi 3 دارای Wi-Fi و Bluetooth است ، و بلوتوث یک پروتکل ارتباط بی سیم بسیار محبوب است. در این پروژه رزبری پای میخواهیم با استفاده از Raspberry pi و بلوتوث، یک ربات کنترل شونده بی سیم بسازیم. در اینجا از گوشی موبایل به عنوان یک کنترل برای ماشین استفاده میکنیم.

در اینجا ما از رزبری پای 3 استفاده میکنیم که دارای بلوتوث داخلی است. در صورتی که از مدل های پایین تر استفاده کنید نیاز به یک دانگل بلوتوث دارید. در اینجا ما از پروتکل بلوتوث RFCOMM برای ارتباطات بی سیم استفاده می کنیم.

برنامه نویسی برای بلوتوث در پایتون از مدل برنامه نویسی سوکت تبعیت می کند و ارتباطات بین دستگاه های بلوتوث از طریق سوکت RFCOMM انجام می شود. مشخصات درگاه سریال بلوتوث براساس این پروتکل تنظیم شده است. RFCOMM به دلیل پشتیبانی گسترده و API عمومی، در پروژه های بلوتوث بسیار محبوب است.

اگر Raspberry Pi 2 دارید ، لازم است از دانگل بلوتوث خارجی یا ماژول بلوتوث HC-06 استفاده کنید.

همچنین این پروزه را با آردوینو نیز طراحی کرده ایم و میتوانید مشاهده کنید : آموزش کنترل ماشین اسباب بازی با آردوینو و موبایل اندروید

نصب بسته های لازم برای ارتباط بلوتوث با رزبری پای

برای برقراری ارتباط بلوتوث در Raspberry Pi باید تعدادی نرم افزار نصب کنیم. شما باید Raspbian Jessie را نصب کرده باشید. ما ابتدا باید Raspbian را با استفاده از دستورات زیر به روز کنیم:

sudo apt-get update
sudo apt-get upgrade

سپس باید چند بسته مرتبط با بلوتوث را نصب کنیم:

sudo apt-get install bluetooth blueman bluez

سپس Raspberry Pi را دوباره راه اندازی کنید:

sudo reboot

BlueZ یک پروژه متن باز و پروتکل بلوتوث رسمی Linux است. این پروتکل از تمام پروتکل های اصلی بلوتوث پشتیبانی می کند و اکنون جزئی از هسته رسمی لینوکس است. Blueman رابط دسک تاپ را برای مدیریت و کنترل دستگاه های بلوتوث فراهم می کند.

سرانجام برای ارتباط بلوتوث به کتابخانه پایتون نیاز داریم تا بتوانیم داده ها را از طریق RFCOMM با استفاده از زبان پایتون ارسال و دریافت کنیم:

sudo apt-get install python-bluetooth

همچنین کتابخانه های پشتیبانی GPIO را برای Raspberry Pi نصب کنید:

sudo apt-get install python-rpi.gpio
اکنون نصب بسته های مورد نیاز برای ارتباط بلوتوث در Raspberry Pi انجام شده است.

جفت کردن دستگاه های بلوتوث با Raspberry Pi

جفت کردن دستگاه های بلوتوث، مثلا تلفن همراه ، با Raspberry Pi بسیار آسان است. در اینجا تلفن Android هوشمند خود را با Raspberry Pi جفت میکنیم. ما قبلاً BlueZ را در Pi نصب کرده ایم که یک ابزار خط فرمان به نام “bl Bluetoothctl” را برای مدیریت دستگاه های بلوتوث ما فراهم می کند. اما قبل از آن ، دانگل بلوتوث USB خود را به Raspberry Pi متصل کنید و با استفاده از دستور زیر بررسی کنید که تشخیص داده شده است یا نه:

lsusb

جفت کردن دستگاه های بلوتوث با Raspberry Pi

اکنون برنامه bl Bluetoothctl را با دستور زیر باز کنید:

اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید.
حتما ببینید :  پروژه مکان یاب GPS با برد STM32 + آموزش کامل و فیلم
sudo bluetoothctl

می توانید با تایپ کردن “help” ، تمام دستورالعمل های برنامه Bluetooth Bluetooth را بررسی کنید. سپس باید دستورات زیر را به ترتیب مشخص وارد کنیم:

[bluetooth]# power on
[bluetooth]# agent on
[bluetooth]# discoverable on
[bluetooth]# pairable on
[bluetooth]# scan on

بعد از ارسال آخرین دستور یعنی”scan on” ، دستگاه بلوتوث (تلفن همراه) خود را لیست مشاهده خواهید کرد. مطمئن شوید که بلوتوث تلفن همراهتان توسط دستگاههای مجاور روشن و قابل مشاهده است. سپس آدرس MAC دستگاه خود را کپی کرده و با استفاده از دستور داده شده آن را جفت کنید:

pair <address of your phone>

سپس برای این ترمینال از شما یک رمز عبور خواسته میشود، سپس رمز عبور را در آنجا تایپ کنید و اینتر را بزنید. سپس همان رمز عبور را در تلفن همراه خود وارد کنید. تبریک اکنون گوشی اندروید شما با موفقیت با رزبری پای جفت شده است.

نصب بسته های لازم برای ارتباط بلوتوث با رزبری پای

همانطور که قبلاً گفته شد ، می توانید برای جفت کردن تلفن همراه از رابط دسک تاپ استفاده کنید. بعد از نصب Blueman، مانند تصویر زیر یک نماد بلوتوث در سمت راست دسکتاپ Raspberry Pi مشاهده خواهید کرد که با استفاده از آن می توانید جفت شدن تلفن همراه با رزبری پای را به راحتی انجام دهید.

ارسال اطلاعات از گوشی موبایل Android به Raspberry Pi

انتخاب ماشین اسباب بازی:
در این پروژه از یک ماشین اسباب بازی استفاده کرده ایم. این خودرو در قسمت جلو و عقب خود دارای دو موتور دی سی است. موتور سمت جلو برای هدایت اتومبیل به معنای چرخاندن سمت چپ یا راست (مانند ویژگی فرمان واقعی ماشین) استفاده می شود. و موتور عقب برای رانندگی خودرو در جهت عقب و جلو استفاده می شود. برای چرخاندن چرخ های جلو و عقب می توانید از هر ماشین اسباب بازی که دارای دو موتور DC باشد استفاده کنید.

توضیحات شماتیک مدار پروژه

در این پروژه ماشین کنترلی، ما از موتور درایور L293D برای کنترل موتور ها استفاده کرده ایم. پاور بانک برای تامین نیروی مورد نیاز موتور ها و برد رزبری پای استفاده میشود. توجه داشته باشید پاوربانک به علت سنگین بودن ممکن است برای شما محدودیت سرعت ایجاد کند بنابراین میتوانید از باتری های معمولی یا لیتیومی نیز استفاده کنید. تصویر زیر تمام اتصالات این پروژه را نشان میدهد.

آموزش ساخت ربات کنترلی با بلوتوث android و Raspberry pi

توجه: بیش از 5 ولت را به رزبری پای وارد نکنید.

کنترل اتومبیل از راه دور با برنامه BlueTerm Android

اکنون پس ازجفت کردن تلفن همراه، برای برقراری ارتباط با Raspberry Pi با استفاده از آداپتور سریال بلوتوث، باید یک برنامه Android نصب کنیم.  ما اینجا برنامه BlueTerm را نصب کردیم. دانلود نرم افزار BlueTerm

همچنین می توانید از هر برنامه ترمینال بلوتوث دیگری که از طریق ارتباطات RFCOMM پشتیبانی می کند ، استفاده کنید.

پس از بارگیری و نصب برنامه BlueTerm، کد پایتون داده شده در انتهای صفحه را اجرا کنید و دستگاه رزبری پای جفت شده را از برنامه BlueTerm انتخاب کنید.

کنترل LED با برنامه AndroidT BlueTerm

پس از اتصال موفق، در بالای نرم افزار پیام connected:raspberrypi را مشاهده میکنید.

حتما ببینید :  پروژه کنترل سرعت موتور DC با STM32 (راه اندازی PWM)

ارتباط اندروید و رزبری پای با بلوتوث

حالا فقط می توانید دستورات زیر را در برنامه BlueTerm وارد کنید تا ماشین در جهت دلخواه حرکت کند. برای خروج از برنامه ، “q” را فشار دهید. همچنین برای کنترل این ماشین با استفاده از Voice خود می توانید از صفحه کلید تایپ Google Voice استفاده کنید.

دستورات:

  • F – حرکت به جلو
  • B – حرکت به عقب
  • S – توقف
  • L – حرکت به جلو چپ
  • R – حرکت به جلو راست
  • A – حرکت به سمت چپ عقب
  • P – حرکت به سمت راست عقب
  • Q – خروج

کنترل اتومبیل از راه دور با برنامه BlueTerm Android

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

برنامه Python برای کنترل پین های Raspberry Pi GPIO با برنامه اندرویدی بسیار ساده است. فقط باید کمی درباره کد مربوط به ارتباطات RFCOMM بلوتوث بیاموزیم. ابتدا باید کتابخانه سوکت بلوتوث را وارد کنیم که به ما امکان می دهد بلوتوث را با زبان پایتون کنترل کنیم. ما در بخش قبلی کتابخانه را نصب کرده ایم. کد کامل پروژه در انتهای صفحه در فایل دانلودی قرار داده شده است. در اینجا بعضی از قسمت های کد را توضیح میدهیم.

import Bluetooth

سپس ما فایلهای هدر را درج کرده و پین ها را برای موتور تعریف می کنیم که به طور پیش فرض LOW هستند.

import bluetooth
import time
import RPi.GPIO as GPIO

m11=18
m12=23
m21=24
m22=25
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(m11, GPIO.OUT)
GPIO.setup(m12, GPIO.OUT)
GPIO.setup(m21, GPIO.OUT)
GPIO.setup(m22, GPIO.OUT)
GPIO.output(m11 , 0)
GPIO.output(m12 , 0)
GPIO.output(m21, 0)
GPIO.output(m22, 0)

کد مسئول ارتباط بلوتوث در زیر قرار دارد:

server_socket=bluetooth.BluetoothSocket( bluetooth.RFCOMM ) 
port = 1
server_socket.bind(("",port))
server_socket.listen(1)
 
client_socket,address = server_socket.accept()
print "Accepted connection from ",address

در اینجا می توانیم آنها را بصورت خطی درک کنیم:

server_socket = bl Bluetooth.BluetoothSocket: ایجاد سوکت برای ارتباطات RFCOMM بلوتوث.

server_socket.listen (1): سرور یک بار یک اتصال را بپذیرد.

client_socket, address = server_socket.accept(): سرور درخواست اتصال را می پذیرد و آدرس مک را به آدرس متغیر اختصاص می دهد.

data = client_socket.recv(1024): داده ها را از طریق سوکت client_socket دریافت کرده و آن را به داده های متغیر اختصاص میدهد. حداکثر 1024 نویسه را می توان همزمان دریافت کرد.

پس از این ما برخی عملکردها را ایجاد کرده ایم که وظیفه حرکت اتومبیل در جهت مورد نظر را بر عهده دارند:

def left_side_forward () ، def Right_side_forward () ، def def () ، def left_side_reverse () ، def Right_side_reverse () ، def reverse () def stop ( )

این عملکردها به ترتیب فراخوانی می شوند که وقتی در برنامه اندروید L ، R ، F ، A ، P ، B ، S را وارد کنیم و ربات بر این اساس حرکت میکند.

data=""
while 1:
         data= client_socket.recv(1024)
         print "Received: %s" % data
         if (data == "F"):    
            forward()
         elif (data == "L"):    
            left_side_forward()
         elif (data == "R"):    
            right_side_forward()
         elif (data == "B"):    
            reverse()
         elif (data == "A"):    
            left_side_reverse()
         elif (data == "P"):    
            right_side_reverse()
         elif data == "S":
            stop()
         elif (data == "Q"):
            print ("Quit")
            break
client_socket.close()
server_socket.close()

فیلم عملکرد پروژه

فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند.

دانلود فیلم پروژه ماشین کنترلی اندروید و رزبری پای

موارد موجود در فایل : سورس کامل ، شماتیک

برای دانلود فایل های پروژه ثبت نام کنید، تنها چند ثانیه زمان لازم است. از طریق فرم زیر اقدام کنید.

ایمیل خود را وارد کنید

نظرتان را در مورد این مطلب با ستاره دادن اعلام کنید امیدوارم این مطلب برای شما مفید بوده باشد. نظرات ، مشکلات و پیشنهادات خود را در پایین صفحه اعلام کنید
برچسب ها

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
بستن
بستن