Chi guida stasera? The alcool game project

Il problema dell’abuso di alcol tra i nostri giovani è purtroppo sempre di attualità, specialmente quando si sente parlare degli incidenti del sabato notte dopo ore e ore  passate nella confusione delle discoteche della nostra Italia.
L’idea di un semplice gioco del “Chi Guida Stasera?” vuole dare un piccolo contributo per sensibilizzare “il popolo della notte”, evitando, nel limite del possibile, che ragazzi completamente stravolti dall’abuso di sostanze alcoliche (sperando si limitino solo all’alcol)  possano mettersi alla guida di automobili, scatenando purtroppo a volte danni a loro stessi e ad altri incolpevoli che incontrano sulla loro strada.

L'idea

Il gioco realizzato con un sensore a semiconduttore di alcool MQ-3, della HANWEI ELECTRONICS, la nostra scheda Pic-AP-Board già utilizzata per il progetto RemShoot 1.0 (per il quale proveremo a partecipare a Make4Cash con una nuova versione) ed un display grafico Nokia 5110  è molto semplice, consiste nel comparare di volta in volta il “grado alcolico” tra 3 partecipanti, così da poter aiutare a decidere chi è meno sbronzo e quindi chi sarà il potenziale autista in grado di riportare a casa gli amici.
Il progetto non è, e non vuole essere un etilometro certificato, ma è pensato per essere un simpatico gadget da portare con se alle feste tra amici o disponibile in bar, pub, discoteche o autogrill, da tenere a disposizione dei propri clienti.

Come concept, In questa prima versione si fa uso di un display di soli 48x84 pixel, ma  con qualche accorgimento potrebbero essere utilizzati display molto più grandi e perché no, dotati di touch screen ed effetti sonori, realizzando così un piccolo chiosco interattivo.  
Se volete è una sorta di riedizione della prova di forza che si trovava nei luna park di un tempo, dove il giocatore colpiva a turno la piastra con una mazza per vedere il miglior punteggio ottenuto.

  Nel nostro caso la prova di forza è al contrario, vince la sfida chi avrà bevuto meno, quindi chi riempie meno la propria bottiglia virtuale (se poi la bottiglia del vincitore rimanesse vuota sarebbe ancora meglio!).


Tra le altre possibili funzioni da integrare alla misurazione (non ancora implementate) abbiamo pensato ad un semplice test visivo e acustico in grado di misurare i riflessi dei partecipanti.
Essendo noto che uno degli effetti dell’alcool sul sistema nervoso di un individuo è proprio quello di un progressivo rallentamento delle reazioni di fronte a stimoli esterni, può essere un altro modo non traumatico per far comprendere a chi si sottopone al test se sia o meno in grado di guidare in tutta sicurezza una automobile.

 

 

Il gioco "Chi Guida Stasera?"

Il flusso del gioco è molto semplice, dopo una prima schermata di presentazione con alcune istruzioni per l'uso, si passa alla calibrazione del sensore, per la natura dello stesso, di norma all’accensione del sistema è necessario attendere circa un paio di minuti che il riscaldatore presente nel sensore stabilizzi il valore misurato al livello minimo (intorno ai 0,4 Volt), in assenza cioè di qualunque pur minima quantità  di vapori di alcol etilico nelle sue immediate vicinanze.
A questo punto un messaggio sul display indica che la sfida può iniziare, a turno il concorrente soffia sul sensore e preme il tasto a lui assegnato, è bene attendere sempre qualche decina di secondi tra un test e l’altro per liberare il sensore dai vapori di alcol del test precedente. In ogni caso non è possibile effettuare un test fino a che il sensore non torna al valore di riferimento memorizzato in una variabile durante la fase di calibrazione.

Al termine dei tre test viene visualizzato il vincitore, o meglio il candidato alla guida.

 

Il Software

Il codice in C per MPLAB è impostato come una macchina a stati.

C'è un ciclo infinito nel main che chiama continuamente la routine Steps,
Steps ha una select case su una variabile Step che viene aggiornata tramite la variabile ToAdd sia dai pulsanti che dagli step stessi.

All'accensione si parte con lo step1 e cosi via fino allo step6 .

Lo step6 indica lo stato di idle (Attesa inizio gioco dei giocatori)

A questo punto al premere di uno dei tre pulsanti partirà la misurazione, preso il campionamento, verrà visualizzata sul display la relativa misurazione, dopo di che il sistema attende che il sensore ristabilisca i valori di base.

Raggiunto il valore di riferimento per  una nuova misurazione si tornerà sullo step6 di attesa per le prossime misurazioni dei restanti giocatori!

Terminate le tre misurazioni verrà visualizzato il vincitore e ristabilito il sensore, si ripartirà con una nuova partita.

La scelta del codice gestito a step ci permette maggiore flessibilità, introducendo o rimuovendo step senza stravolgere il codice.

Basta creare il proprio step personalizzando scritte od immagini ed inserirlo.

Attualmente questi sono gli steps:

