Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
Zdravo tvorci, Ja sam Tahir Miriyev, 2018. diplomirao na Srednjoistočnom tehničkom univerzitetu, Ankara/ Turska. Diplomirao sam primijenjenu matematiku, ali uvijek sam volio stvarati stvari, posebno kada se radilo o nekim ručnim radovima s elektronikom, dizajnom i programiranjem. Zahvaljujući jedinstvenom tečaju o prototipiranju, koji se nudi na našem odjelu za industrijski dizajn, dobio sam priliku napraviti nešto zaista zanimljivo. Projekat se može tretirati kao ročni projekat, koji je trajao čitav semestar (4 mjeseca). Studenti su dobili zadatak da pronađu kreativan pristup dizajniranju već postojećih proizvoda/demonstracija i realiziraju svoje ideje pomoću Arduino mikrokontrolera i senzora. Razmišljao sam o šahu, a nakon istraživanja o uspješnim projektima primijetio sam da su u prethodnim projektima tvorci u osnovi koristili gotove šahovske strojeve (gdje su svi potezi svake figure programirani u jezgri), zajedno s Raspberry Pi-om, nekim MUX-om, LED i trska. U svom sam projektu ipak odlučio riješiti se bilo kojeg vanjskog softvera u smislu šahovske mašine i pronaći kreativno rješenje za problem prepoznavanja figura, koristeći RFID čitač, Hall-efektne senzore i Arduino Mega.
Korak 1: Šta je problem prepoznavanja figure i kako sam ga riješio
Jednostavnije rečeno, pretpostavimo da imate šahovsku ploču s "mozgom" = mikrokontrolerom i morate svoju tablu razumjeti koju ste figuru držali u ruci i gdje ste je stavili. Ovo je problem prepoznavanja slike. Rješenje ovog problema je trivijalno ako imate šahovski motor sa svim figurama koje stoje na svojim početnim pozicijama na tabli. Prije nego što objasnim zašto je to tako, dopustite mi da napravim nekoliko napomena.
Za one koji su oduševljeni kako stvari ovdje funkcioniraju, moram pojasniti zašto su nam potrebni trskani prekidači (ili sam u mom slučaju koristio Hall-ove senzore): ako postavite magnet ispod svakog komada i pokupite ga s kvadrat na ploči (pod pretpostavkom da se ispod svakog kvadrata nalazi trska) zbog postojanja/nepostojanja magnetskog polja iznad senzora, možete učiniti da vaš kontroler shvati postoji li/ne stoji komad na kvadratu. Međutim, još uvijek ništa ne govori mikrokontroleru o tome koji komad stoji na kvadratu. On samo govori da postoji/ne komad na kvadratu. U ovom trenutku suočeni smo s problemom prepoznavanja figura, koji se može riješiti pomoću šahovske mašine, sa svim figurama koje se postavljaju na početne položaje kada počne šahovska igra. Na ovaj način mikrokontroler "zna" gdje svaki komad stoji od početka, sa svim adresama fiksnim u memoriji. Ipak, ovo nam donosi veliko ograničenje: ne možete odabrati, recimo, bilo koji broj komada i nasumično ih postaviti bilo gdje na ploču i početi analizirati igru. Uvijek morate početi od početka, svi komadi bi trebali biti na ploči, jer je to jedini način da mikrokontroler prati njihove lokacije nakon što podignete komad i postavite ga na neki drugi kvadrat. U suštini, to je bio problem koji sam primijetio i odlučio raditi na tome.
Moje rješenje je bilo prilično jednostavno, iako kreativno. Postavio sam RFID čitač na prednju stranu ploče. U međuvremenu, ispod komada sam pričvrstio ne samo magnet, već i RFID oznaku, pri čemu je svaki komad imao jedinstveni ID. Stoga, prije nego što postavite figuru na bilo koji željeni kvadrat, najprije možete držati komad blizu RFID čitača i pustiti ga da pročita ID, identificirati komad, spremiti ga u memoriju, a zatim ga možete postaviti gdje god želite. Također, umjesto reed prekidača, kako bih pojednostavio dizajn kola, upotrijebio sam senzore s Hall efektom, koji rade na sličan način, s jedinom razlikom što 0 ili 1 šalju mikrokontroleru kao digitalni podatak, što znači "postoji" ili "nema" bilo kojeg komada na kvadratu. Dodao sam i LED diode (nažalost nisu iste boje, nisu ih imale), tako da će, kad podignete komad, zasvijetliti sve kvadratne lokacije na koje bi se mogao staviti podignuti komad. Zamislite to kao obrazovnu praksu za učenike šaha:)
Na kraju, želio bih napomenuti da je, unatoč činjenici da sam koristio nekoliko tehnika, projekt ostao jednostavan i razumljiv, nije duboko razrađen ili previše kompliciran. Nisam imao dovoljno vremena da nastavim sa šahovskom tablom 8x8 (takođe zato što su 64 senzora sa efektom dvorane skupi u Turskoj, pokrio sam sve troškove vezane za projekciju), zato sam napravio demo verziju 4x4 sa samo dva testirana komada: Založenim i Queen. Umjesto da koristim šahovski stroj, napisao sam izvorni kod za Arduino, koji generira sve što ćete vidjeti u donjem videu.
Korak 2: Kako stvari funkcioniraju
Prije nego što pređemo na korak-po-korak objašnjenje kako je projekt rađen, mislim da bi bilo bolje pogledati ilustrativni video i steći neku intuitivnu ideju o čemu govorim.
Napomena #1: jedna od crvenih LED dioda (prva u nizu/ s lijeva na desno) je izgorjela, nema veze.
Napomena #2: Iako se široko koristi, iz svog iskustva mogu reći da RFID tehnologija nije najbolja ideja za korištenje u DIY aplikacijama (naravno ako imate alternative). Prije nego što je sve uspjelo, napravio sam mnogo pokušaja stavljajući šahovske figure blizu čitača i čekajući da ispravno pročita ID. Za to je potrebno postaviti serijski port jer način na koji RFID čitač čita ID samo je glavobolja. Treba pokušati sam kako bi razumio problem. Ako vam je potrebna dodatna pomoć, pošaljite mi poruku ([email protected]) ili dodajte na skype (tahir.miriyev9r1), kako bismo mogli zakazati razgovor i detaljno razgovarati o stvarima, sve ću vam detaljno objasniti.
Korak 3: Alati i komponente
Evo popisa svih alata koje sam koristio za projekt: Elektroničke komponente:
- Oglasna ploča (x1)
- Omnidirekcijski A1126LUA-T (IC-1126 SW OMNI 3-SIP ALLEGRO) Senzori Hall efekta (x16)
- Osnovne LED diode od 5 mm (x16)
- Žice za kratkospojnike
- 125 kHz RFID čitač i antena (x1)
- Arduino Mega (x1)
- RFID 3M oznake (x2)
Ostali materijali:
- Pleksiglas
- Sjajni papir
- kratke daske (drvene)
- Akrilna boja (tamno zelena i krem) x2
- Tanki karton
- Okrugli magneti 10 mm (x2)
- Komadi zalagaonice i kraljice
- Lemilica i materijali za lemljenje
Korak 4: Sheme (fritzing)
Sheme su malo komplicirane, znam, ali ideja bi trebala biti jasna. To je bio prvi put da sam koristio Fritzing (usput preporučeno), vjerovatno bi se veze mogle preciznije izvući. U svakom slučaju, zabilježio sam sve unutar shema. Napomena: Nisam mogao pronaći tačan model RDIF čitača među komponentama u bazi podataka Fritzinga. Model koji sam koristio je RFID modul od 125Khz - UART. Na Youtube -u možete pronaći uputstva o tome kako postaviti ovaj modul s Arduinom.
Korak 5: Obrada
Vrijeme je da objasnite kako su stvari nastale. Slijedite detaljni opis:
1. Uzmite karton dimenzija 21x21 cm, kao i dodatni karton za rezanje i lijepljenje zidova gornjeg dijela ploče, kako biste napravili 16 kvadrata sa nabrojanim A B C D 1 2 3 4. Budući da je karton tanak, u svaki kvadrat možete ubaciti 16 senzora s Hall efektom, sa po 3 nožice i 16 LED dioda sa po 2 noge.
2. Nakon što postavite komponente, morat ćete izvršiti malo lemljenja, za lemljenje nogu Hall-ovih senzora i LED dioda na kratkospojnike. U ovom trenutku preporučio bih odabir žica u boji na pametan način, tako da se nećete zbuniti sa + i - nogama LED dioda, također VCC, GND i PIN nogama Hall senzora. Naravno, moglo bi se odštampati PCB sa senzorima, pa čak i sa LED -om tipa WS2812 koji su već lemljeni, ali odlučio sam da projekt bude jednostavan i da uradim još "ručni rad". U ovom trenutku sve što trebate učiniti je pripremiti kabele i senzore. U kasnijim fazama slijedeći Fritzing shemu možete vidjeti gdje trebate pričvrstiti kraj svake žice. Ubrzo će neki od njih otići izravno na PIN -ove na Arduino Mega -i (ima ih dovoljno na Arduinu), drugi na matičnu ploču i svi GND -ovi mogu biti lemljeni na jedan komad kabela (čineći zajedničku osnovu) koji će kasnije treba spojiti na GND na Arduino ploči. Jedna važna napomena ovdje: Hall senzori su OMNIDIRKCIONALNI, što znači da nije važno koji pol magneta će se držati blizu senzora, on će slati 0 podataka dok je u blizini neko magnetsko polje, a 1 kada nema, naime, magnet je udaljen (dalje od recimo 5 cm) od senzora.
3. Pripremite sličan karton dimenzija 21x21 cm i na njega pričvrstite Arduino Mega i dugu ploču. Također možete ponovo izrezati 4 zida bilo koje visine od kartona i zalijepiti ih okomito sa ta dva sloja kvadratnih ploča dimenzija 21x21 cm. Zatim slijedite Fritzing Schematics da biste postavili stvari. RFID čitač možete postaviti i nakon što završite sa LED diodama i Hall-efektnim senzorima.
4. Testirajte da li sve LED i senzori rade, slanjem signala koristeći osnovne kodove. Ne izbjegavajte ovaj korak jer će vam omogućiti da provjerite funkcionira li sve kako treba i preći na daljnju izgradnju ploče.
5. Pripremite Zalagaonicu i Kraljicu, sa dva magneta promjera 10 cm pričvršćena ispod, kao i okruglim RFID oznakama. Kasnije ćete morati pročitati ID -ove tih oznaka sa serijskog zaslona na Arduino IDE -u.
6. Ako sve funkcionira odlično, možete pokrenuti glavni kod i isprobati stvari!
7 (opcionalno). Možete raditi neke umjetničke radove s drvetom koji će vašem demo -u dati prirodniji izgled. To je na vašoj volji i mašti.
Korak 6: Neke fotografije i video zapisi iz različitih faza
Korak 7: Izvorni kod
Sada, kada završimo s prototipom, spremni smo oživjeti ga s Arduino kodom u nastavku. Pokušao sam ostaviti što više komentara kako bih proces analize koda učinio razumljivim. Da budem iskren, logika bi na prvi pogled mogla izgledati pomalo složena, ali ako dublje uđete u logiku koda, izgledat će opsežnije.
Napomena: Slično stvarnoj šahovskoj tabli, apstraktno sam numerisao kvadrate kao A1, A2, A3, A4, B1,…, C1,…, D1,.., D4. Međutim, u kodu nije praktično koristiti ovu notaciju. Stoga sam koristio nizove i predstavljao kvadrate kao 00, 01, 02, 03, 10, 11, 12, 13,…, 32, 33 respektivno.
Hvala vam na pažnji! Testirajte sve i slobodno pišite u komentarima o bilo kojoj grešci koju sam propustio, poboljšanjima, prijedlozima itd. Radujem se što ću čuti mišljenja o projektu. Ako vam je potrebna bilo kakva pomoć u vezi projekta, pošaljite mi poruku ([email protected]) ili dodajte na skype (tahir.miriyev9r1), tako da možemo zakazati razgovor i detaljno razgovarati o stvarima. Sretno!