DINO AUTO-PLAYER
โรงเรียนธัญรัตน์ · กลุ่มสาระการเรียนรู้วิทยาศาสตร์และเทคโนโลยี
หน่วยการเรียนรู้: ระบบสมองกลฝังตัว & IoT (Sensor + Actuator)
ใบงานที่ ___
เวลา 2 คาบ
คะแนนเต็ม 20
ชื่อ–สกุล
ชั้น ม. ____
เลขที่ ____
กลุ่มที่ ____
วันที่
จุดประสงค์การเรียนรู้
- อธิบายหลักการทำงานของระบบตรวจจับด้วยเซนเซอร์แสง (LDR) และการควบคุมเซอร์โวมอเตอร์ด้วย ESP32 ได้
- ต่อวงจร ESP32 เข้ากับ LDR และเซอร์โวมอเตอร์ตามผังวงจรได้ถูกต้อง
- เขียนและปรับ (calibrate) โปรแกรมให้หุ่นยนต์กดปุ่มกระโดดได้อัตโนมัติเมื่อมีสิ่งกีดขวางผ่านหน้าจอ
- ทำงานเป็นทีม บันทึกผลการทดลอง และสรุปแนวทางปรับปรุงชิ้นงานได้
หลักการทำงานโดยย่อ
เกมไดโนเสาร์ของ Chrome มีพื้นหลังสว่างและสิ่งกีดขวาง (กระบองเพชร) เป็นสีเข้ม เมื่อนำ LDR ไปติดหน้าจอตรงเลนที่กระบองเพชรวิ่งผ่าน แสงที่ตกกระทบ LDR จะลดลงทันทีที่วัตถุสีเข้มผ่าน ESP32 อ่านค่าการเปลี่ยนแปลงนี้แล้วสั่งให้ เซอร์โวมอเตอร์ ขยับไปกดปุ่ม Spacebar ให้ไดโนกระโดดข้าม แล้วดีดกลับตำแหน่งพัก
สายสัญญาณ: แสง → LDR → (แรงดันเปลี่ยน) → ADC ของ ESP32 → เงื่อนไข if → เซอร์โวกดปุ่ม → ไดโนกระโดด
วัสดุอุปกรณ์ (ทำเครื่องหมาย ✓ เมื่อตรวจครบ)
- บอร์ด ESP32 DevKit + สาย USB 1 ชุด
- เซอร์โวมอเตอร์ SG90 1 ตัว
- LDR (ตัวต้านทานแสง) 1 ตัว + ตัวต้านทาน 10 kΩ 1 ตัว
- โพรโทบอร์ด และสายจัมเปอร์
- เทปกาว / ก้านสำหรับให้เซอร์โวกดปุ่ม Spacebar
- คอมพิวเตอร์ที่เปิดเกมไดโน (พิมพ์
chrome://dino) และติดตั้ง Arduino IDE
ผังการต่อวงจร (เติมขาที่ใช้จริง)
| อุปกรณ์ / ขา | ต่อเข้ากับ ESP32 | หมายเหตุ |
| เซอร์โว – สายสัญญาณ (ส้ม/เหลือง) | GPIO ______ | ขาสัญญาณ PWM |
| เซอร์โว – สายไฟ + (แดง) | ______ | 5V / VIN |
| เซอร์โว – สายกราวด์ (น้ำตาล) | GND | ต่อกราวด์ร่วม |
| จุดกลางวงจรแบ่งแรงดัน LDR | GPIO ______ (ขา ADC) | อ่านค่าแสง 0–4095 |
| LDR ปลายหนึ่ง / ตัวต้านทาน 10kΩ | 3.3V / GND | ต่อแบบ voltage divider |
ขั้นตอนการทำ
- ต่อวงจรตามผังในข้อ 04 ตรวจสอบกราวด์ร่วมให้เรียบร้อย
- อัปโหลดโค้ดที่ครูให้ (หรือจากใบความรู้บนเว็บ) ลง ESP32
- เปิด Serial Monitor (115200) ดูค่าที่ LDR อ่านได้ ขณะไม่มีวัตถุ และขณะเอามือ/วัตถุบัง
- นำค่าที่ได้มากำหนด
threshold ให้อยู่ระหว่างค่าสว่างกับค่ามืด
- เปิดเกมไดโน ติด LDR ที่หน้าจอ วางก้านเซอร์โวให้กดปุ่ม Spacebar ได้พอดี
- ทดสอบ เริ่มเกม แล้วปรับตำแหน่ง LDR / ค่า threshold / มุมเซอร์โว จนกระโดดได้แม่นยำ
ตารางบันทึกผลการทดลอง (Calibration)
| ครั้งที่ |
ค่า LDR (สว่าง) |
ค่า LDR (มืด) |
threshold ที่ตั้ง |
มุมกด (°) |
กระโดดสำเร็จ /10 |
| 1 | | | | | |
| 2 | | | | | |
| 3 | | | | | |
คำถามท้ายใบงาน
1) เพราะเหตุใดค่าที่ LDR อ่านได้จึงเปลี่ยนเมื่อกระบองเพชรวิ่งผ่าน? อธิบายด้วยหลักการของแสงและความต้านทาน
2) ถ้าตั้ง threshold สูงเกินไป หรือต่ำเกินไป จะเกิดผลอย่างไรกับการกระโดด? (ตอบทั้งสองกรณี)
3) เซอร์โวมอเตอร์รับสัญญาณแบบใดจาก ESP32 และเหตุใดจึงต้องต่อ "กราวด์ร่วม" กัน?
4) เกมจะเร็วขึ้นเรื่อย ๆ ทีมของนักเรียนแก้ปัญหาให้หุ่นยนต์ยังกระโดดทันได้อย่างไร? เสนออย่างน้อย 1 วิธี
ความท้าทายต่อยอด (ทำเมื่อเสร็จหลัก)
- เพิ่ม LDR ตัวที่สอง เพื่อตรวจจับนกที่บินสูง แล้วสั่ง "ก้มหลบ" แทนการกระโดด
- ปรับ delay การกดให้สั้นลง แล้วทดสอบว่าทำสถิติ (High Score) ได้สูงสุดเท่าใด
เกณฑ์การประเมิน (20 คะแนน)
| รายการประเมิน | 4 | 3 | 2 | ได้ |
| ต่อวงจรถูกต้อง เรียบร้อย ปลอดภัย | | | | |
| โปรแกรม/การ calibrate ทำงานได้จริง | | | | |
| ความแม่นยำในการกระโดด (จากตารางผล) | | | | |
| การตอบคำถามท้ายใบงาน | | | | |
| การทำงานเป็นทีม & ความคิดต่อยอด | | | | |