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

آموزش راه اندازی سنسور TCS34725 تشخیص رنگ RGB فوق دقیق

getting started with tcs34725 RGB Color sensor with arduino digispark
نوشته شده توسط پریسا پوربلورچیان

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

 


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


سنسور تشخیص رنگ TCS34725 از ال ای دی های RGB ساخته شده و به دلیل حذف فیلتر های IR دقت اندازه گیری نور افزایش یافته است. سنسور TCS34725 از رگولاتور داخلی ۳٫۳ بهره می‌برد و به راحتی می‌توانید تغذیه ۳ تا ۵ ولت DC را به برد اعمال کنید. این سنسور از تراشه I2C 7 بیتی ساخته شده است و به راحتی با تمامی بردهای میکروکنترلر که از رابط I2C پشتیبانی می‌کنند قابل راه اندازی و اجرا است. هر ال ای دی با خروجی لاجیک لول روشن و خاموش خواهد شد. این سنسور حساسیت بالایی داشته و در طیف رنگی RED, GREEN, BLUE تشخیص بسیار دقیقی انجام میدهد. سنسورهای رنگ در پروژه های تشخیص یک رنگ خاص کاربرد دارند. به این معنی که با قرار گرفتن شی رنگی در مقابل سنسور، ال ای دی به همان رنگ تغییر خواهد کرد: در صورتکیه رنگ مورد نظر آبی باشد، سنسور به رنگ آبی تبدیل می‌شود و حتی می‌توانید یک کد رنگ خاص را به آن اختصاص دهید تا پس از تشخیص رنگ مورد نظر یک عمل خاصی در مدار رخ دهد. از قابلیت های منحصر به فرد سنسور TCS34725 تشخیص شدت نور بر واحد Lux و اندازه گیری دما بر واحد کلوین است.

 

سنسور TCS34725 تشخیص رنگ فوق دقیق با رابط I2C - دیجی اسپارک

 


کتابخانه Adafruit TCS34725


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

Arduino / Tools / Manage libraries

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

 


اتصال سنسور به آردوینو و ESP8266


سنسور TCS3475 دارای ۷ پایه است که با توجه به قابلیت I2C فقط از پایه های SDA و SCL استفاده می‌کنیم. در لیست زیر نحوه ی اتصال سنسور به چند برد پر مصرف آموزش داده شده است.

 


کد آردوینو سنسور رنگ TCS34725


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

#include <Wire.h>
#include "Adafruit_TCS34725.h"
 
 
 
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_700MS, TCS34725_GAIN_1X);


void setup(void) {
Serial.begin(9600);
 
if (tcs.begin()) {
Serial.println("Found sensor");
} else {
Serial.println("No TCS34725 found, check connections");
while (1);
}
 

}
 

void loop(void) {
uint16_t r, g, b, c, colorTemp, lux;  // تعیین پارامترهای مورد نیاز جهت اندازه گیری
 
tcs.getRawData(&r, &g, &b, &c);
colorTemp = tcs.calculateColorTemperature(r, g, b);
lux = tcs.calculateLux(r, g, b);
 
Serial.print("Color Temp: "); Serial.print(colorTemp, DEC); Serial.print(" K - "); // نمایش دما بر واحد کلوین
Serial.print("Lux: "); Serial.print(lux, DEC); Serial.print(" - "); // نمایش مقدار شدت نور بر واحد لوکس
Serial.print("R: "); Serial.print(r, DEC); Serial.print(" ");
Serial.print("G: "); Serial.print(g, DEC); Serial.print(" ");
Serial.print("B: "); Serial.print(b, DEC); Serial.print(" ");
Serial.print("C: "); Serial.print(c, DEC); Serial.print(" ");
Serial.println(" ");
}

 

 


تحلیل کد آردوینو سنسور TCS34725


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

#include <Wire.h>
#include "Adafruit_TCS34725.h"
 
 
 
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_700MS, TCS34725_GAIN_1X);

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

void setup(void) {
Serial.begin(9600);
 
if (tcs.begin()) {
Serial.println("Found sensor");
} else {
Serial.println("No TCS34725 found, check connections");
while (1);
}
 

}

در این مرحله اگر سنسور را به درستی متصل نکنید با پیغام No TCS34725 مواجه خواهید شد. سپس نوبت به فراخوانی متغیر های مورد نیاز برای پارمترهای زیر است.

  • دریافت کد رنگ RGB
  • دریافت شدت نور LUX
  • دریافت دمای رنگ بر واحد کلوین

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

uint16_t r, g, b, c, colorTemp, lux;  // تعیین پارامترهای مورد نیاز جهت اندازه گیری
 
tcs.getRawData(&r, &g, &b, &c);
colorTemp = tcs.calculateColorTemperature(r, g, b);
lux = tcs.calculateLux(r, g, b);

سپس در مرحله بعدی دستورات دریافت دیتا در سریال مانیتور فراخوانی می‌شود.

Serial.print("Color Temp: "); Serial.print(colorTemp, DEC); Serial.print(" K - "); // نمایش دما بر واحد کلوین
Serial.print("Lux: "); Serial.print(lux, DEC); Serial.print(" - "); // نمایش مقدار شدت نور بر واحد لوکس
Serial.print("R: "); Serial.print(r, DEC); Serial.print(" ");
Serial.print("G: "); Serial.print(g, DEC); Serial.print(" ");
Serial.print("B: "); Serial.print(b, DEC); Serial.print(" ");
Serial.print("C: "); Serial.print(c, DEC); Serial.print(" ");
Serial.println(" ");

 

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

 


جمع بندی لیدی پای


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

 


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


سنسور تشخیص رنگ دقیق RGB با تراشه TCS34725

برد آردوینو Arduino Uno R3 با تراشه R3 اورجینال

برد آردوینو مگا Arduino Mega2560 CH340

برد wemos D1 mini بر پایه ESP8266 با ۴ مگابایت حافظه فلش

برد NodeMCU بر پایه ESP8266 با تراشه CH340G ورژن ۰٫۱

۶۰ رشته کابل مخصوص برد بورد جامپر breadboard

 

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

 


پروژه و دریافت بن ارسال رایگان


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

 

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

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

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

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

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

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

۲۰ دیدگاه

    • با سلام
      کاربر گرامی ضمن تشکر از شما از اینکه تجربه خود را با دیگر کاربران به اشتراک می‌گذارید، صمیمانه سپاسگزارم.

  • عرض سلام و خسته نباشید
    برای ساخت این پروژه هر دو برد آردوینو مورد نیاز هست؟
    و اینکه شکل شماتیک اتصال برد و سنسور رو لطف میکنید اضافه کنید؟

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

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

  • عرض سلام و خسته نباشید
    میشه در خصوص یک مطلب راهنمایی بفرمایید؟
    اگر بخوام یک نمایشگر اضافه کنم و اطلاعات روی نمایشگر نشون داده بشه ، چه نمایشگری باید خریداری کنم و برنامه چه تغییری پیدا میکنه ؟

  • با سلام
    ببخشید من می خواستم کد رنگ RGB رو بدست بیارم
    یعنی خروجی به صورت عدد R=xxx , G=yyy , B=zzz باشه
    با این مدار میتونم؟
    و اگه نه با چه برد و سنسوری میشه؟

  • سلام وقت بخیر
    من کد رو که میخوام ران کنم ارور زیر رو میده مشکلش چیه؟
    Arduino: 1.8.19 (Windows 10), Board: “Arduino Uno”

    color_sensor:4:1: error: ‘Adafruit_TCS34725’ does not name a type

    Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_700MS, TCS34725_GAIN_1X);

    ^~~~~~~~~~~~~~~~~

    C:\Users\majid\Documents\Arduino\color_sensor\color_sensor.ino: In function ‘void setup()’:

    color_sensor:10:5: error: ‘tcs’ was not declared in this scope

    if (tcs.begin()) {

    ^~~

    C:\Users\majid\Documents\Arduino\color_sensor\color_sensor.ino: In function ‘void loop()’:

    color_sensor:24:1: error: ‘tcs’ was not declared in this scope

    tcs.getRawData(&r, &g, &b, &c);

    ^~~

    exit status 1

    ‘Adafruit_TCS34725’ does not name a type

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

  • عرض سلام و خسته نباشید
    ایا امکانش هست که دو تا سنسور TCS34725 را به یک اردینو مگا متصل کنیم؟

  • سلام وقت بخیر
    من کد رو که میخوام ران کنم ارور زیر رو میده مشکلش چیه؟
    #include
    ^~~~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    exit status 1
    Error compiling for board Arduino Uno.

  • سلام
    من کد رو که میخوام ران کنم ارور زیر رو میده مشکلش چیه؟
    #include
    ^~~~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    exit status 1
    Error compiling for board Arduino Uno.

  • سلام
    من اتصالات را چند بار چک کردم و همچینین چند سنسور را هم چک کردم ولی همش مینویسه ، سنسور tcs34725 یافت نشد