
Tartalomjegyzék:
2025 Szerző: John Day | [email protected]. Utoljára módosítva: 2025-01-23 14:48

Szia készítők, Tahir Miriyev vagyok, 2018 -ban végzett a közel -keleti műszaki egyetemen, Ankara/ Törökország. Alkalmazott matematika szakon végeztem, de mindig szerettem dolgokat készíteni, különösen akkor, amikor az elektronikával, a tervezéssel és a programozással kapcsolatos kézi munkát kellett elvégezni. Egy egyedi prototípus -tanfolyamnak köszönhetően, amelyet az Ipari Tervezés Tanszékünkön kínáltak, lehetőséget kaptam arra, hogy valami igazán érdekeset készítsek. A projekt egy féléves (4 hónap) időtartamig tartható projektként kezelhető. A diákok feladatot kaptak, hogy találjanak kreatív megközelítést a már létező termékek/demók tervezéséhez, és valósítsák meg ötleteiket Arduino mikrokontrollerek és érzékelők segítségével. A sakkra gondoltam, és miután kutattam a sikeres projekteket, észrevettem, hogy a korábbi projektekben a gyártók alapvetően kész sakkmotorokat használtak (ahol minden figura minden mozdulata a magba volt programozva), a Raspberry Pi mellett néhány MUX LED -ek és nádkapcsolók. A projektem során azonban úgy döntöttem, hogy megszabadulok minden külső szoftvertől sakk motorral, és kreatív megoldást találok az ábrafelismerési problémára RFID olvasó, Hall-effektusok és Arduino Mega segítségével.
1. lépés: Mi az ábrafelismerési probléma és hogyan oldottam meg

Egyszerűen fogalmazva, tegyük fel, hogy sakktáblája van "agy" = mikrokontrollerrel, és meg kell értetnie a táblával, hogy melyik figurát tartotta a kezében és hová tette. Ez az ábrafelismerés problémája. Ennek a problémának a megoldása triviális, ha van sakkmotorja, amelynek minden darabja a táblán a kezdeti pozícióján áll. Mielőtt elmagyaráznám, miért van ez így, hadd tegyek néhány megjegyzést.
Azok számára, akik lelkesek az itteni dolgok működéséért, tisztáznom kell, miért van szükségünk nádkapcsolókra (vagy az én esetemben Hall-effektusokat használtam): ha minden darab alá mágnest helyez, és felveszi egy négyzet a táblán (feltéve, hogy minden négyzet alatt nádkapcsoló található) az érzékelő feletti mágneses mező létezése/nem létezése miatt, megértheti a vezérlővel, hogy van -e egy darab a négyzeten. Azonban még mindig nem mond semmit a mikrokontrollernek arról, hogy pontosan melyik darab áll a téren. Csak annyit árul el, hogy egy négyzeten van/nincs darab. Ezen a ponton szembe kell néznünk egy ábrafelismerési problémával, amelyet egy sakkmotor segítségével lehet megoldani, minden sakkot a kezdeti helyzetükre helyezve, amikor a sakkjáték elkezdődik. Így a mikrokontroller "tudja", hogy minden darab hol van az elejétől, minden cím rögzítve van a memóriában. Mindazonáltal ez óriási korlátozással jár: nem választhat ki mondjuk tetszőleges számú darabot, és véletlenszerűen elhelyezheti őket bárhol a táblán, és elkezdheti a játék elemzését. Mindig az elejéről kell kezdeni, minden darabnak eredetileg a táblán kell lennie, mivel a mikrokontroller csak így tudja nyomon követni a helyét, miután felemelt egy darabot, és egy másik négyzetre helyezte. Lényegében ezt a problémát vettem észre, és úgy döntöttem, hogy dolgozom.
A megoldásom egyszerű volt, bár kreatív. RFID olvasót helyeztem a tábla elülső oldalára. Eközben nemcsak mágnest rögzítettem a darabok alá, hanem egy RFID -címkét is, minden darab egyedi azonosítóval. Ezért, mielőtt egy figurát a kívánt négyzetre helyez, először tartsa a darabot az RFID -olvasó közelében, és hagyja, hogy elolvassa az azonosítót, azonosítsa a darabot, mentse el a memóriába, majd elhelyezheti bárhol. Ezenkívül a nádkapcsolók használata helyett az áramkör kialakításának egyszerűsítése érdekében hall-effektusú érzékelőket használtam, amelyek hasonlóan működnek, azzal az egyetlen különbséggel, hogy 0 vagy 1 értéket küldnek a mikrovezérlőnek digitális adatként, ami azt jelenti, hogy "van" vagy "nincs" semmilyen darab a téren, ill. Hozzáadtam a LED -eket is (sajnos nem azonos színűek, nem voltak), hogy amikor felemeli a darabot, minden négyzet alakú hely, ahol egy felemelt darab elhelyezhető, világítani fog. Tekintsük úgy, mint egy sakktanulók oktatási gyakorlatát:)
Végül szeretném megjegyezni, hogy annak ellenére, hogy több technikát használtam, a projekt egyszerű és érthető marad, nem mélyen kidolgozott vagy túl bonyolult. Nem volt elég időm a 8x8-as sakktáblával folytatni (azért is, mert Törökországban 64 csarnok-hatású érzékelő költséges, a projekthez kapcsolódó összes költséget én fedeztem), ezért készítettem 4x4-es demo verziót, mindössze két darabot tesztelve: Zálog és Királynő. Sakkgép használata helyett forráskódot írtam az Arduino számára, amely mindent generál, amit az alábbi videóban látni fog.
2. lépés: A dolgok működése


Mielőtt átmennénk a projekt megvalósításának lépésről lépésre történő magyarázatára, úgy gondolom, jobb lenne, ha megnéznénk egy szemléltető videót, és intuitív ötletet kapnánk arról, hogy miről beszélek.
1. megjegyzés: az egyik piros LED (először a sorban/ balról jobbra) kiégett, mindegy.
2. megjegyzés: bár széles körben használják, tapasztalataim alapján elmondhatom, hogy az RFID technológia nem a legjobb ötlet a barkácsoláshoz (természetesen, ha vannak alternatívái). Mielőtt minden működött volna, sok kísérletet végeztem azzal, hogy a sakkfigurákat az olvasó közelébe helyeztem, és megvártam, amíg helyesen beolvassa az azonosítót. Ehhez soros portot kell beállítani, mert az, ahogy az RFID olvasó olvassa az azonosítót, csak fejtörést okoz. Az embernek önmagának kell megpróbálnia, hogy megértse a problémát. Ha további segítségre van szüksége, kérjük, írjon nekem e -mailt ([email protected]) vagy töltse fel a skype -on (tahir.miriyev9r1), hogy megbeszélhessünk egy beszélgetést és részletesen megbeszélhessük a dolgokat, mindent alaposan elmagyarázok.
3. lépés: Eszközök és alkatrészek



Itt található a projektben használt összes eszköz listája: Elektronikus alkatrészek:
- Breadboard (x1)
- Körirányú A1126LUA-T (IC-1126 SW OMNI 3-SIP ALLEGRO) Hall-hatású érzékelők (x16)
- Alap 5 mm -es LED -ek (x16)
- Jumper vezetékek
- 125 kHz RFID olvasó és antenna (x1)
- Arduino Mega (x1)
- RFID 3M címkék (x2)
Más anyagok:
- Plexiüveg
- Fényes papír
- rövid deszka (fa)
- Akrilfesték (sötétzöld és krémszínű) x2
- Vékony karton
- 10 mm -es kerek mágnesek (x2)
- Gyalog és királynő darabok
- Forrasztópáka és forrasztóanyagok
4. lépés: Sémák (Fritzing)

A vázlatok egy kicsit bonyolultak, tudom, de az ötletnek világosnak kell lennie. Ez volt az első alkalom, hogy a Fritzing -t használtam (egyébként erősen ajánlott), valószínűleg pontosabban meg lehet rajzolni az összefüggéseket. Mindenesetre mindent feljegyeztem a sémákon belül. Megjegyzés: Nem találtam meg az RDIF Reader pontos modelljét a Fritzing adatbázis összetevői között. Az általam használt modell 125Khz RFID modul - UART. A Youtube -on oktatóanyagokat talál arról, hogyan állíthatja be ezt a modult az Arduino segítségével.
5. lépés: Folyamat

Ideje elmagyarázni, hogyan készültek a dolgok. Kérjük, kövesse a részletes leírást:
1. Vegyen egy 21x21 cm -es kartont, valamint néhány extra kartont a tábla felső részének falainak vágásához és ragasztásához, hogy 16 négyzetet kapjon A B C D 1 2 3 4 felsorolással. Mivel a karton vékony, 16 csarnokhatású érzékelőt ragaszthat minden négyzetbe, egyenként 3 lábbal és 16 LED-del, 2 lábakkal.
2. Az alkatrészek beállítása után néhány forrasztást kell végeznie, a Hall-hatású érzékelők lábainak forrasztásához és a LED-eket az áthidaló vezetékekhez. Ezen a ponton azt javaslom, hogy intelligens módon válasszon színes vezetékeket, hogy ne tévesszen össze a LED -ek + és - lábaival, valamint a Hall -effektusok VCC, GND és PIN lábaival. Természetesen lehet nyomtatni egy NYÁK -t érzékelőkkel és akár WS2812 típusú LED -eket is forrasztva, de úgy döntöttem, hogy egyszerűbbé teszem a projektet, és több "kézimunkát" végzek. Ezen a ponton mindössze annyit kell tennie, hogy előkészíti a zsinórokat és az érzékelőket, a Fritzing -sémát követő későbbi szakaszokban láthatja, hogy hol kell rögzíteni az egyes vezetékek végét. Rövidesen néhány közülük közvetlenül az Arduino Mega PIN -kódjaihoz kerül (elég sok van az Arduino -n), mások a kenyérsütő táblához, és minden GND forrasztható egyetlen zsinórdarabra (közös alapot teremtve), amely később csatlakoztatni kell a GND -hez az Arduino táblán. Egy fontos megjegyzés: a Hall -hatású érzékelők OMNIDIRECTIONÁLISak, ami azt jelenti, hogy nem számít, hogy melyik mágnes pólusát tartják az érzékelő közelében, 0 adatot küld, amíg van valamilyen mágneses mező a közelben, és 1, ha nincs, nevezetesen, a mágnes távol van (mondjuk 5 cm -nél messzebb) az érzékelőtől.
3. Készítsen elő hasonló 21x21 cm -es kartont, és rögzítse rá az Arduino Mega -t és egy hosszú kenyérlapot. Ezenkívül ismét kivághat 4 tetszőleges magasságú falat kartonból, és függőlegesen ragaszthatja őket azzal a két 21x21 cm -es négyzet alakú táblával. Ezután kövesse a Fritzing Schematics -ot a dolgok beállításához. Beállíthatja az RFID olvasót is, miután végzett a LED-ekkel és a Hall-effektusokkal.
4. Ellenőrizze, hogy minden LED és érzékelő működik -e, azáltal, hogy jeleket küld az alapkódok használatával. Ne kerülje el ezt a lépést, mivel így tesztelheti, hogy minden megfelelően működik -e, és továbbléphet a tábla további építéséhez.
5. Készítse elő a Gyalogot és a Királynőt két alul 10 cm sugarú mágnessel, valamint kerek RFID -címkékkel. Később el kell olvasnia ezen címkék azonosítóit az Arduino IDE soros képernyőjén.
6. Ha minden remekül működik, elindíthatja a fő kódot, és kipróbálhatja a dolgokat!
7 (opcionális). Művészeti munkát végezhet a fával, amely természetesebb képet ad a bemutatónak. Ez a te akaratodon és fantáziádon múlik.
6. lépés: Néhány fotó és videó különböző szakaszokból




7. lépés: Forráskód

Most, amikor elkészültünk egy prototípussal, készen állunk életre kelteni az alábbi Arduino kóddal. Igyekeztem minél több megjegyzést hagyni, hogy érthető legyen a kódelemzés folyamata. Hogy őszinte legyek, a logika első látásra kissé bonyolultnak tűnhet, de ha jobban belemélyedünk a kód logikájába, akkor átfogóbbnak tűnik.
Megjegyzés: A valódi sakktáblahoz hasonlóan absztrakt módon négyzeteket számoztam A1, A2, A3, A4, B1,…, C1,…, D1,.., D4. A kódban azonban nem célszerű ezt a jelölést használni. Ezért tömböket használtam, és a négyzeteket 00, 01, 02, 03, 10, 11, 12, 13,…, 32, 33 -ként ábrázoltam.
Köszönöm a figyelmet! Teszteljen mindent, és írjon megjegyzéseket bármilyen hibáról, amit elmulasztottam, fejlesztésekről, javaslatokról stb. Várom a projekttel kapcsolatos véleményeket. Ha bármilyen segítségre van szüksége a projekthez, írjon nekem (miriyevt@gmail).com), vagy add hozzá a skype -hoz (tahir.miriyev9r1), hogy ütemezni tudjunk egy beszélgetést, és részletesen megbeszéljük a dolgokat. Sok szerencsét!