آزمایشگاه مدار واسط

 

دانشگاه اصفهان

دانشکده مهندسی کامپیوتر

 

 

آزمایشگاه مدار واسط

 

نسخه ۱.۱

 

دکتر علی بهلولی

 

خرداد ۱۴۰۱

 

 


تاریخچه بازبینی ها

شماره نسخه

تاریخ

شرح تغییرات

۰.۰

۰۱/۰۷/۱۳۹۵

نسخه اولیه

۱.۰

۰۱/۰۸/۱۳۹۵

اصلاحات نگارشی

۱.۱

۰۱/۳/۱۴۰۱

افزودن آزمایشهای مربوط به ماژول وای فای

 

 

 

 

 

 


پیشگفتار

هدف از آزمایشگاه طراحی مدارهای واسط، آَشنایی عملی دانشجویان با نحوه طراحی بورد و مدارچاپی و نحوه ارتباط دستگاه های I/O با پردازنده مرکزی است. این آزمایشگاه از دو بخش اصلی تشکیل شده است. در بخش اول، نحوه طراحی بورد مدارچاپی با استفاده از نرم افزار آلتیوم آموزش داده میشود و در بخش دوم ماژولهای سخت افزاری معروف برای ارتباط بین پردازنده و محیط بیرون به صورت عملی آموزش داده خواهد شد.

مقررات این آزمایشگاه نیز مطابق مقررات عمومی آزمایشگاههای دانشگاه است. جلسات آزمایشگاه بلافاصله بعد از حذف و اضافه شروع شده و به صورت هفتگی تا شروع امتحانات پایان ترم ادامه می یابد. دانشجویی که سه جلسه غیبت داشته باشد، مردود است.

روند کلی آزمایشگاه به این صورت است که هر یک از دانشجویان باید قبل از هر آزمایش، پیش‌آگاهی آن را از قبل مطالعه کرده، در ابتدای جلسه، در یک امتحان کوچک ۱۵-۱۰ دقیقه‌ای در مورد آن پیش‌آگاهی تسلط خود را نشان دهد ( این کار به خاطر هدایت دانشجویان به مطالعة قبلی مطالب و تقلیل احتمال تقلب در پیش گزارش‌ها در نظر گرفته شده است). پس از امتحان کوچک، دانشجویان هر آزمایش (که علی القاعده ۲ یا ۳ نفر هستند)، گامهای مشخص شده در دستور کار را دنبال کرده، نتایج را در کاربرگهای آن آزمایش (که توسط مربی در محل آزمایشگاه در اختیار دانشجو گذاشته می شود) ثبت می‌کنند. به این ترتیب کاربرگها به صورت یک سری برای هر گروه کامل می‌گردد.

در ارزیابی نهایی هر دانشجو، علاوه بر نمرة امتحانات کوچک هر جلسه و نمرة گزارش جلسات (که برای تمام اعضای هر گروه یکسان است)، نظر مربی در مورد آن دانشجو و نتیجة امتحان پایان ترم دانشجو نیز دخالت دارد.

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

دکتر علی بهلولی

خرداد ۱۴۰۱

Email: bohlooli@eng.ui.ac.ir, a_bohlooli@yahoo.com

HomePage: http://eng.ui.ac.ir/bohlooli

Web Site: http://bohlooli.ir

 


فهرست مطالب

۱ آزمایش اول: رسم شماتیک در نرم افزار آلتیوم ۶

۱-۱پیش آگاهی. ۶

۱-۲پیش گزارش.. ۷

۲ آزمایش دوم: کتابخانه شماتیک در آلتیوم و ایجاد یک قطعه جدید ۱۰

۲-۱پیش آگاهی. ۱۰

۲-۲پیش گزارش.. ۱۰

۳ آزمایش سوم: آماده‌سازی شماتیک برای انتقال به PCB.. ۱۲

۳-۱پیش آگاهی. ۱۲

۳-۲پیش گزارش.. ۱۵

۳-۳ دستور کار ۱۶

۴ آزمایش چهارم: آشنایی با PCB و مفاهیم آن. ۱۸

۴-۱پیش آگاهی. ۱۸

۴-۲پیش گزارش.. ۲۱

۵ آزمایش پنجم: تکمیل کردن PCB و آماده کردن آن برای ساخت.. ۲۳

۵-۱پیش آگاهی. ۲۳

۵-۲پیش گزارش.. ۲۸

۵-۲دستور کار ۲۸

۶ آزمایش ششم: وقفه های خارجی. ۲۹

پیش آگاهی. ۲۹

پیش گزارش.. ۲۹

دستور کار ۳۰

۷آزمایش هفتم: کار با تایمر و واچ داگ.. ۳۱

پیش آگاهی. ۳۱

معرفی تایمر ۳۱

تایمرها در AVR.. ۳۱

نحوه برنامه نویسی برای تایمر ۳۱

معرفی WatchDog. ۳۱

پیش گزارش.. ۳۲

دستور کار ۳۲

۸آزمایش هشتم: کار با پورت سریال. ۳۳

پیش آگاهی. ۳۳

اصول پورت سریال. ۳۳

نحوه نوشتن برنامه برای پورت سریال به روش سرکشی. ۳۳

نحوه نوشتن برنامه برای پورت سریال به روش وقفه ۳۳

پورت سریال در بورد آموزشی. ۳۳

معرفی برنامه Terminal برای کار با پورت سریال. ۳۴

پیش گزارش.. ۳۴

دستور کار ۳۵

۹آزمایش نهم: کار با مبدل آنالوگ به دیجتال. ۳۶

پیش آگاهی. ۳۶

مبدل آنالو گ به دیجیتال در AVR.. ۳۶

پیش گزارش.. ۳۷

دستور کار ۳۷

۱۰ آزمایش دهم: راهاندازی ماژول Wifi ۳۸

۱۰-۱پیش آگاهی. ۳۸

۱۰-۱-۱ ماژولهای وای-فای با ارتباط UART. ۳۸

۱۰-۱-۲ ماژولهای وای-فای با ارتباط USB.. ۴۰

۱۰-۱-۳ محیط برنامه نویسی. ۴۰

۱۰-۲دستورکار ۴۴

۱۱ آزمایش یازدهم: ارتباط سریال با ماژول وای-فای. ۴۵

۱۱-۱پیش آگاهی. ۴۵

۱۱-۱-۱ کار با پورت سریال. ۴۵

۱۱-۲دستور کار ۴۶

۱۲ آزمایش دوازدهم: راه اندازی وب‌سرور روی ماژول وای فای. ۴۷

۱۲-۱پیش آگاهی. ۴۷

۱۲-۱-۱ حالت عملکردی Access Point ۴۷

۱۲-۱-۲ حالت عملکردی Station. ۴۷

۱۲-۲دستورکار ۴۹

 


 


۱ آزمایش اول: رسم شماتیک در نرم افزار آلتیوم

۱-۱پیش آگاهی

نرم افزار آلتیوم، یک نرم افزار تخصصی برای طراحی بورد مدار چاپی می‌باشد. برای تهیه بورد مدار چاپی یک مدار، باید در گام اول شماتیک مدار را رسم کرد. هدف این آزمایش رسم شماتیک یک مدار برای تست یک دیکدر می‌باشد. برای این منظور از دیکدر ۷۴۱۳۸ و هشت LED استفاده شده است در شکل ۱-۱، شماتیک مدار مورد نظر نمایش داده شده است.

شکل ۱-۱: شماتیک یک مدار برای تست دیکدر ۷۴۱۳۸

 

 

 

 

 

۱-۲پیش گزارش

نرم افزار آلتیوم را طبق توضیحات ارائه شده در فیلم آموزشی نصب کنید سپس با استفاده از آن، شماتیک نمایش داده شده در شکل ۱-۱، را رسم کنید. برای رسم این شماتیک، مراحل زیر را انجام دهید:

الف) ابتدا مطابق شکل زیر، یک پروژه ایجاد کنید و آنرا به نام Az۱ ذخیره کنید(بعد از ایجاد پروژه، از منوی فایل گزینه Save project را انتخاب کنید):

شکل ۱-۲: ایجاد یک پروژه جدید

شکل ۱-۳: نحوه ذخیره کردن پروژه ایجاد شده

ج) سپس مطابق شکل ۱-۴، یک صفحه شماتیک به پروژه اضافه کنید:

شکل ۱-۴: اضافه کردن یک فایل شماتیک به پروژه

د)مطابق شکل ۱-۵، پنجره جستجوی قطعات را باز کنید و قطعات مورد نیاز خود را به صفحه شماتیک اضافه کنید. در جستجو می توان از علامت * نیز استفاده کرد، مثلا برای جستجوی تراشه ۷۴۱۳۸، از عبارت *۷۴*۱۳۸* استفاده کنید.

شکل ۱-۵: نحوه جستجوی قطعات

اگر قطعه ای در کتابخانه شماتیک آلتیوم یافت نشد، میتوان کتابخانه آن را از سایت آلتیوم دانلود کرد و به نرم افزار اضافه کرد. برای اضافه کردن کتابخانه جدید به نرم افزار دکمه Libraries نمایش داده شده در شکل ۱-۵(کنار دکمه سرچ[مرحله ۲]) را کلیک و در پنجره ظاهر شده کتابخانه جدید را اضافه کنید.

