TelemetryX


Rispondi
    Rispondi citando

TelemetryX

Uriel_Science » Mer Set 08, 2010 1:41 pm

Salve a tutti ragazzi... Oggi ho iniziato a scrivere un piccolo software per il monitoraggio delle forze vettoriali che agiscono su di una moto...Ovviamente mentre viene utilizzata Cool

Il software che sto scrivendo Ŕ utilizzabile tramite console e richiede l'utilizzo di un wiimote e di un dongle bluetooth.

Il principio di funzionamento Ŕ molto semplice.... Basta collegare il wiimote sul proprio motore(ovviamente in modo da tenerlo parallelo all'asfalto) e il mio software mostrerÓ la forza vettoriale che viene esercitata sugli assi X e Y(implementer˛ tra qualche giorno anche quello sull'asse Z!!!!)...

Questo Ŕ il codice..... Ovviamente da come vedete dal nome TelemetryX funziona solo su sistemi POSIX....

main.c
Codice: < >
#include "telemeter.h"
#include "telemeter.c"
void main(){
   initVectorGraphic(steeringVector,tiltVector); //Inizializzo la grafica delle barre
   initWiimote(); //Inizializzo la connessione al Wiimote
   printf("%s%s%s\n",COL_RED,LOGO,COL_GRAY);   
   printf("%s%s%s",COL_RED,MOTO,COL_GRAY);
   while(1){
      printf("%sSteering:%s%s",COL_YELLOW,COL_GRAY,steeringVector);
      printf("\t%sTilt:%s%s\r",COL_YELLOW,COL_GRAY,tiltVector);
      usleep(1000);
   }
}

telemeter.h
Codice: < >
#include <cwiid.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/socket.h>
#include <bluetooth/bluetooth.h>
#include <bluetooth/hci.h>
#include <bluetooth/hci_lib.h>

#define SCALE 50 // Scala di rappresentazione dei dati

#define toggle_bit(bf,b)   \
   (bf) = ((bf) & b)      \
          ? ((bf) & ~(b))   \
          : ((bf) | (b))   \

/* Definizione Del Logo */
#define LOGO "\x20\x5f\x5f\x5f\x5f\x5f\x20\x20\x20\x20\x20\x20\x20\x5f\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x5f\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x5f\x20\x20\x20\x20\x5f\x20\xa\x28\x5f\x20\x20\x20\x5f\x29\x20\x20\x20\x20\x20\x28\x5f\x20\x29\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x28\x20\x29\x5f\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x28\x20\x29\x20\x20\x28\x20\x29\xa\x20\x20\x7c\x20\x7c\x20\x20\x20\x5f\x5f\x20\x20\x20\x7c\x20\x7c\x20\x20\x20\x20\x5f\x5f\x20\x20\x20\x20\x5f\x5f\x5f\x20\x5f\x5f\x5f\x20\x20\x20\x20\x20\x5f\x5f\x20\x20\x7c\x20\x2c\x5f\x29\x20\x5f\x20\x5f\x5f\x20\x20\x5f\x20\x20\x20\x5f\x20\x60\x5c\x60\x5c\x2f\x27\x2f\x27\xa\x20\x20\x7c\x20\x7c\x20\x2f\x27\x5f\x5f\x60\x5c\x20\x7c\x20\x7c\x20\x20\x2f\x27\x5f\x5f\x60\x5c\x2f\x27\x20\x5f\x20\x60\x20\x5f\x20\x60\x5c\x20\x2f\x27\x5f\x5f\x60\x5c\x7c\x20\x7c\x20\x20\x28\x20\x27\x5f\x5f\x29\x28\x20\x29\x20\x28\x20\x29\x20\x20\x3e\x20\x20\x3c\x20\x20\xa\x20\x20\x7c\x20\x7c\x28\x20\x20\x5f\x5f\x5f\x2f\x20\x7c\x20\x7c\x20\x28\x20\x20\x5f\x5f\x5f\x2f\x7c\x20\x28\x20\x29\x20\x28\x20\x29\x20\x7c\x28\x20\x20\x5f\x5f\x5f\x2f\x7c\x20\x7c\x5f\x20\x7c\x20\x7c\x20\x20\x20\x7c\x20\x28\x5f\x29\x20\x7c\x20\x2f\x27\x2f\x5c\x60\x5c\x20\xa\x20\x20\x28\x5f\x29\x60\x5c\x5f\x5f\x5f\x5f\x29\x28\x5f\x5f\x5f\x29\x60\x5c\x5f\x5f\x5f\x5f\x29\x28\x5f\x29\x20\x28\x5f\x29\x20\x28\x5f\x29\x60\x5c\x5f\x5f\x5f\x5f\x29\x60\x5c\x5f\x5f\x29\x28\x5f\x29\x20\x20\x20\x60\x5c\x5f\x5f\x2c\x20\x7c\x28\x5f\x29\x20\x20\x28\x5f\x29\xa\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x28\x20\x29\x5f\x7c\x20\x7c\x20\x20\x20\x20\x20\x20\x20\x20\xa\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x60\x5c\x5f\x5f\x5f\x2f\x27\x20\x20\x20\x20\x20\x20\x20\x20\xa"

/*Definizione Disegno Moto */
#define MOTO "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x7e\x20\x20\x20\x7e\x5c\xa\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7c\x5f\x20\x20\x20\x20\x20\x20\x7c\xa\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7c\x2f\x20\x20\x20\x20\x20\x5f\x5f\x2d\x5f\x5f\xa\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x5c\x20\x20\x20\x2f\x7e\x20\x20\x20\x20\x20\x7e\x7e\x2d\x5f\xa\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7e\x7e\x20\x2d\x7e\x7e\x5c\x20\x20\x20\x20\x20\x20\x20\x7e\x5c\xa\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x20\x20\x20\x20\x20\x7c\x20\x20\x20\x20\x20\x20\x20\x20\x5c\xa\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2c\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x20\x20\x20\x20\x20\x2f\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x5c\xa\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x20\x20\x5f\x20\x5f\x2d\x2d\x2d\x7e\x7e\x7e\x20\x20\x20\x20\x2f\x2f\x2d\x5f\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x5c\xa\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x20\x20\x28\x2f\x7e\x7e\x20\x29\x20\x20\x20\x20\x5f\x5f\x5f\x5f\x5f\x2f\x2d\x5f\x5f\x20\x20\x7e\x2d\x5f\x20\x20\x20\x20\x20\x20\x20\x5f\x2d\x5c\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\xa\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x20\x20\x5f\x2d\x7e\x5c\x5c\x30\x29\x20\x7e\x7e\x7e\x7e\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7e\x7e\x2d\x5f\x20\x5c\x5f\x5f\x2d\x2d\x7e\x7e\x20\x20\x20\x60\x5c\x20\x20\x5f\x5f\x5f\x2d\x2d\x2d\x7e\x7e\x7e\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x27\xa\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x5f\x2d\x7e\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x5f\x2d\x2f\x27\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x29\x7e\x2f\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x27\xa\x20\x20\x20\x20\x20\x20\x20\x20\x20\x28\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x2f\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x5f\x2d\x7e\x2f\x27\x20\x20\x20\x20\x20\x20\x20\x20\x20\x5f\x2d\x7e\x7e\x2f\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x5f\x2d\x7e\xa\x20\x20\x20\x20\x20\x20\x5f\x20\x2d\x2d\x2d\x2d\x2d\x20\x5f\x7e\x2d\x5f\x5c\x5c\x5c\x5c\x20\x20\x20\x20\x20\x20\x20\x20\x5f\x2d\x7e\x20\x2f\x27\x20\x20\x20\x20\x20\x20\x5f\x5f\x2d\x2d\x7e\x20\x20\x20\x28\x5f\x20\x5f\x5f\x5f\x5f\x5f\x5f\x2d\x2d\x2d\x7e\x7e\x7e\x2d\x2d\x5f\xa\x20\x20\x20\x5f\x2d\x7e\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7e\x2d\x5f\x7e\x5c\x5c\x5c\x5c\x20\x20\x20\x20\x20\x20\x28\x20\x20\x20\x28\x20\x20\x20\x20\x20\x2d\x5f\x7e\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7e\x2d\x5f\x20\x20\x7c\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7e\x2d\x5f\xa\x20\x20\x2f\x7e\x7e\x7e\x7e\x5c\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x5c\x20\x5c\x7e\x7e\x20\x20\x20\x20\x20\x20\x20\x7e\x2d\x5f\x20\x7e\x2d\x5f\x20\x20\x20\x20\x7e\x5c\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7e\x7e\x2d\x2d\x5f\x5f\x2d\x2d\x2d\x2d\x2d\x5f\x20\x20\x20\x20\x5c\xa\x20\x3b\x20\x20\x20\x20\x2f\x20\x5c\x20\x5f\x5f\x5f\x5f\x5f\x5f\x2d\x2d\x2d\x2d\x2d\x5c\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7e\x2d\x5f\x5f\x7e\x2d\x7e\x7e\x7e\x7e\x7e\x7e\x2d\x2d\x5f\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7e\x7e\x2d\x2d\x5f\x20\x5c\x20\x20\x20\x20\x2e\xa\x20\x7c\x20\x20\x20\x7c\x20\x5c\x28\x28\x2a\x29\x7e\x7e\x7e\x7e\x7e\x7e\x7e\x7e\x7e\x7e\x7c\x20\x20\x20\x20\x20\x20\x5f\x5f\x2d\x2d\x7e\x7e\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7e\x2d\x5f\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x29\x20\x7c\x20\x20\x20\x7c\xa\x20\x7c\x20\x20\x20\x20\x5c\x20\x20\x7c\x7e\x7c\x7e\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x29\x5f\x5f\x2d\x2d\x7e\x7e\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x5c\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x2f\x20\x2f\x20\x20\x20\x20\x2c\xa\x20\x20\x5c\x20\x20\x20\x20\x7e\x2d\x2d\x2d\x2d\x2d\x7e\x20\x20\x20\x20\x2f\x20\x20\x2f\x7e\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x29\x20\x20\x5c\x20\x20\x20\x20\x7e\x2d\x2d\x2d\x2d\x2d\x7e\x20\x20\x20\x20\x2f\xa\x20\x20\x20\x7e\x2d\x5f\x20\x20\x20\x20\x20\x20\x20\x20\x20\x5f\x2d\x7e\x20\x2f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x2f\x20\x20\x20\x20\x60\x2d\x5f\x20\x20\x20\x20\x20\x20\x20\x20\x20\x5f\x2d\x7e\xa\x20\x20\x20\x20\x20\x20\x7e\x20\x2d\x2d\x2d\x2d\x2d\x20\x7e\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7e\x20\x2d\x2d\x2d\x2d\x2d\x20\x7e\x20\xa"


/* Definizione Colori Console */
#define COL(x)              "\033[" #x ";1m"
#define COL_RED             COL(31)
#define COL_GREEN           COL(32)
#define COL_YELLOW          COL(33)
#define COL_BLUE            COL(34)
#define COL_WHITE           COL(37)
#define COL_GRAY            "\033[0m"


void initVectorGraphic(char *steeringVector,char *tiltVector);
void initWiimote(void);
void set_rpt_mode(cwiid_wiimote_t *wiimote, unsigned char rpt_mode);
void value2Graph(int valueSteering, int valueTilt);

char steeringVector[SCALE];
char tiltVector[SCALE];


telemeter.c
Codice: < >
void initVectorGraphic(char *steeringVector,char *tiltVector){
   int i;   
   for(i=0;i<=SCALE;i++)
      switch(i){
         case 0:
            *(steeringVector+i)='<';
            break;
         case 25:
            *(steeringVector+i)='|';
            break;
         case 50:
            *(steeringVector+i)='>';
            break;
         default:
            *(steeringVector+i)='-';
            break;
         
      }
   for(i=0;i<=SCALE;i++)
      switch(i){
         case 0:
            *(tiltVector+i)='<';
            break;
         case 25:
            *(tiltVector+i)='|';
            break;
         case 50:
            *(tiltVector+i)='>';
            break;
         default:
            *(tiltVector+i)='-';
            break;
         
      }
   
      
}

void initWiimote(void){
   cwiid_wiimote_t *hwiimote;
   cwiid_mesg_callback_t cwiid_callback;
   bdaddr_t addresss;
   unsigned char rpt_mode = 0;
   str2ba( "00:19:1D:B6:03:17", &addresss ); //<-Cambiare l'indirizzo MAC del WIIMOTE
   ((hwiimote= cwiid_connect   (&addresss,0)) != NULL) ? printf("%sConnesso%s\n",COL_GREEN,COL_GRAY) : printf("%sErrore%s\n",COL_RED,COL_GRAY);
   cwiid_set_mesg_callback(hwiimote, cwiid_callback);
   cwiid_enable(hwiimote, CWIID_FLAG_MESG_IFC);
   toggle_bit(rpt_mode, CWIID_RPT_ACC);
   cwiid_set_rpt_mode(hwiimote, rpt_mode);   
}

void cwiid_callback(cwiid_wiimote_t *wiimote, int mesg_count,union cwiid_mesg mesg[], struct timespec *timestamp){
   int i, j;
   int valid_source;
   for (i=0; i < mesg_count; i++){
      switch (mesg[i].type) {
         case CWIID_MESG_ACC:
value2Graph(mesg[i].acc_mesg.acc[CWIID_X]-99,mesg[i].acc_mesg.acc[CWIID_Y]-98);         
         break;
      
         default:
            printf("Sensore Non Esistente!");
            break;
      }
   }
}

void value2Graph(int valueSteering, int valueTilt){
   initVectorGraphic(steeringVector,tiltVector);   
   steeringVector[valueSteering]='$';
   tiltVector[valueTilt]='$';
   
}


Video:
Vai a Youtube Download VideophpBB Plugin


Per le prossime release si prevede, come detto prima,l'utilizzo anche della forza vettoriale sull'asse Z e l'implementazione tramite GPS della velocitÓ di navigazione.....
P.S: se qualcuno fosse interessato allo sviluppo il codice sorgente Ŕ libero.....

bye bye Laughing

_________________
www.uriel1988.altervista.org


Uriel_Science
Programmatore
Programmatore
 
Messaggi: 285
Registrato: 05/01/09 11:56
    Invia messaggio privato Profilo  

    Rispondi citando

dkc » Mer Set 08, 2010 2:55 pm

sei un grande uriel come hai fatto anche per la modo arealizzarla coi caratteri?

dkc
User Newbie
User Newbie
 
Messaggi: 33
Registrato: 27/08/10 09:42
    Invia messaggio privato Profilo  

    Rispondi citando

Uriel_Science » Mer Set 08, 2010 3:02 pm

dkc ha scritto:sei un grande uriel come hai fatto anche per la modo arealizzarla coi caratteri?


si chiama ASCII art!

_________________
www.uriel1988.altervista.org


Uriel_Science
Programmatore
Programmatore
 
Messaggi: 285
Registrato: 05/01/09 11:56
    Invia messaggio privato Profilo  

    Rispondi citando

Linkin Mark » Mer Set 08, 2010 9:20 pm

Sembra un gran lavoro...

Linkin Mark
Moderatore
Moderatore
 
Messaggi: 1508
Registrato: 12/06/08 17:47
Residenza: Napoli
    Invia messaggio privato Profilo   MSN

    Rispondi citando

Wolf Otakar » Gio Set 09, 2010 12:00 pm

Miticoooo! Cool

_________________
Segui WolfOtakar su Twitter Smile

Vacanze in Calabria

Wolf Otakar
Admin
Admin
 
Messaggi: 2842
Registrato: 12/02/07 22:49
Residenza: Regedit
    Invia messaggio privato Profilo  

    Rispondi citando

Uriel_Science » Gio Set 09, 2010 4:07 pm

Ci sono News sul progetto....

In questa versione ho implementato una funzione per visualizzare lo storico delle forze che agiscono sulla moto(X,Y)....
Inoltre ho aggiunto i colori agli indicatori.....

Qui ci sono i sorgenti:


Video:
Vai a Youtube Download VideophpBB Plugin



bye bye! Wink

_________________
www.uriel1988.altervista.org


Uriel_Science
Programmatore
Programmatore
 
Messaggi: 285
Registrato: 05/01/09 11:56
    Invia messaggio privato Profilo  

    Rispondi citando

Uriel_Science » Ven Set 10, 2010 4:06 pm

Continua lo sviluppo di TelemetryX...

In questa release ho implementato la visualizzazione dei dati su di un grafico e la tanto attesa forza di gravitÓ!

Video:
Vai a Youtube Download VideophpBB Plugin



ScreenShot:


Sorgenti:
Codice: < >
http://dl.dropbox.com/u/3648427/TelemetryX/10_09_2010/Core/Core.zip
http://dl.dropbox.com/u/3648427/TelemetryX/10_09_2010/Web/Web.zip


bye bye! Wink

_________________
www.uriel1988.altervista.org


Uriel_Science
Programmatore
Programmatore
 
Messaggi: 285
Registrato: 05/01/09 11:56
    Invia messaggio privato Profilo  


Rispondi

Programmazione

Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi