Turinys:
- 1 žingsnis: kas yra figūros atpažinimo problema ir kaip ją išsprendžiau
- 2 žingsnis: kaip viskas veikia
- 3 žingsnis: įrankiai ir komponentai
- 4 žingsnis: Schemos (Fritzing)
- 5 žingsnis: procesas
- 6 veiksmas: kai kurios nuotraukos ir vaizdo įrašai iš skirtingų etapų
- 7 žingsnis: šaltinio kodas
Video: 4x4 elektroninės šachmatų lentos demonstracija/ su „Arduino Mega“+ RFID skaitytuvu + salės efekto jutikliais: 7 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
Sveiki kūrėjai, Esu Tahiras Mirijevas, 2018 m. Baigęs Artimųjų Rytų technikos universitetą, Ankarą/ Turkiją. Baigiau taikomosios matematikos specialybę, tačiau visada mėgau gaminti daiktus, ypač kai tai buvo susiję su rankomis su elektronika, dizainu ir programavimu. Dėka unikalių prototipų kūrimo kursų, siūlomų mūsų Pramoninio dizaino skyriuje, turėjau galimybę padaryti kažką tikrai įdomaus. Projektą galima laikyti terminuotu projektu, kuris truko visą semestrą (4 mėnesius). Mokiniams buvo pavesta rasti kūrybišką požiūrį kuriant jau esamus produktus/demonstracines versijas ir įgyvendinti savo idėjas naudojant „Arduino“mikrovaldiklius ir jutiklius. Aš galvojau apie šachmatus ir atlikęs sėkmingų projektų tyrimus pastebėjau, kad ankstesniuose projektuose kūrėjai iš esmės naudojo paruoštus šachmatų variklius (kur visi figūros judesiai buvo užprogramuoti šerdyje), kartu su „Raspberry Pi“ir kai kuriais MUX Es, šviesos diodai ir nendriniai jungikliai. Nors savo projekte nusprendžiau atsikratyti bet kokios išorinės šachmatų variklio programinės įrangos ir rasti kūrybišką figūros atpažinimo problemos sprendimą, naudojant RFID skaitytuvą, „Hall-effect“jutiklius ir „Arduino Mega“.
1 žingsnis: kas yra figūros atpažinimo problema ir kaip ją išsprendžiau
Paprasčiau tariant, tarkime, kad turite šachmatų lentą su „smegenimis“= mikrovaldikliu ir turite priversti savo lentą suprasti, kurią figūrą laikėte rankoje ir kur padėjote. Tai yra paveikslo atpažinimo problema. Šios problemos sprendimas yra nereikšmingas, kai turite šachmatų variklį, kuriame visos figūros stovi savo pradinėse lentos vietose. Prieš paaiškindamas, kodėl taip yra, leiskite man padaryti keletą pastabų.
Tiems, kurie yra entuziastingi, kaip čia viskas vyksta, turiu paaiškinti, kodėl mums reikia nendrių jungiklių (arba mano atveju naudojau „Hall“efekto jutiklius): jei po kiekvienu gabalu padėsite magnetą ir jį paimsite iš kvadratas lentoje (darant prielaidą, kad po kiekvienu kvadratu yra nendrinis jungiklis) dėl to, kad virš jutiklio yra/nėra magnetinio lauko, galite priversti savo valdiklį suprasti, ar ant kvadrato nėra gabalo. Tačiau jis vis tiek nieko nesako mikrovaldikliui apie tai, kuris gabalas stovi aikštėje. Tai tik pasako, kad kvadrate yra/nėra gabalo. Šiuo metu susiduriame akis į akį su figūros atpažinimo problema, kurią galima išspręsti naudojant šachmatų variklį, pradėjus šachmatų žaidimą visas dalis sudėti į pradines pozicijas. Tokiu būdu mikrovaldiklis „žino“, kur kiekvienas gabalas stovi nuo pat pradžių, o visi adresai yra užfiksuoti atmintyje. Nepaisant to, tai suteikia mums didžiulį apribojimą: jūs negalite pasirinkti, tarkime, bet kokio gabalų skaičiaus ir atsitiktinai įdėti juos bet kurioje lentos vietoje ir pradėti analizuoti žaidimą. Jūs visada turite pradėti nuo pradžių, visi gabalai iš pradžių turėtų būti lentoje, nes tik taip mikrovaldiklis gali sekti savo vietą, kai pakeliate gabalėlį ir padedate jį kitoje aikštėje. Iš esmės tai buvo problema, kurią pastebėjau ir nusprendžiau dirbti.
Mano sprendimas buvo gana paprastas, nors ir kūrybingas. RFID skaitytuvą įdėjau į priekinę plokštės pusę. Tuo tarpu po gabalais pritvirtinau ne tik magnetą, bet ir RFID žymę, kiekviena dalis turėjo unikalų ID. Taigi, prieš padėdami figūrą ant norimo kvadrato, pirmiausia galite laikyti kūrinį prie RFID skaitytuvo ir leisti jam nuskaityti ID, identifikuoti kūrinį, išsaugoti jį atmintyje ir tada įdėti jį kur tik norite. Be to, vietoj nendrių jungiklių, norėdamas supaprastinti grandinės dizainą, naudojau salės efekto jutiklius, kurie veikia panašiai, vienintelis skirtumas yra tai, kad 0 arba 1 siunčiami mikrovaldikliui kaip skaitmeniniai duomenys, o tai reiškia „yra“arba „nėra“jokio gabalo aikštėje. Aš taip pat pridėjau šviesos diodų (deja, ne tos pačios spalvos, neturėjau), kad kai pakelsite gabalą, užsidegs visos kvadratinės vietos, kuriose galima įdėti pakeltą detalę. Pagalvokite apie tai kaip apie švietimo praktiką besimokantiems:)
Galiausiai norėčiau pažymėti, kad, nepaisant to, kad naudojau keletą metodų, projektas išlieka paprastas ir suprantamas, o ne giliai parengtas ar pernelyg sudėtingas. Aš neturėjau pakankamai laiko tęsti 8x8 šachmatų lentą (taip pat dėl to, kad Turkijoje kainuoja 64 salės efekto jutikliai, aš padengiau visas su projektu susijusias išlaidas), todėl aš padariau 4x4 demonstracinę versiją, kurioje buvo išbandytos tik dvi dalys: Lombardas ir Karalienė. Užuot naudojęs šachmatų variklį, parašiau „Arduino“šaltinio kodą, kuris sugeneruoja viską, ką pamatysite toliau pateiktame vaizdo įraše.
2 žingsnis: kaip viskas veikia
Prieš pereidami prie nuoseklaus projekto įgyvendinimo paaiškinimo, manau, kad geriau būtų pažiūrėti iliustratyvų vaizdo įrašą ir intuityviai suprasti, apie ką aš kalbu.
1 pastaba: vienas iš raudonų šviesos diodų (pirmasis iš eilės/ iš kairės į dešinę) sudegė, nesvarbu.
2 pastaba: nors ir plačiai naudojamas, iš savo patirties galiu pasakyti, kad RFID technologija nėra geriausia idėja naudoti „pasidaryk pats“programose (žinoma, jei turite alternatyvų). Prieš tai, kai viskas pavyko, aš išbandžiau daug šachmatų figūrų prie skaitytuvo ir laukiau, kol jis teisingai nuskaitys asmens tapatybės dokumentą. Tam turėtų būti nustatytas nuoseklusis prievadas, nes tai, kaip RFID skaitytuvas skaito ID, yra tik galvos skausmas. Reikėtų pačiam pabandyti, kad suprastumėte problemą. Jei jums reikia daugiau pagalbos, rašykite man el. Paštu ([email protected]) arba pridėkite „skype“(tahir.miriyev9r1), kad galėtume suplanuoti pokalbį ir išsamiai aptarti dalykus, aš viską išsamiai paaiškinsiu.
3 žingsnis: įrankiai ir komponentai
Čia yra visų projektui naudotų įrankių sąrašas: Elektroniniai komponentai:
- Duonos lenta (x1)
- Kryptinis A1126LUA-T (IC-1126 SW OMNI 3-SIP ALLEGRO) „Hall“efekto jutikliai (x16)
- Pagrindiniai 5 mm šviesos diodai (x16)
- Jumperio laidai
- 125 kHz RFID skaitytuvas ir antena (x1)
- „Arduino Mega“(x1)
- RFID 3M žymos (x2)
Kitos medžiagos:
- Plexiglass
- Blizgus popierius
- trumpos lentos (medinės)
- Akriliniai dažai (tamsiai žalia ir kreminė) x2
- Plonas kartonas
- 10 mm apvalūs magnetai (x2)
- Lombardo ir karalienės kūriniai
- Lituoklis ir litavimo medžiagos
4 žingsnis: Schemos (Fritzing)
Aš žinau, kad schemos yra šiek tiek sudėtingos, tačiau idėja turėtų būti aiški. Tai buvo pirmas kartas, kai naudojau „Fritzing“(beje, labai rekomenduojama), tikriausiai ryšius būtų galima nubrėžti tiksliau. Bet kokiu atveju, aš pažymėjau viską schemose. Pastaba: neradau tikslaus RDIF skaitytuvo modelio tarp „Fritzing“duomenų bazės komponentų. Mano naudojamas modelis yra 125Khz RFID modulis - UART. „Youtube“rasite pamokų, kaip nustatyti šį modulį naudojant „Arduino“.
5 žingsnis: procesas
Laikas paaiškinti, kaip viskas buvo padaryta. Sekite žingsnis po žingsnio aprašymą:
1. Paimkite 21x21 cm kartoną ir šiek tiek papildomo kartono, kad supjaustytumėte ir priklijuotumėte viršutinės lentos dalies sienas, kad būtų 16 kvadratų su A B C D 1 2 3 4. Kadangi kartonas yra plonas, į kiekvieną kvadratą galite įklijuoti 16 salės efekto jutiklių su 3 kojomis ir 16 šviesos diodų su 2 kojelėmis.
2. Nustatę komponentus, turėsite atlikti litavimą, prie Hall-efekto jutiklių kojelių ir šviesos diodų prie jungiamųjų laidų. Šiuo metu rekomenduočiau protingai pasirinkti spalvotus laidus, kad nesusipainiotumėte su šviesos diodų „ +“ir „kojelėmis“, taip pat „Hall -effect“jutiklių VCC, GND ir PIN kojelėmis. Žinoma, galima spausdinti PCB su jutikliais ir net WS2812 tipo šviesos diodais, kurie jau yra prilituoti, bet aš nusprendžiau išlaikyti projektą paprastą ir atlikti daugiau „rankų darbo“. Šiuo metu viskas, ką jums reikia padaryti, tai paruošti laidus ir jutiklius. Vėlesniuose etapuose, atliktuose pagal „Fritzing“schemą, galite pamatyti, kur turėtumėte pritvirtinti kiekvieno laido galą. Netrukus kai kurie iš jų pateks tiesiai į „Arduino Mega“PIN kodus (jų yra pakankamai „Arduino“), kiti - prie duonos lentos ir visi GND gali būti lituojami prie vieno laido gabalo (sudarydami bendrą pagrindą), kuris vėliau turėtų būti prijungtas prie GND „Arduino“plokštėje. Viena svarbi pastaba: „Hall“efekto jutikliai yra OMNIDIRECTIONAL, tai reiškia, kad nesvarbu, kuris magneto polius bus laikomas arti jutiklio, jis siųs 0 duomenų, kai netoliese yra magnetinis laukas, ir 1, kai jo nėra, būtent magnetas yra nutolęs (toliau nei 5 cm) nuo jutiklio.
3. Paruoškite panašų 21x21 cm kartoną ir pritvirtinkite prie jo „Arduino Mega“ir ilgą duonos lentą. Taip pat iš kartono galite dar kartą iškirpti 4 bet kokio norimo aukščio sienas ir klijuoti jas vertikaliai tais dviem 21x21 cm kvadratinių lentų sluoksniais. Tada atlikite „Fritzing Schematics“, kad nustatytumėte dalykus. Taip pat galite nustatyti RFID skaitytuvą, kai baigsite naudoti šviesos diodus ir „Hall“efekto jutiklius.
4. Patikrinkite, ar veikia visi šviesos diodai ir jutikliai, siunčiant signalus naudojant pagrindinius kodus. Nevenkite šio žingsnio, nes tai leis jums patikrinti, ar viskas veikia tinkamai, ir pereiti prie tolesnės plokštės konstrukcijos.
5. Paruoškite „Lombardą“ir „Karalienę“, apačioje pritvirtindami du 10 cm spindulio magnetus, taip pat apvalias RFID žymes. Vėliau turėsite perskaityti šių žymų ID iš „Arduino IDE“serijos ekrano.
6. Jei viskas veikia puikiai, galite pradėti pagrindinį kodą ir išbandyti viską!
7 (neprivaloma). Galite atlikti meninį darbą su medžiu, kuris suteiks jūsų demonstracijai natūralesnį vaizdą. Tai priklauso nuo jūsų valios ir vaizduotės.
6 veiksmas: kai kurios nuotraukos ir vaizdo įrašai iš skirtingų etapų
7 žingsnis: šaltinio kodas
Dabar, kai baigsime prototipą, būsime pasirengę jį atgaivinti naudodami žemiau esantį „Arduino“kodą. Stengiausi palikti kuo daugiau komentarų, kad kodo analizės procesas būtų suprantamas. Tiesą sakant, logika iš pirmo žvilgsnio gali atrodyti šiek tiek sudėtinga, tačiau jei įsigilinsite į kodo logiką, ji atrodys išsamesnė.
Pastaba: panašiai kaip tikroji šachmatų lenta, aš abstrakčiai skaičiuoju kvadratus kaip A1, A2, A3, A4, B1,…, C1,…, D1,.., D4. Tačiau kodekse nepraktiška naudoti šį žymėjimą. Todėl aš naudojau masyvus ir kvadratus pavaizdavau atitinkamai 00, 01, 02, 03, 10, 11, 12, 13,…, 32, 33.
Ačiū už dėmesį! Išbandykite viską ir laisvai rašykite komentaruose apie bet kokias klaidas, kurias praleidau, patobulinimus, pasiūlymus ir pan. Tikiuosi išgirsti keletą nuomonių apie projektą. Jei jums reikia bet kokios pagalbos vykdant projektą, rašykite man (miriyevt@gmail).com) arba pridėti prie „Skype“(tahir.miriyev9r1), kad galėtume suplanuoti pokalbį ir išsamiai aptarti dalykus. Didžiausios sėkmės!