ویژگی های ماژول سنسور تشخیص مجاورت و نور محیط APDS-9930
این ماژول متشکل از سنسور نور محیط، سنسور IR و مجاورت میباشد. تشخیص مجاورت این سنسور تا فاصله 100 میلیمتر است. سنسور تشخیص نور محیط APDS-9930، نور محیط اطراف را اندازهگیری میکند. این سنسور در تاریکی با مقدار روشنایی 0.01 لوکس (lux) نیز قابلیت تشخیص دارد. همچنین از آن میتوان در پشت شیشهی تیره مانند صفحهی موبایل استفاده کرد. برای مثال خاموش شدن صفحه موبایل هنگام نزدیک کردن آن به گوش، از موارد اسفاده از این سنسور است.
از کاربردهای این سنسور میتوان به تنظیم نور صفحه موبایل و پاسخ نوری مناسب برای کاربردهای گوناگون نام برد.
نکته
ماژول سنسور تشخیص مجاورت و نور محیط APDS-9930، فقط در ولتاژ 2.4 تا 3.6 ولت عمل میکند.
دیتاشیت آی سی APDS-9930 را می توانید از اینجا دانلود کنید.
APDS-9930 Gesture Sensor Datasheet
معرفی پایه های (Pinout) ماژول سنسور تشخیص مجاورت و نور محیط APDS-9930
ماژول سنسور تشخیص مجاورت و نور محیط APDS-9930 دارای 6 پایه به شرح زیر است:
- VCC: تغذیه ماژول – 2.4 تا 3.6 ولت
- GND: زمین
- VL: توان انتخابی IR LED
- SDA: سیگنال دیتا I2C
- SCL: سیگنال کلاک I2C
- INT: پین اینتراپت
پین اوت (Pinout) این ماژول را می توانید در تصویر زیر مشاهده کنید.
لوازمی که به آن احتیاج دارید
قطعات مورد نیاز
نرم افزارهای مورد نیاز
راه اندازی ماژول سنسور تشخیص مجاورت و نور محیط APDS-9930 با آردوینو
گام اول: سیم بندی
مطابق مدار زیر، سنسور را به آردوینو وصل کنید.
گام دوم: نصب کتابخانه
فایل APDS9930-master را دانلود کرده و در قسمت Library محل نصب نرمافزار آردوینو کپی کنید.
توجه
اگر نیاز به راهنمایی بیشتر در مورد نصب کتابخانه بر روی آردوینو دارید، می توانید به اینجا مراجعه کنید.
گام سوم: کد
کد زیر را روی برد آردوینو آپلود کنید.
/*
APDS-9930-Proximity-And-Ambient-Light
modified on 02 Nov 2020
by Amir Mohammad Shojaee @ Electropeak
Home
Based on Github.com Library Example
*/
#define DUMP_REGS
#include <Wire.h>
#include <APDS9930.h>
// Global Variables
APDS9930 apds = APDS9930();
float ambient_light = 0; // can also be an unsigned long
void setup()
{
// Initialize Serial port
Serial.begin(9600);
Serial.println();
// Initialize APDS-9930 (configure I2C and initial values)
if ( apds.init() )
{
Serial.println(F("APDS-9930 initialization complete"));
}
else
{
Serial.println(F("Something went wrong during APDS-9930 init!"));
}
// Start running the APDS-9930 light sensor (no interrupts)
if ( apds.enableLightSensor(false) )
{
Serial.println(F("Light sensor is now running"));
}
else
{
Serial.println(F("Something went wrong during light sensor init!"));
}
// Wait for initialization and calibration to finish
delay(500);
}
void loop()
{
// Read the light levels (ambient, red, green, blue)
if ( !apds.readAmbientLightLux(ambient_light)) {
Serial.println(F("Error reading light values"));
}
else
{
Serial.print(F("Ambient: "));
Serial.println(ambient_light);
}
// Wait 1 second before next reading
delay(1000);
}
در برنامه فوق از رابط I2C برای برقراری ارتباط با آردوینو استفاده شده است. در ابتدای برنامه کتابخانهها فراخوانی شدهاند. در ادامه نور محیط را اندازهگیری کرده و آن را در Serial Monitor نمایش میدهد.
عکس زیر خروجی Serial Monitor میباشد. ابتدا دست خود را به سمت سنسور میبریم. همانطور که مشاهده میشود نور محیط کاهش مییابد. سپس نور موبایل را به سنسور نزدیک میکنیم. میبینیم که خروجی Serial Monitor به شدت افزایش مییابد.
Comments (4)
سلام
ببخشید من اینو ران میکنم دائم میگه Error reading light values همچی هم چک کردم نمی دونم مشکل چیه؟
سلام.
برنامه i2cscanner رو که میتونید تو قسمت file -> examples -> Wire -> i2c_scanner نرمافزار آردوینو پیدا کنید، اجرا کنید. ببینید که آیا آدرسی بر میگردونه یا خیر. اگر آدرسی برنگشت ممکنه یا سیمهای SCL و SDA رو برعکس زده باشید و یا اینکه ماژول ایراد داشته باشه. اگر آدرس برنگشت سیمهای SDA و SCL رو جا به جا کنید و دوباره تست کنید.
با سلام برای تشخیص مجاورت پشت lcd بزاریم هیچ نوری بهش نرسه میشه ازش استفاده کرد؟
با سلام
این ماژول در شرایطی پشت نمایشگر میذارن که بعد از لایه دیفیوزر قرار داده شده باشد. کاری که تولید کنندگان گوشی میکنند.
برای استفاده در نمایشگر های معمولی که شما میخواهید استفاده کنید. باید خود سنسور بیرون نمایشگر باشد تا دید به فضای روبرو داشته باشد. وگرنه فاصله خود سنسور تا نمایشگر را اندازه گیری میکند.