آردوینو Arduino Uno آموزش آردوینو پروژه های آردوینو

ساخت مدار فاصله سنج ماژول فرستنده گیرنده اینفرارد Waveshare ST188

ST188-infrared-module-arduino-tutorial-digispark
نوشته شده توسط پریسا پوربلورچیان

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

 

ماژول فرستنده گیرنده اینفرارد ST188

ماژول فرستنده گیرنده اینفرارد ST188 از برند Waveshare است. توسط این ماژول میتوان طیف و دامنه گسترده ای از ولتاژ را با تراشه LM393 تنظیم کرد. حساسیت سنسور ST188 از طربق مولتی ترن قرار گرفته شده بر روی ماژول قابل تنظیم است. ولتاژ کاری ماژول ST188 بین ۳ تا ۵٫۳ ولت DC و ابعاد آن در حدود ۱٫۵ تا ۲٫۵ سانتی متر است. ماژول فرستنده گیرنده مادون قرمز از سنسور ST188 تشکیل شده است. سنسور ST188، از دو سنسور فرستنده و گیرنده تشکیل شده است. فاصله ی قابل تشخیص توسط سنسور ST188، بین ۴ تا ۱۳ سانتی متر تغییر می‌کند. سنسور اول AK از یک دیود فرستنده اینفرارد مثبت و منفی و سنسور دوم CE از یک دیود گیرنده اینفرارد مثبت و منفی تشکیل شده است. بنابراین هنگامی که سنسور اول A به بالاترین سطح خود در TTL و K به پایین ترین سطح خود رسید، فرستنده مادون قرمز میتواند نور مادون قرمز را ارسال کند و سپس با اضافه کردن یک خروجی، میتواند سیگنال را در گیرنده تشخیص دهد. سپس سنسور گیرنده به بالاترین سطح TTL رسیده و به مقدار VCC نزدیک می‌شود. در غیر اینصورت به پایین ترین سطح رسیده و به GND نزدیک می‌شود. این سنسور در پروژه‌هایی مانند ربات تعقیب خط، تشخیص مانع کاربرد دارد.

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

 

هدف فاصله سنج مادون قرمز

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

 


ال ای دی نئوپیکسل Neopixel


ماژول ال ای دی حلقه ای استفاده شده در این آموزش از مدل ۱۶ تایی می‌باشد. این حلقه ی ال ای دی نئوپیکسل از ۱۶ عدد ال ای دی RGB در کنار یکدیگر تشکیل شده است. ال ای دی ها به صورت پیکسل‌هایی که توانایی تولید رنگ مختلف دارند، تبدیل می‌شوند و با اختصاص کد رنگ های متفاوت در برنامه آردوینو می‌توانید رنگ های متفاوتی را به ماژول اختصاص و آدرس دهی کنید. حلقه های LED RGB دارای مدل های متفاوت با تعداد ال ای دی متفاوت است که از لینک LED Neopixel می‌توانید آن‌ها را مشاهده و تهیه نمایید.

 

فراخوانی کتابخانه Neopixel

در این آموزش برای راه اندازی حلقه ال ای دی نیاز به کتابخانه Adafruit_NeoPixel خواهیم داشت. لینک دانلود کتابخانه Adafruit_NeoPixel در صفحه محصول ماژول ال ای دی حلقه ای NeoPixel در قسمت دانلود قرار دارد. با کلیک بر روی آن و دانلود کتابخانه Adafruit_NeoPixel، آن در محل نصب آردوینو Arduino / Library ذخیره کنید. همچنین نحوه نصب کتابخانه در نرم افزار آردوینو در پست نصب کتابخانه در نرم افزار آردوینو کامل آموزش داده شده است، در صورت نیاز ابتدا مطالعه و سپس کتابخانه را فراخوانی کنید.

 

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

  • پایه دیجیتال سنسور فرستنده گیرنده اینفرارد ST188 را به پایه ۲ دیجیتال آردوینو Arduino اتصال دهید.
  • پایه آنالوگ سنسور فرستنده گیرنده اینفرارد ST188 را به پایه A0 آنالوگ آردوینو Arduino اتصال دهید.
  • پایه GND سنسور فرستنده گیرنده اینفرارد ST188 را به پایه GND آردوینو Arduino اتصال دهید.
  • پایه VCC سنسور فرستنده گیرنده اینفرارد ST188 را به پایه ۵ ولت DC آردوینو Arduino اتصال دهید.

 


کد برنامه آردوینو Arduino


#include <Adafruit_NeoPixel.h> //فراخوانی کتابخانه
#define LEDPIN 8 // اتصال پایه سیگنال ال ای دی به آردوینو
#define NUMBER_PIEXELS 16// تعداد پیسکل های  مورد استفاده از ال ای دی 
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMBER_PIEXELS, LEDPIN, NEO_GRB + NEO_KHZ800); // تابع فراخوانی 

int barrier_Digital=2; // تعریف پایه دیجیتال
int barrier_Analog=A0; // تعریف پایه آنالوگ
int ad_value; // تعریف داده اولیه


void setup()
{
  pinMode(barrier_Digital,INPUT); // تعریف پایه دیجیتال به عنوان ورودی 
  pinMode(barrier_Analog,INPUT); // تعریف پایه آنالوگ به عنوان ورودی
 
  Serial.begin(9600); // باد ریت 
 
  strip.begin(); // تابع شروع ال ای دی 
}
void loop()
{
  ad_value=analogRead(barrier_Analog); // تعریف ورودی آنالوگ سنسور 
  
  
  if(digitalRead(barrier_Digital)==LOW)
  {
    Serial.println(" close to barrier");
    Serial.println(ad_value);
   
    
    for (int i=0; i<strip.numPixels()-1; i++) {
   
  
void rainbow7(uint16_t i, uint16_t wait) ;
    int np = strip.numPixels(); 
    strip.setPixelColor(i     % np, 0, 0, 0); // خاموش 
    strip.setPixelColor((i+1) % np, 25, 0, 25); // کد رنگ بنفش
    strip.setPixelColor((i+2) % np, 255, 0, 255); // کد رنگی نیلی
    strip.setPixelColor((i+3) % np, 0, 0, 150); // کد رنگ آبی
    strip.setPixelColor((i+4) % np, 0, 150, 0); // کد رنگ سبز
    strip.setPixelColor((i+5) % np, 255, 255, 0); // کد رنگ زرد
    strip.setPixelColor((i+6) % np, 110, 70, 0); // کد رنگ نارنجی
    strip.setPixelColor((i+7) % np, 150, 0, 0); // کد رنگ قرمز
    strip.show();
    
    
    delay(500); 
    
    strip.clear();
    
    strip.show();}
  }
  else
  {
    Serial.println("Far the barrier");
    
     strip.clear();
  
  strip.show(); 
  
  }
  
}

کد را از طریق کلیدهای میانبری که برای انتقال کدها در نظر گرفته شده است، به نرم افزار آردوینو Arduino انتقال دهید.

 

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

 


تحلیل کد آردوینو Arduino


در ابتدا در کد برنامه کتابخانه ال ای دی نیوپیکسل را فراخوانی میکنیم:

#include <Adafruit_NeoPixel.h> //فراخوانی کتابخانه

تعریف ورودی

 pinMode(barrier_Digital,INPUT); // تعریف پایه دیجیتال به عنوان ورودی 
  pinMode(barrier_Analog,INPUT); // تعریف پایه آنالوگ به عنوان ورودی

تعریف پایه های سنسور

int barrier_Digital=2; // تعریف پایه دیجیتال
int barrier_Analog=A0; // تعریف پایه آنالوگ

خواندن دیتا سنسور

  ad_value=analogRead(barrier_Analog); // تعریف ورودی آنالوگ سنسور 

تعریف حلقه ال ای دی نئوپیکسل

    for (int i=0; i<strip.numPixels()-1; i++) {

 

وسایل مورد نیاز

 

 

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

 

پروژه

برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکه‌های اجتماعی از جمله آپارات و اینستگرام، با هشتگ‌های دیجی_اسپارک و دانشجوکیت  و digispark  و  daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۰۳۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.

 

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

 

درباره نویسنده

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۴ دیدگاه

    • سلام خسته نباشید من این پروژه رو با حلقه ال ای دی ۱۲ تایی نوشتم ولی درست نشد برنامم خطا داره قسمتی که کد رنگ رو باید بدم باید کد ۵ رنگ بدم چون ۱۲ تایی واینکه برادحلقه ۱۲ تایی کد رنگ ها فرق میکنه من کلا این قسمت درک نکردم باید چیکا کنم

      • با سلام
        در ابتدا در خط سوم برنامه بایستی تعداد ال ای دی ها را مشخص کنید.
        #define NUMBER_PIEXELS 16 در این آموزش از ال ای دی ۱۶ تایی استفاده شده است و شما باید به جای ۱۶ عدد ۱۲ را جایگزین کنید.
        ارور دریافتی را ضمیمه کنید تا بررسی کنم.

    • سلام
      در خط سوم برنامه تعداد ال ای دی های نئوپیکسل مشخص می‌شود. اگر از ال ای دی ۸ تایی استفاده می‌کنید باید به ۸ تغییر دهید.

  • سلام خسته نباشید آیا از این ماژول میشه به عنوان تشخیص فاصله استفاده کرد یعنی هر چقد نزدیک تر بشیم چراغای بیشتری روشن بشه ؟

  • سلام خانم بلورچیان من یه پروژه دارم ک باید یه سنسور تشخیص فاصله بزارم با چهار حلقه ال ای دی ک هر چه فاصله کمتر بشه حلقه های بیشتری روشن بشه اگه براتون مقدوره کمکم کنید بابت هزینه هم شماره کارت بدید واریز کنم