اولین ایده ای که با شنیدن اسم ماژول رنگ به ذهن شما میرسد، تشخیص رنگ اجسام است! در پروژههای مختلفی از هوشمند سازی تا اینترنت اشیا امکان استفاده از سنسورهای تشخیص رنگ وجود دارد. ماژول سنسور TCS34725 دقیق قابلیت تشخیص رنگ اجسام را به صورت RGB دارد. تا به حال ایده های خلاقانه ای متفاوتی با خانواده سنسورهای رنگ طراحی و اجرا شده است. در این آموزش به معرفی یکی از سنسورهای رنگ فوق العاده دقیق RGB به نام TCS34725 میپردازیم. در ادامه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک به زبان فارسی همراه باشید.
سنسور TCS34725 تشخیص رنگ
سنسور تشخیص رنگ TCS34725 از ال ای دی های RGB ساخته شده و به دلیل حذف فیلتر های IR دقت اندازه گیری نور افزایش یافته است. سنسور TCS34725 از رگولاتور داخلی ۳٫۳ بهره میبرد و به راحتی میتوانید تغذیه ۳ تا ۵ ولت DC را به برد اعمال کنید. این سنسور از تراشه I2C 7 بیتی ساخته شده است و به راحتی با تمامی بردهای میکروکنترلر که از رابط I2C پشتیبانی میکنند قابل راه اندازی و اجرا است. هر ال ای دی با خروجی لاجیک لول روشن و خاموش خواهد شد. این سنسور حساسیت بالایی داشته و در طیف رنگی RED, GREEN, BLUE تشخیص بسیار دقیقی انجام میدهد. سنسورهای رنگ در پروژه های تشخیص یک رنگ خاص کاربرد دارند. به این معنی که با قرار گرفتن شی رنگی در مقابل سنسور، ال ای دی به همان رنگ تغییر خواهد کرد: در صورتکیه رنگ مورد نظر آبی باشد، سنسور به رنگ آبی تبدیل میشود و حتی میتوانید یک کد رنگ خاص را به آن اختصاص دهید تا پس از تشخیص رنگ مورد نظر یک عمل خاصی در مدار رخ دهد. از قابلیت های منحصر به فرد سنسور TCS34725 تشخیص شدت نور بر واحد Lux و اندازه گیری دما بر واحد کلوین است.
کتابخانه 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(" ");
جمع بندی لیدی پای
سنسور رنگ RGB TCS34725 با تمامی بردهای میکروکنترلر که از قابلیت I2C پشتیبانی میکنند سازگاری داشته و قابل پیاده سازی و اجرا است. در هر برد ابتدا پایه های I2C را تشخیص داده و سپس اتصالات را به درستی انجام دهید تا با خطاهای احتمالی مانند شناخته نشدن سنسور رو به رو نشوید. سپس کتابخانه مورد نیاز را فراخوانی و با توجه به نوع برد میکروکنترلر برنامه را آپلود و اجرا کنید. جهت تست پروژه پیشنهاد میشود از رنگ های مختلف در مقابل سنسور استفاده کنید تا کد هر رنگ با واحد RGB در سریال مانیتور نمایش داده شود. سه دیتا در سریال مانیتور نشان داده میشود. با قرار گرفتن یک رنگ مشخص در رو به روی سنسور سریال مانیتور کد رنگ و دما و شدت نور را محاسبه کرده و نمایش میدهد و به راحتی میتوانید دیتای مورد نظر را از سریال مانیتور استخراج کنید.
وسایل مورد نیاز
سنسور تشخیص رنگ دقیق RGB با تراشه TCS34725
برد آردوینو Arduino Uno R3 با تراشه R3 اورجینال
برد آردوینو مگا Arduino Mega2560 CH340
برد wemos D1 mini بر پایه ESP8266 با ۴ مگابایت حافظه فلش
برد NodeMCU بر پایه ESP8266 با تراشه CH340G ورژن ۰٫۱
۶۰ رشته کابل مخصوص برد بورد جامپر breadboard
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
پروژه و دریافت بن ارسال رایگان
برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکههای اجتماعی از جمله آپارات و اینستگرام، با هشتگهای دیجی_اسپارک دانشجوکیت digispark daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.
سلام
سنسور بسیار کاربردی و خوبیه، من ازش استفاده کردم. بابت آموزشتون ممنونم
با سلام
کاربر گرامی ضمن تشکر از شما از اینکه تجربه خود را با دیگر کاربران به اشتراک میگذارید، صمیمانه سپاسگزارم.
عرض سلام و خسته نباشید
برای ساخت این پروژه هر دو برد آردوینو مورد نیاز هست؟
و اینکه شکل شماتیک اتصال برد و سنسور رو لطف میکنید اضافه کنید؟
با سلام
این پروژه با برد آردوینو uno اجرا شده است. در خصوص شماتیک هم، طبق اتصالات معرفی شده در کدها اقدام کنید.
عرض سلام و خسته نباشید
برای ساخت این پروژه باید هردو برد آردوینو رو خریداری کرد یا یکی از آردوینو ها کافی هست ؟؟؟
و اینکه شکل شماتیک اتصال قطعات رو میتونید بزارید؟
ممنون
با سلام
یک آردوینو کافی است و به دلخواه از هر کدام میتوانید استفاده کنید.
در متن آموزش روش اتصال کامل توضیح داده شده است.
عرض سلام و خسته نباشید
میشه در خصوص یک مطلب راهنمایی بفرمایید؟
اگر بخوام یک نمایشگر اضافه کنم و اطلاعات روی نمایشگر نشون داده بشه ، چه نمایشگری باید خریداری کنم و برنامه چه تغییری پیدا میکنه ؟
با سلام
از نمایشگر oled میتوانید استفاده کنید که روش راه اندازی و کدنویسی در لینک زیر قرار گرفته شده است.
لینک خرید نمایشگر oled
لینک آموزش oled
با سلام
ببخشید من می خواستم کد رنگ 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 یافت نشد
با سلام
سنسور دارای رابط I2c است. ابتدا با کد i2c Scanner سنسور را بررسی کنید