ابداع راه جدید تقلب
من راه جدیدی برای برنده شدن در شطرنج ابداع کرده ام: یک Raspberry Pi Zero را در جیبم به چند دکمه و موتورهای لرزشی در کفشم وصل کردم تا بتوانم به طور مخفیانه با یک موتور شطرنج که روی Pi کار می کند ارتباط برقرار کنم. این پروژه “Sockfish” نامیده می شود زیرا راهی برای کار با Stockfish با جوراب شما است.
پاها برای این نوع چیزها ایده آل هستند، زیرا آنها تنها بخشی از بدن شما هستند که درجات معقولی از مهارت دارند در حالی که هنوز برای ناظران معمولی نامرئی هستند.
هنر قبلی برای تلفن های چسبانده شده به پاها و نوعی کنترل از راه دور در نمایشگر و موارد زیادی وجود دارد که فقط به توالت رفتن و تماشای موقعیت های شطرنج روی تلفن همراه است، اما من فکر می کنم Sockfish ممکن است اولین روش هندزفری باشد. نیازی به کمک شخص ثالث ندارد.

هر کفش دارای دو مقاومت سنجش نیرو و یک موتور لرزش است. مقاومت های سنجش نیرو به عنوان دکمه هایی استفاده می شوند تا به من اجازه دهند حرکات حریف را وارد کنم. موتورهای ارتعاشی برای بازخورد لمسی فشردن دکمه های پذیرفته شده و برای انتقال حرکات موتور به من استفاده می شود تا بتوانم آنها را روی صفحه پخش کنم.
سهشنبه عصر بالاخره این فرصت را داشتم که Sockfish را در یک بازی واقعی در برابر یک حریف ناآگاه به کار بگیرم! اوون در شطرنج کمی بهتر از من است. من از او خواستم که یک بازی با کنترل زمان 15 دقیقه در هر طرف انجام دهد، که طولانی تر از ضربات برق آسا و گلوله ای است که ما معمولاً بازی می کنیم، اما لازم است زمان کافی برای انجام حرکات با پاهایم به من داده شود.
اولین بازی
اوون در مورد اینکه چرا 20 ثانیه تمرکز شدید طول کشید تا در اولین حرکتم تصمیم بگیرم بسیار گیج شده بود. او در نهایت حدس زد که من باید “بازبینی” کرده باشم و به سختی تمرکز کردم تا مطمئن شوم که این نظریه را به خاطر می آورم. در واقع من خیلی سخت تمرکز می کردم تا مطمئن شوم که خروجی های Sockfish را به درستی درک کرده ام و ورودی هایم را به درستی ارائه می دهم! متوجه شدم که تمرکزم بر روی Sockfish بسیار سخت تر از زمانی است که در حال بازی شطرنج هستم. شاید اگر بیشتر تمرکز می کردم بهتر بازی می کردم.

همه چیز خوب پیش می رفت تا اینکه به موقعیتی رسیدیم که Sockfish به من می گفت یک حرکت غیرقانونی انجام دهم. بازی (همانطور که Sockfish فهمید) به صورت https://lichess.org/cmcYJF7G (با من در حال بازی سیاه) ادامه یافت. میخواست 20… Qxe6 بازی کنم.
اما در بازی واقعی موقعیت متفاوت بود. روآری تماشا میکرد و از قبل از این حیله آگاه بود، بنابراین او برای ضبط بخشهایی از بازی تدبیر کرده بود. از ویدیوی او، موقعیت واقعی این بود:
تفاوت با نسخه Sockfish این است که پیاده g من به g6 منتقل شده است و فیل خانه من روی g2 اسیر نشده است.
فکر میکنم اتفاقی که باید افتاده باشد این است که وقتی کامپیوتر از من خواست Bxg2 را بازی کنم، در عوض g6 را بازی کردم. این آنقدرها هم که به نظر می رسد احمقانه نیست: معمولاً Sockfish خانه شروع و خانه مقصد را برای حرکتی که می خواهد انجام دهم به من می گوید، اما از آنجایی که فقط یک مهره می تواند به g2 حرکت کند، Sockfish فقط باید با خانه مقصد ارتباط برقرار کند. بنابراین g2 ارسال کرد، اما من g6 را شنیدم. این به این دلیل است که یک “2” به صورت 2 پالس کوتاه ارتعاش روی پای راست منتقل می شود و برای صرفه جویی در زمان یک “6” به عنوان یک پالس بلند (به نمایندگی از 5) و به دنبال آن یک پالس کوتاه ارسال می شود. من به سادگی اولین نبض کوتاه پای راست را با نبض طولانی اشتباه گرفتم و فرض کردم باید g6 را بازی کنم.

شاید این نمودار پالس های ارتعاش کمک کند (یا شاید هم نکند):
به هر حال، در حالی که Sockfish اکنون از پنجره بیرون است، مجبور شدم به تنهایی ادامه دهم.
بهجای دستگیری غیرقانونی وزیر در e6 (که فکر میکردم بعید به نظر میرسد که با آن فرار کنم)، چک را با روک مسدود کردم. این در نهایت احمقانه بود! رخ به سادگی بدون هیچ غرامتی دستگیر می شود. در دفاع از خودم آنقدر روی برقراری ارتباط با سوک فیش تمرکز کرده بودم که به ندرت درک درستی از موقعیت واقعی شطرنج داشتم. ما خیلی زود به این سمت رسیدیم و من استعفا دادم:
بازی دوم
خوشبختانه، جیگ هنوز بالا نبود و اوون با یک مسابقه مجدد موافقت کرد.
روآری این بار تقریباً کل بازی را فیلمبرداری کرد. به یاد دارم که پارانویا بودم و معلوم بود که در حال بی قراری هستم، اما در ویدیو به نظر می رسد که دارم واقعاً سخت فکر می کنم. فکر نمیکنم کسی حدس بزند که از کفشهای حقهبازی استفاده میکردم.

در یک نقطه از این بازی من یک اشتباه ورودی کردم، اما قبل از اینکه مشکل ساز شود متوجه آن شدم! دیدم که فحشی به زبان میآورم، 30 ثانیه سخت فکر میکنم، شروع به خندیدن میکنم و سپس از اوون میخواهم که دو حرکت قبلی را به من یادآوری کند. جای تعجب است که او به هیچ چیز مشکوک نبود.
پس از گذراندن 70 ثانیه مخفیانه برای باز کردن و انجام مجدد حرکات با انگشتان پا (همه اینها در حالی که سعی می کردم طبیعی عمل کنم) در نهایت خود را متقاعد کردم که موقعیت را بازیابی کرده ام و با شنیدن یک “قدم” ادامه دادم. و اعلامیه ای مبنی بر اینکه باید متمرکز بمانم.
متأسفانه، چند حرکت بعد، یک بار دیگر فاجعه رخ داد! جوراب ماهی دوباره از من خواست که یک حرکت غیرقانونی بازی کنم. موقعیت در Sockfish این بود:

اما موقعیت در بازی واقعی این بود:
اساساً 27… Qxe1 و 28. Rxe1 از نسخه Sockfish ناپدید شده بود در حالی که من در حال لغو و انجام مجدد حرکات بودم. من باید 1 لایه را خیلی دور باز کرده باشم و نتوانستم آن را بازسازی کنم. در این موقعیت Sockfish از من میخواست که Rd8+ را بازی کنم، اما از آنجایی که من در فایل d رخ نداشتم، این موضوع چالش برانگیز بود. من اعلام کردم که اکنون “خارج از پیست” هستم (بدون اینکه توضیح دهم به چه معناست) و شروع به بازی دستی کردم.
خوشبختانه، به عنوان یک وزیر، بازی تقریباً خودش برنده شد و اوون چند حرکت بعد استعفا داد. نه دقیقاً موفقیت بزرگی که برای Sockfish در نظر داشتم، اما حداقل یک برد بود! 50 درصد مواقع، هر بار برنده می شود.

راز بزرگ
بلافاصله پس از پیروزی در بازی، این حیله را برای اوون توضیح دادم. اولین واکنش او ناباوری بود، تا اینکه من کفش و کامپیوتر را به او نشان دادم. به طور کلی او آن را به خوبی دریافت کرد.
به او گفتم که قصد دارم یک شطرنجباز «قابل قبول» را جذب کنم تا از کفشها برای بردن جام قهرمانی جهان استفاده کند، اما او فکر کرد که این ممکن است «بازی را بدنام کند» و گفت که قطعاً من را بداخلاق خواهد کرد. فکر می کنم به هر حال بیشتر به اقتباس نتفلیکس علاقه مند باشم تا داستان واقعی.
جزئیات
در جیب من یک جعبه پلاستیکی حاوی Raspberry Pi Zero، یک ADC 4 کاناله برای خواندن مقاومت های حسگر نیرو، تعدادی ترانزیستور برای تعویض برق به موتورهای لرزش و یک تریمپوت برای هر موتور ارتعاشی برای تنظیم قدرت است. بدون تریمپات آنها بسیار بلند هستند و ممکن است بازی را زودتر از موعد (به اصطلاح) از دست بدهند. این چیزی است که در داخل جعبه پلاستیکی وجود دارد:
همچنین یک پاوربانک USB در جیب من برای اجرای Pi وجود دارد.

Pi یک اسکریپت پایتون را اجرا میکند که از پایههای GPIO میخواند و در stdout مینویسد، که توسط یک اسکریپت Perl مصرف میشود که فشار دکمهها را از stdin میخواند، موقعیتهای شطرنج را بازسازی میکند و Stockfish را اجرا میکند و سپس پالسهای ارتعاشی را در stdout مینویسد. سپس توسط یک اسکریپت دوم پایتون به پین های GPIO ارسال می شوند.
(چرا این معماری دیوانه وار؟ من از نوشتن برنامه واقعی در پرل خوشحالتر هستم، اما تمام نمونه های Raspberry Pi GPIO از پایتون استفاده می کنند… اینطوری ساده تر بود).
کل این تدبیر در داخل صفحه با -L اجرا می شود تا خروجی برای مطالعه بعداً ثبت شود. هنگامی که Pi بوت می شود با /etc/rc.local شروع می شود.

اگر در حین بوت شدن Pi، پایههای کفش را به برق وصل کرده باشید، یکی از موتورهای لرزش برای حدود یک دقیقه روشن میماند، زیرا مشخص میشود که پین GPIO که آن را به حرکت در میآورد، در حالی که Pi بوت میشود، روی 5+ تنظیم میشود. واقعاً مهم نیست، اما می توانید احساس کنید که لرزش در طول دقیقه با گرم شدن و افزایش مقاومت ضعیف تر می شود.
من از یک آهن لحیم کاری برای سوراخ کردن جیب بار شلوار استفاده کردم تا سیم ها از قسمت داخلی پاچه های شلوارم عبور کنند.
در ابتدا من از کانکتورهای 4 پین TRRS برای اتصال Pi به کفش استفاده میکردم، اما متوجه شدم که این اتصالات بسیار شلخته و غیرقابل اعتماد هستند. من آنها را با کانکتورهای 4 پین ای دوچرخه ضد آب جایگزین کردم که بسیار بهتر کار می کنند و به طور قابل توجهی بزرگتر نیستند.
در ابتدا من درج کفش را در PLA چاپ می کردم که خیلی سفت است و راه رفتن را بسیار سخت می کند. من اینها را با پلاستیک انعطاف پذیر TPU جایگزین کردم که بسیار بهتر عمل کرد. من همچنین با میکروسوئیچ های معمولی شروع به کار کردم که وقتی روی آنها راه می رفتم آسیب می دیدند و جایگزین کردن آنها با مقاومت های سنسور نیرو این مشکل را حل کرد، با یک امتیاز اضافه که اکنون می توانم نیروی فعال سازی را در نرم افزار تنظیم کنم.
Jez خاطرنشان کرد که Sockfish یادآور کامپیوتر کفشهای رولت Eudaemons است که با توجه به وسایل الکترونیکی اولیه موجود در دهه 1970، پروژه بسیار چشمگیری است.

Sockfish-ng
به کسی نگو، اما من از قبل برنامه هایی برای نسخه بهتر Sockfish دارم که تشخیص آن بسیار سخت تر خواهد بود!
این اثبات مفهوم فقط برای فریب دادن دوستانم، در یک کافه، برای مدت 2 بازی لازم بود. برای قهرمانی در مسابقات جهانی باید خیلی جدی تر عمل کنیم.
من فکر میکنم که Pi و تمام وسایل الکترونیکی دیگر را به جای اینکه یک Pi معمولی به 2 مهره استریپبرد وصل کنیم، روی یک PCB ادغام کنیم. ما این PCB محاسباتی را در یکی از کفش ها قرار می دهیم. هر کدام از کفشها باتری و رادیو بلوتوث (یا مشابه) خود را در داخل خواهند داشت و تمام لوازم الکترونیکی زیر کفی که چسبانده میشود، پنهان میشوند. حتی جستجوی نواری بازیکن هیچ رازی را فاش نمی کند.
این رابط مشابه همان کاری است که قبلاً انجام می دهد، شاید با تمایز بهتر بین یک پالس بلند و یک پالس کوتاه، به جز اینکه ارتباط کفش ثانویه به جای سیم از طریق رادیو می رود.
احتمالاً باید کفش ها را با اشعه ایکس عکس بگیرید تا متوجه شوید مشکلی پیش آمده است. اگر این یک تهدید واقع بینانه است، من فکر می کنم برنامه این است که بازیکن با پوشیدن کفش های معمولی راه برود، از شخص دیگری بخواهیم کفش های هک شده را از مسیری دیگر به صورت قاچاق وارد کند، و زمانی که بازیکن قبلاً اسکن شد، کفش هایش را تعویض کند.