สารบัญ:
- ขั้นตอนที่ 1:
- ขั้นตอนที่ 2: ซื้อชิ้นส่วนด้านล่าง:
- ขั้นตอนที่ 3: การเดินสายไฟ
- ขั้นตอนที่ 4: เตรียม PH, DO Circuits, SD Card
- ขั้นตอนที่ 5: เตรียมซอฟต์แวร์
- ขั้นตอนที่ 6: เริ่มการเข้ารหัส
- ขั้นตอนที่ 7: ผลลัพธ์ในการเดินสาย (สามารถปรับปรุงได้) และจอ LCD
- ขั้นตอนที่ 8: นำเข้าข้อมูลและสร้างกราฟ
- ขั้นตอนที่ 9: การปรับเทียบ
- ขั้นตอนที่ 10: การเดินสายมากเกินไป?
- ขั้นตอนที่ 11: การรับทราบ:
วีดีโอ: วิธีทำ Data Logger สำหรับอุณหภูมิ PH และออกซิเจนละลายน้ำ: 11 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:06
วัตถุประสงค์:
- สร้างเครื่องบันทึกข้อมูลสำหรับ ≤ $500 เก็บข้อมูลอุณหภูมิ pH และ DO พร้อมประทับเวลาและใช้การสื่อสาร I2C
- ทำไมต้อง I2C (วงจรรวมอินเตอร์)? หนึ่งสามารถซ้อนเซ็นเซอร์ได้มากในบรรทัดเดียวกันเนื่องจากแต่ละตัวมีที่อยู่ที่ไม่ซ้ำกัน
ขั้นตอนที่ 1:
ขั้นตอนที่ 2: ซื้อชิ้นส่วนด้านล่าง:
- Arduino MEGA 2560, $35,
- อะแดปเตอร์จ่ายไฟสำหรับบอร์ด Arduino, $5.98,
- โมดูล LCD I2C (จอแสดงผล), $8.99,
- การฝ่าวงล้อมนาฬิกาแบบเรียลไทม์ (RTC), $7.5,
- บอร์ดฝ่าวงล้อมการ์ด MicroSD, $7.5,
- การ์ด SD 4GB, $6.98,
- DS18B20 เซ็นเซอร์ดิจิตอลแบบกันน้ำ, $9.95,
- หัววัดค่า pH + Kits+ บัฟเฟอร์มาตรฐาน, $149.15,
- โพรบ DO + Kits+ บัฟเฟอร์มาตรฐาน, $247.45,
- เขียงหั่นขนม สายจัมเปอร์ $7.98
- (ไม่บังคับ) ตัวแยกแรงดันไฟฟ้า, $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
- เปลี่ยนเป็น I2C สำหรับวงจร pH และ DO
- ค่า 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,
- ทำขั้นตอนเดียวกันกับวงจร DO
- (ถ้ารู้วิธีอัพโหลดโค้ดตัวอย่างขึ้นบอร์ดก็สามารถทำได้ผ่าน Serial monitor)
- ฟอร์แมตการ์ด SD เป็นรูปแบบ FAT
ขั้นตอนที่ 5: เตรียมซอฟต์แวร์
- ดาวน์โหลด Arduino Integrated Development Environment (IDE),
- ติดตั้งไลบรารี่ลงใน Arduino IDE:
- ส่วนใหญ่มาพร้อมกับซอฟต์แวร์ Arduino LiquidCrystal_I2C.h พร้อมใช้งานผ่าน GitHub
- ติดตั้งไดรเวอร์สำหรับ USB สำหรับ Arduino ของแท้ คุณไม่จำเป็นต้องติดตั้ง สำหรับโปรแกรมทั่วไป คุณต้องติดตั้งไดรเวอร์ CH340 (GitHub:
- ตรวจสอบว่าคุณเชื่อมต่อบอร์ดอย่างถูกต้องหรือไม่โดยเรียกใช้การทดสอบ LED ที่กะพริบ
- วิธีค้นหาที่อยู่ 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
- หมายเหตุ: ฉันพบสัญญาณรบกวนจากโพรบ DO ไปยังโพรบ pH หลังจากการทำงานต่อเนื่อง 2-3 เดือน จากข้อมูลของ Atlas Scientific แนะนำให้ใช้ตัวแยกแรงดันไฟฟ้าแบบอินไลน์เมื่อ pH โพรบวัดค่าการนำไฟฟ้าทำงานร่วมกัน รายละเอียดเพิ่มเติมหน้า 9 (https://goo.gl/d62Rqv)
- ข้อมูลที่บันทึกไว้ (อันแรกมีอักขระที่ไม่ได้พิมพ์ก่อนข้อมูล pH และ DO) ฉันกรองเป็นโค้ดโดยอนุญาตเฉพาะอักขระที่พิมพ์ได้
ขั้นตอนที่ 8: นำเข้าข้อมูลและสร้างกราฟ
- นำเข้าข้อมูลจากข้อความภายใต้แท็บ DATA (Excel 2013)
- แยกข้อมูลด้วยเครื่องหมายจุลภาค (นั่นคือสาเหตุที่การมีเครื่องหมายจุลภาคหลังจากป้อนข้อมูลแต่ละครั้งมีประโยชน์)
- พล็อตข้อมูล ข้อมูลด้านล่างแต่ละรายการมีประมาณ 1700 คะแนน ช่วงเวลาในการวัดคือ 5 นาที (ปรับได้) ขั้นต่ำสำหรับวงจร DO และ pH เพื่ออ่านข้อมูลคือ 1.8 วินาที
ขั้นตอนที่ 9: การปรับเทียบ
- เซ็นเซอร์อุณหภูมิแบบดิจิตอล (18B20) สามารถปรับเทียบได้โดยการปรับความแตกต่างโดยตรงกับ มิฉะนั้น หากการชดเชยและความชันจำเป็นต้องมีการปรับเทียบ คุณสามารถทำได้โดยเปลี่ยนค่าในบรรทัด #453 DallasTemperature.cpp ในโฟลเดอร์ \libraries\DallasTemperature
- สำหรับหัววัดค่า pH และ DO คุณสามารถสอบเทียบหัววัดด้วยสารละลายที่มาพร้อมกับเครื่อง คุณต้องใช้โค้ดตัวอย่างโดย Atlas Scientific และทำตามคำแนะนำในไฟล์นี้
- โปรดติดตามหน้า 26 และ 50 สำหรับหัววัดค่า pH (https://goo.gl/d62Rqv) สำหรับการสอบเทียบและการชดเชยอุณหภูมิ และหน้า 7-8 และ 50 สำหรับหัววัด DO (https://goo.gl/mA32mp) ขั้นแรก โปรดอัปโหลดรหัสทั่วไปที่ Atlas ให้มาอีกครั้ง เปิด Serial Monitor และป้อนคำสั่งที่เหมาะสม
ขั้นตอนที่ 10: การเดินสายมากเกินไป?
- คุณสามารถกำจัดการ์ด SD และโมดูลนาฬิกาแบบเรียลไทม์ได้โดยใช้ Dragino Yun Shield สำหรับบอร์ด Arduino (https://goo.gl/J9PBTH) จำเป็นต้องแก้ไขรหัสเพื่อทำงานกับ Yun Shield นี่คือจุดเริ่มต้นที่ดี (https://goo.gl/c1x8Dm)
- ยังเดินสายมากเกินไป: 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 ฉันได้รับการฝึกฝนด้านวิศวกรรมสิ่งแวดล้อม ส่วนใหญ่เป็นวิชาเคมี จุลชีววิทยานิดหน่อย
แนะนำ:
GPS Cap Data Logger: 7 ขั้นตอน (พร้อมรูปภาพ)
GPS Cap Data Logger: นี่คือโปรเจ็กต์สุดสัปดาห์ที่ยอดเยี่ยม หากคุณชอบการเดินป่าหรือขี่จักรยานเป็นเวลานาน และต้องการเครื่องบันทึกข้อมูล GPS เพื่อติดตามการเดินป่า/การขี่ทั้งหมดของคุณ… เมื่อคุณสร้างเสร็จแล้วและ ดาวน์โหลดข้อมูลจากโมดูล GPS ของ tr
DIY GPS Data Logger สำหรับคุณ Next Drive/Hiking Trail: 11 ขั้นตอน (พร้อมรูปภาพ)
DIY GPS Data Logger สำหรับคุณ Next Drive/Hiking Trail: นี่คือเครื่องบันทึกข้อมูล GPS ที่คุณสามารถใช้งานได้หลากหลาย เช่น หากคุณต้องการบันทึกการขับรถทางไกลของคุณ คุณใช้เวลาช่วงสุดสัปดาห์เพื่อตรวจสอบสีสันของฤดูใบไม้ร่วง หรือคุณมีเส้นทางโปรดที่คุณไปในช่วงฤดูใบไม้ร่วงทุกปีและคุณจะ
Open Source Data Logger (OPESDL): 5 ขั้นตอน (พร้อมรูปภาพ)
Open Source Data Logger (OPESDL): จุดมุ่งหมายของโครงการนี้คือการออกแบบ สร้าง และทดสอบระบบการวัดต้นทุนต่ำสำหรับการศึกษาการประเมินประสิทธิภาพอาคาร ซึ่งรวมถึงอุณหภูมิ ความชื้นสัมพัทธ์ ความส่องสว่างเป็นอย่างน้อย และสามารถขยายไปยังเซ็นเซอร์เพิ่มเติมได้ และเพื่อพัฒนา
Cardio Data Logger: 7 ขั้นตอน (พร้อมรูปภาพ)
Cardio Data Logger: แม้ว่าในปัจจุบันจะมีอุปกรณ์พกพามากมาย (สมาร์ทแบนด์, สมาร์ทวอทช์, สมาร์ทโฟน,…) ที่สามารถตรวจจับอัตราการเต้นของหัวใจ (HR) และทำการวิเคราะห์ร่องรอย ระบบที่ใช้เข็มขัดรัดหน้าอก (เช่นเดียวกับส่วนบน) ของรูปภาพ) เป็น st
การสร้าง Data Logger ด้วย Raspberry Pi: 3 ขั้นตอน (พร้อมรูปภาพ)
การสร้างเครื่องบันทึกข้อมูลด้วย Raspberry Pi: เครื่องบันทึกข้อมูลอย่างง่ายนี้ใช้การวัดแสงเป็นประจำด้วย LDR แบบอะนาล็อก (Photoresistor) และจัดเก็บไว้ในไฟล์ข้อความบน Raspberry Pi ของคุณ เครื่องบันทึกข้อมูลนี้จะวัดและบันทึกระดับแสงทุก ๆ 60 วินาที ช่วยให้คุณเฝ้าสังเกต