Sommario:

CheminElectrique (gioco di abilità) - SRO2002: 9 passaggi
CheminElectrique (gioco di abilità) - SRO2002: 9 passaggi

Video: CheminElectrique (gioco di abilità) - SRO2002: 9 passaggi

Video: CheminElectrique (gioco di abilità) - SRO2002: 9 passaggi
Video: BENEDETTA FULL TUTORIAL GUIDE TO DEAL HIGH DAMAGE AND DOMINATE THE GAME | TUTORIAL BY TOP GLOBAL 2024, Luglio
Anonim
CheminElectrique (gioco di abilità) - SRO2002
CheminElectrique (gioco di abilità) - SRO2002
CheminElectrique (gioco di abilità) - SRO2002
CheminElectrique (gioco di abilità) - SRO2002
CheminElectrique (gioco di abilità) - SRO2002
CheminElectrique (gioco di abilità) - SRO2002

Oggi vi presento la realizzazione di un gioco che ho realizzato per la festa di fine anno scolastico di mio figlio. In Francia chiamiamo questi festival "kermesses", non so se esistono in altri paesi e come si chiamano…

In queste feste ci sono spesso gli stessi giochi, che definirei giochi classici, e quest'anno ho deciso di fare una versione più moderna di uno di questi giochi classici: il "Chemin electrique" o "Main chaude".

Lo scopo del gioco è molto semplice, c'è un filo dove passa una corrente elettrica, poi si ha un "joystick" composto da un cerchio metallico alla sua estremità che passa attorno al filo elettrico e lo scopo del gioco è attraversare il filo da un capo all'altro senza toccarlo altrimenti si spegne una spia e/o un suono e hai perso.

Tradizionalmente non c'è davvero alcuna elettronica per creare questo gioco, una semplice batteria da 12V con una lampadina e un filo elettrico è sufficiente, ma ho avuto alcune idee interessanti per rendere il gioco più moderno.

Quindi vediamo cosa ho aggiunto come funzionalità!

Passaggio 1: caratteristiche

Come ho appena detto questo gioco semplicemente accende una luce quando il giocatore tocca inavvertitamente il filo con il "joystick", capita anche abbastanza spesso che il gioco produca un suono durante il contatto. Nella mia versione del gioco ci saranno un totale di 6 blocchi di 4 LED (verde-giallo-giallo-rosso) che si accenderanno contemporaneamente, un buzzer che emetterà un suono e anche un vibratore integrato nel controller che si attiverà quando c'è contatto tra il filo elettrico e il "joystick".

I LED si accenderanno gradualmente da verde a rosso a seconda della durata del contatto tra il filo e il controller.

Ho anche aggiunto una selezione del livello di difficoltà (facile-normale-difficile) e la possibilità di abilitare/disabilitare il vibratore e il suono. Anche il volume del suono sarà regolabile con un potenziometro.

La scelta della difficoltà infatti è semplicemente un ritardo più o meno lungo tra il momento in cui c'è un contatto tra il filo e il joystick e il momento in cui il gioco inizia ad accendersi/suonare/vibrare. Imposto tempi predefiniti tramite programmazione, ad esempio in modalità facile il gioco attende 1 secondo prima di attivare gli avvisi, mentre in modalità difficile gli avvisi verranno attivati immediatamente.

Ho progettato il gioco in modo che sia facile da smontare, affidabile e soprattutto che non presenti alcun pericolo per i bambini che lo utilizzeranno. Infatti poiché il filo elettrico è attraversato da una corrente e che è spelato ho dovuto fare in modo che non presentasse alcun pericolo per gli utenti del gioco.

Passaggio 2: Dichiarazione di non responsabilità e ulteriori informazioni

Esclusione di responsabilità e ulteriori informazioni
Esclusione di responsabilità e ulteriori informazioni

Disclaimer:

Il gioco sarà alimentato da 4 batterie da 1,5V, una tensione totale di 6V, inoltre limiterò la corrente che attraversa il filo a pochi microampere. Siamo quindi nel campo della bassissima tensione di sicurezza (SELV) con un valore di corrente estremamente basso accessibile all'utente.