ه) قطعات الکترونیکی از قبیل مقاومت، دیود، LED، سوئیچ، دیپ سوئیچ، خازن را میتوانید از کتابخانه Miscellaneous Devices سریع بیابید. در شکل ۱-۶ نحوه انتخاب این کتابخانه و انتخاب قطعه نمایش داده شده است.

شکل ۱-۶: نحوه انتخاب قطعات الکترونیکی و پرکاربرد و اضافه کردن آن به شماتیک

 

و) برای اینکه یک قطعه را در صفحه شماتیک دوارن دهید باید روی آن کلیک کنید و همزمان که کلید موس فشرده است، کلید Space را فشار دهید (با هربار فشردن کلید Space، قطعه به اندازه ۹۰ درجه دوران می یابد)

 

 

 


۲ آزمایش دوم: کتابخانه شماتیک در آلتیوم و ایجاد یک قطعه جدید

۲-۱پیش آگاهی

در نرم افزار آلتیوم امکان ساخت کتابخانه برای شماتیک وجود دارد. در کتابخانه می‌توان قطعات استفاده شده در شماتیک را ویرایش کرد و همچنین قطعات جدیدی را تعریف کرد. برای ایجاد کتابخانه شماتیک باید از منوی Design گزینه Make Schematic Library را انتخاب کنید. با انجام این کار یک فایل با پسوند schlib به پروژه اضافه می‌شود. برای دیدن کتابخانه و قطعات آن باید در پنجره Project ، فایل کتابخانه را ا انتخاب کنید.

شکل ۲-۱: نحوه مشاهده کتابخانه ایجاد شده برای پروژه

برای تولید یک قطعه جدید و اضافه کردن آن به کتابخانه از منوی Tools گزینه New Component انتخاب کنید.

۲-۲پیش گزارش

قطعه نمایش داده شده در شکل ۲-۲ را ایجاد کنید.

شکل ۲-۳: یک تراشه ۴۸ پایه

 


۳ آزمایش سوم: آماده‌سازی شماتیک برای انتقال به PCB

۳-۱پیش آگاهی

در جلسات قبل نحوه رسم شماتیک و نحوه تعریف قطعه جدید و کار با کتابخانه شماتیک انجام شد. هدف از این آزمایش، نحوه آماده‌سازی شماتیک برای انتقال آن به مرحله رسم PCB است.

بعد از اینکه شماتیک مدار تکمیل گردید مراحل زیر باید انجام گردد:

۱-    Annotate کردن شماتیک

۲-    تعیین footprint برای تمام قطعات بکار رفته در شماتیک

۳-    انتخاب گزینه Update PCB … از منوی Design

در ادامه به شرح موارد فوق پرداخته می‌شود.

۳-۱-۱ مفهوم واژه Annotate

هر قطعه‌ای که در صفحه شماتیک قرار داده می‌شود دارای یک فیلد به نام Designator است این فیلد معمولا شامل یک حرف و یک علامت سوال است (مثلا U? یا D? یا J? و ..) حرف اول نشان دهنده نوع قطعه است. در جدول ۳-۱ برخی از Designator‌های معرف آورده شده است.

جدول ۳-۱: برخی از Designatorهای معروف

.Designator

نوع قطعه

U?

تراشه (Unit)

R?

مقاومت

C?

خازن

L?

سلف

D?

دیود

J?

جامپر

S?

سوئیچ

 

با انتخاب گزینه Force Annotate All schematics از منوی Tools، نرم افزار آلتیوم به صورت اتوماتیک علامتهای "? " را به شماره تبدیل می‌کند. به عنوان مثال اگر در شماتیک از ۱۰۰ خازن استفاده شده باشد. Designator این خازنها به ترتیب تا C۱۰۰ مقداردهی خواهند شد.(توجه داشته باشید که وجود Designator تکراری در شماتیک مجاز نیست)

۳-۱-۲ تعیین FootPrint قطعات

شماتیک قطعات حاوی اطلاعاتی شامل تعداد پایه‌های ورودی/خروجی، شماره پایه و نام پایه می‌باشد و نشان دهنده شکل واقعی قطعه و نوع پکیج آن نمی‌باشد. این در حالی است که هنگام رسم PCB، شکل فیزیکی قطعه مهم است و اینکه فاصله پایه‌ها، ابعاد قطعه چقدر است. بنابراین مکانیزمی ‌باید وجود داشته باشد که نشان دهد هر قطعه ای که در شماتیک قرار دارد شکل فیزیکی آن به چه صورتی است. پارامتر Footprint هر قطعه این مساله را حل می‌کند و مشخص می‌کند که شکل فیزیکی قطعه نهایتا روی برد به چه صورتی خواهد بود. برخی از footprintهای معروف در جدول ۳-۲ نمایش داده شده است.

جدول ۳-۲: برخی از footprintهای معروف

نام footprint

توضیح

DIP۱۴

تراشه با پایه‌های سوزنی دوردیفه (تعداد کل پایه‌ها ۱۴ بوده است) تعداد پایه‌ها از ۴ تا ۶۴ می‌تواند باشد

SIP۱۰

قطعه با پایه‌های سوزنی تک ردیفه(تعداد پایه‌ها از ۲ تا ۲۰ می‌تواند باشد)

AXIAL۰.۴

مقاومت که فاصله بین دو پایه آن ۰.۴ inch است

RB.۲/.۴

خازن الکترولیتی با شعاع ۰.۴ و فاصله پایه ۰.۲ اینچ

RAD۰.۴

خازن عدسی که فاصله بین دو پایه آن ۰.۴inch است

DIODE۰.۴

دیودی که فاصله بین دو پایه آن ۰.۴inch است

 

برای مشاهده و تعیین Footprint یک قطعه، می‌بایست روی قطعه دابل کلیک کنید. در شکل ۳-۱، نتیجه دابل کلیک کردن و محل فیلد footprint نمایش داده شده است.

شکل ۳-۱:نتیجه دابل کلیک کردن روی هر قطعه و مکان فیلد footprint

۳-۱-۳ انتخاب گزینه Update PCB از منوی Design

هرگاه مراحل سه گانه فوق انجام شد و هیچ خطایی در شماتیک موجود نبود با انتخاب گزینه Update PCB Document از منوی Design می‌توانید وارد محیط PCB شوید. در صورتیکه این گزینه در منوی Design وجود نداشت باید ابتدا یک فایل PCB به پروژه اضافه کنید. در شکل ۳-۲ نحوه اضافه کردن یک فایل pcb به پروژه نمایش داده شده است.

بعد از اینکه گزینه Update PCB Document را انتخاب کردید پنجره ای ظاهر می شود با زدن دکمه Validate Change خطاهای احتمالی نمایش داده میشود و در صورتی که خطایی وجود نداشت با زدن دکمه Execute Change عملیات انجام خواهد شد و Footprintهای شماتیک به فایل PCB وارد می شوند.

شکل ۳-۲: اضافه کردن یک فایل PCB به پروژه

 

۳-۲پیش گزارش

۱-    برای مدار نمایش داده شده در شکل ۳-۳، مراحل لازم برای انتقال به PCB را اجرا کنید. (۴ مرحله ذکر شده در بخش ۳-۱)

شکل ۳-۴: شماتیک یک مدار برای پراگرام کردن تراشه های شرکت Atmel

 

۳-۳ دستور کار

 

۱-    بعد از انتقال مدار به PCB، قطعات را بچینید و تمام تراکهای (Track) مورد نیاز را رسم کنید (برد شما تک لایه و فقط از لایه زیر استفاده کنید).

راهنمایی: ابتدا در قسمت پایینی صفحه، برگه BottomLayer را انتخاب کنید. سپس با زدن کلیدP و سپس کلید T به مود رسم تراک وارد شوید و شروع به رسم تراکها در لایه زیر کنید . رنگ پیش فرض برای لایه زیر در نرم افزار آلتیوم، آبی است

شکل ۳-۵: نمونه یک مدار PCB، رسم شده

۲-    کادر صورتی رنگ دور مدار را در لایه KeepOutLayer رسم کنید. تحقیق کنید که این لایه چه کاربردی دارد؟

۳-    قسمتهایی که به رنگ زرد هستند در چه لایه ای می‌باشند؟


۴ آزمایش چهارم: آشنایی با PCB و مفاهیم آن

۴-۱پیش آگاهی

در جلسه قبل نحوه انتقال شماتیک به PCB و رسم PCB انجام شد. در این جلسه نکاتی در مورد طراحی PCB ارائه خواهد شد سپس نحوه ایجاد کتابخانه PCB و طراحی footprint شرح داده خواهد شد.

۴-۱-۱ واحدهای اندازه گیری فاصله در PCB

رعایت صحیح فاصله‌ها در PCB، از اهمیت ویژه ای برخوردار است و ممکن است عدم دقت در این رابطه، منجر به سخت شدن عملیات مونتاژ قطعات و بعضی اوقات چاره ای جز طراحی مجدد PCB و ساخت بورد جدید نیست. مواردی که هنگام طراحی PCB باید به فاصله‌های آنها دقت کرد عبارتند از: ابعاد فیزیکی قطعات (فضایی که روی بورد اشغال می‌کنند)، فاصله بین پایه‌های قطعات، قطر سوراخ پایه‌ها روی بورد(برای تعیین نوع مته ای که برای سوراخکاری استفاده می‌شود)، ابعاد کل بورد، ضخامت تراک‌ها، فاصله بین تراکها(Clearance) و فاصله بین قطعات مختلف روی بوردبرخی از این فاصله‌ها را باید هنگام طراحی FootPrint قطعه‌ها لحاظ کرد (ابعاد فیزیکی قطعه، فاصله بین پایه‌ها، قطر سوراخ پایه‌ها) و موارد دیگر باید هنگام رسم PCB در نظر گرفته شود.

واحدهای اندازه گیری فاصله در آلتیوم عبارتند از mil و mm. یک میل برابر با ۱ هزارم اینچ می‌باشد. (این واحد به این خاطر استفاده می‌شود که اکثر سازندگان قطعات در ساخت قطعه از واحد اینچ استفاده می‌کنند) مثلا فاصله بین دو پایه متوالی در پکیج دیپ برابر با ۰.۱ اینچ می‌باشد. در مورد مته‌ها، عموما از واحد میلی متر استفاده می‌شود. بنابراین برای تعیین قطر سوراخهای بورد بهتر است از واحد mm استفاده شود. (هر میلی متر به صورت تقریبی برابر با ۳۹.۳۷mil است)

نکته کاربردی: فاصله بین دو سوراخ متوالی روی برد بوردها[۱] دقیقا برابر با ۱۰۰mil می‌باشد. این نکته می‌تواند به عنوان معیار مناسبی برای اندازه گیری فاصله بدون داشتن خط کش یا کولیس باشد. به عنوان مثال با توجه به شکل ۴-۱، می‌توان متوجه شد که فاصله پایه‌های تراشه نصب شده روی برد بورد برابر با ۱۰۰mil و طول تراشه برابر با ۸۰۰mil و عرض تراشه برابر با ۳۰۰mil است. یا در footprint مربوط به مقاومت نصب شده روی برد بورد، فاصله بین پایه‌های مقاومت برابر با ۳۰۰mil باید قرار داده شود و برای دیود ۴۰۰mil است.

شکل ۴-۱: استفاده از برد بورد برای اندازه گیری فاصله قسمتهای مختلف یک تراشه

رعایت فاصله‌ها در رسم PCB

همانطور که گفته شد، ضخامت تراکهای رسم شده در PCB و همچنین حداقل فاصله بین دو تراک موازی از پارامترهای مهم در رسم PCB است و اندازه آنها معمولا بر حسب mil سنجیده می‌شود. دو عامل در تعیین این دو فاصله دخالت دارند که عبارتند از: محدودیتهای تکنولوژی ساخت بورد مدار چاپی و محدودیتهای که به نوع و ماهیت سیگنال عبوری از این تراک بستگی دارد

محدودیتهای ناشی از تکنولوژی ساخت بورد

این محدودیت به دقت دستگاه‌هایی بستگی دارد که بورد مدار چاپی را تولید می‌کنند. معمولا این دستگاه‌ها در حداقل ضخامت تراکها و حداقل فاصله بین دو تراک موازی محدودیت دارند و اگر این حداقل‌ها رعایت نشود منجر به قطع شدن تراکها یا به هم چسبیدن تراکها خواهد شد. در حال حاضر اکثر این دستگاه‌ها قادرند بوردهایی با تراکهایی با ضخامت ۱۰mil و فاصله ۱۰mil را تولید کنند. بهتر است قبل از شروع کشیدن PCB، با شرکتی که قرار است بورد را بسازد مشورتی انجام شود و از محدودیتهای دستگاه‌های آنها اطلاع حاصل شود.

محدودیتهای ناشی از ماهیت سیگنال عبوری از تراک

برای سیگنالهای تغذیه باید تراک با ضخامت زیاد رسم کرد (مثلا ۳۰mil یا بیشتر). سیگنالهایی که فرکانس تغییرات آنها زیاد است (مثلا بیشتر از ۵۰۰ کیلو هرتز) اگر نزدیک همدیگر رسم شوند روی همدیگر اثر همشنوایی[۲] خواهند داشت و باعث ایجاد خطا می‌شود برای کاهش اثر همشنوایی بهتر است فاصله بین تراکها بیشتر از ۱۰mil باشد.

۴-۱-۲ ایجاد Footprint جدید

برای ایجاد Footprint جدید باید کتابخانه PCB برای پروژه خود ایجاد کنید. برای ایجاد کتابخانه PCB باید از منوی Design، گزینه Make Library را انتخاب کنید (توجه داشته باشید که باید در محیط رسم PCB باشید). در شکل ۴-۲، نحوه باز کردن فایل library و همچنین نحوه دیدن قطعات علامت زده شده است.

برای تعریف Footprintجدید باید از منوی Tools، گزینه New Component را انتخاب کنید (توجه باید داشته باشید که باید فایل Library باز باشد و در محیط کتابخانه باشید تا گزینه New Component در منوی Tools وجود داشته باشد). بعد از انتخاب گزینه فوق، ویزاردی باز می‌شود و در ابتدا باید انتخاب کنید که Footprintی را که قصد ایجاد آن را دارید شبیه کدامیک از footprintهای استاندارد است. بعد از انتخاب یکی از footprintهای استاندارد، در ادامه مشخصات قطعه و اندازه قسمتهای مختلف آن را می‌توانید روی شکل تغییر دهید و نهایتا footprint مورد نظر خود را ایجاد کنید. در آخرین مرحله، نام footprint را تایپ کنید و کلید finish را بزنید. برای تهیه footprint هر قطعه باید اطلاعاتی در مورد ابعاد قطعه، تعداد پایه‌ها، فاصله بین پایه‌ها، ضخامت هر پایه، طول هر پایه و ... داشته باشید. این اطلاعات را می‌توان با اندازه گیری قطعه واقعی بدست آورد یا اینکه از دیتا شیت قطعه استخراج کرد. معمولا در صفحات انتهایی دیتاشیت هر قطعه، ابعاد فیزیکی قطعه بر حسب اینچ و میلیمتر ارائه می‌شود.

۴-۱-۳ مفهوم Grid

در نرم افزار آلتیوم به منظور کمک به طراح، صفحه رسم PCB به صورت شطرنجی می‌باشد. این خطوط شطرنجی به صورت دو سطحی است. طراح PCB با کمک گرید می‌تواند قطعات را با نظم مشخص روی صفحه بچیند و تراکها را روی خطوط گرید رسم کند تا شکل منظمی داشته باشند. برای تعیین اندازه Gridهای سطح ۱ و سطح ۲ باید گزینه snap در Status Bar انتخاب شود. در شکل ۴-۳، محل تعیین این پارامتر، مشخص شده است. همانطور که در این شکل ملاحظه می‌شود برای این دو سطح مقادیر ۲۰mil و ۱۰۰mil انتخاب شده است. وقتی که در صفحه رسم PCB با استفاده از دکمه‌های PgUp و PgDn روی مدار Zoom In یا Zoom Out می‌کنید، به صورت اتوماتیک نرم افزار آلتیوم، گرید مناسب را برای شما نمایش می‌دهد.

۴-۱-۴ مفهوم Snap

زمانی که در قسمت PCB از نرم افزار آلتیوم، قطعه ای را جابجا می‌کنید حرکت قطعه در جهت افقی و عمودی به صورت پله پله انجام خواهد شد و قطعه‌ها را نمیتوان به اندازه خیلی کم جابجا کرد. این خاصیت باعث می‌شود که نظم دادن به قطعه‌ها به راحتی امکان پذیر شود. مثلا برای اینکه پایه‌های دو قطعه دقیقا روبروی هم قرار گیرد نیازی به دقت زیاد کاربر ندارد و چون حرکتها به صورت پله ای است به راحتی می‌توان قطعات را روبروی هم دیگر و روی گریدها قرار داد. این مساله حرکت کردن قطعه‌ها به صورت پله ای، در مرحله رسم تراک نیز مشاهده می‌شود. در واقع هنگام رسم تراک، نرم افزار آلتیوم اجازه نمیدهد هر نوع زاویه ای به تراک بدهید و از هر مکانی که خواستید عبور دهید. برای تنظیم فاصله پله‌ها باید از منوی Design، گزینه Options… را انتخاب کنید و در پنجره ظاهر شده، برگه Option را انتخاب کنید. در شکل ۴-۴، پنجره مربوط به تنظیم Snap نمایش داده شده است. همانطور که ملاحظه می‌شود مقدار Snap هم برای Component و هم برای تراکها قابل انتخاب است.

شکل ۴-۳: نحوه تعیین اندازه گریدهای سطح ۱ و سطح ۲ (با انتخاب گزینه Snap از قسمت پایینی نرم افزار آلتیوم)

شکل ۴-۴: نحوه تعیین Snap (با انتخاب گزینه Snap از قسمت پایینی نرم افزار آلتیوم)

۴-۲پیش گزارش

۱-    Footprintقطعات نشان داده شده روی شکل زیر را رسم کنید.

شکل ۴-۵: اندازه گیری فاصله ها با استفاده از بردبورد

۲-    فایل lab۴.ddb را باز کنید. این فایل حاوی شماتیک یک مدار می‌باشد. PCB این مدار را رسم کنید. در رسم PCB نکات زیر را رعایت کنید: (برای Placement قطعات از شکل ۴-۶ کمک بگیرید)

الف) ابعاد بورد ۱۲ سانتی متر در ۶ سانتیمتر باشد

ب)ضخامت تراکهای تغذیه را ۳۰mil و ضخامت بقیه تراکها را ۱۰mil در نظر بگیرید

ج) فقط از لایه زیر استفاده کنید

۳-    اگر فاصلة بین پایه‌های یک آی‌سی DIP، ۱۰۰mil و قطر Pad آن ۵۰mil باشد و بخواهیم دو تراک با پهنای ۱۰mil از وسط پایه‌های آن رد کنیم به موارد زیر پاسخ دهید.

الف) مناسبترین اندازه برای Grid و Snap چند است؟ چرا؟

ب) ماکزیمم clearance باید چند باشد تا بتوان تراک را از بین پایه‌های آن رد کرد؟

 

 

 

 

شکل ۴-۶: نمونه پیشنهادی برای چینش قطعات


۵ آزمایش پنجم: تکمیل کردن PCB و آماده کردن آن برای ساخت

۵-۱پیش آگاهی

در جلسات قبل نحوه رسم PCB توضیح داده شد. در این جلسه قابلیتهای نرم افزار آلتیوم برای رسم PCB توضیح داده می‌شود.

۵-۱-۱مفهوم via

به سوراخهایی که روی بورد ایجاد می‌شود تا تراکها را از یک لایه به یک لایه دیگر منتقل کند via گفته می‌شود. در واقع با استفاده از via می‌توان لایه‌های مسی در لایه‌های مختلف را به یکدیگر متصل کرد. اگر در حین رسم تراک خواستید ادامه آن را در لایه دیگری رسم کنید باید از حالت کشید تراک خارج شوید سپس با زدن دکمه‌های P و V (Place Via) به حالت اضافه کردن via وارد شوید، با کلیک کردن موس روی تراک مورد نظرتان یک Via اضافه کنید، به صورت اتوماتیک نام via با نام تراک شما یکسان می‌شود. اگر نام تراک و نام via یکسان نباشد آنگاه امکان اتصال آنها به یکدیگر وجود ندارد

۵-۱-۲مفهوم بورد متالیزه

اگر داخل سوراخهای بورد (سوراخهای مربوط به پایه قطعات و سوراخهای مربوط به viaها) یک لایه فلزی گذاشته شود تا اتصال فیزیکی بین لایه‌ها برقرار شود آنگاه به بورد بورد متالیزه گفته می‌شود. توجه داشته باشید که این اصطلاح مربوط به نرم افزار آلتیوم نیست (در نرم افزار آلتیوم فرض بر این است که این لایه فلزی وجود دارد) این اصطلاح توسط شرکتهایی که عمل ساخت بورد PCB را انجام می‌دهد به کار می‌رود. بوردهای غیر متالیزه ارزان قیمت تر هستند و قرار دادن یک سیم مسی در سوراخها و لحیم کردن آن باید توسط شخص مونتاژ کار انجام شود.

۵-۱-۳رسم تراکها به صورت خودکار

برای رسم تراکها به صورت خودکار باید ruleهای مورد نیاز را تعریف کنید سپس با انتخاب گزینه All… در منوی AutoRoute وارد پنجره Auto Route Setup شوید. این پنجره در شکل ۵-۱ نمایش داده شده است. استفاده از این گزینه فقط برای ساخت بوردهای نمونه، برای صرفه جویی در وقت استفاده میشود و توصیه می شود برای رسم PCB از این گزینه استفاده نشود.

۵-۱-۴ اضافه کردن لایه

به صورت پیش فرض، تعداد لایه ها در نرم افزار آلتیوم دو لایه می باشد، لایه زیر و لایه رو. در صورتیکه نیاز به افزایش تعداد لایه ها باشد(معمولا برای بوردهایی با فرکانس کاری بالاتر از ۱۰مگاهرتز) با انتخاب گزینه Layer Stack Manager … از منوی Design میتوان تعداد لایه ها و ترتیب آنها را مدیریت کرد.

۵-۱-۵ تعریفRules در آلتیوم

برای اینکه رسم PCB ساده تر انجام شود و از اشتباهات احتمالی جلوگیری شود می توان قوانینی را تعریف کرد تا هنگام رسم PCB، خود نرم افزار قسمتی از کارها را به صورت خودکار برای شما انجام دهد. مثلا در رسم PCB، تراکهای مربوط به تغذیه بورد باید ضخیمتر از تراکهای بقیه سیگنالها باشند. شما می توانید با ایجاد یک قانون مشخص کنید که اندازه تراک استفاده شده برای VCC و GND دقیقا ۵۰ mil باشد. در صورتی که این قانون تعریف شده باشد، به محض اینکه با موس روی یک Pad متصل به GND کلیک کنید تا تراک را رسم کنید، خود به خود اندازه تراک ۵۰mil می شود.

برای ایجاد قوانین، شما می توانید از منوی Design، گزینه Rules را انتخاب کنید. با انتخاب این گزینه، لیستی از قوانینی که قادر به تعریف آنها هستید نمایش داده می شود. در شکل ۵-۱ پنجره مربوط به مدیریت قوانین نمایش داده شده است. از لیست ظاهر شده برای قوانین موارد زیر خیلی مهم هستند و قطعا باید قوانینی برای آنها تعریف شود:

-        Clearance Constraint

-        Routing Layers

-        Width Constraint

شکل ۵-۱: پنجره مربوط به تعریف و ویرایش قوانین رسم PCB

۵-۱-۶ قراردادن قطعه در لایه زیر

با دابل کلیک کردن روی یک قطعه و انتخاب گزینه Bottom Layer در قسمت Layer می توان قطعه را به پشت بورد منتقل کرد

۵-۱-۷ نوشتن متن در لایه زیر

معمولا برای راهنمایی استفاده کننده از بورد نوشته هایی روی سطح بورد قرار داده میشود(مثلا نام بورد، ورژن آن، محلهای اتصال تغذیه و ...) که این نوشته ها می تواند در لایه Top Overlay باشد یا به صورت مسی در لایه رو یا در لایه زیر نوشته شود. با انتخاب کلیدهای میانبر P و سپس S، میتوان یک رشته متنی را روی نوشت و با دابل کلیک روی آن، لایه مورد نظر را انتخاب کرد.

۵-۱-۸ چک کردن‌های نهایی بورد PCB

با توجه به اینکه رسم PCB یک فرایند فوق العاده حساس است و کوچکترین اشتباه منجر به عدم کارایی بورد می شود. برای اطمینان از صحت رسم PCB از موارد زیر می توان به عنوان چکهای نهایی بورد استفاده کرد:

الف) DRC

با انتخاب گزینه Design Rule Check… از منوی Tools پنجره مربوط به DRC باز میشود پس از انتخاب موارد مد نظر روی دکمه Run DRC کلیک کنید. کلیه خطاهایی که در طراحی PCB وجود دارد برای شما نمایش داده می شود.

 

ب)چک کردن Violations:

بعد از اینکه DRC انجام شد، گزارش آن به صورت یک فایل html نمایش داده می شود.

شکل ۵-۲: نحوه دیدن Violationها

 

 

ج)چک کردن قطر سوراخ viaها و پایه‌های قطعات:

با توجه به اینکه ضخامت پایه های قطعاتی که روی بورد مونتاژ می شوند متفاوت است بنابراین باید قطر Padها و سوراخهای روی بورد را با توجه به مشخصات فیزیکی قطعات تنظیم کرد. برای تنظیم قطر padها باید روی آنها دابل کلیک کرد و با تنظیم مقدار مناسب در فیلد Hole Size این عملیات را انجام داد. با توجه به اینکه واحد اندازه گیری برای قطر مته های استفاده شده بر حسب میلیمتر است، بهتر است با زدن دکمه Q، واحد اندازه گیری را از mil به mm تغییر دهید آنگاه روی Padها دابل کلیک کنید و قطر Pad را مشخص کنید. عدد متداول برای قطر padهای مربوط به تراشه های دیپ، ۰.۸mm و برای کانکتورها ۱mm است. با استفاده از قابلیت Global می توان تمامی پایه های مشابه را با هم انتخاب کرد و قطر Padآنها را تعیین کرد و نیازی به دابل کلیک روی تک تک پایه ها نیست.

د)کپی کردن PCB در یک طرح جدید

برای ساخت بورد شما باید فایل پروژه آلتیوم خود را در اختیار شرکتهای سازنده بورد مدار چاپی قرار دهید، برای اینکه طرح شما مورد سوء استفاده احتمالی قرار نگیرد بهتر است یک پروژه جدید در آلتیوم ایجاد کنید و یک صفحه PCB ایجاد کنید و با Select کردن مدار PCB خود و استفاده از کپی و Paste، مدار PCB خود را در این پروژه جدید قرار دهید. به این ترتیب در پروژه جدید فقط PCB وجود دارد و شماتیک مدار وجود ندارد.

برای محکم کردن اتصال تراکها به Padها می توانید این گزینه را از منوی Tools انتخاب کنید. در شکل ۵-۳، تاثیر استفاده از این گزینه روی محل اتصال تراکها با Padها نمایش داده شده است

شکل ۵-۳: تاثیر استفاده از گزینه TearDrop

 

ز) استفاده از PolyGon

در طراحی مدارهای فرکانس بالا، برای اینکه امپدانس تراک مربوط به GND کاهش یابد می توان تا حد امکان ضخامت تراکهای GND را افزایش داد. با استفاده از Polygon می توان به نرم افزار آلتیوم این فرمان را داد که کلیه فضای باقیمانده از بورد را با تراکهای پیوسته GND پر کند. برای اینکار با استفاده از کلیدهای میانبر P و سپس G، پنجره مربوط به polygon باز می شود و می توان سیگنال مورد نظر را انتخاب نمود و تنظیمات آن را انجام داد سپس با Ok کردن این پنجره و مشخص کردن ناحیه مورد نیاز برای رسم polygon، این عملیات را انجام داد.

 

 

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

شروع به رسم تراک

P+T

تغییر واحد اندازه گیری از mm به mil و برعکس

Q

اندازه گیری فاصله بین دو نقطه

R+M

حذف کردن قطعات، تراکها و ...

E+D

رسم Polygon

P+G

قرار دادن via

P+V

 


۵-۲پیش گزارش

۱-    PCB مربوط به آزمایش شماره ۴ را با استفاده از Ruleهای زیر مجددا رسم کنید(از AutoRoute استفاده کنید) سپس تمام مراحل گفته شده در بخش ۵-۱-۸ را روی آن اجرا کنید.

قانون ۱: کلیه تراکهای VCC برابر ۲۰mil باشد

قانون۲: کلیه تراکهای GNDبرابر با ۲۵milباشد

قانون۳: تراکهای باقیمانده برابر با ۸mil باشند

قانون۴: فقط از لایه زیر استفاه شود

قانون ۵: فاصله تراکها از همدیگر کمتر از ۱۲milنباشد

قطر padهای مربوط به همه تراشه ها ۰.۷ میلیمتر و برای مقاومت و خازنها ۰.۸میلیمتر باشد

۵-۲دستور کار

بررسی PCB طراحی شده در بخش پیش گزارش و انجام اصلاحات مورد نیاز طبق بررسی استاد آزمایشگاه.


پیش آگاهی

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

-        بررسی مدام مسیر ارتباطی با وسیله جانبی(polling)

-        استفاده از وقفه

در روش polling میکروکنترلر به طور مداوم وضعیت وسیله جانبی را مونیتور می کند .وقتی وضعیت خاصی مشاهده شد سرویس متناظر را انجام می دهد.

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

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

پیش گزارش

۱-۲-۱ منظور از pullup وpulldown در مدارات الکترونیکی چیست و برای استفاده از وقفه های خارجی pullup و pulldown به چه صورت به کار ما می آیند؟

۱-۲-۱ رجیستر های مربوط به وقفه های خارجی در atmega۱۶ را از دیتاشیت استخراج کرده و کاربرد هر بیت از هر رجیستر را بیان کنید.

۱-۲-۳    به منظور جلوگیری از فعال شدن وفقه خارجی به وسیله نویز چه تمهیداتی را می توان در نظر گرفت ؟

۱-۲-۴ می خواهیم سرعت روشن شدن LEDها در آزمایش ۱ را کنترل کنیم. برای این منظور دو کلید روی بورد را در نظر بگیرید. برنامه ای بنویسید که با فشردن یکی از آنها سرعت افزایش یابد و با فشردن دیگری سرعت کاهش یابد(با هر بار فشردن کلید، تاخیر بین روشن شدن LEDها۱۰۰ میلی ثانیه کاهش/افزایش یابد و سرعت اولیه روشن خاموش شدن ۱۰۰۰میلی ثانیه می باشد و نباید سرعت از ۱۰۰میلی ثانیه کمتر شود)

 

 

دستور کار

۱-    برنامه پیش گزارش را وارد کرده و تست کنید

۲-    برنامه ای بنویسید که ورودی دیجیتال ۸ بیتی را از روی دیپ سوییچ های موجود در مدار دریافت نموده آن را به ال ای دی های موجود روی آرایه ی ال ای دی موجود روی برد انتقال دهد.برنامه شامل دو کلید است که با فشردن کلید ۱ حالت ۱ اتفاق می افتد و با فشردن کلید ۲ حالت دوم اتفاق می افتد .(توجه کنید در اینجا باید از روش وقفه خارجی استفاده شود نه روش polling)

۱-    دقیقا مقدار دیجیتالی که از ورودی دیپ سوییچ ها می گیرد و روی آرایه ال ای دی نمایش دهد

۲-    بیت های مقدار دیجیتالی که از ورودی دیپ سوییچ ها می گیرد ، متمم کرده و روی آرایه ال ای دی نمایش دهد

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

پیش آگاهی

معرفی تایمر

تایمر در واقع یک کانتر یا شمارنده است که توسط پالس ساعت خارجی یا اسیلاتور داخلی میکروکنترلر راه اندازی می شود.فرکانس پالس تایمر تقسیمی از فرکانس کاری میکروکنترلر می باشد که به مقدار شمارنده آن با هر پالس تایمر یکی اضافه می شود.در بعضی مواقع لازم است اعمالی در زمانی معین انجام شود که برای نگهداری این زمان می توان از تایمر-کانتر استفاده کرد

تایمرها در AVR

میکروکنترلر های avr حداکثر دارای ۶ تایمر-کانتر هشت بیتی و یا شانزده بیتی می باشند .که تایمر کانتر ها بسته به نوع آنها دارای امکانات مختلفی ازجمله تولید موج pwm ، حالت مقایسه ،عملکرد غیر همزمان و پشتیبانی از وقفه هایی از جمله وقفه سرریز ،وقفه مقایسه و ......می باشند .

نحوه برنامه نویسی برای تایمر

برنامه نویسی تایمر در avr بدین صورت می باشد که اول ما هدف خود و نوع تایمر-کانتری را که میخواهیم استفاده کنیم انتخاب می کنیم .برای زمان های کم معمولا ۸ بیتی استفاده می کنیم و برای زمان های بیشتر از ۱۶ بیتی .بعد از انتخاب تایمر-کانتر فرکانس آن را تعیین می کنیم و زمان هردور شمارش آن را تعیین می کنیم و بدین وسیله می توانیم زمان هر بار سرریز تایمر کانتر را بدست آورده و از وقفه سرریز استفاده کنیم یا اگر زمانی که ما میخواهیم اندازه بگیریم کمتر از یک دور سرریز باشد از وقفه مقایسه استفاده کنیم و وقتی مقدار شمارنده به حد مورد نطر رسید با توجه به وقفه مقایسه متوجه گذشت زمان مورد نظر می شویم.همچنین برای استفاده از موج های pwm در رجیستر های تایمر تنطیمات لازم را انجام داده و حالات های مختلف تولید موج را انتخاب می کنیم.

معرفی WatchDog

Watchdog در واقع امکانی است که از هنگ کردن میکروکنترلر جلوگیری می کند بدین صورت که سرریز تایمر نگهبان روی زمان خاصی تنظیم می شود و در برنامه هر دفعه زمان کمی قبل از سر رسیدن زمان سرریز تایمر نگهبان تایمر را بازنشانی می کند پس در زمانی که میکرو هنگ می کند دیگر قادر به بازنشانی تایمر نگهبان نخواهد بود و تایمر نگهبان با سرریز میکرو را ریست می کند

 

 

 

 

 

 

پیش گزارش

۱-    تایمر کانترهای موجود در میکرو کنترلر و مد های کاری انها را به طور کامل تشریح کرده و کاربرد های آن را بیان کنید.

۲-    کابرد تمام بیت های رجیستر TCCR۰ را بیان کنید .

۳-    منابع وقفه ی قسمت تایمر کانتر تراشه ی atmega۱۶ را نام برده و کاربرد هرکدام را به طور مختصر بیان کنید .

۴-    مد های PWM در تایمر کانتر ها را توضیح داده و تفاوت آنها را بیان کنید.

