0% found this document useful (0 votes)
5 views

L03 Arduino

Uploaded by

nazanin.m.behnia
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

L03 Arduino

Uploaded by

nazanin.m.behnia
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 57

‫آردوینو‬

‫‪Arduino‬‬
‫محمد انصاری‬
‫ داناترین مردم کسی است که دانش دیگران را به دانش خود بیفزاید‬:‫پیامبر اکرم صلی اهلل علیه و آله‬

© MOHAMMAD ANSARI(c)– Mohammad


UNIVERSITY OF
Ansari
SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 2
‫سرفصل ها‬
‫مقدمه‬
Arduino ‫معرفی بردهای‬
Arduino IDE ‫معرفی‬
‫شیلد های آردوینو‬
‫حسگر ها‬
‫محرک ها‬
I2C
SPI
UART

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 3


‫محیط فیزیکی‬ ‫حسگرها‬ ‫مقدمه‬
‫حسگرها‪ :‬دریافت اطالعات از محیط فیزیکی‬
‫رطوبت‬ ‫‪OWI‬‬

‫دما‬ ‫‪Analog‬‬
‫اینترنت‬

‫‪USART‬‬
‫گاز‬ ‫؟‬

‫‪SPI‬‬
‫نور‬
‫‪I2C‬‬
‫شتاب‬
‫موقعیت‬
‫نیرو‬

‫‪© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI‬‬ ‫‪EMBEDDED SYSTEM DESIGN‬‬ ‫‪4‬‬
‫مقدمه‬
‫محرک ها‪/‬خروجی ها‬ ‫محرک ها )‪ :(Actuators‬ایجاد تغییر در محیط فیزیکی‬
‫‪PWM‬‬
‫موتور ‪DC‬‬
‫پمپ‬
‫‪Analog‬‬
‫بلندگو‬

‫‪Digital‬‬
‫اینترنت‬
‫سروو موتور‬

‫‪USART‬‬ ‫؟‬
‫رله‬
‫‪SPI‬‬
‫استپر موتور‬
‫‪LED‬‬

‫نمایشگر‬ ‫‪I2C‬‬

‫شیر سلونوئیدی‬

‫‪© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI‬‬ ‫‪EMBEDDED SYSTEM DESIGN‬‬ ‫‪5‬‬
‫مقدمه‬
‫در سیستم های نهفته یا اینترنت اشیاء‪ ،‬برای جمع آوری اطالعات از محیط و یا ایجاد تغییرات در محیط‪ ،‬به چیزی نیاز داریم‬
‫که بتواند‪:‬‬
‫داده های آنالوگ را دریافت کند (‪)ADC‬‬ ‫◦‬
‫با پروتکل های رایج در حسگر ها ارتباط برقرار کند (مانند ‪ I2C, SPI, USARI‬و غیره)‬ ‫◦‬
‫داده ها را به صورت دیجیتال پردازش کند‬ ‫◦‬
‫داده ها را به شبکه ارسال کند (با پروتکل ‪ TCP/IP‬روی ‪ WiFi‬یا اترنت‪ ،‬یا با ‪ Bluetooth‬یا پروتکل های مرسوم ارتباط رادیویی)‬ ‫◦‬
‫در شبکه قابل شناسایی باشد‬ ‫◦‬
‫دستورها و داده ها را از شبکه دریافت کند‬ ‫◦‬
‫سیگنالهای خروجی دیجیتال یا آنالوگ تولید کند (مثالً روشن و خاموش کردن رله یا کنترل موتور ‪ DC‬با ‪)PWM‬‬ ‫◦‬
‫حتی االمکان کوچک باشد‬ ‫◦‬
‫مصرف توان کمی داشته باشد‬ ‫◦‬
‫هزینه معقولی داشته باشد‬ ‫◦‬

‫‪© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI‬‬ ‫‪EMBEDDED SYSTEM DESIGN‬‬ ‫‪6‬‬
‫پلتفرم های پردازش‬
‫قیمت‬ ‫اندازه برد‬ ‫مصرف توان‬ ‫خروجی‬ ‫قدرت‬ ‫شبکه‬ ‫‪I2C/SPI/USA‬‬ ‫خروجی‬ ‫ورودی‬ ‫پلتفرم‬
‫آنالوگ‬ ‫پردازش‬ ‫‪RT‬‬ ‫‪PWM‬‬ ‫آنالوگ‬
‫‪/PWM‬‬
‫گران‬ ‫بزرگ‬ ‫زیاد‬ ‫×‬ ‫خوب‬ ‫‪WiFi+Eth‬‬ ‫‪M‬‬ ‫×‬ ‫×‬ ‫‪PC‬‬
‫متوسط‬ ‫کوچک‪-‬متوسط‬ ‫متوسط‬ ‫×‬ ‫متوسط‬ ‫‪WiFi+Bl‬‬ ‫‪M‬‬ ‫×‬ ‫×‬ ‫‪Mobile‬‬
‫گران‬ ‫متوسط‬ ‫کم ‪ -‬متوسط‬ ‫‪-‬‬ ‫زیاد‬ ‫‪Eth‬‬ ‫‪‬‬ ‫‪‬‬ ‫×‬ ‫‪FPGA‬‬
‫متوسط‬ ‫متوسط‬ ‫متوسط‬ ‫‪‬‬ ‫متوسط‬ ‫‪WiFi+Eth‬‬ ‫‪‬‬ ‫‪‬‬ ‫‪M‬‬ ‫‪Raspberry Pi‬‬
‫ارزان‬ ‫کوچک‬ ‫خیلی کم‬ ‫‪‬‬ ‫کم‬ ‫‪‬‬ ‫‪‬‬ ‫‪‬‬ ‫‪‬‬ ‫‪Arduino‬‬
‫ارزان‬ ‫کوچک‬ ‫خیلی کم‬ ‫‪‬‬ ‫کم‬ ‫‪WiFi‬‬ ‫‪‬‬ ‫‪‬‬ ‫‪‬‬ ‫)‪ESP (Arduino‬‬

‫‪EMBEDDED SYSTEM DESIGN‬‬


‫‪© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI‬‬ ‫‪7‬‬
‫‪Arduino‬‬
‫آردوینو یک پلتفرم متن باز سخت‬
‫افزاری‪/‬نرم افزاری است که از تعدادی‬
‫برد به همراه یک نرم افزار ‪ IDE‬و‬
‫کتابخانه های زبان ‪ C‬تشکیل شده است‪.‬‬
‫بردهای آردوینو معموالً شامل یک‬
‫میکروکنترلر (معموال ‪ )AVR‬به همراه‬
‫تعدادی قطعات جانبی جهت ارتباط‬
‫‪ USB‬و برنامه ریزی‪ ،‬تأمین کالک‪،‬‬
‫تغذیه و پین هدر برای ارتباط با بیرون‬
‫هستند‪.‬‬
‫اکثر این برد ها توسط یک نرم افزار به‬
‫نام ‪ Arduino IDE‬بدون نیاز به‬
‫پروگرمر جداگانه و تنها با استفاده از‬
‫کابل ‪ USB‬قابل برنامه ریزی هستند‪.‬‬
‫امکان افزودن امکانات بیشتر به این‬
‫بردها از طریق اتصال شیلدهای آردوینو‬
‫یا ماژول های مختلف وجود دارد‪.‬‬

‫‪© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI‬‬ ‫‪EMBEDDED SYSTEM DESIGN‬‬ ‫‪8‬‬
Arduino UNO:‫مثال‬
‫یک برد قابل برنامه ریزی‬
ATmega328 ‫میکروکنترلر‬
16MHz
USB
SPI
I2C
USART
ADC
PWM

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 9


Arduino Shields

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 10


Arduino Shields
Bluetooth Shield
NFC Shield
XBee Shield Ethernet Shield

WiFi Shield Motor Shield Relay Shield


Display Shield

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 11


‫‪Arduino Modules‬‬
‫اکثر سنسورها و مدارهای پرکاربرد‪ ،‬به صورت ماژول‬
‫برای آردوینو موجود است‪ .‬مثال‪:‬‬
‫‪ .1‬ماژول سنسور رطوبت و دما ‪DH11‬‬
‫‪ .2‬ماژول سنسور شعله‬
‫‪ .3‬ماژول فاصله سنج اولتراسونیک‬
‫‪ .4‬ماژول تشخیص حرکت )‪Passive Infrared (PIR‬‬
‫‪ .5‬ماژول فرستنده گیرنده مادون قرمز‬
‫‪ .6‬ماژول فرستنده لیزری‬
‫‪ .7‬ماژول میکروفون‬
‫‪ .8‬ماژول اندازه گیری جریان‬
‫‪ .9‬ماژول سنسور اثر هال‬
‫‪ .10‬ماژول تغذیه باتری لیتیومی‬
‫‪ .11‬ماژول فتورزیستور‬
‫‪….‬‬

‫‪© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI‬‬ ‫‪EMBEDDED SYSTEM DESIGN‬‬ ‫‪12‬‬
‫دکمه های کاربردی‬

Arduino IDE
Arduino Integrated Design ‫نرم افزار آردوینو یا‬
Environment

Serial Monitor

‫ویرایشگر متن‬

‫کنسول‬

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 13


‫محل تایپ پیام‬
‫ارسالی ما به‬
‫میکروکنترلر‬ ‫‪Serial Monitor‬‬
‫یکی از قابلیت های پرکاربرد نرم افزار آردوینو‪ ،‬پنجره‬
‫‪ Serial Monitor‬است‪.‬‬
‫این پنجره برای ارتباط سریال با میکروکنترلر در حین کار‬
‫استفاده می شود‪.‬‬
‫برای عیب یابی یا مانیتور کردن وضعیت میکروکنترلر میتوان‬
‫با استفاده از دستورهای زیر‪ ،‬پیغامهایی را از طریق پورت‬
‫سریال به رایانه فرستاد تا در این پنجره نمایش داده شوند‪.‬‬
‫پیامهای ارسالی‬
‫از طرف‬ ‫;)‪Serial.begin(int baudrate‬‬
‫میکروکنترلر‬ ‫;)‪Serial.println(String message‬‬
‫) ‪String.printf( ….‬‬

‫سرعت ارتباط‬
‫سریال‬
‫‪© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI‬‬ ‫‪EMBEDDED SYSTEM DESIGN‬‬ ‫‪14‬‬
‫ساختار برنامه در آردوینو‬
‫دستور زبان ‪C‬‬
‫‪Sketch‬‬
‫دو تابع اصلی‪:‬‬
‫◦ )(‪ : setup‬هنگام روشن شدن‪/‬ریست شدن پردازنده‬
‫و فقط یک بار اجرا میشود‪ .‬معموالً مقداردهی های‬
‫اولیه متغیرها و تنظیمات اولیه ماژول ها در این تابع‬
‫قرار داده می شود‪.‬‬
‫◦ )(‪ :loop‬کار اصلی پردازنده که مدام تکرار می شود‪.‬‬
‫این تابع پس از هر بار اتمام دوباره اجرا میشود (یک‬
‫حلقه بینهایت است)‬

‫‪© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI‬‬ ‫‪EMBEDDED SYSTEM DESIGN‬‬ ‫‪15‬‬
Datatypes - ‫انواع داده‬

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 16


‫‪String object‬‬
‫‪ Object‬یا شیء در زبان ‪ ،C‬یک ساختار‬
‫)‪ (construct‬است که شامل توابع و داده‬
‫خروجی ‪Serial Monitor‬‬ ‫هایی درون خود است‪.‬‬
‫یک شیء ‪( String‬یا هر شیء دیگری که‬
‫تعریف کنیم) می تواند مانند سایر متغیرها‬
‫تعریف شود با این تفاوت که به جای نوع‬
‫داده (مثال ‪ int‬یا ‪ )char‬باید نوع شیء را‬
‫مشخص کنیم (مثال ‪.)String‬‬
‫‪ String‬تعدادی متد دارد که می توان با‬
‫استفاده از آنها اعمالی روی رشته متنی‬
‫انجام داد‪.‬‬

‫‪© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI‬‬ ‫‪EMBEDDED SYSTEM DESIGN‬‬ ‫‪17‬‬
‫زمان و تأخیر‬

‫نتیجه‬ ‫مثال‬ ‫کاربرد‬ ‫دستور‬


‫‪ 500‬میلی ثانیه تأخیر ایجاد شده و سپس دستور بعدی اجرا می شود‬ ‫;)‪delay(500‬‬ ‫ایجاد تأخیر‬ ‫)(‪delay‬‬
‫‪ 1000‬میکرو ثانیه تأخیر ایجاد شده و سپس دستور بعدی اجرا می‬ ‫ایجاد تأخیر‬
‫;)‪delayMicroseconds(1000‬‬ ‫)(‪delayMicroseconds‬‬
‫شود‬ ‫به میکروثانیه‬
‫مدت زمان سپری شده از ابتدای کار ‪ CPU‬را به میلی ثانیه در ‪ a‬ذخیره‬ ‫اندازه گیری‬
‫;)(‪long a = millis‬‬ ‫)(‪millis‬‬
‫می کند‬ ‫زمان‬
‫مدت زمان سپری شده از ابتدای کار ‪ CPU‬را به میکرو ثانیه در ‪b‬‬ ‫اندازه گیری‬
‫;)(‪long b = micros‬‬ ‫زمان‬ ‫)(‪micros‬‬
‫ذخیره می کند‬

‫‪© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI‬‬ ‫‪EMBEDDED SYSTEM DESIGN‬‬ ‫‪18‬‬
‫نام آرایه‬ ‫تعداد درایه ها‬

‫آرایه ها‬
‫نوع داده آرایه‬

n ‫ اُم از آرایه‬j ‫درایه‬

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 19


(math.h) ‫توابع ریاضی‬

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 20


‫خروجی‬/‫توابع ورودی‬
pinMode(pin, mode); digitalRead(pin);
• pin − the number of the pin whose mode you • pin − the number of the pin whose value you wish
wish to set to set

• mode − INPUT, OUTPUT, or INPUT_PULLUP.

digitalWrite(pin, value); analogRead(pin);


• pin − the number of the pin whose mode you wish • pin − the number of the analog input pin to read
to set from (0 to 5 on most boards, 0 to 7 on the Mini and
Nano, 0 to 15 on the Mega)
• mode − HIGH, or LOW.

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 21


‫پایه شماره ‪13‬‬

‫مثال‪ :‬روشن کردن یک ‪LED‬‬

‫تعیین ورودی یا خروجی‬


‫بودن پایه مورد نظر‬

‫‪GND‬‬ ‫نوشتن مقدار مورد نظر روی‬


‫پایه مورد نظر‬

‫‪© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI‬‬ ‫‪EMBEDDED SYSTEM DESIGN‬‬ ‫‪22‬‬
13 ‫پایه شماره‬

‫ چشمک زن‬LED :‫مثال‬

GND
LED ‫روشن کردن‬

‫ ثانیه‬1 ‫تأخیر به میزان‬

LED ‫خاموش کردن‬

‫ ثانیه‬2 ‫تأخیر به میزان‬

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 23


‫‪PWM – Pulse Width Modulation‬‬
‫; ) ‪analogWrite ( pin , value‬‬ ‫نوشتن ولتاژ به صورت آنالوگ )‪ (PWM‬روی خروجی‬
‫‪value − the duty cycle: between 0 (always off) and‬‬ ‫در بسیاری از کاربردهای کنترل وسایل خروجی مانند‬
‫‪255 (always on).‬‬ ‫موتور ‪ DC‬یا کنترل شدن ‪ ،LED‬میانگین ولتاژ پایه خروجی‬
‫برای ما مهم است‪.‬‬

‫با افزایش زمان یک بودن )‪ ،(Pulse Width‬میانگین ولتاژ‬


‫خروجی افزایش می یابد و گویا یک ولتاژ آنالوگ قابل‬
‫تغییر در خروجی خواهیم داشت‪.‬‬

‫پایه هایی که قابلیت اعمال ‪ PWM‬دارند‪ ،‬معموال با عالمت ~‬


‫روی برد آردوینو مشخص می شوند‪.‬‬

‫‪© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI‬‬ ‫‪EMBEDDED SYSTEM DESIGN‬‬ ‫‪24‬‬
:‫مثال‬
‫ و دستور‬PWM ‫ با استفاده از‬LED ‫کم و زیاد کردن نور‬
analogWrite

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 25


UART ‫ارتباط سریال‬

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 26


‫ارتباط سریال ‪UART‬‬
‫تعیین پایه متصل به‬
‫‪ LED‬به عنوان خروجی‬

‫ارسال یک رشته به‬


‫صورت فرمت شده به‬
‫پورت سریال‬
‫شروع ارتباط سریال‬

‫چک کردن اینکه آیا داده جدیدی به صورت سریال دریافت شده؟‬

‫‪© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI‬‬ ‫‪EMBEDDED SYSTEM DESIGN‬‬ ‫‪27‬‬
(Serial Peripheral Interface) SPI ‫ارتباط‬
SCLK: Serial Clock (output from master)
MOSI: Master Out Slave In (data output from master)
MISO: Master In Slave Out (data output from slave)
SS: Slave Select (often active low, output from master)

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 28


‫مثال‬
‫کتابخانه مربوط به‬
‫ارتباط ‪SPI‬‬

‫شروع ارتباط ‪SPI‬‬

‫‪ -1‬فعال کردن پایه‬


‫انتخاب اسلیو )‪(SS‬‬

‫‪ -2‬ارسال بایت اول‬

‫‪ -2‬ارسال بایت دوم‬

‫‪ -3‬غیرفعال کردن پایه‬


‫انتخاب اسلیو )‪(SS‬‬

‫‪© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI‬‬ ‫‪EMBEDDED SYSTEM DESIGN‬‬ ‫‪29‬‬
‫ ارتباط کارت حافظه با آردوینو‬:SPI ‫مثال‬

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 30


© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 31
SD Card ‫دستورهای‬
‫توضیح‬ ‫دستور‬

Initializes the SD library and card. Enter the pin connected to the SS pin as a function’s argument. SD.begin(#sspin)

Tests whether a file or directory exists on the SD card. SD.exists(filename)


Opens a file on the SD card in reading or writing mode. (If you leave the mode section blank, the file will open in
reading mode by default) If the file is opened for writing, it will be created a file with this name if it doesn’t already SD.open(filepath, mode)
exist.

Close the file and ensure that any data written to it is physically saved to the SD card. file.close()*

Remove a file from the SD card. SD.remove(filename)


Create a directory on the SD card SD.mkdir(filename)
Remove a directory from the SD card. SD.rmdir(filename
Returns the file name file.name()*
Print data to the file file.print(data)
Print data, followed by a carriage return and newline file.println(data)
Read from the file. file.read()
Check if there are any bytes available for reading from the file. file.available()

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 32


‫‪cspin‬‬
‫پایه ای که قرار است به‬
‫عنوان ‪chip select‬‬
‫تعریف فایل‬
‫استفاده شود‬
‫نوشتن روی ‪SD Card‬‬
‫آغاز به کار کارت ‪SD‬‬

‫ایجاد یک فایل جدید در کارت ‪SD‬‬


‫نکته‪ :‬در این برنامه ما از‬
‫دستورات ‪ SPI‬استفاده‬
‫نوشتن روی فایل‬ ‫نکردیم‪ .‬ولی توابع‬
‫کتابخانه ‪ SD‬درون خود از‬
‫دستورات ‪ SPI‬استفاده‬
‫میکنند‬

‫بستن فایل‬

‫‪© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI‬‬ ‫‪EMBEDDED SYSTEM DESIGN‬‬ ‫‪33‬‬
‫تعریف فایل‬

‫خواندن از ‪SD Card‬‬


‫آغاز به کار کارت ‪SD‬‬

‫بازکردن فایل در حالت ‪Read‬‬

‫مادامی که داده ای در فایل‬


‫وجود دارد آن را می خواند‬

‫خواندن از فایل‬
‫بستن فایل‬

‫‪© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI‬‬ ‫‪EMBEDDED SYSTEM DESIGN‬‬ ‫‪34‬‬
‫ارتباط )‪I2C (Inter Integrated Circuit‬‬
‫ارتباط دوسیمه ‪ (Two Wire Interface) TWI‬یا‬
‫‪ I2C‬این امکان را فراهم میکند تا تنها با استفاده از‬
‫دو سیم‪ ،‬بتوان بین چندین آی سی ارتباط برقرار‬
‫کرد‪.‬‬

‫در این ارتباط‪ ،‬هر وسیله دارای یک آدرس ‪ 7‬یا‬


‫‪ 10‬بیتی است‪.‬‬
‫دو سیم باس‪ ،‬با استفاده از یک مقاومت ‪pull-up‬‬
‫حدود ‪ 2kOhm- 10kOhm‬به تغذیه مثبت وصل‬
‫می شوند‪.‬‬

‫‪© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI‬‬ ‫‪EMBEDDED SYSTEM DESIGN‬‬ ‫‪35‬‬
‫‪ – I2C‬نحوه ارتباط‬
‫‪ :Start‬ارباب (‪ ،)Master‬ابتدا ‪ SDA‬و سپس ‪ SCL‬را صفر میکند‪.‬‬ ‫‪.1‬‬
‫ارباب‪ ،‬شروع به ایجاد کالک روی ‪ SCL‬می کند و در هر لبه کالک‪ ،‬یکی از بیت های آدرس برده ای که می‬ ‫‪.2‬‬
‫خواهد با آن ارتباط برقرار کند را روی ‪ SDA‬قرار می دهد‪.‬‬
‫در بیت هشتم‪ ،‬ارباب تعیین میکند که می خواهد بنویسد یا بخواند‪.‬‬ ‫‪.3‬‬

‫‪© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI‬‬ ‫‪EMBEDDED SYSTEM DESIGN‬‬ ‫‪36‬‬
‫‪ – I2C‬نحوه ارتباط‬
‫در کالک نهم‪ ،‬برده ای که آدرسش توسط ارباب روی باس قرار داده شده بود‪ ،‬کنترل ‪ SDA‬را در اختیار می‬ ‫‪.4‬‬
‫گیرد و با صفر کردن یا نکردن خط ‪ ،SDA‬به درخواست ارباب پاسخ می دهد‪.‬‬
‫ارباب‪ ،‬داده ای را که درخواست کرده بود می خواند یا می نویسد‪.‬‬ ‫‪.5‬‬
‫بعد از انتقال هر بایت دیتا‪ ،‬دستگاهی که آن را دریافت کرده است‪ ،‬یک سیگنال ‪ ACK‬روی ‪ SDA‬می گذارد (با‬ ‫‪.6‬‬
‫صفر کردن آن)‬
‫برای اتمام عملیات انتقال‪ ،‬ارباب شرایط توقف را اعمال می کند (‪ SDA‬را بعد از اینکه ‪ SCL‬یک شد‪ ،‬یک میکند)‬ ‫‪.7‬‬

‫‪© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI‬‬ ‫‪FPGA‬‬ ‫‪37‬‬


:‫مثال‬

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 38


‫ خواندن توسط ارباب از برده‬:‫مثال‬
Slave = Sender Master = Reader

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 39


IC1 IC2 IC3

SDA SCL SDA SCL SDA SCL

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 40


‫ نوشتن توسط ارباب روی برده‬:‫مثال‬
Slave = Receiver Master = Write

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 41


‫ نوشتن توسط ارباب روی برده‬:‫مثال‬
Slave = Receiver Master = Write

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 42


‫مثال‪ :‬پیدا کردن آدرس دستگاههای‬
‫متصل به ‪I2C‬‬

‫خروجی این تابع تنها زمانی صفر می شود که ارسال داده به‬
‫دستگاه به آدرس مورد نظر بدون خطا انجام شده باشد‬

‫‪© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI‬‬ ‫‪EMBEDDED SYSTEM DESIGN‬‬ ‫‪43‬‬
‫مثال های کاربردی‬

EMBEDDED SYSTEM DESIGN 44


‫‪ -1‬اندازه گیری دما با سنسور ‪TMP36‬‬
‫سنسور ‪ ،TMP36‬یک مقاومت متغیر با دما است‪.‬‬
‫ولتاژ تغذیه آن می تواند بین ‪ 2.7V-5.5V‬باشد‪.‬‬
‫در این مثال ما از ولتاژ ‪5‬ولت استفاده می کنیم‪.‬‬

‫ولتاژ آنالوگ به‬


‫میلی ولت‬

‫)‪Vanalog(mv)= (reading from ADC) * (5000/1024‬‬

‫دما بر حسب‬ ‫‪T(°C)= [(Vanalog(mv)) - 500] / 10‬‬


‫درجه سانتیگراد‬

‫‪© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI‬‬ ‫‪EMBEDDED SYSTEM DESIGN‬‬ ‫‪45‬‬
TMP36 ‫ اندازه گیری دما با سنسور‬-1
//TMP36 Pin Variables
int sensorPin = 0;
void setup(){
Serial.begin(9600);
}

void loop()
{
int reading = analogRead(sensorPin);
float voltage = reading * 5.0;
voltage /= 1024.0;
Serial.print(voltage); Vanalog(mv)= (reading from ADC) * (5000/1024)
Serial.println(" volts");
float temperatureC = (voltage - 0.5) * 100 ;
Serial.print(temperatureC); T(°C)= [(Vanalog(mv)) - 500] / 10
Serial.println(" degrees C");
}

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 46


I2C ‫ کاراکتری با ارتباط‬LCD -2
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
// set the LCD address to 0x27 for a 16 chars and 2 line display
void setup() {
lcd.init();
// initialize the lcd
lcd.init(); ‫روشن کردن نور‬
// Print a message to the LCD.
‫پشت صفحه‬
lcd.backlight();
‫ یا مکان نما‬cursor ‫بردن‬
lcd.setCursor(1,0);
1 ‫ و ستون‬0 ‫به سطر‬
lcd.print("hello everyone");
‫نوشتن متن در مکان‬
lcd.setCursor(1,1);
‫مورد نظر‬
lcd.print("konichiwaa");
} ‫ یا مکان نما به‬cursor ‫بردن‬
void loop() {
1 ‫ (دوم) و ستون‬1 ‫سطر‬
}

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 47


‫ خواندن صفحه کلید ماتریسی‬-3

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 48


‫ خواندن صفحه کلید ماتریسی‬-3
‫این کتابخانه را باید با استفاده‬
Library Manager ‫از ابزار‬
‫اضافه کنید‬

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 49


Library Manager ‫اضافه کردن یک کتابخانه با استفاده از‬
‫ جستجوی کتابخانه‬-1

‫ انتخاب کتابخانه و نسخه‬-2

‫ نصب کتابخانه‬-3

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 50


‫ – ماژول رله‬4 ‫مثال‬
220 V
const int relayPin = 2;
void setup() {
pinMode(relayPin, OUTPUT);
}

void loop() {
digitalWrite(relayPin, HIGH);
delay(1000);
digitalWrite(relayPin, LOW);
delay(1000);
}

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 51


‫ کنترل دور موتور‬:5‫مثال‬

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 52


)L298 ‫ کنترل دور موتور (ماژول‬:5‫مثال‬

ENA IN1 IN2 IN3 IN4 ENB

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 53


speedness = 0
‫ کنترل دور موتور‬:5‫مثال‬
)L298 ‫(ماژول‬
speedness = 64

speedness = 128

speedness = 192

speedness = 255

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 54


‫مثال ‪ :6‬کنترل موقعیت ‪Servo Motor‬‬
‫‪ Servo Motor‬یک نوع موتور است که درون خود یک‬ ‫•‬
‫مدار کنترل موقعیت دارد و میتوان با اعمال ولتاژ خاصی‬
‫به آن‪ ،‬موقعیت (زاویه) موتور را تعیین کرد‪.‬‬
‫این موتور دارای دو سیم تغذیه و یک سیم کنترل است‪.‬‬ ‫•‬
‫حداقل و حداکثر زاویه چرخش معموال به نوع سروو‬ ‫•‬
‫موتور وابسته است‪ .‬معموالً بین ‪ 0‬تا ‪ 180‬درجه یا ‪ 0‬تا‬
‫‪ 90‬درجه قابل تنظیم است‪.‬‬
‫معموالً زاویه موتور با ولتاژ کنترل آن رابطه مستقیم‬ ‫•‬
‫خطی دارد یعنی مثال برای یک موتور با زاویه حداکثر‬
‫‪ 180‬درجه‪:‬‬

‫𝑙𝑜𝑟𝑡𝑛𝑜𝑐𝑉‬ ‫𝑛𝑜𝑖𝑡𝑎𝑡𝑜𝑅‬
‫•‬ ‫=‬
‫𝑑𝑑𝑉‬ ‫‪180‬‬

‫‪© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI‬‬ ‫‪EMBEDDED SYSTEM DESIGN‬‬ ‫‪55‬‬
‫استفاده از کتابخانه‬
Servo Servo Motor ‫ کنترل موقعیت‬:6 ‫مثال‬
‫ایجاد یک شیء از نوع‬
#include <Servo.h>
0 ‫ برنامه ای که موقعیت سروو موتور را از‬:‫مثال‬
Servo
15 ‫ (هر‬.‫ درجه و برعکس تغییر می دهد‬180 ‫تا‬
Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards
)‫ یک درجه‬،‫میلی ثانیه‬

int pos = 0; // variable to store the servo position

void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
‫تنظیم موقعیت سروو‬
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
// in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
}

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 56


‫با تشکر از توجه شما‬

© MOHAMMAD ANSARI – UNIVERSITY OF SHAHID BEHESHTI EMBEDDED SYSTEM DESIGN 57

You might also like