INHOUDSOPGAWE:
- Stap 1: Wat is 'n figuurherkenningsprobleem en hoe het ek dit opgelos?
- Stap 2: Hoe dinge werk
- Stap 3: Gereedskap en komponente
- Stap 4: Skema's (Fritzing)
- Stap 5: Verwerk
- Stap 6: 'n Paar foto's en video's uit verskillende stadiums
- Stap 7: Bronkode
Video: 4x4 Demo van 'n elektroniese skaakbord/ Met Arduino Mega + RFID-leser + Hall-effek sensors: 7 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:26
Hallo makers, Ek is Tahir Miriyev, 2018 -gegradueerde aan die Midde -Ooste Tegniese Universiteit, Ankara/ Turkye. Ek het 'n vak toegepaste wiskunde behaal, maar ek was nog altyd dol daaroor om dinge te maak, veral as dit handwerk met elektronika, ontwerp en programmering behels. Danksy 'n unieke kursus oor prototipes wat aangebied word by ons departement vir industriële ontwerp, het ek die kans gekry om iets baie interessant te maak. Die projek kan behandel word as 'n kwartaalprojek, geduur vir 'n hele semester (4 maande). Studente het 'n taak gekry om 'n kreatiewe benadering tot die ontwerp van reeds bestaande produkte/demo's te vind en hul idees te verwesenlik met behulp van Arduino -mikrobeheerders en sensors. Ek het gedink aan skaak, en nadat ek navorsing gedoen het oor suksesvolle projekte, het ek opgemerk dat makers in vorige projekte basies gereedgemaakte skaakmotors gebruik het (waar alle bewegings van elke figuur in die kern geprogrammeer is), saam met Raspberry Pi, sommige MUX Dit is LED's en rietskakelaars. In my projek het ek egter besluit om van eksterne sagteware ontslae te raak in terme van 'n skaakmotor, en om 'n kreatiewe oplossing vir die figuurherkenningsprobleem te vind, met behulp van RFID-leser, Hall-effek sensors en Arduino Mega.
Stap 1: Wat is 'n figuurherkenningsprobleem en hoe het ek dit opgelos?
Om dit eenvoudig te stel, veronderstel jy het 'n skaakbord met 'n "brein" = mikrobeheerder, en jy moet jou bord laat verstaan watter figuur jy in jou hand gehou het en waar jy dit geplaas het. Dit is die probleem van figuurherkenning. Die oplossing vir hierdie probleem is triviaal as u 'n skaakmotor het met alle stukke op hul aanvanklike posisies op die bord. Voordat ek verduidelik waarom dit so is, wil ek 'n paar opmerkings maak.
Vir diegene wat entoesiasties is oor hoe dinge hier werk, moet ek verduidelik waarom ons rietskakelaars nodig het (of in my geval het ek Hall-effek sensors gebruik): as u 'n magneet onder elke stuk plaas en dit opneem 'n vierkant op die bord (as ons aanneem dat daar 'n rietskakelaar onder elke vierkant is) as gevolg van die bestaan van die magnetiese veld bo die sensor, kan u u kontroleerder laat verstaan of daar 'n stuk op die vierkant is of nie. Dit vertel die mikrobeheerder egter nog steeds niks presies watter stuk op die vierkant staan nie. Dit vertel slegs dat daar 'n stuk op 'n vierkant is. Op hierdie punt staan ons voor 'n figuurherkenningsprobleem, wat met 'n skaakmotor opgelos kan word, en alle stukke op hul aanvanklike posisies geplaas word wanneer die skaakspel begin. Op hierdie manier "weet" die mikrobeheerder waar elke stuk van die begin af staan, met alle adresse in die geheue. Dit bring ons egter 'n groot beperking: u kan nie, laat ons sê, 'n aantal stukke kies en willekeurig oral op die bord plaas nie en die spel begin ontleed. U moet altyd van die begin af begin; alle stukke moet oorspronklik op die bord wees, want dit is die enigste manier waarop die mikrobeheerder hul ligging kan opspoor sodra u 'n stuk gelig het en op 'n ander vierkant geplaas het. In wese was dit die probleem wat ek opgemerk het en besluit het om na te streef.
My oplossing was redelik eenvoudig, hoewel kreatief. Ek het 'n RFID -leser aan die voorkant van 'n bord geplaas. Intussen het ek nie net 'n magneet onder stukke aangebring nie, maar ook 'n RFID -etiket, met elke stuk 'n unieke ID. Voordat u 'n figuur op 'n gewenste vierkant plaas, kan u die stuk eers naby die RFID -leser hou en die ID laat lees, die stuk identifiseer, dit in die geheue stoor en dan kan u dit plaas waar u wil. In plaas van om rietskakelaars te gebruik, het ek ook, om die ontwerp van die stroombaan te vereenvoudig, hall-effek sensors gebruik, wat op dieselfde manier werk, met die enigste verskil om 0 of 1 na 'n mikrobeheerder te stuur as digitale data, wat beteken "daar is" of 'daar is' geen stuk op die vierkant nie. Ek het ook LED's bygevoeg (ongelukkig nie van dieselfde kleur nie, het ook nie een gehad nie), sodat wanneer u die stuk lig, alle vierkantige liggings, waar 'n opgehefde stuk geplaas kan word, sal brand. Beskou dit as 'n opvoedkundige praktyk vir skaakleerders:)
Ten slotte wil ek daarop let dat, ondanks die feit dat ek verskeie tegnieke gebruik het, die projek eenvoudig en verstaanbaar is, nie diep uitgewerk of ingewikkeld is nie. Ek het nie genoeg tyd gehad om met die 8x8-skaakbord voort te gaan nie (ook omdat 64 saal-effek-sensors duur is in Turkye, ek het alle uitgawes wat verband hou met die projekte gedek), daarom het ek 'n 4x4-demo-weergawe gedoen met slegs twee stukke getoets: pion en Koningin. In plaas daarvan om 'n skaakmotor te gebruik, het ek 'n bronkode vir Arduino geskryf, wat alles genereer wat u in die onderstaande video kan sien.
Stap 2: Hoe dinge werk
Voordat ons stap-vir-stap verduidelik hoe die projek uitgevoer is, dink ek dat dit beter sou wees om na 'n illustratiewe video te kyk en 'n intuïtiewe idee te kry van waaroor ek praat.
Let op nommer 1: een van die rooi LED's (eerste in die ry/ van links na regs) het uitgebrand, dit is nie 'n probleem nie.
Opmerking 2: alhoewel dit wyd gebruik word, kan ek uit my ervaring sê dat die RFID -tegnologie nie die beste idee is om in DIY -toepassings te gebruik nie (natuurlik as u alternatiewe het). Voordat alles gewerk het, het ek baie toetse gedoen om skaakstukke naby die leser te plaas en te wag totdat dit die ID korrek lees. Daarvoor moet 'n seriële poort ingestel word, want die manier waarop RFID -leser die ID lees, is net 'n hoofpyn. 'N Mens moet self probeer om die kwessie te verstaan. As u meer hulp nodig het, stuur 'n e -pos aan my ([email protected]) of voeg op skype (tahir.miriyev9r1) toe, sodat ons 'n gesprek kan reël en dinge in detail kan bespreek; ek sal alles deeglik verduidelik.
Stap 3: Gereedskap en komponente
Hier is die lys van al die gereedskap wat ek vir die projek gebruik het: Elektroniese komponente:
- Broodbord (x1)
- Omnidireksionele A1126LUA-T (IC-1126 SW OMNI 3-SIP ALLEGRO) Hall-effek sensors (x16)
- Basiese 5 mm LED's (x16)
- Springdrade
- 125 kHz RFID -leser en antenne (x1)
- Arduino Mega (x1)
- RFID 3M -etikette (x2)
Ander materiale:
- Plexiglas
- Glanspapier
- kort plankies (hout)
- Akrielverf (donkergroen en creme) x2
- Dun karton
- 10 mm ronde magnete (x2)
- Pion en Queen stukke
- Soldeerbout en soldeermateriaal
Stap 4: Skema's (Fritzing)
Skemas is 'n bietjie ingewikkeld, ek weet, maar die idee moet duidelik wees. Dit was die eerste keer dat ek Fritzing gebruik het (terloops sterk aanbeveel), waarskynlik kon ek noukeuriger verbindings maak. In elk geval het ek alles in die skemas aangeteken. Let wel: Ek kon nie die presiese model van RDIF Reader onder die komponente in die databasis van Fritzing vind nie. Die model wat ek gebruik het, is 125Khz RFID -module - UART. U kan tutoriale op Youtube vind oor hoe u hierdie module met Arduino instel.
Stap 5: Verwerk
Tyd om te verduidelik hoe dinge gemaak is. Volg die stap-vir-stap beskrywing:
1. Neem 'n karton van 21x21 cm, asook 'n ekstra karton om die mure van die boonste gedeelte van die bord te sny en te plak om 16 vierkante te maak met A B C D 1 2 3 4 opgesom. Aangesien karton dun is, kan u 16 saal-effek-sensors in elke vierkant plak, met 3 bene elk en 16 LED's met 2 bene elk.
2. Nadat u die komponente ingestel het, moet u soldeer om die bene van Hall-effek sensors en LED's aan die drade te soldeer. Op hierdie stadium sou ek aanbeveel dat u gekleurde drade op 'n slim manier kies, sodat u nie verwar word met die + en - bene van LED's nie, ook VCC-, GND- en PIN -bene van Hall -effek -sensors. Natuurlik kan u 'n PCB met sensors en selfs WS2812 -tipe LED's wat reeds gesoldeer is, druk, maar ek het besluit om die projek eenvoudig te hou en nog 'handwerk' te doen. Op hierdie stadium hoef u net toue en sensors voor te berei; op latere stadiums na die Fritzing -skema kan u sien waar u die einde van elke draad moet heg. Sommige gaan binnekort direk na die PIN's op die Arduino Mega (daar is genoeg op die Arduino), ander na die broodbord en alle GND's kan aan 'n enkele stuk koord (wat gemeen word) gesoldeer word, wat later moet gekoppel wees aan die GND op die Arduino -bord. Een belangrike opmerking hier: Hall -effek sensors is OMNIDIRECTIONEL, wat beteken dat dit nie saak maak watter paal van 'n magneet naby die sensor gehou sal word nie; dit stuur 0 data terwyl daar 'n magneetveld in die buurt is en 1 wanneer dit nie is nie, die magneet is naamlik weg (verder as byvoorbeeld 5 sm) van die sensor af.
3. Berei soortgelyke karton van 21x21 cm voor en maak die Arduino Mega en 'n lang broodbord daarop vas. U kan ook weer 4 mure van enige gewenste hoogte van karton afsny en dit vertikaal plak met die twee lae 21x21 cm vierkante planke. Volg dan Fritzing Schematics om dinge op te stel. U kan die RFID-leser ook instel nadat u klaar is met LED's en Hall-effek sensors.
4. Toets of alle LED's en sensors werk deur seine te stuur met basiese kodes. Moenie hierdie stap vermy nie, want dit sal u toelaat om te toets of alles behoorlik werk en oorgaan tot die verdere konstruksie van die bord.
5. Berei Pion en Queen voor, met twee magnete van 'n radius van 10 cm hieronder, asook ronde RFID -etikette. U moet later die ID's van die etikette vanaf die Serial Screen op Arduino IDE lees.
6. As alles goed werk, kan u die hoofkode begin en dinge probeer!
7 (opsioneel). U kan kunswerk met hout verrig, wat u demo 'n meer natuurlike uitkyk gee. Dit hang af van u wil en verbeelding.
Stap 6: 'n Paar foto's en video's uit verskillende stadiums
Stap 7: Bronkode
As ons klaar is met 'n prototipe, is ons gereed om dit lewendig te maak met die Arduino -kode hieronder. Ek het probeer om soveel moontlik kommentaar te lewer om die proses van kode -analise verstaanbaar te maak. Om eerlik te wees, lyk die logika met die eerste oogopslag 'n bietjie ingewikkeld, maar as u dieper in die logika van die kode ingaan, sal dit meer omvattend lyk.
Nota: Soortgelyk aan die regte skaakbord het ek vierkante abstrak getel as A1, A2, A3, A4, B1, …, C1,…, D1,.., D4. In die kode is dit egter nie prakties om hierdie notasie te gebruik nie. Daarom het ek skikkings gebruik en vierkante voorgestel as 00, 01, 02, 03, 10, 11, 12, 13, …, 32, 33 onderskeidelik.
Dankie vir jou aandag! Toets alles en skryf gerus in die kommentaar oor enige foute wat ek gemis het, verbeterings, voorstelle, ens. Sien uit daarna om 'n paar menings oor die projek te hoor. As u hulp nodig het met die projek, stuur 'n e -pos na my ([email protected]) of voeg op skype (tahir.miriyev9r1) toe, sodat ons 'n gesprek kan beplan en dinge in besonderhede kan bespreek. Beste wense!