2015
Arduino-Based Embedded Data Logger using LabVIEW
Amornthep Phunsin Fb.com/LabviewEmbedded4Arduino 5/22/2015
Arduino-Based Embedded Data Logger using LabVIEW โดย Amornthep Phunsin เอกสารฉบับนีอ้ นุญาตให้ ใช้ ได้ตาม สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-ไม่ใช้ เพื่อการค้ า 4.0 International.
Arduino-Based Embedded Data Logger using LabVIEWTM อมรเทพ ผันสิน (Version 1.0.1, May2015)
บทความนี ้จะนาเสนอการพัฒนาอุปกรณ์ Data Logger โดยใช้ ไมโครคอนโทรลเลอร์ Arduino ร่วมกับการเขียนโปรแกรมด้ วยภาษา LabVIEW สามารถบันทึกสัญญาณจากเซนเซอร์ภายนอกได้ หลาย ชนิด อาทิ เซนเซอร์อณ ุ หภูมิทางอุตสาหกรรม Thermocouple สามารถบันทึกเวลา และจัดเก็บข้ อมูลลง SD Card เพื่อนามาวิเคราะห์ข้อมูลทางคอมพิวเตอร์
สารบัญ บทนา ................................................................................................................................................ 4 ทาความรู้จกั Arduino Compatible Compiler for LabVIEW ................................................................ 7 ข้ อดีของการเขียนโปรแกรม LabVIEW ร่วมกับบอร์ด Arduino ............................................................... 8 ฮาร์ดแวร์ Arduino ที่รองรับการคอมโพล์และดาวน์โหลดโปรแกรม ......................................................... 9 การติดตัง้ Arduino compatible compiler for LabVIEW.................................................................... 10 การจัดการพื ้นที่หน่วยความจาบนฮาร์ดแวร์ Arduino .......................................................................... 13 ใบงานที่ 1. การใช้ งานพอร์ต Digital I/O แสดงผลทาง LED และ Buzzer ............................................. 17 ใบงานที่ 2. การใช้ งานพอร์ต Analog Port อ่านค่าอุณหภูมิจาก LM35 ................................................ 18 ใบงานที่ 3.การใช้ งานร่วมกับ LCD 16x2 ผ่านพอร์ต I2C Interface ..................................................... 20 ใบงานที่ 4.ขันตอนการ ้ Compile Code และ Download ลงบอร์ด Arduino ......................................... 23 ใบงานที่ 5.การใช้ งานฟั งก์ชนั่ Debug Tool และตรวจสอบทรัพยากร (RAM) ........................................ 25 ใบงานที่ 6. การใช้ งานร่วมกับ Real-Time Clock (RTC) ด้ วย I2C Interface ........................................ 27 ใบงานที่ 7. การเขียนข้ อมูล RTC ลง SD Card (SPI Interface) ........................................................... 31 ใบงานที่ 8. เขียนโปรแกรมอ่านค่าอุณหภูมิจาก Thermocouple จาก MAX6675 ผ่านพอร์ต SPI ........... 35 ใบงานที่ 9. การสร้ าง Thermocouple Data Logger ฉบับสมบูรณ์ ...................................................... 38 บทสรุป ............................................................................................................................................ 44 บทส่งท้ าย ........................................................................................................................................ 45
บทนา อันดับแรกต้ องยอมรับว่ากระแสนิยมในการพัฒนาไมโครคอนโทรลเลอร์ Arduino ทังเมื ้ องนอกและ เมืองไทยมาแรงแบบฉุดไม่อยู่จริงๆ ไม่เฉพาะกับนักพัฒนาในวงการอิเล็กทรอนิกส์เท่านัน้ แต่ยงั แพร่หลาย ในวงกว้ างไปยังนักเรียน นักศึกษา และผู้ที่มีไม่มีพื ้นฐานการเขียนโปรแกรม ทุกคนหันมาสนใจคิดประดิษฐ์ โครงงานเป็ นของตัวเอง แต่เดิมเรามักได้ ยินนักพัฒนาเรียกกลุม่ ของตนเองว่า “DIY” แต่ปัจจุบนั เริ่มมีการใช้ คาว่า “Maker” เรียกแทนตัวเองกันมากขึ ้น ซึง่ เป็ นแนวทางการพัฒนาโครงงานที่ผสมผสานทังซอร์ ้ ฟแวร์ และฮาร์ดแวร์ เข้ าด้ วยกัน เนื่องด้ วยฮาร์ดแวร์ในแพลตฟอร์ม Arduino มีราคาถูก และซอร์ฟแวร์ ที่ใช้ พฒ ั นาก็ใช้ ฟรี จึงทาให้ ทุกคนเข้ าถึงเครื่องมือในการพัฒนาอย่างเท่าเทียมกัน ทุกคนมุง่ เน้ นพัฒนาแอพพลิเคชัน่ ให้ มปี ระสิทธิภาพ มากขึ ้น โดยมิต้องกังวลเรื่องต้ นทุนในการพัฒนา จึงทาให้ ตลอดระยะเวลากว่า 10 ปี ตังแต่ ้ โปรเจค Arduino ถือกาเนิดขึ ้นเมื่อปี 2005 มีการพัฒนาต่อยอดแบบก้ าวกระโดด โดยมีองค์กรใหญ่ๆที่หนั มา สนับสนุนอย่างมากมาย จนถือได้ วา่ เป็ นการเริ่มต้ นปฎิวตั กิ ารพัฒนาไมโครคอนโทรลเลอร์ในศตวรรษที่ 21 เลยทีเดียว ด้ วยความที่ Arduino เป็ นแพลตฟอร์มโอเพ่นซอร์สทังระบบ ้ ทาให้ มีผ้ ผู ลิตจานวนมาก เพิ่มเติม ฟั งก์ชนั่ ต่างๆของตนเองลงบนฮาร์ดแวร์ และผลิตบอร์ด Arduino ของตนเองออกมาจาหน่าย โดยเรียกว่า “Arduino-Compatible” หรือ “Clone” จึงยิ่งทาให้ การพัฒนาต่อยอดด้ านฮาร์ดแวร์เติบโตอย่างรวดเร็ว อีกฝากฝั่ งหนึ่งคือซอร์ฟแวร์ที่ใช้ พฒ ั นา ซึ่งแต่เดิมจะมีเพียง Arduino IDE ที่รองรับภาษา C/C++ ซึ่งเป็ น Text Programming เพียงอย่างเดียว ก็เริ่มมีหลายๆบริษัทพัฒนา IDE เขียนโปรแกรมด้ วยภาษา กราฟฟิ ก Graphical Programming อย่างแพร่หลาย อาทิ Ardublock, VISUINO และ LabVIEW ซึ่งข้ อดี ของภาษาแบบกราฟฟิ กคือ เรียนรู้ได้ รวดเร็ว ทาความเข้ าใจโค๊ ดได้ ง่าย ทาให้ ผ้เู ริ่มต้ นศึกษา Arduino เป็ น เรื่องที่ง่ายขึ ้นไปอีก
ภาษาโปรแกรมแบบกราฟฟิ กสาหรับ Arduino LabVIEW คือ ภาษาโปรแกรมที่เขียนในรูปแบบกราฟฟิ ก (Graphical Programming Language) ซึ่งมีความแตกต่างจากภาษาโปรแกรมทัว่ ไปที่เขียนด้ วยข้ อความ (Text Programming Language) โดย จุดเริ่มต้นของ LabVIEW ถูกสร้ างขึ ้นมาเพื่อตอบโจทย์พฒ ั นาแอพพลิเคชัน่ เพื่อควบคุมอุปกรณ์เครื่องมือวัด และประมวลผลในในงานวิศกรรม โดยมีไอเดียว่าให้ โปรแกรม LabVIEW เปรียบได้ กบั เครื่องมือวัดเสมือน บนคอมพิวเตอร์ (Virtual Instruments) โดยผู้ใช้ งานสามารถควบคุมการทางานเครื่องมือวัดได้ จาก คอมพิวเตอร์ จากจุดเด่นที่เป็ นภาษากราฟฟิ กในยุคแรกๆ จึงมีการพัฒนาอย่างต่อเนื่อง จนทาให้ มกี ารใช้ งานแพร่หลายในหลายๆอุตสาหกรรม จนไปถึงการพัฒนาในระบบสมองกลฝั งตัวในฮาร์ดแวร์ขนาดเล็ก อาทิ Arduino ซึ่งเราจะเจาะลึกวิธีการใช้ งานพร้ อมตัวอย่างแอพพลิเคชัน่ Data Logger ในงาน อุตสาหกรรมเพื่อใช้ งานจริงในบทความนี ้ ในบทความนีผ้ ้เู ขียนใช้ ซอร์ฟแวร์ LabVIEW เป็ นซอร์ฟแวร์หลักร่วมกับ Toolkit ของบริษัท Aledyne-TSXperts ชื่อว่า “Arduino™ Compatible Compiler for LabVIEW” (ชื่อย่อคือ ACC4LV) ซึ่ง เป็ นซอร์ฟแวร์ย่อยที่ทาหน้ าที่แปลงโค๊ ด LabVIEW ให้ เป็ นภาษาระดับล่างที่สามารถโปรแกรมลงบน ฮาร์ดแวร์ Arduino ได้ โดยตรง ซึ่งโปรแกรมเมอร์ไม่ต้องมีความรู้ด้านภาษา C/C++ เลยแม้ แต่น้อย ถือได้ วา่ เป็ นการปฎิวตั ิวงการนักพัฒนา LabVIEW ในงานระบบสมองกลฝั งตัวขนาดเล็ก ที่ทาให้ นกั พัฒนาเรียนรู้ LabVIEW เพียงภาษาเดียวก็สามารถพัฒนาแอพพลิเคชัน่ ในงานระบบ Embedded-Based และ PCBased ได้ พร้ อมๆกัน (สาหรับผู้ที่สนใจซอร์ฟแวร์ Arduino compatible compiler for LabVIEW มีจาหน่ายที่ www.QwaveShop.com หรือติดต่ออีเมล์ amornthep@qwavesys.com บริษัท คิว เวฟ ซิสเต็มส์ จากัด www.QwaveSys.com ซึ่งเป็ นตัวแทนจาหน่ายซอร์ฟแวร์ลิขสิทธิ์จาก Aledyne-TSXperts)
หน้ าต่างโปรแกรม “Arduino™ Compatible Compiler for LabVIEW” รายการฮาร์ดแวร์ และอุปกรณ์ที่ใช้ ในบทความนี ้ ประกอบไปด้ วย บอร์ด Arduino-Compatible Uno R3 ไมโครคอนโทรลเลอร์ บอร์ด Data Logger Shield ประกอบด้ วย SD Card และ Real-Time Clock (RTC) บอร์ LCD Display 16x2 เชื่อมต่อแบบ I2C บอร์ด MAX6675 Thermocouple Type-K Module รายการซอร์ฟแวร์ที่ใช้ พฒ ั นาโปรแกรมในบทความนี ้ ประกอบไปด้ วย LabVIEW เวอร์ชนั่ 2014 NI-VISA Driver เวอร์ชนั่ 14.0.1 Arduino™ Compatible Compiler for LabVIEW เวอร์ชนั่ 1.0.0.15 Arduino IDE เวอร์ชนั่ 1.6.4
โดยซอร์สโค๊ ดของโปรแกรมทังหมดในบทความนี ้ ้ ผู้อา่ นสามารถดาวน์โหลดฟรี จากเว็บไซต์ http://support.qwavesys.com หรือ FB: “LabVIEW Embedded for Arduino” เป็ นชุมชนนักพัฒนา LabVIEW ร่วมกับฮาร์ดแวร์แพลตฟอร์ม Arduino ที่ทางผู้เขียนได้ สร้ างขึ ้นมาเพื่อรองรับนักพัฒนา LabVIEW ในเมืองไทยได้ แลกเปลี่ยนความรู้กนั ครับ
ทาความรู้จกั Arduino Compatible Compiler for LabVIEW Arduino Compatible Compiler for LabVIEW เป็ น Toolkit ที่ติดตังในโปรแกรม ้ LabVIEW โดยมี ฟั งก์ชนั่ พื ้นฐานของ LabVIEW และฟั งก์ชนั่ พิเศษ มากกว่า 100+ ฟั งก์ชนั่ ที่เรียกใช้ งานได้ และสามารถ คอมไพล์โค๊ ด LabVIEW และโปรแกรมลงฮาร์ดแวร์ Arduino รุ่นที่ซพั พอร์ตได้ โดยตรง ขันตอนการเขี ้ ยน โปรแกรมทาได้ โดยง่าย และใช้ งานได้จากหน้ าต่างหลักของ LabVIEW มีเพียง 3 ขันตอนดั ้ งต่อไปนี ้
ขันตอนการเขี ้ ยนโปรแกรมด้ วย Arduino Compatible Compiler for LabVIEW โดยแอพพลิเคชัน่ ที่พฒ ั นาด้ วย “Arduino compatible compiler for LabVIEW” จะทางานบน ฮาร์ดแวร์ Arduino แบบ Standalone เหมือนกับการพัฒนาแบบทัว่ ไป ที่เขียนโค๊ดด้ วยภาษา C/C+ ผ่าน ทาง Arduino IDE ดังนันการเขี ้ ยน LabVIEW ในวิธีนี ้จะเหมาะกับงานในระบบ Embedded System เพราะพัฒนาด้ วยภาษาที่เรียนรู้ได้ ง่าย มีฟังก์ชนั่ การประมวลผลมากมายซึ่งเป็ นจุดเด่นของ LabVIEW อยู่ แล้ ว จึงเหมาะกับนักพัฒนามือใหม่ ที่ต้องการเรียนรู้การเขียนโปรแกรมด้ วย LabVIEW ร่วมกับฮาร์ดแวร์
ราคาไม่แพงนัก สาหรับผู้ที่มพี ื ้นฐาน LabVIEW มาบ้ างแล้ วก็จะทาให้ พฒ ั นาแอพพลิเคชัน่ ในงาน Embedded System ได้ รวดเร็วขึ ้น ถ้ าย้ อนไปหลายปี ก่อน บริษัท National Instruments ซึ่งเป็ นบริษัทแม่ของโปรแกรม LabVIEW ก็ เคยพัฒนา Toolkit ที่ชื่อว่า “NI LabVIEW Embedded Module for ARM Microcontrollers” เวอร์ชนั่ สุดท้ ายคือ 2012 ออกมาจาหน่าย แต่ก็ไม่ได้ รับความนิยมใช้ งานแพร่หลายนัก เพราะติดปั ญหาที่นกั พัฒนา ต้ องจ่ายค่า License Software ซ ้าซ้ อน อาทิ LabVIEW , RealView MDK Keil uVision และต้ องมี ฮาร์ดแวร์ Keil ULINK2 USB-JTAG adaptor เพื่อทาการโปรแกรม ประกอบกับมีข้อจากัดเรื่องบอร์ด Microcontroller ที่รองรับมีจานวนน้ อย และราคาสูง จึงไม่เหมาะกับพัฒนามือใหม่ นักเรียน นักศึกษาที่ ต้ องการศึกษาเรียนรู้
ข้ อดีของการเขียนโปรแกรม LabVIEW ร่วมกับบอร์ ด Arduino ภาษา LabVIEW เรียนรู้ได้ ง่าย ทาความเข้ าใจได้ รวดเร็ว ทาให้ ลดเวลา และต้นทุนในการพัฒนาได้ ด้ วยความที่เป็ นภาษาแบบกราฟฟิ ก สามารถปรับแต่ง อัพเดจโปรแกรมได้ ง่าย ทาให้ ลดต้นทุนการ Maintenance Code ในระยะยาวได้ ต้ นทุนฮาร์ดแวร์ต่า เพราะสามารถใช้ งานร่วมกับบอร์ด Arduino และรองรับ Arduino™ Shields ทุกประเภท สามารถพัฒนาฮาร์ดแวร์ Arduino-Compatible ของตนเองที่รองรับ LabVIEW ได้ มีฟังก์ชนั่ LabVIEW API และฟั งก์ชนั่ ย่อย ต่างๆ ให้ เรียกใช้ งานได้ ทนั ทีมากว่า 100+ VIs พร้ อม ตัวอย่างที่สามารถนาไปงานได้ทนั ที มี LabVIEW ไลบารี่ที่ติดต่อกับฮาร์ดแวร์ Arduino โดยตรง เช่น Digital I/O, PWM, Analog I/O, SPI,I2C,SD Card และอื่นๆ โค๊ ด LabVIEW หลังการคอมไพล์เพื่อโปรแกรมลง Arduino กินพื ้นที่ Memory บนบอร์ดน้ อยมาก เทียบเท่ากับการเขียนด้ วยภาษา C/C++ เพราะตัวคอมไพเลอร์ มีอลั กอรีทึมจัดการ Memory ที่มี ความฉลาดปรับเปลีย่ นไปตามสเปกของบอร์ด Arduino ที่ใช้ งาน ต้ นทุนราคาซอร์ฟแวร์ LabVIEW และ Arduino compatible compiler for LabVIEW มีราคาต่า มาก ประมาณ 3 พันบาท โดยเฉพาะเวอร์ชนั่ Home Edition
ฮาร์ ดแวร์ Arduino ที่รองรับการคอมโพล์และดาวน์โหลดโปรแกรม ในเวอร์ชนั่ แรกๆของคอมไพเลอร์รองรับฮาร์ดแวร์ตา่ งๆ ตามรายการดังต่อไปนี ้ แต่เนื่องจากว่า บอร์ดรุ่นต่างๆของ Arduino ส่วนใหญ่ใช้ ชิฟ AVR รุ่นเดียวกัน จึงทาให้ นกั พัฒนาสามารถทดลองคอมไพล์ โค๊ ดเพื่อทดสอบทรัพยากรที่ใช้ ได้ แต่ยงั ไม่รองรับการโปรแกรมลงบนบอร์ดอื่นๆนอกเหนือจากรายการ ด้ านล่าง ซึ่งในอนาคตจะต้ องมีการรองรับฮาร์ดแวร์เพิ่มเติมขึ ้นเรื่อยๆอย่างแน่นอน
Arduino™ Uno Arduino™ Mega Arduino™ Due Arduino™ Nano Arduino™ Yun Arduino™ Leonard
บอร์ด Arduino เวอร์ชนั่ ต่างๆ ที่รองรับโดย Arduino compatible compiler for LabVIEW
การติดตัง้ Arduino compatible compiler for LabVIEW รายการซอร์ฟแวร์และไดร์เวอร์เวอร์ชนั่ ต่างๆที่จาเป็ นต้ องใช้ ควบคูก่ บั Arduino compatible compiler for LabVIEW มีดงั ต่อไปนี ้ 1. 2. 3. 4.
LabVIEW 2014 หรือสูงกว่า NI-VISA Driver เวอร์ชนั่ ล่าสุด Arduino™ IDE version 1.5.7 หรือสูงกว่า Windows ที่ใช้ ในการพัฒนารองรับ Windows 7 ขึ ้นไป ไม่รองรับ Windows XP
โดยเมื่อลงโปรแกรม LabVIEW เรียบร้ อยแล้ ว ให้ เปิ ดโปรแกรมย่อยที่ชื่อว่า “VI Package Manager” ขึ ้นมาเพื่อค้ นหา Toolkit ที่ชื่อว่า “Arduino compatible compiler for LabVIEW” โดยผู้ใช้ งานสามารถ ทดลองใช้ ฟรี 7 วัน โดยมี 2 เวอร์ชนั่ คือ Home Edition สาหรับการศึกษา และ Standard Edition สาหรับ การใช้ งานเชิงพาณิชย์ แสดงดังรูปด้ านล่าง
การติดตังโปรแกรม ้ Arduino compatible compiler for LabVIEW เมื่อติดตังเป็ ้ นที่เรียบร้ อย สามารถเรียกใช้ งานได้จาก “Tools>Arduino compatible compiler for LabVIEW” แสดงดังรูป
การเรียกใช้ งาน Arduino compatible compiler for LabVIEW เมื่อเปิ ดโปรแกรมขึ ้นมาเราสามารถเลือกบอร์ด Arduino ที่ต้องการใช้ งานได้ จาก “Tools>Board” จากรูปด้ านล่างผู้เขียนทดลองเลือก Arduino Uno เชื่อมต่อที่พอร์ต COM1
การเลือกบอร์ด Arduino ที่ต้องการใช้ งาน เมื่อเปิ ด Block Diagram ให้ คลิกขวา จากนันเลื ้ อก “Addons > Arduino compatible compiler for LabVIEW” ก็จะพบฟั งก์ชนั่ ต่างๆมากมาย ที่สามารถเขียนและโปรแกรมลงบอร์ด Arduino แสดงดังรูป
ฟั งก์ชนั่ ต่างๆของ Arduino compatible compiler for LabVIEW เราลองมาดูตวั อย่างของโปรแกรม LabVIEW กันครับ ในกรณีนี ้เป็ นโปรแกรมไฟกระพริบที่ Digital Output Port 13 ทุกๆ 100 ms ซึ่งจะเห็นได้ วา่ ลักษณะโค๊ดโปรแกรม LabVIEW ก็สามารถอ่านเข้ าใจได้ ทันที ถึงแม้ วา่ ผู้อา่ นจะไม่เคยมีพื ้นฐาน LabVIEW มาก่อน แสดงดังรูปด้ านล่างครับ
ตัวอย่างโปรแกรมไฟกระพริบที่ Digital Out Port 13