Cuprins:

Demo 4x4 al unei table de șah electronice / cu cititor Arduino Mega + RFID + senzori de efect Hall: 7 pași
Demo 4x4 al unei table de șah electronice / cu cititor Arduino Mega + RFID + senzori de efect Hall: 7 pași

Video: Demo 4x4 al unei table de șah electronice / cu cititor Arduino Mega + RFID + senzori de efect Hall: 7 pași

Video: Demo 4x4 al unei table de șah electronice / cu cititor Arduino Mega + RFID + senzori de efect Hall: 7 pași
Video: Adrian minune ❗️bătut de niște interlopi din Craiova ❗️#bucuresti #interlopi #fyp #florinsalam 2024, Iulie
Anonim
Demo 4x4 al unei table de șah electronice / cu cititor Arduino Mega + RFID + senzori cu efect Hall
Demo 4x4 al unei table de șah electronice / cu cititor Arduino Mega + RFID + senzori cu efect Hall

Salut producători, Sunt Tahir Miriyev, absolvent 2018 la Universitatea Tehnică din Orientul Mijlociu, Ankara / Turcia. M-am specializat în matematică aplicată, dar mi-a plăcut întotdeauna să fac lucruri, mai ales atunci când a implicat unele lucrări manuale cu electronică, design și programare. Datorită unui curs unic de prototipare, oferit la departamentul nostru de design industrial, am avut șansa să fac ceva cu adevărat interesant. Proiectul poate fi tratat ca un proiect pe termen, care a durat un semestru întreg (4 luni). Elevilor li s-a atribuit o sarcină de a găsi o abordare creativă a proiectării produselor / demonstrațiilor deja existente și de a-și realiza ideile folosind microcontrolere și senzori Arduino. Mă gândeam la șah și, după ce am făcut câteva cercetări cu privire la proiectele de succes, am observat că în proiectele anterioare factorii de decizie foloseau practic motoare de șah pregătite (unde toate mișcările fiecărei figuri erau programate în nucleu), împreună cu Raspberry Pi, unele MUX Este, comutatoare LED și reed. În proiectul meu, deși, am decis să scap de orice software extern în ceea ce privește un motor de șah și să găsesc o soluție creativă pentru problema de recunoaștere a figurilor, folosind cititor RFID, senzori de efect Hall și Arduino Mega.

Pasul 1: Ce este o problemă de recunoaștere a figurilor și cum am rezolvat-o

Ce este o problemă de recunoaștere a figurilor și cum am rezolvat-o
Ce este o problemă de recunoaștere a figurilor și cum am rezolvat-o

Pentru a o simplifica, să presupunem că aveți o tablă de șah cu un „creier” = microcontroler și trebuie să faceți tabloul să înțeleagă ce figură ați ținut în mână și unde ați plasat-o. Aceasta este problema recunoașterii figurilor. Soluția la această problemă este banală atunci când aveți un motor de șah, cu toate piesele în poziție inițială pe tablă. Înainte de a explica de ce este așa, permiteți-mi să fac câteva observații.

Pentru cei care sunt entuziasmați de modul în care funcționează lucrurile aici, trebuie să fac o clarificare de ce avem nevoie de comutatoare reed (sau, în cazul meu, am folosit senzori cu efect Hall): dacă așezați un magnet sub fiecare piesă și îl ridicați din un pătrat pe placă (presupunând că există un comutator reed sub fiecare pătrat) din cauza existenței / inexistenței câmpului magnetic deasupra senzorului, puteți face controlerul să înțeleagă dacă există / nu este o piesă în picioare. Cu toate acestea, încă nu spune nimic microcontrolerului despre exact ce piesă stă pe pătrat. Spune doar că există / nu o piesă pe un pătrat. În acest moment, suntem față în față cu o problemă de recunoaștere a figurilor, care poate fi rezolvată folosind un motor de șah, cu toate piesele plasate pe pozițiile lor inițiale atunci când începe jocul de șah. În acest fel, microcontrolerul „știe” unde se află fiecare piesă chiar de la început, cu toate adresele fixate în memorie. Cu toate acestea, acest lucru ne aduce o limitare imensă: nu puteți selecta, să zicem, orice număr de piese și să le așezați aleatoriu oriunde pe tablă și să începeți să analizați jocul. Întotdeauna trebuie să începeți de la început, toate piesele ar trebui să fie inițial pe tablă, deoarece aceasta este singura modalitate prin care microcontrolerul își poate urmări locațiile odată ce ați ridicat o piesă și ați plasat-o pe un alt pătrat. În esență, aceasta a fost problema pe care am observat-o și am decis să lucrez.

