โปรเจคนี้ทำอะไร?
เราจะสร้าง "ผู้ช่วยกลไก" ที่เล่นเกมไดโนเสาร์ของ Chrome (เปิดจาก chrome://dino) แทนคนได้ — โดยไม่ต้องแตะคีย์บอร์ดเลย ระบบจะมองหน้าจอด้วยเซนเซอร์แสง แล้วสั่งให้แขนกลกดกระโดดเองเมื่อเจอกระบองเพชร
หลักการทำงาน
ลองกดปุ่มนี้เพื่อดูจังหวะกระโดด:
รู้จักอุปกรณ์
ไมโครคอนโทรลเลอร์มี Wi-Fi/Bluetooth อ่านค่าอนาล็อกได้ 0–4095 (12-bit) และสร้างสัญญาณ PWM คุมเซอร์โว
ตัวต้านทานที่ค่าความต้านทานเปลี่ยนตามแสง แสงมาก = ต้านทานน้อย ใช้เป็นเซนเซอร์ตรวจจับกระบองเพชร
เซอร์โวมอเตอร์หมุนได้ 0–180° รับคำสั่งเป็นมุม ใช้ขยับก้านไปกดปุ่ม Spacebar
ต่อร่วมกับ LDR เป็นวงจรแบ่งแรงดัน (voltage divider) เพื่อแปลงแสงเป็นแรงดันที่ ESP32 อ่านได้
การต่อวงจร
| ขาอุปกรณ์ | ต่อกับ ESP32 | หน้าที่ |
|---|---|---|
| เซอร์โว สัญญาณ (ส้ม) | GPIO 13 | ส่งสัญญาณ PWM คุมมุม |
| เซอร์โว + (แดง) | 5V / VIN | ไฟเลี้ยงมอเตอร์ |
| เซอร์โว GND (น้ำตาล) | GND | กราวด์ร่วม |
| จุดกลาง LDR + R10k | GPIO 34 | อ่านค่าแสง (ADC) |
| ปลาย LDR / ปลาย R | 3.3V / GND | วงจรแบ่งแรงดัน |
เซอร์โวกินกระแสสูงตอนออกแรง ควรเลี้ยงไฟจาก 5V/VIN ไม่ใช่ 3.3V และต้องต่อ GND ร่วมกับ ESP32 เสมอ ไม่งั้นบอร์ดอาจรีเซ็ต
โค้ด Arduino (อธิบายทีละส่วน)
ติดตั้งไลบรารี ESP32Servo ก่อน (Library Manager) แล้วอัปโหลดโค้ดนี้
// เรียกใช้ไลบรารีควบคุมเซอร์โวสำหรับ ESP32 #include <ESP32Servo.h> Servo jumpServo; const int LDR_PIN = 34; // ขา ADC อ่านค่าแสง const int SERVO_PIN = 13; // ขาสัญญาณเซอร์โว int threshold = 2000; // ค่ากลาง ปรับจาก Serial Monitor const int REST_ANGLE = 0; // มุมพัก (ไม่กด) const int JUMP_ANGLE = 45; // มุมกด Spacebar void setup() { Serial.begin(115200); jumpServo.attach(SERVO_PIN); jumpServo.write(REST_ANGLE); // เริ่มที่ตำแหน่งพัก } void loop() { int light = analogRead(LDR_PIN); // อ่านค่า 0–4095 Serial.println(light); // ดูค่าเพื่อ calibrate // วัตถุเข้มผ่าน แสงลด ค่าต่ำกว่า threshold = กระโดด if (light < threshold) { jumpServo.write(JUMP_ANGLE); // กด delay(120); jumpServo.write(REST_ANGLE); // ปล่อย delay(80); } }
เปิด Serial Monitor (115200) จดค่าตอน "สว่าง" และตอน "เอามือบัง" แล้วตั้ง threshold ไว้ตรงกลางระหว่างสองค่า ถ้าเดินสายกลับด้าน ค่าจะสูงขึ้นตอนมืด ให้เปลี่ยน < เป็น >
แบบทดสอบท้ายบท
10 ข้อ · เลือกคำตอบที่ถูกที่สุด · มีเฉลยและคำอธิบายทุกข้อ