Data logger

Data logger คืออะไร

data logger เป็นอุปกรณ์สำหรับบันทึกข้อมูล เช่น ค่าเซนเซอร์หรือข้อมูลการทำงานของเครื่องจักรในโรงงาน สำหรับ data logger บางตัวอาจมีเซนเซอร์มาให้พร้อมโปรแกรมในการอ่านค่าจากเซนเซอร์ หรือเราสามารถสร้างdata logger ได้โดยใช้บอร์ดสมองกลฝั่งตัวในการเขียนโปรแกรมให้อ่านค่าเซนเซอร์พร้อมบันทึกช่วงเวลาที่อ่านค่าเซนเซอร์ลงไฟล์ เช่น .txt .csv .json ได้เช่นกัน หลักการทำงานของ data logger จะทำการอ่านข้อมูลจากเซนเซอร์ที่ส่งค่ามาในลักษณะของสัญญาณ Analog มาแปลงเป็นข้อมูล Digital แล้วเก็บลงไฟล์ไว้ในพื้นที่หน่วยความจำของตัวมันเอง เมื่อผู้ใช้ต้องการใช้งานก็สามารถนำไฟล์ออกมาใช้ได้ ซึ่งข้อมูลที่จะบันทึกลง data logger จะเป็นการเก็บค่าข้อมูลของเซนเซอร์พร้อมกับการบันทึกช่วงเวลาที่ได้รับข้อมูลนั้นมา

ประโยชน์ของ Data Logger

การใช้ประโยชน์จากการทำ data logger คือการที่ data logger จะเป็นการเก็บไฟล์แบบ offline ที่ไม่ได้พึ่งอินเตอร์เน็ตแต่เป็นการเก็บข้อมูลโดยตรงจากอุปกรณ์ดังนั้นจะไม่มีปัญหาเกี่ยวกับอินเตอร์เน็ต ซึ่ง data logger ส่วนใหญ่จะเก็บข้อมูลไฟล์ขนาดเล็กแต่มีการเก็บข้อมูลต่อเนื่องแบบอัตโนมัติแล้วยาวนาน ซึ่งข้อมูลที่ได้สามารถนำไปใช้งานต่าง ๆ เช่น การแสดงกราฟข้อมูลเซนเซอร์ในแต่ละช่วงเวลา หรือการนำข้อมูลไปวิเคราะห์เปรียบเทียบข้อมูลแต่ละช่วงเวลา( time series) เบื้องต้นได้ และอาจเขียนกำหนดการทำงานรวมกับเครื่องคอมพิวเตอร์ หรือ บอร์ดสมองกลฝั่งตัว (Embedded boards) ให้ส่งข้อมูลที่บันทึกไว้ไปอัพเดทเป็น รายเดือน สัปดาห์ วัน หรือทุก ๆ ชั่วโมง ส่งต่อไปยัง cloud ในการเก็บข้อมูล หรือการนำไปแสดงผลแบบ Real-time บนแอพพลิเคชั่น หรือนำไปใช้ในการทำ AI ก็ได้

Create Datalog File .CSV ใน python

ในภาษา python เราสามารถสร้าง datalog file ได้หลายประเภท เช่น ไฟล์ .txt .json .xml หรือ .csv เป็นต้นขึ้นอยู่กับความต้องการใช้งาน โดยแต่ละแบบที่เราต้องการใช้งานก็สามารถ import library ของ ไฟล์ประเภทนั้น ลงในโค้ดโปรแกรม python ของเราได้ ซึ่งในที่ต้องการใช้ ไฟล์ .csv ดังนั้นโปรแกรมของเราจะต้องใส่คำสั่ง import csv ลงในโค้ดโปรแกรมด้วยดังนี้

import csv

What is a CSV File ?

CSV หรือชื่อเต็มว่า “Comma Separated Values” เป็นรูปแบบอย่างง่ายในการเก็บข้อมูลลงตารางโดยไฟล์ csv จะใช้ comma เป็นตัวแยกข้อมูลออกเป็น column ซึ่งง่ายสำหรับการแยกข้อมูลและนำไปใช้ในการแสดงผลแบบกราฟหรือการวิเคราะห์ข้อมูล

How to Write a CSV File

การเขียนไฟล์ csv ด้วย python สามารถเขียนได้โดยการ สร้างตัวแปร object สำหรับ สร้างไฟล์หรือเรียกไฟล์ด้วยคำสั่ง open และตามด้วย “ชื่อไฟล์.csv” ตามด้วยcomma(,) และใส่mode ที่ต้องการเขียน ซึ่งมี 2 mode คือ ‘w’ สำหรับสร้างและเขียนไฟล์ใหม่ หรือ mode ‘a’ สำหรับการเขียนไฟล์ต่อจากไฟล์เดิมที่มีอยู่ ถ้าไม่มีจะทำการสร้างใหม่

Example code

import csv
def write_csv():
    with open("data.csv","w",newline="") as file : 
       file_write = csv.writer(file)
       file_write.writerow(["id","name"])
write_csv()

สำหรับฟังก์ชัน writerow() จะเป็นการเขียนลงไฟล์แบบ row เดียวถ้าต้องการให้เขียนในแต่ละรอบเพิ่ม row ไปเรื่อย ๆ ให้ใช้ writerows()

import csv
data =[
    ["a",1,1,1,1],
    ["b",2,2,2,2],
    ["c",2,2,2,2],    
 
def write_data():
    with open("data.csv","a",newline="") as file :
       file_write = csv.writer(file)
       file_write.writerows(data)  
write_data()

การเก็บข้อมูลกับTime stamp

เมื่อข้อมูลมีการอ่านข้อมูลมา เราจำเป็นจะต้องจดเวลาที่ได้รับข้อมูลมาเพื่อที่จะได้นำไปสืบค้นได้ง่าย หรือสามารถนำไปนำเสนอในรูปแบบของกราฟที่เป็น time series ได้ โดยกาบันทึกเวลาลงไปพร้อมกับข้อมูลนี้เรียกว่าการทำ time stamp เราสามารถใส่ time stamp ลงไปบนข้อมูลได้อย่างง่ายโดยการเพิ่มไลบรารี่

import time
from datetime import datetime

และกำหนดค่ารูปแบบเวลาที่ต้องการแสดงได้เช่น ต้องการให้แสดง เดือน/วัน/ปี เวลา

datetime_format = "%m/%d/%Y %H:%M:%S"

ตัวอย่างการเรียนใช้งาน timestamp

import csv
import time
from datetime import datetime
 
datetime_format = "%m/%d/%Y %H:%M:%S"
time_now = datetime.now()
timestamp = time_now.strftime(datetime_format)
 
data =[
    ["a",timestamp],
    ["b",timestamp],
    ["c",timestamp],    
    ]
def write_data():
    with open("data.csv","a",newline="") as file :
       file_write = csv.writer(file)
       file_write.writerows(data)
write_data()

Update: May 2023

Author: Soontree Jaikhong (AIC-Researcher)

Author: Thanaluk Pranekunakol (AIC-Researcher)

Last updated

Assoc. Prof. Wiroon Sriborrirux, Founder of Advance Innovation Center (AIC) and Bangsaen Design House (BDH), Electrical Engineering Department, Faculty of Engineering, Burapha University