สารบัญ:

การสาธิต 4x4 ของกระดานหมากรุกอิเล็กทรอนิกส์/ ด้วย Arduino Mega + เครื่องอ่าน RFID + เซ็นเซอร์ Hall-Effect: 7 ขั้นตอน
การสาธิต 4x4 ของกระดานหมากรุกอิเล็กทรอนิกส์/ ด้วย Arduino Mega + เครื่องอ่าน RFID + เซ็นเซอร์ Hall-Effect: 7 ขั้นตอน

วีดีโอ: การสาธิต 4x4 ของกระดานหมากรุกอิเล็กทรอนิกส์/ ด้วย Arduino Mega + เครื่องอ่าน RFID + เซ็นเซอร์ Hall-Effect: 7 ขั้นตอน

วีดีโอ: การสาธิต 4x4 ของกระดานหมากรุกอิเล็กทรอนิกส์/ ด้วย Arduino Mega + เครื่องอ่าน RFID + เซ็นเซอร์ Hall-Effect: 7 ขั้นตอน
วีดีโอ: การใช้งานเกียร์โฟวิล 4WD 4x4 เบื้องต้นสำหรับมือใหม่ ในรถยนต์ Toyota Fortuner Vigo โฉมแรก- หน้าแชมป์ 2024, พฤศจิกายน
Anonim
การสาธิต 4x4 ของกระดานหมากรุกอิเล็กทรอนิกส์/ ด้วย Arduino Mega + เครื่องอ่าน RFID + เซ็นเซอร์ Hall-Effect
การสาธิต 4x4 ของกระดานหมากรุกอิเล็กทรอนิกส์/ ด้วย Arduino Mega + เครื่องอ่าน RFID + เซ็นเซอร์ Hall-Effect

สวัสดีผู้ผลิต

ฉันชื่อ Tahir Miriyev จบการศึกษาปี 2018 จาก Middle East Technical University อังการา/ ตุรกี ฉันเรียนเอกคณิตศาสตร์ประยุกต์ แต่ฉันชอบทำสิ่งต่างๆ เสมอ โดยเฉพาะอย่างยิ่งเมื่อต้องอาศัยฝีมือกับอุปกรณ์อิเล็กทรอนิกส์ การออกแบบและการเขียนโปรแกรม ขอบคุณหลักสูตรพิเศษเกี่ยวกับการสร้างต้นแบบที่แผนกออกแบบอุตสาหกรรมของเราเปิดสอน ฉันมีโอกาสสร้างสิ่งที่น่าสนใจจริงๆ โครงการสามารถถือเป็นโครงการระยะยาวได้ตลอดระยะเวลาทั้งภาคการศึกษา (4 เดือน) นักเรียนได้รับมอบหมายงานเพื่อค้นหาแนวทางที่สร้างสรรค์ในการออกแบบผลิตภัณฑ์/การสาธิตที่มีอยู่แล้ว และตระหนักถึงแนวคิดของตนโดยใช้ไมโครคอนโทรลเลอร์และเซ็นเซอร์ Arduino ฉันกำลังคิดเกี่ยวกับหมากรุก และหลังจากค้นคว้าเกี่ยวกับโครงการที่ประสบความสำเร็จ ฉันสังเกตเห็นว่าในโปรเจ็กต์ก่อนหน้านี้ ผู้สร้างใช้กลไกหมากรุกพร้อมใช้ (ซึ่งการเคลื่อนไหวทั้งหมดของแต่ละร่างถูกตั้งโปรแกรมไว้ที่แกนกลาง) พร้อมกับ Raspberry Pi, MUX บางตัว 'es, LED's และสวิตช์กก ในโครงการของฉัน ฉันตัดสินใจที่จะกำจัดซอฟต์แวร์ภายนอกในแง่ของกลไกหมากรุก และค้นหาวิธีแก้ปัญหาที่สร้างสรรค์สำหรับปัญหาการรู้จำรูป โดยใช้เครื่องอ่าน RFID เซ็นเซอร์ Hall-effect และ Arduino Mega

