معرفی و نحوه راه‌اندازی سنسورهای پرکاربرد اینترنت اشیا (IoT)

یکشنبه, 12 شهریور 1396 16:17
این مورد را ارزیابی کنید
(18 رای‌ها)

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

قطعات مورد نیاز

 برد آردوینو UNO و کابل رابط

1 عدد

فوتوسل

1 عدد

سنسور شعله

1 عدد

سنسور پیزوالکتریک

1 عدد

ماژول مادون قرمز

1 عدد

فرستنده مادون قرمز

1 عدد

گیرنده مادون قرمز

1 عدد

سنسور گاز MQ-3

1 عدد

سنسور گاز MQ-9

1 عدد

سنسور تشخیص حرکت PIR

1 عدد

LED نوری

1 عدد
مقاومت 220Ω 1 عدد
مقاومت 1kΩ 1 عدد
مقاومت 1MΩ 1 عدد

بردبورد

1 عدد

سیم جامپر

2 بسته

 


سنسور نور (فوتوسل)

فوتوسل یا همان LDR که مخفف Light Dependent Resistor است، یک قطعه حساس به میزان روشنایی است. همان طور که از اسم آن هم می‌توان فهمید، فوتوسل یک مقاومت متغیر است که مقدار آن با تغییر نور محیط تغییر می‌کند. بنابراین با توجه به میزان مقاومت فوتوسل می‌توانید مقدار روشنایی محیط را اندازه بگیرید. از آنجا که مقاومت را نمی‌توان مستقیما اندازه گرفت، مقاومت را با یک مدار تقسیم‌کننده، به ولتاژ ربط داده و مقدار آن را اندازه می‌گیریم. از این نظر فوتوسل مثل یک پتانسیومتر عمل خواهد کرد.

فوتوسل

 

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

 

مدار فوتوسل

 

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

/*
SanatBazar
Arduino Tutorial Series
Author: Davood Dorostkar
Website: www.sanatbazar.com

*/

#define photocellPin A5

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  Serial.println(analogRead(photocellPin));
  delay(1000);
}

مقدار به دست آمده از کد قبل را در متغیرmaxLightجایگذاری کنید:

/*
SanatBazar
Arduino Tutorial Series
Author: Davood Dorostkar
Website: www.sanatbazar.com

*/

#define photocellPin A5
#define maxLight 870
#define minLight 0

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  int photocellRead = analogRead(photocellPin);
  Serial.print("Light intensity is: ");
  Serial.print(map(photocellRead, minLight, maxLight, 0, 100) );
  Serial.println(" %");
  delay(2000);
}

سنسور شعله

سنسور شعله یک ماژول آماده است که به امواج فروسرخ یعنی طول موج‌های بین ۷۰۰ تا ١٠٠ نانومتر حساس است. این ماژول ۴ پایه دارد که دو پایه آن Vcc و GND و دو پایه دیگر خروجی سنسور هستند.

سنسور شعله

 

این ماژول خروجی را به دو صورت دیجیتال و آنالوگ می‌دهد. در صورتی که می‌خواهید از خروجی آنالوگ استفاده کنید پایه Vcc را به 5V و اگر از خروجی دیجیتال استفاده می‌کنید به 3.3V آردوینو وصل کنید. این سنسور تا فاصله ۸۰ سانتی‌متری عمل می‌کند. توجه داشته باشید که نزدیک کردن بیش از حد شعله به سنسور می‌تواند به آن آسیب برساند. شکل زیر نحوه اتصال سنسور به آردوینو در حالت آنالوگ را نشان می‌دهد:

 

مدار سنسور شعله

 

قبل از نوشتن برنامه مطمئن شوید که سنسور به درستی کار می‌کند. برای این کار یک شعله را روبروی سنسور بگیرید. در صورتی که ماژول سالم باشد، باید چراغ موجود بر روی آن روشن شود. خروجی آنالوگ را در آردوینو به صورت عددی بین ٠ تا ١٠٢٣ می‌توانید ببینید که هرچه این عدد کوچکتر باشد یعنی میزان تشعشع موج فروسرخ بیشتر است. خروجی دیجیتال فقط وجود یا عدم وجود شعله را به صورت HIGH یا LOW نشان می‌دهد. در ادامه کد استفاده از سنسور شعله ابتدا در حالت آنالوگ و سپس در حالت دیجیتال را مشاهده می‌کنید:

