Sadržaj:
- Korak 1: Potrošni materijal/alati
- Korak 2: Sheme i planiranje
- Korak 3: SQL baza podataka
- Korak 4: Hardver
- Korak 5: Softver
Video: Digitalni šah - Pratite svoju šahovsku igru na mreži: 5 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:07
Igrao sam mnogo šaha od mladosti, a budući da web ima ogromnu količinu web stranica na kojima možete igrati šah protiv računara ili živih protivnika, nikada nisam pronašao web stranicu koja prati vašu šahovsku partiju zapravo igra u stvarnom životu. Stoga se ovim projektom nadam da ću to realizirati!
Nadam se da ću:
- Moći pratiti kretanje šahovskih figura
- Pogledajte neke tabele s rezultatima o prošlim igrama.
- Pratite vrijeme i igrajte brzo poput profesionalne igre.
To je vrlo složen projekt jer će, ako se dovrši, zahtijevati 64 svjetlosna senzora i 8 čipova za čitanje. Što je već veliki zadatak i ne računamo čak niti jedan drugi senzor.
Moj fakultet dao nam je veliku listu stvari koje trebamo učiniti:
- Napravite shemu za naš projekt
- Napravite bazu podataka za skladištenje i dobivanje podataka.
- Dizajnirajte web stranicu koristeći Adobe XD
- Ponovo kreirajte ovu web stranicu s CSS -om i HTML -om
- Čitajte senzore s pythonom
- Prikažite podatke senzora na web stranici pomoću tikvice.
U ovom uputstvu vodit ću vas na svom putovanju i svim nevoljama i trenucima spasenja kroz koje sam prošao ovih posljednjih nekoliko sedmica.
Korak 1: Potrošni materijal/alati
Potrošni materijal, materijali i alati prvi su korak do uspješnog projekta!
Alati:
- Lemilica
- Lemni lim
- Kliješta
- Bušilica
- Tape
Potrošni materijal:
- Raspberry Pi sa mikro SD karticom (4 GB bi trebalo biti dovoljno)
- Rasberry Pi T-obućar
- Šahovska ploča sa figurama
- 7 -segmentni ekran (TM 1637)
- 2 senzora za dodir (TTP223B)
- RFID čitač sa karticama (MFRC522)
- MCP3008 (Ovisno o tome koliko daleko želite ići, za svaki MCP možete pročitati 8 šahovskih koordinata)
- Otpornik ovisan o svjetlu 5288 (8 za svaki MCP koji imate)
- Zaglavlja (muški na muški i ženski na muški)
Ako trebate kupiti sve, procijenjena cijena bi trebala biti oko 125 eura, uključujući troškove dostave (samo potrošni materijal)!
U prilogu je Excel datoteka s vezama i cijenama na sve što vam treba!
Korak 2: Sheme i planiranje
Sljedeći korak u ovom projektu je stvaranje sheme. Napravio sam 2: jedan na ploči i jedan čisto elektronički. Ove sheme će nam trebati da sve bude čisto i da ne povežemo nepotrebne stvari!
Koristio sam program pod nazivom "Fritzing" za kreiranje ovih shema ako nekoga zanima.
Kodiranje u boji:
- Crveno = napajanje
- Zelena = veza
- Plava = zemlja
Raspberry Pi veze:
- 3V3 => VC linija na matičnoj ploči, napaja sve
- 5V => VCC 7 -segmentnog prikaza
-
GND:
- Uzemljen na ploči
- U osnovi 7 -segmentnog ekrana
- GPIO4 => Sat Odaberite pin za MCP3008
- GPIO10 => MOSI pin MCP3008
- GPIO9 => MISO pin MCP3008
- GPIO11 => CLK pin MCP3008
- GPIO7 => SDA pin MFRC522
- GPIO19 => DIG pin prvog senzora dodira
- GPIO26 => DIG pin drugog senzora dodira
- GPIO20 => CLK pin sedmosegmentnog ekrana
- GPIO21 = DIO pin ekrana sa sedam segmenata
Nekoliko napomena o shemama:
- Ova shema sadrži samo 1 MCP, što znači da će se samo 8 koordinata moći čitati u potpunosti.
- Koristit ću GPIO pinove kao svoj Chip Select. Budući da su dostupna samo 2 čipa za odabir čipa s potencijalno 8 MCP -ova.
- Zaslon od 7 segmenata je jedan koji je predložio nastavnik, potrebne su samo 4 žice jer radi po vlastitom protokolu.
- Otpornici na digitalnom pinu senzora dodira nisu u potpunosti potrebni, ali se savjetuju.
Objašnjavajući komponente:
-
MCP sa svjetlosnim senzorima:
-
MCP3008 je 8 -kanalni 10 -bitni ADC:
- MCP3008 će očitati analognu vrijednost svjetlosnih senzora, ova vrijednost ovisi o količini svjetlosti koja trenutno sijeva na senzoru.
- U svom python kodu primit ću tu analognu vrijednost i pretvoriti je u 1 ili 0
-
- Koristi određeni protokol (SPI) s instaliranim paketom.
- Nije teško kodirati s instaliranim paketom
- Čita oznaku i vraća vrijednost oznake
- Također možete unijeti vrijednost u oznaku, pa umjesto da vrati heksadecimalnu vrijednost, ona vraća ime, na primjer
- Također koristi instalirani paket za jednostavno kodiranje
- Napravite varijablu s cijelom vrijednosti, a zatim je podijelite na 4 znaka i pokažite te znakove
Senzori dodira:
Radi kao gumb, za ovo koristim klasu s metodom povratnog poziva. O ovome kasnije
RFID čitač (MFRC 522):
7 segment (TM1637)
Korak 3: SQL baza podataka
Treći korak prema ovom projektu je stvaranje 3NF normalizirane SQL baze podataka!
Ovo će nam trebati za:
- Umetanje podataka
- Dobivanje podataka i njihovo prikazivanje na našoj web stranici
- Mogućnost vidjeti koliko je zavoja prošlo u trenutnoj igri šaha!
Objašnjene tabele:
-
Igre
- Ovo prati ko je pobijedio u određenoj igri i kada je igra odigrana
- Primarni ključ ovdje je GameID
- Datum ima standardnu vrijednost tekućeg datuma
- Pobjednik i rezultat bit će dodani kasnije, po završetku igre!
-
Igrači (igrači na holandskom)
- Oni se ubacuju ručno, ali se mogu umetnuti i pomoću sistema RFID kartica.
- Napišite ime na svoju karticu, zatim pročitajte karticu i umetnite ime u ovu tabelu
- On također prati rekord pobjeda / poraza svakog igrača koji će biti prikazan na web stranici
-
Historiek (Historija)
- Ovo je istorija skretanja
- kada se šahovska figura premjesti, ona će se ažurirati ovdje
- Ima 3 strana ključa, igrač, igru i šahovsku figuru
- ReadDate (InleesDatum) je datum kada je senzor očitan
- ReadTime je isto što i ReadDate, ali sa vremenskom oznakom
- LocationID (LocatieID) je naziv koordinate na kojoj se nalazi. na primjer "a3"
-
Šahovske figure (Schaakstukken na holandskom)
- Svaka šahovska figura ima ličnu kartu, tim, ime i status
- Ekipa je 1 ili 2, crna ili bijela;
- Naziv bilo kojeg komada bio bi tj. "Pion 1"
- Status znači da je komad živ ili mrtav!
Korak 4: Hardver
Sada kada imamo sve ispravne komade na mjestu, možemo početi stvarati nešto!
Podijelimo ovaj dio u podkorake jer će biti lakše objasniti:
-
Korak 1: Želite li izbušiti rupu u svakoj koordinati vaše šahovske ploče, kao što je prikazano na prvoj slici, također izbušite rupu u koju želite postaviti senzore dodira, RFID čitač i 7 -segmentni ekran.
Ne zaboravite izbušiti neke rupe sa strane ploče, one su za žice različitih komponenti na vrhu ploče. Mnogo bušenja, znam
- Korak 2: Pokušajte spojiti jedan ili dva senzora na Raspberry Pi, provjerite rade li. Želite ih spojiti na MCP analogni čitač kao što je objašnjeno ranije u koraku 2 (Sheme).
-
Korak 3: Ovo bi moglo biti zeznuto i uništiti živce, budući da zaglavlja kratkospojnika nisu dobro zaglavljena, možda ćete ih htjeti zalijepiti na ploču, pojedinačno ili više odjednom. Morate se pobrinuti da ostanu zaglavljeni na šahovskoj ploči, u protivnom nećete moći uspješno očitati senzore
SAVJET! Ako vam to olakšava, neko ljepilo bi zapravo moglo pomoći da senzori ostanu na mjestu dok ih lijepite, otkrio sam to na teži način
Korak 5: Softver
Nakon što ste napravili hardver koji možete testirati, pokušajmo napisati neki kod za njega! Ako želite pogledati moj kod, prijeđite na moj github.
Back-endNajprije će nam trebati nekoliko paketa za instaliranje, nastavio sam i napravio listu za vas:
- boca
Na ovome će raditi vaš python kôd
-
Utičnica za utičnicuIO
Za komunikaciju između prednjeg i stražnjeg kraja
-
numpy
Korisno za čitanje svjetlosnih senzora, radi s matricama
-
netifaces
Za ispis vlastite IP adrese na 7 -segmentnom ekranu
-
Flask-CORS
Dijeljenje regresa s različitim izvorima omogućuje razmjenu paketa na različitim domenama
Pored toga, napisao sam nekoliko časova i možete ih slobodno koristiti.
Prednji kraj
Kod web stranice je također dostupan na mojoj stranici na githubu!
Za front-end ću koristiti Chessboard.js. Ovo ubacuje šahovsku ploču koja se lako koristi s figurama koje se lako premještaju!
Sve na ploči je prilagodljivo pa se zabavite! Nakon što preuzmete najnoviju verziju, morat ćete prevući datoteke u svoj projekt i povezati ih sa stranicom na kojoj želite prikazati šahovnicu!
Nakon toga, pokušajmo stvoriti ploču, ne izgleda previše teško:
Prvo, u vašem html -u:
Drugo, u vašoj javascript datoteci:
board1 = ChessBoard ('board1', 'start');
i eto ga, sad biste trebali moći vidjeti šahovnicu! Slobodno prilagodite ploču u CSS datotekama!
Sada želimo vidjeti neke poteze na šahovskoj ploči, ne pretjerane. Ali moramo ga prilagoditi tako da naredbu move pošalje back-end. Neću ulaziti u previše detalja, ali želimo učiniti ovako nešto:
new_lijst = [Data.data [0], Data.data [1]; commando = new_lijst [0].concat ('-', new_lijst [1]); board1.move (komandos);
Dobivamo popis iz našeg back-end programa i stavljamo crticu između dvije koordinate, a zatim pomoću naredbe board.move izvršimo potez!
To je moje objašnjenje o tome šta nam treba od dodatka chessboard.js, idite na moj github da sami pogledate kod
Preporučuje se:
Programirajte svoju igru 2048 W/Java !: 8 koraka
Programirajte svoju igru 2048 sa Javom !: Obožavam igru 2048. I tako sam odlučio programirati svoju verziju. Vrlo je slična stvarnoj igri, ali sama programiranje daje mi slobodu da promijenim šta god poželim kad god to poželim. Ako želim igru 5x5 umjesto tipičnih 4x4, s
Widget za prikaz vremenske prognoze na mreži pomoću ESP8266: 4 koraka
Widget za prikaz vremenske prognoze na mreži pomoću ESP8266: Prije nekoliko sedmica naučili smo kako izgraditi mrežni sistem za prikaz vremena koji je prikupljao vremenske informacije za određeni grad i prikazivao ih na OLED modulu. Za taj projekt koristili smo Arduino Nano 33 IoT ploču koja je nova ploča koja
Džepni šah: 4 koraka
Džepni šah: To je šah! U džepu. Ovaj projekt ima za cilj stvoriti mali uređaj koji može pokretati male igre poput zmija, pac-man-a, tetrisa, pa čak i šaha
Blokiranje oglasa na čitavoj mreži s vašim Raspberry Pi: 4 koraka
Blokiranje oglasa na čitavoj mreži s vašim Raspberry Pi: Doživite čistiji, brži web i blokirajte dosadne oglase na cijeloj svojoj kućnoj mreži pomoću Pi-hole-a i Raspberry Pi-ja
Napišite svoju igru Tic Tac Toe na Javi: 6 koraka
Napišite svoju igru Tic Tac Toe na Javi: Siguran sam da svi znate o klasičnoj igri Tic Tic Toe. Još od osnovnih škola Tic Tac Toe je bila popularna igra koju sam igrao sa svojim prijateljima. Uvijek sam bio fasciniran jednostavnošću igre. Na prvoj godini moje