Step1:
Viene alternata la bitmap monocromatica  (48x84) di Chi Guida con un messaggio che invita a premere uno dei tre pulsanti per iniziare.

Premendo uno dei tre pulsanti viene incrementato di uno il valore di Step tramite il valore della variabile ToAdd

vedi esempio codice più avanti,  switch (buttonPress)

Si passerà cosi a:

Step2:

Viene alternata l'immagine di inizo gioco con un messaggio che dice di attendere un paio di minuti per permettere al sensore di stabilizzarsi.

Premendo uno dei tre pulsanti si passa allo:

Step3:

Viene alternata un messaggio che informa che è iniziata la calibrazione con un messaggio che indica il  valore del sensore, quando il valore sarà stabile si potrà premere nuovamente il pulsante per terminare la calibrazione passando così allo:

Step4:

Siamo ormai quasi ad inizio gioco, viene alternato un messaggio che spiega le regole del gioco
con l'immagine del gioco stesso.

Premendo uno dei tre pulsanti si passa allo:

Step5:

Siamo pronti a giocare!
viene visualizzata la schermata inizio gioco e ci si posiziona sullo:

Step6 (idle)
in attesa che il primo giocatore soffi nel sensore e successivamente prema uno dei tre pulsanti associato alla sua bottiglia per misurare la quantità di alcool percepita.

Viene così visualizzata tramite il riempimento di una bottiglia e si passa allo:

Step7:

Viene visualizzato un messaggio che informa che prima di passare al prossimo giocatore il sensore deve ripristinare i suoi valori di base.

Ripristinati i valori viene reimpostato lo Step6 (idle) in attesa di un nuovo giocatore.

Prese le misurazioni di tutti e tre i giocatori, partirà il controllo di verifica Vincitore.

Verrà quindi visualizzato a schermo il vincitore per 30 secondi circa.

Si attenderà successivamente che il sensore abbia ripristinato il corretto valore di base tornando così allo:

step5:

Inizio Gioco!

 

Esempio di codice switch (buttonPress)

##############################

Parte della routine Steps

##############################
void Steps()
{
switch  (Step)
{
  case Step1:
   ToAdd = Step2;
   Step_1();
   break;

#################################

Parte della routine pulsante

#################################

switch (buttonPress)
{
  case 1: //Button Up
   Alterna=100000;
   if (ToAdd == Step6)
    Step = StepUp;
   else
    Step = ToAdd;
   
   break;

  
#######################################

Le chiamate per la gestione del display grafico più utilizzate in questo progetto sono :

void lcd_5110_img(char images[])

Visualizza un'immagine (bitmap monocromatica 48x84 bit) sul Display.

int GetPoint_img(char images[],short Row,short Col)

Verifica se il punto nella bitmap è 1 o 0, valori necessari che indicheranno se quando verrà inviata l'immagine
sullo schermo verrà acceso il punto o meno

void SetPoint_img(char images[],short Row,short Col)

Setta ad 1 un punto nell'immagine che verrà inviata sullo schermo.

 

L'Hardware

il progetto si basa essenzialmente su 3 componenti hw:

1) Sensore Alcohol Gas Sensor MQ-3 della Hanwei Electronics, rilevatore della concentrazione di alcool nell’aria espirata da una persona. Il sensore ha una alta sensibilità insieme ad un tempo di risposta sufficientemente rapido per test ciclici, necessita solo di una resistenza tra 10KOhm-200KOhm (io preferisco usare un trimmer da 200KOhm)

 

2) Modulo display grafico monocromatico 5110, facilmente reperibile in rete e su ebay

Specifiche tecniche e fonti sul modulo LCD Philips PCD8544

http://www.module.ro/nokia_3510.html

http://serdisplib.sourceforge.net/ser/pcd8544.html

http://www.sparkfun.com/products/10168

3) la versatile scheda USB PIC-AP-BOARD da noi realizzata per diversi progetti.

 

Per questo progetto abbiamo sfruttato la fila bassa della porta di espansione per collegare direttamente il display ed il sensore MQ-3

Per la nuova configurazione hardware sono state utilizzate  alcune delle funzionalità native del processore PIC24 di cui è dotata la scheda, in particolare la funzione PPS (Peripheral Pin Select vedi http://ww1.microchip.com/downloads/en/DeviceDoc/39711b.pdf) che consente di rimappare gran parte delle funzioni logiche rese disponibili dal micro sui pin fisici, ed in particolare il modulo SPI (Serial Peripheral Interface) necessario per la comunicazione seriale ad alta velocità con il display Nokia 5110 ed una porta ADC (RB0) collegata all'output del sensore.

 

Il progetto software del gioco "Chi Guida Stasera", basato sulla scheda PIC-AP-BOARD è stato realizzato da Telegiangi61 e Agosillo, e viene rilasciato in Open Source

Per successivi approfondimenti o evoluzioni http://glptech.blogspot.it/

Scarica subito una copia gratis
Tags:

2 Commenti

  1. Avatar photo Emanuele 30 Aprile 2012
  2. Avatar photo telegiangi61 2 Maggio 2012

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend