ตรวจจับการวางวัตถุบนกริด


11

ฉันกำลังทำงานในโครงการ Android ADK ฉันกำลังมองหาวิธีการตรวจสอบตำแหน่งของชิ้นหมากรุกบนกระดาน (8x8) ฉันกำลังดูสิ่งต่าง ๆ เช่น NFC แต่มันดูแพงเกินไป มีเทคโนโลยีอื่นที่ฉันควรพิจารณาหรือไม่ ฉันต้องการบางสิ่งที่โลกสามารถอ่านสถานะทั้งหมดของกระดานได้ตลอดเวลา ตัวอย่างเช่นชิ้นส่วนบางชิ้นอาจล้มลงได้และเมื่อมีการตั้งค่ากลับมาฉันต้องมีตำแหน่ง เพื่ออธิบายเพิ่มเติมนี้ในเกมหมากรุก touroment ถ้าชิ้นส่วนถูกย้ายไปยังตำแหน่งที่ไม่ถูกต้องและผู้เล่นทั้งสองไม่สังเกตเห็นเกมจะดำเนินต่อไป ดังนั้นฉันต้องบันทึกเกมแม้ว่าตำแหน่งจะเป็นไปไม่ได้ตามกฎของเกม

ฉันแค่ต้องการชี้ให้เห็นในทิศทางทั่วไปของเทคโนโลยีที่จะมอง


"ในเกมหมากรุกทัวร์นาเมนต์หากชิ้นส่วนถูกย้ายไปยังตำแหน่งที่ไม่ถูกต้องและผู้เล่นทั้งสองไม่สังเกตเห็นเกมจะดำเนินต่อไป" ฉันอยากรู้. กฎของหมากรุกบอกอย่างนั้นเหรอ? (ที่จริงแล้วมันสมเหตุสมผลเพราะถ้าไม่มีใครดูอยู่ - พวกเขาจะทำต่อไปไม่ได้ถ้าไม่มีใครสังเกต)
Telaclavo

@Telaclavo ฉันสามารถยืนยันได้ว่ามันเกิดขึ้นกับฉันในทัวร์นาเมนต์ ไม่มีวิธีแก้ปัญหาที่ชัดเจนในการเล่นระดับต่ำของฉัน
สตีเฟ่น Collings

คำตอบ:


13

แนวคิดแรก : RFID หนึ่งแท็ก (ราคาถูกมาก) ใต้แต่ละชิ้น แต่ละแท็กควรระบุประเภทของชิ้นส่วนนั้น (จาก {6 white} + {6 black} = 12 ประเภทที่แตกต่างกัน) วงจรตัวรับส่งสัญญาณหนึ่งตัวและมัลติเพล็กเซอร์ 1 ถึง 64 บิตสำหรับทั้งบอร์ด นอกจากนี้ยังมีเสาอากาศ 64 อันแต่ละอันอยู่ใต้ตำแหน่งกระดาน ตัวรับส่งสัญญาณทำงานที่พลังงาน RF ที่ต่ำมาก (คุณควรหาตัวที่เหมาะสมที่สุด, ทดลอง) ด้วยการเปลี่ยนการเชื่อมต่อมัลติเพล็กเซอร์คุณจะสแกนทั้ง 64 ตำแหน่งและอ่าน ID ของแท็ก (ถ้ามี) ที่ปรากฏบนแต่ละตำแหน่ง

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

แนวคิดที่สอง : แยกแยะชิ้นส่วนแต่ละประเภทด้วยการแทรกซึมของแม่เหล็กที่เป็นเอกลักษณ์ ในแต่ละชิ้นคุณจะต้องเพิ่มมวลที่ด้านล่าง มวลพิเศษนี้จะเหมือนกันสำหรับทั้ง 32 ชิ้น (เพื่อให้ผู้ใช้รู้สึกสะดวกสบายกับพวกเขา) มวลพิเศษแต่ละอันจะเป็นผลรวมของมวลสองก้อน: มวล "แม่เหล็ก" รวมกับมวล "ชดเชย" (ไม่ใช่แม่เหล็ก) จุดประสงค์เดียวของมวลการชดเชยคือการทำให้มวลรวมพิเศษเท่ากับชิ้นส่วนทุกประเภท คุณต้องแยกความแตกต่างของชิ้นส่วน 12 ชนิด ประเภทของชิ้นส่วนแต่ละคนจะต้องมีมวลแม่เหล็กที่มีการซึมผ่านของแม่เหล็กที่ไม่ซ้ำกันμคุณอาจจะเลือกวัสดุที่มีค่าμสูงแต่มีวัสดุมากมายให้คุณเลือกแต่ละชนิดมีμที่แตกต่างกัน(ดูตารางเดียวที่นี่μμμ)

