Sommario:
- Passaggio 1: che cos'è un problema di riconoscimento della figura e come l'ho risolto
- Passaggio 2: come funzionano le cose
- Passaggio 3: strumenti e componenti
- Fase 4: Schemi (Fritzing)
- Passaggio 5: processo
- Passaggio 6: alcune foto e video da fasi diverse
- Passaggio 7: codice sorgente
Video: Demo 4x4 di una Scacchiera Elettronica/ Con Arduino Mega + Lettore RFID + Sensori ad Effetto Hall: 7 Passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
Ciao creatori, Sono Tahir Miriyev, laureato nel 2018 presso la Middle East Technical University, Ankara/Turchia. Mi sono laureato in Matematica Applicata, ma mi è sempre piaciuto fare cose, specialmente quando si trattava di un po' di lavoro manuale con l'elettronica, il design e la programmazione. Grazie a un corso unico sulla prototipazione, offerto presso il nostro dipartimento di Industrial Design, ho avuto la possibilità di realizzare qualcosa di veramente interessante. Il progetto può essere trattato come un Term Project, della durata di un intero semestre (4 mesi). Agli studenti è stato assegnato il compito di trovare un approccio creativo alla progettazione di prodotti/demo già esistenti e realizzare le loro idee utilizzando microcontrollori e sensori Arduino. Stavo pensando agli scacchi, e dopo aver fatto alcune ricerche su progetti di successo, ho notato che nei progetti precedenti i produttori usavano fondamentalmente motori di scacchi già pronti (dove tutte le mosse di ogni figura erano programmate nel nucleo), insieme a Raspberry Pi, alcuni MUX 'es, LED e interruttori reed. Nel mio progetto, però, ho deciso di sbarazzarmi di qualsiasi software esterno in termini di motore di scacchi e di trovare una soluzione creativa per il problema del riconoscimento della figura, utilizzando lettore RFID, sensori ad effetto Hall e Arduino Mega.
Passaggio 1: che cos'è un problema di riconoscimento della figura e come l'ho risolto
Per dirla semplicemente, supponiamo di avere una scacchiera con un "cervello"=microcontrollore, e devi far capire alla tua scacchiera quale figura hai tenuto in mano e dove l'hai posizionata. Questo è il problema del riconoscimento della figura. La soluzione a questo problema è banale quando hai un motore di scacchi con tutti i pezzi in piedi nelle loro posizioni iniziali sulla scacchiera. Prima di spiegare perché è così, vorrei fare alcune osservazioni.
Per chi è entusiasta di come funzionano le cose qui, devo fare una precisazione sul perché abbiamo bisogno di interruttori reed (o nel mio caso, ho usato sensori ad effetto Hall): se metti un magnete sotto ogni pezzo e lo prendi da un quadrato sulla scacchiera (supponendo che ci sia un interruttore reed sotto ogni quadrato) a causa dell'esistenza/non esistenza del campo magnetico sopra il sensore, puoi far capire al tuo controller se c'è/non c'è un pezzo in piedi sul quadrato. Tuttavia, non dice ancora nulla al microcontrollore su quale pezzo si trova esattamente sul quadrato. Dice solo che c'è/non c'è un pezzo su un quadrato. A questo punto, ci troviamo di fronte a un problema di riconoscimento della figura, che può essere risolto utilizzando un motore di scacchi, con tutti i pezzi posizionati nelle loro posizioni iniziali quando inizia la partita a scacchi. In questo modo il microcontrollore "sa" fin dall'inizio dove si trova ogni pezzo, con tutti gli indirizzi fissati nella memoria. Tuttavia, questo ci porta un enorme limite: non puoi selezionare, diciamo, un numero qualsiasi di pezzi e posizionarli casualmente in qualsiasi punto della scacchiera e iniziare ad analizzare il gioco. Devi sempre iniziare dall'inizio, tutti i pezzi dovrebbero essere originariamente sulla scacchiera, poiché questo è l'unico modo per il microcontrollore di tracciare le loro posizioni una volta che hai sollevato un pezzo e posizionato su un altro quadrato. In sostanza, questo era il problema che ho notato e per il quale ho deciso di lavorare.
La mia soluzione era abbastanza semplice, anche se creativa. Ho posizionato un lettore RFID sul lato anteriore di una scheda. Nel frattempo, ho attaccato non solo un magnete sotto i pezzi, ma anche un tag RFID, con ogni pezzo con un ID univoco. Quindi, prima di posizionare una figura su qualsiasi quadrato desiderato, puoi prima avvicinare il pezzo al lettore RFID e fargli leggere l'ID, identificare il pezzo, salvarlo in memoria e poi posizionarlo dove vuoi. Inoltre, invece di utilizzare interruttori reed, per semplificare la progettazione del circuito, ho utilizzato sensori ad effetto hall, che funzionano in modo simile, con l'unica differenza di inviare 0 o 1 a un microcontrollore come dati digitali, che significa "c'è" o "non c'è" nessun pezzo sul quadrato, rispettivamente. Ho aggiunto anche dei LED (purtroppo non dello stesso colore, non ne avevo), in modo che quando sollevi il pezzo, tutte le posizioni dei quadrati, dove potrebbe essere posizionato un pezzo sollevato, si accendono. Consideralo come una pratica educativa per gli studenti di scacchi:)
Infine, vorrei sottolineare che nonostante abbia utilizzato diverse tecniche, il progetto rimane semplice e comprensibile, non elaborato a fondo o eccessivamente complicato. Non ho avuto abbastanza tempo per procedere con la scacchiera 8x8 (anche perché 64 sensori ad effetto hall sono costosi in Turchia, ho coperto tutte le spese relative al progetto), ecco perché ho fatto la versione demo 4x4 con solo due pezzi testati: Pawn e Regina. Invece di usare un motore di scacchi, ho scritto un codice sorgente per Arduino, che genera tutto ciò che vedrai nel video qui sotto.
Passaggio 2: come funzionano le cose
Prima di passare alla spiegazione passo passo di come è stato realizzato il progetto, penso che sarebbe meglio guardare un video illustrativo e farsi un'idea intuitiva di cosa sto parlando.
Nota 1: uno dei LED rossi (il primo della fila/da sinistra a destra) si è bruciato, non importa.
Nota #2: sebbene ampiamente utilizzata, dalla mia esperienza posso dire che la tecnologia RFID non è l'idea migliore da utilizzare nelle applicazioni fai-da-te (ovviamente se si hanno alternative). Prima che tutto funzionasse, ho fatto molte prove posizionando i pezzi degli scacchi vicino al lettore e aspettando che leggesse correttamente l'ID. La porta seriale dovrebbe essere configurata per questo perché il modo in cui il lettore RFID legge l'ID è solo un mal di testa. Uno dovrebbe provare da solo per capire il problema. Se hai bisogno di ulteriore assistenza, per favore mandami una mail ([email protected]) o aggiungi su skype (tahir.miriyev9r1), in modo che possiamo programmare una conversazione e discutere le cose nei dettagli, spiegherò tutto accuratamente.
Passaggio 3: strumenti e componenti
Ecco l'elenco di tutti gli strumenti che ho utilizzato per il progetto:Componenti elettronici:
- Tagliere (x1)
- Omnidirezionale A1126LUA-T (IC-1126 SW OMNI 3-SIP ALLEGRO) Sensori ad effetto Hall (x16)
- LED di base da 5 mm (x16)
- Ponticelli
- Lettore RFID 125 kHz e antenna (x1)
- Arduino Mega (x1)
- Tag RFID 3M (x2)
Altri materiali:
- plexiglas
- Carta lucida
- Tavole corte (di legno)
- Vernice acrilica (verde scuro e crema) x2
- Cartone sottile
- Magneti rotondi da 10 mm (x2)
- Pedine e pezzi di regina
- Saldatore e materiali di saldatura
Fase 4: Schemi (Fritzing)
Gli schemi sono un po' complicati, lo so, ma l'idea dovrebbe essere chiara. Era la prima volta che usavo Fritzing (altamente raccomandato tra l'altro), probabilmente le connessioni potrebbero essere tracciate in modo più accurato. Comunque, ho annotato tutto all'interno degli schemi. Nota: non sono riuscito a trovare il modello esatto di RDIF Reader tra i componenti nel database di Fritzing. Il modello che ho utilizzato è il modulo RFID 125Khz - UART. Puoi trovare tutorial su Youtube su come impostare questo modulo con Arduino.
Passaggio 5: processo
È ora di spiegare come sono state fatte le cose. Si prega di seguire la descrizione passo passo:
1. Prendi un cartone di 21x21 cm e del cartone in più per tagliare e incollare le pareti della parte superiore del tabellone, in modo da formare 16 quadrati con A B C D 1 2 3 4 enumerati. Poiché il cartone è sottile, puoi inserire 16 sensori ad effetto hall in ogni quadrato, con 3 piedini ciascuno e 16 LED con 2 piedini ciascuno.
2. Dopo aver impostato i componenti, sarà necessario eseguire alcune operazioni di saldatura, per saldare i piedini dei sensori ad effetto Hall ei LED ai cavi dei ponticelli. A questo punto, consiglierei di selezionare i fili colorati in modo intelligente, in modo da non confondersi con le gambe + e - dei LED, anche le gambe VCC, GND e PIN dei sensori ad effetto Hall. Certo, si potrebbe stampare un PCB con sensori e persino LED di tipo WS2812 già saldati, ma ho deciso di mantenere il progetto semplice e fare un po' più di "lavoro manuale". A questo punto non resta che preparare cavi e sensori, in fasi successive seguendo lo schema di Fritzing si potrà vedere dove si dovrà collegare l'estremità di ciascun filo. A breve, alcuni andranno direttamente ai PIN dell'Arduino Mega (ce ne sono abbastanza sull'Arduino), altri alla breadboard e tutti i GND possono essere saldati a un unico pezzo di cavo (facendo massa comune) che in seguito dovrebbe essere collegato a GND sulla scheda Arduino. Una nota importante qui: i sensori ad effetto Hall sono OMNIDIREZIONALI, il che significa che non importa quale polo di un magnete verrà tenuto vicino al sensore, invierà 0 dati mentre c'è un campo magnetico nelle vicinanze e 1 quando non c'è, vale a dire, il magnete è lontano (oltre diciamo 5 sm) dal sensore.
3. Preparare un cartone simile 21x21 cm e fissarci sopra l'Arduino Mega e una breadboard lunga. Puoi anche tagliare di nuovo 4 pareti di qualsiasi altezza desiderata dal cartone e incollarle verticalmente con quei due strati di tavole quadrate 21x21 cm. Quindi segui Fritzing Schematics per impostare le cose. Puoi anche impostare il lettore RFID dopo aver finito con i LED e i sensori ad effetto Hall.
4. Verificare se tutti i LED e i sensori funzionano, inviando segnali utilizzando codici di base. Non evitare questo passaggio in quanto ti consentirà di testare se tutto funziona correttamente e passare a un'ulteriore costruzione della scheda.
5. Preparare il pedone e la regina, con due magneti di un raggio di 10 cm fissati sotto, oltre a tag RFID rotondi. In seguito, dovrai leggere gli ID di quei tag da Serial Screen su Arduino IDE.
6. Se tutto funziona alla grande, puoi avviare il codice principale e provare le cose!
7 (facoltativo). Potresti fare un lavoro artistico con il legno che darà alla tua demo una visione più naturale. Dipende dalla tua volontà e immaginazione.
Passaggio 6: alcune foto e video da fasi diverse
Passaggio 7: codice sorgente
Ora, quando abbiamo finito con un prototipo, siamo pronti per dargli vita con il codice Arduino qui sotto. Ho cercato di lasciare più commenti possibili, in modo da rendere comprensibile il processo di analisi del codice. Ad essere onesti, la logica potrebbe sembrare un po' complessa a prima vista, ma se si approfondisce la logica del codice, sembrerà più completa.
Nota: in modo simile alla scacchiera reale, ho numerato astrattamente i quadrati come A1, A2, A3, A4, B1, …, C1, …, D1,.., D4. Tuttavia, nel codice, non è pratico utilizzare questa notazione. Pertanto ho usato gli array e rappresentato i quadrati rispettivamente come 00, 01, 02, 03, 10, 11, 12, 13, …, 32, 33.
Grazie per l'attenzione! Prova tutto e sii libero di scrivere nei commenti qualsiasi tipo di errore che ho perso, miglioramenti, suggerimenti ecc. In attesa di sentire alcune opinioni sul progetto. Se hai bisogno di qualsiasi tipo di assistenza con il progetto, scrivimi ([email protected]) o aggiungi Skype (tahir.miriyev9r1), in modo da poter programmare una conversazione e discutere le cose nei dettagli. Buona fortuna!