۵-    با فرض استفاده از کریستال خارجی ۱۶MHZ برای میکروکنترلر atmega۱۶ میخواهیم یک تاخیر ۱۰ میلی ثانیه ای ایجاد کنیم برای استفاده از وقفه سرریز مقدار اولیه TCNT۱ و ضریب پیش تقسیم کلاک را باید چند قرار دهیم؟اگر برای همین کار بخواهیم از وقفه مقایسه استفاده کنیم مقدار قرار داده در رجیستر OCR۱ را تعیین کنید.با این تنظیمات آیا می شود بازه ۱۰ms را دقیق اندازه گرفت ؟(برای هر دو قسمت چگونگی محاسبه اعداد را شرح دهید.

۶-    Watchdog timer را تشریح کرده و کاربرد آن را بیان کنید.

۷-    با استفاده از دستور شیفت، ۸ عدد LED روی بورد را به یک Progress Bar تبدیل کنید که هر ثانیه یک بار، یک LED به مجموع LEDهای روشن اضافه شود و وقتی همه LEDها روشن شدند مجددا همه خاموش شوند واین کار تکرار شود.(با استفاده از وتایمر کانتر و بدون استفاده از کتابخانه delay.h)

دستور کار

۱-    برنامه پیش گزارش را وارد و تست کنید.

۲-    با استفاده از تایمر و ایجاد یک پالس PWM، شدت روشنایی یک LED را کنترل کنید. با اضافه کردن دو کلید، نور کم و زیاد شود.

۳-    یک شمارنده طراحی کنید که با هر بار فشردن یکی از کلیدها، یک واحد به مقدار شمارنده افزایش دهد. مقدار شمارنده در لحظه شروع برنامه صفر باشد و تا ۲۵۵ افزایش یافته و بعد از آن کاهش می یابد رو به صفر. مقدار را به صورت ۸ بیتی روی آرایه ال ای دی نمایش دهد .

۴-    به برنامه سوال ۳، واچ داگ اضافه کنید که اگر به مدت ۲ ثانیه هیچ کلیدی فشرده نشد، میکرو ریست شود.

۸آزمایش هشتم: کار با پورت سریال

پیش آگاهی

اصول پورت سریال

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

usart start and stop bit 0

ارتباط سریال می تواند همزمان(Synchronous) یا غیر همزمان(Asynchronous) باشد که در همزمان باید علاوه بر داده یک کلاک هم فرستاده شود ولی در حالت غیر همزمان فقط داده ها فرستاده می شوند.معمولا ما پورت سریال را به صورت غیر همزمان راه اندازی می کنیم و با استفاده از دو پایه rxd وtxd داده ها را دریافت و ارسال می کنیم و برای ارتباط سریال باید Baud Rate (نرخ ارسال) در فرستنده و گیرنده یکی باشد تا داده ها سالم به مقصد برسند .

نحوه نوشتن برنامه برای پورت سریال به روش سرکشی

روش Pulling در کل به معنی سرکشی پی در پی برای انجام کاری می باشد.یعنی در برنامه مدام باید پارامتری چک شود به محض تغییر پارامتر مورد نظر عکس العمل نسبت به وقایع مورد نظر انجام شود.در ارتباط سریال سرکشی برای ارسال و دریافت داده انجام می شود یعنی پرچم های مربوط به ارتباط سریال را مدام چک می کنیم در حین برنامه وقتی پرچم فعال گردید نشانگر خاتمه ارسال یا دریافت داده مورد نظر است.

نحوه نوشتن برنامه برای پورت سریال به روش وقفه

در پورت سریال میتوان از وقفه دریافت یا ارسال داده سریال استفاده نمائیم. یعنی برنامه روند خود را طی می کند وقتی داده ای از طریق ارتباط سریال دریافت یا ارسال شد برنامه به بردار وقفه سریال مربوطه مراجعه می کند و عکس العمل لازم را انجام داده و دوباره به روند عادی برنامه باز می گردد.

پورت سریال در بورد آموزشی

پورت سریال موجود روی بورد با استفاده از پروتکل rs۲۳۲ و استفاده از تراشه max۲۳۲ به پورت سریال کامپیوتر متصل می شود .همچنین در این میان برای ارتباط از کانکتور DB۹ استفاده شده است . شماتیک کلی این ارتباط در شکل زیر آورده شده است.

معرفی برنامه Terminal برای کار با پورت سریال

به طور کلی برای ارتباط سریال از نرم افزار های ترمینال استفاده می شود که هم می توان از نرم افزار مجزای ترمینال استفاده کرد و هم از ترمینال کامپایلر هایی از جمله codevision و ...... استفاده کرد.کار ترمینال بدین صورت است که هم می تواند داده ها یی که از روی پورت سریال دریافت می کند نمایش دهد به صورت کاراکتر یا hex و همچنین می تواند کاراکتر یا hex را روی پورت سریال ارسال کند.

پیش گزارش

۱-    پروتکل های ارتباط سریال میکروکنترلر ATmega۱۶ را نام برده و تعین کنید در شرایط مختلف استفاده از کدام یک از این واسط های ارتباطی بهتر است.

۲-    کاربرد آی سی max۲۳۲ روی برد آزمایشگاهی را بیان کنید.

۳-    نحوه محاسبه خطا در نرخ انتقال ارتباط سریال سنکرون را یبان کنید .همچنین نرخ خطا را برای baud rate برابر ۹۶۰۰ و فرکانس نوسان ساز ۱mhz در حالت عملکرد سنکرون بیان کنید .

۴-    برنامه ای بنویسید که نام و نام خانوادگی شما را که در یک رشته به نام str ذخیره شده است را هر ثانیه یک بار از طریق پورت سریال به روش پولینگ ارسال کند.

۵-    برنامه ای بنویسید که عدد ۴ رقمی ذخیره شده در x را به اسکی تبدیل کنید. مثلا اگر عدد ذخیره شده برابر با ۱۲۳۰ باشد، کدهای اسکی تولید شده به ترتیب برابر با ۰x۳۱، ۰x۳۲، ۰x۳۳ و ۰x۳۰ باشد.

۶-    جدول کدهای اسکی را با خود به آزمایشگاه بیاورید.

۷-    برنامه ساعت در آزمایش قبلی را در نظر بگیرید، فرض کنید ساعت و دقیقه در متغیرهایی به نامهای h و m ذخیره شده اند، برنامه ای بنویسید که زمان فعلی را به صورت HH:MM به صورت اسکی از طریق پورت سریال ارسال کند.

دستور کار

۱-    برنامه ی نوشته شده در پیش گزارش را روی بورد تست کنید .

۲-    یک کابل سریال از مسئول آزمایشگاه دریافت کنید و آنرا به کامپیوتر PC متصل کنید. سپس با وصل کردن پایه های شماره ۲ و ۳، از صحت اتصالات کابل مطمئن شوید.(بعد از اینکه این دو پایه را به هم متصل کردید، با استفاده از نرم افزار Terminal، کاراکتری را ارسال کنید، با توجه به اینکه پایه های ۲ و ۳ به هم متصل شده اند، همان کاراکتر باید توسط PC دریافت شود. اصطلاحا به این کار LoopBack گفته می شود)

۳-    با استفاده از کابل سریال، بورد آموزشی را به کامپیوتر متصل کنید، برنامه ای بنویسید که کاراکترهای دریافت شده از پورت سریال کامپیوتر را روی LCD نمایش دهد.

۴-    به برنامه ساعت، یک کلید اضافه کنید تا در صورت فشرده شدن آن کلید، ساعت کنونی را به صورت اسکی با استفاده از پورت سریال برای کامپیوتر ارسال کند و شما در برنامه Terminal ساعت را مشاهده کنید

 


۹آزمایش نهم: کار با مبدل آنالوگ به دیجتال

 

پیش آگاهی

در واقع مبدل آنالوگ به دیجیتال به ما این امکان را می دهد تا سیگنال های آنالوگ را به دیجیتال تبدیل کنیم .

مبدل آنالو گ به دیجیتال در AVR

میکروکنترلر ها نیاز به ارتباط با دنیای خارج از میکروکنترلر را دارند . معمولا دنیای خارج ماهیت آنالوگ دارد مثلا خروجی سنسور ها ،سیگنال های مختلفی که به میکرو می رسند آنالوگ می باشند و درون میکروکنترلر هم ماهیت دیجیتال دارد بدین ترتیب نیاز است تا برای ارتباط میکروکنترلر با دنیای بیرون امکان تبدیل این سیگنال ها به هم وجود داشته باشد.از همین رو در میکرکنترلر های avr مبدل ADC تعبیه شده است که بدون وسیله جانبی سیگنال های انالوگ محیط بیرون را به دیجیتال تبدیل کرده و در اختیار میکروکنترلر قرار می دهد .همچنین برای تبدیل سیگنال های دیجیتال میکروکنترلر به انالوگ برای محیط بیرون از DAC استفاده می کند.

 

 

 

 

 

 

 

 

 

 

 

پیش گزارش

۱-    چند مورد از کاربرد های عملی ADC را بیان کنید .

۲-    واحد ADC در AVR دارای دو مد عمکردی تک پایه و دیفرانسیلی است .هرکدام را توضیح دهید .

۳-    وقتی از Adc در مد ۱۰ بیتی استفاده می کنیم و ولتاژ روی پایه adc برابر با ۳.۱v باشد و همچنین ولتاژ مرجع adc برابر ۵v باشد مقداری که از روی رجیستر داده adc خوانده می شود برابر چند خواهد بود؟

۴-    یک از کاربرد های ADC راه اندازی صفحه تاچ اسکرین مقاومتی می باشد .این کار چگونه انجام می پذیرد .

۵-    دیتاشیت سنسور lm۳۵ را تهیه کرده و با تعیین کنید خروجی این سنسور به ازای هر درجه افزایش دما چقد به ولتاژ خروجی اش افزوده می شود

۶-    برنامه ای بنویسید که با استفاده از سنسور LM۳۵ دما را اندازه گیری کند و روی نمایشگر هفت قسمتی و LCD نمایش دهد.

دستور کار

۱-    برنامه ی نوشته شده در پیش گزارش را روی بورد تست کنید .

۲-    برنامه ای بنویسید که با استفاده از روش تفاضلی مقادیر روی دو پایه از adc را خوانده و با هم مقایسه کند روی ال سی ولتاژ روی پایه ۱ و پایه ۲ را به صورت داینامیک نمایش داده و با استفاده از پیغام های بزرگتر ،مساوی و یا کوچکتر وضعیت مقادیر روی دو پایه را نسبت به هم نمایش دهد

۳-    برنامه ای بنویسید که با استفاده از سنسور LM۳۵ دما را اندازه گیری و در صورتی دما به پایین تر از ۲۰ درجه تجاوز کند یک بوق ممتد خطا به مدت یک ثانیه پخش کند و ال ای دی قرمز را روشن کند و همچنسن در صورتی که دما به بالاتر از ۲۵ درجه تجاوز کند یک بوق ممتد دو ثاانیه ای پخش کند و چراغ قرمز را روشن کند و وقتی دما بین ۲۰ تا ۲۵ درجه قرار دارد چراغ سبز را روشن کند .

 


۱۰-۱پیش آگاهی

هدف از این آزمایش، آشنایی با ماژولهای وای-فای و مراحل آماده سازی محیط برنامه نویسی آنها می باشد. تراشه ESP۸۲۶۶ یکی از پر کاربردترین و ارزان قیمت ترین تراشه های وای-فای است. این تراشه در واقع یک میکروکنترلر ۳۲ بیتی است که اینترفیس وای-فای نیز دارد و توسط شرکت Espressif Systems ساخته شد.

شکل ۱: میکروکنترلر ESP۸۲۶۶

بعد از ساخت این تراشه، شرکتهای مختلف جهت کاربردی تر کردن این تراشه، ماژولهای وای-فای را ساختند که کار با این تراشه را راحتتر کند. این ماژولها را می توان به دو دسته کلی تقسیم کرد. ماژولهایی با پروتکل ارتباطی UART و ماژولهایی با پروتکل ارتباطی USB.

در ادامه ابتدا به شرح سخت افزار این ماژولها و سپس به توضیح نحوه آماده سازی محیط برنامه نویسی آن پرداخته می شود.

۱۰-۱-۱ ماژولهای وای-فای با ارتباط UART

یکی از معروفترین شرکتهایی که در حوزه ساخت ماژولهای وای-فای با پروتکل ارتباطی UART فعالیت دارد، شرکت AI-Thinker است. این شرکت در سال ۲۰۱۴ اولین ماژول را که یک بورد مدار چاپی با ابعاد ۱۴.۳ × ۲۴.۸mm با نام تجاری ESP-۰۱ وارد بازار کرد. این ماژول به صورت عمده در کاربردهای اینترنت اشیاء جهت اتصال دستگاه ها به اینترنت از طریق وای-فای مورد استفاده قرار گرفت. روی این بورد از یک تراشه ESP۸۲۶۶ و یک حافظه هشت مگابیتی با اینترفیس SPI (T۲۵S۸۰)برای ذخیره برنامه مربوط به پیاده سازی پروتکل TCP/IP استفاده شده است.

شکل ۲: ماژول ESP-۰۱ و اجزای آن

بعد از موفقیت بسیار زیادی که ماژول ESP-۰۱ پیدا کرد، ماژولهای دیگری بر مبنای تراشه ESP۸۲۶۶ وارد بازار شدند که تفاوت عمده آنها در تعداد پایه های I/O قابل دسترس، وجود یا عدم وجود Led، وجود یا عدم وجود سوکت آنتن، وجود یا عدم وجود شیلد فلزی روی آی-سی می باشد. در جدول ۱، لیستی از این ماژولها به همراه مشخصات آنها آورده شده است.

Name

Active pins

LEDs

Antenna

Shielded

Dimensions (mm)

Notes

ESP-۰۱

۶

Yes

PCB trace

No

۱۴.۳ × ۲۴.۸

۵۱۲ KiB Flash and blue PCB from a generic manufacturer. ۱ MiB Flash, AI-Cloud and black PCB from AI-Thinker.

ESP-۰۱M

۱۶

No

PCB trace

Yes

۱۸.۰ × ۱۸.۰

Uses ESP۸۲۸۵ (۱ MiB built-in flash).

ESP-۰۱S

۶

Yes

PCB trace

No

۱۴.۴ × ۲۴.۷

۱ MiB Flash

ESP-۰۲

۶

No

U.FL socket

No

۱۴.۲ × ۱۴.۲

 

ESP-۰۳

۱۰

No

Ceramic

No

۱۷.۳ × ۱۲.۱

 

ESP-۰۴

۱۰

No

None

No

۱۴.۷ × ۱۲.۱

 

ESP-۰۵

۳

No

U.FL socket

No

۱۴.۲ × ۱۴.۲

 

ESP-۰۶

۱۱

No

None

Yes

۱۴.۲ × ۱۴.۷

Not FCC approved.

ESP-۰۷

۱۴

Yes

Ceramic + U.FL socket

Yes

۲۰.۰ × ۱۶.۰

Not FCC approved.

ESP-۰۷S

۱۴

No

U.FL socket

Yes

۱۷.۰ × ۱۶.۰

FCC and CE approved.

ESP-۰۸

۱۰

No

None

Yes

۱۷.۰ × ۱۶.۰

Not FCC approved.

ESP-۰۹

۱۰

No

None

No

۱۰.۰ × ۱۰.۰

 

ESP-۱۰

۳

No

None

No

۱۴.۲ × ۱۰.۰

 

ESP-۱۱

۶

No

Ceramic

No

۱۷.۳ × ۱۲.۱

 

ESP-۱۲

۱۴

Yes

PCB trace

Yes

۲۴.۰ × ۱۶.۰

FCC and CE approved.[۲۰]

ESP-۱۲E

۲۰

Yes

PCB trace

Yes

۲۴.۰ × ۱۶.۰

۴ MiB flash.

ESP-۱۲F

۲۰

Yes

PCB trace

Yes

۲۴.۰ × ۱۶.۰

FCC and CE approved. Improved antenna performance.

ESP-۱۲S

۱۴

Yes

PCB trace

Yes

۲۴.۰ × ۱۶.۰

FCC approved.[۲۱]

ESP-۱۳

۱۶

No

PCB trace

Yes

W۱۸.۰ × L۲۰.۰

Marked as "FCC". Shielded module is placed sideways, as compared to the ESP-۱۲ modules.

ESP-۱۴

۲۲

Yes

PCB trace

Yes

۲۴.۳ × ۱۶.۲

Mostly advertised with "AI Cloud Inside".

 

۱۰-۱-۲ ماژولهای وای-فای با ارتباط USB

ماژولهای ذکر شده در بخش قبل، برای ارتباط با کامپیوتر مناسب نیستند، چون آنها را نمیتوان برای پراگرام کردن مستقیم به کامپیوتر متصل کرد و نیاز است از یک مبدل USB به UART استفاده نمود. از این جهت ماژولهایی بر مبنای ESP۸۲۶۶ ساخته شدند که بتوان آنها را مستقیما به کامپیوتر متصل نمود و کار پراگرام کردن آنها نیز ساده تر باشد. در جدول ۲، لیستی از این ماژولها به همراه مشخصات آنها آورده شده است.

در واقع روی این بوردها، یک تراشه مبدل USB به UART و یکی از ماژولهای ذکر شده در بخش ۶-۱-۲ قرار داده شده اند.

Name

Active pins

LEDs

Antenna

Shielded

Dimensions (mm)

Notes

NodeMCU DEVKIT

۱۴

Yes

PCB trace

Yes

۴۹ × ۲۴.۵

Uses the ESP-۱۲ module; includes USB to serial interface.

WeMos[۳۰][۳۱]

۱۲

Yes

PCB trace

Yes

۵۳.۴ × ۶۸.۶

Uses the ESP-۱۲F module and Micro-USB socket. Discontinued in favor of WeMos D۱ R۲.

WeMos[۳۰] D۱ R۲[۳۲]

۱۲

Yes

PCB trace

Yes

۵۳.۴ × ۶۸.۶

Uses ESP-۱۲F module and has Micro-USB socket.

WeMos[۳۰] D۱ mini[۳۳]

۱۲

Yes

PCB trace

Yes

۲۵.۶ × ۳۴.۲

Uses ESP-۱۲S module and has Micro-USB socket.

WeMos[۳۰] D۱ mini Lite[۳۴]

۱۲

Yes

PCB trace

Yes

۲۵.۶ × ۳۴.۲

Based on the ESP۸۲۸۵, an ESP۸۲۶۶ with ۱ MiB flash built-in; has Micro-USB socket.

WeMos[۳۰] D۱ mini Pro[۳۵]

۱۲

Yes

Ceramic and U.FL socket

Yes

۲۵.۶ × ۳۴.۲

Uses ESP۸۲۶۶EX chip; has Micro-USB socket, U.FL antenna connector, and ۱۶ MiB flash.

Adafruit Huzzah ESP۸۲۶۶ breakout[۲۴]

۱۴

Yes

PCB trace

Yes

۲۵ × ۳۸

Uses the ESP-۱۲ module.

SparkFun ESP۸۲۶۶ Thing[۲۵] WRL-۱۳۲۳۱

۱۲

Yes

PCB trace + U.FL socket

No

۵۸ × ۲۶

FTDI serial header, Micro-USB socket for power, includes Li-ion battery charger.

DoIT ESPduino[۲۸]

۱۲

Yes

PCB trace

Yes

۵۳.۴ × ۶۸.۶

Uses the ESP-WROOM-۰۲ (ESP-۱۳) module and USB Type B port. Fully compatible with Arduino Uno shields.

 

۱۰-۱-۳ محیط برنامه نویسی

از نرم افزار Arduino برای برنامه نویسی ماژولهای مبتنی بر ESP۸۲۶۶ می توان استفاده کرد. به صورت پیشفرض این نرم افزار کتابخانه های لازم برای برنامه نویسی ماژولهای مبتنی بر ESP۸۲۶۶ را ندارد و باید اضافه نمود. برای آماده سازی محیط برای برنامه نویسی باید مراحل زیر را انجام داد.

مرحله ۱: دانلود برنامه Arduino. (حدود ۱۶۰مگابایت)

http://hw.ui.ac.ir/hc/files/arduino-۱.۸.۵-windows.zip

 

مرحله ۲: نصب کتابخانه های لازم برای ماژولهای ESP۸۲۶۶

بعد از دانلود برنامه Arduino، آن را از حالت فشرده خارج و فایل arduino.exe را اجرا کنید.  وارد منوی file شده و گزینه  preferences رو انتخاب کنید و لینک زیر رو در محل مشخص شده در عکس کپی کنید.

http://arduino.esp۸۲۶۶.com/stable/package_esp۸۲۶۶com_index.json

 

مرحله ۳: وارد منوی Tools شوید و از قسمت Board ، Board manager را انتخاب کنید.

مرحله ۴: طبق شکل زیر عبارت esp۸۲۶۶ را سرچ کنید. سپس لینک More Info و نهایتا دکمه Install را بزنید. حدود ۱۵۰ مگابایت دانلود میشه، اگر احیانا خطا داد، مجدد گزینه نصب را بزنید تا ادامه پیدا کند و فرایند نصب تکمیل گردد.

در صورت نصب کامل به صورت موفقیت آمیز، کلمه Installed نمایش داده می شود

 

مرحله ۵: حالا اگه به قسمت Board برگردیم می بینیم که یک بخش به نام ESP۸۲۶۶ Boards به این قسمت اضافه شده‌اند.

 

مرحله ۶: چون من از بورد Wemos D۱  استفاده میکنم پس گزینه آخر رو انتخاب میکنم .
مرحله ۹) باودریت رو مطابق با شکل زیر تنظیم میکنیم .

 

 

 

