ใบงาน · หุ่นยนต์เล่นเกมไดโนเสาร์อัตโนมัติด้วย ESP32

DINO AUTO-PLAYER

โรงเรียนธัญรัตน์  ·  กลุ่มสาระการเรียนรู้วิทยาศาสตร์และเทคโนโลยี
หน่วยการเรียนรู้: ระบบสมองกลฝังตัว & IoT (Sensor + Actuator)
ใบงานที่ ___ เวลา 2 คาบ
คะแนนเต็ม 20
ชื่อ–สกุล
ชั้น ม. ____
เลขที่ ____
กลุ่มที่ ____
วันที่

จุดประสงค์การเรียนรู้

  1. อธิบายหลักการทำงานของระบบตรวจจับด้วยเซนเซอร์แสง (LDR) และการควบคุมเซอร์โวมอเตอร์ด้วย ESP32 ได้
  2. ต่อวงจร ESP32 เข้ากับ LDR และเซอร์โวมอเตอร์ตามผังวงจรได้ถูกต้อง
  3. เขียนและปรับ (calibrate) โปรแกรมให้หุ่นยนต์กดปุ่มกระโดดได้อัตโนมัติเมื่อมีสิ่งกีดขวางผ่านหน้าจอ
  4. ทำงานเป็นทีม บันทึกผลการทดลอง และสรุปแนวทางปรับปรุงชิ้นงานได้

หลักการทำงานโดยย่อ

เกมไดโนเสาร์ของ Chrome มีพื้นหลังสว่างและสิ่งกีดขวาง (กระบองเพชร) เป็นสีเข้ม เมื่อนำ LDR ไปติดหน้าจอตรงเลนที่กระบองเพชรวิ่งผ่าน แสงที่ตกกระทบ LDR จะลดลงทันทีที่วัตถุสีเข้มผ่าน ESP32 อ่านค่าการเปลี่ยนแปลงนี้แล้วสั่งให้ เซอร์โวมอเตอร์ ขยับไปกดปุ่ม Spacebar ให้ไดโนกระโดดข้าม แล้วดีดกลับตำแหน่งพัก

สายสัญญาณ:   แสง → LDR → (แรงดันเปลี่ยน) → ADC ของ ESP32 → เงื่อนไข if → เซอร์โวกดปุ่ม → ไดโนกระโดด

วัสดุอุปกรณ์ (ทำเครื่องหมาย ✓ เมื่อตรวจครบ)

ผังการต่อวงจร (เติมขาที่ใช้จริง)

อุปกรณ์ / ขาต่อเข้ากับ ESP32หมายเหตุ
เซอร์โว – สายสัญญาณ (ส้ม/เหลือง)GPIO ______ขาสัญญาณ PWM
เซอร์โว – สายไฟ + (แดง)______5V / VIN
เซอร์โว – สายกราวด์ (น้ำตาล)GNDต่อกราวด์ร่วม
จุดกลางวงจรแบ่งแรงดัน LDRGPIO ______ (ขา ADC)อ่านค่าแสง 0–4095
LDR ปลายหนึ่ง / ตัวต้านทาน 10kΩ3.3V / GNDต่อแบบ voltage divider

ขั้นตอนการทำ

  1. ต่อวงจรตามผังในข้อ 04 ตรวจสอบกราวด์ร่วมให้เรียบร้อย
  2. อัปโหลดโค้ดที่ครูให้ (หรือจากใบความรู้บนเว็บ) ลง ESP32
  3. เปิด Serial Monitor (115200) ดูค่าที่ LDR อ่านได้ ขณะไม่มีวัตถุ และขณะเอามือ/วัตถุบัง
  4. นำค่าที่ได้มากำหนด threshold ให้อยู่ระหว่างค่าสว่างกับค่ามืด
  5. เปิดเกมไดโน ติด LDR ที่หน้าจอ วางก้านเซอร์โวให้กดปุ่ม Spacebar ได้พอดี
  6. ทดสอบ เริ่มเกม แล้วปรับตำแหน่ง LDR / ค่า threshold / มุมเซอร์โว จนกระโดดได้แม่นยำ

ตารางบันทึกผลการทดลอง (Calibration)

ครั้งที่ ค่า LDR (สว่าง) ค่า LDR (มืด) threshold ที่ตั้ง มุมกด (°) กระโดดสำเร็จ /10
1
2
3

คำถามท้ายใบงาน

1) เพราะเหตุใดค่าที่ LDR อ่านได้จึงเปลี่ยนเมื่อกระบองเพชรวิ่งผ่าน? อธิบายด้วยหลักการของแสงและความต้านทาน
2) ถ้าตั้ง threshold สูงเกินไป หรือต่ำเกินไป จะเกิดผลอย่างไรกับการกระโดด? (ตอบทั้งสองกรณี)
3) เซอร์โวมอเตอร์รับสัญญาณแบบใดจาก ESP32 และเหตุใดจึงต้องต่อ "กราวด์ร่วม" กัน?
4) เกมจะเร็วขึ้นเรื่อย ๆ ทีมของนักเรียนแก้ปัญหาให้หุ่นยนต์ยังกระโดดทันได้อย่างไร? เสนออย่างน้อย 1 วิธี

ความท้าทายต่อยอด (ทำเมื่อเสร็จหลัก)

เกณฑ์การประเมิน (20 คะแนน)

รายการประเมิน432ได้
ต่อวงจรถูกต้อง เรียบร้อย ปลอดภัย
โปรแกรม/การ calibrate ทำงานได้จริง
ความแม่นยำในการกระโดด (จากตารางผล)
การตอบคำถามท้ายใบงาน
การทำงานเป็นทีม & ความคิดต่อยอด