ภายใต้ตำแหน่งกระดานแต่ละตำแหน่งคุณจะต้องม้วนลวดหลายรอบ (เพื่อให้เส้นผ่านศูนย์กลางเกือบด้านข้างของตาราง) คุณจะมี 64 คอยส์ อีกครั้งใช้มัลติเพล็กเซอร์ 1 ถึง 64 เพื่อเชื่อมต่อหนึ่งในนั้นเข้ากับเครื่องวัดการเหนี่ยวนำ ความแตกต่างตอนนี้คือมัลติเพล็กเซอร์ไม่ต้องจัดการกับ RF คุณสามารถผูกหนึ่งโหนดของขดลวดทั้งหมดเข้าด้วยกันและใช้สวิตช์แบบอนาล็อก 64 ตัว (ราคาถูกมาก) ในการกำหนดทิศทางอย่างที่ฉันได้กล่าวไว้ว่าหนึ่งขดลวดกับตัวเหนี่ยวนำเหนี่ยวนำ วงจรจะต้องพิจารณาในเวลาที่สั้นที่สุดที่เป็นไปได้การเหนี่ยวนำตนเองวัดในแต่ละ 64 ขดลวด มันไม่ต้องการความแม่นยำมากนัก เพียงแค่ต้องกำหนดค่าที่เป็นไปได้ที่แตกต่างกัน 13 ค่าสำหรับ L (นั่นคือน้อยกว่า 4 บิต!) คุณสามารถทดลองกับวิธีการในโดเมนเวลา (เช่นการใช้แรงดันไฟฟ้าคงที่และการวัดความชันของกระแส) หรือในโดเมนความถี่ (เช่นพยายามค้นหาสิ่งที่ความถี่เรโซแนนท์พร้อมกับตัวเก็บประจุที่เพิ่มเข้ามา) เพื่อให้บรรลุถึง 12 ค่าที่ต่างกันสำหรับ L คุณสามารถเล่นกับการซึมผ่านที่แตกต่างกันและขนาดที่แตกต่างกันสำหรับวัสดุแม่เหล็ก

เนื่องจากคุณต้องสแกน 64 ตำแหน่ง (วัดการเหนี่ยวนำตนเอง 64) ในเวลาที่เหมาะสมฉันอาจจะเข้าใกล้โดเมนเวลา ตัวอย่างเช่นหากคุณปล่อยให้ตัวเอง 1 วินาทีอ่านสถานะทั้งหมดของบอร์ดคุณมี 15.6 ms สำหรับการวัดค่าความเหนี่ยวนำแต่ละค่า ท้าทาย แต่ทำได้

หากความเร็วกลายเป็นปัญหาคอขวดคุณสามารถทำให้ระบบของคุณเร็วขึ้น 8 เท่าหากคุณรวมส่วนปลายด้านหน้าแบบอะนาล็อก 8 อันแทนหนึ่งตัว ส่วนหน้าแต่ละอันจะใช้สำหรับแต่ละแถวในกระดาน ด้วยวิธีนี้คุณสามารถวัดการเหนี่ยวนำตัวเอง 8 ตัวพร้อมกัน (ให้ 125 มิลลิวินาทีสำหรับการวัดแต่ละครั้งและคุณจะยังคงสถานะบอร์ดทั้งหมดใน 1 วินาที) ฉันแน่ใจว่าหนึ่ง MCU แม้จะมี ADC เดียว (ที่มี 8 ช่องทาง) ก็เพียงพอแล้ว

L1Lยังไม่มีข้อความ

แนวคิด 2

ประโยชน์ของความคิดที่สองนี้: ไม่มี RF ที่เกี่ยวข้อง อย่างไรก็ตามคุณต้องสร้าง "แท็ก" ของคุณเองด้วยการซึมผ่านที่แตกต่างกัน


ขอขอบคุณ. ความคิดแรกของคุณดูเหมือนจะเป็นวิธีที่จะไป ฉันชอบความคิดสร้างสรรค์ของคุณความคิดที่สอง มันอาจจะดีกว่าสำหรับผลิตภัณฑ์เชิงพาณิชย์ที่ชิ้นส่วนสามารถทำเองได้ อย่างไรก็ตามฉันแค่ทำเพื่อความสนุก
theJosh

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

@theJosh (ต่อ) หากไม่เป็นเช่นนั้นโซลูชันของดาวิดจะง่ายกว่า
Telaclavo

ปัญหาเกี่ยวกับแนวคิดแรกคือต้องใช้ระยะสั้นพอสมควรสำหรับ RFID หากช่วงนั้นมากเกินไป (มากกว่าสี่เหลี่ยม) มันจะยากที่จะรับรู้ตำแหน่งที่เหมาะสมของชิ้นส่วน ไม่เป็นไปไม่ได้ (ฉันหวังว่า) ยากกว่านี้มาก

@DavidKessner ใช่นั่นเป็นเหตุผลว่าทำไมฉันถึงบอกว่าเขาต้องหาพลังงาน RF ที่เหมาะสมที่สุดในการทดลอง ระยะทางจากเสาอากาศไปยังแท็กนั้นสั้นกว่าระยะห่างระหว่างช่องสี่เหลี่ยมสองช่องที่อยู่ติดกันดังนั้นจึงน่าจะทำได้
Telaclavo

4

ฉันเคยเห็นกระดานหมากรุกอิเล็กทรอนิกส์จำนวนมากที่มีรูเจาะอยู่ตรงกลางของแต่ละช่องสี่เหลี่ยม 64 ช่องโดยมีเครื่องตรวจจับภาพใต้หลุมแต่ละช่องซึ่งให้เพียง 1 บิต - "ไม่มีอะไรที่นี่" หรือ "ชิ้นส่วนบางชนิดเป็น ครอบคลุมเครื่องตรวจจับ " สิ่งนี้ต้องการ (ก) หน่วยความจำและรหัสบางอย่างเพื่อจดจำการตั้งค่าเก่าของบอร์ดและเพื่อติดตามว่าชิ้นส่วนใดเคลื่อนไปที่ไหนและ (ข) บางสิ่งที่พิเศษเพื่อจัดการการเลื่อนตำแหน่ง สิ่งนี้สามารถตรวจจับสี่เหลี่ยมที่ถูกครอบครองและสี่เหลี่ยมที่เปิดได้ตลอดเวลา แต่ไม่ใช่สถานะเต็มของกระดาน


1
ฉลาด! ฮาร์ดแวร์อย่างง่ายสำรองโดยตรรกะ!
clabacchio

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

1

GlyphChess แก้ปัญหานี้โดยใช้กระดานหมากรุกที่โปร่งใส เครื่องสแกนที่อยู่ด้านล่างจะอ่านบาร์โค้ดที่ไม่ซ้ำใครซึ่งติดอยู่ที่ด้านล่างของแต่ละชิ้นเพื่อดูว่าชิ้นไหนตั้งอยู่ที่ไหน "รหัสลับของ PARC" Slashdot: เล่นหมากรุก GNU บนเครื่องสแกนของคุณ สิ่งนี้สามารถอ่านสถานะทั้งหมดของบอร์ดได้ตลอดเวลา เนื่องจากมีน้อยกว่า 18 ชนิดที่ไม่ซ้ำกันของชิ้นส่วนบนกระดานหมากรุกบางทีมันจะดีกว่าที่จะใช้ที่ง่ายต่อการรับรู้ fiducialsเช่นเครื่องหมาย d สัมผัสมากกว่าบาร์โค้ดความละเอียดสูงความสามารถในการแยกความแตกต่างของวัตถุล้าน


แค่สงสัย. การทำให้บอร์ดโปร่งใสพวกเขาจะแสดงสี่เหลี่ยมขาวดำแก่ผู้ใช้อย่างไร อาจจะมีความโปร่งใสระดับกลาง? และผู้ใช้ไม่เห็นแสงไฟใช่ไหม
Telaclavo

@Telaclavo: ฉันไม่รู้ - บางทีอาจจะเป็นสี่เหลี่ยมโปร่งใสเกือบเป็นสีเขียวดั้งเดิมและหนัง? ถ้าฉันกำลังสร้างสิ่งนี้ในวันนี้ฉันจะทำให้การตกแต่งภายในของกล่องสีขาวจากนั้นวางกล้องที่ด้านล่างและวางกระดานหมากรุกแก้วด้านบน หากมีแสงสว่างเพียงพอสำหรับมนุษย์ที่จะเห็นชิ้นส่วนมีแสงมากพอที่จะกระดอนภายในสีขาวและส่องบาร์โค้ดที่ด้านล่างของแต่ละชิ้นเพื่อให้กล้องอ่าน - ไม่จำเป็นต้องใช้แสง
davidcary

1

ฉันจะทำสิ่งนี้โดยการทำเซ็นเซอร์สีสำหรับแต่ละตารางและวางป้ายสีที่แตกต่างที่ด้านล่างของชิ้นส่วน

เซ็นเซอร์สีจะทำโดยใช้สาม LED (อาจแดง, เขียวและน้ำเงิน) และทรานซิสเตอร์ภาพถ่ายที่ไวต่อแสงที่มองเห็นได้ทั้งหมด เปิดไฟ LED ตามลำดับและวัดสิ่งที่โฟโตทรานซิสเตอร์วัดสะท้อนออกจากชิ้นหมากรุก

คุณสามารถย้อนกลับได้โดยที่คุณมี LED สีขาวและตัวรับแสงแตกต่างกันสามตัวที่ไวต่อสีต่างๆ แต่นั่นยากที่จะทำ โฟโต้ทรานซิสเตอร์ส่วนใหญ่ไม่ได้เลือกสีนั้น คุณสามารถใช้ตัวกรองได้ แต่จะง่ายกว่าที่จะใช้ LED สีที่ต่างกัน

หากไฟ LED ติดสว่างเป็นระยะเวลาสั้น ๆ คุณจะไม่เห็น "มากเกินไป" นอกจากนี้ไฟ LED ยังสามารถนำไปใช้กับสิ่งอื่น ๆ เช่นทำเครื่องหมายบนกระดานหรือแสดงแสงน้อย ๆ เมื่อเกมชนะ

มีเคล็ดลับเล็กน้อยเกี่ยวกับเรื่องนี้ซึ่งทำให้ทุกอย่างง่ายต่อการวางสายและสร้าง Avago มีแสงโดยรอบสำหรับชิป I2C ที่อาจทำให้ง่ายขึ้น บริษัท อื่นมีสิ่งที่คล้ายกัน

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


1

ไม่จำเป็นต้องตรวจจับสีเพียงเฉดสีเทา แต่ละชิ้นมีเฉดสีเทาที่ด้านล่างและคู่ตัวส่งสัญญาณ IR / เครื่องตรวจจับง่ายๆที่ติดตั้งไว้ในบอร์ดจะอ่านค่าแบบอะนาล็อก


0

บริษัท ที่เรียกว่า "Zowie" ครั้งหนึ่งเคยผลิตละครสองสามชุดรวมถึง "Ellie's Enchanted Garden" ซึ่งจะเชื่อมต่อกับคอมพิวเตอร์และสามารถสัมผัสตำแหน่งโทเค็นเพียงไม่กี่แห่งบนพื้นผิวการเล่น โทเค็นแต่ละอันประกอบด้วยตัวเก็บประจุและขดลวดและพื้นผิวการเล่นนั้นมีกริดของสายไฟ การวางกระแสไฟฟ้าผ่านลวดแนวนอนที่ความถี่ตรงกับความถี่ LC ของชุดประกอบฝาขดลวดจะทำให้ความถี่นั้นปรากฏบนสายแนวตั้ง ตะแกรงลวดมีสายไฟประมาณหกเส้นต่อนิ้วทั้งสองทิศทางและความละเอียดของการวางตำแหน่งที่เห็นได้ชัดอาจประมาณ 0.05 "แต่มีเพียง 16 สายที่เชื่อมต่อกับบอร์ดซีพียูฉันจะเดาว่าสายไฟถูกจัดเรียงในรูปแบบที่แต่ละโทเค็น จะตอบสนองต่อสายแนวนอนสองเส้นขึ้นไปและกระตุ้นสายแนวตั้งอย่างน้อยสองเส้น โดยการสังเกตว่าการรวมกันของสายไฟใดที่จะตอบสนองต่อสิ่งเร้าซีพียูสามารถค้นหาว่าโทเค็นนั้นอยู่ที่ไหน ฉันจำไม่ได้ว่า Zowie อ้างสิทธิ์ในสิทธิบัตรของพวกเขาหรือสิ่งใดที่อ้างถึงก่อนหน้านี้ แต่เป็นไปได้ว่างานศิลปะก่อนหน้านี้อาจรวมถึงวิธีการใช้โดเมนสาธารณะในปัจจุบันซึ่งเพียงพอสำหรับวัตถุประสงค์ของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.