آموزش آردوینوآموزش رزبری پایپروژه رزبری پایپروژه های آردوینو

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

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

برقراری اتصال سریال 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

نام پین توضیحات
VCC 5V
A
خروجی درایور غیر معکوس گیرنده ورودی
B
وارسی ورودی گیرنده معکوس خروجی درایور
GND GND (0V)
R0 Receiver Out (RX pin)
RE Receiver Output (LOW-Enable)
DE Driver Output (HIGH-Enable)
DI Driver 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-485 Raspberry Pi 3 B+
DI GPIO14 (TX)
DE RE GPIO4
R0 GPIO15(RX)
VCC 5V
GND GND
A To A of RS-485
B To B of RS-485

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

RS-485 Arduino UNO
DI 1 (TX)
DE RE 2
R0 0 (RX)
VCC 5V
GND GND
A To A of RS-485
B To B of RS-485

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

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

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

16×2 LCD Arduino UNO
VSS GND
VDD +5V
V0 پتاسیومتر
RS 8
RW GND
E 9
D4 10
D5 11
D6 12
D7 13
A +5V
K GND

 

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

در 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 کنترل کند.

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

5 (4 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

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

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

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