تحلیل کتابخانه

تحلیل و بررسی کتابخانه S11059.h

S11059-h-arduino-library-digispark
نوشته شده توسط معین صابری

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

 


سنسور تشخیص رنگ S11059


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

 

 این سنسور دارای ولتاژ کاری بین ۰٫۳- الی ۶ ولت DC است. بدین ترتیب این سنسور به سادگی با بردهای آردوینو و ESP راه اندازی می شود. در کنار این، با توجه به توان مصرفی بسیار پایین این سنسور(۳۰۰ میلی وات)، این سنسور را به گزینه بسیار مناسبی برای طراحی و توسعه پروژه های اینترنت اشیا بدل می کند. همانطور که پیشتر هم اشاره کردیم، جهت راه اندازی و کار با این سنسور، کتابخانه تحت آردوینو توسعه یافته که در قسمت های بعدی به این موضوع خواهیم پرداخت.

 


نصب کتابخانه S11059


به منظور استفاده از کتابخانه s11059.h، ابتدا می بایست آن را نصب کنیم. به همین منظور، ابتدا در نرم افزار آردوینو بر روی گزینه Tools و سپس Manage Libraries را کلیک کنید. پس از کلیک بر روی این گزینه، با تصویر زیر رو به می شوید. این منو کتابخانه های در دسترس را به شما نشان می دهد. شما نیز می توانید با جستجوی نام کتابخانه مورد نظر خود، آن را در مخازن آردوینو یافته و سپس نصب کنید.

روند دانلود کتابخانه آردوینو - دیجی اسپارک

 

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

دانلود و نصب کتابخانه S11059.h - دیجی اسپارک

 

پس از نصب کتابخانه، نوبت به تحلیل و بررسی آن می رسد. بنابراین در قسمت بعدی به الزمات فنی ماژول DF PLAYER MINI و بردهای مورد پشتیبانی آن، می پردازیم.

 


الزامات فنی و نکات کتابخانه S11059


همانطور که اطلاع دارید، سنسور S11059 از پورت I2C جهت ارتباط با میکروکنترلرها استفاده می کند. به همین جهت برد مد نظر شما می بایست از پورت I2C سخت افزاری نیز، پشتیبانی کند. در نظر داشته باشید که درون کتابخانه S11059، از کتابخانه WIRE جهت ارتباط I2C استفاده می کند. بنابراین از این کتابخانه می توان در بردهای آردوینو مبتنی برا تراشه AVR و بردهای سری ESP استفاده نمود. پس از بررسی این مورد، نوبت به تحلیل و تشریح توابع کتابخانه می رسد. قسمت بعد مختص این موضوع خواهد بود.

 


توابع کتابخانه S11059


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

شرح ورودی تابع
این تابع در حقیقت تابع سازنده کلاس کتابخانه است. ورودی این تابع اشاره گر از نوع کلاس I2C است. این ورودی را می توانید خالی قرار دهید تا سیستم به طور خودکار پورت I2C را شناسایی کند. ورودی از نوع اشاره گر به کلاس کتابخانه S11059(TwoWire *wire=&Wire)
به کمک این تابع گین(بهره) سنسور تعیین می گردد. ورودی های معتبر برای گین قوی و ضعیف به ترتیب از بالا به پایین عبارتند از:

S11059_GAIN_HIGH

S11059_GAIN_LOW

ورودی از نوع بدون علامت ۸ بیتی void setGain(uint8_t gain)
این تابع مد کاری سنسور را تعیین می کند. ورودی های معتبر برای این تابع عبارتند از:

S11059_MODE_MANUAL

S11059_MODE_FIXED

ورودی از نوع بدون علامت ۸ بیتی   void setMode(uint8_t mode)
این تابع برای خواندن هر رنگ تاخیر ایجاد می کند. ورودی های معتبر برای این تابع عبارتد از:

S11059_TINT0

S11059_TINT1

S11059_TINT2

S11059_TINT3

 

ورودی از نوع بدون علامت ۸ بیتی void setTint(uint8_t tint)
این تابع ایجاد تاخیر را در مد manual ایجاد می کنند. ورودی این تابع می تواند بین ۰ الی ۶۵۵۵۵ به عنوان تاخیر خواهد بود. احتمالا این زمان میلی ثانیه است. وروردی از نوع بدون علامت ۸ بیتی void setManualTiming(uint16_t manualTiming)
اجرای تاخیر با توجه توابع manual  و fix بدون ورودی void delay()
به کمک این تابع نمونه برداری توسط سنسور آغاز می گردد. خطا در راه اندازی خروجی false خواهد بود. بدون ورودی bool start()
در صورتیکه داده های جدیدی وجود داشته باشد، خروجی سنسور true خواهد شد. بدون ورودی bool update()
این تابع میزان رنگ قرمز جسم را در خروجی قرار می دهد. بدون ورودی uint16_t getRed()
این تابع میزان رنگ سبز جسم را در خروجی قرار می دهد. بدون ورودی uint16_t getGreen()
این تابع میزان رنگ آبی جسم را در خروجی قرار می دهد. بدون ورودی uint16_t getBlue()
این تابع مقداری که توسط سنسور IR اندازه گیری شده را در خروجی قرار می دهد. بدون ورودی uint16_t getIR()

 

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

 


اجرای نمونه برنامه حالت fix


در این قسمت به اجرای یک نمونه برنامه می پردازیم. در این برنامه در مد fixed، مقادیر خروجی سنسور را می خوانیم.

#include <Wire.h>  //کتابخانه i2c
#include <S11059.h>  //کتابخانه سنسور رنگ
S11059 colorSensor;  //ایجاد شی از کلاس کتابخانه

void setup() {
  Serial.begin(9600);
  Wire.begin();
  colorSensor.setMode(S11059_MODE_FIXED);   //تنظیم مد کاری در حالت فیکس
  colorSensor.setGain(S11059_GAIN_HIGH);  //تنظیم بهره روی حالت HIGH
  //ایجاد تاخیر در حالت فیکس با مقادیر زیر ایجاد می شود.
  // * S11059_TINT0: 87.5 us
  // * S11059_TINT1: 1.4 ms
  // * S11059_TINT2: 22.4 ms
  // * S11059_TINT3: 179.2 ms
  colorSensor.setTint(S11059_TINT1);

    //به کمک تابع RESET یکبار سنسور را ریست می کنیم
  if (!colorSensor.reset()) {
    Serial.println("reset failed");
  }

 //راه اندازی سنسور 
  if (!colorSensor.start()) {
    Serial.println("start failed");
  }
}

void loop() {
   //ایجاد تاخیر با توجه به زمانی که قبلا با تابع Tint ایجاد کردیم
  colorSensor.delay();

  // در صورتیکه داده های جدیدی داشته باشیم خروجی ها را می خوانیم
  if (colorSensor.update()) {
    Serial.print(colorSensor.getRed());
    Serial.print(",");
    Serial.print(colorSensor.getGreen());
    Serial.print(",");
    Serial.print(colorSensor.getBlue());
    Serial.print(",");
    Serial.print(colorSensor.getIR());
    Serial.println("");
  } else {
    Serial.println("update failed");
  }

  delay(500);
}

 

پس از اجرای برنامه در حالت fix، نوبت به اجرای برنامه در حالت manual می رسد. قسمت بعدی مربوط به این موضوع است.

 


اجرای برنامه در حالت Manual


پس از اجرای برنامه در حالت fix، نوبت به اجرا در حالت Manual می رسد. برنامه زیر مربوط به این موضوع است.

#include <Wire.h>  //اضافه کردن کتابخانه i2c
#include <S11059.h>  //  اضافه کردن کتابخانه s11059

S11059 colorSensor;
void setup() {
  Serial.begin(9600);
  Wire.begin();
  colorSensor.setMode(S11059_MODE_MANUAL);   //تنظیم مد کاری
  colorSensor.setGain(S11059_GAIN_LOW);  //تنظیم گین
   //تنظیم زمان هر رنگ
  // * S11059_TINT0: 175 us
  // * S11059_TINT1: 2.8 ms
  // * S11059_TINT2: 44.8 ms
  // * S11059_TINT3: 358.4 ms
  colorSensor.setTint(S11059_TINT0);
  colorSensor.setManualTiming(3120);  //تنظیم تاخیر به صورت دستی که عددی بین ۰ الی ۶۵۵۳۵ خواهد بود
}

void loop() {
   //ریست شدن 
  if (!colorSensor.reset()) {
    Serial.println("reset failed");
  }
    
  if (!colorSensor.start()) {  //راه اندازی کردن سنسور
    Serial.println("start failed");
  }
  colorSensor.delay();  //راه اندازی تاخیر
  if (colorSensor.update()) {  //در صورت آپدیت بودن مقادیر خواندن رنگ ها
    Serial.print(colorSensor.getRed());
    Serial.print(",");
    Serial.print(colorSensor.getGreen());
    Serial.print(",");
    Serial.print(colorSensor.getBlue());
    Serial.print(",");
    Serial.print(colorSensor.getIR());
    Serial.println("");
  } else {
    Serial.println("update failed");
  }

  delay(1000);
}

 


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


انواع برد آردوینو

انواع برد ESP

سنسور S11059

 


جمع بندی


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

 

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

 

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

معین صابری

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

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

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