4x4 elektroniskā šaha dēļa demonstrācija/ ar Arduino Mega + RFID lasītāju + zāles efekta sensori: 7 soļi
4x4 elektroniskā šaha dēļa demonstrācija/ ar Arduino Mega + RFID lasītāju + zāles efekta sensori: 7 soļi
Anonim
4x4 elektroniskā šaha dēļa demonstrācija/ ar Arduino Mega + RFID lasītāju + zāles efekta sensoriem
4x4 elektroniskā šaha dēļa demonstrācija/ ar Arduino Mega + RFID lasītāju + zāles efekta sensoriem

Sveiki veidotāji, Es esmu Tahirs Mirijevs, 2018. gada absolvents Tuvo Austrumu Tehniskajā universitātē, Ankarā/ Turcijā. Es specializējos lietišķajā matemātikā, bet man vienmēr patika veidot lietas, it īpaši, ja tas bija saistīts ar roku darbu ar elektroniku, dizainu un programmēšanu. Pateicoties unikālajam prototipēšanas kursam, kas tika piedāvāts mūsu Rūpnieciskā dizaina nodaļā, man bija iespēja izveidot kaut ko patiešām interesantu. Projektu var uzskatīt par termiņa projektu, kas ilga visu semestri (4 mēnešus). Skolēniem tika uzdots uzdevums atrast radošu pieeju jau esošu produktu/demonstrāciju izstrādei un realizēt savas idejas, izmantojot Arduino mikrokontrollerus un sensorus. Es domāju par šahu, un, veicot dažus pētījumus par veiksmīgiem projektiem, es pamanīju, ka iepriekšējos projektos veidotāji pamatā izmantoja gatavus šaha dzinējus (kur visas figūras kustības bija ieprogrammētas kodolā), kopā ar Raspberry Pi, daži MUX Es, LED un niedru slēdži. Savā projektā es tomēr nolēmu atbrīvoties no jebkuras ārējas programmatūras šaha dzinēja ziņā un atrast radošu risinājumu figūru atpazīšanas problēmai, izmantojot RFID lasītāju, Halles efekta sensorus un Arduino Mega.

1. darbība. Kas ir figūru atpazīšanas problēma un kā es to atrisināju

Kas ir figūru atpazīšanas problēma un kā es to atrisināju
Kas ir figūru atpazīšanas problēma un kā es to atrisināju

Vienkārši sakot, pieņemsim, ka jums ir šaha galdiņš ar "smadzenēm" = mikrokontrolleru, un jums jāpanāk, lai tā dēlis saprastu, kuru figūru jūs turējāt rokā un kur to ievietojāt. Šī ir figūru atpazīšanas problēma. Šīs problēmas risinājums ir nenozīmīgs, ja jums ir šaha dzinējs, kurā visas figūras stāv uz tā dēļa sākotnējās pozīcijas. Pirms paskaidrošu, kāpēc tas tā ir, ļaujiet man izteikt dažas piezīmes.

Tiem, kuri ir sajūsmā par to, kā šeit notiek lietas, man ir jāprecizē, kāpēc mums ir nepieciešami niedru slēdži (vai manā gadījumā es izmantoju Halles efekta sensorus): ja zem katra gabala ievietojat magnētu un paņemat to no kvadrāts uz tāfeles (pieņemot, ka zem katra kvadrāta ir niedru slēdzis) magnētiskā lauka esamības/neesamības dēļ virs sensora, jūs varat likt savam kontrolierim saprast, vai uz laukuma stāv vai nav gabals. Tomēr tas joprojām neko nestāsta mikrokontrolleram par to, kurš gabals stāv uz laukuma. Tas tikai stāsta, ka uz kvadrāta ir/nav gabals. Šajā brīdī mēs saskaramies ar figūru atpazīšanas problēmu, kuru var atrisināt, izmantojot šaha dzinēju, un visi gabali tiek novietoti sākotnējā stāvoklī, kad sākas šaha spēle. Tādā veidā mikrokontrolleris "zina", kur katrs gabals stāv no paša sākuma, un visas adreses ir fiksētas atmiņā. Tomēr tas mums rada milzīgu ierobežojumu: jūs nevarat izvēlēties, teiksim, jebkuru gabalu skaitu un nejauši novietot tos jebkurā vietā uz tāfeles un sākt analizēt spēli. Jums vienmēr jāsāk no sākuma, visiem gabaliem sākotnēji jābūt uz tāfeles, jo tas ir vienīgais veids, kā mikrokontrollerim izsekot to atrašanās vietām, kad esat pacēlis gabalu un novietojis uz kāda cita laukuma. Būtībā šo problēmu es pamanīju un nolēmu strādāt.

