phone: 02-954-2408-9, 089-514-8111

บทความ Arduino [ตอนที่ 3: Case Study#2 ทำโปรเจคเครื่องวัดอุณหภูมิ + LCD TFT + SD Card]

Sep 23,2016

บทความ Arduino [ตอนที่ 3: Case Study#2]
โปรเจคเครื่องวัดอุณหภูมิ พร้อมแสดงผลที่วัดได้ผ่านจอ LCD TFT Screen
และบันทึกข้อมูลอุณหภูมิที่วัดได้ลง SD Card เมื่ออุณหภูมิเกิน 30°C ให้ลำโพง Buzzer ดัง

 

 

เเนะนำบทความ Arduino จาก ThaiEasyElec:

1. บทความ Arduino คืออะไร? ตอนที่1 แนะนำเพื่อนใหม่ที่ชื่อ Arduino >> คลิกอ่าน!

2. บทความ Arduino คืออะไร? ตอนที่2 มาทำความรู้จักกับ Arduino รุ่นต่างๆกัน >> คลิกอ่าน!

3. บทความ Arduino [ตอนที่ 3: Case Study#1 ทำโปรเจคเครื่องวัดอุณหภูมิแบบง่ายๆ] >> คลิกอ่าน!

4. บทความ Arduino [ตอนที่ 3: Case Study#2 ทำโปรเจคเครื่องวัดอุณหภูมิ + LCD TFT + SD Card] >> คลิกอ่าน!

 

Case Study#2

รายละเอียดโปรเจค: ต้องการทำโปรเจควัดอุณหภูมิ พร้อมแสดงผลที่วัดได้ผ่านจอ LCD TFT และบันทึกข้อมูลอุณหภูมิที่วัดได้ลง SD Card เมื่ออุณหภูมิเกิน 30°C ให้ลำโพง Buzzer ดัง

คำถาม: ด้วย Scope งานดังกล่าว จะต้องมีบอร์ดหรือโมดูลอะไรบ้าง มีหลักการเลือกใช้อย่างไร และจะเลือกบอร์ด Arduino รุ่นใดที่เหมาะสมกับโปรเจคนี้

 

หลักการพิจารณา:

1. พิจารณาเลือกโมดูลบอร์ดต่างๆ ที่จะนำมาเชื่อมต่อกับบอร์ด Arduino

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

 

ModelInterfaceVCCRangeAccuracyResolution

EADN026

Thermistor(EADN026)

Analog5V-40 to 125ºC±1.5 °CN/A

ESEN233

HIH6130 (ESEN233)

Digital
(I2C)
2.3-5.5v5 to 50°C±1.0 °C14 bit

ESEN232

DS18B20 (ESEN232)

Digital
(1 Wire)
3.0-5.5V-55 to +125°C±0.5 °C9 to 12 bit

 EADN057

SHT11 (EADN057)

Digital
(I2C) 
 2.4-5.5v-40 to +123.8°C ±0.4 °C 14 bit 

ESEN177 

OTP-538 (ESEN177)

Analog  3-5v-10 to +100°C N/A  N/A

ESEN172 

DHT11 (ESEN172)

Digital

(1 Wire)
 3-5.5v0 to 50°C  ±2°C ±0.1 °C

ESEN173

DHT22 (ESEN173)

Digital

(1 Wire)
3-6v-40 to +125°C±0.2 °C±0.1 °C

ESEN164 

PT100 (ESEN164)

Analog  5V -25 to +125°C N/AN/A 

 

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

      1. งานที่ต้องการวัดอุณภูมิห้อง ต้องการรู้ว่าอุณหภูมิมีการเปลี่ยนแปลง แต่ไม่ต้องการความละเอียดมาก อาจจะเลือกใช้ i Module - Temp Sensor ซึ่งใช้ Thermistor(EADN026) เป็นตัววัดบนบอร์ดก็เพียงพอ

      2. งานที่ต้องการความละเอียดสูง วัดอุณหภูมิสูงสุดไม่เกิน 120°C  ถ้าดูจากตารางเปรียบเทียบ Spec Sensor จะเหลือ 3 แบบให้เลือหคือ PT100 (ESEN164),  DHT22 (ESEN173) และ SHT11 (EADN057) โดยที่ SHT11 จะมีความละเอียดสูงสุด (14 bit)  แต่ทั้งนี้ ควรเลือก Sensor ให้เหมาะสมกับงานที่ต้องการวัดด้วย เช่น กรณีที่ต้องการนำไปวัดอุณภูมิที่เป็นของเหลว หม้อต้ม หรือเตาอบ ควรเลือกใช้รุ่น PT100 (ESEN164)จะเหมาะสมกว่า หรือต้องการนำไปใช้งานที่อุณหภูมิห้อง มีอากาศถ่ายเท เลือกแบบที่เป็นโมดูลDHT22 (ESEN173) หรือ SHT11 (EADN057) ก็จะเหมาะสม   

 

1.2 LCD TFT Screen หลักการพิจารณาขึ้นอยู่กับการนำไปใช้งาน ผู้ใช้งานจำเป็นต้องทราบขอบเขตการนำไปใช้ อาทิเช่น การแสดงผลจะมีกราฟิกมาก-น้อยเพียงใด หรือแสดงเพียงตัวเลขเท่านั้น, ความละเอียดจอ, จะต้องมีการเก็บข้อมูลหรือไม่, จำเป็นต้องเป็น Touch screen หรือไม่ เป็นต้น

 

ผู้เขียนขอยกตัวอย่าง จอ LCD TFT Screen พร้อมตารางเปรียบเทียบคุณสมบัติต่างๆ ดังนี้

 

ModelInterfaceVCCDimensionResolutionTouch ScreenSD Card

Arduino TFT LCD

Arduino TFT LCD

SPI5V1.77"160 x 128 pixelNoYes

2 8

2.8 inch TFT
Touch Shield (ETEE030)

Parallel interface5V2.8"320x240 pixelYesYes

SUN7 Shield Dev

SUN7 Shield Dev

Serial5V4.3", 7"

480x272 pixel,

800x400 pixel

YesNo

 

 จากตารางจะเห็นได้ว่า 

          ผู้ใช้งานสามารถเลือกจอ LCD TFT Screen ให้เหมาะสมกับงานได้ โดยพิจารณาปัจจัยต่างๆ ดังที่กล่าวไว้ข้างต้น ทั้งนี้ กรณีที่ท่านเลือกใช้จอ 2.8 inch TFT Touch Shield (ETEE030) ซึ่งมีการ Interface แบบ Parallel ซึ่งจะมีการใช้ Pin I/O จำนวนมาก ดังนั้นการพิจารณาเลือกบอร์ด Arduino จะต้องเลือกรุ่นที่มี Pin I/O เหลือพอไปที่จะนำไปต่อกับอุปกรณ์อื่นๆด้วย

 

1.3 SD Card การต่อใช้งาน SD Card จะติดต่อผ่าน BusSPI โดยใช้ระดับแรงดันที่ 3.3V (ดังนั้น การเลือกใช้บอร์ด Arduino จะต้องอย่าลืมเรื่องระดับแรงดันด้วย กรณีที่บอร์ด Arduino มีระดับแรงดัน I/O5 V จะต้องต่อวงจรเพิ่ม เพื่อลดระดับแรงดันลงให้เหลือ 3.3V ด้วย)

จากหัวข้อการเลือกจอ LCD TFT Screen กรณีที่เลือกรุ่นจอที่มีช่องใส่ SD Card (พร้อมวงจรแปลงแรงดันให้แล้ว) ก็สามารถใช้งานได้เลย ไม่จำเป็นต้องต่อ SD Card เพิ่ม 

แต่กรณีที่จอ LCD ไม่ได้มีช่องใส่ SD Card ให้ ผู้ใช้งานจะต้องต่อวงจรเพิ่ม หรือเลือกใช้ SD Card Shield (EFDV228) ก็ได้ ดังภาพ

 

1.4 Arduino Board ในส่วนสุดท้ายจะพิจารณาการเลือกใช้บอร์ด Arduino ให้เหมาะสมกับโปรเจคนี้ ผู้ใช้งานจะต้องพิจารณาทั้งในด้าน Hardware และ Software ควบคู่กันไป

           ในด้าน Hardware จากขอบเขตของโปรเจค จะเห็นว่าจะมีอุปกรณ์อื่นๆ มาต่อร่วมกับบอร์ด Arduinoโดยเฉพาะจอ LCD TFT Screen ที่ใช้จำนวน Pin I/O ในการเชื่อมต่อจำนวนมาก ดังนั้นการเลือกรุ่น Arduino จึงจำเป็นต้องเลือกรุ่นที่มี Pin I/O จำนวนมาก เพื่อรองรับการใช้งานต่างๆ กรณีนี้ ผู้เขียนจะเลือกบอร์ด Arduino Mega 2560 (EADN015) และ Arduino DUE (EADN060) มาพิจารณาต่อไป (อ่านบทความ ตอนที่2 มาทำความรู้จักกับ Arduino รุ่นต่างๆกัน)

          ในด้าน Software สามารถเขียนภาพรวมคร่าวๆ ของโปรแกรมทั้งหมดได้ดังนี้

 

 

จากแผนภูมิโปรแกรม จะเห็นได้ว่าปัจจัยหลักๆ ที่จะมีผลต่อการพิจารณาเลือกใช้บอร์ด Arduino Mega 2560 หรือ Arduino DUE นั้น มีดังนี้

- ความเร็วในการประมวลผลข้อมูล Arduino DUE (EADN060) จะทำงานเร็วกว่า Arduino Mega 2560 (EADN015)

          กรณีที่ต้องการให้บอร์ดสามารถ Init ค่าของอุปกรณ์ก่อนเริ่มทำงาน อ่านค่าอุณหภูมิ แสดงผลได้อย่างรวดเร็ว และมีการเก็บข้อมูลค่อนข้างถี่ ผู้ใช้งานอาจจะเลือกบอร์ด Arduino DUE (EADN060) ในการทำโปรเจคนี้ก็ได้

          ทั้งนี้ต้องพิจารณาควบคู่กับอุปกรณ์อื่นๆ เช่น เซนเซอร์ที่เลือกใช้ มีการตอบสนองต่ออุณหภูมิที่เปลี่ยนแปลงได้ช้า หรือจอที่ใช้เป็นจอขนาดเล็ก ไม่ได้มีความละเอียดสูง การเลือกใช้บอร์ด Arduino DUE (EADN060)ก็อาจจะเกินความจำเป็นไป

- หน่วยความจำข้อมูล จากแผนภูมิโปรแกรม ขนาดของโค้ดโปรแกรมส่วนใหญ่ จะมาจากส่วนที่ติดต่อกับ หน้าจอ LCD TFTScreen และ SD Card ถ้าพิจารณาจาก Scope โปรเจคที่กำหนดไว้ หน่วยความจำข้อมูลของบอร์ด Arduino Mega 2560 (EADN015) ก็เพียงพอสำหรับการใช้งาน แต่ถ้าในอนาคตจะมีการต่อยอดโปรเจคต่อไป เช่น มีหน้าจอเมนู หรือนำภาพจาก SD Card มาใช้วาดกราฟ ผู้ใช้งานอาจจะต้องพิจารณาเลือกเป็นบอร์ด Arduino DUE (EADN060) เพื่อรองรับการใช้งานที่มากขึ้น

กล่าวโดยสรุป:

          จากเนื้อหา Case Study ข้าง ต้น สิ่งที่ผู้เขียนต้องการเน้นย้ำให้ผู้อ่านเข้าใจคือ ต้องเข้าใจภาพรวมของโปรเจค และกำหนดขอบเขตงานให้ชัดเจน จากนั้นพิจารณาเลือกใช้อุปกรณ์ โดยดูในเรื่องความสามารถคุณสมบัติ และรูปแบบการใช้งานของอุปกรณ์ต่างๆ ให้เหมาะสมกับขอบเขตงานที่กำหนดไว้

Download attached document