Show Posts
Pages: 1 ... 11 12 [13] 14 15 ... 17
181  International / Generale / Re: GPS tracker o altro uso????? on: May 07, 2012, 09:46:05 am
grazie lesto.
non ho compreso bene (sono un principiante) ma leggerò qualcosa a proposto.

 .... In effetti anche se si verifica qualche errore non è un grosso problema, perchè una volta disriminato elimino quei dati... è soltanto che volevo capire ....

per le altre questioni che ho scritto hai qualche suggerimento?????
182  International / Generale / GPS tracker o altro uso????? on: May 07, 2012, 09:16:26 am
Sto sperimentando l'uso del GPS...  ed ho scritto lo sketch di seguito allegato...... ancora in fase di studio e sperimentazione:

con riferimento a questa parte dello script:
Code:
void leggiNMEA()
  {
   boolean fine = false;
   int indiceNMEA =0 ;
     do
      {  stringaNMEA[indiceNMEA]=gpsSerial.read();
         if (stringaNMEA[indiceNMEA]=='\n'){fine=true;}
         if (stringaNMEA[indiceNMEA]!=-1){indiceNMEA++;}
      }  while(!fine);
       
    int sum;
    sum = parseHex(stringaNMEA[indiceNMEA-4]) * 16;                   // verifica il checksum
    sum += parseHex(stringaNMEA[indiceNMEA-3]);                       
    for (int k=1; k < (indiceNMEA-5); k++) {sum ^= stringaNMEA[k];}   
    if (sum != 0)                                           
        {Serial.print("\n Checksum Errato ============== "); digitalWrite(led1, LOW);}
    else                                                      // cheksum OK ...
        {Serial.print("\n Checksum Esatto -------------- "); digitalWrite(led1, HIGH);
 

si verifica che se invio dati alla seriale del PC spesso il checksum è errato, se alzo il baud rate della connessione seriale con il PC l'errore non si verifica più...
 quindi la prima domanda è questa: E' possibile che l'invio dei dati alla seriale, così come l'elaborazione di qualche altro calcolo mi determina un ritardo nel prelievo dei dati dal buffer della seriale GPS-Arduino ??? ...  così che mi trovo una mezza stringa NMEA con con attacata una seconda stringa .....chiaramente il checksum è errato....
ripeto.. se alzo il baud rate il problema scompare, oppure scompare anche se elimino l'invio dei dati alla seriale ....


con riferimento a questa parte dello skect:
Code:
      String chkStr;

        chkStr ="";  for(int i=1; i<6; i++){chkStr += stringaNMEA[i];}

        if      (chkStr == "GPGGA")    //GPGGA #1 UTC ora #2 latitudine #3 N/S #4 longitudine #5 E/W #6 Fix #7 n° sat. #9 Quota s.l.m. #10 UM quota
          {     
               }


utilizzo questo sistema per individuare il tipo di stringa NMEA e volevo chiedervi:
esiste un metodo più pratico, veloce ed efficiente per individuare che tipo di stringa si tratta?? ....  io indiduo il tipo come sopra, poi controllo i primi 6 caratteri e a seconda si tratti di GPGGA, o GPGLL, o GPGSV etc... provvedo ad una scansione della stringa, attarverso l'individuazione della virgola, conto i campi e li metto in variabili stringa gia definite in precedenza .... come di seguito:
 
Code:

    if      (chkStr == "GPGGA")    //GPGGA #1 UTC ora #2 latitudine #3 N/S #4 longitudine #5 E/W #6 Fix #7 n° sat. #9 Quota s.l.m. #10 UM quota
          {     //Serial.print ("\n\t1 GPGGA");
                datiNMEA[1]=""; datiNMEA[3]=""; datiNMEA[4]=""; datiNMEA[5]=""; datiNMEA[6]=""; datiNMEA[10]=""; datiNMEA[14]=""; datiNMEA[7]=""; datiNMEA[8]="";
                int k =0; int jj=0;
                while(k < dimVettore && stringaNMEA[k]!='\n')
                {if (stringaNMEA[k] == ',' ){jj++; }
                 else {
                       if      (jj == 1) {datiNMEA[1]+= stringaNMEA[k];}    // UTC Ora         
                       else if (jj == 2) {datiNMEA[3]+= stringaNMEA[k];}    // latitudine
                       else if (jj == 3) {datiNMEA[4]+= stringaNMEA[k];}    // N/S
                       else if (jj == 4) {datiNMEA[5]+= stringaNMEA[k];}    // longitudine
                       else if (jj == 5) {datiNMEA[6]+= stringaNMEA[k];}    // E/W
                       else if (jj == 6) {datiNMEA[10]+= stringaNMEA[k];}   // fix
                       else if (jj == 7) {datiNMEA[14]+= stringaNMEA[k];}   // n Sat.
                       else if (jj == 9) {datiNMEA[7]+= stringaNMEA[k];}    // Quota
                       else if (jj == 10){datiNMEA[8]+= stringaNMEA[k];}    // UM
                      };
                k++;}               
               }

          else if (chkStr == "GPGLL")   //GPGLL #1 latitudine #2 N/S #3 longitudine #4 E/W #5 UTC ora #6 Status
         {      //Serial.print ("\n\t2 GPGLL");
                datiNMEA[3] =""; datiNMEA[4] =""; datiNMEA[5] =""; datiNMEA[6] =""; datiNMEA[1] =""; datiNMEA[9] ="";
                int k =0; int jj=0;
                while(k < dimVettore && stringaNMEA[k]!='\n')
                {if (stringaNMEA[k] == ',' ){jj++;}
                 else {
                       if      (jj == 1) {datiNMEA[3]+= stringaNMEA[k];}    // latitudine             
                       else if (jj == 2) {datiNMEA[4]+= stringaNMEA[k];}    // N/S
                       else if (jj == 3) {datiNMEA[5]+= stringaNMEA[k];}    // longitudine
                       else if (jj == 4) {datiNMEA[6]+= stringaNMEA[k];}    // E/W
                       else if (jj == 5) {datiNMEA[1]+= stringaNMEA[k];}    // UTC Ora         
                       else if (jj == 6) {datiNMEA[9]+= stringaNMEA[k];}    // Status   
                      };
                k++;}
               }
 


etc...

il sistema funziona, nel senso che riesco a discriminare le stringhe ed ad estrarne la variabile che voglio ed a memorizzarla in

String datiNMEA [16];         // campi contenenti le informazioni di interesse estratte
// #1     #2      #3      #4     #5      #6    #7      #8    #9       #10   #11        #12    #13          #14     #15   
// #ora   #data   #lat.   #n/s   #long.  #e/o  #quota  #UM   #Status  #fix  #velocita  #UM    #direzione   #n Sat  #PDOP
solo che ad un certo punto impazzisce, comincia a trovare stringhe lunghissime, sensza senso e si blocca ...
se lo faccio per singoli blocchi funziona bene ... se scansiono tutte le stringhe per prelevarne tutte le variabili si blocca ...
mi da l'impressione di un problema di RAM e mi chiedevo: la causa puo essere un problema di FULL MEMORY di cui hanno peralto Menniti ed altro in un lunghissimo post di quelche settimana fa????? .. cioè devo forse aggiornare l'IDE perchè ci sono troppe variabili e si superano i 64kWord, ovvero 128kB di memoria .... spero di non aver fatto troppe domande.... ciao


183  International / Generale / Re: GPS Mediatek 3329 on: May 04, 2012, 07:16:14 am
si Legacy .. esattamente quelli. Ho sempre una scorta di doppino telefonico... recuperi vari... dimenticanze telecom . etc... ma per il Mediatek 3329 ci vuole qualcosa di più delicato... ne ho bianco, azzurro e bianco/rosso ... lo recupero da qualsiasi cavetto telefonico per uso interno, dentro la guaina grigia ci sono 2 o tre cavetti rigidi, sono larghi dentro la guaina esterna, e si sfilano molto facilmnete .... vanno benissimo con le breadboard.. ed anche per saldare sono perfetti.

saluti
ciao
184  International / Generale / Re: GPS Mediatek 3329 on: May 04, 2012, 01:42:22 am
risolto!!!! ...
avevo usato dei fili troppo rigidi (tipo doppino telefonico) per il collegamento sul circuito stampato.. e .. piegando, il tx del modulo si era distaccato, senza che mi accorgessi .. adesso và.... certo devo verificare che riceva i comandi .. questo fine settimana chiarirò..


Grazie a tutti ....
185  International / Generale / Re: GPS Mediatek 3329 on: May 03, 2012, 08:31:25 am
il modulo apparentemente funziona perchè il led del fix lampeggia ad ogni secondo e se lo metto fuori dalla finestra dopo oco si spegne, dopo aver fatto il fix .. come da datasheet ..

.. l'enable lo lascio attivo collegato a + 3,3 V... e lo stesso faccio per la tensione di backup ... ma non riesco a ricevere alcun segnale dalla uscita seriale .....

186  International / Generale / Re: GPS Mediatek 3329 on: May 03, 2012, 05:26:41 am
grazie astro
nessuna risposta dal modulo gps... ho paura di averlo dannegiato.
.. oggi riprovo ma credo che non ci sia nulla da fare......
ciao
187  International / Generale / Re: GPS Mediatek 3329 on: May 02, 2012, 02:57:38 am
Grazie astro...
Quote
Non va bene, devi usare un regolatore a 3.3V dedicato, oppure usa i 3.3V disponibili su Arduino, il GPS consuma solo 35-40 mA e sei dentro il massimo ammesso sia per Arduino 2009 che UNO.
... non capisco perchè non và bene?.. il datasheet dice che dovrebbe andare bene anche a 5 V...  ho inserito i diodi giusto per stare al limite superiore.... (.. problema e che qui non trovo un regolatore a 3,3 V).. comunque per le prove posso usare i 3,3 v di arduino...

Quote
Di default quei chip arrivano a 57600 con refresh rate a 5 Hz, però se il produttore del modulo dove è installato il chip vero e proprio ha settato diversamente i parametri può lavorare a qualunque bps ammesso, lo standard per i GPS è 4800 bps.

io ho acquistato il modulo senza la basetta .. isomma le resistenze ed i condensatori, nonchè i led li ho messi io.... nel datasheet ho letto che il baud rate di default e 9600 ... ma posso provare con gli altri valori...

Quote
Per verificare se i dati arrivano usa Arduino come adattatore USB seriale caricando sopra l'ATmega uno sketch vuoto dove imposti i pin 1 e 0 come input e collega Tx e Rx del GPS su quelli di Arduino incrociandoli, a questo punto aprendo il serial monitor puoi vedere le sentenza NMEA, arrivano anche senza fix, se il bps è giusto le vedi sotto forma di stringhe ascii leggibili, se è sbagliato vedi apparire caratteri senza senso in questo caso cambia il bps per tentativi fino a che non  vedi arrivare i dati perfettamente leggibili.

... imposto i pin 0 e 1 sempre con la libreria NewSoftSerial???  ....  mi suggesrisci  un link su dove vedere bene questa cosa? .....

Quote
Attenzione che sul Rx del GPS non puoi entrare con un segnale Tx a 5V, o lo lasci scollegato per fare le prove, ma non puoi modificare i parametri di lavoro del GPS, oppure lo colleghi tramite un partitore resistivo, 10k+18k, in modo da abbassare la tensione a 3V, se non lo fai il rischio di danneggiare il modulo GPS è alto.

Questa cosa mi preoccupa non poco... ho già provato innumerovoli volte ancehe se sempre tramite la resistenza da 330 ohm!!! ... avrò già causato i danni bho??? ... adesso disconetto il rx (sul lato gps) e mi preoccupo di riuscire a ricevere...  se riesco a ricevere ...opi vediamo del tx con il partiore resistivo...

grazie comunque astrobeed

188  International / Generale / GPS Mediatek 3329 on: May 02, 2012, 01:55:19 am
scusate ho bisogno dell'opinione di un esperto..

sto interfacciando questo modulo GPS (Mediatek 3329);
http://inmotion.pt/documentation/diydrones/MediaTek_MT3329/mediatek_3329.pdf

per l'alimentazione ho messo un 7805 come regolatore di tensione (nell'ipotesi di alimentarlo sepratamente dall'arduino), con in serie 3 diodi per abassare un po' la tensione, perchè dal datasheet .. la tensione massima di alimentazione e di 5V, ed è raccomandata 3,3 V.

Non ho inserito l'induttanza L1 in serie all'alimentazione ... ma se è il caso la inserirò oggi....

e fin qui .. va bene.. si accende, la spia del FIX lampeggia fino a quando fa il punto 3D e quindi si spegne .. pertanto ne deduco che stia funzionando bene...

il problema e che non riesco a leggere nulla tramite la porta seriale....
 uso la libreria
#include <NewSoftSerial.h>

usando i pin 2 e 3 (di arduino) come rx e tx... impostando il baud rate a 9600, perchè di default il modulo GPS dovrebbe avere tale valore, ma non riesco a leggere nulla, nessuna segnale..

sto pensando di togliere un diodo dall'alimentazione in serie , così di elevare di 0,6 v la tensione di alimentazione..

potrebbe essere questa una causa del problema ???

L'uscita dal modulo gps l'ho realizzato interponendo in serie resistenze da 330 ohm ... come da pagina 10 del datasheet mediatek 3329 .....

niente non comunica.
Questo pomeriggio tolgo un diodo ed inserisco un'induttanza da qualche uH in serie all'entrata ....

qualcuno può darmi qualche consiglio?



189  International / Generale / Re: Web Server well structured on: February 02, 2012, 03:40:21 pm
Quote
Lo sketch è sui 23110 bytes e FREERAM mi da un bel 374

scusa Daniela.. cosè questo FREERAM.. io sto cercando di capire come gestire l'uso della RAM durante l'esecuizione degli sketc......
190  International / Generale / Re: Problema scroll text lcd hitechi 16X2 (hd44780) on: February 02, 2012, 03:26:03 pm
io faccio così... all'incirca

innanzitutto uso una funzione tipo questa:
Code:
void stampa_lcd (String pm, char l, String m, String nC)
{
 lcd.setCursor(0, 0) ; lcd.print(pm); //questo viene stampato nella prima riga, ad inzio riga
 lcd.setCursor(12, 1); lcd.print(nC); lcd.print(" ");
 lcd.setCursor(2, 1) ; lcd.print("    "); lcd.setCursor(1, 1); lcd.print(l); lcd.print("   "); lcd.print(m);
}
poi il codice per la stampa, all'incirac fà così:

  
Code:
for(int i = 0; i < messaggio.length(); i++)
{
 lettera=messaggio.charAt(i); // prendo e lettere ad una ad una dalla stringa "messaggio"
 parte_messaggio = parte_messaggio + lettera;
 if (parte_messaggio.length() > lMax )  //l max rapresenta il numero max di caratteri che vuoi stampare ...
           {parte_messaggio = parte_messaggio.substring (parte_messaggio.length()-lMax );}; //taglia la parte di messaggio già trasmesso agli ultimi lMax caratteri. Per poter visualizzare sull'LCD - max 16 caratteri
  stampa_lcd     (parte_messaggio, lettera, chrMorse, String( messaggio.length()-i)); // invia i dati all'LCD
}




Il risultato è che nella prima riga appaiono lMax caratteri (nel mio caso 16 caratteri), presi dalla stringa "messaggio"  che scrollano da dx a sx.... . vedi che prima di spampare la parte che scrolla
spero si sia capito
ciao
191  International / Generale / Re: progetto con GPS...qualche info on: February 02, 2012, 08:04:43 am
io ho acquistato due di questi.
http://microsat.com.pl/product_info.php?cPath=22&products_id=45 al prezzo di 20 € cad.. ho aggiunto meno di 9 euri complessivi per spese di spedizione...  nessu altro costo aggiuntivo. arrivati a casa in 7 gg.


ho anche acquistato uno di questi, un mese fa:
http://www.adafruit.com/products/99 al costo di 60 $, oltre a spese di spedizione ed a 18 € di dogana ... arrivati a casa dopo 30 gg, vedete un pò voi....



192  International / Generale / Re: convertire stringa in numero decimale.. on: January 23, 2012, 12:52:49 pm
non sò.. forse.
poi provo.
Ma e per i decimali... mi pare che trasformi solo in un intero....
comunque non saprei su arduino..
grazie
193  International / Generale / convertire stringa in numero decimale.. on: January 23, 2012, 12:43:08 pm
.. ho questo problema.. devo convertire una stringa tipo "650762387.45" nel corrisondente valore decoimale...
io faccio così:
faccio la scansione della stringa per individuare quanti caratteri a destra e quanti a sinistra de punto.
- trascuriamo, per adesso i decimali, e consideriamo solo la parte a sinistra:
- coatruisco la somma, con un ciclo for, così..

6 * 10 ^8 + 5 * 10 ^ 7 + 0 * 10 ^6 + 7 * 10 ^ 5 + 6 * 10 ^ 4 + 2 * 10 ^3 +  3 * 10 ^2 + 8 * 10 ^1 + 7 * 10 ^0
e dovrei ottenere il cosrrispondente valore in base dieci, a meno dei decimali 0,45 .....

ma niente. già dopo la 5 potenza .. l'elevazoine di 10 ^ i, comincia  a dare errori ...
l'elevazione a potenza la faccio con la funzione pow(base, esponente) ...

credo sia un errore di casting.. ma come faccio ad eliminarlo..

come tipo di dati uso float per il numero che devo ottenere ed int per l'esponente....

conoscete qualche sistema o quelche funzione già pronta e ben funzionante????

qualche suggerimento???

grazie


194  International / Generale / Re: Informazioni generiche sul codice ..... on: January 23, 2012, 12:12:56 pm
Grazie Leo.. avevo intuito ....
Non mi era chairo che i/10 .. poteva rappresentare le decine, prendendo la parte intera,..... e non sapevo che % rappresenta il modulo...

e se volesimo fare una numerazione a tre cifre.. per esempio fino a 999 come dovremmo fare?

o sto chiedendo troppo? ..... speriamo che non legga Maurotec smiley-wink ... scherzo....

sto riprendendo arduino dopo un anno..  la mia esperienza con la programmazione risale al 1996 con il quick basic di microsoft ..... sto studiacchiando un poco di C adesso per sperimentare arduino...

Grazie di nuovo ....
195  International / Generale / Informazioni generiche sul codice ..... on: January 23, 2012, 11:51:00 am
La variabile nome file è defnita come char * nomefile ="gpslog00.txt" 
Code:
   for (int i = 0; i < 100; i++)
    { nomeFile[6] = '0' + i/10;
      nomeFile[7] = '0' + i%10;
      if (! SD.exists(nomeFile)) { break; }
    }

non capisco come faccia ad aggiungere sempre un'unità al nome del file.. se questo esiste già...
in particolare, non capisco questa istruzione:
nomeFile[6] = '0' + i/10; ... cioè sostitusce al carattere in posizoine 6  ... 0 + i/10 ... bho!!!!

ed ancora di più questa:
nomeFile[7] = '0' + i%10; ... cioè sostitusce al carattere in posizoine 7  ... 0 + i%10 ... ma che significato ha il segno %...

qualcuno può darmi una spiegazione????
Krazie
Pages: 1 ... 11 12 [13] 14 15 ... 17