ขั้นตอนที่ 1: ปัญหาการรู้จำรูปคืออะไรและฉันจะแก้ไขได้อย่างไร

ปัญหาการรู้จำรูปคืออะไรและฉันจะแก้ไขได้อย่างไร
ปัญหาการรู้จำรูปคืออะไรและฉันจะแก้ไขได้อย่างไร

พูดง่ายๆ ก็คือ สมมติว่าคุณมีกระดานหมากรุกที่มี "สมอง"=ไมโครคอนโทรลเลอร์ และคุณต้องทำให้กระดานเข้าใจว่าคุณถือตัวเลขใดอยู่ในมือและวางไว้ที่ใด นี่คือปัญหาของการรู้จำรูป วิธีแก้ปัญหานี้ไม่สำคัญเมื่อคุณมีเครื่องหมากรุกที่มีชิ้นส่วนทั้งหมดวางอยู่บนตำแหน่งเริ่มต้นบนกระดาน ก่อนที่ฉันจะอธิบายว่าทำไมมันถึงเป็นเช่นนั้น

สำหรับผู้ที่กระตือรือร้นในการทำงานที่นี่ ฉันต้องอธิบายว่าเหตุใดเราจึงต้องใช้สวิตช์กก (หรือในกรณีของฉัน ฉันใช้เซ็นเซอร์ Hall-effect): หากคุณวางแม่เหล็กไว้ใต้ชิ้นส่วนแต่ละชิ้นแล้วหยิบขึ้นมา สี่เหลี่ยมจัตุรัสบนกระดาน (สมมติว่ามีสวิตช์กกใต้ทุกตาราง) เนื่องจากการมีอยู่/ไม่มีอยู่ของสนามแม่เหล็กเหนือเซ็นเซอร์ คุณสามารถทำให้ตัวควบคุมของคุณเข้าใจว่ามี/ไม่มีชิ้นส่วนที่ยืนอยู่บนสี่เหลี่ยม. อย่างไรก็ตาม มันยังไม่ได้บอกไมโครคอนโทรลเลอร์ว่าชิ้นไหนที่ยืนอยู่บนจัตุรัส มันบอกแค่ว่ามี/ไม่มีชิ้นส่วนบนสี่เหลี่ยม ณ จุดนี้ เรากำลังเผชิญหน้ากับปัญหาการรู้จำรูปร่าง ซึ่งสามารถแก้ไขได้โดยใช้เอ็นจิ้นหมากรุก โดยชิ้นส่วนทั้งหมดวางอยู่บนตำแหน่งเริ่มต้นเมื่อเริ่มเกมหมากรุก วิธีนี้ไมโครคอนโทรลเลอร์จะ "รู้" ว่าชิ้นส่วนทุกชิ้นตั้งอยู่ที่ไหนตั้งแต่ต้น โดยที่อยู่ทั้งหมดจะได้รับการแก้ไขในหน่วยความจำ อย่างไรก็ตาม สิ่งนี้ทำให้เรามีข้อจำกัดอย่างใหญ่หลวง: คุณไม่สามารถเลือกได้ สมมุติว่า มีชิ้นส่วนจำนวนเท่าใดก็ได้แล้ววางแบบสุ่มที่ใดก็ได้บนกระดานและเริ่มวิเคราะห์เกม คุณต้องเริ่มต้นตั้งแต่ต้นเสมอ ชิ้นส่วนทั้งหมดควรอยู่บนกระดานตั้งแต่แรก เนื่องจากนี่เป็นวิธีเดียวที่ไมโครคอนโทรลเลอร์จะติดตามตำแหน่งของมัน เมื่อคุณยกชิ้นส่วนและวางบนสี่เหลี่ยมอื่น โดยพื้นฐานแล้วนี่คือปัญหาที่ฉันสังเกตเห็นและตัดสินใจที่จะดำเนินการต่อไป