Soluția mea a fost destul de simplă, deși creativă. Am plasat un cititor RFID pe partea frontală a unei plăci. Între timp, am atașat nu numai un magnet sub bucăți, ci și o etichetă RFID, fiecare piesă având un ID unic. Prin urmare, înainte de a plasa o figură pe orice pătrat dorit, puteți ține mai întâi piesa aproape de cititorul RFID și lăsați-l să citească ID-ul, să identifice piesa, să o salvați în memorie și apoi o puteți plasa oriunde doriți. De asemenea, în loc să folosesc comutatoare reed, pentru a simplifica proiectarea circuitului, am folosit senzori cu efect de hală, care funcționează similar, cu singura diferență de a trimite 0 sau 1 către un microcontroler ca date digitale, ceea ce înseamnă „există” sau „nu există” nicio piesă pe pătrat, respectiv. Am adăugat și LED-uri (din păcate nu de aceeași culoare, nu aveau), astfel încât atunci când ridicați piesa, toate locațiile pătrate, unde ar putea fi plasată o piesă ridicată, să se aprindă. Gândiți-vă la aceasta ca la o practică educațională pentru cursanții de șah:)

În cele din urmă, aș dori să menționez că, în ciuda faptului că am folosit mai multe tehnici, proiectul rămâne simplu și ușor de înțeles, nu este profund elaborat sau prea complicat. Nu am avut suficient timp pentru a continua cu tabla de șah 8x8 (de asemenea, pentru că 64 de senzori de efect hall sunt costisitoare în Turcia, am acoperit toate cheltuielile legate de proiecție), de aceea am făcut versiunea demo 4x4 cu doar două piese testate: Pion și Regină. În loc să folosesc un motor de șah, am scris un cod sursă pentru Arduino, care generează tot ce veți vedea în videoclipul de mai jos.

Pasul 2: Cum funcționează lucrurile

Image
Image

Înainte de a trece la explicația pas cu pas a modului în care a fost realizat proiectul, cred că ar fi mai bine să vizionăm un videoclip ilustrativ și să ne facem o idee intuitivă despre ceea ce vorbesc.

Notă # 1: unul dintre LED-urile roșii (primul pe rând / de la stânga la dreapta) s-a ars, nu contează.

Notă # 2: deși este utilizată pe scară largă, din experiența mea pot spune că tehnologia RFID nu este cea mai bună idee de utilizat în aplicațiile DIY (desigur, dacă aveți alternative). Înainte ca totul să funcționeze, am făcut multe încercări plasând piese de șah aproape de cititor și așteptând până când acesta citește corect ID-ul. Portul serial ar trebui configurat pentru asta, deoarece modul în care cititorul RFID citește ID-ul este doar o durere de cap. Ar trebui să încercați singur pentru a înțelege problema. Dacă aveți nevoie de mai multă asistență, vă rog să-mi trimiteți un e-mail ([email protected]) sau să adăugați pe skype (tahir.miriyev9r1), astfel încât să putem programa o conversație și să discutăm lucrurile în detalii, vă voi explica totul în detaliu.

Pasul 3: Instrumente și componente

Instrumente și componente
Instrumente și componente
Instrumente și componente
Instrumente și componente
Instrumente și componente
Instrumente și componente

Iată lista tuturor instrumentelor pe care le-am folosit pentru proiect: Componente electronice:

  • Panou (x1)
  • Omnidirecțional A1126LUA-T (IC-1126 SW OMNI 3-SIP ALLEGRO) Senzori de efect Hall (x16)
  • LED-uri de bază de 5 mm (x16)
  • Sârme de jumper
  • Cititor și antenă RFID de 125 kHz (x1)
  • Arduino Mega (x1)
  • Etichete RFID 3M (x2)

Alte materiale:

  • Plexiglas
  • Hartie lucioasa
  • scânduri scurte (din lemn)
  • Vopsea acrilică (verde închis și crem) x2
  • Carton subțire
  • Magneți rotunzi de 10 mm (x2)
  • Piese de pion și regină
  • Fier de lipit și materiale de lipit

Pasul 4: Scheme (Fritzing)

Scheme (Fritzing)
Scheme (Fritzing)

Știu, schemele sunt puțin complicate, dar ideea ar trebui să fie clară. A fost prima dată când am folosit Fritzing (foarte recomandat apropo), probabil că conexiunile ar putea fi trasate mai precis. Oricum, am notat totul în schemă. Notă: nu am putut găsi modelul exact al RDIF Reader printre componentele din baza de date Fritzing. Modelul pe care l-am folosit este modulul RFID de 125Khz - UART. Puteți găsi tutoriale pe Youtube despre cum să setați acest modul cu Arduino.

Pasul 5: Procesați

Proces
Proces

E timpul să explic cum au fost făcute lucrurile. Vă rugăm să urmați descrierea pas cu pas:

