Wa.Te.X. the Robot Explorer
Exploring for methane, for water and the temperature on the surface of an unknown planet.
Devices & Components
1
Arduino Uno Rev3
Project description
Code
Data_Logging on Xively for temperature and ph
arduino
1/*Δημιουργήθηκε προκειμένου να μετράει θερμοκρασία αλλά και ph και να στέλνει τα στοιχεία στο Xively μέσω WiFi*/ 2 3#include <SPI.h> 4#include <WiFi.h> 5#include <HttpClient.h> 6#include <Xively.h> 7 8char ssid[] = ""; // WiFi SSID 9char pass[] = ""; // Password for WiFi SSID 10int keyIndex = 0; // your network key Index number (needed only for WEP) 11 12int status = WL_IDLE_STATUS; 13 14// To API Key του Xively προκειμένου να στείλουμε δεδομένα 15char xivelyKey[] = "It"; 16//Χively feed ID 17#define xivelyFeed 5 18//datastreams (ονομάτα καναλιών του xively 19char PhID[] = "Ph"; 20char TempID[]="Temperature"; 21 22// Pin για θερμοκρασία και για Ph 23#define PhPin A0 24#define TempPin A3 25 26 27// Define the strings for our datastream IDs 28XivelyDatastream datastreams[] = { 29 XivelyDatastream(PhID, strlen(PhID), DATASTREAM_FLOAT), 30 XivelyDatastream(TempID, strlen(TempID), DATASTREAM_FLOAT), 31}; 32// Finally, wrap the datastreams into a feed 33XivelyFeed feed(xivelyFeed, datastreams, 2 /* number of datastreams */); 34 35WiFiClient client; 36XivelyClient xivelyclient(client); 37 38void printWifiStatus() { 39 // To SSID του δικτύου 40 Serial.print("SSID: "); 41 Serial.println(WiFi.SSID()); 42 43 // Η διεύθυνση IP που πήρε η WiFi Shield 44 IPAddress ip = WiFi.localIP(); 45 Serial.print("IP Address: "); 46 Serial.println(ip); 47 48 // Η δύναμη του σήματος 49 long rssi = WiFi.RSSI(); 50 Serial.print("signal strength (RSSI):"); 51 Serial.print(rssi); 52 Serial.println(" dBm \ 53"); 54} 55//Η διαδικασία που καλείται για να επιτευχθεί η σύνδεση με το WiFi δίκτυο 56void connectWiFi() 57{ 58 // Δεν αν υπάρχει σύνδεση με την WiFi shield 59 if (WiFi.status() == WL_NO_SHIELD) 60 { 61 Serial.println("[ERROR] WiFi Shield Not Present"); 62 // Do not continue 63 while (true); 64 } 65 66 // Προσπάθει να γίνει σύνδεση 67 while ( status != WL_CONNECTED) 68 { 69 Serial.print("Attempting Connection - WPA SSID:"); 70 Serial.println(ssid); 71 72 status = WiFi.begin(ssid, pass); 73 } 74 75 // Connection successful 76 Serial.print(" Connection Successful"); 77 Serial.print(""); 78 Serial.println("-----------------------------------------------"); 79 Serial.println(""); 80} 81void setup() { 82 // put your setup code here, to run once: 83 Serial.begin(9600); 84 //pin setup 85 pinMode(PhPin, INPUT); 86 pinMode(TempPin, INPUT); 87 pinMode(13,OUTPUT); 88 Serial.println("Starting single datastream upload to Xively..."); 89 Serial.println(); 90 91 connectWiFi(); 92 printWifiStatus(); 93} 94 95 96void loop() { 97 int getReturn = xivelyclient.get(feed, xivelyKey); //Επικοινωνία με την πλατφόρμα xively 98 if(getReturn > 0){ 99 Serial.println("Ph Datastream"); 100 Serial.println(feed[0]); 101 }else Serial.println("HTTP Error"); 102 103 //Για την μέτρηση του Ph 104 unsigned long int avgValue; //Για την μέση τιμή του αισθητήρα 105 float b; 106 int buf[10],temp; 107 for(int i=0;i<10;i++) //Λήψη 10 δειγμάτων για πιο σωστή μέτρηση 108 { 109 buf[i]=analogRead(PhPin); 110 delay(10); 111 } 112 for(int i=0;i<9;i++) //Ταξινόμηση των δειγμάτων από την μικρότερη προς την μεγαλύτερη 113 { 114 for(int j=i+1;j<10;j++) 115 { 116 if(buf[i]>buf[j]) 117 { 118 temp=buf[i]; 119 buf[i]=buf[j]; 120 buf[j]=temp; 121 } 122 } 123 } 124 avgValue=0; 125 for(int i=2;i<8;i++) //Λήψη της μέσης τιμής από τα 6 δείγματα 126 avgValue+=buf[i]; 127 float phValue=(float)avgValue*5.0/1024/6; //μετατροπή της μέτρησης σε milivolt 128 phValue=3.5*phValue; 129 130 //Για την μέτρηση της θερμοκρασίας 131 int tempReading = analogRead(TempPin); 132 // Μετατροπή σε τάση 133 float voltage = tempReading * 5 / 1024.0; 134 // Μετατροπή σε θερμοκρασία 135 float celsius = (voltage - 0.5) * 100 ; 136 137 datastreams[0].setFloat(phValue); 138 datastreams[1].setFloat(celsius); 139 140 //Εκτύπωση των τιμών 141 Serial.print("Read sensor value "); 142 Serial.println(datastreams[0].getFloat()); 143 Serial.println(datastreams[1].getFloat()); 144 145 //send value to xively 146 Serial.println("Uploading it to Xively"); 147 int ret = xivelyclient.put(feed, xivelyKey); 148 //return message 149 Serial.print("xivelyclient.put returned "); 150 Serial.println(ret); 151 Serial.println(""); 152 153 154 //delay between calls 155 delay(15000); 156}
Downloadable files
Data Logging charts on Xively
Data Logging charts on Xively

Data Logging charts on Xively
Data Logging charts on Xively

Comments
Only logged in users can leave comments