پروتکل ارتباطی UART، برای برقراری ارتباط سریال بین میکروکنترلر ها و دیوایس ها کاربرد دارد. ارتباط UART یک ارتباط سریال دو طرفه بین فرستنده TX, گیرنده RX است. در بخش ششم از سری آمورش های میکروپایتون با رزبری پای پیکو به معرفی پروتکل ارتباطی UART و نحوه ی فراخوانی آن در میکروپایتون خواهیم پرداخت. در ادامه با مرجع تخصصی رزبری پای، به زبان فارسی، دیجی اسپارک همراه باشید.
پروتکل ارتباطی UART
UART مخفف عبارت Universal Asynchronies Receiver Transmitter است . از پروتکل ارتباطی UART برای برقراری ارتباط سریال بین میکروکنترلرها و دیوایس ها استفاده میشود. ارتباط UART، یک ارتباط دو طرفه است. در پروتکل ارتباطی UART فرستنده و گیرنده می توانند همزمان داده را ارسال و دریافت کنند. ارتباط UART دارای دو پایه RX و TX است. پایه RX جهت دریافت و پایه TX جهت ارسال داده ها به کار می رود. بادریت مشخص میکند که اطلاعات با چه سرعتی بر روی خط سریال ارسال میشوند و واحد بیت در ثانیه (bps) بیان میشود.یکی از پرکاربردترین بادریت ها ۹۶۰۰ بیت در ثانیه است. دیگر بادریت های استاندارد ۱۲۰۰، ۲۴۰۰، ۴۸۰۰، ۱۹۲۰۰، ۳۸۴۰۰، ۵۷۶۰۰ و ۱۱۵۲۰۰ است.
پروتکل ارتباطی UART (Universal Asynchronous Receiver/Transmitter) یک استاندارد ارتباطی سریال برای ارتباط دستگاهها با یکدیگر است. این پروتکل اغلب برای ارتباط میان میکروکنترلرها، ماژولها، سنسورها و دستگاههای مختلف الکترونیکی استفاده میشود. UART یکی از سادهترین و پراستفادهترین روشهای ارتباطی سریال است.
ارتباط UART به صورت دیجیتال و بیپایان انجام میشود و از دو خط اصلی تشکیل شده است:
- TX (Transmit): این خط برای ارسال دادهها از دستگاه منبع به دستگاه مقصد استفاده میشود.
- RX (Receive): این خط برای دریافت دادهها از دستگاه مقصد به دستگاه منبع مورد استفاده قرار میگیرد.
UART از تکنیک ارسال اطلاعات به صورت ناهمزمان (Asynchronous) استفاده میکند، به این معنا که دادهها با فاصلههای زمانی متغیری ارسال میشوند و هیچ سیگنال تاکنندهای برای هماهنگسازی زمانی ندارند. برای این منظور، هر ارسال داده با یک بیت استارت (Start Bit) شروع میشود، سپس بیتهای داده و بیتهای انتهایی (Stop Bits) دنبال میشوند. این استراکچر برای دستگاهها امکان تشخیص شروع و پایان دادهها را فراهم میکند.UART میتواند با انتخاب سرعت انتقال مختلف (Baud Rate) کار کند، که تعیین میکند که چقدر داده در هر ثانیه انتقال داده میشود. برخی از مقادیر معمول برای Baud Rate در ارتباط UART شامل ۹۶۰۰، ۱۹۲۰۰، ۳۸۴۰۰، ۵۷۶۰۰ و ۱۱۵۲۰۰ بوده و در هر دستگاه مشخص میشود.
در رزبری پای پیکو UART (serial bus)
در رزبری پای (Raspberry Pi)، پینهای UART (Universal Asynchronous Receiver/Transmitter) یک راه برای ارتباط با دستگاهها و سنسورها با استفاده از ارتباط سریال فراهم میکنند. برای استفاده از پورت UART در رزبری پای، شما به دستگاه خود باید به صورت فیزیکی به پینهای UART متصل شوید و سپس نرمافزار را تنظیم کنید تا ارتباط UART را پشتیبانی کند.
در رزبری پای پیکو (Raspberry Pi Pico)، شما دو پین UART را دارید:
- UART0:
GP0 (پین ۰): TX (ارسال داده)
GP1 (پین ۱): RX (دریافت داده)
برای استفاده از UART در رزبری پای پیکو، میتوانید از زبان برنامهنویسی MicroPython یا C/C++ استفاده کنید. در مثال زیر، از MicroPython برای تنظیم و استفاده از UART استفاده میشود:
import machine
import utime
# تنظیم UART با استفاده از GP0 و GP1
uart = machine.UART(0, baudrate=9600)
while True:
uart.write(“Hello, UART!\n”)
utime.sleep(1)
در این مثال، یک ارتباط UART با سرعت ۹۶۰۰ بیت در ثانیه برقرار میشود و سپس پیام “Hello, UART!” هر ثانیه یکبار ارسال میشود.برای خواندن دادهها از UART، شما میتوانید از uart.read() یا uart.readline() استفاده کنید. همچنین، میتوانید تنظیمات مختلفی مانند سرعت ارتباط (baudrate) و حجم داده (databits، stopbits، parity) را با استفاده از پارامترهای مختلف در تنظیمات UART تغییر دهید.
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
مثال: برقراری ارتباط UART با Tera Term
برای تست ارتباط UART با سایر سیستم ها و میکروکنترلرها نیاز به استفاده و فراخوانی از ماژول UART در رزبری پای پیکو PICO هستیم. در این مثال به کمک یک مبدل USB TO SERIAL ارتباط بین رزبری پای پیکو و پی سی PC را برقرار کرده و توسط پایه های RX , TX دیتای مورد نظر که در اینجا یک متن است را ارسال میکنیم. برای نمایش دیتا در پی سی PC به یکی از نرم افزارهای ارتباطی نیاز داریم. برای این منظور از نرم افزارهایی مانند HERCULES, TERMA TERM, PUTTY, HYPER TERM میتوانیم استفاده کنیم. برای برقراری ارتباط سریال در رزبری پای پیکو از دو ارتباط سریال UART میتوانیم به دلخواه استفاده کنیم که به صورت زیر در برنامه تعریف میشود.
uart0 = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1)) uart1= UART(1, baudrate=9600, tx=Pin(8), rx=Pin(9))
اتصالات بین رزبری پای پیکو مبدل usb to serial به صورت زیر است.
- پایه RX رزبری پای پیکو را به پایه TX مبدل متصل کنید.
- پایه TX رزبری پای پیکو را به پایه RX مبدل متصل کنید.
- پایه GND رزبری پای پیکو را به پایه GND مبدل اتصال دهید.
طبق PINOUT بالا پایه های TX0, RX0, TX1, RX1 مشخص شده است. برای برقراری ارتباط نرم افزار TERMA TERM را نصب کنید. پس از نصب بر روی گزینه SERIAL کلیک کنید و سپس مبدل USB را به پورت سیستم PC اتصال دهید. در نرم افزار TERMA TERM پورت شناسایی شده و آماده به کار خواهد بود.
در ابتدا گزینه Serial را انتخاب کنید. سپس پورت در صورت صحیح بودن ارتباط و اتصالات شناسایی میشود. در نهایت بر روی OK کلیک کنید. پنجره ترمینال باز میشود.
زمان استفاده از کد میکروپایتون رسیده است. با توجه به کلاس هایی که در پاراگراف اول یاد گرفتیم. ارتباط سریال را در کد برنامه فراخوانی میکنیم.
کد میکروپایتون برقراری ارتباط سریال UART
برای اجرای کد نرم افزار Thonny Python IDE را باز کرده و پس از انتخاب برد رزبری پای پیکو کد را انتقال دهید.
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
جمع بندی لیدی پای
به همین سادگی میتوانید ارتباط UART را توسط مبدل usb to serial با دیگر سیستم ها برقرار و ایده هایتان را پیاده سازی کنید. مهمترین نکته در اجرای این پروژه برقرای ارتباط صحیح بین رزبری پای پیکو و مبدل USB TO SERIAL مورد استفاده است. سپس از هر نرم افزار ارتباطی که استفاده میکنید حتما پورت را دقیق مشخص کنید. مطابق با تصویر نرم افزار TERMA TERM تنظیمات از جمله BOUDRATE را مشخص کنید. پایه TX مبدل به پایه RX پیکو و پایه RX مبدل به پایه TX پیکو متصل میشود. تغذیه برد رزبری پای پیکو را از طریق یک کابل USB دیگر برقرار کنید.
وسایل مورد نیاز
ماژول مبدل USB to Serial FT232RL – پروگرامر FTDI
ماژول USB2.0 To TTL مبدل سریال UART با تراشه CP2102
برد بورد Bread Board مدل MB 102
پک ۳ عددی کابل فلت ۱۰ سانتی متری رنگی Jumper color kit
چنانچه در مراحل راه اندازی برد رزبری پای پیکو Picro و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
سلام وقتتون بخیر .
من برای ارسال sms با ماژول sim800l برای ارسال کد هگز ۰x1a از دستور زیر استفاده کردم.
data = [0x1a]
ax = bytes(data)
uart0.write(ax)
با سلام
کاملا درست است. توسط write بایت بافر را در باس سریال رایت میکند و عدد برگشتی همان عدد بایت است.
فکر نمیکنم خیلی ارتباط یوآرت در پروژه هایی مثل پیکو کاربری باشه
با سلام
برای راه اندازی ماژول هایی که از ارتباط UART بهره میبرند، قطعا بایستی از کلاس آن در برنامه استفاده شود.
آیا امکان استفاده از esp01s با این برد برای تامین وای فای فراهم است>
با سلام
کاربر گرامی در این خصوص قبلا آموزش کاملی منتشر شده است. لینک زیر را مطالعه کنید.
آموزش کار با برد ESP01s با رزبری پای پیکو
برای اتصال sim800l میشه از تابع و کلاس های uart برای رزبری پای پیکو استفاده کرد؟
با سلام
کاربر گرامی بله امکان پذیر است. در کامنت ها کاربر دیگری به همین موضوع اشاره کرده است، بررسی کنید.
با سلام میشه از تراشع Esp32s برای اتصال به پیکو استفاده کرد؟
با سلام
بله میتوانید از ESP32S استفاده کنید.
با سلام
آیا از کد کالای ۴۰۶۱۵ دانشجوکیت برای این آموزش میشه استفاده کرد من اونو دارم
با سلام
بله تفاوتی ندارد.
سلام مهندس
لطفا بگید چ جوری میکروپایتون را بر روی رزبری پای پیکو نصب کنیم؟
سلام
در این خصوص لینک زیر را مطالعه کنید.
https://digispark.ir/running-raspberry-pi-pico-with-arduino-and-thonny/