Eleftheria Karagiorgou
Published © CC BY

Hydrobot "Argolith" and Arduino Data Logging

Measuring underwater luminosity and temperature with Arduino Uno on hydrobot "Argolith"

IntermediateShowcase (no instructions)6,575
Hydrobot "Argolith" and Arduino Data Logging

Things used in this project

Hardware components

Arduino UNO
Arduino UNO
×1
adafruit assembled data logging shield
×1
Adafruit TMP36- Analog Temperature sensor
×1
Adafruit Photo cell sensor
×1

Story

Read more

Schematics

Light sensor measurement connection

Temperature sensor measurement connection

Code

Data Logging of underwater temperature and luminosity

C/C++
#include <SPI.h>
#include <SD.h>
#include <Wire.h>
#include "RTClib.h"
//Πρόγραμμα καταγραφής δεδομένων 
#define LOG_INTERVAL 30000 // καθέ πότε θα καταγράφονται τα δεδομένα
    
// Τα pin για τα ενσωματωμένα LED
#define redLEDpin 3
#define greenLEDpin 4
     
// Τα ανολογικά pin για τα δεδομένα
#define tempPin 0 //Θερμοκρασία στο 0
#define photoPin 1 //Ο αισθητήρας φωτεινότητας στο Pin Εισόδου 1
RTC_DS1307 RTC; // Καθορισμός του αντικειμένου για την μέτρηση πραγματικού χρόνου Time Clock object
     
     
// Για την σύνδεση της κάρτας μνήμης
const int chipSelect = 10;
     
// Το αρχείο που θα δημιουργηθεί στην κάρτα μνήμης
File logfile;
     

void setup() {
    Serial.begin(38400);
    Serial.println();
    
    Serial.print("Initializing SD card...");
    pinMode(10, OUTPUT);
    // Έλεγχος της κάρτας μνήμης
    if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    // Τέλειωσε
    return;
    }
    Serial.println("card initialized.");
    logfile = SD.open("Argolith.csv", FILE_WRITE); //Δημιουργία του αρχείου και άνοιγμα για να γράψουμε
     if (! logfile) {
       
    Serial.print("couldnt create file");
    }
    Serial.print("Logging to: ");
    Serial.println("Argolit.csv");
         Wire.begin();
    if (!RTC.begin()) {
    logfile.println("RTC failed");
     Serial.println("RTC failed");
    }
     
    logfile.println("Millis,Time,Temperature,Lightness,Characteristic"); //Η πρώτη γραμμή θα έχει τις ενδείξεις milliseconds, time, θερμοκρασία
     
    Serial.println("Millis,Time,Temperature,Lightness,Characteristic");
    pinMode(redLEDpin, OUTPUT);
    pinMode(greenLEDpin, OUTPUT);
    logfile.close(); //κλείνουμε το αρχείο για να γράψει τα δεδομένα
       
}
void loop() {
  logfile = SD.open("Argolith.csv", FILE_WRITE); //ξανανοίγουμε το αρχείο για να γράψουμε δεδομένα
  DateTime now; //διαβάζουμε τον χρόνο
 
  // Η καθυστέρηση για την καταγραφή του χρόνου
  delay((LOG_INTERVAL -1) - (millis() % LOG_INTERVAL));
  digitalWrite(greenLEDpin, HIGH);
 
  // Πόσα δευτερόλεπτα έχουν περάσει από την λειτουργία του Arduino
  uint32_t m = millis();
  logfile.print(m); // Γράψε το χρόνο στο αρχείο
  logfile.print(", ");
  Serial.print(m); //Γράψε στη σειριακή θύρα 
  Serial.print(", ");

// Διάβασε την χρονική στιγμή.
now = RTC.now();
// Γράψε την χρονική στιγμή στο αρχείο
logfile.print(now.year(), DEC);
logfile.print("/");
logfile.print(now.month(), DEC);
logfile.print("/");
logfile.print(now.day(), DEC);
logfile.print(" ");
logfile.print(now.hour(), DEC);
logfile.print(":");
logfile.print(now.minute(), DEC);
logfile.print(":");
logfile.print(now.second(), DEC);
Serial.print(now.year(), DEC);
Serial.print("/");
Serial.print(now.month(), DEC);
Serial.print("/");
Serial.print(now.day(), DEC);
Serial.print(" ");
Serial.print(now.hour(), DEC);
Serial.print(":");
Serial.print(now.minute(), DEC);
Serial.print(":");
Serial.print(now.second(), DEC);
delay(10);
//Ξεκίνα την καταγραφή της θερμοκρασίας
int sum=0;
for (int i=0;i<16;i++)
  {
  int tempReading = analogRead(tempPin);
  sum+=tempReading;
  }
// Μετατροπή της αναλογικής εισόδου σε θερμοκρασία
float temperatureC = sum* 0.48828125/16;
logfile.print(", ");
logfile.print(temperatureC);
Serial.print(", ");
Serial.print(temperatureC);
//Γράψε την φωτεινότητα
    int photoval = analogRead(photoPin);
    logfile.print(", ");
    logfile.print(photoval);
    Serial.print(", ");
    Serial.print (photoval);
  
    if (photoval < 10) {
      logfile.print(", ");
      logfile.println("Dark");
      Serial.println(", Dark");
      } 
  else if (photoval < 200) {
      logfile.print(", ");
      logfile.println("Dim");      
      Serial.println(", Dim");
            } 
   else if (photoval < 500) {
     logfile.print(", ");
      logfile.println("Light");     
     Serial.println(", Light");
            } 
   else if (photoval < 800) {
     logfile.print(", ");
      logfile.println("Bright");     
     Serial.println(", Bright");
            } 
    else {
          logfile.print(", ");
        logfile.println("Very bright");                
          Serial.println(", Very bright");
        }
        logfile.close();
digitalWrite(greenLEDpin, LOW);


} 

Credits

Eleftheria Karagiorgou

Eleftheria Karagiorgou

6 projects • 8 followers
Computer Science and Robotics teacher in K-12 Education, Code Girls Educator, Maker, eSafety Ambassador https://padlet.com/kareri

Comments