สารบัญ:

วิธีทำ Data Logger สำหรับอุณหภูมิ PH และออกซิเจนละลายน้ำ: 11 ขั้นตอน (พร้อมรูปภาพ)
วิธีทำ Data Logger สำหรับอุณหภูมิ PH และออกซิเจนละลายน้ำ: 11 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: วิธีทำ Data Logger สำหรับอุณหภูมิ PH และออกซิเจนละลายน้ำ: 11 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: วิธีทำ Data Logger สำหรับอุณหภูมิ PH และออกซิเจนละลายน้ำ: 11 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: ทำไมเเม่ไม่บอกกันเลย😂 #แป้งวิงค์ไวท์ 2024, พฤศจิกายน
Anonim
Image
Image
ภาพ
ภาพ

วัตถุประสงค์:

  • สร้างเครื่องบันทึกข้อมูลสำหรับ ≤ $500 เก็บข้อมูลอุณหภูมิ pH และ DO พร้อมประทับเวลาและใช้การสื่อสาร I2C
  • ทำไมต้อง I2C (วงจรรวมอินเตอร์)? หนึ่งสามารถซ้อนเซ็นเซอร์ได้มากในบรรทัดเดียวกันเนื่องจากแต่ละตัวมีที่อยู่ที่ไม่ซ้ำกัน

ขั้นตอนที่ 1:

ขั้นตอนที่ 2: ซื้อชิ้นส่วนด้านล่าง:

ซื้อชิ้นส่วนด้านล่าง
ซื้อชิ้นส่วนด้านล่าง
  1. Arduino MEGA 2560, $35,
  2. อะแดปเตอร์จ่ายไฟสำหรับบอร์ด Arduino, $5.98,
  3. โมดูล LCD I2C (จอแสดงผล), $8.99,
  4. การฝ่าวงล้อมนาฬิกาแบบเรียลไทม์ (RTC), $7.5,
  5. บอร์ดฝ่าวงล้อมการ์ด MicroSD, $7.5,
  6. การ์ด SD 4GB, $6.98,
  7. DS18B20 เซ็นเซอร์ดิจิตอลแบบกันน้ำ, $9.95,
  8. หัววัดค่า pH + Kits+ บัฟเฟอร์มาตรฐาน, $149.15,
  9. โพรบ DO + Kits+ บัฟเฟอร์มาตรฐาน, $247.45,
  10. เขียงหั่นขนม สายจัมเปอร์ $7.98
  11. (ไม่บังคับ) ตัวแยกแรงดันไฟฟ้า, $24,

รวม: $510.48

* บางส่วน (เช่น กระดานทั่วไป) สามารถซื้อได้จากผู้ขายรายอื่น (eBay, ผู้ขายชาวจีน) ในราคาที่ถูกกว่า ขอแนะนำให้ใช้หัววัดค่า pH และ DO เพื่อรับจาก Atlas Scientific

* แนะนำให้ใช้มัลติมิเตอร์เพื่อตรวจสอบค่าการนำไฟฟ้าและแรงดันไฟ มีค่าใช้จ่ายประมาณ 10-15 เหรียญ (https://goo.gl/iAMDJo)

ขั้นตอนที่ 3: การเดินสายไฟ

การเดินสายไฟ
การเดินสายไฟ
  • ใช้สายจัมเปอร์/ดูปองท์เพื่อเชื่อมต่อชิ้นส่วนต่างๆ ดังแสดงในแบบร่างด้านล่าง
  • ใช้มัลติมิเตอร์เพื่อตรวจสอบการนำไฟฟ้า
  • ตรวจสอบการจ่ายแรงดันบวก (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 Clock line (SCL) และ Data line (SDA) ให้สลับโหมดโดย (1): ถอดปลั๊ก VCC, TX, RX cables, (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:
  • หรือดาวน์โหลดโค้ด (.ino) แล้วหน้าต่างใหม่จะปรากฏขึ้นใน Arduino IDE

/*

บทช่วยสอนอ้างอิง:

1. อุณหภูมิ, ORP, เครื่องบันทึกค่า pH:

2. Secured Digital (SD) Shield:

รหัสนี้จะส่งข้อมูลไปยังจอภาพอนุกรม Arduino พิมพ์คำสั่งลงในจอภาพอนุกรม Arduino เพื่อควบคุม EZO pH Circuit ในโหมด I2C

แก้ไขจากบทช่วยสอนที่อ้างอิงด้านบน ส่วนใหญ่มาจากโค้ด I2C โดย Atlas-Scientific

ปรับปรุงล่าสุด: 26 กรกฎาคม 2017 โดย Binh Nguyen

*/

#include // เปิดใช้งาน I2C

#define pH_address 99 // ค่าเริ่มต้น I2C ID number สำหรับ EZO pH Circuit

#define DO_address 97 // หมายเลข I2C เริ่มต้นสำหรับวงจร EZO DO

#include "RTClib.h" // ฟังก์ชันวันที่และเวลาโดยใช้ DS1307 RTC ที่เชื่อมต่อผ่าน I2C และ Wire lib

RTC_DS1307 rtc;

#include // สำหรับห้องสมุด SD

#include // การ์ด SD เพื่อเก็บข้อมูล

const int chipSelect = 53; // ต้องการหา Adafruit SD breakout//https://learn.adafruit.com/adafruit-micro-sd-breakout-board-card-tutorial/wiring

//DO=MISO, DI=MOSI, บน ATmega pin#: 50(MISO), 51(MOSI), 52(SCK), 53(SS)

ถ่าน logFileName = "dataLT.txt"; // แก้ไข logFileName เพื่อระบุการทดลองของคุณ เช่น PBR_01_02 datalog1

รหัสยาว = 1; //หมายเลขประจำตัวเพื่อเข้าสู่ลำดับบันทึก

#รวม

LiquidCrystal_I2C จอแอลซีดี (0x27, 20, 4);

#รวม

#รวม

#define ONE_WIRE_BUS 9 // กำหนดพิน # สำหรับโพรบวัดอุณหภูมิ

OneWire oneWire(ONE_WIRE_BUS);

เซ็นเซอร์อุณหภูมิดัลลัส (& oneWire);

DeviceAddress ProbeP = { 0x28, 0xC2, 0xE8, 0x37, 0x07, 0x00, 0x00, 0xBF }; //ที่อยู่ MAC เฉพาะสำหรับแต่ละโพรบ

ข้อมูลสตริงสตริง; // ตัวแปรหลักในการเก็บข้อมูลทั้งหมด

สตริง dataString2; // ตัวแปรชั่วคราวสำหรับเก็บอุณหภูมิ/pH/DO สำหรับการพิมพ์

ถ่านข้อมูลคอมพิวเตอร์[20]; // คำแนะนำจาก Atlas Scientific: เราสร้างอาร์เรย์อักขระ 20 ไบต์เพื่อเก็บข้อมูลขาเข้าจาก pc/mac/other

ไบต์ที่ได้รับ_from_computer=0; // เราจำเป็นต้องรู้ว่าได้รับตัวละครไปกี่ตัวแล้ว

byte serial_event=0;//แฟล็กเพื่อส่งสัญญาณเมื่อได้รับข้อมูลจาก pc/mac/other

รหัสไบต์=0; // ใช้เพื่อเก็บรหัสตอบกลับ I2C

ถ่าน pH_data[20]; // เราสร้างอาร์เรย์อักขระ 20 ไบต์เพื่อเก็บข้อมูลขาเข้าจากวงจร pH

ไบต์ in_char=0; // ใช้เป็นบัฟเฟอร์ 1 ไบต์เพื่อจัดเก็บในไบต์ที่ถูกผูกไว้จากวงจร pH

ไบต์ i=0; //ตัวนับที่ใช้สำหรับอาร์เรย์ ph_data

เวลา int_=1800; // ใช้เพื่อเปลี่ยนการหน่วงเวลาที่จำเป็นขึ้นอยู่กับคำสั่งที่ส่งไปยัง EZO Class pH Circuit

ลอย pH_float; //float var ใช้เก็บค่า float ของ pH

ถ่าน DO_data[20];

//ลอย temp_C;

การตั้งค่าเป็นโมฆะ () // การเริ่มต้นฮาร์ดแวร์

{

Serial.begin(9600); // เปิดใช้งานพอร์ตอนุกรม

Wire.begin(pH_address); // เปิดใช้งานพอร์ต I2C สำหรับโพรบ pH

Wire.begin(DO_address);

lcd.init();

lcd.begin(20, 4);

LCD.backlight();

lcd.home();

lcd.print("สวัสดี PBR!");

lcd.setCursor(0, 1);

lcd.print("กำลังเริ่มต้น…");

Serial.print("RTC คือ…");

ถ้า (! rtc.begin())

{

Serial.println("RTC: นาฬิกาเรียลไทม์…ไม่พบ");

while (1);// (Serial.println("RTC: Real-time clock…FOUND"));

}

Serial.println("วิ่ง");

Serial.print("นาฬิกาเรียลไทม์…");

ถ้า (! rtc.isrunning())

{rtc.adjust(DateTime(F(_DATE_), F(_TIME_)));

}

Serial.println("กำลังทำงาน");

lcd.setCursor(0, 0);

lcd.println("RTC: ตกลง");

Serial.print("การ์ด SD…"); // ดูว่าการ์ดมีอยู่และสามารถเริ่มต้นได้หรือไม่:

ถ้า (!SD.begin(chipSelect))

{ Serial.println("ล้มเหลว"); //อย่าทำอะไรอีก:

กลับ;

}

Serial.println("ตกลง");

lcd.setCursor(0, 1);

lcd.println("การ์ด SD: ตกลง");

Serial.print("ไฟล์บันทึก: ");

Serial.print (logFileName);

Serial.print("…");

ไฟล์ logFile = SD.open(logFileName, FILE_WRITE); // เปิดไฟล์. "datalog" และพิมพ์ส่วนหัว

ถ้า (logFile)

{

logFile.println(",,,, "); //ระบุว่ามีข้อมูลในการรันครั้งก่อน

ส่วนหัวของสตริง = "วันที่ - เวลา, อุณหภูมิ (C), pH, DO";

logFile.println (ส่วนหัว);

logFile.close();

Serial.println("พร้อม");

//Serial.println (dataString); // พิมพ์ไปยังพอร์ตอนุกรมด้วย:

}

อื่น { Serial.println ("ข้อผิดพลาดในการเปิด datalog"); } // หากไฟล์ไม่เปิดขึ้น ให้แสดงข้อผิดพลาด:

lcd.setCursor(0, 2);

lcd.print("ไฟล์บันทึก:");

lcd.println (logFileName);

ล่าช้า (1000);

sensors.begin();

sensors.setResolution (ProbeP, 10); ///10 คือความละเอียด (10 บิต)

lcd.clear();

รหัส = 0;

}

วงเป็นโมฆะ ()

{//ลูปหลัก.

dataString = สตริง (id);

dataString = สตริง (', ');

DateTime ตอนนี้ = rtc.now();

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

dataString += สตริง ('/');

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

dataString += สตริง ('/');

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

dataString += สตริง (' ');

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

dataString += สตริง (':');

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

dataString += สตริง (':');

dataString += สตริง (ตอนนี้วินาที (), ธ.ค.);

lcd.home();

lcd.print (dataString);

เซ็นเซอร์ ขออุณหภูมิ ();

displayTemperature(โพรบP);

Wire.beginTransmission(pH_address); //เรียกวงจรตามหมายเลขประจำตัว

Wire.write('r'); // ฮาร์ดโค้ด r เพื่ออ่านอย่างต่อเนื่อง

Wire.endTransmission(); // สิ้นสุดการส่งข้อมูล I2C

เวลาล่าช้า_); //รอเวลาที่ถูกต้องเพื่อให้วงจรดำเนินการตามคำสั่ง

Wire.requestFrom(pH_address, 20, 1); //เรียกวงจรและขอ 20 ไบต์ (อาจมากกว่าที่เราต้องการ)

while(Wire.available()) // มีไบต์ที่จะได้รับ

{

in_char = Wire.read(); // รับไบต์

if ((in_char > 31) && (in_char <127)) // ตรวจสอบว่าถ่านนั้นใช้งานได้หรือไม่ (พิมพ์ได้)

{

pH_data= in_char; //โหลดไบต์นี้ลงในอาร์เรย์ของเรา

ผม+=1;

}

if(in_char==0) // ถ้าเราเห็นว่าเราส่งคำสั่ง null แล้ว

{

ผม=0; //รีเซ็ตตัวนับ i เป็น 0

Wire.endTransmission(); // สิ้นสุดการส่งข้อมูล I2C

หยุดพัก; // ออกจากลูป while

}

}

serial_event=0; //รีเซ็ตแฟล็กเหตุการณ์แบบอนุกรม

dataString2 += ", ";

dataString2 += สตริง (pH_data);

Wire.beginTransmission(DO_address); //เรียกวงจรตามหมายเลขประจำตัว

Wire.write('r');

Wire.endTransmission(); //สิ้นสุดการรับส่งข้อมูล I2C

เวลาล่าช้า_); //รอเวลาที่ถูกต้องเพื่อให้วงจรทำตามคำสั่ง

Wire.requestFrom(DO_address, 20, 1); //เรียกวงจรและขอ 20 ไบต์

while(Wire.available()) // มีไบต์ที่จะได้รับหรือไม่

{

in_char = Wire.read(); // รับไบต์

if ((in_char > 31) && (in_char <127)) // ตรวจสอบว่า char ใช้งานได้หรือไม่ (พิมพ์ได้) มิฉะนั้น in_char จะมีสัญลักษณ์ที่จุดเริ่มต้นในไฟล์.txt

{ DO_data= in_char; //โหลดไบต์นี้ลงในอาร์เรย์ของเรา

ผม+=1; //incur ตัวนับสำหรับองค์ประกอบอาร์เรย์

}

ถ้า(in_char==0)

{ //ถ้าเราเห็นว่าเราส่งคำสั่ง null ไปแล้ว

ผม=0; //รีเซ็ตตัวนับ i เป็น 0

Wire.endTransmission(); // สิ้นสุดการส่งข้อมูล I2C

หยุดพัก; // ออกจากลูป while

}

}

serial_event=0; //รีเซ็ตแฟล็กเหตุการณ์ซีเรียล

pH_float = atof (pH_data);

dataString2 += ", ";

dataString2 += สตริง (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); // เปิดไฟล์. โปรดทราบว่าสามารถเปิดไฟล์ได้ครั้งละหนึ่งไฟล์เท่านั้น ดังนั้นคุณต้องปิดไฟล์นี้ก่อนที่จะเปิดไฟล์อื่น

if (dataFile) // หากไฟล์พร้อมใช้งาน ให้เขียนไปที่:

{

dataFile.println (dataString);

dataFile.close();

Serial.println (dataString); // พิมพ์ไปยังพอร์ตอนุกรมด้วย:

}

อื่น { Serial.println ("เกิดข้อผิดพลาดในการเปิดไฟล์ datalog"); } // หากไฟล์ไม่เปิดขึ้น ให้แสดงข้อผิดพลาด:

lcd.setCursor(0, 3);

lcd.print("วิ่ง(x5m):");

lcd.setCursor(15, 3);

lcd.print(id);

ไอดี ++; // เพิ่มหนึ่ง ID การวนซ้ำครั้งต่อไป

dataString = "";

ล่าช้า (300000); //ล่าช้า 5 นาที = 5*60*1000 ms

lcd.clear();

} // จบลูปหลัก

เป็นโมฆะ displayTemperature (DeviceAddress deviceAddress)

{

float tempC = sensors.getTempC (ที่อยู่อุปกรณ์);

ถ้า (tempC == -127.00) lcd.print ("อุณหภูมิผิดพลาด");

อื่น dataString2 = สตริง (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 ให้มาอีกครั้ง เปิด Serial Monitor และป้อนคำสั่งที่เหมาะสม

ขั้นตอนที่ 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 Enrichment and Delivery (ACED),” จากกระทรวงพลังงานสหรัฐ สำนักงานประสิทธิภาพพลังงานและพลังงานทดแทนเป้าหมายเชื้อเพลิงชีวภาพสาหร่ายและผลิตภัณฑ์ชีวภาพ ผมขอขอบคุณ Dr. Bruce E. Rittmann ที่ Biodesign Swette Center for Environmental Biotechnology, Arizona State Univesity ที่ให้โอกาสผมในการดัดแปลงอุปกรณ์อิเล็กทรอนิกส์และ Arduino ฉันได้รับการฝึกฝนด้านวิศวกรรมสิ่งแวดล้อม ส่วนใหญ่เป็นวิชาเคมี จุลชีววิทยานิดหน่อย

แนะนำ: