Tuesday, February 10, 2015

How to send data from Arduino to MS.Excel

           ผมไม่ค่อยคุ้นเคยกับการทำ data logger ไม่มีความรู้เลย ไม่มีเงินซื้อชอฟต์แวร์บางตัวที่มีลิขสิทธิ์ (ปัจจุบันใช้ชอฟต์แวร์ผ่านมหาวิทยาลัย) และมีความต้องจะเก็บข้อมูลจากบอร์ด Arduino UNO R3 (จริงๆ รุ่นไหนได้ทั้งนั้นขอให้สั่งมันเป็น) จึงตั้งคำถามกับตัวเองว่าจะส่งข้อมูลมาเขียนกราฟใน Excel ได้หรือไม่ ทำอย่างไร (ไม่รู้ทำไงครับ) เพราะส่วนตัวคิดว่าเครื่องคอมพิวเตอร์ที่ใช้ Windows ย่อมต้องมี Excel ติดไว้บ้างแน่นอนหากใช้โปรแกรมที่มีอยู่ในเครื่องอยู่แล้วน่าจะสะดวก ประหยัดเงิน จึงค้นหาจากพี่ google ปรากฎว่าชาวบ้านชาวเมืองเขาทำกันเยอะแยะครับ โปรแกรมหนึ่งที่น่าสนใจ มันทำหน้าที่เชื่อมต่อระหว่างบอร์ด Arduino กับ Computer เพื่อส่งข้อมูลไปยังโปรแกรม Excel โปรแกรมที่กล่าวถึงชื่อว่า PLX-DAQ เป็นของค่าย Parallax ก็ดาวโหลดมาแล้วติดตั้งใช้งานได้เลย (เครื่องที่ใช้เป็น Windows 7 (64-bit) MS2010 ) ผลการใช้งานดังรูปเลยครับ


การใช้งาน ต้องโปรแกรมลงในบอร์ด Arduino เพื่อสั่งให้ส่งข้อมูลผ่านโปรแกรม PLX-DAQ ก่อน โปรแกรมใช้งานที่ให้ผลลัพธ์ตามรูปด้านบนมีดังนี้

int x = 0;
int row = 0;

void setup() {
Serial.begin(128000); // opens serial port, sets data rate to 128000 bps
Serial.println("CLEARDATA");
Serial.println("LABEL,Time,Index,SensorValueA0,SensorValueA1,SensorValueA2,SensorValueA3");
}

void loop() {
  
  int sensorValue1 = analogRead(A0);
  int sensorValue2 = analogRead(A1);
  int sensorValue3 = analogRead(A2);
  int sensorValue4 = analogRead(A3);
  // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
  float voltage1 = sensorValue1 * (5.0 / 1023.0);
  float voltage2 = sensorValue2 * (5.0 / 1023.0);
  float voltage3 = sensorValue3 * (5.0 / 1023.0);
  float voltage4 = sensorValue4 * (5.0 / 1023.0);
  
  // print out the value you read:

row++;
x++;  

Serial.print("DATA,TIME");
Serial.print(","); Serial.print(x); 
Serial.print(","); Serial.print(voltage1);
Serial.print(","); Serial.print(voltage2);
Serial.print(","); Serial.print(voltage3);
Serial.print(","); Serial.println(voltage4);

delay(1000);
}

ส่วนรูปด้านล่างแสดงรูปวงจรอย่างง่ายอ่านค่า voltage จากวงจรแบ่งแรงดันสำหรับการทดสอบในครั้งนี้ 



อธิบายเพิ่มเติม ผมรับค่าจาก Analog A0-A3 ซึ่งเป็นค่าความต่างศักย์ไฟฟ้าคงที่ทั้งสี่ขาสัญญาณ ดังนั้นไม่ว่าจะมีเซนเซอร์กี่ตัวก็ตาม สามารถรับค่าและเก็บไว้ใน Excel ได้หมดเลย ข้อจำกัดการรับสัญญาณของ PLX-DAQ น่าจะอยู่ที่ 26 ช่องสัญญาณ

สุดท้ายผมขอขอบคุณผู้ร่วมงาน ที่ให้คำแนะนำ และได้คำตอบทุกครั้งไป (มิต้องเอ่ยนาม เพราะท่านทั้งหลายรู้ในใจแล้ว)

แหล่งอ้างอิง (อ่านและฟังไม่รู้เรื่องแต่ ดูวิธีและแกะโปรแกรมจากเขา)

- ดูจากวีดิโอ ที่นี่ https://www.youtube.com/watch?v=LIMyz2GBW28
- ตามจากวีดิโอด้านบนที่บอกไว้ http://www.gioblu.com/tutorials/programmazione/189-arduino-e-i-grafici-in-tempo-reale-su-excel

No comments :

Post a Comment