Ma attenzione specifico bene che nessun valore di corrente elettrica è innocuo, una corrente debole può in certi casi essere pericolosa per la persona che viene elettrizzata. Ho fatto molte ricerche su questo durante la creazione di questo progetto, e anche se non c'è consenso scientifico sul valore limite oltre il quale la corrente non ha impatto sul corpo umano la corrente di qualche microampere che attraversa il cavo elettrico ha pochissima possibilità di ferire una persona.

Ma attenzione non potrò essere ritenuto responsabile in caso di incidente! Prestare sempre attenzione quando si maneggiano conduttori elettrici in tensione, anche a valori di corrente molto bassi. Vi consiglio caldamente di informarvi il più possibile sui rischi dell'elettricità e sulle buone precauzioni da prendere

Ulteriori informazioni:

Questo progetto funziona molto bene e ha tutte le caratteristiche che volevo ma ha alcuni difetti. Quando creo un progetto elettronico cerco che tutto sia il più ottimizzato possibile in termini di costo, numero di componenti, spazio, e soprattutto che il funzionamento dell'insieme sia il più "logico" possibile.

Mentre stavo realizzando questo progetto e dopo averlo terminato penso che ci siano alcune scelte che ho fatto che non sono delle migliori ma sono stato pressato dal tempo, ho avuto solo 2 settimane per fare tutto da zero (progettazione, programmazione, ordinazione dei componenti, creazione del struttura, e soprattutto assemblando tutti gli elementi).

Indicherò durante le fasi di produzione cosa penso che potrebbe essere ottimizzato se dovessi creare di nuovo questo gioco. Ma ripeto il progetto è abbastanza funzionale così, ma io sono perfezionista…

Rimpiango anche di non aver scattato più foto delle diverse fasi del progetto, ma ho preferito dedicarmi il più possibile al progetto per poterlo finire in tempo.

Sono contento di questo progetto perché è stato un grande successo alla festa della scuola di mio figlio, quindi vediamo cosa c'è nella pancia della bestia;)

Fase 3: Obblighi

- Deve essere alimentato a batteria (per sicurezza e mobilità)- Il gioco deve essere sicuro (verrà utilizzato da bambini dai 2 ai 10 anni)

- Le impostazioni devono essere disponibili (scelta dell'attivazione del suono/vibratore e scelta della difficoltà)

- Le impostazioni devono essere semplici da capire e facilmente accessibili (si deve presumere che la persona che si occuperà del gioco durante la festa non sappia nulla di elettronica/tecnica)

- Il suono deve essere abbastanza forte (il gioco verrà utilizzato all'esterno in un ambiente piuttosto rumoroso).

- Il sistema deve essere al massimo removibile per lo stoccaggio e parti fisiche facilmente sostituibili (joystick, cavo elettrico…)

- Deve essere attraente per i bambini (questo è l'obiettivo principale per cui giocano…:))

Passaggio 4: componenti (BOM)

Per il caso:- tavola di legno

- la pittura

- alcuni attrezzi per forare e tagliare….

Per il "joystick":- 1 vibratore

- cavo jack 3.5 (stereo)

- connettore jack 3.5 (stereo)

- cavo elettrico 2.5mm²

- un tubicino in PVC

Componenti elettronici:

- 16F628A

- 12F675

-ULN2003A

- 2x2N2222A

- Diodo Zener 2.7V

- 12 LED blu

- 6 LED verdi

- 6 LED rossi

- 12 LED gialli

- 5 resistori 10K

- 2 resistori 4.7K

- 1 resistenza da 470 ohm

- 6 resistori 2.2K

- 6 resistori 510 ohm

- 18 resistori 180 ohm

- 1 potenziometro 1K

- 1 interruttore ON-OFF

- 2 interruttori ON-OFF-ON

- 1 cicalino

- 1 convertitore boost DC

- cavo elettrico 2.5mm²

- 2 connettori a banana maschio

- 2 connettori banana femmina

- connettore jack 3.5 (stereo)

- supporto per 4 batterie LR6

- alcune schede di prototipazione PCB

Strumenti elettronici: - Un programmatore per iniettare il codice in un Microchip 16F628A e 12F675 (es. PICkit 2) -

Ti consiglio di usare Microchip MPLAB IDE (freeware) se vuoi modificare il codice ma ti servirà anche il compilatore CCS (shareware). Puoi anche usare un altro compilatore ma avrai bisogno di molte modifiche nel programma.

Ma ti fornirò. File HEX in modo da poterli iniettare direttamente nei microcontrollori.

Passaggio 5: analisi funzionale

Analisi delle funzioni
Analisi delle funzioni
Analisi delle funzioni
Analisi delle funzioni

Microcontrollore 16F628A (Func1): È il "cervello" di tutto il sistema, è questo componente che rileva la posizione degli interruttori di regolazione, che rileva se c'è contatto tra il "joystick" e il filo elettrico, e che fa scattare il avvisi (luce, suono e vibratore). Ho scelto questo componente perché ho uno stock abbastanza ampio e perché sono abituato a programmare con esso, e visto che non avevo molto tempo per fare questo progetto ho preferito prendere del materiale che conosco bene.

Interfaccia di alimentazione ULN2003A (Func2): questo componente funge da interfaccia di alimentazione tra il 16F628A ei circuiti che consumano più energia di quella che il microcontrollore può fornire (LED, cicalino, vibratore).

Controllo del cicalino (Func3):

Il PIC 16F628A non può fornire abbastanza corrente per alimentare il cicalino, soprattutto perché il cicalino deve essere alimentato tramite un convertitore boost per aumentare la sua potenza sonora.

Infatti siccome l'assieme viene alimentato a 6V e che il buzzer necessita di 12V per funzionare al massimo uso un convertitore per ottenere la buona tensione. Quindi uso un transistor come interruttore (modalità di commutazione) per controllare l'alimentazione del cicalino. Il componente che ho scelto è un classico 2N2222A che è molto adatto a questo utilizzo.

Ecco le caratteristiche del buzzer: 12V 25mA, ciò significa che necessita di una potenza teorica di P=UI=12 x 25mA=0.3W

Quindi c'è un fabbisogno di potenza di 0,3 W dal convertitore boost CC, il modulo boost CC ha un'efficienza del 95%, quindi c'è una perdita di circa il 5%. Pertanto, all'ingresso del convertitore è richiesta una potenza minima di 0,3W + 5% = 0,315W.

Possiamo ora dedurre la corrente Ic che attraverserà il transistor Q1:

P = U * Ic

Ic = P / U

Ic = P / Vcc-Vcesat

Ic = 0, 315 / 6-0, 3

Ic = 52 mA

Calcoliamo ora il resistore di base che consente al transistor di essere ben saturato:

Ibsatmin = Ic / Betamin

Ibsatmin = 52mA / 100

Ibsatmin = 0,5 mA

Ibsat = K x Ibsatmin (scelgo un coefficiente di sur-saturazione K=2)

Ibsat = 2 x Ibsatmin

Ibsat = 1mA

R12 = Ur12 / Ibsat

R12 = Vcc - Vbe

R12 = (6 - 0,6) / 1 mA

R12 = 5,4 K

Valore normalizzato (E12) per R12=4.7K

Controllo vibratore (Func4):

Per quanto riguarda il buzzer, il 16F628A non può fornire sufficiente corrente al vibratore che richiede una corrente di 70mA, inoltre deve essere alimentato al massimo con una tensione di 3V. Quindi ho scelto di utilizzare un diodo zener accoppiato a un transistor per realizzare un regolatore di tensione da 2,7 V per il vibratore. Il funzionamento dell'associazione zener-transistor è semplice, lo zener fissa la tensione di 2,7V sulla base del transistor e il transistor "copia" questa tensione e fornisce l'alimentazione.

La corrente che attraverserà il transistor Q2 è quindi pari a Ic = 70mA

Calcoliamo ora la resistenza di base permettendo al transistor di essere ben saturato:

Ibsatmin = Ic/Betamina

Ibsatmin = 70mA / 100

Ibsatmin = 0, 7mA

Ibsat = K x Ibsatmin (scelgo un coefficiente di sur-saturazione K=2)Ibsat = 2 x Ibsatmin

Ibsat = 1, 4mA

La corrente minima nel diodo zener deve essere almeno Iz = 1mA per il suo funzionamento, quindi possiamo dedurre la corrente che passa attraverso il resistore R13:

Ir13 = Ibsat + Iz

Ir13 = 1, 4mA + 1mA

Ir13 = 2, 4mA

Per garantire che la corrente del diodo zener Iz sia sempre nel corretto range di funzionamento, viene preso un margine di sicurezza con un: Ir13_fixed = 5mA (scelta del valore completamente arbitraria)

Calcoliamo ora il valore di R13:

R13 = U13 / Ir13_fisso

R13 = VCC-Vz / Ir13_fisso

R13 = 6-2, 7 / 5mA

R13 = 660 ohm

Valore normalizzato (E12) per R13=470 ohm

Avrei potuto scegliere 560 ohm nella serie E12 ma non avevo questo valore quindi ho preso il valore precedente…

Può essere ottimizzato

Quando ho fatto il disegno del progetto non ho pensato al Vbe del transistor quindi invece di avere 2.7V per alimentare il vibratore ho solo 2.7V-0.6V= 2.1V. Avrei dovuto prendere uno zener da 3,3V ad esempio, il vibratore sarebbe stato un po' più potente anche se il risultato è abbastanza soddisfacente, non sfrutto tutta la potenza del vibratore…

LED di avviso (Func5):

I LED sono posizionati verticalmente come se formassero un indicatore:Rosso

Giallo2

Giallo1

Verde

Quando viene rilevato un contatto tra il "joystick" e il filo elettrico, si illuminano gradualmente dal verde al rosso.

I LED sono collegati al VCC in gruppi in base al loro colore:

- Tutti gli anodi dei LED verdi sono collegati insieme

- Tutti gli anodi dei LED giallo1 sono collegati insieme

- Tutti gli anodi dei LED giallo2 sono collegati insieme

- Tutti gli anodi dei LED rossi sono collegati insieme

Il microcontrollore quindi li attiva mettendo a terra il loro catodo tramite l'ULN2003A.

Nota:

Sullo schema c'è un solo LED di ogni colore con accanto un simbolo "X6" perché uso una versione gratuita di Cadence Capture e sono limitato da un numero massimo di componenti per diagramma quindi non ho potuto far apparire tutti i LED …

Gestione del livello sonoro del buzzer (Func6):

Si tratta semplicemente di un potenziometro in serie al buzzer che permette di regolare il volume del suono.

LED "Decorazione" (Func7 - Schema/Pagina 2):

Lo scopo di questi LED è creare un inseguimento per la decorazione del gioco. Si illuminano da sinistra a destra. Ci sono un totale di 12 LED blu: 6 all'inizio del percorso che rappresentano la linea di partenza e 6 alla fine del percorso che rappresentano la linea di arrivo

Ho scelto di eseguire un multiplexing del display per questi LED perché sarebbero stati necessari molti più pin per ordinarli (6 pin con multiplexing, 12 pin senza multiplexing).

Inoltre è indicato nel loro datasheet che la Vf è 4V quindi non ho potuto mettere 2 led in serie (VCC è 6V), e non ho potuto neanche mettere in parallelo perchè hanno TEORIQUEMENTE bisogno di 20 mA e che il microcontrollore può fornire solo 25 mA max per pin, quindi 40mA sarebbe stato impossibile.

Riassumendo non potevo fare un'associazione di LED (messi in serie o in parallelo) e non avevo abbastanza pin sul microcontrollore per pilotarli comunque… Quindi ho scelto di utilizzare un altro microcontrollore (12F675) di 8 pin per poterlo per pilotarli. Grazie a questo microcontrollore controllo l'attivazione dei LED impostando un livello logico alto (VCC) sui loro anodi e utilizzo il PIC 16F628A e ULN2003A per eseguire il multiplexing.

Può essere ottimizzato:

Mi sono accorto durante l'esecuzione dei test su breadboard che a parità di corrente I=20mA i led avevano una grande differenza di luminosità in base ai loro colori. Ad esempio con 20mA i led blu erano molto più luminosi di quelli verdi. Non ho trovato estetico che alcuni led fossero molto più luminosi di altri, quindi ho variato la resistenza in serie con i led blu fino ad ottenere la stessa potenza luminosa dei led verdi alimentati con una corrente di 20mA.

E mi sono accorto che i led blu avevano la stessa luminosità dei led verdi con una corrente di solo 1mA! Il che significa che se lo avessi saputo prima avrei potuto scegliere di mettere i led blu in serie (a gruppi di 2). E avevo solo bisogno di altri 3 pin sul 16F675A (che sono disponibili), quindi non ho avuto bisogno di aggiungere un altro microcontrollore dedicato alla gestione di questi LED.

Ma in questo momento della progettazione non lo sapevo, a volte c'è una differenza non trascurabile tra le caratteristiche delle documentazioni tecniche e le reali caratteristiche dei componenti…

Limitazione della corrente (Func0):

Questa parte non l'avevo assolutamente pianificata al momento del design, l'ho aggiunta solo alla fine del progetto, quando tutto era già finito. All'inizio avevo semplicemente collegato il VCC direttamente al filo elettrico con semplicemente una resistenza di pull-down in modo da mettere a terra l'ingresso del microcontrollore che rileva il contatto.

Ma come ho detto prima ho fatto molte ricerche per scoprire se la corrente che scorre attraverso il filo elettrico potrebbe essere pericolosa se si trattasse di avere un contatto tra il filo e un corpo umano.

Non ho trovato una risposta precisa su questo argomento quindi ho preferito aggiungere una resistenza tra il VCC e il filo elettrico in modo da ridurre il più possibile la corrente che attraversa il filo.

Volevo quindi mettere una resistenza di alto valore in modo da ridurre la corrente al valore più basso possibile ma siccome avevo già terminato il progetto e quindi tutte saldate e cablate le diverse schede non potevo più rimuovere la resistenza di pulldown da 10Kohm. Ho dovuto quindi scegliere un valore di resistenza in modo da ottenere 2/3 di VCC sul pin BR0 (pin 6 di 16F628A) in modo che il microcontrollore rilevi nonostante sia un livello logico alto quando c'è contatto tra il joystick e il filo elettrico. Se avessi aggiunto troppa resistenza avrei avuto il rischio che il microcontrollore non avrebbe rilevato il cambiamento tra lo stato logico basso e lo stato logico alto.

Quindi ho scelto di aggiungere una resistenza di 4.7K in modo da ottenere una tensione di circa 4V sul pin quando c'è contatto tra il joystick e il filo elettrico. Se a questo si aggiunge la resistenza della pelle umana in caso di contatto del filo elettrico con la mano ad esempio la corrente che scorre nel corpo sarebbe inferiore a 1mA.

E anche se una persona tocca il filo andrà a contatto solo con il polo positivo delle batterie e non tra polo positivo e polo negativo ma come ho detto nel disclaimer presta SEMPRE attenzione a cosa fai con la corrente elettrica.

Nota: ho esitato a lungo ad aggiungere questa resistenza in quanto la corrente elettrica eventualmente accessibile all'utente (tramite il cavo elettrico) è debole e che l'insieme è alimentato a batteria con soli 6V di tensione e che forse non è strettamente necessario limitare la corrente dalle batterie ma essendo per bambini ho preferito prendere più precauzioni possibili.

Passaggio 6: Programmazione

Programmazione
Programmazione

I programmi sono scritti in linguaggio C con MPLAB IDE e il codice è compilato con il compilatore CCS C.

Il codice è completamente commentato e abbastanza semplice da capire, ma spiegherò velocemente le funzioni principali dei 2 codici (per 16F628A e 12F675).

Il primo programma -CheminElectrique.c- (16F628A):

Gestione multiplexing LED:Funzione: RTCC_isr()

Utilizzo il timer0 del microcontrollore per provocare un overflow ogni 2ms che permette di gestire il multiplexing dei led.

Gestione del rilevamento dei contatti:

Funzione: void main()

Questo è il loop principale, il programma rileva se c'è un contatto tra il joystick e il filo elettrico e attiva i led/buzzer/vibratore in base al tempo di contatto.

Gestione delle impostazioni delle difficoltà:

Funzione: lungo GetSensitivityValue()

Questa funzione serve per verificare la posizione dell'interruttore che permette di selezionare la difficoltà e restituisce una variabile che rappresenta il tempo di attesa prima di attivare gli allarmi.

Gestione impostazione allarmi:

Funzione: int GetDeviceConfiguration()

Questa funzione permette di verificare la posizione dell'interruttore che seleziona l'attivazione del buzzer e del vibratore e restituisce una variabile che rappresenta gli allarmi che devono essere attivi.

Il secondo programma -LedStartFinishCard.c- (12F675):

Gestione attivazione LED blu:Funzione: void main()

Questo è il loop principale del programma, attiva i led uno dopo l'altro da sinistra a destra (per creare un chase)

Vedi sotto un file zip del progetto MPLAB:

Passaggio 7: saldatura e assemblaggio

Saldatura e assemblaggio
Saldatura e assemblaggio
Saldatura e assemblaggio
Saldatura e assemblaggio
Saldatura e assemblaggio
Saldatura e assemblaggio
Saldatura e assemblaggio
Saldatura e assemblaggio

Parte "fisica": ho iniziato creando la scatola, quindi ho tagliato delle tavole di legno di circa 5 mm di spessore per la parte superiore e i lati e ho scelto una tavola di 2 cm di spessore per far sì che il fondo abbia più peso e che il gioco non si muova.

Ho assemblato le tavole tra l'altro con la colla per legno, non ho messo viti o chiodi ed è davvero solido!

Per rendere il gioco più attraente di una semplice scatola dipinta ho chiesto a mia moglie di creare un decoro per la parte superiore della scatola (perché faccio davvero schifo in grafica…). Gli ho chiesto di fare una strada tortuosa (per avere un rapporto con il filo…) con lattine/pannelli ai bordi delle curve in modo da poter incorporare i miei led di segnalazione. I led blu delle decorazioni saranno come le linee di partenza e di arrivo. Ha creato uno scenario in stile "Route 66", con una strada che attraversa una specie di deserto, e dopo diverse impressioni per trovare la buona posizione dei LED siamo rimasti piuttosto soddisfatti del risultato!

Poi ho praticato i fori per tutti i connettori, gli interruttori e ovviamente i LED.

Il filo elettrico è attorcigliato per creare zig-zag per aumentare la difficoltà del gioco e ciascuna estremità è avvitata in un connettore a banana maschio. I connettori verranno quindi collegati ai connettori a banana femmina fissati al coperchio dell'alloggiamento.

Parte elettronica:

Ho suddiviso la parte elettronica in diverse piccole schede prototipo.

Ci sono:

- una scheda per 16F628A

- una carta per 12F675

- 6 schede LED di avviso

- 4 carte per LED decorativi (linea di partenza e linea di arrivo)

Ho fissato tutte queste schede sotto il coperchio della scatola e ho inserito il portabatterie nella parte inferiore della scatola con il cicalino e il modulo boost DC.

Tutti gli elementi elettronici sono collegati avvolgendo dei fili, li ho raggruppati il più possibile secondo il loro verso e li ho attorcigliati e fissati con la colla a caldo in modo che siano il più "puliti" possibile e soprattutto che ci siano nessun falso contatto o filo che si disconnette. Mi ci è voluto davvero molto tempo per tagliare/spelare/saldare/posizionare correttamente i fili!

Parte "joystick":

Per il joystick ho preso un piccolo pezzo di tubo in PVC (diametro 1,5 cm e lunghezza 25 cm). E poi ho saldato il connettore jack femmina in questo modo:

- un terminale collegato al filo all'estremità del joystick (ContactWire sullo schema)

- un terminale collegato al terminale positivo del vibratore (2A su connettore J1A nello schema)

- un terminale collegato al terminale negativo del vibratore (1A su connettore J1A nello schema)

Ho quindi integrato il cavo, il vibratore e il connettore jack all'interno del tubo e ho fissato il jack con la colla a caldo per assicurarmi che nulla si muovesse durante il collegamento del cavo jack tra il joystick e l'altra parte del sistema.

Passaggio 8: video

Passaggio 9: conclusione

Ora che il progetto è finito, è stato davvero bello realizzare questo progetto anche se mi pento di aver avuto poco tempo per farlo. Mi ha permesso di raccogliere una nuova sfida;) Spero che questo gioco funzioni per molti anni e che farà divertire tanti bambini che festeggeranno la fine del loro anno scolastico!

Fornisco un file di archivio che contiene tutti i documenti che ho utilizzato/creato per il progetto.

Non so se il mio stile di scrittura sarà corretto perché sto usando in parte un traduttore automatico per andare più veloce e poiché non parlo inglese in modo nativo penso che alcune frasi saranno probabilmente strane per le persone che scrivono perfettamente l'inglese.

Se avete domande o commenti su questo progetto, fatemelo sapere!

Consigliato: