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

ارتباط سریال بین آردوینو و رزبری پای با Rs-485

سلام. ارتباط سریال بین آردوینو و رزبری پای با Rs-485 را آماده کردیم.

برقراری اتصال سریال RS-485 بین Raspberry pi و Arduino

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

برقراری اتصال سریال RS-485 بین Raspberry pi و Arduino

ارتباط سریال RS-485

RS-485 یک پروتکل ارتباط سریال ناهمزمان است که به ساعت نیاز ندارد. این پروتکل از یک تکنیک به نام سیگنال دیفرانسیل برای انتقال داده های باینری از یک دستگاه به دستگاه دیگر استفاده می کند.

روش انتقال سیگنال دیفرانسیل چیست؟

روش سیگنال دیفرانسیل با ایجاد ولتاژ دیفرانسیل با استفاده از 5 ولت مثبت و منفی کار می کند. و با استفاده از دو سیم ، ارتباطات Half-Duplex را برقرار می کند.

با استفاده از این روش:

  • RS-485 حداکثر سرعت انتقال داده بالاتر از 30Mbps را پشتیبانی می کند.
  • این داده ها حداکثر 1200 متر را انتقال می دهد.
  • مهمترین مزیت RS-485 نسبت به RS-232 این است که میتواند از یک برد با چندین برد ارتباط داشته باشد.
  • حداکثر 32 دستگاه می توانند متصل به پروتکل RS-485 باشد.
  • یکی دیگر از مزایای RS-485 ، مصون بودن از نویز است/
  • RS-485 نسبت به پروتکل I2C سریعتر است.

ماژول سریال RS-485

ماژول RS-485 می تواند به هر میکروکنترلر دارای درگاه سریال متصل شود. برای استفاده از ماژول RS-485 با میکروکنترلرها ، ما به MAX485 TTL RS485 که مبتنی بر Maxim MAX485 IC است نیاز داریم زیرا ارتباط سریال را در مسافت های طولانی 1200 متری انجام می دهد و بصورت دو طرفه و Half-Duplex دارای سرعت انتقال داده 2.5 مگابایت بر ثانیه است. است.این ماژول نیاز به 5 ولت نیاز دارد.

توضیحات پین های RS-485

نام پینتوضیحات
VCC5V
A
خروجی درایور غیر معکوس گیرنده ورودی
B
وارسی ورودی گیرنده معکوس خروجی درایور
GNDGND (0V)
R0Receiver Out (RX pin)
REReceiver Output (LOW-Enable)
DEDriver Output (HIGH-Enable)
DIDriver Input (TX pin)

ویژگی های ماژول RS485 :

  • ولتاژ 5 ولت
  • تراشه MAX485 روی صفحه
  • مصرف برق کم برای ارتباطات RS485
  • گیرنده محدود به سرعت
  • پایانه 2P قدم 5.08 میلی متری
  • سیم کشی ارتباطی راحت RS-485
  • تمام پین های تراشه منجر به کنترل از طریق میکروکنترلر می شوند
  • اندازه: 14*44 میلی متر
حتما ببینید :  پروژه اندازه گیری ولتاژ، جریان و قدرت با آردوینو (وات، ولت و آمپر متر)

توضیحات مدار پروژه ارتباط سریال Arduino و Raspberry pi

برای اتصال MAX485 TTL RS-485 به Raspberry Pi از پین های UART رزبری پای  استفاده می شود (GPIO14، GPIO15). برای اتصال MAX485 TTL RS-485 به آردوینو UNO از پین های UART برد آردوینو استفاده می شود (1 و 0)

مدار پروژه ارتباط سریال Arduino و Raspberry pi

اتصال مدار بین یک RS-485 و Raspberry Pi 3 B +

RS-485Raspberry Pi 3 B+
DIGPIO14 (TX)
DE REGPIO4
R0GPIO15(RX)
VCC5V
GNDGND
ATo A of RS-485
BTo B of RS-485

اتصال مدار بین یک RS-485 و Arduino UNO

RS-485Arduino UNO
DI1 (TX)
DE RE2
R00 (RX)
VCC5V
GNDGND
ATo A of RS-485
BTo B of RS-485

اتصالات آردوینو UNO با سروو موتور SG-90

Servo Motor (SG-90)Arduino UNO
RED+5V
ORANGE (PWM)3
BROWNGND

اتصال مدار بین LCD و Arduino UNO

16×2 LCDArduino UNO
VSSGND
VDD+5V
V0پتاسیومتر
RS8
RWGND
E9
D410
D511
D612
D713
A+5V
KGND

 

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

در Raspberry Pi مقدار (0،10،45،90،135،180،135،90،45،10،0) از طریق پورت سریال رزبری پای به Arduino UNO ارسال می شود. برای استفاده از درگاه سریال در رزبری پای باید پورت سریال UART فعال شود.

فعال کردن UART در رزبری پای

قبل از استفاده از پین های UART در Raspberry Pi ، لازم است که فعال شوند. برای فعال کردن پین های UART (Serial) در برد Raspberry Pi مراحل زیر را دنبال کنید.

1. ترمینال را باز کنید و sudo raspi-config را تایپ کنید.

2. گزینه Interfacing را انتخاب کنید.

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

اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید.

3. و سپس سریال را انتخاب کنید.

فعال کردن UART در رزبری پای

4. سپس بر روی “No” کلیک کنید (برای غیرفعال کردن کنسول لینوکس UART استفاده می شود).

غیرفعال کردن کنسول لینوکس UART

5. سپس از raspi-config خارج شوید.

6. سپس رزبری پای را ریستارت کنید.

اکنون پورت سریال آماده استفاده است.

مهم: قبل از نوشتن مقادیر برای ماژول RS-485 ، پین های DE و RE باید High شوند.

بنابراین ، اکنون می خواهیم جزئیات مربوط به برنامه نویسی پایتون را در سمت رزبری پای ببینیم.

در ابتدا ، تمام كتابخانه های مورد استفاده فراخوانی می شوند. کتابخانه هایی که در اینجا مهم هستند عبارتند از time، Serial (برای ارتباط سریال) ، GPIO برای دسترسی به GPIO و Sleep.

import time
import serial
import RPi.GPIO as GPIO
from time import sleep

در زیر ، GPIO.BOARD مشخص می کند که شما پین ها را با شماره پین های روی برد مشخص میکنید.

GPIO.setmode(GPIO.BOARD)

پین GPIO 7 در رزبری پای High میشود به دلیل اینکه پین ​​7 به DE و RE از RS-485 وصل شده است و باعث می شود رزبری پای مقادیر را ارسال کند.

GPIO.setup(7, GPIO.OUT, initial=GPIO.HIGH)

کلاس سریال را در پین های GPIO14 و GPIO 15 (درگاه Serial0) با اطلاعات مختلفی مانند پورت سریال ، نرخ baud ، میزان parity و Stop پیکربندی میکنیم.

send = serial.Serial(
    port='/dev/serial0',
    baudrate = 9600,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.EIGHTBITS,
    timeout=1
)

متغیر “i” آرایه ای با مقادیر زاویه های است ، این مقادیر از طریق ارتباط سریال ارسال می شوند.

i = [0,10,45,90,135,180,135,90,45,10,0]

تابع send.write (str (x)) مقادیر را در while به صورت پی در پی به RS-485 ارسال می کند.

while True:
 for x in i:
     send.write(str(x))
     print(x)
     time.sleep(1.5)

برنامه نویسی آردوینو برای ارتباط سریال

در طرف گیرنده که Arduino UNO است ، مقادیر از رزبری پای دریافت می شود. سروو موتور متصل به آردوینو با توجه به مقدار دریافت شده چرخانده می شود و همچنین مقدار آن در LCD نشان داده می شود. بنابراین ، در برنامه Arduino از کتابخانه نمایشگر LCD و کتابخانه موتور Servo استفاده شده است. Arduino IDE برای برنامه نویسی Arduino UNO استفاده می شود.

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

مهم : از آنجایی که Arduino UNO از RS-485 اطلاعات را دریافت می کند ، پین های DE و RE باید Low شوند.

دقیقاً مثل رزبری پای ما چندین لوازم جانبی داریم و باید کتابخانه های مورد نیاز مثل سروو موتور و ال سی دی کاراکتری را فراخوانی کنیم. بنابراین کد را با انجام این قسمت شروع میکنیم.

#include <LiquidCrystal.h>             
#include <Servo.h>   

سپس پین های نمایشگر LCD 16X2 که قرار است به Arduino UNO متصل شوند و پین کنترل سروو موتور نیز تعیین میشود.

LiquidCrystal lcd(8,9,10,11,12,13);
Servo servo;

در ابتدا یک پیام نمایش داده می شود که می تواند با توجه به پروژه تغییر کند و سپس برای پیام بعدی پاک می شود.

  lcd.begin(16,2);
  lcd.print("Irenx.ir");
  lcd.setCursor(0,1);
  lcd.print("RS_485");
  delay(3000);
  lcd.clear();

ارتباط سریال با نرخ baud 9600 آغاز می شود.

Serial.begin(9600);     

همانطور که گفتیم آردوینو اطلاعات را از RS-485 متصل به آردوینو بنابراین پین

همانطور که Arduino RS-485 مقدار را از رزبری پای دریافت می کند ، بنابراین پین 2 (EnablePin) برای قرار دادن آن در حالت گیرنده، Low میشود. همچنین باعث میشود که پین DE و RE از RS-485 برای دریافت اطلاعات Low باشند.

digitalWrite(enablePin, LOW);      

پین PWM سروو موتور به پین ​​3 PWM آردوینو وصل می شود.

 servo.attach(3);       

while loop جایی است که مقادیر از سمت رزبری پای دریافت میشوند.

از عملکرد Serial.paseInt () برای دریافت مقدار عدد صحیح (زاویه) از درگاه سریال استفاده می شود.

int angle = Serial.parseInt(); 

مقدار چرخش زاویه دریافت شده برای سرو موتور به منظور چرخش شافت موتور سروو از (0 تا 180) نوشته میشود.

servo.write(angle); 

و در آخر ، مقدار زاویه در نمایشگر LCD با استفاده از توابع LCD مربوطه نمایش داده می شود.

        lcd.setCursor(0,0);
        lcd.print("Angle From RPi ");
        lcd.setCursor(0,1);
        lcd.print(angle);

فیلم عملکرد ارتباط سریال بین آردوینو و رزبری پای

از ترمینال برای اجرای کد پایتون در Raspberry Pi استفاده کنید. مقدار زاویه از رزبری پای به آردوینو ارسال می شود تا زاویه Servo Motor را از طریق ارتباط سریال RS-485 کنترل کند.

دانلود فیلم ارتباط سریال بین آردوینو و رزبری پای

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

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

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

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

محمد رحیمی

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

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

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

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