Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
Hej beslutsfattare, Jag är Tahir Miriyev, 2018 examen från Middle East Technical University, Ankara/ Turkiet. Jag utbildade mig till tillämpad matematik, men jag älskade alltid att göra saker, särskilt när det handlade om lite arbete med elektronik, design och programmering. Tack vare en unik kurs om prototyper, som erbjuds på vår avdelning för industridesign, fick jag en chans att göra något riktigt intressant. Projektet kan behandlas som ett terminsprojekt, varade under en hel termin (4 månader). Eleverna fick en uppgift att hitta ett kreativt tillvägagångssätt för att designa redan existerande produkter/demos och förverkliga sina idéer med hjälp av Arduino mikrokontroller och sensorer. Jag tänkte på schack, och efter att ha undersökt framgångsrika projekt märkte jag att i tidigare projekt använde tillverkare i princip färdiga schackmotorer (där alla drag i varje figur var programmerade i kärnan), tillsammans med Raspberry Pi, några MUX är, lysdioder och vassströmbrytare. I mitt projekt bestämde jag mig dock för att bli av med eventuell extern mjukvara när det gäller en schackmotor och hitta en kreativ lösning för figurigenkänningsproblemet med hjälp av RFID-läsare, Hall-effektsensorer och Arduino Mega.
Steg 1: Vad är ett problem med figurigenkänning och hur jag löste det
För att uttrycka det enkelt, anta att du har en schackbräda med en "hjärna" = mikrokontroller, och du måste få din bräda att förstå vilken figur du höll i din hand och var du har placerat den. Detta är problemet med figurigenkänning. Lösningen på detta problem är trivial när du har en schackmotor med alla bitar stående på sina utgångspositioner på brädet. Innan jag förklarar varför det är så, låt mig göra några kommentarer.
För dem som är entusiastiska över hur saker och ting fungerar här måste jag klargöra varför vi behöver vassströmbrytare (eller i mitt fall använde jag Hall-effektsensorer): om du placerar en magnet under varje bit och hämtar den från en ruta på tavlan (förutsatt att det finns en vassomkopplare under varje ruta) på grund av att det finns ett magnetfält ovanför sensorn, kan du få din styrenhet att förstå om det finns/inte finns en bit på torget. Det berättar dock fortfarande inte för mikrokontrollern något om exakt vilken bit som står på torget. Det berättar bara att det finns/inte en bit på en ruta. Vid denna tidpunkt står vi ansikte mot ansikte med ett figurigenkänningsproblem, som kan lösas med en schackmotor, med alla bitar placerade på sina utgångslägen när schackspelet startar. På detta sätt "vet" mikrokontroller var varje bit står från början, med alla adresser fixerade i minnet. Ändå ger detta oss en enorm begränsning: du kan inte välja, låt oss säga, hur många bitar som helst och placera dem slumpmässigt var som helst på brädet och börja analysera spelet. Du måste alltid börja från början, alla bitar borde vara på brädet ursprungligen, eftersom detta är det enda sättet för mikrokontrollern att spåra sina platser när du lyft en bit och placerat på någon annan torg. I huvudsak var detta problemet jag märkte och bestämde mig för att jobba mot.
Min lösning var ganska enkel, men kreativ. Jag placerade en RFID -läsare på framsidan av ett kort. Samtidigt fäster jag inte bara en magnet under bitar utan också en RFID -tagg, där varje bit har ett unikt ID. Innan du placerar en figur på en önskad ruta kan du därför först hålla biten nära RFID -läsaren och låta den läsa ID, identifiera biten, spara den i minnet och sedan placera den var du vill. För att förenkla kretsutformningen använde jag i stället för att använda reed-switchar hall-effektsensorer, som fungerar på samma sätt, med den enda skillnaden att skicka 0 eller 1 till en mikrokontroller som en digital data, vilket betyder "det finns" eller "det finns inte" någon bit på torget, respektive. Jag har också lagt till lysdioder (tyvärr inte av samma färg, hade inte sådana), så att när du lyfter biten tänds alla fyrkantiga platser där en lyft bit kan placeras. Tänk på det som en pedagogisk praxis för schackelever:)
Slutligen vill jag notera att trots att jag använde flera tekniker förblir projektet enkelt och begripligt, inte djupt utarbetat eller överkomplicerat. Jag hade inte tillräckligt med tid att fortsätta med 8x8 schackbräda (även för att 64 hall-effektsensorer är dyra i Turkiet, jag täckte alla kostnader relaterade till projekt), det var därför jag gjorde en 4x4 demoversion med bara två testade delar: bonde och Drottning. Istället för att använda en schackmotor skrev jag en källkod för Arduino, som genererar allt du ser i videon nedan.
Steg 2: Hur saker fungerar
Innan vi går vidare till den steg-för-steg-förklaringen om hur projektet gjordes, tror jag att det vore bättre att titta på en illustrativ video och få en intuitiv uppfattning om vad jag pratar om.
Obs #1: en av de röda lysdioderna (först i raden/ från vänster till höger) brann ut, oavsett.
Obs #2: även om det används mycket, kan jag av min erfarenhet säga att RFID -tekniken inte är den bästa idén att använda i DIY -applikationer (naturligtvis om du har alternativ). Innan allt fungerade gjorde jag många prövningar med att placera schackpjäser nära läsaren och vänta tills den läste ID: t korrekt. Seriell port bör konfigureras för det eftersom sättet RFID -läsare läser ID är bara en huvudvärk. Man bör försöka själv för att förstå frågan. Om du behöver mer hjälp, vänligen maila mig ([email protected]) eller lägg till på skype (tahir.miriyev9r1), så att vi kan schemalägga en konversation och diskutera saker i detaljer, jag kommer att förklara allt noggrant.
Steg 3: Verktyg och komponenter
Här är listan över alla verktyg jag använde för projektet: Elektroniska komponenter:
- Brödbräda (x1)
- Omnidirektionell A1126LUA-T (IC-1126 SW OMNI 3-SIP ALLEGRO) Hall-effektsensorer (x16)
- Grundläggande 5 mm lysdioder (x16)
- Bygelkablar
- 125 kHz RFID -läsare och antenn (x1)
- Arduino Mega (x1)
- RFID 3M -taggar (x2)
Andra material:
- Plexiglas
- Glansigt papper
- korta plankor (trä)
- Akrylfärg (mörkgrön och creme) x2
- Tunn kartong
- 10 mm runda magneter (x2)
- Pant och drottning bitar
- Lödkolv och lödmaterial
Steg 4: Schematik (Fritzing)
Schemat är lite komplicerat, jag vet, men tanken borde vara tydlig. Det var första gången jag använde Fritzing (rekommenderas förresten), förmodligen kunde anslutningar dras mer exakt. Hur som helst noterade jag allt inuti schemat. Obs: Jag kunde inte hitta den exakta modellen av RDIF Reader bland komponenterna i Fritzings databas. Modellen jag använde är 125Khz RFID -modul - UART. Du kan hitta självstudier på Youtube om hur du ställer in den här modulen med Arduino.
Steg 5: Bearbeta
Dags att förklara hur saker gjordes. Följ steg-för-steg-beskrivningen:
1. Ta en 21x21 cm kartong, samt lite extra kartong för att klippa och limma väggarna på den övre delen av brädet, för att göra 16 rutor med A B C D 1 2 3 4 räknat. Eftersom kartongen är tunn kan du fästa 16 hall-effektsensorer i varje kvadrat, med 3 ben vardera och 16 lysdioder med 2 ben vardera.
2. När du har ställt in komponenter måste du lödda lite, för att lödda benen på hall-effektsensorer och lysdioder till bygelkablar. Vid denna tidpunkt skulle jag rekommendera att välja färgade trådar på ett smart sätt, så att du inte blir förvirrad med + och - benen på lysdioder, även VCC-, GND- och PIN -ben på Hall -effektsensorer. Naturligtvis kan man skriva ut ett kretskort med sensorer och till och med WS2812 -typer av lysdioder som redan är lödda, men jag bestämde mig för att hålla projektet enkelt och göra lite mer "handarbete". Vid denna tidpunkt är allt du behöver göra för att förbereda sladdar och sensorer, på senare steg efter Fritzing -schemat kan du se var du ska fästa änden på varje tråd. Några av dem kommer att gå direkt till PIN -koderna på Arduino Mega (det finns tillräckligt med dem på Arduino), andra till brödbrädan och alla GND kan lödas till en enda sladd (som gör gemensam grund) som senare bör anslutas till GND på Arduino -kortet. En viktig notering här: Hall -effektsensorer är OMNIDIRECTIONAL, vilket betyder att det inte spelar någon roll vilken magnet på en magnet som kommer att hållas nära sensorn, den skickar 0 data medan det finns något magnetfält i närheten och 1 när det inte finns, nämligen är magneten borta (längre än till exempel 5 sm) från sensorn.
3. Förbered liknande 21x21 cm kartong och fäst Arduino Mega och en lång brödbräda på den. Du kan också klippa 4 väggar av önskad höjd från kartong igen och limma dem vertikalt med de två lagren av 21x21 cm fyrkantiga brädor. Följ sedan Fritzing Schematics för att ställa upp saker. Du kan också ställa in RFID-läsaren när du är klar med lysdioder och hall-effektsensorer.
4. Testa om alla lysdioder och sensorer fungerar genom att skicka signaler med hjälp av grundkoder. Undvik inte det här steget, eftersom det låter dig testa om allt fungerar korrekt och gå vidare till ytterligare konstruktion av brädet.
5. Förbered Pawn and Queen, med två magneter med en radie på 10 cm nedan, samt runda RFID -taggar. Senare måste du läsa ID för dessa taggar från Serial Screen på Arduino IDE.
6. Om allt fungerar bra kan du starta huvudkoden och prova saker!
7 (valfritt). Du kan göra lite konstnärligt arbete med trä som ger din demo en mer naturlig vy. Det är upp till din vilja och fantasi.
Steg 6: Några foton och videor från olika stadier
Steg 7: Källkod
Nu, när vi är klara med en prototyp, är vi redo att väcka den till liv med Arduino -koden nedan. Jag försökte lämna så många kommentarer jag kunde för att göra kodanalysprocessen begriplig. För att vara ärlig kan logiken verka lite komplex från första ögonkastet, men om du gräver djupare i kodens logik kommer den att se mer omfattande ut.
Obs: I likhet med det riktiga schackbrädet numrerade jag abstrakt kvadrater som A1, A2, A3, A4, B1,…, C1,…, D1,.., D4. Men i koden är det inte praktiskt att använda den här notationen. Därför använde jag matriser och representerade rutor som 00, 01, 02, 03, 10, 11, 12, 13,…, 32, 33 respektive.
Tack för din uppmärksamhet! Testa allt och skriv fritt i kommentarerna om alla misstag jag har missat, förbättringar, förslag etc. Ser fram emot att höra några åsikter om projektet. Om du behöver någon form av hjälp med projektet, maila mig ([email protected]) eller lägg till på skype (tahir.miriyev9r1), så att vi kan schemalägga en konversation och diskutera saker i detaljer. Lycka till!