1. Luați un carton de 21x21 cm, precum și un carton suplimentar pentru a tăia și lipi pereții părții superioare a plăcii, pentru a face 16 pătrate cu A B C D 1 2 3 4 enumerate. Deoarece cartonul este subțire, puteți lipi 16 senzori cu efect de hol în fiecare pătrat, cu câte 3 picioare și 16 LED-uri cu câte 2 picioare.

2. După ce ați setat componentele, va trebui să faceți câteva lipiri, să lipiți picioarele senzorilor cu efect Hall și LED-urile la firele jumper. În acest moment, aș recomanda selectarea firelor colorate într-un mod inteligent, astfel încât să nu vă confundați cu picioarele + și - ale LED-urilor, de asemenea cu picioarele VCC, GND și PIN ale senzorilor cu efect Hall. Desigur, s-ar putea să tipăriți un PCB cu senzori și chiar tipuri de LED-uri WS2812 deja lipite, dar am decis să păstrez proiectul simplu și să mai fac niște „lucrări manuale”. În acest moment, tot ce trebuie să faceți este să pregătiți cabluri și senzori, în etapele ulterioare care urmează schemei Fritzing puteți vedea unde ar trebui să atașați capătul fiecărui fir. La scurt timp, unii dintre ei vor merge direct la codurile PIN de pe Arduino Mega (există destule pe Arduino), altele la panoul de verificare și toate GND-urile pot fi lipite pe o singură bucată de cablu (făcând teren comun) care mai târziu ar trebui să fie conectat la GND pe placa Arduino. O notă importantă aici: senzorii cu efect Hall sunt OMNIDIRECȚIONALE, ceea ce înseamnă că nu contează ce pol al unui magnet va fi ținut aproape de senzor, va trimite 0 date în timp ce există câmp magnetic în apropiere și 1 când nu există, și anume, magnetul este la distanță (mai departe decât să zicem 5 sm) de senzor.

3. Pregătiți carton similar de 21x21 cm și fixați Arduino Mega și o placă lungă pe el. De asemenea, puteți tăia din carton 4 pereți de orice înălțime dorită și le puteți lipi vertical cu cele două straturi de plăci pătrate de 21x21 cm. Apoi urmați Fritzing Schematics pentru a stabili lucrurile. De asemenea, puteți seta cititorul RFID după ce ați terminat cu LED-uri și senzori de efect Hall.

4. Testați dacă toate LED-urile și senzorii funcționează, trimițând semnale folosind coduri de bază. Nu evitați acest pas, deoarece vă va permite să testați dacă totul funcționează corect și să treceți la construcția ulterioară a plăcii.

5. Pregătiți Pion și Regină, cu doi magneți cu o rază de 10 cm atașați mai jos, precum și etichete rotunde RFID. Mai târziu, va trebui să citiți ID-urile acelor etichete din Serial Screen pe Arduino IDE.

6. Dacă totul funcționează excelent, este posibil să porniți codul principal și să încercați lucrurile!

7 (opțional). S-ar putea să faceți niște lucrări artistice cu lemn care să ofere demo-ului dvs. o viziune mai naturală. Asta depinde de voința și imaginația ta.

Pasul 6: Unele fotografii și videoclipuri din diferite etape

Image
Image
Unele fotografii și videoclipuri din diferite etape
Unele fotografii și videoclipuri din diferite etape
Unele fotografii și videoclipuri din diferite etape
Unele fotografii și videoclipuri din diferite etape

Pasul 7: Cod sursă

Cod sursa
Cod sursa

Acum, când am terminat cu un prototip, suntem gata să-l dăm viață cu codul Arduino de mai jos. Am încercat să las cât mai multe comentarii, pentru a face procesul de analiză a codului de înțeles. Pentru a fi sincer, logica ar putea părea puțin complexă de la prima vedere, dar dacă vă adânciți în logica codului, aceasta va arăta mai cuprinzătoare.

Notă: Similar cu tabla de șah reală, am numerotat abstract pătrate ca A1, A2, A3, A4, B1,…, C1,…, D1,.., D4. Cu toate acestea, în cod, nu este practic să utilizați această notație. Prin urmare, am folosit tablouri și am reprezentat pătrate ca 00, 01, 02, 03, 10, 11, 12, 13,…, 32, 33 respectiv.

Vă mulțumim pentru atenție! Testează totul și fii liber să scrii în comentarii despre orice fel de greșeli pe care le-am ratat, îmbunătățiri, sugestii etc. Aștept cu nerăbdare să auzi câteva opinii despre proiect. Dacă ai nevoie de orice fel de asistență cu proiectul, trimite-mi un e-mail (miriyevt @ gmail.com) sau adăugați pe skype (tahir.miriyev9r1), astfel încât să putem programa o conversație și să discutăm lucrurile în detalii. Mult noroc!