Πίνακας περιεχομένων:

Πώς να φτιάξετε έναν καταγραφέα δεδομένων για τη θερμοκρασία, το PH και το διαλυμένο οξυγόνο: 11 βήματα (με εικόνες)
Πώς να φτιάξετε έναν καταγραφέα δεδομένων για τη θερμοκρασία, το PH και το διαλυμένο οξυγόνο: 11 βήματα (με εικόνες)

Βίντεο: Πώς να φτιάξετε έναν καταγραφέα δεδομένων για τη θερμοκρασία, το PH και το διαλυμένο οξυγόνο: 11 βήματα (με εικόνες)

Βίντεο: Πώς να φτιάξετε έναν καταγραφέα δεδομένων για τη θερμοκρασία, το PH και το διαλυμένο οξυγόνο: 11 βήματα (με εικόνες)
Βίντεο: ΜΟΥ ΕΠΕΣΕ ΤΟ ΣΑΓΟΝΙ ΜΟΛΙΣ ΕΙΔΑ ΤΗ JOSEPHINE 2024, Ιούλιος
Anonim
Image
Image
Εικόνα
Εικόνα

Στόχοι:

  • Δημιουργήστε έναν καταγραφέα δεδομένων για ≤ 500 $. Αποθηκεύει δεδομένα για τη θερμοκρασία, το pH και το DO με χρονική σφραγίδα και χρησιμοποιώντας επικοινωνία I2C.
  • Γιατί I2C (Inter-Integrated Circuit); Κάποιος μπορεί να στοιβάζει τόσους αισθητήρες στην ίδια γραμμή δεδομένου ότι καθένας από αυτούς έχει μια μοναδική διεύθυνση.

Βήμα 1:

Βήμα 2: Αγοράστε τα παρακάτω μέρη:

Αγοράστε τα παρακάτω μέρη
Αγοράστε τα παρακάτω μέρη
  1. Arduino MEGA 2560, $ 35,
  2. Προσαρμογέας ρεύματος για πίνακα Arduino, 5,98 $,
  3. Μονάδα LCD I2C (οθόνη), 8,99 $,
  4. Ξεκλείδωμα ρολογιού σε πραγματικό χρόνο (RTC), $ 7,5,
  5. MicroSD card breakout board, $ 7,5,
  6. Κάρτα SD 4 GB, 6,98 $,
  7. Αδιάβροχος ψηφιακός αισθητήρας DS18B20, 9,95 $,
  8. Ανιχνευτής pH + Kits + Standard buffers, $ 149,15,
  9. DO probe + Kits + Standard buffers, 247,45 $,
  10. Breadboard, καλώδιο άλτης, 7,98 $,
  11. (Προαιρετικό) Μονωτής τάσης, $ 24,

Σύνολο: $ 510,48

* Ορισμένα ανταλλακτικά (όπως ο γενικός πίνακας) θα μπορούσαν να αγοραστούν από άλλους προμηθευτές (eBay, Κινέζος πωλητής) σε χαμηλότερη τιμή. Συνιστώνται ανιχνευτές pH και DO για λήψη από την Atlas Scientific.

* Συνιστάται ένα πολύμετρο για τον έλεγχο της αγωγιμότητας και της τάσης. Κοστίζει περίπου 10-15 $ (https://goo.gl/iAMDJo)

Βήμα 3: Καλωδίωση

Καλωδίωση
Καλωδίωση
  • Χρησιμοποιήστε καλώδια jumper/DuPont για να συνδέσετε τα μέρη όπως φαίνεται στο παρακάτω σκίτσο.
  • Χρησιμοποιήστε το πολύμετρο για να ελέγξετε την αγωγιμότητα.
  • Ελέγξτε την παροχή θετικής τάσης (VCC) και τη γείωση (GND) (είναι εύκολο να συγχέετε εάν δεν είστε εξοικειωμένοι με το κύκλωμα)
  • Συνδέστε το τροφοδοτικό και ελέγξτε την ένδειξη ισχύος σε κάθε τμήμα. Σε αμφιβολίες, χρησιμοποιήστε το πολύμετρο για να ελέγξετε την τάση μεταξύ VCC και GND να είναι (5V)

Βήμα 4: Προετοιμάστε τα PH, DO Circuits, SD Card

Προετοιμάστε τα PH, DO Circuits, SD Card
Προετοιμάστε τα PH, DO Circuits, SD Card
  1. Μεταβείτε σε I2C για κυκλώματα pH και DO
  2. Οι διακοπές pH και DO αποστέλλονται με σειριακή επικοινωνία ως προεπιλεγμένη λειτουργία μετάδοσης/λήψης (TX/RX). Για χρήση της γραμμής ρολογιού λειτουργίας I2C (SCL) και της γραμμής δεδομένων (SDA), εναλλαγή λειτουργίας κατά (1): αποσυνδέστε καλώδια VCC, TX, RX, (2): μεταβείτε TX στο Ground for Probe, PGND (όχι GND), (3) συνδέστε το VCC στο κύκλωμα, (4): περιμένετε να αλλάξει το LED από πράσινο σε μπλε. Περισσότερες λεπτομέρειες ελέγξτε στη σελίδα 39 (Φύλλο δεδομένων για κύκλωμα pH,
  3. Κάντε το ίδιο βήμα με το κύκλωμα DO
  4. (αν γνωρίζετε πώς να ανεβάσετε το δείγμα κώδικα στον πίνακα, μπορείτε να το κάνετε μέσω Serial monitor)
  5. Μορφοποίηση κάρτας SD σε μορφή FAT

Βήμα 5: Προετοιμασία λογισμικού

Προετοιμασία Λογισμικού
Προετοιμασία Λογισμικού
Προετοιμασία Λογισμικού
Προετοιμασία Λογισμικού
Προετοιμασία Λογισμικού
Προετοιμασία Λογισμικού
Προετοιμασία Λογισμικού
Προετοιμασία Λογισμικού
  1. Κατεβάστε το Arduino Integrated Development Environment (IDE),
  2. Εγκατάσταση βιβλιοθήκης στο Arduino IDE:
  3. Τα περισσότερα από αυτά έρχονται με λογισμικό Arduino. Το LiquidCrystal_I2C.h είναι διαθέσιμο μέσω του GitHub
  4. Εγκαταστήστε το πρόγραμμα οδήγησης για USB. Για γνήσιο Arduino, μπορεί να μην χρειάζεται να εγκαταστήσετε ένα. Για ένα γενικό, πρέπει να εγκαταστήσετε το πρόγραμμα οδήγησης CH340 (GitHub:
  5. Ελέγξτε εάν συνδέετε σωστά την πλακέτα εκτελώντας μια δοκιμή LED που αναβοσβήνει
  6. Πώς να βρείτε τη διεύθυνση MAC της ψηφιακής θερμοκρασίας 18B20. Χρησιμοποιώντας το πρότυπο σαρωτή I2C στο Arduino IDE με τον αισθητήρα συνδεδεμένο. Κάθε συσκευή έχει μια μοναδική διεύθυνση MAC, ώστε να μπορείτε να χρησιμοποιήσετε τόσους αισθητήρες θερμοκρασίας με μία κοινή γραμμή (#9). Το 18B20 χρησιμοποιεί ένα καλώδιο I2C, επομένως είναι μια ειδική περίπτωση μεθόδου επικοινωνίας I2C. Παρακάτω είναι μια μέθοδος για να βρείτε το MAC - Medical Access Control ("ROM" όταν εκτελείτε την παρακάτω διαδικασία).

Βήμα 6: Ξεκινήστε την κωδικοποίηση

Ξεκινήστε την κωδικοποίηση
Ξεκινήστε την κωδικοποίηση
  • Αντιγράψτε επικολλήστε τον παρακάτω κώδικα στο Arduino IDE:
  • Or κατεβάστε τον κωδικό (.ino) και θα εμφανιστεί ένα νέο παράθυρο στο Arduino IDE.

/*

Μαθήματα αναφοράς:

1. Θερμοκρασία, ORP, καταγραφέας pH:

2. Ασφαλής ψηφιακή (SD) ασπίδα:

Αυτός ο κωδικός θα εξάγει δεδομένα στη σειριακή οθόνη Arduino. Πληκτρολογήστε εντολές στη σειριακή οθόνη Arduino για τον έλεγχο του κυκλώματος pH EZO σε λειτουργία I2C.

Τροποποιήθηκε από τα αναφερόμενα σεμινάρια παραπάνω, κυρίως από τον κώδικα I2C από την Atlas-Scientific

Τελευταία ενημέρωση: 26 Ιουλίου 2017 από Binh Nguyen

*/

#include // ενεργοποίηση I2C.

#define pH_address 99 // default I2C ID number for EZO pH Circuit.

#define DO_address 97 // προεπιλεγμένος αριθμός I2C ID για EZO DO Circuit.

#include "RTClib.h" // Ημερομηνία και ώρα λειτουργίες χρησιμοποιώντας ένα RTC DS1307 συνδεδεμένο μέσω I2C και Wire lib

RTC_DS1307 rtc;

#include // Για βιβλιοθήκη SD

#include // κάρτα SD για αποθήκευση δεδομένων

const int chipSelect = 53; // πρέπει να καταλάβουμε για το Adafruit SD breakout //

// DO = MISO, DI = MOSI, στην καρφίτσα ATmega#: 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS)

char logFileName = "dataLT.txt"; // τροποποιήστε το logFileName για να προσδιορίσετε το πείραμά σας, για exampe PBR_01_02, datalog1

μακρύ id = 1; // τον αριθμό id για εισαγωγή της σειράς καταγραφής

#περιλαμβάνω

LiquidCrystal_I2C LCD (0x27, 20, 4);

#περιλαμβάνω

#περιλαμβάνω

#define ONE_WIRE_BUS 9 // ορίστε τον πείρο # για τον αισθητήρα θερμοκρασίας

OneWire oneWire (ONE_WIRE_BUS).

Αισθητήρες θερμοκρασίας Dallas (& oneWire);

DeviceAddress ProbeP = {0x28, 0xC2, 0xE8, 0x37, 0x07, 0x00, 0x00, 0xBF}; // διεύθυνση MAC, μοναδική για κάθε καθετήρα

String dataString; // η κύρια παραλλαγή για την αποθήκευση όλων των δεδομένων

String dataString2; // μια προσωρινή παραλλαγή για αποθήκευση θερμοκρασίας/pH/DO για εκτύπωση

δεδομένα υπολογιστή char [20]; // οδηγίες από την Atlas Scientific: δημιουργούμε έναν πίνακα χαρακτήρων 20 byte για να κρατά τα εισερχόμενα δεδομένα από έναν υπολογιστή/mac/άλλο.

byte دریافت_από_ υπολογιστή = 0; // πρέπει να γνωρίζουμε πόσοι χαρακτήρες έχουν ληφθεί.

byte serial_event = 0; // μια σημαία για σήμα όταν έχουν ληφθεί δεδομένα από τον υπολογιστή/mac/other.

κωδικός byte = 0; // χρησιμοποιείται για τη διατήρηση του κωδικού απόκρισης I2C.

char pH_data [20]; // κάνουμε έναν πίνακα χαρακτήρων 20 byte για να συγκρατούμε τα εισερχόμενα δεδομένα από το κύκλωμα pH.

byte in_char = 0; // χρησιμοποιείται ως buffer 1 byte για αποθήκευση σε δεσμευμένα byte από το κύκλωμα pH.

byte i = 0; // μετρητής που χρησιμοποιείται για τον πίνακα ph_data.

int time_ = 1800; // χρησιμοποιείται για την αλλαγή της απαιτούμενης καθυστέρησης ανάλογα με την εντολή που αποστέλλεται στο κύκλωμα pH κλάσης EZO.

float pH_float? // float var που χρησιμοποιείται για να κρατήσει την τιμή float του pH.

char DO_data [20];

// float temp_C;

void setup () // προετοιμασία υλικού.

{

Serial.begin (9600); // ενεργοποίηση σειριακής θύρας.

Wire.begin (pH_address); // ενεργοποίηση θύρας I2C για ανιχνευτή pH

Wire.begin (DO_address);

lcd.init ();

lcd.αρχή (20, 4);

lcd. backlight ();

lcd.home ();

lcd.print ("Γεια σου PBR!");

lcd.setCursor (0, 1);

lcd.print ("Αρχικοποίηση …");

Serial.print ("RTC is…");

εάν (! rtc.begin ())

{

Serial.println ("RTC: Ρολόι σε πραγματικό χρόνο … ΔΕΝ ΒΡΗΚΕ");

ενώ (1); // (Serial.println ("RTC: Ρολόι σε πραγματικό χρόνο … ΒΡΗΚΕ"));

}

Serial.println ("RUNNING");

Serial.print ("Ρολόι σε πραγματικό χρόνο …");

εάν (! rtc.isrunning ())

{rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)));

}

Serial.println ("ΕΡΓΑΣΙΑ");

lcd.setCursor (0, 0);

lcd.println ("RTC: OK");

Serial.print ("κάρτα SD …"); // δείτε αν η κάρτα είναι παρούσα και μπορεί να προετοιμαστεί:

εάν (! SD.begin (chipSelect))

{Serial.println ("απέτυχε"); // μην κάνετε τίποτα περισσότερο:

ΕΠΙΣΤΡΟΦΗ;

}

Serial.println ("OK");

lcd.setCursor (0, 1);

lcd.println ("Κάρτα SD: ΟΚ");

Serial.print ("Αρχείο καταγραφής:");

Serial.print (logFileName);

Serial.print ("…");

Αρχείο logFile = SD.open (logFileName, FILE_WRITE); // ανοίξτε το αρχείο. "datalog" και εκτυπώστε την κεφαλίδα

αν (logFile)

{

logFile.println (",,,"); // υποδεικνύει ότι υπήρχαν δεδομένα στην προηγούμενη εκτέλεση

String header = "Date -Time, Temp (C), pH, DO";

logFile.println (κεφαλίδα);

logFile.close ();

Serial.println ("ΕΤΟΙΜΟ");

//Serial.println(dataString); // εκτύπωση και στη σειριακή θύρα:

}

else {Serial.println ("σφάλμα ανοίγματος καταλόγου"); } // εάν το αρχείο δεν είναι ανοιχτό, εμφανίστε ένα σφάλμα:

lcd.setCursor (0, 2);

lcd.print ("Αρχείο καταγραφής:");

lcd.println (logFileName);

καθυστέρηση (1000)?

sensors.begin ();

sensors.setResolution (ProbeP, 10); // 10 είναι η ανάλυση (10bit)

lcd.clear ();

id = 0;

}

κενός βρόχος ()

{// ο κύριος βρόχος.

dataString = String (id);

dataString = String (',');

DateTime now = rtc.now ();

dataString = String (now.year (), DEC);

dataString += String ('/');

dataString += String (τώρα.μηνας (), DEC);

dataString += String ('/');

dataString += String (now.day (), DEC);

dataString += String ('');

dataString += String (now.hour (), DEC);

dataString += String (':');

dataString += String (τώρα.minute (), DEC);

dataString += String (':');

dataString += String (now.second (), DEC);

lcd.home ();

lcd.print (dataString);

sensors.requestTemperatures ();

displayTemperature (ProbeP);

Wire.beginTransmission (pH_address); // καλέστε το κύκλωμα με τον αριθμό ID του

Wire.write ('r'); // σκληρός κώδικας r για συνεχή ανάγνωση

Wire.endTransmission (); // τερματισμός της μετάδοσης δεδομένων I2C.

χρόνος καθυστέρησης_); // περιμένετε το σωστό χρονικό διάστημα μέχρι το κύκλωμα να ολοκληρώσει τις οδηγίες του.

Wire.requestFrom (pH_address, 20, 1)? // καλέστε το κύκλωμα και ζητήστε 20 bytes (αυτό μπορεί να είναι περισσότερο από αυτό που χρειαζόμαστε)

ενώ (Wire.available ()) // υπάρχουν byte για λήψη

{

in_char = Wire.read (); // λάβετε ένα byte.

if ((in_char> 31) && (in_char <127)) // ελέγξτε αν ο χαρακτήρας είναι χρήσιμος (εκτυπώσιμος)

{

pH_data = in_char; // φορτώστε αυτό το byte στον πίνακα μας.

i+= 1;

}

εάν (in_char == 0) // αν δούμε ότι μας έχει σταλεί μια μηδενική εντολή.

{

i = 0; // επαναφέρετε τον μετρητή i στο 0.

Wire.endTransmission (); // τερματισμός της μετάδοσης δεδομένων I2C.

Διακοπή; // έξοδο από τον βρόχο while.

}

}

serial_event = 0; // επαναφέρετε τη σημαία σειριακού συμβάντος.

dataString2 += ",";

dataString2 += String (pH_data);

Wire.beginTransmission (DO_address); // καλέστε το κύκλωμα με τον αριθμό ID του

Wire.write ('r');

Wire.endTransmission (); // τερματισμός της μετάδοσης δεδομένων I2C

χρόνος καθυστέρησης_); // περιμένετε το σωστό χρονικό διάστημα μέχρι το κύκλωμα να ολοκληρώσει τις οδηγίες του

