Loading...
  Show Posts
Pages: 1 2 [3] 4 5 ... 7
31  Using Arduino / Programming Questions / Re: Problem with transmitting IMU/GPS/Ultrasonic data over Nrf24L01 on: January 31, 2013, 11:38:57 am
this ones has me stumped
Code:
struct StructBuff_t {
  char GPS[100]; 
  char imuRoll[6];
  char imuPitch[6];
  char imuYaw[6];
  char UltS[3];
  char SenBuffersAll[133];
}
StructBuff;

Code:
void BuildTransBuffer(){
// Struct your Buffers here
   PString(StructBuff.GPS, sizeof(StructBuff.GPS), gps.sentence());                 //+100 Buff   
//----------------------Delimitor------------------------------------------
   PString(StructBuff.imuRoll, sizeof(StructBuff.imuRoll), ToDeg(roll));         //+6   Buff
//----------------------Seperator------------------------------------------
   PString(StructBuff.imuPitch, sizeof(StructBuff.imuPitch), ToDeg(pitch));         //+6   Buff
//----------------------Seperator------------------------------------------
   PString(StructBuff.imuYaw, sizeof(StructBuff.imuYaw), ToDeg(yaw));               //+6   Buff
//----------------------Delimitor------------------------------------------
   PString(StructBuff.UltS, sizeof(StructBuff.UltS), averagePing());                //+3   Buff = 124
//----------------------Delimitor------------------------------------------
// 132 point buffer
 
  String Prefix, Suffix, Seperator, Delimit, sGps, sRoll, sPitch, sYaw, sAP, SenBuff;
Prefix    = String('<');
  Suffix    = String('>');
  Seperator = String('^');
  Delimit   = String('|');
  sGps      = gps.sentence();
 // sGps      = String(gps.sentence());
  sRoll     = StructBuff.imuRoll;
//  sRoll     = String(StructBuff.imuRoll);
  sPitch    = StructBuff.imuPitch;
//  sPitch    = String(StructBuff.imuPitch);
  sYaw      = StructBuff.imuYaw;
//  sYaw      = String(StructBuff.imuYaw);
//  sAP       = averagePing();    //cant use unsigned int as char string
//  sAP       = String(averagePing());

  SenBuff   = String("");
 
  //Start string append
  SenBuff += Prefix; SenBuff += Prefix; SenBuff += Prefix;   SenBuff += Delimit;
  SenBuff += sGps; SenBuff += Delimit; SenBuff += sRoll; SenBuff += Seperator; SenBuff += sPitch;
  SenBuff += Seperator; SenBuff += sYaw; SenBuff += Delimit; SenBuff += sAP; SenBuff += Delimit;
  SenBuff += Suffix;  SenBuff += Suffix;  SenBuff += Suffix;
  //End string append
PString(StructBuff.SenBuffersAll, sizeof(StructBuff.SenBuffersAll), SenBuff);
Serial.println(SenBuff);
}
SenBuff/StructBuff.SenBuffersAll
Code:
contence of SenBuff
<<<||0.00^0.00^0.00||>>>
<<<||0.00^0.00^0.00||>>>
i can see there filling with my Trigger and Delimit and Separators but i guess it's just not that simple to stuff function output into strings? LOL cant blame a guy for trying. ill keep tinkering while i wait for your advice and witty slice and dice i am sure you will use to render my code impotent. till then.
BTW thanks for all the help with this. i have been learning a lot i think
32  Using Arduino / Programming Questions / Re: Problem with transmitting IMU/GPS/Ultrasonic data over Nrf24L01 on: January 29, 2013, 06:14:47 pm
thanks PaulS, so what method would be best for collecting all the data types from GPS (char)/IMU (float)/Ultra sonic (INT) and sending them in a constantly predictable order so on the RX end i can receive them and know what sensor they are from and type of data they are char float int. i was thinking structures because i could do like
sensors{
char  GPS
float IMU1,2,3
int    Ultrasonic
int/byte/float/char other stuffs etc.
}sensors;
but how could i pack that all up and send it in one buffer?
sensors.All
i supose i could delimit the data with some odd strings like.

