Kazalo:
- 1. korak: Kaj je problem prepoznavanja figure in kako sem jo rešil
- 2. korak: Kako stvari delujejo
- 3. korak: Orodja in komponente
- 4. korak: Sheme (Fritzing)
- 5. korak: Postopek
- 6. korak: Nekaj fotografij in videoposnetkov z različnih stopenj
- 7. korak: izvorna koda
Video: 4x4 Demo elektronske šahovnice/ z Arduino Mega + bralnikom RFID + senzorji Hall-efekta: 7 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:05
Pozdravljeni ustvarjalci, Sem Tahir Miriyev, 2018 diplomiral na Srednjevzhodni tehnični univerzi v Ankari/ Turčija. Diplomiral sem iz uporabne matematike, vendar sem vedno rad ustvarjal stvari, še posebej, če je to vključevalo nekaj ročnega dela z elektroniko, oblikovanjem in programiranjem. Zahvaljujoč edinstvenemu tečaju izdelave prototipov, ki so ga ponudili na našem oddelku za industrijsko oblikovanje, sem imel priložnost narediti nekaj res zanimivega. Projekt se lahko obravnava kot terminološki projekt, ki je trajal cel semester (4 mesece). Učenci so dobili nalogo, da najdejo ustvarjalen pristop k oblikovanju že obstoječih izdelkov/predstavitev in uresničijo svoje zamisli z uporabo mikrokrmilnikov in senzorjev Arduino. Razmišljal sem o šahu in potem, ko sem opravil nekaj raziskav o uspešnih projektih, sem opazil, da so ustvarjalci v prejšnjih projektih v bistvu uporabljali že pripravljene šahovske motorje (kjer so bili vsi gibi vsake figure programirani v jedru), skupaj z Raspberry Pi, nekaj MUX-a 'es, LED in trstična stikala. V svojem projektu pa sem se odločil, da se znebim vsake zunanje programske opreme v smislu šahovskega motorja in poiščem ustvarjalno rešitev problema prepoznavanja slik z bralnikom RFID, senzorji Hall-efekta in Arduino Mega.
1. korak: Kaj je problem prepoznavanja figure in kako sem jo rešil
Preprosto povedano, predpostavimo, da imate šahovnico z "možgani" = mikrokrmilnikom in da mora vaša tabla razumeti, katero figuro ste držali v roki in kam ste jo postavili. To je problem prepoznavanja slik. Rešitev tega problema je nepomembna, če imate šahovski stroj z vsemi figurami, ki stojijo na svojih začetnih položajih na deski. Preden razložim, zakaj je tako, naj naredim nekaj pripomb.
Za tiste, ki so navdušeni nad tem, kako stvari tukaj delujejo, moram pojasniti, zakaj potrebujemo trstična stikala (ali pa sem v mojem primeru uporabil senzorje Hall-efekta): če pod vsak kos postavite magnet in ga vzamete iz kvadrat na plošči (ob predpostavki, da je pod vsakim kvadratom trstično stikalo) zaradi obstoja/neobstoja magnetnega polja nad senzorjem lahko nadzornik razumete, ali na kvadratu stoji/ne stoji kos. Vendar mikrokontrolerju še vedno ne pove ničesar o tem, kateri kos stoji na kvadratu. Pove samo, da je na kvadratu kos. Na tej točki se srečujemo s problemom prepoznavanja figur, ki ga je mogoče rešiti s šahovskim mehanizmom, pri čemer se vse figure postavijo na začetni položaj, ko se začne šahovska igra. Na ta način mikrokrmilnik "ve", kje vsak kos stoji od začetka, pri čemer so vsi naslovi fiksni v pomnilniku. Kljub temu nam to prinaša ogromno omejitev: ne morete izbrati, recimo, poljubnega števila kosov in jih naključno postaviti kamor koli na tablo in začeti analizirati igro. Vedno morate začeti od začetka, vsi kosi morajo biti prvotno na plošči, saj je to edini način, da mikrokrmilnik sledi njihovim lokacijam, ko dvignete kos in ga postavite na kakšen drug kvadrat. V bistvu je bil to problem, ki sem ga opazil in se odločil za delo.
Moja rešitev je bila precej preprosta, čeprav ustvarjalna. Čitalnik RFID sem postavil na sprednjo stran plošče. Medtem sem pod kose pritrdil ne samo magnet, ampak tudi oznako RFID, pri čemer ima vsak kos edinstven ID. Zato, preden postavite figuro na poljuben želeni kvadrat, lahko kos najprej držite blizu čitalnika RFID in mu dovolite, da prebere ID, identificira kos, ga shrani v pomnilnik, nato pa ga lahko postavite kamor koli želite. Poleg tega sem namesto reed stikal za poenostavitev zasnove vezja uporabil hallove senzorje, ki delujejo podobno, z edino razliko, da 0 ali 1 pošljete mikrokrmilniku kot digitalni podatek, kar pomeni "obstaja" ali "ni" nobenega kosa na kvadratu. Dodala sem tudi LED -diode (žal niso iste barve, niso jih imele), tako da bodo, ko dvignete kos, zasvetile vse kvadratne lokacije, kamor bi lahko postavili dvignjen kos. Pomislite na to kot na izobraževalno prakso za učence šaha:)
Nazadnje bi rad omenil, da kljub dejstvu, da sem uporabil več tehnik, projekt ostaja preprost in razumljiv, ne globoko razvit ali preveč zapleten. Nisem imel dovolj časa za nadaljevanje šahovnice 8x8 (tudi zato, ker je v Turčiji 64 senzorjev z učinkom dvorane dragih, pokril sem vse stroške, povezane s projektom), zato sem naredil demo različico 4x4 s samo dvema preizkušenima figurama: Pawn in Kraljica. Namesto šahovskega motorja sem napisal izvorno kodo za Arduino, ki ustvari vse, kar boste videli v spodnjem videu.
2. korak: Kako stvari delujejo
Preden preidemo na podrobno razlago, kako je bil projekt izveden, mislim, da bi bilo bolje pogledati ilustrativni videoposnetek in dobiti intuitivno predstavo o čem govorim.
Opomba #1: ena od rdečih LED (prva v vrsti/ od leve proti desni) je izgorela, ne glede na to.
Opomba #2: Čeprav se široko uporablja, lahko iz svojih izkušenj rečem, da tehnologija RFID ni najboljša ideja za uporabo v aplikacijah za samostojno izdelavo (seveda, če imate druge možnosti). Preden je vse delovalo, sem naredil veliko poskusov, ko sem šahovske figure postavil blizu bralca in počakal, da pravilno prebere ID. Za to je treba nastaviti serijska vrata, ker je način, kako bralnik RFID prebere ID, le glavobol. Da bi razumeli problem, bi morali poskusiti sami. Če potrebujete dodatno pomoč, mi pišite ([email protected]) ali dodajte na skype (tahir.miriyev9r1), da se lahko dogovorimo za pogovor in se o stvareh podrobno pogovorimo, vse bom natančno razložil.
3. korak: Orodja in komponente
Tu je seznam vseh orodij, ki sem jih uporabil za projekt: Elektronske komponente:
- Okvir (x1)
- Vsesmerni A1126LUA-T (IC-1126 SW OMNI 3-SIP ALLEGRO) Senzorji Hall učinka (x16)
- Osnovne 5 mm LED diode (x16)
- Mostične žice
- 125 kHz RFID bralnik in antena (x1)
- Arduino Mega (x1)
- RFID 3M oznake (x2)
Drugi materiali:
- Pleksi steklo
- Sijajni papir
- kratke deske (lesene)
- Akrilna barva (temno zelena in krem) x2
- Tanek karton
- 10 mm okrogli magneti (x2)
- Kosi zastave in kraljice
- Spajkalnik in spajkalni materiali
4. korak: Sheme (Fritzing)
Vem, da so sheme nekoliko zapletene, vendar bi morala biti ideja jasna. To je bilo prvič, da sem uporabil Fritzing (mimogrede zelo priporočljivo), verjetno bi lahko povezave narisali natančneje. Kakorkoli, zapisal sem vse v shemah. Opomba: med komponentami v zbirki podatkov Fritzinga nisem našel natančnega modela bralnika RDIF. Model, ki sem ga uporabil, je 125Khz RFID modul - UART. Na Youtubu najdete vadnice o tem, kako nastaviti ta modul z Arduinom.
5. korak: Postopek
Čas je, da razložimo, kako so stvari nastale. Prosimo, sledite opisu po korakih:
1. Vzemite karton velikosti 21x21 cm in nekaj dodatnega kartona, da izrežete in zlepite stene zgornjega dela plošče, da naredite 16 kvadratov s številko A B C D 1 2 3 4. Ker je karton tanek, lahko v vsak kvadrat vstavite 16 senzorjev z učinkom dvoran, s po 3 nogami in 16 LED z dvema nogama.
2. Ko nastavite komponente, boste morali nekaj spajkati, spajkati noge senzorjev Hall-efekta in LED diode na mostične žice. Na tej točki priporočam izbiro barvnih žic na pameten način, da se ne boste zmedli z + in - nogami LED, tudi VCC, GND in PIN nogami senzorjev Hall -efekta. Seveda bi lahko natisnili tiskano vezje s senzorji in celo že spajkane LED diode tipa WS2812, vendar sem se odločil, da bom projekt poenostavil in naredil še nekaj "ročnega dela". Na tej točki morate samo pripraviti vrvice in senzorje, na kasnejših stopnjah, ki sledijo shemi Fritzing, lahko vidite, kam morate pritrditi konec vsake žice. Kmalu bodo nekateri od njih šli neposredno na kode PIN na Arduino Mega (na Arduinu jih je dovolj), drugi na matično ploščo in vse GND -je lahko spajkali na en kos vrvi (naredijo skupno podlago), kar bo kasneje mora biti priključen na GND na plošči Arduino. Ena pomembna opomba tukaj: Senzorji Hall efekta so OMNIDIRKCIONALNI, kar pomeni, da ni pomembno, kateri pol magneta bo držal blizu senzorja, pošiljal bo 0 podatkov, medtem ko je v bližini nekaj magnetnega polja in 1, ko ni, magnet je namreč oddaljen (dlje kot recimo 5 cm) od senzorja.
3. Pripravite podoben karton velikosti 21x21 cm in nanj pritrdite Arduino Mega in dolgo ploščo. Iz kartona lahko spet izrežete 4 stene poljubne višine in jih navpično zlepite s tema dvema plastema kvadratnih desk 21x21 cm. Nato sledite shemi Fritzing, da nastavite stvari. Bralnik RFID lahko nastavite tudi, ko končate z LED diodami in senzorji Hall-efekta.
4. Preverite, ali vse LED in senzorji delujejo, tako da pošljete signale z uporabo osnovnih kod. Ne izogibajte se tega koraka, saj boste lahko preizkusili, ali vse deluje pravilno, in prešli na nadaljnjo gradnjo plošče.
5. Pripravite Zastavljalnico in Kraljico z dvema magnetoma s polmerom 10 cm spodaj in okroglimi RFID oznakami. Kasneje boste morali ID -je teh oznak prebrati s serijskega zaslona v Arduino IDE.
6. Če vse deluje odlično, lahko zaženete glavno kodo in preizkusite stvari!
7 (neobvezno). Lahko naredite nekaj umetniškega dela z lesom, ki bo vašemu predstavitvi dal bolj naraven pogled. To je odvisno od vaše volje in domišljije.
6. korak: Nekaj fotografij in videoposnetkov z različnih stopenj
7. korak: izvorna koda
Ko končamo s prototipom, smo ga pripravljeni oživiti s spodnjo kodo Arduino. Poskušal sem pustiti čim več komentarjev, da bi bil proces analize kode razumljiv. Če sem iskren, se lahko logika na prvi pogled zdi nekoliko zapletena, če pa se poglobite v logiko kode, bo videti bolj obsežna.
Opomba: Podobno kot pri pravi šahovnici sem abstraktno oštevilčil polja kot A1, A2, A3, A4, B1,…, C1,…, D1,.., D4. Vendar v kodi ta zapis ni praktičen. Zato sem uporabil matrike in predstavljal kvadrate kot 00, 01, 02, 03, 10, 11, 12, 13,…, 32, 33.
Hvala za vašo pozornost! Preizkusite vse in v komentarje pišite o vseh napakah, ki sem jih zamudil, izboljšavah, predlogih itd. Veselim se, če slišim nekaj mnenj o projektu. Če potrebujete kakršno koli pomoč pri projektu, mi pišite ([email protected]) ali dodajte v skype (tahir.miriyev9r1), da lahko načrtujemo pogovor in se o stvareh podrobno pogovorimo. Srečno!