4x4 elektronisen shakkilaudan esittely/ Arduino Mega + RFID-lukija + Hall-tehosensorit: 7 vaihetta
4x4 elektronisen shakkilaudan esittely/ Arduino Mega + RFID-lukija + Hall-tehosensorit: 7 vaihetta
Anonim
4x4 elektronisen shakkilaudan esittely/ Arduino Mega + RFID-lukija + Hall-tehosteanturit
4x4 elektronisen shakkilaudan esittely/ Arduino Mega + RFID-lukija + Hall-tehosteanturit

Hei tekijät, Olen Tahir Miriyev, valmistunut Lähi -idän teknillisestä yliopistosta, Ankara/ Turkki. Olen pääaineena soveltava matematiikka, mutta olen aina tykännyt tehdä tavaroita, varsinkin kun siihen liittyi käsityötä elektroniikan, suunnittelun ja ohjelmoinnin kanssa. Ainutlaatuisen prototyyppikurssin ansiosta, joka järjestettiin teollisen suunnittelun osastollamme, sain mahdollisuuden tehdä jotain todella mielenkiintoista. Hanketta voidaan pitää termihankkeena, joka kesti koko lukukauden (4 kuukautta). Oppilaille annettiin tehtäväksi löytää luova lähestymistapa jo olemassa olevien tuotteiden/esittelyjen suunnitteluun ja toteuttaa ideansa Arduinon mikrokontrollereilla ja antureilla. Ajattelin shakkia, ja kun olin tehnyt tutkimusta onnistuneista projekteista, huomasin, että aikaisemmissa hankkeissa päättäjät käyttivät pohjimmiltaan valmiita shakkimoottoreita (joissa jokaisen hahmon kaikki liikkeet oli ohjelmoitu ytimeen) yhdessä Raspberry Pi: n kanssa, jotkut MUX LEDit ja reed -kytkimet. Projektissani päätin kuitenkin päästä eroon kaikista ulkoisista ohjelmista shakkimoottorin suhteen ja löytää luovan ratkaisun kuvantunnistusongelmaan käyttämällä RFID-lukijaa, Hall-tehosteantureita ja Arduino Megaa.

Vaihe 1: Mikä on kuvantunnistusongelma ja miten ratkaisin sen

Mikä on kuvantunnistusongelma ja miten ratkaisin sen
Mikä on kuvantunnistusongelma ja miten ratkaisin sen

Yksinkertaisesti sanottuna oletetaan, että sinulla on shakkilauta, jossa on "aivot" = mikrokontrolleri, ja sinun on saatettava taulusi ymmärtämään, mitä kuvaa pidit kädessäsi ja mihin olet sen asettanut. Tämä on kuvien tunnistamisen ongelma. Ratkaisu tähän ongelmaan on vähäpätöinen, kun sinulla on shakkimoottori, jossa kaikki palaset seisovat alkuasemillaan laudalla. Ennen kuin selitän, miksi näin on, haluan tehdä muutaman huomautuksen.

Niille, jotka ovat innostuneita siitä, miten asiat täällä toimivat, minun on selvennettävä, miksi tarvitsemme ruoko-kytkimiä (tai minun tapauksessani käytin Hall-tehosensoreita): jos asetat magneetin jokaisen kappaleen alle ja otat sen neliö taululla (olettaen, että jokaisen neliön alla on ruoko -kytkin) johtuen magneettikentän olemassaolosta/olemattomuudesta anturin yläpuolella, voit saada ohjaimesi ymmärtämään, onko neliöllä seisova kappale. Se ei kuitenkaan vielä kerro mikro -ohjaimelle mitään siitä, mikä kappale seisoo aukiolla. Se kertoo vain, että neliössä on/ei ole pala. Tässä vaiheessa meillä on kasvotusten hahmontunnistusongelma, joka voidaan ratkaista shakkimoottorilla ja kaikki palaset asetetaan alkuperäisiin paikkoihinsa, kun shakkipeli alkaa. Tällä tavalla mikrokontrolleri "tietää", missä jokainen kappale seisoo alusta alkaen, ja kaikki osoitteet on tallennettu muistiin. Siitä huolimatta tämä tuo meille valtavan rajoituksen: et voi valita, sanotaan, mitä tahansa kappaletta ja sijoittaa ne satunnaisesti mihin tahansa pöydälle ja aloittaa pelin analysointi. Sinun on aina aloitettava alusta, kaikkien kappaleiden tulisi olla aluksella alun perin, koska tämä on ainoa tapa, jolla mikrokontrolleri voi seurata sijaintiaan, kun nostat kappaleen ja asetat sen toiselle neliölle. Pohjimmiltaan tämä oli ongelma, jonka huomasin ja päätin työskennellä.

Ratkaisuni oli melko yksinkertainen, vaikkakin luova. Laitoin RFID -lukijan levyn etupuolelle. Samaan aikaan kiinnitin magneettien alle kappaleiden alle myös RFID -tunnisteen, ja jokaisella kappaleella oli yksilöllinen tunnus. Siksi, ennen kuin asetat hahmon haluamallesi neliölle, voit ensin pitää kappaleen lähellä RFID -lukijaa ja antaa sen lukea tunnuksen, tunnistaa kappaleen, tallentaa sen muistiin ja sitten sijoittaa sen minne haluat. Lisäksi ruoko-kytkimien käyttämisen sijaan käytin piirisuunnittelun yksinkertaistamiseksi hall-efekti-antureita, jotka toimivat samalla tavalla. Ainoa ero on lähettää 0 tai 1 mikrokontrollerille digitaalisena datana, mikä tarkoittaa "on" tai "neliössä ei ole" mitään kappaletta. Lisäsin myös LED -valoja (valitettavasti ei samanvärisiä, ei ollut niitä), joten kun nostat kappaletta, kaikki neliömäiset paikat, joihin nostettu pala voidaan sijoittaa, syttyvät. Ajattele sitä shakinopiskelijoiden opetuskäytännönä:)

Lopuksi haluaisin huomata, että huolimatta siitä, että käytin useita tekniikoita, projekti on edelleen yksinkertainen ja ymmärrettävä, ei perusteellisesti kehitetty tai liian monimutkainen. Minulla ei ollut tarpeeksi aikaa jatkaa 8x8-shakkilaudalla (myös siksi, että 64 hall-tehosteanturia ovat kalliita Turkissa, katin kaikki projektiin liittyvät kulut), joten tein 4x4-demoversion, jossa oli vain kaksi kappaletta testattu: Sotilas ja Kuningatar. Shakkimoottorin käytön sijaan kirjoitin Arduinolle lähdekoodin, joka luo kaiken, mitä näet alla olevassa videossa.

Vaihe 2: Miten asiat toimivat

Image
Image

Ennen kuin siirrymme vaiheittaiseen selitykseen siitä, miten projekti tehtiin, mielestäni olisi parempi katsoa havainnollistava video ja saada intuitiivinen käsitys siitä, mistä puhun.

Huomautus #1: yksi punaisista LEDeistä (ensimmäinen rivillä/ vasemmalta oikealle) palaa, ei haittaa.

Huom. Ennen kuin kaikki toimi, tein monia kokeita asettamalla shakkinappulat lukijan lähelle ja odottamaan, kunnes se lukee tunnuksen oikein. Sarjaportti on määritettävä tätä varten, koska tapa, jolla RFID -lukija lukee tunnuksen, on vain päänsärky. Pitäisi yrittää itse ymmärtääkseen asian. Jos tarvitset lisäapua, lähetä minulle sähköpostia ([email protected]) tai lisää skypeen (tahir.miriyev9r1), jotta voimme ajoittaa keskustelun ja keskustella yksityiskohdista, selitän kaiken perusteellisesti.

Vaihe 3: Työkalut ja komponentit

Työkalut ja komponentit
Työkalut ja komponentit
Työkalut ja komponentit
Työkalut ja komponentit
Työkalut ja komponentit
Työkalut ja komponentit

Tässä on luettelo kaikista työkaluista, joita käytin projektissa: Elektroniset komponentit:

  • Leipälauta (x1)
  • Monisuuntainen A1126LUA-T (IC-1126 SW OMNI 3-SIP ALLEGRO) Hall-tehosteanturit (x16)
  • Perus 5 mm: n LEDit (x16)
  • Hyppyjohdot
  • 125 kHz RFID -lukija ja antenni (x1)
  • Arduino Mega (x1)
  • RFID 3M -tunnisteet (x2)

Muut materiaalit:

  • Plexiglass
  • Kiiltävä paperi
  • lyhyet lankut (puiset)
  • Akryylimaali (tummanvihreä ja kermanvärinen) x2
  • Ohut pahvi
  • 10 mm pyöreät magneetit (x2)
  • Sotilas- ja kuningatarpalat
  • Juotosrauta ja juotosmateriaalit

Vaihe 4: Kaaviot (Fritzing)

Kaaviot (Fritzing)
Kaaviot (Fritzing)

Kaaviot ovat hieman monimutkaisia, tiedän, mutta ajatuksen pitäisi olla selkeä. Se oli ensimmäinen kerta, kun käytin Fritzingiä (muuten erittäin suositeltavaa), luultavasti yhteydet voitaisiin piirtää tarkemmin. Huomasin: En löytänyt tarkkaa RDIF -lukijan mallia Fritzingin tietokannan komponenttien joukosta. Käyttämäni malli on 125 kHz RFID -moduuli - UART. Youtubesta löydät opetusohjelmia tämän moduulin asettamisesta Arduinolle.

Vaihe 5: Prosessi

Käsitellä asiaa
Käsitellä asiaa

Aika selittää miten asiat tehtiin. Noudata vaiheittaista kuvausta:

1. Ota 21x21 cm pahvi ja ylimääräinen pahvi leikataksesi ja liimaamaan levyn yläosan seinät, jotta saat 16 neliötä, joissa on A B C D 1 2 3 4. Koska pahvi on ohut, voit kiinnittää 16 hall-tehosteanturia jokaiseen neliöön, joissa on 3 jalkaa ja 16 LEDiä, joissa on 2 jalkaa.

2. Kun olet asettanut komponentit, sinun on suoritettava juotos Hall-efekti-antureiden jaloille ja LED-valot hyppyjohtimille. Tässä vaiheessa suosittelen värillisten johtojen valintaa älykkäästi, jotta et sekoitu LED -valojen + ja - jaloihin, myös Hall -tehosteanturien VCC-, GND- ja PIN -jaloihin. Tietenkin voidaan tulostaa piirilevy, jossa on antureita ja jopa WS2812 -tyyppisiä LED -valoja, jotka on jo juotettu, mutta päätin pitää projektin yksinkertaisena ja tehdä lisää "käsityötä". Tässä vaiheessa sinun tarvitsee vain valmistaa johdot ja anturit. Fritzing -kaavion jälkeisissä vaiheissa näet, mihin sinun tulee kiinnittää jokaisen langan pää. Pian jotkut heistä siirtyvät suoraan Arduino Megan PIN -koodeihin (niitä on tarpeeksi Arduinolla), toiset leipälaudalle ja kaikki GND: t voidaan juottaa yhdeksi johdonpalaksi (mikä tekee yhteiseksi) tulee liittää Arduino -kortin GND: hen. Yksi tärkeä huomautus tässä: Hall -tehosteanturit ovat OMNIDIRECTIONAL, mikä tarkoittaa, että ei ole väliä, mikä magneetin napa pidetään lähellä anturia, se lähettää 0 dataa, kun lähellä on magneettikenttä ja 1, kun sitä ei ole, nimittäin magneetti on kaukana (sanotaan kauemmin kuin 5 sm) anturista.

3. Valmista samanlainen 21x21 cm pahvi ja kiinnitä siihen Arduino Mega ja pitkä leipälauta. Voit myös leikata pahvista uudelleen 4 halutun korkeuden seinää ja liimata ne pystysuoraan näiden kahden 21x21 cm: n neliölautakerroksen kanssa. Noudata sitten Fritzing Schematicsin asetuksia. Voit myös asettaa RFID-lukijan LED-valojen ja Hall-tehosteanturien käytön jälkeen.

4. Testaa, toimivatko kaikki LEDit ja anturit lähettämällä signaaleja peruskoodeilla. Älä vältä tätä vaihetta, koska sen avulla voit testata, toimiiko kaikki oikein ja siirtyä levyn rakentamiseen.

5. Valmistele Sotilas ja Kuningatar, alla kaksi kiinnitettyä 10 cm: n säteellä olevaa magneettia sekä pyöreät RFID -tunnisteet. Myöhemmin sinun on luettava näiden tunnisteiden tunnukset Arduino IDE -sarjan näytöstä.

6. Jos kaikki toimii hyvin, voit aloittaa pääkoodin ja kokeilla asioita!

7 (valinnainen). Voit tehdä puutaiteellista työtä, joka antaa demollesi luonnollisemman näkymän. Se on sinun tahdostasi ja mielikuvituksestasi kiinni.

Vaihe 6: Jotkut valokuvat ja videot eri vaiheista

Image
Image
Joitakin valokuvia ja videoita eri vaiheista
Joitakin valokuvia ja videoita eri vaiheista
Joitakin valokuvia ja videoita eri vaiheista
Joitakin valokuvia ja videoita eri vaiheista

Vaihe 7: Lähdekoodi

Lähdekoodi
Lähdekoodi

Nyt kun olemme saaneet prototyypin valmiiksi, olemme valmiita herättämään sen elämään alla olevan Arduino -koodin avulla. Yritin jättää mahdollisimman monta kommenttia tehdäkseni koodianalyysin ymmärrettäväksi. Ollakseni rehellinen, logiikka saattaa tuntua hieman monimutkaiselta ensi silmäyksellä, mutta jos kaivaudut syvemmälle koodin logiikkaan, se näyttää kattavammalta.

Huomautus: Samanlainen kuin todellinen shakkilauta, olen abstrakteina numeroinut neliöt A1, A2, A3, A4, B1,…, C1,…, D1,.., D4. Koodissa ei kuitenkaan ole käytännöllistä käyttää tätä merkintää. Siksi käytin matriiseja ja edustin neliöitä muodossa 00, 01, 02, 03, 10, 11, 12, 13,…, 32, 33.

Kiitos huomiostasi! Testaa kaikki ja kirjoita vapaasti kommentteihin kaikista epäonnistuneista virheistä, parannuksista, ehdotuksista jne. Odotan innolla mielipiteitä projektista. Jos tarvitset apua projektin kanssa, lähetä minulle sähköpostia ([email protected]) tai lisää skypeen (tahir.miriyev9r1), jotta voimme ajoittaa keskustelun ja keskustella asioista yksityiskohtaisesti. Onnea!