วิธีแก้ปัญหาของฉันค่อนข้างง่าย แม้ว่าจะสร้างสรรค์ ฉันวางเครื่องอ่าน RFID ไว้ที่ด้านหน้าของบอร์ด ในขณะเดียวกัน ฉันไม่ได้ติดแม่เหล็กไว้ใต้ชิ้นส่วนเท่านั้น แต่ยังติดแท็ก RFID โดยแต่ละชิ้นมีรหัสที่ไม่ซ้ำกัน ดังนั้น ก่อนที่คุณจะวางฟิกเกอร์ลงบนสี่เหลี่ยมจัตุรัสใดๆ ที่ต้องการ ก่อนอื่นคุณสามารถถือชิ้นส่วนนั้นไว้ใกล้กับเครื่องอ่าน RFID และปล่อยให้มันอ่าน ID ระบุชิ้นส่วน บันทึกไว้ในหน่วยความจำ จากนั้นคุณสามารถวางไว้ที่ใดก็ได้ที่คุณต้องการ นอกจากนี้ แทนที่จะใช้สวิตช์กก เพื่อให้การออกแบบวงจรง่ายขึ้น ฉันใช้เซ็นเซอร์เอฟเฟกต์ฮอลล์ซึ่งทำงานคล้ายกัน โดยมีความแตกต่างเพียงอย่างเดียวในการส่ง 0 หรือ 1 ไปยังไมโครคอนโทรลเลอร์เป็นข้อมูลดิจิทัล ซึ่งมีความหมายว่า "มี" หรือ "ไม่มี" ชิ้นส่วนใด ๆ บนสี่เหลี่ยมตามลำดับ ฉันได้เพิ่ม LED ด้วย (น่าเสียดายที่ไม่มีสีเดียวกัน ไม่มี) ดังนั้นเมื่อคุณยกชิ้นส่วน ตำแหน่งสี่เหลี่ยมทั้งหมดที่สามารถวางชิ้นส่วนที่ยกขึ้นได้จะสว่างขึ้น คิดว่ามันเป็นแนวทางการศึกษาสำหรับผู้เรียนหมากรุก:)

สุดท้ายนี้ ฉันต้องการทราบว่าแม้ฉันจะใช้เทคนิคหลายอย่าง แต่โครงงานยังคงเรียบง่ายและเข้าใจได้ ไม่ได้ดำเนินการอย่างลึกซึ้งหรือซับซ้อนเกินไป ฉันไม่มีเวลามากพอที่จะเล่นกระดานหมากรุกขนาด 8x8 (เช่นกันเนื่องจากเซ็นเซอร์เอฟเฟกต์ฮอลล์ 64 ตัวมีราคาแพงในตุรกี ฉันจึงครอบคลุมค่าใช้จ่ายทั้งหมดที่เกี่ยวข้องกับโครงการนี้) นั่นเป็นสาเหตุที่ฉันทำเวอร์ชันสาธิต 4x4 โดยทดสอบเพียงสองชิ้นเท่านั้น: จำนำและ ราชินี. แทนที่จะใช้กลไกหมากรุก ฉันเขียนซอร์สโค้ดสำหรับ Arduino ซึ่งสร้างทุกอย่างที่คุณจะเห็นในวิดีโอด้านล่าง

ขั้นตอนที่ 2: สิ่งต่าง ๆ ทำงานอย่างไร

Image
Image

ก่อนที่เราจะพูดถึงคำอธิบายทีละขั้นตอนเกี่ยวกับวิธีการทำโปรเจ็กต์ ฉันคิดว่าควรดูวิดีโอตัวอย่างและทำความเข้าใจเกี่ยวกับสิ่งที่ฉันกำลังพูดถึงจะดีกว่า

หมายเหตุ #1: ไฟ LED สีแดงดวงใดดวงหนึ่ง (ตัวแรกในแถว/ จากซ้ายไปขวา) หมดไฟ ไม่เป็นไร

หมายเหตุ #2: แม้ว่าจะใช้กันอย่างแพร่หลาย แต่จากประสบการณ์ของฉัน ฉันสามารถพูดได้ว่าเทคโนโลยี RFID ไม่ใช่ความคิดที่ดีที่สุดที่จะใช้ในแอปพลิเคชัน DIY (แน่นอนถ้าคุณมีทางเลือกอื่น) ก่อนที่ทุกอย่างจะได้ผล ฉันได้ทดลองหลายครั้งโดยวางหมากไว้ใกล้กับผู้อ่านและรอจนกว่าจะอ่านรหัสได้อย่างถูกต้อง ควรตั้งค่าพอร์ตอนุกรมสำหรับสิ่งนั้นเพราะวิธีที่เครื่องอ่าน RFID อ่าน ID นั้นเป็นเรื่องที่ปวดหัว ควรจะลองด้วยตัวเองเพื่อที่จะเข้าใจปัญหา หากคุณต้องการความช่วยเหลือเพิ่มเติม โปรดส่งอีเมลถึงฉันที่ ([email protected]) หรือเพิ่มใน skype (tahir.miriyev9r1) เพื่อให้เราสามารถกำหนดเวลาการสนทนาและพูดคุยในรายละเอียด ฉันจะอธิบายทุกอย่างอย่างละเอียด

ขั้นตอนที่ 3: เครื่องมือและส่วนประกอบ

เครื่องมือและส่วนประกอบ
เครื่องมือและส่วนประกอบ
เครื่องมือและส่วนประกอบ
เครื่องมือและส่วนประกอบ
เครื่องมือและส่วนประกอบ
เครื่องมือและส่วนประกอบ

นี่คือรายการเครื่องมือทั้งหมดที่ฉันใช้สำหรับโครงการ:ส่วนประกอบอิเล็กทรอนิกส์:

  • เขียงหั่นขนม (x1)
  • รอบทิศทาง A1126LUA-T (IC-1126 SW OMNI 3-SIP ALLEGRO) เซ็นเซอร์เอฟเฟกต์ฮอลล์ (x16)
  • ไฟ LED พื้นฐาน 5 มม. (x16)
  • สายจัมเปอร์
  • เครื่องอ่าน RFID 125 kHz และเสาอากาศ (x1)
  • Arduino เมกะ (x1)
  • แท็ก RFID 3M (x2)

วัสดุอื่นๆ:

  • ลูกแก้ว
  • กระดาษมัน
  • ไม้กระดานสั้น (ไม้)
  • สีอะครีลิค (สีเขียวเข้มและครีม) x2
  • กระดาษแข็งบาง
  • แม่เหล็กกลม 10 มม. (x2)
  • จำนำและราชินีชิ้น
  • หัวแร้งและวัสดุบัดกรี

ขั้นตอนที่ 4: แผนผัง (Fritzing)

แผนผัง (Fritzing)
แผนผัง (Fritzing)

ฉันรู้ แต่แนวคิดควรมีความชัดเจน นี่เป็นครั้งแรกที่ฉันใช้ Fritzing (แนะนำเป็นอย่างยิ่ง) การเชื่อมต่อน่าจะแม่นยำยิ่งขึ้น อย่างไรก็ตาม ฉันจดทุกอย่างไว้ในแผนผังหมายเหตุ: ฉันไม่พบโมเดลที่แน่นอนของ RDIF Reader ระหว่างส่วนประกอบต่างๆ ในฐานข้อมูลของ Fritzing รุ่นที่ฉันใช้คือโมดูล RFID 125Khz - UART คุณสามารถค้นหาบทช่วยสอนบน Youtube เกี่ยวกับวิธีตั้งค่าโมดูลนี้กับ Arduino

