บทเรียนนี้เป็นส่วนหนึ่งของ: ชุดอุปกรณ์รถยนต์อัจฉริยะ SunFounder Raspberry Pi Pico Pico 4WD
ไฟล์ที่เกี่ยวข้องกับกลุ่มนี้จะแสดงไว้ด้วยกัน ลิงก์ไปยังวิดีโออื่นๆ อยู่ด้านล่างบทความนี้
บทเรียนที่ 7 จาก 10: การติดตามเส้น การตรวจจับขอบหน้าผา การปรับเทียบเซนเซอร์ระดับสีเทา รถ Raspberry Pi Pico
ในบทเรียนที่เจ็ดของคอร์ส Raspberry Pi Pico Smart Car นี้ เราจะสำรวจฟังก์ชันสำคัญของการติดตามเส้นและการตรวจจับขอบหน้าผาโดยใช้โมดูลเซนเซอร์ระดับสีเทา โมดูลนี้ทำหน้าที่เป็น "ดวงตา" ของรถของคุณ ช่วยให้รถสามารถตามเส้นทางที่กำหนดไว้ได้โดยอัตโนมัติและหลีกเลี่ยงการตกจากที่สูง โปรเจกต์นี้สาธิตวิธีการปรับเทียบเซนเซอร์เพื่อการอ่านค่าที่แม่นยำและใช้ตรรกะที่ทำให้รถอยู่บนเส้นทาง พร้อมด้วยฟีเจอร์สนุก ๆ อย่าง "Don't Push Me" ที่จำลองการตรวจจับขอบหน้าผา คู่มือนี้เหมาะสำหรับผู้ที่ต้องการก้าวข้ามการควบคุมระยะไกลพื้นฐานและเข้าสู่โลกของหุ่นยนต์ที่นำทางด้วยเซนเซอร์
เทคโนโลยีนี้มีการประยุกต์ใช้จริงมากมายนอกเหนือจากโปรเจกต์ DIY ที่สนุกสนาน หลักการที่คุณจะได้เรียนรู้ที่นี่เป็นพื้นฐานสำหรับการสร้างระบบอัตโนมัติในโลกจริง นี่คือแนวคิดบางอย่างเพื่อสร้างแรงบันดาลใจให้คุณ:
- หุ่นยนต์จัดส่งอัตโนมัติ: สร้างหุ่นยนต์ขนาดเล็กที่สามารถนำทางในคลังสินค้าหรือพื้นที่สำนักงานโดยการติดตามเส้นที่ทำเครื่องหมายไว้เพื่อจัดส่งสิ่งของ
- หุ่นยนต์แก้เขาวงกตบนโต๊ะ: สร้างหุ่นยนต์ที่สามารถนำทางเขาวงกตที่ซับซ้อนซึ่งวาดด้วยเทปพันสายไฟสีดำ
- หุ่นยนต์รักษาความปลอดภัย: สร้างหุ่นยนต์ลาดตระเวนที่ตามเส้นทางที่กำหนดและใช้การตรวจจับขอบหน้าผาเพื่อหลีกเลี่ยงการตกบันไดหรือพื้นผิวที่สูง
- แพลตฟอร์มการศึกษา: ใช้รถคันนี้เพื่อสอนพื้นฐานของการควบคุม PID การรวมเซนเซอร์ และการนำทางอัตโนมัติ
ฮาร์ดแวร์และส่วนประกอบ
โปรเจกต์นี้ต่อยอดจากชุดรถ SunFounder Raspberry Pi Pico 4WD ส่วนประกอบสำคัญสำหรับบทเรียนนี้คือโมดูลเซนเซอร์ระดับสีเทา ซึ่งจำเป็นทั้งสำหรับการติดตามเส้นและการตรวจจับขอบหน้าผา โมดูลนี้มีเซนเซอร์อิสระสามตัวที่วัดปริมาณแสงที่สะท้อนจากพื้นผิวด้านล่าง ข้อมูลนี้ใช้เพื่อแยกความแตกต่างระหว่างเส้นสีดำ พื้นผิวสีขาว และ "ขอบหน้าผา" หรือพื้นที่เปิดโล่ง ชุดอุปกรณ์เต็มรูปแบบยังรวมถึงโครงรถ Pico มอเตอร์ และชุดแบตเตอรี่เพื่อจ่ายไฟให้กับระบบ
คู่มือการเดินสายไฟ
การเดินสายไฟที่ถูกต้องเป็นขั้นตอนแรกในการทำให้เซนเซอร์ทำงาน โมดูลระดับสีเทาเชื่อมต่อกับ Raspberry Pi Pico โดยใช้สายไฟสี่เส้น การเดินสายไฟไม่ซับซ้อนและมีการสาธิตอย่างชัดเจนในวิดีโอ
นี่คือการกำหนดค่าการเดินสายไฟตามที่แสดงในวิดีโอ (ในวิดีโอที่ 03:01):
- สายสีดำ: เชื่อมต่อกับพิน GND บน Pico
- สายสีแดง: เชื่อมต่อกับพิน 3.3V บน Pico
- สายสีเหลือง (เซนเซอร์ขวา): เชื่อมต่อกับพิน GPIO 28
- สายสีน้ำตาล (เซนเซอร์กลาง): เชื่อมต่อกับพิน GPIO 27
- สายสีขาว/เทา (เซนเซอร์ซ้าย): เชื่อมต่อกับพิน GPIO 26
การปรับเทียบเซนเซอร์ระดับสีเทา
ก่อนที่รถจะสามารถติดตามเส้นได้อย่างน่าเชื่อถือ คุณต้องปรับเทียบเซนเซอร์เพื่อให้เข้าใจค่าการอ่านที่แตกต่างกันสำหรับสีขาว สีดำ และพื้นที่ว่าง นี่เป็นขั้นตอนสำคัญเพื่อให้แน่ใจว่ารถของคุณตัดสินใจได้อย่างถูกต้อง ความไวของเซนเซอร์สามารถปรับได้ด้วยโพเทนชิโอมิเตอร์ขนาดเล็กบนโมดูล
วิดีโอสาธิตกระบวนการปรับเทียบ (ในวิดีโอที่ 04:39) เซนเซอร์ควรอยู่ในตำแหน่งที่ความสูงที่เหมาะสมเหนือพื้นดิน—ประมาณ 11 มิลลิเมตรหรือหนึ่งเซนติเมตร—เพื่อให้ได้ค่าที่ชัดเจน โดยการปรับโพเทนชิโอมิเตอร์และสังเกตค่า คุณจะพบจุดที่เหมาะสมที่สุด เป้าหมายคือการมีความแตกต่างอย่างมีนัยสำคัญระหว่างค่าสำหรับพื้นผิวสีขาว (ซึ่งสะท้อนแสงมาก) และเส้นสีดำ (ซึ่งสะท้อนแสงน้อยมาก)
นี่คือสรุปความหมายของค่าที่อ่านได้:
- พื้นผิวสีขาว: การสะท้อนสูง ส่งผลให้ค่าเซนเซอร์สูง (เช่น ประมาณ 20,000)
- เส้นสีดำ: การสะท้อนต่ำ ส่งผลให้ค่าเซนเซอร์ต่ำ (เช่น ประมาณ 3,000)
- ขอบหน้าผา (พื้นที่กลวง): ไม่มีการสะท้อน ส่งผลให้ค่าเซนเซอร์ต่ำที่สุด (เช่น ประมาณ 1,200)
คำอธิบายโค้ด
เนื่องจากไม่มีโค้ดให้สำหรับบทเรียนนี้ เราจะมุ่งเน้นไปที่ตรรกะเชิงแนวคิดและฟังก์ชันสำคัญจากไลบรารี Robojax ที่ใช้เพื่อทำให้รถทำงาน วิดีโออธิบายฟังก์ชันหลักสองฟังก์ชันที่คุณจะใช้จากไลบรารีที่ให้มา
การทดสอบเซนเซอร์
ขั้นตอนแรกคือการทดสอบเซนเซอร์ของคุณด้วยสคริปต์ง่าย ๆ สคริปต์นี้ใช้ฟังก์ชันที่เรียกว่า get_grayscale_value() เพื่ออ่านค่าดิบจากเซนเซอร์ทั้งสามตัว มันพิมพ์ค่าเหล่านี้ไปยังจอภาพอนุกรมเพื่อให้คุณเห็นว่าค่าเปลี่ยนแปลงอย่างไรเมื่อเซนเซอร์อยู่เหนือพื้นผิวที่แตกต่างกัน ซึ่งมีประโยชน์สำหรับการตรวจสอบการเดินสายไฟและดำเนินการขั้นตอนการปรับเทียบ
# นี่คือตัวอย่างเชิงแนวคิดของฟังก์ชันทดสอบ
from machine import Pin, ADC
import time
# กำหนดพิน ADC สำหรับเซนเซอร์ระดับสีเทา
grayscale_pins = [26, 27, 28]
sensors = [ADC(Pin(pin)) for pin in grayscale_pins]
while True:
# อ่านค่า 16 บิตดิบจากเซนเซอร์
values = [sensor.read_u16() for sensor in sensors]
print("ซ้าย: {} กลาง: {} ขวา: {}".format(values[0], values[1], values[2]))
time.sleep_ms(100)
ตรรกะการติดตามเส้น
สำหรับการติดตามเส้น โค้ดไม่ได้ใช้ค่าอะนาล็อกดิบ แต่จะแปลงเป็นสถานะดิจิทัลอย่างง่าย: 1 หากเซนเซอร์อยู่เหนือเส้นสีดำ และ 0 หากอยู่เหนือพื้นผิวสีขาว ซึ่งจัดการโดยฟังก์ชันที่ส่งคืนรายการของค่าสามค่า (เช่น [0, 1, 0]) จากนั้นลูปควบคุมหลักจะใช้รายการนี้เพื่อกำหนดการทำงานของรถ
ตรรกะนี้มีพื้นฐานมาจากการเปรียบเทียบสถานะของเซนเซอร์กับเงื่อนไขที่กำหนดไว้ล่วงหน้า ตัวอย่างเช่น หากสถานะเป็น [0, 1, 0] แสดงว่ารถอยู่บนเส้นพอดีและควรเคลื่อนที่ไปข้างหน้า หากสถานะเป็น [1, 0, 0] แสดงว่ารถได้เคลื่อนออกไปทางซ้ายและจำเป็นต้องแก้ไขเส้นทางไปทางขวา วิดีโออธิบายเงื่อนไขเหล่านี้อย่างละเอียด (ในวิดีโอที่ 13:05) โดยแสดงให้เห็นว่าชุดค่าผสมต่างๆ ของการอ่านค่าจากเซนเซอร์สอดคล้องกับคำสั่งมอเตอร์ที่แตกต่างกัน เช่น การเลี้ยวซ้าย การเลี้ยวขวา หรือการแก้ไขทิศทางอย่างเฉียบพลัน
# นี่คือตัวอย่างแนวคิดของตรรกะการติดตามเส้น
# สมมติว่า 'status' เป็นลิสต์เช่น [0, 1, 0] จากเซนเซอร์ระดับสีเทา
if status == [0, 1, 0]: # เซนเซอร์กลางอยู่บนเส้น
# เคลื่อนที่ไปข้างหน้า
pass
elif status == [1, 0, 0]: # เซนเซอร์ซ้ายอยู่บนเส้น
# เลี้ยวขวา
pass
elif status == [0, 0, 1]: # เซนเซอร์ขวาอยู่บนเส้น
# เลี้ยวซ้าย
pass
# ... เงื่อนไขอื่นๆ สำหรับการเลี้ยวที่เฉียบพลันมากขึ้น
การสาธิตโครงการจริง
ในการสาธิตในวิดีโอ รถถูกวางบนรางที่พิมพ์ไว้ซึ่งมีเส้นสีดำหนา รถสามารถติดตามเส้นได้สำเร็จ โดยทำการเลี้ยวและแก้ไขทิศทางขณะเคลื่อนที่ไปตามเส้นทาง วิดีโอเน้นปัญหาทั่วไปที่ล้ออาจหลวมระหว่างการเลี้ยวที่เฉียบพลัน และแสดงวิธีแก้ไขง่ายๆ โดยการเพิ่มเทปชิ้นเล็กๆ ที่แกนล้อเพื่อให้แน่นขึ้น เมื่อแก้ไขแล้ว รถจะนำทางไปทั่วทั้งรางได้อย่างราบรื่น แสดงให้เห็นถึงประสิทธิภาพของการปรับเทียบและตรรกะการติดตามเส้น
บทต่างๆ ของวิดีโอ
- [00:00] แนะนำการติดตามเส้นและการตรวจจับขอบหน้าผา
- [03:01] การเดินสายไฟโมดูลเซนเซอร์ระดับสีเทา
- [04:39] การปรับเทียบเซนเซอร์ระดับสีเทา
- [13:05] การทำความเข้าใจตรรกะการติดตามเส้น
- [19:43] การทดสอบโค้ดการติดตามเส้น
- [24:50] การสาธิตสดบนรางทดสอบ
บทเรียนนี้เป็นส่วนหนึ่งของ: ชุดอุปกรณ์รถยนต์อัจฉริยะ SunFounder Raspberry Pi Pico Pico 4WD
- หลักสูตร บทเรียนที่ 1 จาก 10: ชุดรถอัจฉริยะขับเคลื่อน 4 ล้อ Raspberry Pi Pico จาก SunFounder โดย Robojax
- บทเรียนที่ 2 จาก 10: Python พื้นฐานสำหรับขับเคลื่อนชุดรถยนต์อัจฉริยะ 4WD Raspberry Pi Pico
- หลักสูตร บทเรียนที่ 3 จาก 10: การประกอบชุดรถยนต์อัจฉริยะ 4WD Raspberry Pi Pico จาก SunFounder โดย Robojax
- บทเรียนที่ 4 จาก 10: บอร์ดขยาย Raspberry Pi Pico สำหรับชุดรถอัจฉริยะ 4WD
- คอร์ส บทเรียนที่ 5 จาก 10: การควบคุม RGB LED WS2812B โดยใช้ Raspberry Pi Pico
- บทเรียนที่ 6 จาก 10: การควบคุมมอเตอร์ DC โดยใช้ชุดรถยนต์อัจฉริยะ 4WD Raspberry Pi Pico
- บทเรียนที่ 8 จาก 10: รถอัจฉริยะ Raspberry Pi Pico – บทเรียนที่ 8: มอเตอร์เซอร์โวและการติดตามวัตถุ
- บทเรียนที่ 9 จาก 10: การหลบหลีกสิ่งกีดขวางโดยใช้รถยนต์อัจฉริยะ 4WD Raspberry Pi Pico
- บทเรียนที่ 10 จาก 10: การควบคุมชุดรถยนต์อัจฉริยะ 4WD Raspberry Pi Pico ด้วยแอปพลิเคชันบนมือถือ
Common Course Links
- Purchase SunFounder Pico 4WD Smart Car Kit from AliExpress
- Purchase SunFounder Pico 4WD Smart Car Kit from eBay
- Amazon Canada: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon France: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon Germany: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon Italy: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon Japan: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon Spain: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon UK: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon USA: Purchase Pico 4WD Smart Car Kit buy SunFounder
- Purchase Pico 4WD Smart Car Kit from SunFounder.com
- SunFounder Pico-4wd Car Kit Documentation
- Video Play List of 10 lesson on SunFounder Pico 4WD Smart Car Kit
แหล่งข้อมูลและเอกสารอ้างอิง
ยังไม่มีทรัพยากรเลย
ไฟล์📁
ไม่มีไฟล์ที่พร้อมใช้งาน