در این آموزش، ما به بررسی نحوه استفاده از یک مقاومت وابسته به نور (LDR) با میکروکنترلر ESP32 برای اندازهگیری شدت نور خواهیم پرداخت. با خواندن مقاومت LDR، میتوانیم اقداماتی را مانند روشن کردن یک بوق زمانی که سطح نور از یک آستانه خاص فراتر رود، راهاندازی کنیم. این پروژه تعامل بین سطوح نور و قابلیتهای خواندن آنالوگ ESP32 را نشان خواهد داد و به ما این امکان را میدهد که برنامههای واکنشی بر اساس نور محیط ایجاد کنیم. (در ویدیو در ۵:۳۰)
توضیح سختافزار
اجزای اصلی که در این پروژه استفاده خواهیم کرد شامل میکروکنترلر ESP32، یک LDR و یک مقاومت 10 کیلو اهم است. LDR براساس شدت نوری که به سطح آن برخورد میکند، مقاومت خود را تغییر میدهد: نور بیشتر منجر به کاهش مقاومت میشود، در حالی که نور کمتر منجر به افزایش مقاومت میشود. این ویژگی به ما این امکان را میدهد که سطوح نور متغیر را با اتصال LDR در یک پیکربندی تقسیم ولتاژ با مقاومت اندازهگیری کنیم.
میکروکنترلر ESP32 دارای Wi-Fi و بلوتوث داخلی است که آن را برای پروژههای اینترنت اشیاء ایدهآل میسازد. این میکروکنترلر چندین پایه آنالوگ دارد که میتوانند سطوح ولتاژ متغیر را خوانده و ما از آنها برای نظارت بر ولتاژ across LDR استفاده خواهیم کرد. این ولتاژ به یک مقدار آنالوگ تبدیل میشود که ESP32 میتواند پردازش کرده و برای فعال کردن اقداماتی مانند فعال کردن یک زنگ استفاده کند.
جزئیات برگه مشخصات
تولیدکننده
اسپرسف سیستمز
شماره قطعه
ESP32
ولتاژ منطقی/ورودی-خروجی
۳.۳ ولت
ولتاژ تامین
۳.۰ - ۳.۶ ولت
جریان خروجی (به ازای GPIO)
۴۰ میلیآمپر حداکثر
راهنمایی فرکانس PWM
۱ کیلوهرتز - ۴۰ کیلوهرتز
آستانههای منطقی ورودی
بالا: ۲.۰ ولت حداقل، پایین: ۰.۸ ولت حداکثر
افت ولتاژ / RDS(on)اشباع
۰.۳ ولت حداکثر
محدودیتهای حرارتی
-40 درجه سانتیگراد تا 125 درجه سانتیگراد
بسته
QFN48
یادداشتها / انواع
از پروتکلهای مختلف Wi-Fi و بلوتوث پشتیبانی میکند
از یک مقاومت ۱۰ کیلو اهمی به صورت سری با LDR برای تقسیم ولتاژ استفاده کنید.
اطمینان حاصل کنید که ESP32 با ولتاژ ۳.۳ ولت تغذیه میشود تا از آسیب جلوگیری شود.
LDR و مقاومت را به درستی به هم متصل کنید تا شدت نور را اندازهگیری کنید.
در صورت نیاز برای تثبیت منبع تغذیه از خازن برای جداسازی استفاده کنید.
مقادیر خواندن آنالوگ را بررسی کنید تا اطمینان حاصل شود که در محدودههای مورد انتظار قرار دارند.
دستورالعملهای سیمکشی
ESP32-22_light_sensor-wiring
برای اتصال LDR و مقاومت به ESP32، ابتدا یک سر LDR را به پایه توان 3.3 ولت روی ESP32 وصل کنید. سر دیگر LDR باید به یک سر مقاومت 10 کیلو اهم متصل شود. سر دیگر مقاومت را به زمین وصل کنید.
سپس یک سیم جامپر از نقطه اتصال بین LDR و مقاومت به پایه متصل کنید.35در ESP32. این تنظیمات یک تقسیمکننده ولتاژ ایجاد میکند تا ESP32 بتواند ولتاژ متغیر را بر اساس شدت نوری که به LDR میتابد، بخواند. اطمینان حاصل کنید که تمام اتصالات محکم بوده و LDR در جایی قرار دارد که بتواند تغییرات نور را به دقت حس کند.
مثالهای شِفر (کود) و راهنما
در شِفر (کود)، با راهاندازی ارتباط سریال برای نظارت بر خوانشهای LDR شروع میکنیم. شناسه کلیدی در اینجا استanalogValue، که خوانش را از پایه ذخیره میکند35.
void setup() {
Serial.begin(115200);
}
void loop() {
int analogValue = analogRead(35);
Serial.printf("ADC analog value = %d\n",analogValue);
delay(100);
}
این قطعه شِفر (کود) مانیتور سری را با نرخ baud 115200 راهاندازی کرده و به طور مداوم مقدار آنالوگ را از پایه میخواند.35این مقدار در نمایشگر مسلسل چاپ میشود و به ما امکان میدهد تا مشاهده کنیم که چگونه با تغییر سطوح نور تغییر میکند.
زمانی که شدت نور تغییر میکند، مقاومت LDR تغییر میکند و از این رو ولتاژی که توسط ESP32 خوانده میشود نیز تغییر میکند، که شرایط نوری را منعکس میکند (در ویدیو در ۱۲:۴۵).
نمایش / چه چیزی را انتظار داشته باشیم
وقتی برنامه را اجرا میکنید و نمایشگر مسلسل را مشاهده میکنید، باید ببینید کهADC analog valueبسته به شرایط نوری محیط نوسان میکند. زمانی که LDR را بپوشانید، ارزش باید افزایش یابد که نشاندهنده مقاومت بالاتر است، در حالی که قرار دادن آن در معرض نور شدید باید به طور قابل توجهی ارزش را کاهش دهد. این رفتار میتواند برای راهاندازی یک زنگ یا هر عمل دیگر بر اساس آستانههای از پیش تعیین شده استفاده شود.
اگر خوانشها تغییر نکنند، به بررسی مشکلات سیمکشی بپردازید، اطمینان حاصل کنید که LDR در حالت شناور نیست و تأیید کنید که ESP32 به درستی تغذیه میشود. این به جلوگیری از مشکلات رایج کمک میکند و از عملکرد روان اطمینان حاصل میکند (در ویدیو در ۱۵:۳۰).