Wire.requestFrom (DO_address, 20, 1)? // καλέστε το κύκλωμα και ζητήστε 20 byte

ενώ (Wire.available ()) // υπάρχουν byte για λήψη.

{

in_char = Wire.read (); // λάβετε ένα byte.

εάν ((in_char> 31) && (in_char <127)) // ελέγξτε αν ο χαρακτήρας είναι χρήσιμος (εκτυπώσιμος), διαφορετικά το in_char περιέχει ένα σύμβολο στην αρχή στο αρχείο.txt

{DO_data = in_char; // φορτώστε αυτό το byte στον πίνακα μας

i+= 1; // πραγματοποιήστε τον μετρητή για το στοιχείο πίνακα

}

αν (in_char == 0)

{// εάν δούμε ότι μας έχει σταλεί μια μηδενική εντολή

i = 0; // επαναφέρετε τον μετρητή i στο 0.

Wire.endTransmission (); // τερματισμός της μετάδοσης δεδομένων I2C.

Διακοπή; // έξοδο από τον βρόχο while.

}

}

serial_event = 0; // επαναφέρετε τη σημαία σειριακού συμβάντος

pH_float = atof (pH_data);

dataString2 += ",";

dataString2 += String (DO_data);

lcd.setCursor (0, 1);

lcd.print ("Θερμοκρασία/ pH/ DO");

lcd.setCursor (0, 2);

lcd.print (dataString2);

dataString += ',';

dataString += dataString2;

Αρχείο dataFile = SD.open (logFileName, FILE_WRITE); // ανοίξτε το αρχείο. Σημειώστε ότι μόνο ένα αρχείο μπορεί να είναι ανοιχτό κάθε φορά, οπότε πρέπει να το κλείσετε πριν ανοίξετε ένα άλλο.

εάν (dataFile) // εάν το αρχείο είναι διαθέσιμο, γράψτε σε αυτό:

{

dataFile.println (dataString);

dataFile.close ();

Serial.println (dataString); // εκτύπωση και στη σειριακή θύρα:

}

else {Serial.println ("σφάλμα κατά το άνοιγμα αρχείου καταλόγου"); } // εάν το αρχείο δεν είναι ανοιχτό, εμφανίστε ένα σφάλμα:

lcd.setCursor (0, 3);

lcd.print ("Τρέξιμο (x5m):");

lcd.setCursor (15, 3);

lcd.print (id);

id ++; // αύξηση ενός αναγνωριστικού στην επόμενη επανάληψη

dataString = "";

καθυστέρηση (300000)? // καθυστέρηση 5 λεπτά = 5*60*1000 ms

lcd.clear ();

} // τερματισμός κύριου βρόχου

