โลจิสติกส์แบบอัลกอริทึม: Transporter ที่ถูกปรับให้เหมาะสมด้วย Karnaugh Map
ระบบอัตโนมัติในอุตสาหกรรมสมัยใหม่พึ่งพาการผสมผสานที่ลงตัวระหว่างตรรกะบูลีนและการเคลื่อนไหวทางกายภาพ Transporter นี้คือยานพาหนะอัจฉริยะอัตโนมัติที่ออกแบบมาเพื่อเดินตามเส้นทางโลจิสติกส์สีดำและหลบหลีกสิ่งกีดขวาง สิ่งที่ทำให้โปรเจกต์นี้เจ๋งคือการประยุกต์ใช้การปรับให้เหมาะสมด้วย Karnaugh Map (K-Map) อย่างจริงจัง แสดงให้เห็นว่าโค้ด "If-Then" ที่ซับซ้อนสามารถกลั่นกรองออกมาเป็นสมการลอจิกที่มีประสิทธิภาพสูงสุดได้ยังไง
ระบบการรับรู้ขั้นสูง
Transporter รักษาการรับรู้สภาพแวดล้อม 360 องศาผ่านเซ็นเซอร์หลายโหมด:
- ไลน์แทรกกิ้งสามตัว (KY-033): เซ็นเซอร์ IR สามตัวที่ติดตั้งใต้ท้องรถให้ข้อมูลความละเอียดสูงเกี่ยวกับการเปลี่ยนผ่านของเส้นทาง ด้วยการวิเคราะห์สถานะของเซ็นเซอร์ทั้งสามพร้อมกัน รถสามารถแยกแยะระหว่างเส้นตรง, การเลี้ยว 90 องศา และสถานการณ์ "หลุดเส้น" ได้
- การนำทางด้วยอัลตราโซนิก (HC-SR04): ติดตั้งบน servo-motor เซ็นเซอร์อัลตราโซนิกจะกวาดตรวจสอบเป็นมุม 60 องศาหน้ารถ นี่ทำหน้าที่เหมือน "กันชนเสมือน" ให้ข้อมูลระยะทางที่แม่นยำกับ Arduino เพื่อหยุดมอเตอร์ก่อนจะเกิดการชน
จากคณิตศาสตร์สู่การเคลื่อนไหว: การปรับให้เหมาะสมด้วย K-Map
แทนที่จะพึ่งพารายการ if-else ยาวเหยียด โปรเจกต์นี้ใช้พีชคณิตบูลีนในการกำหนดขาควบคุมมอเตอร์ (IN1, IN2, IN3, IN4):
- การกลั่นกรองทางตรรกะ: ด้วยการแมปสถานะที่เป็นไปได้ 8 แบบของเซ็นเซอร์ไลน์แทรกกิ้งทั้งสามลงใน Karnaugh Map เราได้สมการบูลีนที่ง่ายขึ้นมา เช่น
IN1 = RS * !LS - ประสิทธิภาพในการประมวลผล: สมการเหล่านี้ถูกประมวลผลเป็นลอจิกระดับฮาร์ดแวร์ ลดรอบการทำงานของ CPU ต่อลูป และทำให้การควบคุมพวงมาลัยตอบสนองได้ไวที่สุด ซึ่งจำเป็นสำหรับการไลน์แทรกกิ้งความเร็วสูง
การผลิตและการประกอบที่ยั่งยืน
Transporter เป็นแพลตฟอร์มกึ่งอัตโนมัติที่มี แท่นวางของที่พิมพ์จากเครื่อง 3D พริ้นเตอร์ แบบกำหนดเอง
- การผสานรวมฮาร์ดแวร์: โปรเจกต์ใช้ Arduino Sensor Shield V5.0 ซึ่งมีเฮดเดอร์ VCC/GND แยกให้ทุกเซ็นเซอร์ ทำให้ไม่ต้องเดินสายบนเบรดบอร์ดที่ซับซ้อน และรับประกันความเสถียรทางไฟฟ้าในระหว่างที่มอเตอร์ทำงานแรงบิดสูง
- ส่วนประกอบระดับอุตสาหกรรม: ขับเคลื่อนด้วย L298N H-Bridge และใช้พลังงานจากแบตเตอรี่ 18650 Li-ion สองก้อน ทำให้ Transporter มีความสามารถในการจ่ายกระแสสูงสำหรับการลากจูงวัสดุขนาดเล็กข้ามแบบจำลองพื้นผิวคล้ายโกดัง
เกี่ยวกับโปรเจกต์นี้หน่อย...
นี่คือรถอัจฉริยะที่สามารถเดินตามเส้นทางสีดำได้ด้วยเซ็นเซอร์ไลน์แทรกกิ้งสามตัว โดยใช้เซ็นเซอร์อัลตราโซนิกเพื่อตรวจจับสิ่งกีดขวางที่ขวางทางและจะหยุดมอเตอร์หากมีสิ่งกีดขวาง
เราสร้างมันขึ้นมาเพื่อแก้ปัญหาของเราเอง คือการเคลื่อนย้ายวัตถุอย่างอิสระ หลังจากศึกษาวิธีแก้ปัญหาที่เป็นไปได้อย่างถี่ถ้วน เราก็เลือกวิธีนี้ เพราะมีประสิทธิภาพและไม่ยากเกินไป
นี่คือรูปภาพและวิดีโอบางส่วนเพื่อแสดงการทำงานของมัน


ด้านหลังรถมี [servo](https://s.shopee.co.th/7fUgFAWSki) motor อยู่ตัวหนึ่งแต่เราไม่ได้ใช้มัน

การพัฒนาโปรเจกต์
เพื่อทำโปรเจกต์นี้ เราใช้ชุดอุปกรณ์ Elegoo ที่ซื้อออนไลน์ ลิงก์ของมันถูกเพิ่มในบิลออฟแมททีเรียลแล้ว แต่ก็เป็นไปได้ที่จะสร้างอุปกรณ์นี้โดยไม่ต้องซื้อชุด เพราะแบบวาดชิ้นส่วนและส่วนประกอบทั้งหมดได้ถูกใส่ไว้ที่นี่แล้ว
ผลิตภัณฑ์นี้มีจำหน่ายที่ลิงก์ต่อไปนี้:
1. ระยะออกแบบและวาดแบบ
ส่วนประกอบส่วนใหญ่ถูกทำไว้แล้ว แต่ก็ได้ถูกวาดแบบไว้เช่นกัน ดังนั้นจึงเป็นไปได้ที่จะทำโปรเจกต์นี้ซ้ำโดยไม่ต้องซื้อชุดออนไลน์ ชิ้นส่วนหนึ่งซึ่งไม่มีในชุดแต่มีประโยชน์ต่อระบบ ได้ถูกพิมพ์ขึ้นโดยใช้เครื่องพิมพ์ 3D มันคือแท่นวางของที่ทำให้เราสามารถขนส่งสินค้าและวัสดุขนาดเล็กได้ แบบวาดทั้งหมดได้ถูกแสดงไว้ด้านล่างของย่อหน้านี้



ล้อไม่ได้ถูกวาดแบบไว้ คุณสามารถค้นหามันได้บน Thingiverse:


2. บิลออฟแมททีเรียลและคำอธิบาย
- ElegooUNO R3 (x1)
- DC motor (x4): DC motor คือมอเตอร์ไฟฟ้าแบบหมุนทุกประเภทที่แปลงพลังงานไฟฟ้ากระแสตรงเป็นพลังงานกล เป็นมอเตอร์ประเภทที่พบได้บ่อยที่สุดและโดยปกติจะมีเพียงสองขา คือขาบวกและขาลบ ถ้าคุณเชื่อมต่อพวกมันโดยตรงกับแบตเตอรี่ มอเตอร์จะหมุน ถ้าสลับขา มอเตอร์จะหมุนในทิศทางตรงกันข้าม
- L298N motor driver (x1): มันคือมอเตอร์ไดรเวอร์แบบ H-Bridge ที่อนุญาตให้ควบคุมความเร็วและทิศทางของ DC motor โมดูลนี้สามารถขับ DC motor ที่มีแรงดันระหว่าง 5 ถึง 35V ด้วยกระแสสูงสุดถึง 2A การใช้มันทำให้เราสามารถเปลี่ยนทิศทางการไหลของกระแสและทิศทางการหมุนของมอเตอร์ได้ ดังนั้นถ้าเรารวม PWM และ H-Bridge เข้าด้วยกัน เราจะสามารถควบคุม DC motor ได้อย่างสมบูรณ์ มี DC motor driver หลายตัวที่มีคุณสมบัติเหล่านี้ และ L298N เป็นหนึ่งในนั้น สำหรับรายละเอียดเพิ่มเติม:
- Line tracking [sensor](https://s.shopee.co.th/7VBG2rX65j) module KY-033 (x3): โมดูลนี้ใช้ตัวส่งและตัวรับ IR ที่จะตรวจจับว่าพื้นผิวด้านหน้าโมดูลสะท้อนแสงแค่ไหน มันมีโพเทนชิโอมิเตอร์เพื่อปรับความไวของโมดูลให้สามารถตรวจจับได้ว่าพื้นผิวเป็นสีดำหรือสีขาว
- Ultrasonic sensor module HC-SR04 (x1): มันปล่อยคลื่นอัลตราซาวนด์ที่ 40000 Hz ซึ่งเดินทางผ่านอากาศ และหากมีวัตถุหรือสิ่งกีดขวางในเส้นทาง มันจะสะท้อนกลับมาที่โมดูล โดยพิจารณาจากเวลาเดินทางและความเร็วของเสียง คุณสามารถคำนวณระยะทางได้
- Servo motor(x1): มี servo motor หลายประเภทและคุณสมบัติหลักของพวกมันคือความสามารถในการควบคุมตำแหน่งของเพลาอย่างแม่นยำ servo motor เป็นระบบลูปปิดที่ใช้ฟีดแบ็กตำแหน่งเพื่อควบคุมการเคลื่อนไหวและตำแหน่งสุดท้าย ตำแหน่งจริงที่ถูกตรวจจับโดยอุปกรณ์เหล่านี้จะถูกส่งกลับไปยังตัวตรวจจับข้อผิดพลาดซึ่งจะถูกเปรียบเทียบกับตำแหน่งเป้าหมาย จากนั้นตามข้อผิดพลาด ตัวควบคุมจะแก้ไขตำแหน่งจริงของมอเตอร์ให้ตรงกับตำแหน่งเป้าหมาย
- Expansion board – [Arduino](https://s.shopee.co.th/7fUgFAWSki) sensor shield v5.0 (x1): Arduino sensor shield ช่วยให้คุณเชื่อมต่อโมดูลต่างๆ (เช่น เซ็นเซอร์, เซอร์โว, รีเลย์, ปุ่ม, โพเทนชิโอมิเตอร์ ฯลฯ) กับ Arduino Uno ของคุณได้ แต่ละพินมีพิน VCC และ GND ที่ตรงกันเพื่อให้เดินสายโมดูลและจ่ายไฟให้มันได้ง่าย
- Battery holder (x1)
- Battery – BRC 186504200mAh 3.7V li-ion (x2)
- DC connector-adapter(x1)
- Loading platform (x1)
- Connection wires
- Car frame (x2)
- Wheels (x4)
- Bolts
3. การทำงาน
ยานพาหนะที่ถูกสร้างขึ้นนี้สามารถเดินตามเส้นทางสีดำได้ โดยใช้เซ็นเซอร์ไลน์แทรกกิ้งสามตัวที่วางไว้ใต้โครงด้านหน้าของรถ สิ่งนี้จะเป็นจริงก็ต่อเมื่อเซ็นเซอร์อัลตราโซนิก ซึ่งเชื่อมต่อกับเซอร์โวมอเตอร์ที่กวาดเป็นมุม 60° อ่านค่าระยะทางมากกว่า 20 ซม. ในกรณีนี้สามารถมีสถานการณ์ที่แตกต่างกันได้สี่แบบ:
1. เซ็นเซอร์ทั้งหมดอ่านค่าเป็นสีขาว ดังนั้นรถจึงหลุดเส้น ด้วยเหตุนี้มอเตอร์จึงถูกหยุด การเคลื่อนที่อาจเป็นอันตรายต่อผู้คนในบริเวณโดยรอบ
2. เซ็นเซอร์ทั้งหมดอ่านค่าเป็นสีดำ ดังนั้นระบบจึงอยู่บนเส้นทางทั้งหมด สิ่งนี้เกิดขึ้นเช่นเมื่อมีเครื่องหมายหยุด และในกรณีนี้ "Transporter" ก็จะไม่เคลื่อนที่เช่นกัน
3. เซ็นเซอร์ซ้าย/เซ็นเซอร์กลาง (ทั้งสองหรือแค่ตัวแรก) อยู่บนเส้นสีดำ สถานะของเส้นทางเปลี่ยนไป คือมันเลี้ยวซ้าย ดังนั้นรถก็ต้องเลี้ยวซ้ายเพื่อเดินตามเส้นทางต่อไป
4. เซ็นเซอร์ขวา/เซ็นเซอร์กลาง (ทั้งสองหรือแค่ตัวแรก) อยู่บนเส้นสีดำ เส้นทางเลี้ยวขวา และด้วยเหตุนี้ "Transporter" ก็ต้องเลี้ยวขวา ด้วยวิธีนี้มันจะกลับมาอยู่ในตำแหน่งที่ถูกต้องอีกครั้ง
จากเงื่อนไขเหล่านี้ ตารางคอมบิเนชันได้ถูกจัดทำขึ้นเพื่อให้รู้ว่าระบบที่สร้างขึ้นทำงานอย่างไร โดยกำหนดให้:
- LS = เซ็นเซอร์ไลน์แทรกกิ้งด้านซ้าย
- CS = เซ็นเซอร์ไลน์แทรกกิ้งตรงกลาง
- RS = เซ็นเซอร์ไลน์แทรกกิ้งด้านขวา
- END = เปิด/ปิด DC motor ด้านขวา
- ENS = เปิด/ปิด DC motor ด้านซ้าย
- IN1 = อนุญาตให้ DC motor ด้านขวาถอยหลัง
- IN2 = อนุญาตให้ DC motor ด้านขวาเดินหน้า
- IN3 = อนุญาตให้ DC motor ด้านซ้ายเดินหน้า
- IN4 = อนุญาตให้ DC motor ด้านซ้ายถอยหลัง
สิ่งสำคัญที่ต้องบอกคือสีดำสำหรับเซ็นเซอร์คือ HIGH หรือ 1 ในขณะที่สีขาวสำหรับพวกมันคือ LOW หรือ 0
ตารางคอมบิเนชัน:

การทำงานของระบบในระหว่างสถานะต่างๆ:
- สถานะ 1 = DC motor ทั้งหมด OFF (หยุด)
- สถานะ 2 = DC motor ด้านขวาถอยหลัง ในขณะที่ DC motor ด้านซ้ายเดินหน้า (เลี้ยวขวา)
- สถานะ 3 = DC motor ด้านขวาและซ้ายเดินหน้า (เดินหน้า)
- สถานะ 4 = DC motor ด้านขวาถอยหลัง ในขณะที่ DC motor ด้านซ้ายเดินหน้า (เลี้ยวขวา)
-
ข้อมูล Frontmatter ดั้งเดิม
title: "Transporter (Karnaugh Map)" description: "This is a line follower car able to transport small objects thanks to a loading platform." author: "MacFe72" category: "" tags: - "vallauri" - "vallauri" - "cars" - "robots" views: 1793 likes: 0 price: 299 difficulty: "Intermediate" components: - "1x Jumper wires (generic)" - "1x Connector Adapter, DC Power - 2.1mm" - "1x SG90 Micro-servo motor" - "1x Drill / Driver, Cordless" - "1x Batteries (18650 3,7V 4200mAh li-ion) & Charger" - "1x 3D Printer (generic)" - "1x Arduino sensor shield V5.0 - Expansion board" - "1x L298N motor driver - H bridge" - "1x Ultrasonic Sensor - HC-SR04 (Generic)" - "1x DC motors & Wheels" - "1x Battery holder" - "1x ELEGOO UNO R3 Board ATmega328P ATMEGA16U2 with USB Cable" - "1x Screwdrivers" - "3x SparkFun RedBot Sensor - Line Follower" - "1x Various bolts (like screws, nuts, spacers)" tools: [] apps: - "1x Arduino IDE" - "1x Fritzing" - "1x Arduino reference" - "1x Draw.io" downloadableFiles: [] documentationLinks: [] passwordHash: "57dfefe6890abadcbbd7bc52cb87afe9e958878fb1f47d495527425f409c72dd" encryptedPayload: "U2FsdGVkX19KiMW5X9/A/fkj1ukY116ULKUWMLovOzf57ulFLUcflfUYQjatU6epkEgUOje71pxmn6Xz+D78N5d8CjXD8XgPkNTH4kybvz3C8y3qWXbKg30nHDqtFLbtQkYll/BhHMySyz4zfG6wRUw/dt1i0aoi8an5pnB0icA=" seoDescription: "Arduino line follower car project with a loading platform for transporting small objects using Karnaugh Map logic." videoLinks: - "https://www.youtube.com/embed/Sz64iUTHjIY" - "https://www.youtube.com/embed/J7mokd139Uk" heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/transporter-karnaugh-map-25005d_cover.jpg" lang: "th"