Advertisement
Guest User

sensors hdw rev 2

a guest
Jun 20th, 2012
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.52 KB | None | 0 0
  1.  
  2.  
  3.  
  4.  
  5. //#include liscenses
  6.  
  7. #include <SD.h>
  8. #include <PString.h>//for pstrings
  9. #include <Streaming.h>// << << <<
  10. //#include <SoftwareSerial.h>
  11. #define chipSelect  10
  12. #define RS485RWPIN 7
  13. #define XMISSION_BUFFER_SIZE 1000
  14. //add defines for indicator LED on the final hardware revision
  15.  
  16. //insert RS485 code here
  17.  
  18. char GPSInBuf[90];
  19. char weatherInBuf[90];
  20. char radInBuf[40];
  21. char IMUInBuf[40];
  22. char GPSParseBuf[90];
  23. char weatherParseBuf[90];
  24. char radParseBuf[40];
  25. char IMUParseBuf[40];
  26. char *parseptr;
  27.  
  28. PString GPSInBuffer(GPSInBuf,90);
  29. PString weatherInBuffer(weatherInBuf,90);
  30. PString radInBuffer(radInBuf,40);
  31. PString IMUInBuffer(IMUInBuf,40);
  32.  
  33. boolean GPSParseReady = false;
  34. boolean weatherParseReady = false;
  35. boolean radParseReady = false;
  36. boolean IMUParseReady = false;
  37. //---------------------------------------
  38. //parse vars
  39. //-----------------------------------------
  40. //gps vars:
  41. uint32_t timeHHMMSS;
  42. int8_t fixQuality;
  43. float longitude,lattitude,alt,trueHeading,magneticHeading,speedKnots,speedKMH;
  44. boolean gpsFix=false;
  45. //weather vars:
  46. float barometricPressureInches,barometricPressureBars,airTemp,relativeHumidity,dewPoint;
  47. float windDirectionTrue,windDirectionMagnetic,windSpeedKnots,windSpeedMetersPerSecond;
  48. float weatherPitch,weatherRoll,weatherYaw,relativeWindChill,theoreticalWindChill;
  49. //radation vars
  50. float microSievertPerHour;
  51. int countPerMinute;
  52. //AHRS vars:
  53. float yaw,pitch,roll;
  54.  
  55. //-------------------------------------------------
  56. //transmission vars//
  57. //-------------------------------------------------
  58. char transmissionBuffer[XMISSION_BUFFER_SIZE];//large because all the data is a significant size
  59. PString transmissionString(transmissionBuffer,XMISSION_BUFFER_SIZE);
  60. long transmissionTimer=0;
  61. long LCDTimer = 0;
  62.  
  63. boolean SDCardPresent = false;
  64.  
  65. void setup(){
  66.   /*Setup is as follows:
  67.    *GPS serial 2!!!!!DO NOT USE PORT 0 FOR GPS THIS CAUSES THE SD CARD TO NOT WORK AND MANY OTHER IISUES
  68.    *IMU serial 3!!!!!REASON IS UNKNOWN AT THIS TIME
  69.    *RAD serial 0
  70.    *WTH serial 1
  71.    */  
  72.   //please see appropriate data sheets
  73.   //---------------------------------------
  74.   //dont forget to list the data sheets!@!@!@!@!@!@
  75.   //---------------------------------------
  76.   //Rad/Complete Data Set Out config BEGIN
  77.   //---------------------------------------
  78.   Serial.begin(115200);
  79.   Serial.println("Congifuration Start");  
  80.     Serial2.begin(9600);
  81.   //---------------------------------------  
  82.   //Rad/Complete Data Set Out config END
  83.  
  84.  
  85.   //weather station config
  86.   //----------------------------------
  87.   pinMode(RS485RWPIN,OUTPUT);
  88.   digitalWrite(RS485RWPIN,HIGH);
  89.   Serial1.begin(4800);
  90.   Serial.println("waiting for weather station boot");
  91.   for (int j=15;j>0;j--){
  92.     Serial.println(j);
  93.     delay(1000);
  94.   }
  95.   Serial.println("transmitting strings");
  96.   Serial1.println("$PAMTC,HEATER,A*05");//enable heater
  97.   delay(100);
  98.   Serial1.println("$PAMTC,BAUD,38400*66");//set baud rate to 38400
  99.   delay(100);
  100.   Serial1.end();
  101.   Serial1.begin(38400);
  102.   delay(100);
  103.   digitalWrite(RS485RWPIN,LOW);//Set mode to read now that config is done
  104.   Serial.println("Weather station config complete");  
  105.   //---------------------------------------  
  106.   //GPS congig
  107.   //currently this is going to run on 9600 and give default sentences
  108.  
  109.  
  110.   Serial2.println("$PSRF100,1,115200,8,1,0*05");
  111.   delay(100);//wait one second for config to take
  112.   Serial2.end();
  113.   Serial2.begin(115200);
  114.   Serial2.println("$PSRF151,01*0F");  
  115.  
  116.   //IMU config
  117.   Serial3.begin(115200);
  118.   //---------------------------------------------------------
  119.   //SD card setup
  120.   //-------------------------------------------------------------
  121.   if (!SD.begin(chipSelect)) {
  122.     Serial.println("Card failed, or not present");
  123.     // don't do anything more:
  124.  
  125.   }
  126.   else{
  127.     Serial.println("card initialized.");
  128.     SDCardPresent = true;
  129.   }
  130.   //initialize 5 hz transmission timer
  131.   delay(1000);
  132.   transmissionTimer = millis();  
  133. }
  134.  
  135. void loop(){
  136.   getString();
  137.   if(GPSParseReady == true){
  138.     parseptr = GPSParseBuf;
  139.     parseString();
  140.     GPSParseReady = false;
  141.   }
  142.   if(weatherParseReady==true){
  143.     parseptr = weatherParseBuf;
  144.     parseString();
  145.     weatherParseReady = false;
  146.   }
  147.   if(radParseReady==true){
  148.     parseptr = radParseBuf;
  149.     parseString();
  150.     radParseReady = false;
  151.   }  
  152.   if(IMUParseReady==true){
  153.     parseptr = IMUParseBuf;
  154.     parseString();
  155.     IMUParseReady = false;
  156.   }
  157.   if(millis()- transmissionTimer >=200){
  158.     transmission();
  159.     transmissionTimer = millis();
  160.   }  
  161. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement