این پروژه هر چند پروژه ای ساده به نظر میرسد ولی علاوه بر پیچیدگیهای مختلف در اجرا یک برنامه ی بسیار کاربردی است که اجرای آن در بسیاری از پروژه ها مورد نیاز است.ترکیب این پروژه با یک فرستنده ی nrf و یا hmr میتواند یک لینک ارتباطی بی سیم ایجاد نماید که خود پروژه ای جذابتر خواهد بود.در این برنامه هدف ما ارسال هر نوع فایلی با هر فرمتی با استفاده از پورت های سریال در نرم افزار matlab بوده که انتقال فایلهای بزرگ نیز در این ساختار میسر شده است.از جمله کاربردهای این پروژه انتقال عکس از طریق میکرو است که بسیار کاربردی است.
راه اندازی پورت های سریال در نرم افزار matlab
با توجه به این که متلب یکی از قویترین نرم افزارهای مهندسی است.قدرت فوق العاده بالای انجام محاسبات پیچیده و جعبه ابزارهای مختلف matlab ویژگی این برنامه است. این قابلیت ها باعث میشود که به جای استفاده از PLCگران قیمت و صفحات نمایش HMI ازیک کامپیوتر باقییمت خیلی پایین تر و کاربردهای وسیع تر در پروژه های صنعتی استفاده کرد. از این رو میتوان از قابلیتهای فوق العاده نرم افزار matlab در پروژه های avr به راحتی بهره برد.شما برای یاد گیری ارتباط متلب با میکروکنترلرها میتواند به مطلب فیلم آموزش برقراری ارتباط سریال بین matlab,Proteus,avr مراجعه نمایید. راه اندازی پورت سریال در نرم افزار متلب کار بسیار ساده ای است و برای شروع باید ابتدا دستورات کار با پورت سریال را مرور کنیم:
دستور serial:
شئ پورت سریال را ایجاد می کند. مثلا می توان نوشت:
s = serial(‘COM1′);
که شئ s را ایجاد می کند.
دستور fopen:
شئ پورت سریال را به وسیله متصل می کند. یعنی در حقیقت پورت را باز می کند.
fopen(s)
دستورfwrite:
داده های باینری را در وسیله می نویسد. fwrite(1) در هنگام اجرای این دستور به دیود نوری نگاه کنید که در این هنگام روشن و سپس خاموش می شود.
دستور fclose:
شئ پورت سریال را از وسیله جدا می کند.
fclose(s)
مشخصات اجزاء پورت سریال:
مشخصات ارتباطی، خواندن، نوشتن اجزای شئ پورت سریال به طور خلاصه در زیر برحسب الفبا آمده اند:
مشخصات ارتباطی:
- BaudRate:سرعتی که بیتها فرستاده می شوند را مشخص می کند. توضیحات:شما BaudRate را بر حسب بیت بر ثانیه پیکربندی می کنید.بیت های ارسالی شامل بیت شروع، بیت های داده، بیت توازن،(اگر به کار روند) و بیت های توقف هستند.هر چند اگر بیت های داده ذخیره شوند. BaudRate سرعتی است که اطلاعات در کانال ارتباطی فرستاده می شود در مفهوم پورت سریال باود ۹۶۰۰ این معنی را می دهد که پورت سریال قادر به ارسال ماکزیمم ۹۶۰۰ بیت در هر ثانیه است.اگر واحد اطلاعاتی یک باود (یک بیت) باشد،bitrate وbaudrate با هم یکی هستند اگر یک باود به عنوان ده بیت داده شود،(برای مثال،هشت پالس بیتهای داده دو چارچوب بیتی)،bitrate هنوز ۹۶۰۰ است ولی baudrate، ۹۶۰۰/۱۰یعنی ۹۶۰ است. شما همیشه baudrate را بر حسب بیت در هر ثانیه پیکربندی می کنید.بنابرین در مثال بالا baudrate را ۹۶۰۰ تنظیم می کنید. توجه: هم کامپیوتر و هم دستگاه جانبی باید در یک باود تنظیم شوند برای اینکه شما بخواهید خواندن و نوشتن موفقی داشته باشید. برای این کار روی آیکون My computer کلیک راست کرده Manage را انتخاب می کنیم در صفحه باز شده Device Manager را انتخاب کرده و از سخت افزار های موجود در سمت راست Ports(Com&Lpt) را انتخاب می کنیم و روی + کلیک می نماییم، روی Communicaitions که مربوط به COM1 است دو بار کلیک کرده و در دیالوگ باز شده در تب Port Setting گزینه Bit per second را روی مقدار مورد نظر تنظیم می کنیم. Baudrate های استاندارد شامل ۱۱۰،۳۰۰،۶۰۰،۱۲۰۰،۲۴۰۰،۴۸۰۰،۹۶۰۰،۱۴۴۰۰ ،۱۹۲۰۰،۳۸۴۰۰،۵۷۶۰۰۱۱۵۲۰۰،۱۲۸۰۰۰ و۲۵۶۰۰۰ بیت در هر ثانیه است.
- Databits:تعداد بیت های داده برای ارسال را مشخص می کند.که می توانند پنج،شش،هفت و یا هشت باشند.
- Parity:نوع مقابله توازن را مشخص می کند. که خالی، زوج، فرد،علامت و یا فاصله است.
- Stopbits:تعداد بیت های بکار رفته شده را برای نمایش انتهای بایت مشخص می کند.
- Terminator:نوع کاراکتر پایان رساننده را مشخص می کند. مشخصات نوشتن:
- BytesToOutput:شامل تعداد بایت هایی است که در بافر خروجی جریان دارند.
- OutputBufferSize:سایز بافر خروجی را برحسب بایت شخص می کند.
- Timeout: زمان نوشتن برای اینکه عملکرد خواندن و یا نوشتن کامل شود را مشخص می کند.
- TransferStatus: اگر یک عملکرد خواندن و یا نوشتن آسنکرون در پروسه باشد را نمایش می دهد.
- ValuesSent: مجموع تعداد مقادیر نوشته شده در وسیله را نمایش می دهد.
مشخصات خواندن:
- BytesAvailable: تعداد بایت های قابل دسترسی در بافر ورودی را نمایش می دهد.
- InputBufferSize: سایز بافر ورودی را برحسب بایت مشخص می کند.
- ReadAsyncMode: مشخص می کند که آیا یک عمل خواندن آسنکرون پیوسته است یا دستی ؟
- Timeout: در بالا توضیح داده شد.
- TransferStatus: در بالا توضیح داده شد.
- ValuesReceived: مجموع تعداد مقادیر خوانده شده از وسیله را نمایش می دهد.
توابع پر کاربرد برای کار با پورت سریال:
تابع fgetl:
یک خط متنی از وسیله را می خواند(با رها کردن terminator)
حالات استفاده :
tline = fgetl(obj)
[tline,count] = fgetl(obj)
[tline,count,msg] = fgetl(obj)
- Obj:شئ پورت سریال است .
- Tline:خواندن متن از وسیله ، بدون terminator
- Count:تعداد مقادیر خوانده شده ، شامل terminator
- Msg:یک پیغام نمایش داده می شود اگر عمل خواندن با موفقیت نباشد.
تابع fgets:
یک خط متنی از وسیله را می خواند(که شامل terminator می شود.)
حالات استفاده:
tline = fgets(obj)
[tline,count] = fgets(obj)
[tline,count,msg] = fgets(obj
- Obj:شئ پورت سریال است .
- Tline:خواندن متن از وسیله ،با terminator
- Count:تعداد بایتهای خوانده شده ، شامل terminator
- Msg:یک پیغام نمایش داده می شود اگر عمل خواندن با موفقیت نباشد.
تابع fprintf:
داده متنی را در وسیله می نویسد.
حالات استفاده:
fprintf(obj,’cmd’)
fprintf(obj,’format’,'cmd’)
fprintf(obj,’cmd’,'mode’)
fprintf(obj,’format’,'cmd’,'mode’)
- obj:شئ پورت سریال است .
- Cmd:رشته نوشته شده در وسیله
- Format:تعیین تبدیل در زبان C
- Mode:مشخص می کند که داده سنکرون یا آسنکرون نوشته شود .
تابع fread :
داده باینری را از وسیله می خواند .حالات استفاده :
A = fread(obj,size)
A = fread(obj,size,’precision’)
[A,count] = fread(…)
[A,count,msg] = fread(…)
- Obj:شئ پورت سریال است .
- Size:تعداد مقادیر برای خواندن
- Precision:تعداد بیت های خوانده شده برای هر مقدار، و تفسیر بیتها به عنوان کاراکتر ، صحیح و یا مقادیر با ممیز شناور
- A:داده های باینری بازگشت داده شده به وسیله
- Count:تعداد مقادیر خوانده شده
- Msg:یک پیغام نمایش داده می شود اگر عمل خواندن با موفقیت نباشد.
تابع fscanf :
داده را از وسیله می خواند ، و فرمت متنی است .
A = fscanf(obj,formatSpec)
A = fscanf(obj,formatSpec,sizeA)
[A,count] = fscanf(___)
- Obj: شئ پورت سریال است .
- Format: تعیین تبدیل در زبان C
- Size: تعداد مقادیر برای خواندن
- A: داده های خوانده شده از وسیله که فرمت آن متنی است .
- Count: تعداد مقادیر خوانده شده
- Msg: یک پیغام نمایش داده می شود اگر عمل خواندن با موفقیت نباشد.
تابع length :
طول آرایه شئ پورت سریال را تعیین می کند .
Length(obj)
تابع size:
d = size(obj)
[m,n] = size(obj)
[m1,m2,...,mn] = size(obj)
m = size(obj,dim)
- obj: شئ پورت سریال است .
- Dim:بعد شئ پورت سریال
- D:تعداد سطر ها و ستون ها در شئ
- M: تعداد سطر ها در شئ ، یا طول بعد مشخص شده
- N: تعداد ستون ها در شئ
نکات راه اندازی پورت سریال:
ارور معمولی که همواره در راه اندازی پورت سریال در پورت سریال وجود دارد به شکل زیر است:
Error using serial/fopen (line 72) Open failed: Port: COM1 is not available. No ports are available. Use INSTRFIND to determine if other instrument objects are connected to the requested device
این ارو معمولاً به خاطر وجود برخی متغیرهای ذخیره شده است که با حذف این متغیرها مشکل حل خواهد شد و با اضافه کردن کد زیر به ابتدای برنامه اتصال به پورت سریال برفرار خواهد شد:
delete(instrfind);
pause(0.1);
نکته:
برای راه اندازی پورت سریال باید شماره پورت را درست وارد کرده باشید:
s=serial('COM1');
یعنی به جای COM1 باید عدد پورت سریال را که از بخش DEVICE MANAGER ویندوز به شکل زیر قابل شناسایی است قرار داد:
توضیحات بیشتر | قیمت : 15000 تومان |