آموزش پروتکل ارتباط سریال UART با میکروپایتون خواندن و نوشتن دادهها

آموزش پروتکل ارتباط سریال UART با میکروپایتون خواندن و نوشتن دادهها ، ارتباط سریال یکی از سادهترین و پرکاربردترین روشها برای انتقال دادهها بین دستگاههای الکترونیکی است. از این روش برای ارتباط میان میکروکنترلرها و سایر دستگاهها نظیر کامپیوترها، ماژولهای جانبی، حسگرها و حتی دیگر میکروکنترلرها استفاده میشود. میکروپایتون بهعنوان یک زبان برنامهنویسی سطح بالا برای میکروکنترلرها، پشتیبانی عالی از ارتباط سریال فراهم میکند.
در این مقاله، به بررسی ارتباط سریال در میکروپایتون خواهیم پرداخت و نحوه خواندن و نوشتن دادهها از طریق پورتهای سریال را با جزئیات کامل توضیح خواهیم داد. این مقاله بهصورت گامبهگام، از تنظیمات اولیه تا تکنیکهای پیشرفتهتر، شما را همراهی خواهد کرد.
ارتباط سریال چیست؟
ارتباط سریال به روشی اطلاق میشود که در آن دادهها بهصورت دنبالهای از بیتها یا بایتها از یک دستگاه به دستگاه دیگر منتقل میشوند. این دادهها بهطور معمول از طریق یک پورت سریال مانند UART (Universal Asynchronous Receiver/Transmitter) ارسال و دریافت میشوند. در این ارتباط، برخلاف ارتباطات موازی، تنها یک خط داده برای ارسال اطلاعات استفاده میشود که باعث کاهش پیچیدگی سختافزار و افزایش فاصله انتقال دادهها میشود.
ارتباط سریال به دو دسته اصلی تقسیم میشود:
- ارتباط سریال با زمانبندی (Synchronous Serial Communication): در این نوع ارتباط، فرکانس انتقال دادهها با یک سیگنال کلاک هماهنگ است.
- ارتباط سریال بدون زمانبندی (Asynchronous Serial Communication): این نوع ارتباط، که معمولاً در ارتباطات سریال سادهتر مورد استفاده قرار میگیرد، از یک سیگنال کلاک ثابت استفاده نمیکند و دادهها بهصورت مستقل از یکدیگر ارسال میشوند.
در میکروپایتون، بیشتر از نوع Asynchronous Serial استفاده میشود، که در آن از پورتهای سریال استاندارد مانند UART برای ارسال و دریافت دادهها بهره برده میشود.
نحوه استفاده از ارتباط سریال در میکروپایتون
1. پیکربندی پورت سریال در میکروپایتون
برای شروع استفاده از پورت سریال در میکروپایتون، ابتدا باید پورت سریال را پیکربندی کنید. میکروپایتون از ماژول machine
برای پیکربندی سختافزار استفاده میکند و برای ارتباط سریال از شیء UART
بهره میبرد.
نحوه پیکربندی پورت سریال
در ابتدا، باید انتخاب کنید که کدام پورت سریال را میخواهید استفاده کنید. میکروپایتون بهطور پیشفرض از پورتهای UART0، UART1 و UART2 پشتیبانی میکند.
کد زیر نمونهای از پیکربندی پورت سریال در میکروپایتون است:
import machine
import time
# پیکربندی پورت سریال 1 با سرعت 9600
uart = machine.UART(1, baudrate=9600, bits=8, parity=None, stop=2)
# ارسال یک پیام ساده به پورت سریال
uart.write('Hello, MicroPython!\n')
در اینجا:
machine.UART(1)
برای انتخاب پورت سریال 1 استفاده شده است.baudrate=9600
سرعت انتقال دادهها را مشخص میکند.bits=8
تعداد بیتهای داده را نشان میدهد.parity=None
نشاندهنده این است که از چکسازی (parity) استفاده نمیشود.stop=2
تعداد بیتهای توقف را تعیین میکند.
2. خواندن دادهها از پورت سریال
برای خواندن دادهها از پورت سریال، از متدهای read()
و readline()
استفاده میکنیم. اگر دادهای برای خواندن از پورت سریال موجود باشد، میتوان آنها را دریافت کرد. در کد زیر، دادهها بهطور مداوم خوانده میشوند و به کنسول چاپ میشوند.
while True:
if uart.any(): # اگر دادهای برای خواندن وجود داشته باشد
data = uart.read() # خواندن دادههای موجود
print('Received:', data) # چاپ دادههای دریافتی
time.sleep(0.1)
در اینجا:
uart.any()
بررسی میکند که آیا دادهای برای خواندن در پورت سریال موجود است یا خیر.uart.read()
دادهها را میخواند.
3. ارسال دادهها به پورت سریال
برای ارسال دادهها از میکروپایتون به دستگاه دیگری از متد write()
استفاده میکنیم. این متد میتواند رشتههای متنی، عددی یا دادههای باینری را ارسال کند. در اینجا، یک پیام ساده ارسال میشود:
uart.write('This is a test message.\n')
در صورتی که بخواهید دادهها را بهصورت باینری ارسال کنید، کافی است از دادههای باینری استفاده کنید:
uart.write(b'\x01\x02\x03') # ارسال دادههای باینری
4. استفاده از ارتباط سریال برای ارتباط دوطرفه
در بسیاری از پروژهها، نیاز به برقراری ارتباط دوطرفه با ارسال و دریافت دادهها بهصورت همزمان است. برای مثال، میتوان از میکروپایتون برای ارسال یک درخواست به یک دستگاه و دریافت پاسخ از آن استفاده کرد.
# ارسال درخواست
uart.write('Request data\n')
# انتظار برای دریافت پاسخ
while True:
if uart.any():
response = uart.read()
print('Response:', response)
break
این مثال نشان میدهد که پس از ارسال درخواست، میکروپایتون به انتظار دریافت پاسخ از دستگاه دیگر میماند.
نکات کلیدی در استفاده از ارتباط سریال
1. انتخاب صحیح baud rate
انتخاب صحیح baud rate (سرعت انتقال دادهها) بسیار مهم است. سرعت انتقال دادهها باید در هر دو دستگاه یکسان باشد تا دادهها به درستی منتقل شوند. مقادیر معمولی که در بسیاری از دستگاهها استفاده میشوند شامل 9600، 115200 و 57600 بیت بر ثانیه هستند. اگر baud rate به درستی تنظیم نشود، ممکن است دادهها بهدرستی منتقل نشوند یا بهطور کامل خراب شوند.
2. پیکربندی تعداد بیتهای داده و بیتهای توقف
در تنظیمات ارتباط سریال، تعداد بیتهای داده و بیتهای توقف باید بهطور یکسان در هر دو طرف ارتباط تنظیم شود. معمولاً تعداد بیتهای داده برابر با 8 و تعداد بیتهای توقف برابر با 1 است. در برخی از سیستمها، میتوان تعداد بیتهای توقف را به 2 نیز تنظیم کرد.
3. استفاده از Parity
در برخی از ارتباطات سریال، از ویژگی Parity برای شناسایی خطاها استفاده میشود. این گزینه بهطور معمول اختیاری است و برای کاربردهای ساده معمولاً از آن استفاده نمیشود. اگر از Parity استفاده کنید، ممکن است نیاز باشد که یک عدد فرد یا زوج را برای تشخیص خطاها تنظیم کنید.
4. مشکلات رایج در ارتباط سریال
در بسیاری از پروژهها، ممکن است با مشکلاتی مانند افت سرعت انتقال دادهها یا ناسازگاری پورتها مواجه شوید. در این صورت:
- بررسی کنید که تنظیمات baud rate، bits و stop bits در هر دو طرف ارتباط یکسان باشد.
- کابلها و اتصالات را برای اطمینان از اتصال صحیح بررسی کنید.
- مطمئن شوید که در صورت نیاز، فیلترهای نویز و محافظهای برق استفاده شده باشد.
سوالات متداول
1. چرا از ارتباط سریال استفاده میکنیم؟
ارتباط سریال به دلیل سادگی، هزینه کم و توانایی ارسال دادهها در مسافتهای طولانی، یکی از بهترین روشها برای ارتباط میان میکروکنترلرها و دستگاههای دیگر است.
2. چه دستگاههایی از ارتباط سریال پشتیبانی میکنند؟
تقریباً تمام میکروکنترلرها مانند ESP32، آردوینو و STM32 از ارتباط سریال پشتیبانی میکنند. همچنین بسیاری از ماژولهای جانبی مانند ماژولهای بلوتوث، GPS و ماژولهای وایفای نیز از این روش برای ارتباط استفاده میکنند.
3. چگونه میتوانم مشکلات ارتباط سریال را رفع کنم؟
برای رفع مشکلات ارتباط سریال، اطمینان حاصل کنید که baud rate و تنظیمات پارامترهای ارتباطی در هر دو دستگاه یکسان باشد. همچنین، بررسی اتصالات و کابلهای ارتباطی ممکن است به حل مشکلات کمک کند.
نتیجهگیری
ارتباط سریال در میکروپایتون ابزاری قدرتمند برای برقراری ارتباط بین میکروکنترلرها و دیگر دستگاهها است. با استفاده از پورتهای سریال، میتوان بهراحتی دادهها را ارسال و دریافت کرد و از آن در بسیاری از پروژههای میکروکنترلی بهره برد. در این مقاله، نحوه پیکربندی پورت سریال، خواندن و نوشتن دادهها، و نکات کلیدی در استفاده از ارتباط سریال را بررسی کردیم.
آموزش پروتکل ارتباط سریال UART با میکروپایتون خواندن و نوشتن دادهها
مطلب پیشنهادی
شروع کار با محیط برنامه نویسی میکروپایتون Thonny ، uPyCraft و VS Code
آموزش کارت حافظه ماژول SD با آردوینو Arduino ذخیره سازی داده ها
دیدگاههای محترمانه: لطفاً نظرات خود را با رعایت احترام به دیگران و به صورت محترمانه ارسال کنید. از بهکار بردن زبان توهینآمیز، تهدیدآمیز یا نژادپرستانه خودداری کنید.
حفظ حریم خصوصی: از درج اطلاعات شخصی خود یا دیگران مانند شماره تماس، آدرس و هرگونه اطلاعات حساس خودداری کنید.
محتوای تبلیغاتی: ارسال دیدگاههای تبلیغاتی، لینکهای خارجی یا هر نوع محتوای تجاری که مرتبط با موضوع نباشد، ممنوع است.
موافقت با قوانین: با ارسال دیدگاه خود، شما تأیید میکنید که قوانین فوق را خوانده و با آنها موافقید. تیم ما حق دارد نظرات غیرمجاز را حذف کند.