کد آنالوگ سنسور شعله:

/*
SanatBazar
Arduino Tutorial Series
Author: Davood Dorostkar
Website: www.sanatbazar.com

*/

#define flameSensorPin A5

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  int flameState = analogRead(flameSensorPin)/342;
  switch (flameState)
  {
  case 2:
  Serial.println("Safe");
    break;
  case 1:
  Serial.println("Warning!");
  break;
  case 0:
  Serial.println("Danger!!!");
  break;
  }
  delay(1000);
}

کد دیجیتال سنسور شعله:

/*
SanatBazar
Arduino Tutorial Series
Author: Davood Dorostkar
Website: www.sanatbazar.com

*/

#define flameSensorPin 2

void setup()
{
  Serial.begin(9600);
  pinMode(flameSensorPin,INPUT);
}

void loop()
{
  int flameState = digitalRead(flameSensorPin);
  switch (flameState)
  {
  case LOW:
  Serial.println("Safe");
    break;
  case HIGH:
  Serial.println("Danger!!!");
    break;
  }
  delay(1000);
}

سنسور مادون قرمز

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

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

ماژول مادون قرمز

 

نحوه اتصال این سنسور به آردوینو به صورت زیر است:

مدار ماژول مادون قرمز

 

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

/*
SanatBazar
Arduino Tutorial Series
Author: Davood Dorostkar
Website: www.sanatbazar.com

*/

#define IR 9

void setup()
{
  Serial.begin(9600);
  pinMode(IR, INPUT);
}

void loop()
{
  Serial.println(digitalRead(IR));
  delay(1000);
}

یکی از کارهای جالبی که می‌توان با سنسور مادون قرمز انجام داد تشخیص مانع است. برای این کار نیاز به یک فرستنده و یک گیرنده مادون قرمز دارید. فرستنده مادون قرمز یک موج با فرکانس 38kHz را ارسال می‌کند. برای مثال اگر فرستنده و گیرنده مادون قرمز را دو طرف درب ورودی خانه قرار دهید، با قطع شدن سیگنال ارسالی، متوجه ورود شخصی به خانه خواهید شد. دقت کنید که فرستنده و گیرنده مادون قرمز باید دقیقا روبروی هم قرار گرفته باشند. قطعات را به صورت زیر به آردوینو وصل کنید:

 

مدار سنسور مانع

 

حالا کد زیر را بر روی آردوینو آپلود کنید:

/*
SanatBazar
Arduino Tutorial Series
Author: Davood Dorostkar
Website: www.sanatbazar.com

*/

#define IRSender 9
#define IRReciever 11
bool state = 1;

void setup()
{
  Serial.begin(9600);
  pinMode(IRSender, OUTPUT);
  pinMode(IRReciever, INPUT);
}

void loop()
{
if(digitalRead(IRReciever))  Serial.println("Clear");
else Serial.println("Obstacle!");
delay(500);
}

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

 

فرستنده و گیرنده مادون قرمز

 

برای کار با سنسور مادون قرمز به کتابخانهIRRemoteنیاز خواهید داشت. اگر این کتابخانه را ندارید می‌توانید از لینک زیر آن را دانلود کنید:

دانلود کتابخانه IRRemote

ابتدا یک گیرنده مادون قرمز را به آردوینو وصل کرده و کد زیر را بر روی آن بارگذاری کنید. سپس هر کدام از کلیدهای کنترل را فشرده و مقدار نشان داده شده در نمایشگر سریال را یادداشت کنید.

/*
SanatBazar
Arduino Tutorial Series
Author: Davood Dorostkar
Website: www.sanatbazar.com

*/

#include <IRremote.h>
IRrecv irrecv(11);
decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn();
}

void loop() 
{
  if (irrecv.decode(&results)) 
    {
      Serial.println(results.value);
      irrecv.resume();
    }
}

