สารบัญ:

Open Source Data Logger (OPESDL): 5 ขั้นตอน (พร้อมรูปภาพ)
Open Source Data Logger (OPESDL): 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Open Source Data Logger (OPESDL): 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Open Source Data Logger (OPESDL): 5 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Introduction to Snyk Open Source 2024, พฤศจิกายน
Anonim
เครื่องบันทึกข้อมูลโอเพ่นซอร์ส (OPESDL)
เครื่องบันทึกข้อมูลโอเพ่นซอร์ส (OPESDL)
เครื่องบันทึกข้อมูลโอเพ่นซอร์ส (OPESDL)
เครื่องบันทึกข้อมูลโอเพ่นซอร์ส (OPESDL)
เครื่องบันทึกข้อมูลโอเพ่นซอร์ส (OPESDL)
เครื่องบันทึกข้อมูลโอเพ่นซอร์ส (OPESDL)

จุดมุ่งหมายของโครงการนี้คือการออกแบบ สร้าง และทดสอบระบบการวัดต้นทุนต่ำสำหรับการศึกษาการประเมินประสิทธิภาพอาคาร ซึ่งรวมถึงอุณหภูมิ ความชื้นสัมพัทธ์ ความส่องสว่าง และสามารถขยายไปยังเซ็นเซอร์เพิ่มเติมได้ และพัฒนาต้นแบบของอุปกรณ์เหล่านี้.

ส่งผลให้ระบบปรับแต่งได้และราคาไม่แพงซึ่งช่วยให้ผู้มีส่วนได้ส่วนเสียสามารถดำเนินการวัดที่จำเป็นสำหรับการประเมินประสิทธิภาพของอาคารได้อย่างมีประสิทธิภาพและราคาไม่แพงโดยการบันทึกพารามิเตอร์ด้านสิ่งแวดล้อมหลายรายการพร้อมกัน เครื่องบันทึกข้อมูลโอเพ่นซอร์ส (OPESDL) ได้รับการพัฒนาโดยเปรียบเทียบกับเครื่องบันทึกข้อมูล HOBO U12-012 ระบบคู่ขนานที่มีจำหน่ายทั่วไปนี้สามารถวัดได้ 3 พารามิเตอร์ ได้แก่ อุณหภูมิ RH และความส่องสว่าง และช่องสัญญาณภายนอกหนึ่งช่องสำหรับเซ็นเซอร์ประเภทอื่นๆ ต้องใช้อุปกรณ์ตรวจจับอื่นในการวัดค่าพารามิเตอร์อื่นๆ ลักษณะของพารามิเตอร์ที่จะวัดนั้นจำกัดเฉพาะฮาร์ดแวร์และซอฟต์แวร์ที่เป็นกรรมสิทธิ์ ซึ่งจำกัดระบบให้วัดค่าพารามิเตอร์บางตัวด้วยความเที่ยงตรงเฉพาะ HOBO U12-012 มีราคาประมาณ ₹13, 000 (US$185) ในขณะที่ OPENSDL มีราคา ₹4, 605 (US$ 66) ซึ่งเกือบหนึ่งในสามของคู่หูทางการค้า

เครื่องบันทึกข้อมูลโอเพนซอร์สสำหรับตรวจสอบอุณหภูมิ RH และระดับแสง (ความสว่าง) ด้วย Arduino Uno นี่คือ DIY สำหรับการพัฒนาเครื่องบันทึกข้อมูล OPESDL

ระยะเวลาที่ต้องการ: 2-3 ชั่วโมงสำหรับการบัดกรี, 5 ชั่วโมงสำหรับการบรรจุ (4 ชั่วโมง - การพิมพ์ 3 มิติ และ 1 ชั่วโมงสำหรับการตัดด้วยเลเซอร์) ทักษะที่ต้องการ: การบัดกรี ความรู้เพียงเล็กน้อยหรือไม่มีเลยในการเขียนโปรแกรมและอุปกรณ์อิเล็กทรอนิกส์