Mans risinājums bija pavisam vienkāršs, kaut arī radošs. Es novietoju RFID lasītāju tāfeles priekšpusē. Tikmēr zem gabaliem es piestiprināju ne tikai magnētu, bet arī RFID tagu, un katram gabalam bija unikāls ID. Tādējādi, pirms ievietojat figūru uz jebkura vēlamā kvadrāta, vispirms varat turēt gabalu tuvu RFID lasītājam un ļaut tam nolasīt ID, identificēt gabalu, saglabāt to atmiņā un pēc tam to ievietot, kur vien vēlaties. Turklāt, lai izmantotu niedru slēdžus, lai vienkāršotu ķēdes dizainu, es izmantoju zāles efekta sensorus, kas darbojas līdzīgi, un vienīgā atšķirība ir nosūtīt 0 vai 1 uz mikrokontrolleru kā ciparu datus, kas nozīmē "pastāv" vai arī uz laukuma "nav" neviena gabala. Es pievienoju arī gaismas diodes (diemžēl ne vienā krāsā, to nebija), lai, paceļot gabalu, iedegtos visas kvadrātveida vietas, kur varētu novietot paceltu gabalu. Padomājiet par to kā par izglītojošu praksi šaha apguvējiem:)

Visbeidzot, es vēlos atzīmēt, ka, neskatoties uz to, ka izmantoju vairākas metodes, projekts paliek vienkāršs un saprotams, nevis dziļi izstrādāts vai pārāk sarežģīts. Man nebija pietiekami daudz laika, lai turpinātu ar 8x8 šaha galdu (arī tāpēc, ka Turcijā izmaksā 64 zāles efekta sensori, es sedzu visus ar projektu saistītos izdevumus), tāpēc es izveidoju 4x4 demonstrācijas versiju, pārbaudot tikai divus gabalus: Karaliene. Tā vietā, lai izmantotu šaha dzinēju, es uzrakstīju Arduino avota kodu, kas ģenerē visu, ko redzēsit zemāk esošajā videoklipā.

2. darbība. Kā lietas darbojas

Image
Image

Pirms mēs pārejam pie pakāpeniskā projekta paskaidrojuma, es domāju, ka labāk būtu noskatīties ilustratīvu video un gūt intuitīvu priekšstatu par to, par ko es runāju.

1. piezīme: viena no sarkanajām gaismas diodēm (pirmā rindā/ no kreisās uz labo) izdegusi, neraizējieties.

2. piezīme. Lai gan to plaši izmanto, no savas pieredzes varu teikt, ka RFID tehnoloģija nav labākā ideja, ko izmantot DIY lietojumprogrammās (protams, ja jums ir alternatīvas). Pirms viss izdevās, es veicu daudz izmēģinājumu, novietojot šaha figūras tuvu lasītājam un gaidot, līdz tas pareizi nolasa ID. Tam vajadzētu izveidot seriālo portu, jo veids, kā RFID lasītājs nolasa ID, ir tikai galvassāpes. Cilvēkam pašam jāmēģina saprast šo problēmu. Ja jums nepieciešama papildu palīdzība, lūdzu, sūtiet man e -pastu ([email protected]) vai pievienojiet skype (tahir.miriyev9r1), lai mēs varētu ieplānot sarunu un sīkāk apspriest lietas, es visu rūpīgi izskaidrošu.

3. darbība: rīki un sastāvdaļas

Instrumenti un sastāvdaļas
Instrumenti un sastāvdaļas
Instrumenti un sastāvdaļas
Instrumenti un sastāvdaļas
Instrumenti un sastāvdaļas
Instrumenti un sastāvdaļas

Šeit ir visu projektam izmantoto rīku saraksts: Elektroniskie komponenti:

  • Maizes dēlis (x1)
  • Daudzvirzienu A1126LUA-T (IC-1126 SW OMNI 3-SIP ALLEGRO) zāles efekta sensori (x16)
  • Pamata 5 mm gaismas diodes (x16)
  • Jumper vadi
  • 125 kHz RFID lasītājs un antena (x1)
  • Arduino Mega (x1)
  • RFID 3M tagi (x2)

Citi materiāli:

  • Plexiglass
  • Glancēts papīrs
  • īsi dēļi (koka)
  • Akrila krāsa (tumši zaļa un krēmkrāsas) x2
  • Plāns kartons
  • 10 mm apaļi magnēti (x2)
  • Lombarda un karalienes gabali
  • Lodāmurs un lodēšanas materiāli

4. darbība. Shēmas (Fritzing)

Shēmas (Fritzing)
Shēmas (Fritzing)

Es zinu, ka shēmas ir nedaudz sarežģītas, bet idejai jābūt skaidrai. Tā bija pirmā reize, kad izmantoju Fritzing (starp citu, ļoti ieteicams), iespējams, savienojumus varētu uzzīmēt precīzāk. Jebkurā gadījumā es atzīmēju visu, kas atrodas shēmās. Piezīme. Es nevarēju atrast precīzu RDIF lasītāja modeli starp komponentiem Fritzing datu bāzē. Mans izmantotais modelis ir 125Khz RFID modulis - UART. Jūs varat atrast pamācības vietnē Youtube par šī moduļa iestatīšanu ar Arduino.

5. solis: process

Process
Process

Laiks izskaidrot, kā lietas tika veidotas. Lūdzu, sekojiet soli pa solim aprakstam:

1. Paņemiet 21x21 cm kartonu, kā arī kādu papildu kartonu, lai sagrieztu un pielīmētu plāksnes augšējās daļas sienas, lai izveidotu 16 kvadrātus ar uzskaitītu A B C D 1 2 3 4. Tā kā kartons ir plāns, katrā kvadrātā varat ievietot 16 zāles efekta sensorus ar 3 kājām un 16 gaismas diodes ar 2 kājām.

2. Pēc komponentu iestatīšanas jums būs jāveic lodēšana, lai lodētu Halles efekta sensoru kājas un gaismas diodes savienojuma vadiem. Šajā brīdī es ieteiktu gudri izvēlēties krāsainus vadus, lai jūs netiktu sajaukti ar gaismas diodes + un - kājām, kā arī Hall -efekta sensoru VCC, GND un PIN kājas. Protams, varētu izdrukāt PCB ar sensoriem un pat WS2812 tipa gaismas diodes, kas jau ir pielodētas, bet es nolēmu saglabāt projektu vienkāršu un veikt vēl dažus "roku darbus". Šajā brīdī viss, kas jums jādara, ir sagatavot vadus un sensorus, vēlākos posmos pēc Fritzing shēmas jūs varat redzēt, kur jāpievieno katra stieples gals. Drīz daži no tiem nonāks tieši pie Arduino Mega PIN (to ir pietiekami daudz Arduino), citi - uz maizes dēļa, un visus GND var pielodēt vienā auklas gabalā (veidojot kopīgu pamatu), kas vēlāk jābūt savienotam ar GND uz Arduino plates. Šeit ir viena svarīga piezīme: Halles efekta sensori ir VISPĀRĪGI, kas nozīmē, ka nav svarīgi, kurš magnēta pols tiks turēts sensora tuvumā, tas nosūtīs 0 datus, kamēr tuvumā ir kāds magnētiskais lauks, un 1, ja tā nav, proti, magnēts atrodas prom (tālāk par 5 cm) no sensora.

3. Sagatavojiet līdzīgu 21x21 cm kartonu un piestipriniet uz tā Arduino Mega un garu maizes dēli. Varat arī no kartona atkal izgriezt 4 jebkura vēlama augstuma sienas un pielīmēt tās vertikāli ar šiem diviem 21x21 cm kvadrātveida dēļu slāņiem. Pēc tam izpildiet Fritzing shēmas, lai iestatītu lietas. RFID lasītāju varat iestatīt arī pēc tam, kad esat pabeidzis darbu ar gaismas diodēm un Halles efekta sensoriem.

4. Pārbaudiet, vai visas gaismas diodes un sensori darbojas, nosūtot signālus, izmantojot pamata kodus. Neizvairieties no šī soļa, jo tas ļaus jums pārbaudīt, vai viss darbojas pareizi, un pāriet pie tāfeles turpmākās konstrukcijas.

5. Sagatavojiet lombardu un karalieni ar diviem zemāk piestiprinātiem 10 cm rādiusa magnētiem, kā arī apaļiem RFID marķējumiem. Vēlāk jums būs jāizlasa šo tagu ID no sērijas ekrāna Arduino IDE.

6. Ja viss darbojas lieliski, varat sākt galveno kodu un izmēģināt lietas!

7 (pēc izvēles). Jūs varat veikt kādu māksliniecisku darbu ar koku, kas jūsu demonstrācijai sniegs dabiskāku skatu. Tas ir atkarīgs no jūsu gribas un iztēles.

6. darbība: daži fotoattēli un videoklipi no dažādiem posmiem

Image
Image
Daži fotoattēli un video no dažādiem posmiem
Daži fotoattēli un video no dažādiem posmiem
Daži fotoattēli un video no dažādiem posmiem
Daži fotoattēli un video no dažādiem posmiem

7. darbība: avota kods

Avota kods
Avota kods

Tagad, kad esam pabeiguši prototipu, mēs esam gatavi to iedzīvināt, izmantojot zemāk esošo Arduino kodu. Es centos atstāt pēc iespējas vairāk komentāru, lai padarītu koda analīzes procesu saprotamu. Godīgi sakot, loģika no pirmā acu uzmetiena varētu šķist nedaudz sarežģīta, bet, ja padziļināsit koda loģiku, tā izskatīsies visaptverošāka.

Piezīme. Līdzīgi kā īstajā šaha galdā, es abstrakti skaitīju kvadrātus kā A1, A2, A3, A4, B1,…, C1,…, D1,.., D4. Tomēr kodā nav lietderīgi izmantot šo apzīmējumu. Tāpēc es izmantoju masīvus un attēloju kvadrātus kā 00, 01, 02, 03, 10, 11, 12, 13,…, 32, 33.

Paldies par jūsu uzmanību! Pārbaudiet visu un brīvi rakstiet komentāros par jebkādām kļūdām, kuras esmu palaidis garām, uzlabojumiem, ieteikumiem utt. Gaidīšu dažus viedokļus par projektu. Ja jums nepieciešama jebkāda veida palīdzība ar projektu, rakstiet man ([email protected]) vai pievienot skype (tahir.miriyev9r1), lai mēs varētu ieplānot sarunu un detalizēti apspriest lietas. Veiksmi!