در کتابخانه مادون قرمز دستور(irrecv.decode(&resultsمقدار ١ را در صورت دریافت سیگنال و در غیر این صورت مقدار ٠ را می‌دهد. همچنین برای اینکه سنسور دریافت سیگنال را ادامه دهد از دستور()irrecv.resumeاستفاده کنید.

حالا باید برنامه‌ای بنویسید و مقادیری که قبلا یادداشت کرده‌اید را در آن تعریف کنید. در این صورت می‌توانید برای هر کلید یک وظیفه مشخص تعریف کنید. مثلا در برنامه زیر با فشردن کلید + و – میزان روشنایی LED کم و زیاد می‌شود. LED را به پایه ۹ و سنسور را به پایه ١١ وصل کنید.

/*
SanatBazar
Arduino Tutorial Series
Author: Davood Dorostkar
Website: www.sanatbazar.com

*/

#include <IRremote.h>
#define ledPin 9
int lastLedState = 0;
IRrecv irrecv(11);
decode_results results;

void ledset(const String &input)
{
  int currentLedState;
  if (input == "VOL-")
    currentLedState = lastLedState - 30;
  if (input == "VOL+")
    currentLedState = lastLedState + 30;
  if (currentLedState < 0)
    currentLedState = 0;
  else if (currentLedState > 255)
    currentLedState = 255;
  analogWrite(ledPin, currentLedState);
  lastLedState = currentLedState;
}

String readIR()
{
  String characterIR;
  if (irrecv.decode(&results))
  {
    switch (results.value)
    {
    case 3810010651:
      characterIR = "CH-";
      break;
    case 5316027:
      characterIR = "CH";
      break;
    case 4001918335:
      characterIR = "CH+";
      break;
    case 1386468383:
      characterIR = "PREV";
      break;
    case 3622325019:
      characterIR = "NEXT";
      break;
    case 553536955:
      characterIR = "PLAY/PAUSE";
      break;
    case 4034314555:
      characterIR = "VOL-";
      break;
    case 2747854299:
      characterIR = "VOL+";
      break;
    case 3855596927:
      characterIR = "EQ";
      break;
    case 3238126971:
      characterIR = "0";
      break;
    case 2538093563:
      characterIR = "100+";
      break;
    case 4039382595:
      characterIR = "200+";
      break;
    case 2534850111:
      characterIR = "1";
      break;
    case 1033561079:
      characterIR = "2";
      break;
    case 1635910171:
      characterIR = "3";
      break;
    case 2351064443:
      characterIR = "4";
      break;
    case 1217346747:
      characterIR = "5";
      break;
    case 71952287:
      characterIR = "6";
      break;
    case 851901943:
      characterIR = "7";
      break;
    case 465573243:
      characterIR = "8";
      break;
    case 1053031451:
      characterIR = "9";
      break;

    default:
      break;
    }
    irrecv.resume();
  }
  return characterIR;
}

void setup()
{
  irrecv.enableIRIn();
  pinMode(ledPin, OUTPUT);
}

void loop()
{
  String characterIR = readIR();
  ledset(characterIR);
}

در این برنامه تابعreadIRسیگنال مادون قرمز را دریافت کرده و کلید فشرده شده را تعیین می‌کند. مقادیری که از برنامه قبل به دست آورده بودید را در این قسمت وارد کنید. همچنین تابعledsetمیزان روشنایی LED را تنظیم می‌کند.


سنسور لرزش پیزوالکتریک

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

 

سنسور لرزش پیزوالکتریک

 

استفاده از این سنسور ساده است چرا که تنها دو پایه دارد. یک پایه را به زمین و پایه دیگر را به A5 وصل کنید. خم کردن سنسور در یک جهت ولتاژ مثبت و در جهت دیگر ولتاژ منفی تولید می‌کند. اندازه ولتاژ منفی در این سنسور کوچکتر از ولتاژ مثبت است به همین دلیل اگر جای پایه‌های آن را عوض کنید مشاهده خواهید کرد که اندازه سیگنال‌ها تغییر می‌کند. دقت کنید که هرچند سیگنال تولید شده توسط پیزوالکتریک توان ناچیزی دارد اما در اثر تغییر شکل‌های بزرگ، سیگنال‌های لحظه‌ای بزرگی تولید کرده و می‌تواند به آردوینو آسیب بزند. به همین دلیل باید از آردوینو در برابر سیگنال‌های ولتاژ بالا محافظت کنید. راههای زیادی برای این کار وجود دارد. یک روش ساده این است که یک مقاومت بزرگ مثلا 1MΩ بین دو سر سنسور قرار دهید.

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

 

کد زیر را بر روی آردوینو آپلود کنید. برای اینکه نتیجه را بهتر ببینید می‌توانید از منوی Tools پنجره Serial Plotter را باز کرده و نحوه تغییرات سیگنال در پین آنالوگ آردوینو را ببینید.

/*
SanatBazar
Arduino Tutorial Series
Author: Davood Dorostkar
Website: www.sanatbazar.com

*/

#define piezoelectricPin A0

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  float piezoV = analogRead(piezoelectricPin) * 5.0 / 1023.0;
  Serial.println(piezoV);
}

خروجی سنسور لرزش


سنسورهای تشخیص گاز

سنسورهای تشخیص گاز، قطعه‌ای هستند که به میزان وجود انواع خاصی از گازها در محیط حساس هستند. سری MQ برای تشخیص چگالی گازهای مختلف بسیار مورد استفاده قرار می‌گیرند. این سری انواع مختلفی دارد که هر کدام برای تشخیص گاز خاصی طراحی و ساخته شده است. برای مثال سنسور MQ-3 به الکل، متانول و دود و نیز سنسور MQ-9 به کربن مونوکسید و گازهای قابل‌اشتعال حساس است.

 

سنسور گاز

 

برای نمونه در اینجا از سنسور MQ-3 استفاده خواهیم کرد اما نحوه استفاده از این سنسورها یکسان است. این ماژول نیز مانند بسیاری از ماژول‌های دیگر خروجی آنالوگ و دیجیتال دارد. همچنین بر روی آن یک پتانسیومتر قابل تنظیم وجود دارد که حد اشباع خروجی دیجیتال را تعیین می‌کند. درون این سنسور یک هیتر وجود دارد که باید قبل از اولین استفاده پیش‌گرم شود. طبق توصیه سازنده برای پیش‌گرمایش باید سنسور را به مدت حداقل ۴۸ ساعت به ولتاژ متصل کنید. پس از آن باید طبق اطلاعات موجود در کاتالوگ محصول آنرا کالیبره کنید. درون این سنسور یک مقاومت متغیر وجود دارد که با تغییر چگالی گازهای مورد نظر تغییر می‌کند. ابتدا سنسور را به صورت زیر به آردوینو وصل کرده و در یک محیط با هوای پاک قرار داده و به مدت ١۵ دقیقه صبر کنید تا دیتای آن ثابت شود.

مدار سنسور الکل

 

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

نمودار سنسور الکل

/*
SanatBazar
Arduino Tutorial Series
Author: Davood Dorostkar
Website: www.sanatbazar.com

*/

#define sensorPin A0
#define RL 200
#define R0ratio 0.9914

float sensorRead()
{
  int i = 0;
  float VRL = 0;
  do
  {
    VRL = VRL + analogRead(sensorPin);
    i++;
  } while (i < 100);
  return (VRL / 100);
}

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  float VRL = sensorRead() * 5 / 1023;
  float Rs = RL * (5 - VRL) / VRL;
  float R0 = Rs / R0ratio;
  Serial.print("R0 = ");
  Serial.println(R0);
  delay(1000);
}

در این کد R0 مقدار مقاومت سنسور در شرایط هوای پاک است. پارامتر R0ratio مقدار نسبت Rs/R0 است که باید در شرایط هوای پاک از روی نمودار به دست آورید. محاسبه Rs از طریق مقدار RL که برای این سنسور 200kΩ است، ولتاژ خوانده شده و نیز رابطه زیر انجام می‌شود:

رابطه سنسور الکل

همچنین برای دقت بیشتر در محاسبات، تابعsensorReadمقادیر از سنسور میانگین‌گیری می‌کند. در این قسمت از حلقهdo…whileاستفاده شده است. ویژگی این نوع حلقه این است که یک بار دستورات حلقه انجام شده و سپس شرط ادامه حلقه بررسی می‌شود. پس از به دست آوردن R0 می‌توانید کد زیر را آپلود کرده و مقدار لحظه‌ای الکل را بر حسب mg/L به دست آورید:

/*
SanatBazar
Arduino Tutorial Series
Author: Davood Dorostkar
Website: www.sanatbazar.com

*/

#define sensorPin A0
#define RL 200
#define R0 1471

float Alcohol_density(float ratio)
{
  float density = (0.2333 * ratio + 0.2499) / (pow(ratio, 2) +0.1666 * ratio -0.003644);
  return density;
}

float sensorRead()
{
  int i = 0;
  float VRL = 0;
  do
  {
    VRL = VRL + analogRead(sensorPin);
    i++;
  } while (i < 100);
  return VRL / 100;
}

void setup()
{
  Serial.begin(9600);
}
void loop()
{
  float VRL = sensorRead() * 5 / 1023;
  float Rs = RL * (5 - VRL) / VRL;
  float ratio = Rs / R0;
  float density = Alcohol_density(ratio);
  Serial.print("Alcohol density is = ");
  Serial.print(density);
  Serial.println("mg/L");
  if (density < 3)
    Serial.println("Safe");
  else if (density > 3 && density < 6)
    Serial.println("Warning");
  else if (density > 6 && density < 10)
    Serial.println("Danger");
  else if (density > 10)
    Serial.println("Extremely high");
  Serial.println("\n\n");
  delay(1000);
}

در این برنامه مقدار R0 که قبلا به دست آورده بودید را وارد کنید. برای اینکه بتوانید مقدار چگالی الکل را به دست آورید باید رابطه بین Rs/R0 و چگالی را با استفاده از نمودار الکل داشته باشید. برای داشتن دقت کافی من ترجیح دادم تا با استفاده از نرم‌افزار متلب این تابع را به دست آورده و وارد کد آردوینو کنم. تابعAlcohol_densityمقدار چگالی الکل را محاسبه می‌کند. در صورت نیاز می‌توانید همین کار را برای گازهای دیگر نیز تکرار کرده و مقدار چند گاز را در هر لحظه به دست آورید.


سنسور حرکت

سنسور حرکت، PIR یا سنسور پیروالکتریک یک ماژول مناسب برای تشخیص حرکت افراد در محیط است. این سنسور کوچک، ارزان و کم‌مصرف را می‌توانید به راحتی راه‌اندازی کرده و از آن برای هوشمندسازی ساختمان استفاده کنید. امروزه روشنایی بسیاری از ساختمان‌ها با استفاده از سنسور حرکت کنترل می‌شود. به طوری که چراغ‌های روشنایی تنها در صورتی که حضور فردی را حس کنند روشن می‌شوند.

 

سنسور حرکت

 

درون سنسور حرکت یک قطعه حساس به امواج مادون قرمز وجود دارد که توسط یک محفظه فلزی محافظت می‌شود. هر جسم گرمی، از جمله بدن انسان از خود نور مادون قرمز ساطع می‌کند. در صورتی که فردی از جلوی سنسور عبور کند، شدت نور مادون قرمز دریافتی توسط سنسور ابتدا زیاد و سپس کم می‌شود. تراشه BISS0001 که درون ماژول تشخیص حرکت وجود دارد، این تغییرات را به عنوان حضور یک شخص تعبیر کرده و پایه سیگنال ماژول را HIGH می‌کند.

توجه: سنسور PIR فقط به اجسام گرم مثل بدن انسان حساس است. بنابراین حرکت سایر اجسام با استفاده از این سنسور قابل تشخیص نیست.

عملکرد سنسور حرکت

 

بر روی این ماژول یک قطعه شیری رنگ قرار دارد که به آن لنز فرنل می‌گویند. لنز فرنل باعث می‌شود تا زاویه دید محدود سنسور افزایش یافته و بتواند فضای بیشتری را رصد کند.

لنز فرنل

 

اتصال سنسور حرکت به آردوینو ساده است. کافیست که مثبت و منفی آن را به 5V و GND و پایه سیگنال را به یک پین دیجیتال آردوینو وصل کنید.

پایه های سنسور حرکت

 

سنسور حرکت چند قابلیت خاص دارد که قبل از راه‌اندازی باید آنها را مد نظر داشته باشید. اول از همه دو پیچ تنظیم است که یکی برای تغییر میزان حساسیت و دیگری برای تعیین زمان روشن بودن سنسور است. چرخاندن در جهت عقربه‌های ساعت حساسیت سنسور را افزایش می‌دهد. در این سنسور دو پارامتر مهم وجود دارد: زمان روشن بودن (Tx) و زمان تاخیر (Ti). زمان روشن بودن که با چرخاندن پیچ مربوطه در جهت عقربه‌های ساعت افزایش می‌یابد، زمانی است که پس از تشخیص یک حرکت، پایه سنسور HIGH باقی می‌ماند. پس از زمان روشن بودن، پایه سنسور به میزان خاصی زمان، در حالت LOW قرار می‌گیرد. این مقدار ثابت است. کمترین و بیشترین مقدار زمان Tx، برابر با ۲.۲ و ۲۵۰ ثانیه است.

تنظیم سنسور حرکت

 

بر روی این سنسور یک جامپر هم مشاهده می‌کنید. در صورتی که جامپر در حالت L باشد، non-retriggering و اگر در حالت H باشد، retriggering خواهد بود. وقتی سنسور در وضعیت retriggering است، همواره به حرکت اجسام حساس بوده و متناسب با آن خروجی را تعیین می‌کند در حالی که در وضعیت non-retriggering سنسور تا پایان زمان تاخیر، دستور جدیدی را نمی‌پذیرد.

retriggering

 

توجه: خروجی سنسور PIR ولتاژ 3.3V است. پس توجه داشته باشید که اگر می‌خواهید از خروجی آن برای راه‌اندازی ماژول دیگری استفاده کنید، ماژول یا برد مورد نظر باید حساس به ولتاژ 3.3V باشد.

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

مدار سنسور حرکت

/*
SanatBazar
Arduino Tutorial Series
Author: Davood Dorostkar
Website: www.sanatbazar.com

*/

int ledPin = 9;
int pirPin = 2;
int lastState = LOW;
void setup()
{
  pinMode(ledPin, OUTPUT);
  pinMode(pirPin, INPUT);
  Serial.begin(9600);
}

void loop()
{
  if (digitalRead(pirPin))
  {
    digitalWrite(ledPin, HIGH);
    if (!lastState)
    {
      Serial.println("Somebody is here!");
      lastState = !lastState;
    }
  }
  else
  {
    digitalWrite(ledPin, LOW);
    if (lastState)
    {
      Serial.println("Went away!");
      lastState = !lastState;
    }
  }
}

نتیجه‌گیری

در این آموزش با تعدادی از مهمترین سنسورهای اولیه مورد استفاده در پروژه‌های اینترنت اشیا آشنا شده و نحوه کار با آنها را یاد گرفتید.

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

نظرات شما باعث بهبود محتوای آموزشی ما می‌شود. اگر این آموزش را دوست داشتید، همین‌طور اگر سوالی در مورد آن دارید، از شنیدن نظراتتان خوشحال خواهیم شد.

خواندن 25460 دفعه
داوود درستکار

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

کاربرانی که در این گفتگو شرکت کرده اند

نظرات (29)

  1. محمد پارسا حیدری

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

 
  1. حمید

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

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

ادامه مطلب
 
  1. پشتیبانی    حمید

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

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

ادامه مطلب
 
  1. پریسا

سلام مهندس درستکار خسته نباشید میشه راهنمایی کنید چطور میشه سنسور flc100 مگنومتر رو با آردوینو راه اندازی کرد و داه ها رو به کامپیوتر انتقال داد ؟ هزینه طرح رو کامل میدم لطفا نظرتون رو ایمیل کنید ممنون

 
  1. پشتیبان    پریسا

سلام پریسا عزیز
پایه های منفی و مثبت سنسور رو به GND و 5V وصل کنید. پایه SYNC رو به جایی وصل نکنید و پایه های OUT- و OUT+ رو به ترتیب به GND و یکی از پایه های آنالوگ آردوینو وصل کنید. بعد پایه آنالوگ رو بخونید.
موفق باشید

 
  1. علیرضا مهریار    پشتیبان

سلام خسته نباشید ببخشید نوع کتاب خانه رو چهطور باید بنویسیم اگه منبع برای این سیستم دادید ممنون میشم راهنمایی کنید

 
  1. پشتیبانی    علیرضا مهریار

سلام
دوست عزیز منظورتون رو متوجه نشدم. لطفا دوباره بیشتر توضیح بدید.
با تشکر

 
  1. صالحیان

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

سلام وقتتون بخیر
سوالی داشتم از خدمتتون، ممنون میشم راهنمایی بفرمائید
اینکه آیا سنسوری وجود دارد که برای قطعه دواری محدوده ای مشخص کنیم و درصورتی که قطعه از محدوده خارج شد و یا حرکت دوارش با مشکل مواجه شود، با الارم و یا روش دیگری اخطار داده شود؟
اگر سنسوری چطور به نظرتون چطور میشه اینکار را انجام داد که به صورت انلاین این اطلاعات را داشته باشیم

ادامه مطلب
 
  1. پشتیبان    صالحیان

سلام دوست عزیز
وقت شما هم بخیر
میتونید مثلا از سنسور IR استفاده کنید. چند تا سنسور اطراف قطع قرار بدین طوری که اگه قطعه از جاش خارج شد، خط دید فرستنده و گیرنده رو قطع کنه. و در این صورت پیغامی به سیستم شما ارسال بشه.
موفق باشید

 
  1. آیت شاهینی

سلام.
برای خواندن و نوشتن دیتا از طریق مادون قرمز چه ماژولی ‍پیشنهاد میکنید؟؟!

 
  1. پشتیبان    آیت شاهینی

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

 
  1. نوراله زاده

سلام-آیا سنسوری وجود داره که پرواز هگزاروتور یا کواد روتور در فاصله نزدیک رو تشخیص بده؟

 
  1. نوراله زاده

سلام-آیا سنسوری وجود داره که پرواز هگزاروتور یا کواد روتور در فاصله نزدیک رو تشخیص بده؟

 
  1. نوراله زاده

سلام-وقت شما بخیر-آیا سنسوری وجود داره که اشیا و اجسام رو تشخیص بده و الارم بده-مثلا یه سیستمی به منزل یه شرکت وصل بشه که و اگه پهپادهایی مثل کوادکوپتر یا هگزا کوپتر در اون اطراف در حال پرواز بود رو شناسایی کنه؟

 
  1. پشتیبان    نوراله زاده

سلام دوست عزیز
سنسورهای PIR میتونن حرکت اجسام رو تشخیص بدن. حداکثر برد این سنسورها بین 5 تا 12 متر هست.

 
  1. امير بارگاهي

لطفا هر چه سریع تلفن تماس بفرمائید و یا با بنده تماس بگیرید
09054643881

 
  1. امير بارگاهي

با سلام و ممنون از لطفتا كه بسيار عالي بودنند
لطف در اين مورد مرا راهنمائي كنيد كه آيا سنسوري را ميتوانيد بفرمائيد كه سريعا بتواند مه آلود و يا برف و كولاك هوا را تشخيص بدهد و اگر همين مورد را خودتان براي فروش داريد لطفا برايم بفرمائيد
تلفن تماس...

با سلام و ممنون از لطفتا كه بسيار عالي بودنند
لطف در اين مورد مرا راهنمائي كنيد كه آيا سنسوري را ميتوانيد بفرمائيد كه سريعا بتواند مه آلود و يا برف و كولاك هوا را تشخيص بدهد و اگر همين مورد را خودتان براي فروش داريد لطفا برايم بفرمائيد
تلفن تماس بنده ٠٩٠٥٤٦٤٣٨٨١

ادامه مطلب
 
  1. پشتیبان    امير بارگاهي

سلام دوست عزیز
سنسوری برای اندازه گیری تمام این موارد را مستقیما انجام دهد نداریم اما میتونید برای به طور غیرمستقیم با اندازه گیری رطوبت هوا یا فشار هوا، مه یا برف و کولاک رو تشخیص بدین. برای این کار میتونید از سنسورهای زیر استفاده کنید:

ادامه مطلب
 
هیچ نظری در اینجا وجود ندارد
بارگذاری بیشتر ...

نظر خود را اضافه کنید.

ارسال نظر بعنوان یک مهمان
پیوست ها (0 / 3)
مکان خود را به اشتراک بگذارید

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

ما را دنبال کنید:

Copyright © 2017-2018 | Sanatbazar.com