Satura rādītājs:
- 1. darbība: izejmateriāli/rīki
- 2. solis: shēmas un plānošana
- 3. darbība: SQL datu bāze
- 4. solis: aparatūra
- 5. solis: programmatūra
Video: Digitālais šahs - izsekojiet savai šaha spēlei tiešsaistē: 5 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:55
Kopš jaunības esmu spēlējis daudz šaha, un, tā kā tīmeklī ir milzīgs daudzums vietņu, kurās var spēlēt šahu pret datoriem vai pretiniekiem, es nekad neesmu atradis vietni, kurā tiek izsekota jūsu šaha spēle. patiesībā spēlē reālajā dzīvē. Tāpēc ar šo projektu es ceru to realizēt!
Es ceru, ka:
- Spēj izsekot šaha figūru kustībai
- Skatiet dažus uzvarētāju sarakstus par iepriekšējām spēlēm.
- Izsekojiet laiku un spēlējiet ātri kā profesionāla spēle.
Tas ir ļoti sarežģīts projekts, jo, ja tas būtu pabeigts, lasīšanai būtu nepieciešami 64 gaismas sensori un 8 mikroshēmas. Tas jau ir liels uzdevums, un mēs pat neskaitām citus sensorus.
Mana koledža mums sniedza plašu darāmo lietu sarakstu:
- Izveidojiet mūsu projekta shēmu
- Izveidojiet datu bāzi datu glabāšanai un iegūšanai.
- Izstrādājiet vietni, izmantojot Adobe XD
- Atkārtoti izveidojiet šo vietni, izmantojot CSS un HTML
- Lasiet sensorus ar python
- Parādiet sensoru datus vietnē, izmantojot kolbu.
Šajā pamācībā es jūs vadīšu savā ceļā, kā arī visas grūtības un pestīšanas brīžus, ko esmu izgājis pēdējo pāris nedēļu laikā.
1. darbība: izejmateriāli/rīki
Piegādes, materiāli un instrumenti ir pirmais solis uz veiksmīgu projektu!
Rīki:
- Lodāmurs
- Alvas lodēšana
- Knaibles
- Urbjmašīna
- Lente
Piegādes:
- Raspberry Pi ar micro SD karti (pietiek ar 4 GB)
- Rasberry Pi T kurpnieks
- Šaha dēlis ar gabaliem
- 7 segmentu displejs (TM 1637)
- 2 skārienjutīgie sensori (TTP223B)
- RFID lasītājs ar kartēm (MFRC522)
- MCP3008 (atkarībā no tā, cik tālu vēlaties iet, katram MCP varat nolasīt 8 šaha koordinātas)
- Gaismas atkarīgais pretestības tips 5288 (8 katram jūsu MCP)
- Galvenes (no vīriešiem uz vīriešiem un no sievietēm uz vīriešiem)
Ja jums ir jāiegādājas viss, paredzamajai pašizmaksai jābūt aptuveni 125 eiro, ieskaitot piegādes izmaksas (tikai piegādēm)!
Visam nepieciešamajam ir pievienots Excel fails ar saitēm un cenām!
2. solis: shēmas un plānošana
Nākamais solis šajā projektā ir izveidot shēmu. Es izveidoju 2: vienu uz maizes dēļa un vienu tīri elektroniski. Mums būs vajadzīgas šīs shēmas, lai viss būtu tīrs un lai mēs nepievienotu nevajadzīgas lietas!
Es izmantoju programmu ar nosaukumu "Fritzing", lai izveidotu šīs shēmas, ja kādu interesē.
Krāsu kodēšana:
- Sarkans = barošanas avots
- Zaļš = savienojums
- Zils = zeme
Raspberry Pi savienojumi:
- 3V3 => VC līnija uz maizes dēļa, barojot visu
- 5V => 7 segmentu displeja VCC
-
GND:
- Zeme uz maizes dēļa
- 7 segmentu displeja pamatojums
- GPIO4 => Pulkstenis Izvēlieties MCP3008 tapu
- GPIO10 => MCP3008 MOSI tapa
- GPIO9 => MCP3008 MISO tapa
- GPIO11 => MCP3008 CLK tapa
- GPIO7 => MFRC522 SDA tapa
- GPIO19 => Pirmā pieskāriena sensora DIG tapa
- GPIO26 => Otrā pieskāriena sensora DIG tapa
- GPIO20 => CLK tapa septiņu segmentu displejā
- GPIO21 = septītā segmenta displeja DIO tapa
Pāris piezīmes par shēmām:
- Šī shēma satur tikai 1 MCP, tas nozīmē, ka tikai 8 koordinātas varēs nolasīt pilnībā.
- Kā mikroshēmas izvēli es izmantošu GPIO tapas. Tā kā ir pieejamas tikai 2 mikroshēmu atlases tapas ar potenciāli 8 MCP.
- Septiņu segmentu displeju iesaka skolotājs, ir nepieciešami tikai 4 vadi, jo tas darbojas pēc sava protokola.
- Skārienjutīgo sensoru digitālās tapas rezistori nav pilnībā nepieciešami, taču tie ir ieteicami.
Skaidrojiet komponentus:
-
MCP ar gaismas sensoriem:
-
MCP3008 ir 8 kanālu 10 bitu ADC:
- MCP3008 nolasīs gaismas sensoru analogo vērtību, šī vērtība ir atkarīga no gaismas daudzuma, kas pašlaik spīd uz sensora.
- Manā pitona kodā es saņemšu šo analogo vērtību un pārvērtīšu to par 1 vai 0
-
- Ar instalētu pakotni izmanto īpašu protokolu (SPI).
- Nav grūti kodēt ar instalētu pakotni
- Izlasa tagu un atgriež taga vērtību
- Jūs varat arī ierakstīt vērtību atzīmei, tāpēc tā vietā, lai atgrieztu heksadecimālo vērtību, tā atgriež nosaukumu, piemēram
- Izmanto arī instalētu pakotni ērtai kodēšanai
- Izveidojiet mainīgo ar veselu skaitli, pēc tam sadaliet to 4 rakstzīmēs un parādiet šīs rakstzīmes
Pieskāriena sensori:
Darbojas tāpat kā poga, es tam izmantoju klasi ar atzvanīšanas metodi. Vairāk par šo vēlāk
RFID lasītājs (MFRC 522):
7 segments (TM1637)
3. darbība: SQL datu bāze
Trešais solis ceļā uz šo projektu ir 3NF normalizētas SQL datu bāzes izveide!
Tas mums būs vajadzīgs:
- Datu ievietošana
- Datu iegūšana un parādīšana mūsu vietnē
- Spēja precīzi redzēt, cik pagriezienu ir gājis pašreizējā šaha spēlē!
Tabulās ir paskaidrots:
-
Spēles
- Tas izseko, kurš uzvarēja noteiktā spēlē un kad spēle tika spēlēta
- Galvenā atslēga šeit ir GameID
- Datumam ir pašreizējā datuma standarta vērtība
- Uzvarētājs un rezultāts tiks pievienots vēlāk, pēc spēles beigām!
-
Spēlētāji (Spelers holandiešu valodā)
- Tos ievieto manuāli, bet var ievietot arī, izmantojot RFID karšu sistēmu.
- Ierakstiet kartē nosaukumu, pēc tam izlasiet kartīti un ievietojiet vārdu šajā tabulā
- Tas arī izseko katra spēlētāja uzvaru / zaudējumu rekordu, kas tiks parādīts vietnē
-
Historiek (vēsture)
- Šī ir pagriezienu vēsture
- kad šaha figūra tiek pārvietota, tā tiks atjaunināta šeit
- Tam ir 3 ārējās atslēgas, spēlētājs, spēle un šaha figūra
- ReadDate (InleesDatum) ir datums, kad sensors tika nolasīts
- ReadTime ir tāds pats kā ReadDate, bet ar laika zīmogu
- LocationID (LocatieID) ir tās koordinātas nosaukums, kurā tā atrodas. piemēram, "a3"
-
Šaha gabali (Schaakstukken holandiešu valodā)
- Katrai šaha figūrai ir ID, komanda, vārds un statuss
- Komanda ir vai nu 1 vai 2, melna vai balta;
- Jebkura gabala nosaukums būtu, piemēram, "Lombards 1"
- Statuss nozīmē, ka gabals ir dzīvs vai miris!
4. solis: aparatūra
Tagad, kad esam izveidojuši visus pareizos gabalus, varam sākt kaut ko radīt!
Sadalīsim šo daļu apakšposmos, jo būs vieglāk izskaidrot:
-
1. solis: Jūs vēlaties izurbt caurumu katrā šaha dēļa koordinātā, kā parādīts pirmajā attēlā, kā arī urbt caurumu, kurā vēlaties novietot skārienjūtīgos sensorus, RFID lasītāju un 7 segmentu displeju.
Neaizmirstiet urbt dažus caurumus dēļa sānos, tie ir paredzēti dažādu komponentu vadiem tāfeles augšpusē. Daudz urbšanas, es zinu
- 2. darbība. Mēģiniet pieslēgt Raspberry Pi vienu vai divus sensorus, pārbaudiet, vai tie darbojas. Jūs vēlaties tos savienot ar MCP analogo lasītāju, kā paskaidrots iepriekš 2. solī (Shēmas).
-
3. solis. Tas varētu būt sarežģīti un ļoti nervus sagraujoši, jo džemperu galvenes nav ļoti iestrēgušas vietā, iespējams, vēlēsities tos visus piestiprināt pie tāfeles, atsevišķi vai vairākus vienlaikus. Jums jāpārliecinās, ka tie paliek iestrēdzuši šaha galdā, pretējā gadījumā jūs nevarēsit sekmīgi nolasīt sensorus
PADOMS! Ja tas jums atvieglo, dažas līmes faktiski varētu palīdzēt noturēt sensorus vairāk vietā, tos piestiprinot, es to atklāju grūtā veidā
5. solis: programmatūra
Kad esat izveidojis aparatūru, kuru varat pārbaudīt, mēģināsim uzrakstīt tai kādu kodu! Ja vēlaties apskatīt manu kodu, lūdzu, dodieties uz manu github.
Vispirms mums būs jāinstalē pāris pakotnes, es turpināju un izveidoju jums sarakstu:
- kolba
Tas būs tas, uz kā darbosies jūsu python kods
-
Kolbas ligzdaIO
Lai sazinātos starp priekšgalu un aizmuguri
-
dūšīgs
Noderīga gaismas sensoru lasīšanai, darbojas ar matricām
-
netifaces
Lai izdrukātu savu IP adresi 7 segmentu displejā
-
Kolbas-CORS
Vairāku izcelsmes regresa koplietošana ļauj paketes koplietot dažādos domēnos
Papildus tam esmu uzrakstījis pāris nodarbības, un jūs varat tās brīvi izmantot.
Priekšpuse
Vietnes kods ir pieejams arī manā github lapā!
Priekšpusei es izmantošu Chessboard.js. Tas ievieto viegli lietojamu šaha galdu ar viegli pārvietojamiem gabaliem!
Viss uz tāfeles ir pielāgojams, tāpēc izklaidējieties! Pēc jaunākās versijas lejupielādes jums vajadzēs ievilkt failus savā projektā un saistīt tos ar lapu, kurā vēlaties parādīt šaha galdu!
Pēc tam mēģināsim izveidot dēli, neizskatās pārāk grūti:
Pirmkārt, savā html:
Otrkārt, savā javascript failā:
dēlis1 = ChessBoard ('board1', 'start');
un tur jums tas ir, jums tagad vajadzētu redzēt šaha galdu! Jūtieties brīvi pielāgot dēli CSS failos!
Tagad mēs vēlamies redzēt dažus gājienus uz šaha dēļa, ne pārāk smagi. Bet mums tas ir jāpielāgo, lai pārvietošanas komanda tiktu nosūtīta no aizmugures. Es neiedziļināšos pārāk sīkumos, bet mēs vēlamies darīt kaut ko līdzīgu:
new_lijst = [Data.data [0], Data.data [1]; commando = new_lijst [0].concat ('-', new_lijst [1]); board1.move (komando);
Mēs saņemam sarakstu no mūsu aizmugures programmas un ievietojam svītru starp abām koordinātām, pēc tam izmantojiet komandu board.move, lai izpildītu pārvietošanu!
Tas ir mans skaidrojums par to, kas mums nepieciešams no spraudņa chessboard.js, dodieties uz manu github, lai pats apskatītu kodu
Ieteicams:
Arduino šahs: 6 soļi
Arduino šaha pulkstenis: Es nevarēju atrast norādījumus par labu Arduino šaha pulksteni, tāpēc es izveidoju savu, ko es šeit aprakstīšu
Kabatas šahs: 4 soļi
Kabatas šahs: tas ir šahs! Savā kabatā. Šī projekta mērķis ir izveidot nelielu ierīci, kas var vadīt nelielas spēles, piemēram, čūsku, pac-man, tetris un pat šahu
Automātiska punktu skaitīšana nelielai Skee-Ball spēlei: 10 soļi (ar attēliem)
Automātiska punktu skaitīšana nelielai Skee-Ball spēlei: mājās gatavotas Skee-Ball spēles var sagādāt lielu prieku visai ģimenei, taču to trūkums vienmēr ir bijis automātiskās punktu skaitīšanas trūkums. Iepriekš esmu izveidojis Skee-Ball mašīnu, kas spēles bumbiņas sadalīja atsevišķos kanālos, pamatojoties uz sc
Arduino ritma spēļu kontrolieris (manai spēlei): 6 soļi
Arduino ritma spēļu kontrolieris (manai spēlei): šajā pamācībā es jums parādīšu, kā es izveidoju šo ritma spēļu kontrolieri no nulles. Tas ietver pamata kokapstrādes prasmes, 3D drukas pamatprasmes un lodēšanas pamatiemaņas. Jūs, iespējams, varat veiksmīgi izveidot šo projektu, ja jums nav nulles
Bēgšanas robots: RC automašīna evakuācijas spēlei: 7 soļi (ar attēliem)
Escape Robot: RC Car evakuācijas spēlei: Šī projekta galvenais mērķis bija izveidot robotu, kas atšķirtos no jau esošajiem robotiem un ko varētu izmantot reālā un novatoriskā jomā. Pamatojoties uz personīgo pieredzi, tika nolemts uzbūvēt automašīnas formas robotu, kas