void displayTemperature (DeviceAddress deviceAddress)

{

float tempC = sensors.getTempC (deviceAddress);

if (tempC == -127.00) lcd.print ("Σφάλμα θερμοκρασίας");

else dataString2 = String (tempC);

} // ο κωδικός τελειώνει εδώ

  • Επιλέξτε τη σωστή θύρα COM μέσω του Arduino IDE στην περιοχή Εργαλεία/θύρα
  • Επιλέξτε τον σωστό πίνακα Arduino. Χρησιμοποίησα το Mega 2560 γιατί έχει περισσότερη εσωτερική μνήμη. Το Arduino Nano ή το Uno λειτουργεί καλά με αυτήν τη ρύθμιση.
  • Ελέγξτε και κωδικοποιήστε και ανεβάστε κώδικα

Βήμα 7: Αποτελέσματα σχετικά με την καλωδίωση (μπορεί να βελτιωθεί) και την οθόνη LCD

Αποτελέσματα σχετικά με την καλωδίωση (μπορεί να βελτιωθεί) και την οθόνη LCD
Αποτελέσματα σχετικά με την καλωδίωση (μπορεί να βελτιωθεί) και την οθόνη LCD
Αποτελέσματα σχετικά με την καλωδίωση (μπορεί να βελτιωθεί) και την οθόνη LCD
Αποτελέσματα σχετικά με την καλωδίωση (μπορεί να βελτιωθεί) και την οθόνη LCD
Αποτελέσματα σχετικά με την καλωδίωση (μπορεί να βελτιωθεί) και την οθόνη LCD
Αποτελέσματα σχετικά με την καλωδίωση (μπορεί να βελτιωθεί) και την οθόνη LCD
Αποτελέσματα σχετικά με την καλωδίωση (μπορεί να βελτιωθεί) και την οθόνη LCD
Αποτελέσματα σχετικά με την καλωδίωση (μπορεί να βελτιωθεί) και την οθόνη LCD
  • Σημείωση: Συνάντησα τον θόρυβο από τον αισθητήρα DO στον ανιχνευτή pH μετά από 2-3 μήνες συνεχούς λειτουργίας. Σύμφωνα με την Atlas Scientific, συνιστάται ένας απομονωτής τάσης όταν η τιμή του pH και της αγωγιμότητας λειτουργούν μαζί. Περισσότερες λεπτομέρειες υπάρχουν στη σελίδα 9 (https://goo.gl/d62Rqv)
  • Τα καταγεγραμμένα δεδομένα (το πρώτο έχει μη εκτυπωμένους χαρακτήρες πριν από τα δεδομένα pH και DO). Φιλτράρισα σε κώδικα επιτρέποντας μόνο εκτυπώσιμους χαρακτήρες.

Βήμα 8: Εισαγωγή δεδομένων και δημιουργία γραφήματος

Εισαγωγή δεδομένων και δημιουργία γραφήματος
Εισαγωγή δεδομένων και δημιουργία γραφήματος
Εισαγωγή δεδομένων και δημιουργία γραφήματος
Εισαγωγή δεδομένων και δημιουργία γραφήματος
Εισαγωγή δεδομένων και δημιουργία γραφήματος
Εισαγωγή δεδομένων και δημιουργία γραφήματος
  1. Εισαγωγή δεδομένων από κείμενο στην καρτέλα DATA (Excel 2013)
  2. Διαχωρίστε τα δεδομένα με κόμμα (γι 'αυτό είναι χρήσιμο να έχετε κόμματα μετά από κάθε εισαγωγή δεδομένων)
  3. Σχεδιάστε τα δεδομένα. Κάθε παρακάτω στοιχείο έχει περίπου 1700 πόντους. Το διάστημα μέτρησης είναι 5 λεπτά (ρυθμιζόμενο). Το ελάχιστο για τα κυκλώματα DO και pH για την ανάγνωση των δεδομένων είναι 1,8 δευτερόλεπτα.

Βήμα 9: Βαθμονόμηση

Βαθμονόμηση
Βαθμονόμηση
  1. Ο ψηφιακός αισθητήρας θερμοκρασίας (18B20) μπορεί να βαθμονομηθεί προσαρμόζοντας τη διαφορά απευθείας στο. Διαφορετικά, εάν η αντιστάθμιση και η κλίση απαιτούν βαθμονόμηση, μπορείτε να το κάνετε αλλάζοντας τιμές στη γραμμή #453, DallasTemperature.cpp στο φάκελο / libraries / DallasTemperature.
  2. Για ανιχνευτές pH και DO, μπορείτε να βαθμονομήσετε τους ανιχνευτές με συνοδευτικά διαλύματα. Πρέπει να χρησιμοποιήσετε το δείγμα κώδικα της Atlas Scientific και να ακολουθήσετε τις οδηγίες αυτού του αρχείου.
  3. Ακολουθήστε τις σελίδες 26 και 50 για τον ανιχνευτή pH (https://goo.gl/d62Rqv) για βαθμονόμηση και αντιστάθμιση θερμοκρασίας, καθώς και τις σελίδες 7-8 και 50 για τον αισθητήρα DO (https://goo.gl/mA32mp). Πρώτον, ανεβάστε ξανά τον γενικό κώδικα που παρέχεται από το Atlas, ανοίξτε τη Σειριακή οθόνη και πληκτρολογήστε μια σωστή εντολή.

Βήμα 10: Πάρα πολύ καλωδίωση;

  1. Μπορείτε να εξαλείψετε την κάρτα SD και τη μονάδα ρολογιού πραγματικού χρόνου χρησιμοποιώντας το Dragino Yun Shield για πίνακες Arduino (https://goo.gl/J9PBTH). Ο κώδικας έπρεπε να τροποποιηθεί για να συνεργαστεί με το Yun Shield. Εδώ είναι ένα καλό μέρος για να ξεκινήσετε (https://goo.gl/c1x8Dm)
  2. Εξακολουθεί να υπάρχει πάρα πολύ καλωδίωση: η Atlas Scientific έκανε έναν οδηγό για τα κυκλώματα EZO (https://goo.gl/dGyb12) και τον πίνακα χωρίς κόλληση (https://goo.gl/uWF51n). Η ενσωμάτωση της ψηφιακής θερμοκρασίας 18B20 είναι εδώ (https://goo.gl/ATcnGd). Πρέπει να είστε εξοικειωμένοι με τις εντολές στο Raspbian (μια έκδοση του Debian Linux) που εκτελούνται στο Raspberry Pi (https://goo.gl/549xvk)

Βήμα 11: Αναγνώριση:

Αυτό είναι το δευτερεύον έργο μου κατά τη διάρκεια της μεταδιδακτορικής μου έρευνας το οποίο δούλεψα σε έναν εκ των προτέρων φωτοαντιδραστήρα για την καλλιέργεια μικροφυκών. Έτσι σκέφτηκα ότι είναι απαραίτητο να πιστέψουμε ότι τα μέρη έχουν παράσχει προϋποθέσεις για να συμβεί αυτό. Πρώτον, η επιχορήγηση, DE-EE0007093: "Atmospheric CO2 En εμπλουτισμός και παράδοση (ACED)", από το Υπουργείο Ενέργειας των ΗΠΑ, Office of Energy Efficiency and Renewable Energy Targeted Algal Biofuels and Bioproducts. Ευχαριστώ τον Δρ Bruce E. Rittmann στο Biodesign Swette Center for Environmental Biotechnology, Arizona State Univesity που μου έδωσε την ευκαιρία να ασχοληθώ με τα ηλεκτρονικά και το Arduino. Εκπαιδεύτηκα στη μηχανική περιβάλλοντος, κυρίως χημεία, λίγο μικροβιολογία.

Συνιστάται: