นี่คือการดัดแปลงโปรเจกต์ Arduino Mega Chess
https://create.arduino.cc/projecthub/Sergey_Urusov/arduino-mega-chess-d54383
สำหรับ ESP32 M5Stack. GUI ได้รับการออกแบบใหม่เกือบทั้งหมด เพื่อใช้งานร่วมกับอินเทอร์เฟซ 3 ปุ่ม และหน้าจอขนาดเล็ก 2 นิ้ว
ข้อดีของแพลตฟอร์ม M5Stack คือความสามารถในการทำซ้ำได้ (repeatability) และพลังการประมวลผลของ ESP32 เมื่อเทียบกับโปรเจกต์ต้นฉบับ ประสิทธิภาพเพิ่มขึ้นประมาณ 15 เท่า โดยประมวลผลได้ 2000-5000 nodes ต่อวินาที ซึ่งนำไปสู่ความลึกของ solving tree ได้ถึง 10 plyes ในสถานการณ์ที่ซับซ้อน และมากกว่านั้นในตำแหน่งที่ง่าย
engine ก็ได้รับการอัปเดตเล็กน้อยเช่นกัน เพื่อแสดงรายการการเดินที่เป็นไปได้ที่เรียงลำดับจากประโยชน์มากไปน้อย ซึ่ง alpha-beta algorithm ทั่วไปไม่สามารถทำได้
อินเทอร์เฟซใช้ 3 ปุ่ม ได้แก่ ปุ่มซ้าย, ปุ่มเลือก (choice) และปุ่มขวา ปุ่มซ้ายและขวาใช้เลือกการเดิน (ไฮไลต์ด้วยกรอบสีเขียว), ปุ่มเลือก (choice) ใช้เดินหมาก, การกดปุ่มเลือกค้างไว้ (นานกว่าครึ่งวินาที กดแล้วปล่อย) เพื่อเปิดเมนู หรือปิดเมนูและกลับสู่โหมดเกม
ในเมนู คุณสามารถย้อนกลับการเดินล่าสุด, หมุนกระดานหมากรุก (ฝั่งตรงข้ามเล่น M5Stack), เปิดเมนูเกมเพื่อบันทึกเกม, โหลดเกมที่บันทึกไว้ก่อนหน้านี้ หรือดาวน์โหลดตำแหน่งจากพอร์ต USB ในรูปแบบ FEN นอกจากนี้ยังมีการเลือก ระดับความยากของเกม และสามารถเปิดหรือปิดเสียงได้
ก่อนที่คุณจะสามารถเลือกการเดินที่ไฮไลต์ได้ algorithm จะใช้เวลาในการสร้างรายการการเดินที่เป็นไปได้ (นานถึง 5-6 วินาที หรืออาจนานกว่านั้นเล็กน้อย) โดยเรียงลำดับการเดินเหล่านั้น ดังนั้นหลังจากที่การเดินที่ไฮไลต์ปรากฏขึ้น การกดปุ่มขวาจะทำให้คุณเลือกการเดินในลำดับที่ลดลงของประโยชน์ใช้สอย
หลังจากการเดินของคุณและรอ 3 วินาที algorithm จะเริ่มคิด หาคำตอบ และทุกอย่างก็จะวนซ้ำ ในระหว่างเวลาที่รอ 3 วินาที คุณสามารถกดปุ่มเลือกค้างไว้เพื่อเข้าสู่เมนู
ระดับความยาก 3 ระดับแตกต่างกันที่เวลาคิดเฉลี่ยของ algorithm ได้แก่ 4 วินาที (LOW), 15 วินาที (MEDIUM), 60 วินาที (HIGH) ในสถานการณ์ที่ซับซ้อน เวลานี้อาจถูกเกินไปได้ประมาณ 2 เท่า
ระดับ LOW ไม่ได้หมายความว่า algorithm จะยอมแพ้ ตัวอย่างเช่น มันเล่นได้ดีกว่าผม แต่ผมไม่มีเรตติ้งหมากรุกใดๆ เป็นแค่มือสมัครเล่น อย่างไรก็ตาม ระดับของ engine ไม่สามารถเทียบได้กับ chess engines สมัยใหม่ เนื่องจากไม่มี 64 bits bitboards และ hash ดังนั้นผมจึงจัดให้โปรเจกต์นี้เป็นเพียงของเล่นเท่านั้น
ขอขอบคุณที่สนใจโปรเจกต์ของผม ยินดีรับฟังความคิดเห็น คำแนะนำ หรือข้อผิดพลาดที่พบ ฯลฯ
รายละเอียดทางเทคนิคเพิ่มเติม
AI เชิงกลยุทธ์ประสิทธิภาพสูง
โปรเจกต์นี้ใช้งาน Chess engine ที่ทำงานได้อย่างสมบูรณ์บนแพลตฟอร์ม M5Stack (ESP32) โดยเป็นการพอร์ต Logic ของ "Arduino Mega Chess" อันโด่งดังไปยังแกนประมวลผลที่ทรงพลังยิ่งขึ้น
- Transposition Table Management: ใช้ประโยชน์จาก RAM ขนาดใหญ่ของ ESP32 เพื่อจัดเก็บสถานะกระดานที่เคยประเมินไว้ก่อนหน้านี้ ซึ่งช่วยเร่งความเร็วของ Minimax search algorithm (พร้อม Alpha-Beta pruning) ได้อย่างมาก โดยหลีกเลี่ยงการคำนวณซ้ำซ้อน
- TFT Touch Interface: หน้าจอสีในตัวของ M5Stack ใช้ในการเรนเดอร์กระดาน 2D ความละเอียดสูง เฟิร์มแวร์จะจับคู่พิกัดบนหน้าจอสัมผัสกับ chess algebraic notation (เช่น e2 เป็น e4) เพื่อประสบการณ์ผู้ใช้ระดับมืออาชีพ
ประสิทธิภาพ
- ESP32 Dual-Core Execution: (เวอร์ชันขั้นสูง) chess engine จะทำงานบน core หนึ่ง ในขณะที่ UI และการป้อนข้อมูลของผู้ใช้จะได้รับการจัดการบน core ที่สอง ซึ่งช่วยให้มั่นใจได้ว่าอินเทอร์เฟซจะตอบสนองได้ดี แม้ในระหว่างรอบการ "คิด" ของ AI ที่ใช้เวลานาน