<(@#:dataID,GPS|DataType,char|DataBits,$GPRMC,140053.00,A,4454.1740,N,09325.0143,W,000.0,128.7,300508,001.1,E,A*2E|:~&!>

so find < is next ( next@ next #? yes= good start find next : now look at tag DataID wich RX will then have a var for it predefined with type so it can hold it.
look for next | and get next tag id, DataType,type of data. would i not need to do it this way so the RX side knows how to parse each type?

or would it be simpler the make a char array and converts all types to it RF out the array rebuild it and convert back?
33  Using Arduino / Programming Questions / Re: Problem with transmitting IMU/GPS/Ultrasonic data over Nrf24L01 on: January 29, 2013, 10:43:50 am
i did not use a loop because i was having to many problems keeping it all straight in my head trying to figure what was indexing what and calling and pointing etc.
 so i figured why not do them one by one then i could scan them and *know* what place on the 2 arrays i was looking in and what was there. anyhow i guess i mucked around with so many arrays i just never even considered sending gpsBuff lol! thanks everyone with the help so far.
now i just need to figure out how to send all these types in some grand order and retrieve them on the RX side in order to sort and use the incoming data.
does this basically say that radio.read can take any type of buffer so int char float etc?
Code:
bool RF24::read ( void *  buf,
uint8_t  len
)

Read the payload.

Return the last payload received

The size of data read is the fixed payload size, see getPayloadSize()

Note:
    I specifically chose 'void*' as a data type to make it easier for beginners to use. No casting needed.

Parameters:
    buf Pointer to a buffer where the data should be written
    len Maximum number of bytes to read into the buffer

Returns:
    True if the payload was delivered successfully false if not


34  Using Arduino / Programming Questions / Re: Problem with transmitting IMU/GPS/Ultrasonic data over Nrf24L01 on: January 29, 2013, 08:32:00 am
I read JHaskell's blog on arduino  comm  and it' sone of the best beginner guides i have seen for it.
link here http://jhaskellsblog.blogspot.com/2011/05/serial-comm-fundamentals-on-arduino.html

so now this is what it looks like.

Code:
#include <nmea.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "printf.h"
#include <nRF24L01.h>
#include <SPI.h>
NMEA gps(ALL);    // GPS data connection to all sentence types
RF24 radio(48,49);
void setup() {
  Serial.begin(57600);
  Serial2.begin(57600);
  //**************Start Transiever (NRF24L01) config**************
  printf_begin();
  printf("\n\rRadio Setup\n\r");
  radio.begin();
  radio.setDataRate(RF24_2MBPS);
  radio.setCRCLength(RF24_CRC_16);
  radio.setPayloadSize(4 * sizeof(byte));
  radio.setChannel(2);
  radio.setAutoAck(true);
  radio.openReadingPipe(1,0xF0F0F0F0E1LL);
  radio.openWritingPipe(0xF0F0F0F0D2LL);
  radio.startListening();
  radio.printDetails();
  //**************End Transiever (NRF24L01) config**************
}
#define DBUFFSIZE      100
char gpsBuff[DBUFFSIZE+1]; //Add 1 for NULL terminator
byte gpsBuffIndex = 0;

 union inGps2byte_t {
 byte  inGpsout[100];
 char inGpsin;
 }
 inGps2byte;

void loop() {                                    // start of loop


    getSerialString();
    radio.startListening();
    Tchar2byte12();
}                                             // go back to start of loop

boolean getSerialString(){

  char startChar = '$'; // or '!', or whatever your start character is
  char endChar = '\10';
  boolean storeString = false; //This will be our flag to put the data in our buffer

  static byte gpsBuffIndex = 0;
  while(Serial2.available()>0){
    char incomingbyte = Serial2.read();
    if(incomingbyte==startChar){
      gpsBuffIndex = 0;  //Initialize our dataBufferIndex variable
      storeString = true;
    }
    if(storeString){
      //Let's check our index here, and abort if we're outside our buffer size
      //We use our define here so our buffer size can be easily modified
      if(gpsBuffIndex==DBUFFSIZE){
        //Oops, our index is pointing to an array element outside our buffer.
        gpsBuffIndex = 0;
        break;
      }
      if(incomingbyte==endChar){
        gpsBuff[gpsBuffIndex] = 0; //null terminate the C string
        //Our data string is complete.  return true
        return true;
      }
      else{
        gpsBuff[gpsBuffIndex++] = incomingbyte;
        gpsBuff[gpsBuffIndex] = 0; //null terminate the C string
      }
    }
    else{
    }
  }
  return false;
}
 
 void Tchar2byte12(){
 inGps2byte.inGpsin = *gpsBuff;
   byte output[100];
 output[0] = inGps2byte.inGpsout[0]; 
 output[1] = inGps2byte.inGpsout[1]; 
 output[2] = inGps2byte.inGpsout[2]; 
 output[3] = inGps2byte.inGpsout[3]; 
 output[4] = inGps2byte.inGpsout[4]; 
 output[5] = inGps2byte.inGpsout[5]; 
 output[6] = inGps2byte.inGpsout[6]; 
 output[7] = inGps2byte.inGpsout[7]; 
 output[8] = inGps2byte.inGpsout[8]; 
 output[9] = inGps2byte.inGpsout[9]; 
 output[10] = inGps2byte.inGpsout[10]; 
 output[11] = inGps2byte.inGpsout[11]; 
 output[12] = inGps2byte.inGpsout[12]; 
 output[13] = inGps2byte.inGpsout[13]; 
 output[14] = inGps2byte.inGpsout[14]; 
 output[15] = inGps2byte.inGpsout[15]; 
 output[16] = inGps2byte.inGpsout[16]; 
 output[17] = inGps2byte.inGpsout[17]; 
 output[18] = inGps2byte.inGpsout[18]; 
 output[19] = inGps2byte.inGpsout[19]; 
 output[20] = inGps2byte.inGpsout[20]; 
 output[21] = inGps2byte.inGpsout[21];
 output[22] = inGps2byte.inGpsout[22];
 output[23] = inGps2byte.inGpsout[23];
 output[24] = inGps2byte.inGpsout[24];
 output[25] = inGps2byte.inGpsout[25];
 output[26] = inGps2byte.inGpsout[26];
 output[27] = inGps2byte.inGpsout[27];
 output[28] = inGps2byte.inGpsout[28];
 output[29] = inGps2byte.inGpsout[29];
 output[30] = inGps2byte.inGpsout[30];
 output[31] = inGps2byte.inGpsout[31];
 output[32] = inGps2byte.inGpsout[32];
 output[33] = inGps2byte.inGpsout[33];
 output[34] = inGps2byte.inGpsout[34];
 output[35] = inGps2byte.inGpsout[35];
 output[36] = inGps2byte.inGpsout[36];
 output[37] = inGps2byte.inGpsout[37];
 output[38] = inGps2byte.inGpsout[38];
 output[39] = inGps2byte.inGpsout[39];
 output[40] = inGps2byte.inGpsout[40];
 output[41] = inGps2byte.inGpsout[41];
 output[42] = inGps2byte.inGpsout[42];
 output[43] = inGps2byte.inGpsout[43];
 output[44] = inGps2byte.inGpsout[44];
 output[45] = inGps2byte.inGpsout[45];
 output[46] = inGps2byte.inGpsout[46];
 output[47] = inGps2byte.inGpsout[47];
 output[48] = inGps2byte.inGpsout[48];
 output[49] = inGps2byte.inGpsout[49];
 output[50] = inGps2byte.inGpsout[50];
 output[51] = inGps2byte.inGpsout[51];
 output[52] = inGps2byte.inGpsout[52];
 output[53] = inGps2byte.inGpsout[53];
 output[54] = inGps2byte.inGpsout[54];
 output[55] = inGps2byte.inGpsout[55];
 output[56] = inGps2byte.inGpsout[56];
 output[57] = inGps2byte.inGpsout[57];
 output[58] = inGps2byte.inGpsout[58];
 output[59] = inGps2byte.inGpsout[59];
 output[60] = inGps2byte.inGpsout[60];
 output[61] = inGps2byte.inGpsout[61];
 output[62] = inGps2byte.inGpsout[62];
 output[63] = inGps2byte.inGpsout[63];
 output[64] = inGps2byte.inGpsout[64];
 output[65] = inGps2byte.inGpsout[65];
 output[66] = inGps2byte.inGpsout[66];
 output[67] = inGps2byte.inGpsout[67];
 output[68] = inGps2byte.inGpsout[68];
 output[69] = inGps2byte.inGpsout[69];
 output[70] = inGps2byte.inGpsout[70];
 output[71] = inGps2byte.inGpsout[71];
 output[72] = inGps2byte.inGpsout[72];
 output[73] = inGps2byte.inGpsout[73];
 output[74] = inGps2byte.inGpsout[74];
 output[75] = inGps2byte.inGpsout[75];
 output[76] = inGps2byte.inGpsout[76];
 output[77] = inGps2byte.inGpsout[77];
 output[78] = inGps2byte.inGpsout[78];
 output[79] = inGps2byte.inGpsout[79];
 output[80] = inGps2byte.inGpsout[80];
 output[81] = inGps2byte.inGpsout[81];
 output[82] = inGps2byte.inGpsout[82];
 output[83] = inGps2byte.inGpsout[83];
 output[84] = inGps2byte.inGpsout[84];
 output[85] = inGps2byte.inGpsout[85];
 output[86] = inGps2byte.inGpsout[86];
 output[87] = inGps2byte.inGpsout[87];
 output[88] = inGps2byte.inGpsout[88];
 output[89] = inGps2byte.inGpsout[89];
 output[90] = inGps2byte.inGpsout[90];
 output[91] = inGps2byte.inGpsout[91];
 output[92] = inGps2byte.inGpsout[92];
 output[93] = inGps2byte.inGpsout[93];
 output[94] = inGps2byte.inGpsout[94];
 output[95] = inGps2byte.inGpsout[95];
 output[96] = inGps2byte.inGpsout[96];
 output[97] = inGps2byte.inGpsout[97];
 output[98] = inGps2byte.inGpsout[98];
 output[99] = inGps2byte.inGpsout[99];
/*
 radio.stopListening();
 bool ok = radio.write(output,sizeof(byte));
 if (ok)
 printf("ok...Tchar2byte12\n\r");
 else 
 printf("failed.Tchar2byte12\n\r");
 delay(10);
*/
  for (int i = 0; i < sizeof(inGps2byte.inGpsout); i++) {
    Serial.print(inGps2byte.inGpsout[i]); 
  } 
 Serial.println();
 }
now the gpsBuff works fine i can scan it and print the bits in the array out. now im just having probs geting them stuffed into the union to convert to bytes for the radio to send.

 scanning inGps2byte.inGpsout shows 36 on
  • and 0 on the other [1]-[99].

 i am guessing it's due to the fact im using a pointer (to my understanding pointers hold addresses to mem of the item your trying to actually access) therefor it's understandable the array is empty.

 so now i just need to learn pointers and how to reference them properly i guess. and if i do that then i can forgo all this and just use the NMEA lib and point it into a union for byte conversion or not even, have not got that far yet.
35  Using Arduino / Programming Questions / Re: Problem with transmitting IMU/GPS/Ultrasonic data over Nrf24L01 on: January 28, 2013, 08:36:45 pm
Code:
  char GpsStr[100];                                        // Start an array of 100 empty char sized elements

void loop() {                                                  // Start of loop

    char Sr = Serial2.read();                           //Initialize Sr and give it a value = to Serial2.read int i; create  i and make it size of int
    for (i = 0; i < sizeof(GpsStr); i = i + 1) {    // Start a conditional loop count up from 0 to size of GpsStr wich is 100 and preform an action contained in {}.
    GpsStr[i] = Sr;                                         // Take the contence of Sr 'Serial2.Read()' and stuff it in GpsStr at 'i' pos 'i' is equal to the current number the loop has counted form 0 to 100 
    }                                                             // Ok made it form 0 -100 and stuffed Sr into each continue with main loop
   
    int x;                                                     // Init x
    for (x = 0; x < 99; x = x + 1) {                 // Count x from 0 - 100
    Serial.print(GpsStr[x]);                         // Print to serial GpsStr at X pos
    }                                                           // Stop printing
    Serial.println();                                    // Make a new line
   }                                                           // Go back to start of loop
Output i get this.
Code:
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
***************************************************************************************************
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

What i should get is.
Code:
$GPRMC,140053.00,A,4454.1740,N,09325.0143,W,000.0,128.7,300508,001.1,E,A*2E
$GPGGA,140053.00,4454.1740,N,09325.0143,W,1,09,01.1,00289.8,M,-030.7,M,,*5E
$GPGSA,A,3,21,15,18,24,26,29,06,22,,03,,,02.0,01.1,01.7*04
$GPGSV,3,1,12,21,75,306,40,15,59,075,46,18,57,269,49,24,56,115,46*79
$GPGSV,3,2,12,26,48,059,43,29,27,188,48,06,25,308,41,22,18,257,33*7D
$GPGSV,3,3,12,08,14,060,,03,11,320,32,09,06,144,,16,04,311,*7C
$GPRMC,140054.00,A,4454.1740,N,09325.0143,W,000.0,128.7,300508,001.1,E,A*29
$GPGGA,140054.00,4454.1740,N,09325.0143,W,1,09,01.1,00289.8,M,-030.7,M,,*59
$GPGSA,A,3,21,15,18,24,26,29,06,22,,03,,,02.0,01.1,01.7*04
$GPGSV,3,1,12,21,75,306,40,15,59,075,46,18,57,269,49,24,56,115,46*79
$GPGSV,3,2,12,26,48,059,43,29,27,188,48,06,25,308,41,22,18,257,33*7D
$GPGSV,3,3,12,08,14,060,,03,11,320,32,09,06,144,,16,04,311,*7C
So what when wrong?
36  Using Arduino / Programming Questions / Re: Problem with transmitting IMU/GPS/Ultrasonic data over Nrf24L01 on: January 28, 2013, 07:53:59 pm
hmmmm. ok not what i was hoping to do. i would like to do is read in the first 100 chars form serial2 and out that in 1 array and print to to serial so not $$$$$$$ then next line GGGGGG etc i should be $GPRMC*** etc.

can you comment my code and show where elements are being created because i have 1 array named GpsStr[100] already i just want to stuff that one with the first 100 chars print it(for now, hopefully send ti to some struct or union and convert it and send it.)

From what you said it seems like i am making a new array and fulling it with 1 char x 100 printing it and filling it with the next char and printing that x 100 for as long as loop runs.
 i figure if im going to learn arrays and pointers and structs and unions and type casting i need to start at the beginning.

 So making 1 array and stuffing it with serial data i figured would be the simple start lol.
37  Using Arduino / Programming Questions / Re: Problem with transmitting IMU/GPS/Ultrasonic data over Nrf24L01 on: January 28, 2013, 07:36:21 pm
what am i doing wrong here.

Code:
void loop() {
  char Sr = Serial2.read();
  char GpsStr[100];
    int i;
    for (i = 0; i < sizeof(GpsStr); i = i + 1) {
    GpsStr[i] = Sr;   
    Serial.print(GpsStr[i]);
    }
  Serial.println(); 
}
output is.
Code:
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
...
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

looks like the NMEA data im looking for but vertical and incomplete lol.
38  Using Arduino / Programming Questions / Re: Problem with transmitting IMU/GPS/Ultrasonic data over Nrf24L01 on: January 28, 2013, 06:42:39 am
would switching to RF24 lib be better for all the stuff i am trying to do?
http://maniacbug.github.com/RF24/
maniacbug has also documented this quite well it seems.

it's becoming more and more clear to me i need to make some kind of structured data function to pool all my data types in and transmit them and pool them back into some structured function or database.

 i get a lot more RF control with with RF24 so i think ill port over to that now while i wait for your reply.

 so i guess what im asking is with all the IMU GPS Ultrasonic and other sensor data is it best to make some data collection thing on the bot and transmit it and pull it apart on the RX side? this is becoming a lot of data now especially with the GPS stuff that alot of NMEA data lol.

how would YOU oh sage master programer PaulS collect and store all this data for local bot use as well as send for base station use?

im enjoying this challenge tho i cant say a lot but it is rewarding and very helpful in learning programing that is for sure.
39  Using Arduino / Programming Questions / Re: Problem with transmitting IMU/GPS/Ultrasonic data over Nrf24L01 on: January 27, 2013, 10:31:31 pm
well got the first 6 anyhow

Code:
char inGPS[27];
Code:
byte inData[Mirf.payload];
    if(Mirf.dataReady()){
    do{
      Mirf.getData(inData);
      inGPS[0] =  inData[0];
      inGPS[1] =  inData[1];     
      inGPS[2] =  inData[2];
      inGPS[3] =  inData[3];
      inGPS[4] =  inData[4];
      inGPS[6] =  inData[5];
      inGPS[7] =  inData[6];
      inGPS[8] =  inData[7];
      inGPS[9] =  inData[8];
      inGPS[10] = inData[9];
      inGPS[11] = inData[10];
      inGPS[12] = inData[11];
      inGPS[12] = inData[12];
      inGPS[13] = inData[13];     
      inGPS[14] = inData[14];
      inGPS[15] = inData[15];
      inGPS[16] = inData[16];
      inGPS[17] = inData[17];
      inGPS[18] = inData[18];
      inGPS[19] = inData[19];
      inGPS[10] = inData[20];
      inGPS[21] = inData[21];
      inGPS[22] = inData[22];
      inGPS[23] = inData[23];
      inGPS[24] = inData[24];
      inGPS[25] = inData[25];
      inGPS[26] = inData[26];
      //char gps_data = *inData;
     for (int i = 0; i < 27; i++) {
      Serial.print(inGPS[i]);
spits out $GPVT amd $GPRMC etc and some other junk i cant even copy LOL much lest paste.
so inData is an array of incoming bytes = to playload size?
40  Using Arduino / Programming Questions / Re: Problem with transmitting IMU/GPS/Ultrasonic data over Nrf24L01 on: January 27, 2013, 10:03:21 pm
if into Mirf like this
Code:
char *gps_data = gps.sentence();
      Mirf.send((byte *)gps_data);

then should not out of Mirf like this
Code:
Mirf.getData(inData);
      char gps_data = *inData;
       Serial.println(gps_data);
it does print the first char a $ to the serial but that's it. or is it some kind of an array in inData like inData[sizeof(payload)] kind of deal and i need to scan the with of inData the size of payload and pull each char?
41  Using Arduino / Programming Questions / Re: Problem with transmitting IMU/GPS/Ultrasonic data over Nrf24L01 on: January 27, 2013, 09:12:16 pm
TX
Code:
void loop() {
  char *gps_data = gps.sentence();
  if (Serial2.available() > 0 ) {
    // read incoming character from GPS and feed it to NMEA type object
    if (gps.decode(Serial2.read())) {
      Mirf.setTADDR((byte *)"base1"); // set name of Reciever
      char *gps_data = gps.sentence();
      Mirf.send((byte *)gps_data);
      while(Mirf.isSending()){
      Serial.println("send GPS DAta");
      Serial.println(gps_data);
      }
      delay(10);
    }

  }
}
Serial.print output on TX side
Code:
$GPGLL,4328.5356,N,07625.7447,W,015842.800,A,D*42
send GPS DAta
$GPGSV,3,2,11,46,38,210,32,06,26,159,,20,25,242,19,13,24,313,*70
send GPS DAta
$GPGSV,3,3,11,32,23,216,,29,17,043,20,03,15,178,*4D
send GPS DAta
$GPGGA,015843.000,4328.5356,N,07625.7447,W,2,5,3.72,124.2,M,-34.2,M,0000,0000*66
send GPS DAta
$GPGLL,4328.5356,N,07625.7447,W,015843.000,A,D*4B
send GPS DAta
$GPGSV,3,2,11,46,38,210,32,06,26,159,,20,25,242,19,13,24,313,*70
send GPS DAta
$GPGSV,3,3,11,32,23,216,,29,17,043,20,03,15,178,*4D
seems to be working fine.

on the RX side however
RX
Code:
void loop(){
   byte inData[Mirf.payload];
    if(Mirf.dataReady()){
    do{
      Mirf.getData(inData);
      byte* gps_data = inData;
     
      Serial.println(*gps_data);
      delay(10);
    }
    while(!Mirf.rxFifoEmpty());
  }
}
Serial output is.
Code:
im assuming that it's coming in fine but my method of extracting chars from data ( is byte at this time)
36
36
36
36
36
im guessing it's this   byte* gps_data = inData; i though sense inData is coming in as bytes that i needed to reference gps_data as pointer to bytes and print it anyhow as a char?
42  Using Arduino / Programming Questions / Re: Problem with transmitting IMU/GPS/Ultrasonic data over Nrf24L01 on: January 27, 2013, 08:24:29 pm
Quote
gps.sentence returns a string with \0 terminate as a char * ( char ptr?).
So:
Code:
char *gps_data = gps.sentence();
Mirf.send((byte *)gps_data, strlen(gps_data));

gps_data IS a string. No need to copy it anywhere else or try to "read it to a string".

Quote
"does this guy like over complicating things a little?".
I wasn't think that at all. I was thinking "a lot".  smiley-cool
LOL. hard to believe.

anyhow thanks for the help so far. but since i went and mucked around anyhow can you tell my why the output of this is always this
output
Code:
gpsS Array contains: ««««
code
Code:
#include <nmea.h>
NMEA gps(ALL);    // GPS data connection to all sentence types
char* gpsS[76];

void setup() {
  Serial.begin(57600);
  Serial2.begin(57600);
}

void loop() {
  if (Serial2.available() > 0 ) {

    if (gps.decode(Serial2.read())) {
      for (int i = 0; i < 76; i++){
        gpsS[i] = gps.sentence();
        delay(500);
      }
    }
  }
  Serial.print("gpsS Array contains: ");
  Serial.print(gpsS[0]);
  Serial.print(gpsS[1]);
  Serial.print(gpsS[2]);
  Serial.print(gpsS[3]);
  Serial.println();
  // serial monitor spits out....  gpsS Array contains: ««««
}

43  Using Arduino / Programming Questions / Re: Problem with transmitting IMU/GPS/Ultrasonic data over Nrf24L01 on: January 27, 2013, 07:51:11 pm
Welp can check "some" sleep of the list smiley. anyhow im feeling a bit dorky more than usual i cant seem to grasp how to stuff gps.sentence into an array or some buffer.
gps.sentence returns a string with \0 terminate as a char * ( char ptr?).
so i keep getting invalid conversions from char* to char errors. so am i to understand i am dealing with output from gps.sentence that is in the form of a char ptr and need to (read) it some how into some string then convert the string into regular char array?. as im typing this i can hear your groan as you ask "does this guy like over complicating things a little?".
because i know your going to go NO you just need to reference some ptr and read the individual chars and put them into your array. or not LOL.
i just know i am gonna love your reply i just know it!

BTW thank you so much for all the help i have been learning so much from your guidance.
44  Using Arduino / Programming Questions / Re: Problem with transmitting IMU/GPS/Ultrasonic data over Nrf24L01 on: January 27, 2013, 12:46:23 pm
great  so step one char array of size to fit a gps.sentance in fill it call it with a (byte *) call, get it's count with strln() "string length?"  transmit refill the array and repeat till all the NEMA is sent.
sound like i missed anything?
45  Using Arduino / Programming Questions / Re: Problem with transmitting IMU/GPS/Ultrasonic data over Nrf24L01 on: January 27, 2013, 12:31:51 pm
so i make a char array for incoming GPS data  stuff the array and refer to it as a byte array?
(byte *)gps_data, [gps_data]that is realy a char array and (byte *) says hey hop in there and pull the value because we are the same size anyhow?
 strlen(gps_data) is something like sizeof() but it's get the string gps_data that is size of gps_data? or is the lack of sleep catching up now? lol


Pages: 1 2 [3] 4 5 ... 7