ขั้นตอนที่ 5: ประมวลผล

กระบวนการ
กระบวนการ

ถึงเวลาอธิบายว่าสิ่งต่าง ๆ ถูกสร้างขึ้นมาอย่างไร โปรดปฏิบัติตามคำอธิบายทีละขั้นตอน:

1. นำกระดาษแข็งขนาด 21x21 ซม. และกระดาษแข็งพิเศษมาตัดและทากาวที่ผนังส่วนบนของกระดาน เพื่อทำเป็นสี่เหลี่ยมจัตุรัสขนาด 16 เหลี่ยมโดยใช้ A B C D 1 2 3 4 เนื่องจากกระดาษแข็งนั้นบาง คุณจึงติดเซ็นเซอร์เอฟเฟกต์ฮอลล์ 16 ตัวในแต่ละสี่เหลี่ยมได้ โดยแต่ละช่องมี 3 ขาและไฟ LED 16 ดวงที่มี 2 ขาแต่ละอัน

2. หลังจากที่คุณตั้งค่าส่วนประกอบ คุณจะต้องทำการบัดกรีเพื่อบัดกรีขาของเซ็นเซอร์ Hall-effect และ LED กับสายจัมเปอร์ ณ จุดนี้ ฉันขอแนะนำให้เลือกสายไฟสีอย่างชาญฉลาด เพื่อที่คุณจะได้ไม่สับสนกับขา + และ - ของ LED รวมถึงขา VCC, GND และ PIN ของเซ็นเซอร์ Hall-effect แน่นอนว่าอาจมีคนพิมพ์ PCB ที่มีเซ็นเซอร์และแม้แต่ LED ประเภท WS2812 ก็บัดกรีแล้ว แต่ฉันตัดสินใจที่จะทำให้โครงการเรียบง่ายและทำ "งานฝีมือ" เพิ่มเติม ณ จุดนี้ สิ่งที่คุณต้องทำคือเตรียมสายไฟและเซ็นเซอร์ ในขั้นตอนต่อมาหลังจาก Fritzing Scheme คุณจะเห็นว่าคุณควรต่อปลายสายแต่ละเส้นไว้ที่ใด ในไม่ช้า บางส่วนจะไปยัง PIN โดยตรงบน Arduino Mega (มีเพียงพอใน Arduino) ส่วนอื่นๆ ไปที่เขียงหั่นขนม และ GND ทั้งหมดสามารถบัดกรีเป็นสายไฟชิ้นเดียว (ทำพื้นทั่วไป) ซึ่งในภายหลัง ควรเชื่อมต่อกับ GND บนบอร์ด Arduino หมายเหตุสำคัญประการหนึ่งที่นี่: เซ็นเซอร์เอฟเฟกต์ฮอลล์เป็นแบบ OMNIDIRECTIONAL ซึ่งหมายความว่าไม่สำคัญว่าจะจับขั้วแม่เหล็กใดไว้ใกล้กับเซ็นเซอร์ แต่จะส่งข้อมูล 0 ข้อมูลในขณะที่มีสนามแม่เหล็กอยู่ใกล้ ๆ และ 1 เมื่อไม่มี กล่าวคือแม่เหล็กอยู่ห่างจากเซ็นเซอร์ (มากกว่า 5 ซม.)

3. เตรียมกระดาษแข็งขนาด 21x21 ซม. ที่คล้ายกันและแก้ไข Arduino Mega และเขียงหั่นขนมแบบยาวไว้ คุณยังสามารถตัดผนัง 4 ความสูงใดก็ได้ตามต้องการจากกระดาษแข็งอีกครั้ง แล้วทากาวในแนวตั้งด้วยแผ่นสี่เหลี่ยมขนาด 21x21 ซม. 2 ชั้น จากนั้นทำตาม Fritzing Schematics เพื่อตั้งค่า คุณยังสามารถตั้งค่าเครื่องอ่าน RFID ได้หลังจากที่คุณใช้ LED และเซ็นเซอร์ Hall-effect เสร็จแล้ว

4. ทดสอบว่า LED และเซ็นเซอร์ทั้งหมดทำงานหรือไม่ โดยการส่งสัญญาณโดยใช้รหัสพื้นฐาน อย่าหลีกเลี่ยงขั้นตอนนี้เพราะจะให้คุณทดสอบว่าทุกอย่างทำงานอย่างถูกต้องหรือไม่และผ่านไปสู่การสร้างบอร์ดต่อไป

5. เตรียม Pawn และ Queen โดยติดแม่เหล็ก 2 อันที่มีรัศมี 10 ซม. ด้านล่าง รวมทั้งแท็ก RFID แบบกลม ในภายหลัง คุณจะต้องอ่าน ID ของแท็กเหล่านั้นจาก Serial Screen บน Arduino IDE

6. ถ้าทุกอย่างทำงานได้ดี คุณอาจเริ่มใช้รหัสหลักและลองใช้งาน!

7 (ไม่บังคับ). คุณอาจทำงานศิลปะด้วยไม้ซึ่งจะทำให้การสาธิตของคุณมีมุมมองที่เป็นธรรมชาติมากขึ้น ขึ้นอยู่กับเจตจำนงและจินตนาการของคุณ

ขั้นตอนที่ 6: รูปภาพและวิดีโอบางส่วนจากขั้นตอนต่างๆ

Image
Image
รูปภาพและวิดีโอบางส่วนจากขั้นตอนต่างๆ
รูปภาพและวิดีโอบางส่วนจากขั้นตอนต่างๆ
รูปภาพและวิดีโอบางส่วนจากขั้นตอนต่างๆ
รูปภาพและวิดีโอบางส่วนจากขั้นตอนต่างๆ

ขั้นตอนที่ 7: รหัสที่มา

รหัสแหล่งที่มา
รหัสแหล่งที่มา

ตอนนี้เมื่อเราสร้างต้นแบบเสร็จแล้ว เราก็พร้อมที่จะทำให้มันมีชีวิตด้วยโค้ด Arduino ด้านล่าง ฉันพยายามแสดงความคิดเห็นให้มากที่สุดเท่าที่จะทำได้ เพื่อให้กระบวนการของการวิเคราะห์โค้ดเข้าใจได้ ตรรกะอาจดูซับซ้อนตั้งแต่แรกเห็น แต่ถ้าคุณเจาะลึกลงไปในตรรกะของรหัส มันจะดูครอบคลุมมากขึ้น

หมายเหตุ: คล้ายกับกระดานหมากรุกจริง ๆ ฉันนับสี่เหลี่ยมที่เป็นนามธรรมเป็น A1, A2, A3, A4, B1, …, C1, …, D1,.., D4 อย่างไรก็ตาม ในโค้ดนี้ ไม่สามารถใช้สัญกรณ์นี้ได้ ดังนั้นฉันจึงใช้อาร์เรย์และสี่เหลี่ยมที่แสดงเป็น 00, 01, 02, 03, 10, 11, 12, 13, …, 32, 33 ตามลำดับ

ขอขอบคุณสำหรับความสนใจของคุณ! ทดสอบทุกอย่างและเขียนความคิดเห็นเกี่ยวกับข้อผิดพลาดที่ฉันพลาดไป การปรับปรุง คำแนะนำ ฯลฯ รอคอยที่จะรับฟังความคิดเห็นเกี่ยวกับโครงการ หากคุณต้องการความช่วยเหลือเกี่ยวกับโครงการ โปรดส่งอีเมลมาที่ (miriyevt@gmail).com) หรือเพิ่มใน skype (tahir.miriyev9r1) เพื่อให้เราสามารถกำหนดเวลาการสนทนาและหารือเกี่ยวกับรายละเอียดต่างๆ ขอให้โชคดี!