ชิ้นส่วนที่จำเป็น:

  1. Arduino Uno พร้อมสายเคเบิล
  2. โล่บันทึกข้อมูล
  3. CR1220 แบตเตอรี่เซลล์แบบเหรียญ
  4. BME280 บอร์ดฝ่าวงล้อมเซ็นเซอร์ความดันความชื้นอุณหภูมิความชื้น
  5. บอร์ดฝ่าวงล้อมเซ็นเซอร์วัดแสง TSL2561
  6. โมดูล Wi-Fi ESP01-8266
  7. ขั้วต่อ RJ-9 ตัวผู้และตัวเมีย
  8. Shield stacking headers สำหรับ Arduino
  9. การ์ดหน่วยความจำ SD (ความจุใดก็ได้)
  10. กระดานเวกเตอร์ (26 x 18 หลุม)
  11. แบตเตอรี่ AA 8 ก้อน ที่ใส่แบตเตอรี่

เครื่องมือที่จำเป็น:

  • หัวแร้ง (35W)
  • ลวดบัดกรี
  • เครื่องตัดลวด
  • เครื่องมือคีมเปอร์
  • มัลติมิเตอร์

ซอฟต์แวร์ที่ต้องการ: Arduino IDE (1.0.5 หรือสูงกว่า)

ไลบรารี Arduino ที่ใช้:

  • ห้องสมุดสาย
  • ห้องสมุด SparkFun TSL2561
  • ห้องสมุดมัลติเซ็นเซอร์ Cactus BME280
  • ไลบรารีการ์ด SD
  • ห้องสมุด SPI
  • ห้องสมุด RTC

หมายเหตุ: เซ็นเซอร์ BME280 เป็นเซ็นเซอร์อุณหภูมิ ความชื้นสัมพัทธ์ และความดันที่แม่นยำมากจาก Bosch ในทำนองเดียวกัน DS1307 เป็นนาฬิกาเรียลไทม์ที่แม่นยำจาก Maxim และ TSL2561 เป็นเซ็นเซอร์วัดแสงที่แม่นยำ มีทางเลือกอื่นที่มีราคาไม่แพงและแม่นยำน้อยกว่าสำหรับผลิตภัณฑ์เหล่านี้ แต่บทแนะนำนี้มุ่งเป้าไปที่ผู้ที่สนใจรวบรวมข้อมูลสำหรับการประเมินประสิทธิภาพอาคารและแอปพลิเคชันการตรวจสอบอาคารที่ต้องการความแม่นยำและความแม่นยำสูง ซึ่งหมายความว่าการตั้งค่าฮาร์ดแวร์และการตั้งค่าซอฟต์แวร์เฉพาะใดๆ (ไลบรารี รหัสโปรแกรม) มีไว้สำหรับผลิตภัณฑ์ที่ระบุเท่านั้น

ขั้นตอนที่ 1: การประกอบ

การประกอบ
การประกอบ
การประกอบ
การประกอบ
การประกอบ
การประกอบ
การประกอบ
การประกอบ

โล่บันทึกข้อมูลสามารถวางซ้อนกันบนบอร์ด Arduino Uno ได้อย่างง่ายดาย โล่นี้ให้ความสามารถในการบันทึกข้อมูล (การรักษาเวลาและการจัดเก็บข้อมูล) โล่ต้องซ้อนกัน ต้องใส่แบตเตอรี่เซลล์แบบเหรียญ CR1220 ในช่องกลมที่มีให้เพื่อให้นาฬิกาทำงานต่อไปแม้ในขณะที่ปิด Arduino ต้องใส่การ์ดหน่วยความจำ SD ในช่องเสียบการ์ดออนบอร์ดที่ให้มา ชิลด์แบบกำหนดเองที่ไม่เหมือนใครได้รับการพัฒนาโดยใช้หมุดตัวเมียตัวเชื่อมต่อ RJ-9 และส่วนหัวสแต็คของ Arduino shield ส่วนหัวที่เหมาะสมถูกบัดกรีในตำแหน่งที่เหมาะสมเพื่อให้ชิลด์เข้ากับบอร์ด Arduino ได้พอดี Arduino มี 18 พินที่ด้านหนึ่งและ 14 พินที่อีกด้านหนึ่ง ส่วนหัวที่มีจำนวนพินเท่ากันถูกใช้ในระยะห่างเท่ากัน (ห่างกัน 18 พิน) เช่นเดียวกับ Arduino พื้นที่เพิ่มเติมที่เหลือซึ่งอยู่ติดกับส่วนหัวใช้สำหรับวางขั้วต่อ RJ-9

ส่วนหัวเป็นวิธีที่ดีที่สุดในการใช้พินที่จำเป็น ในขณะที่ยังคงใช้งานได้กับส่วนประกอบอื่นๆ เซ็นเซอร์ที่ใช้เป็นไปตามโปรโตคอลการสื่อสาร I2C ซึ่งต้องใช้ 4 พินจาก Arduino ได้แก่ SDA (มีให้ในรุ่น A4), SCL (มีให้ในรุ่น A5 ด้วย), 3.3V & GND สายไฟสี่เส้นที่ออกมาจากขั้วต่อ RJ-9 ถูกบัดกรีเข้ากับหมุดส่วนหัวทั้งสี่นี้ จำนวนขั้วต่อ RJ-9 ที่ต้องการขึ้นอยู่กับจำนวนเซนเซอร์ ในโครงการนี้ ใช้ตัวเชื่อมต่อ RJ-9 3 ตัว (สองตัวสำหรับ BME280 และอีกตัวสำหรับ TSL2561) สายสี่เส้นที่ออกมาจากขั้วต่อ RJ-9 มีรหัสสี และสายสีแต่ละเส้นถูกกำหนดให้เป็นพินเฉพาะสำหรับขั้วต่อ RJ-9 ทั้งหมด ต้องสังเกตว่ารหัสสีอาจแตกต่างกันไปตามชิ้นส่วน RJ-9 ที่แตกต่างกัน ในกรณีเช่นนี้ ต้องระบุตำแหน่งของสายไฟบนขั้วต่อ คอนเนคเตอร์ RJ-9 หลังจากการบัดกรี ถูกสร้างขึ้นเพื่อติดบนบอร์ดเวคเตอร์โดยใช้ Feviqwik เพื่อที่จะได้รับการแก้ไขบนพื้นผิว สามารถตรวจสอบการเชื่อมต่อเหล่านี้ได้โดยใช้โหมดความต่อเนื่องบนมัลติมิเตอร์ เมื่ออยู่ในโหมดความต่อเนื่อง มัลติมิเตอร์ควรแสดงความต้านทานเป็นศูนย์ เชื่อมต่อโพรบของมัลติมิเตอร์ตัวใดตัวหนึ่งเข้ากับพินบัดกรี และโพรบอีกตัวหนึ่งเข้ากับพินภายในขั้วต่อ RJ-9 มัลติมิเตอร์ควรส่งเสียง ซึ่งหมายความว่าข้อต่อบัดกรีมีความเหมาะสม และการเชื่อมต่อได้รับการทำอย่างถูกต้อง หากไม่ปล่อยโทนเสียง ให้ตรวจสอบข้อต่อบัดกรี ในทำนองเดียวกัน บัดกรีขั้วต่อ RJ-9 ด้วยสายเดียวกันที่เชื่อมต่อกับรูเข็มเดียวกันบนแผงเซ็นเซอร์ฝ่าวงล้อม เช่น A4, A5, 3.3V & GND เซ็นเซอร์ BME280 รองรับที่อยู่ I2C สองที่อยู่ ซึ่งหมายความว่าสามารถเชื่อมต่อเซ็นเซอร์ BME280 สองตัวกับตัวควบคุมเดียวกันพร้อมกันได้ ขณะทำเช่นนั้น ต้องเปลี่ยนที่อยู่ของเซ็นเซอร์ตัวใดตัวหนึ่งโดยเชื่อมแผ่นบัดกรีบนเซ็นเซอร์ ชิปเชื่อมต่อไร้สาย ESP-01 ต้องการการเชื่อมต่อต่อไปนี้กับ Arduino

ESP-01 --------- Arduino Uno

10 -------------------- TX

11 --------------------RX

Vcc ----------------CH_PD

Vcc ------------------- Vcc

GND ----------------- GND

หมายเหตุ: - LED หลายดวงบน Arduino Uno ถูกถอดออกเพื่อปรับปรุงอายุการใช้งานแบตเตอรี่ ไฟ LED แสดงสถานะกำลัง, RX และ TX LED ถูกถอดออกโดยการทำให้ข้อต่อบัดกรีร้อนขึ้นและดัน LED ด้วยคีม

ขั้นตอนที่ 2: ตั้งค่า IDE และไลบรารี

ก่อนทำการเขียนโปรแกรมใดๆ ต้องดาวน์โหลด Arduino IDE (Integrated Development Environment) การเขียนโปรแกรมเสร็จสิ้นบนแพลตฟอร์มนี้ ห้องสมุดต่างๆ จำเป็นต้องโต้ตอบกับส่วนประกอบต่างๆ ของ OPESDL ไลบรารีต่อไปนี้ถูกใช้สำหรับส่วนประกอบที่กำหนด

ส่วนประกอบ ------------------------------------------------- --------------ห้องสมุด

BME280 อุณหภูมิ & เซ็นเซอร์ RH --------------------------------- Cactus_io_BME280_I2C.h

เซ็นเซอร์วัดแสง------------------------------------------------ ----------------SparkFun TSL2561.h

นาฬิกาตามเวลาจริง ----------------------------------------------------- ----- RTClib.h

ช่องเสียบการ์ด SD ----------------------------------------------------- ----- SD.h

การเชื่อมต่อ I2C------------------------------------------------ -------------- Wire.h

ไม่จำเป็นต้องใช้ไลบรารีแยกต่างหากสำหรับการสื่อสารกับ ESP01 เนื่องจากโค้ดที่อัปโหลดใน Arduino มีคำสั่ง AT ซึ่งส่งไปยังจอภาพแบบอนุกรมจากตำแหน่งที่ ESP-01 ใช้คำสั่ง ดังนั้น โดยพื้นฐานแล้ว คำสั่ง AT ที่ ESP01 ทำงาน จะถูกพิมพ์ลงใน Serial Monitor ซึ่งใช้เป็นคำสั่งอินพุตโดย ESP-01 สำหรับการติดตั้งไลบรารีเหล่านี้ หลังจากดาวน์โหลดแล้ว ให้เปิด Arduino IDE ไปที่ Sketch -> Include Library -> Add. Zip library และเลือกไลบรารีที่ดาวน์โหลดมา

ขั้นตอนที่ 3: การเขียนโปรแกรมระบบ

การเขียนโปรแกรมระบบ
การเขียนโปรแกรมระบบ

ก่อนเขียนโปรแกรม OPESDL ให้เชื่อมต่อ Arduino กับแล็ปท็อป หลังจากเชื่อมต่อแล้ว ให้ไปที่เครื่องมือ -> พอร์ต แล้วเลือกพอร์ต COM ที่เชื่อมต่อ OPESDL ตรวจสอบให้แน่ใจด้วยว่าภายใต้เครื่องมือ -> บอร์ด Arduino Uno ถูกเลือกไว้

OPESDL ได้รับการพัฒนาให้ทำงานใน 2 โหมด ในโหมดแรกจะเก็บข้อมูลไว้ในการ์ด SD บนตัวป้องกันข้อมูล ในโหมดที่สอง จะส่งข้อมูลทางอินเทอร์เน็ตไปยังเว็บไซต์โดยใช้ชิป Wi-Fi ESP-01 โปรแกรมสำหรับทั้งสองโหมดนั้นแตกต่างกัน บรรทัดของโค้ดเหล่านี้สามารถคัดลอกและวางได้โดยตรงในโปรแกรมแก้ไข Arduino IDE และใช้งานได้โดยตรง เมื่ออยู่ในโค้ดแล้ว เราต้องทำการปรับแต่งบางอย่างตามความต้องการของเรา:

  1. เปลี่ยนค่าความล่าช้า (1000) ด้วยตนเองที่ส่วนท้ายของโค้ดเพื่อเปลี่ยนช่วงเวลาการบันทึก ค่า 1000 แสดงถึงช่วงเวลาในหน่วยมิลลิวินาที
  2. แก้ไขบรรทัดของโค้ดที่ระบุว่า mySensorData = SD.open("Logged01.csv", FILE_WRITE); และแทนที่ Logged01 ด้วยชื่อไฟล์ของชื่อไฟล์ที่ต้องการ นามสกุลของไฟล์ยังสามารถเปลี่ยนแปลงได้โดยการแก้ไขนามสกุล.csv หลังชื่อไฟล์
  3. สมการการสอบเทียบที่ได้จากการค้นหาความสัมพันธ์ระหว่างเซ็นเซอร์หลัก/ตัวอ้างอิงกับ BME280 จะแตกต่างกันไปตามเซ็นเซอร์แต่ละตัว แทนที่โค้ดบรรทัดนี้ด้วยสมการสำหรับการสอบเทียบเซ็นเซอร์: Serial.print((1.0533*t2) -2.2374) – สำหรับเซ็นเซอร์ที่มีที่อยู่เริ่มต้น (0x77) โดยที่ t2 คือค่าที่อ่านจากเซ็นเซอร์อุณหภูมิ

มีโปรแกรมแยกต่างหากสำหรับตั้งโปรแกรมโหมดที่สองที่พร้อมใช้งานของ OPESDL ซึ่งเป็นระบบไร้สาย ESP-01 ต้องเชื่อมต่อกับ OPESDL ตามการเชื่อมต่อตามที่อธิบายไว้ในขั้นตอนที่ #2 หลังจากเชื่อมต่อเสร็จแล้ว ให้เชื่อมต่อ Arduino กับแล็ปท็อป และอัปโหลดภาพสเก็ตช์เปล่าใน Arduino วาง ESP-01 ในโหมดอัปเดตและอัปเดตเฟิร์มแวร์เป็นอัปเดตล่าสุดที่มี หลังจากอัปเดต ตรวจสอบให้แน่ใจว่าได้เชื่อมต่อพินรีเซ็ตของ Arduino กับพิน 3.3V ซึ่งข้าม Arduino bootloader

ขั้นตอนที่ 4: การผลิต

การผลิต
การผลิต
การผลิต
การผลิต
การผลิต
การผลิต

ตู้สำหรับ OPESDL ถูกสร้างขึ้นสำหรับการป้องกันและปรับปรุงความสวยงาม ปลอกหุ้มได้รับการพัฒนาโดยการพิมพ์ 3 มิติโดยใช้วัสดุ PLA และปลอกสำหรับไมโครคอนโทรลเลอร์ได้รับการพัฒนาโดยการตัดแผ่น MDF ด้วยเลเซอร์และติดชิ้นส่วนเข้าด้วยกัน แบบจำลองการพิมพ์ 3 มิติได้รับการพัฒนาโดยใช้ซอฟต์แวร์ SketchUp และภาพวาด 2D dxf สำหรับการตัดด้วยเลเซอร์ถูกสร้างขึ้นโดยใช้ AutoCAD

สำหรับการพิมพ์ 3 มิติ ไฟล์ STL ที่สร้างโดยใช้ SketchUp จะถูกเปิดและตรวจสอบในซอฟต์แวร์ Ultimaker Cura 3.2.1 ตรวจสอบให้แน่ใจว่าใช้วัสดุ PLA และหัวฉีดของเครื่องพิมพ์ที่ใช้นั้นใช้สำหรับการพิมพ์ขนาด 0.4 มม. แท่นพิมพ์ของเครื่องพิมพ์ 3 มิติอาจต้องใช้กาวเพื่อติดวัตถุที่พิมพ์ 3 มิติ แต่เมื่อการพิมพ์เสร็จสิ้น กาวจะสร้างการยึดเกาะที่แข็งแรงระหว่างวัตถุที่พิมพ์กับฐานรองพิมพ์

ขั้นตอนที่ 5: รหัส

โค้ด (ไฟล์.ino) สร้างขึ้นเพื่อใช้ในซอฟต์แวร์ Arduino IDE นี่คือลิงค์ไปยังหน้า Github ของฉันสำหรับรหัสและรายละเอียดอื่น ๆ

github.com/arihant93/OPENSDL

โปรดอย่าลังเลที่จะถามคำถามเกี่ยวกับโครงการ

ขอบคุณ.

แนะนำ: