ค้นหาโค้ด

ESP32 บทเรียน 22/55 - รับรู้แสงโดยใช้ LED Arduino | ชุดเรียนรู้ IoT ESP32 ของ SunFounder

ESP32 บทเรียน 22/55 - รับรู้แสงโดยใช้ LED Arduino | ชุดเรียนรู้ IoT ESP32 ของ SunFounder

ในบทช่วยสอนนี้ เราจะสำรวจวิธีการใช้ตัวต้านทานไวแสง (LDR) ร่วมกับไมโครคอนโทรลเลอร์ ESP32 เพื่อวัดความเข้มของแสง โดยการอ่านค่าความต้านทานของ LDR เราสามารถกระตุ้นการทำงานต่างๆ เช่น การเปิดออดเมื่อระดับแสงเกินเกณฑ์ที่กำหนด โปรเจกต์นี้จะสาธิตปฏิสัมพันธ์ระหว่างระดับแสงกับความสามารถในการอ่านค่าแอนะล็อกของ ESP32 ทำให้เราสามารถสร้างแอปพลิเคชันที่ตอบสนองตามแสงโดยรอบได้ (ในวิดีโอที่ 5:30)

อธิบายฮาร์ดแวร์

ส่วนประกอบหลักที่เราจะใช้ในโปรเจกต์นี้ประกอบด้วยไมโครคอนโทรลเลอร์ ESP32, LDR และตัวต้านทาน 10 kΩ LDR จะเปลี่ยนค่าความต้านทานตามความเข้มของแสงที่ตกกระทบพื้นผิว: แสงมากขึ้นส่งผลให้ความต้านทานลดลง ในขณะที่แสงน้อยลงส่งผลให้ความต้านทานสูงขึ้น คุณสมบัตินี้ทำให้เราสามารถวัดระดับแสงที่แปรผันได้โดยการเชื่อมต่อ LDR ในรูปแบบวงจรแบ่งแรงดันร่วมกับตัวต้านทาน

ไมโครคอนโทรลเลอร์ ESP32 มี Wi-Fi และบลูทูธในตัว ทำให้เหมาะสำหรับโปรเจกต์ IoT มีพินแอนะล็อกหลายตัวที่สามารถอ่านระดับแรงดันไฟฟ้าที่แปรผันได้ ซึ่งเราจะใช้เพื่อตรวจสอบแรงดันไฟฟ้าคร่อม LDR แรงดันไฟฟ้านี้จะถูกแปลงเป็นค่าแอนะล็อกที่ ESP32 สามารถประมวลผลและใช้เพื่อกระตุ้นการทำงานต่างๆ เช่น การเปิดออด

รายละเอียดจากดาต้าชีต

ผู้ผลิตEspressif Systems
หมายเลขชิ้นส่วนESP32
แรงดันไฟฟ้าลอจิก/IO3.3 V
แรงดันไฟฟ้าจ่าย3.0 - 3.6 V
กระแสเอาต์พุต (ต่อ GPIO)สูงสุด 40 mA
คำแนะนำความถี่ PWM1 kHz - 40 kHz
เกณฑ์ลอจิกอินพุตสูง: ขั้นต่ำ 2.0 V, ต่ำ: สูงสุด 0.8 V
แรงดันตก / RDS(on) / อิ่มตัวสูงสุด 0.3 V
ขีดจำกัดความร้อน-40 °C ถึง 125 °C
แพ็คเกจQFN48
หมายเหตุ / รุ่นต่างๆรองรับโปรโตคอล Wi-Fi และบลูทูธหลายรูปแบบ

  • ใช้ตัวต้านทาน 10 kΩ ต่ออนุกรมกับ LDR เพื่อแบ่งแรงดันไฟฟ้า
  • ตรวจสอบให้แน่ใจว่า ESP32 ได้รับไฟ 3.3 V เพื่อหลีกเลี่ยงความเสียหาย
  • เชื่อมต่อ LDR และตัวต้านทานอย่างถูกต้องเพื่อวัดความเข้มของแสง
  • ใช้ตัวเก็บประจุสำหรับแยกสัญญาณหากจำเป็นเพื่อทำให้แหล่งจ่ายไฟมีเสถียรภาพ
  • ตรวจสอบค่าแอนะล็อกที่อ่านได้เพื่อให้แน่ใจว่าอยู่ในช่วงที่คาดหวัง

คำแนะนำการเดินสายไฟ

ESP32-22_light_sensor-wiring

ในการเดินสายไฟ LDR และตัวต้านทานเข้ากับ ESP32 ให้เริ่มต้นโดยเชื่อมต่อขั้วหนึ่งของ LDR เข้ากับพินจ่ายไฟ 3.3 V บน ESP32 ขั้วอีกด้านของ LDR ควรเชื่อมต่อกับขั้วหนึ่งของตัวต้านทาน 10 kΩ จากนั้นเชื่อมต่อขั้วอีกด้านของตัวต้านทานเข้ากับกราวด์

ถัดไป เชื่อมต่อสายจัมเปอร์จากจุดเชื่อมต่อระหว่าง 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);
}

โค้ดส่วนนี้เริ่มต้นจอซีเรียลที่อัตราบอด 115200 และอ่านค่าแอนะล็อกจากพิน 35 อย่างต่อเนื่อง ค่าที่ได้จะถูกพิมพ์ไปยังจอซีเรียล ทำให้เราสามารถสังเกตว่าค่าเปลี่ยนแปลงอย่างไรตามระดับแสงที่แปรผัน

เมื่อความเข้มของแสงเปลี่ยนแปลง ความต้านทานของ LDR จะแปรผัน และแรงดันไฟฟ้าที่ ESP32 อ่านได้ก็จะเปลี่ยนแปลงตามไปด้วย ซึ่งสะท้อนสภาพแสงโดยรอบ (ในวิดีโอที่ 12:45)

การสาธิต / สิ่งที่คาดหวัง

เมื่อคุณรันโปรแกรมและสังเกตจอซีเรียล คุณควรเห็น ADC analog value ผันผวนตามสภาพแสงโดยรอบ เมื่อคุณบัง LDR ค่าควรเพิ่มขึ้น ซึ่งบ่งบอกถึงความต้านทานที่สูงขึ้น ในขณะที่การเปิดรับแสงจ้าควรทำให้ค่าลดลงอย่างมีนัยสำคัญ พฤติกรรมนี้สามารถใช้เพื่อกระตุ้นออดหรือการทำงานอื่นๆ ตามเกณฑ์ที่กำหนดไว้ล่วงหน้า

หากค่าที่อ่านได้ไม่เปลี่ยนแปลงตามที่คาดหวัง ให้ตรวจสอบปัญหาการเดินสายไฟ ตรวจสอบให้แน่ใจว่า LDR ไม่ลอย และยืนยันว่า ESP32 ได้รับไฟอย่างถูกต้อง สิ่งนี้จะช่วยป้องกันข้อผิดพลาดทั่วไปและทำให้การทำงานราบรื่น (ในวิดีโอที่ 15:30)

ไทม์สแตมป์ในวิดีโอ

  • 00:00 เริ่มต้น
  • 1:48 แนะนำ LDR
  • 8:33 อธิบายการเดินสายไฟ
  • 11:07 อธิบายโค้ด Arduino
  • 13:07 การเลือกบอร์ด ESP32 และพอร์ต COM ใน Arduino IDE
  • 14:49 สาธิตการอ่านค่า
  • 17:24 ทำความเข้าใจค่าเวลากลางวันและกลางคืน
  • 18:47 ค่า DAC และการอ่านแรงดันไฟฟ้า

ภาพ

ESP32-22_light_sensor
ESP32-22_light_sensor
ESP32-22_light_sensor-wiring
ESP32-22_light_sensor-wiring
821-ESP32 Tutorial 22/55- Arduino code for Light dependant resistor
ภาษา: C++

void setup() {
  // initialize serial communication at 115200 bits per second:
  Serial.begin(115200);

}

void loop() {
  // read the analog value
  int analogValue = analogRead(35);
  
  // print out the values you read:
  Serial.printf("ADC analog value = %d\n",analogValue);
  
  delay(100);  // delay in between reads for clear read from serial
}

แหล่งข้อมูลและเอกสารอ้างอิง

ไฟล์📁

ไม่มีไฟล์ที่พร้อมใช้งาน