۱۰-۲دستورکار

۱-    طبق مراحل گفته شده در پیش آگاهی، نرم افزار آردوینو را نصب نموده و کتابخانه وای فای را به آن اضافه نمایید.

 

 

 


۱۱-۱پیش آگاهی

در جلسه قبل، با دستوراتی از آردوینو برای برنامه نویسی پایه های I/O ماژول وای-فای آشنا شدید، این دستورات به صورت زیر بودند. از دستور pinMode برای تعریف ورودی/خروجی بودن پایه استفاده می شود. این دستور معمولا در بخش setup برنامه آردوینو استفاده می شود. با استفاده از دستورات digitalRead می توان مقدار پورت را خواند و با استفاده از دستور digitalWrite می توان یکی از پایه ها را صفر یا یک کنیم.

pinMode(pinName, IN);

digitalRead(pinName);

pinMode(pinName, OUTPUT);

digitalWrite(pinName,LOW);

 

۱۱-۱-۱ کار با پورت سریال

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

Serial.begin(speed, config)

Serial.begin(۱۱۵۲۰۰, SERIAL_۸N۱); // دیتا به صورت ۸ بیتی، بدون بیت پریتی و یک بیت پایان

Serial.println();// فرستادن کد اینتر

Serial.print ();//ارسال عدد، رشته یا کاراکتر

Serial.print(x, HEX);//عدد را به صورت مبنای شانزده تبدیل و ارسال می کند

Serial.available();// در صورتی که کاراکتری دریافت شده باشد مقدار آن بزرگتر از صفر خواهد بود

Serial.parseInt();

 

·         Serial.print(۷۸) gives "۷۸"

·         Serial.print(۱.۲۳۴۵۶) gives "۱.۲۳"

·         Serial.print('N') gives "N"

·         Serial.print("Hello world.") gives "Hello world."

·         Serial.print(۷۸, BIN) gives "۱۰۰۱۱۱۰"

·         Serial.print(۷۸, OCT) gives "۱۱۶"

·         Serial.print(۷۸, DEC) gives "۷۸"

·         Serial.print(۷۸, HEX) gives "۴E"

·         Serial.print(۱.۲۳۴۵۶, ۰) gives "۱"

·         Serial.print(۱.۲۳۴۵۶, ۲) gives "۱.۲۳"

·         Serial.print(۱.۲۳۴۵۶, ۴) gives "۱.۲۳۴۵"

۱۱-۲دستور کار

۱- برنامه ای بنویسید که مدت روشن/ خاموش بودن LED روی ماژول وای فار را بتوان با استفاده از کامپیوتر تنظیم کرد.(یک عدد از کامپیوتر دریافت کند(برحسب میلی ثانیه) و به همان مدت روشن و سپس به همان مدت خاموش باشد.

۲-برنامه فوق را به نحوی عوض کنید که در حین روشن و خاموش شدن هم بتواند عدد جدیدی دریافت و مدت روشن و خاموش شدن را بر اساس مقدار دریافتی تنظیم کند.

 


۱۲-۱پیش آگاهی

در این جلسه قصد داریم یک وب‌سرور روی ماژول وایفای راه اندازی کنیم و کاربر بتواند از طریق مرورگر به ماژول متصل و Led روی بورد را کنترل کند. ماژول وایفای دارای دو حالت عملکردی است: عملکرد به عنوان Access Point و عملکرد در حالت Station. در ادامه به شرح آنها پرداخته می شود.

۱۲-۱-۱ حالت عملکردی Access Point

در شکل ۸-۱، حالت عملکردی Access Point نمایش داده شده است. در این حالت ماژول وای فای به عنوان اکسس پوینت عمل میکند(AP) و دیوایسهای وای فای می توانند مستقیما به آن متصل شوند. این روش مزیتش این است که نیازی به نصب اکسس پوینت مجزا در محیط نیست و هزینه ها به شدت کاهش پیدا می کند.

شکل ۱۲-۱: عملکرد ماژول وای فای، در حالت Access Point

۱۲-۱-۲ حالت عملکردی Station

در حالت عملکردی دوم، ماژول به عنوان یک Station عمل می کند(STA) و به یک اکسس پوینت متصل می شود و بقیه دیوایسها میتوانند از طریق آن اکسس پوینت با ماژول وای فای ارتباط داشته باشند. در شکل ۸-۲، نحوه اتصال به ماژول وای فای در حالت عملکردی Station، نمایش داده شده است.

شکل ۱۲-۲: عملکرد ماژول وای فای، در حالت Station

۱۲-۲دستورکار

۱-    با استفاده از کدی که در آزمایشگاه توضیح داده شد و ضمیمه این آزمایش شده است (حالت عمکردی Station) برنامه مربوط به روشن و خاموش کردن Led روی بورد را به گونه ای تغییر دهید که مدت زمان روشن و خاموش شدن Led را بتوانید کنترل کنید.

از کد htmlزیر استفاده کنید:

<html>

<form action="" method="get" class="form-example">

<label for="ON">Time(ms) on: </label>

<input type="text" name="On" id="On" required><br><br>

<label for="OFF">Time(ms) off: </label>

<input type="text" name="off" id="off" required><br><br>

<input type="submit" value="Send">

</form>

</html>

 

نتیجه اجرای کد فوق در مرورگر، به صورت زیر خواهد شد:


در صورتیکه دکمه Send را بزنید و اعداد فوق را وارد کرده باشید، در قسمت آدرس، URL به صورت زیر خواهد بود:

ON=۸۰۰&OFF=۲۰۰

 

در ادامه برنامه آزمایش شده در کلاس آورده شده و بخشهایی از کد که باید عوض شود هایلایت شده اند(زردها باید تغییر کنند، سبزها باید اضافه شوند):

 

#include

const char* ssid = "XXX";

const char* password = "YYYY";

 

int OnTime=۰;

int OffTime=۰;

 

int ledPin = D۴;

WiFiServer server(۸۰);

void setup() {

Serial.begin(۱۱۵۲۰۰);

delay(۱۰);

 

pinMode(ledPin, OUTPUT);

digitalWrite(ledPin, LOW);

// Connect to WiFi network

Serial.println();

Serial.println();

Serial.print("Connecting to ");

Serial.println(ssid);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {

delay(۱۰۰۰);

Serial.print(".");

digitalWrite(ledPin, !digitalRead(ledPin));

}

Serial.println("");

Serial.println("WiFi connected");

// Start the server

server.begin();

Serial.println("Server started");

// Print the IP address

Serial.print("Use this URL : ");

Serial.print("http://");

Serial.print(WiFi.localIP());

Serial.println("/");

}

void loop() {

// Check if a client has connected

WiFiClient client = server.available();

if (!client) {

return;

}

// Wait until the client sends some data

Serial.println("new client");

while(!client.available()){

delay(۱);

}

// Read the first line of the request

String request = client.readStringUntil('\r');

Serial.println(request);

client.flush();

// Match the request

int value = LOW;

if (request.indexOf("/LED=ON") != -۱) {

 

digitalWrite(ledPin, LOW);

OnTime=??

value = LOW; }

if (request.indexOf("/LED=OFF") != -۱){

digitalWrite(ledPin, HIGH);

OffTime=??

 

value = HIGH;

}

// Return the response

client.println("HTTP/۱.۱ ۲۰۰ OK");

client.println("Content-Type: text/html");

client.println(""); // do not forget this one

client.println("<!DOCTYPE HTML>");

client.println("<html>");

client.print("Led pin is now: ");

if(value == HIGH) {

client.print("On");

} else {

client.print("Off");

}

client.println("<br><br>");

client.println("Click here turn the LED on pin ۵ ON
");

client.println("Click here turn the LED on pin ۵ OFF
");

client.println("</html>");

delay(۱);

Serial.println("Client disconnected");

Serial.println("");

 

while(OnTime+ OffTime)

{

digitalWrite(ledPin, LOW);

delay(OnTime);

digitalWrite(ledPin, HIGH);

delay(OffTime);

 

}

 

}

 

 



[۱] BreadBoard

[۲] CrossTalk

تاریخ به روز رسانی:
۱۴۰۱/۱۱/۱۷
تعداد بازدید:
۷۳۰
Powered by DorsaPortal