آردوینو آموزش آردوینو برد ESP8266 برد ویموس Wemos دسته‌بندی نمایشگر OLED

پروژه تشخیص میزان شدت RGB ،lux و گرمای رنگ با سنسور TC34725

نوشته شده توسط CiferTech

سنسور های تشخیص رنگ از سنسور های جالب و کارآمدی هستند که توانایی تشخیص مقادیر rgb  که در واقع سه رنگ اصلی را در جسم مدنظر هستند را به ما نمایش می‌دهند، که در نهایت قادر خواهیم بود پس از بدست آوردن کد رنگ اقدام به شبیه سازی رنگ مدنظر کنیم، همچنین پارامتر های دیگری نیز وجود دارند که به شبیه سازی رنگ مد نظر کمک می‌کند مانند Lux و color temp که در این پروژه این مقادیر را نیز اندازه‌گیری و نمایش خواهیم داد. در این پروژه سنسور با تاباندن نور سفید به جسم و سپس اقدام به ثبت رنگ منعکس شده می کند. همچنین می تواند شدت انعکاس (روشنایی) را ثبت کند. از طریق فیلترهای رنگ قرمز، سبز و آبی، فوتودیود مقدار نور را به جریان تبدیل می کند. مبدل سپس جریان را به ولتاژی تبدیل می کند که برایمیکروکنترلر ما مقابل فهم باشد. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 

تشخیص شدت نور با سنسور TC34725 - دیجی اسپارک

 


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


ماژول TCS3472 مقادیر دیجیتالی سنجش شده نور قرمز، سبز، آبی (RGB) و روشنایی را در اختیار ما قرار می‌دهد. یک فیلتر مسدودکننده IR، روی تراشه قرار داده شده و در ناحیه فوتودیود های حسگر رنگ مونتاژ شده است ،IR میزان طیفی از نور ورودی به حداقل می رساند و اجازه می دهد تا اندازه گیری رنگ به دقت انجام شود. حساسیت بالا، دامنه دینامیکی گسترده و فیلتر مسدود کننده TC34725 ،IR را به یک راه حل ایده آل برای حسگر رنگ برای استفاده در شرایط نوری مختلف تبدیل کرده است. این داده ها از طریق I2C به میزبان منتقل می شوند.

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

 

سنسور رنگی TC34725 طیف گسترده ای از گاربردها از جمله کنترل نور پس زمینه RGB LED را دارد. روشنایی، محصولات بهداشتی، کنترل فرآیندهای صنعتی و تجهیزات تشخیص پزشکی. علاوه بر این فیلتر مسدودکننده TCS3472 ،IR را قادر به سنجش نور محیط (ALS) می کند. سنجش نور محیط به طور گسترده ای انجام می شود و مورد استفاده در محصولات مبتنی بر صفحه نمایش مانند تلفن های همراه، نوت بوک ها و تلویزیون ها برای درک فضای رنگی اطراف و روشنایی صفحه نمایش خودکار که برای صرفه جویی در مصرف انرژی استفاده می‌شود.

 


 برد Wemos ویموس


برد Wemos یکی از پرطرافدار ترین برد هایی است که در زمینه iot مورد استفاده قرار میگیرد، یکی از مزیت های این برد نسبت به برد هایی مانند Node MCU اندازه کوچک آن می باشد تراشه وای فای مورد استفاده در این برد ESP8266 می باشد. از دیگر مزیت های این برد وجود شیلد های مختلفی برای این برد می باشد، که انجام هر پروژه ای را برای کاربر بسیار آسان و لذت بخش می کند، شیلد هایی از جمله شیلد باتری، multi sensor ، DHT22 ، رله ، oled تعداد بسیار زیادی شیلد برای این برد توسعه داده شده که در نتیجه تجربه خوبی از iot برای شما به جا خواهد گذاشت.

 


ماژول نمایشگر Oled SSD1306


معمولا در پروژه های اینترنت اشیا و دیگر پروژه های امبدد از برای نمایش متن و مقادیر مختلف از نمایشگر های Oled استفاده می شود، این ماژول ها بدر انواع مختلق بسته به نوع درایور اندازه یافت می شوند که یکی از پرطرفدار ترین آن ها SSD1306 می باشد، این نوع از Oled ها معمولا در اندازه های ۰٫۹۶ و ۱٫۳ اینچ ساخته می شوند همچنین پروتکل ارتباطی Oled ها I2C می باشد. صفحه نمایش دیود ساطع کننده نور (OLED) که ما در این آموزش استفاده خواهیم کرد مدل SSD1306 است، یک صفحه نمایش تک رنگ، ۰٫۹۶ اینچی با ۱۲۸ × ۶۴ پیکسل همانطور که در شکل زیر نشان داده شده است. نمایشگر OLED نیازی به نور پس زمینه ندارد، که نتیجه آن ایجاد تضاد بسیار خوب در محیط های تاریک است. همچنین پیکسل های آن فقط هنگام روشن بودن انرژی مصرف می کنند، بنابراین صفحه نمایش OLED در مقایسه با سایر نمایشگرها، مصرف برق کمتری دارد.

 


توضیح تکمیلی تشخیص مقادیر رنگی


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

 


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


  1. سنسور تشخیص رنگ دقیق RGB با تراشه TCS34725
  2. برد Nodemcu برپایه ESP8266
  3. نمایشگر Oled 0.96
  4. برد wemos

Detects RGB, lux and color temperature with TC34725

 


نصب و راه‌اندازی کتابخانه


در این آموزش برای راه‌اندازی اولیه و دریافت مقادیر مورد نیاز از کتابخانه Adafruit TCS34725 استفاده خواهیم کرد که به در روند اجرای این پروژه و کار با چنین سنسور هایی بسیار کمک خواهد کرد. در این مرحله مطابق مراحل زیر برای نصب اولیه کتابخانه پیش بروید. ابتدا در نرم افزار Arduino IDE اقدام به نصب کتابخانه مرجع سنسور های Adafruit TCS34725 می کنیم. مراحل زیر را دنبال کنید:

  1. این مسیر را دنبال کنید Sketch Include Library > Manage Libraries
  2. کلمه Adafruit TCS34725 را جستجو کنید.
  3. کتابخانه را نصب کنید.

 


اتصالات و راه‌اندازی


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

اتصالات سنسور TC34725 به برد ویموس D1 Mini - دیجی اسپارک

 

  • شماتیک اتصالات برد wemos و tc34725

شماتیک اتصالات سنسور TC34725 به برد Wemos D1 mini - دیجی اسپارک

 

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

#include <Wire.h>  //فراخوانی کتابخانه ها
#include "Adafruit_TCS34725.h"
 
/* مقداردهی اولیه به سنسور تشخیص رنگ (int time = 2.4ms, gain = 1x) */
// Adafruit_TCS34725 tcs = Adafruit_TCS34725();
 
/* مقدار دهی با زمان خاص تنظیم  و مقادیر بیشتر */
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 your 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(" ");
}

 

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

Color Temp: 4554 K – Lux: 379 – R: 1122 G: 831 B: 776 C: 1429
Color Temp: 3173 K – Lux: 181 – R: 475 G: 339 B: 272 C: 707
Color Temp: 3425 K – Lux: 224 – R: 604 G: 435 B: 364 C: 868
Color Temp: 2833 K – Lux: 1497 – R: 2983 G: 2240 B: 1461 C: 5723
Color Temp: 5847 K – Lux: 109 – R: 4109 G: 1327 B: 890 C: 5814
Color Temp: 2767 K – Lux: 460 – R: 4468 G: 1703 B: 1062 C: 6734
Color Temp: 4381 K – Lux: 463 – R: 1379 G: 1012 B: 938 C: 1789
Color Temp: 4276 K – Lux: 588 – R: 1464 G: 1136 B: 997 C: 2153
Color Temp: 3952 K – Lux: 646 – R: 1424 G: 1135 B: 933 C: 2350
Color Temp: 3528 K – Lux: 835 – R: 1713 G: 1362 B: 1036 C: 310

 

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

اتصالات ماژول OLED با رابط I2C به برد Wemos D1 Mini - دیجی اسپارک

 

  • شماتیک اتصالات همراه با نمایشگر oled

setting up TC34725 with oled 0.96

 

#include <SPI.h>    //فراخوانی کتابخانه ها
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "Adafruit_TCS34725.h"

/* مقدار دهی اولیه به نمایشگر */
Adafruit_SSD1306 display = Adafruit_SSD1306(128, 32, &Wire);

/* مقدار دهی با زمان خاص تنظیم  و مقادیر بیشتر */
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_700MS, TCS34725_GAIN_1X);


void setup() {
  /* آدرس دهی به نمایشگر */
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
tcs.begin();


/* پاک گردن بافر Oled */
  display.clearDisplay();
  display.display();


// در این مرحله سنسور آماده خواندن مقادیر است 
}

void loop() {

  uint16_t r, g, b, c, colorTemp, lux;   //ذخیره مقادیر با نام های دلخواه
  
  tcs.getRawData(&r, &g, &b, &c);
  // colorTemp = tcs.calculateColorTemperature(r, g, b);
  colorTemp = tcs.calculateColorTemperature_dn40(r, g, b, c);
  lux = tcs.calculateLux(r, g, b);



  display.setTextSize(1);         // پیش تنظیمات نمایش متن 
  display.setTextColor(SSD1306_WHITE);
 
  display.drawRect(0, 0, 69, 27, SSD1306_WHITE);
  display.display(); 
  
  display.setCursor(2,2);         // چاپ مقادیر بدست آمده 
  display.print(" Red  :"); 
  display.println(r, DEC);
  display.print(" Green:");
  display.println(g, DEC);
  display.print(" Blue :");
  display.println(b, DEC);
  
  display.setCursor(75,5);
  display.print("C.T:");
  display.println(colorTemp, DEC);

  display.setCursor(75,15);
  display.print("Lux:");
  display.println(lux, DEC);
  

  display.display();
  display.clearDisplay();

  delay(50);

}

 


جمع بندی


در این آموزش به کمک دو ماژول کاربردی یعنی نمایشگر Oled و سنسور TC34725 که وظیفه تشخیص رنگ و مقادیری از جمله Color Temp و همچنین روشنایی رنگ را دارد، اقدام به انجام یک پروژه با هدف اندازه‌گیری و نمایش مقادیر ذکر شده در نمایشگر Oled کنیم، برد راه‌اندازی که در این پروژه استفاده شد، برد Wemos با تراشه وای‌فای ESP8266 بود که در آموزش های آینده قادر خواهیم بود به این پروژه قابلیت وای‌فای را نیز اضافه کنیم.

setting up TC34725 with oled 0.96

 

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

 

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

 

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

CiferTech

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

۲ دیدگاه