Top Banner
Propeller Clock by Arduino i ชื่อโครงงาน นาฬิกาใบพัดโดยบอร์ดอาร์ดูโน่ ผู้จัดทา นายมาโนชน์ หล้าหลี 5335512150 ภาควิชา วิศวกรรมคอมพิวเตอร์ ปีการศึกษา 2557 บทคัดย่อ โครงงาน นาฬิกาใบพัดโดยบอร์ดอาร์ดูโน่ เป็นการสร้างนาฬิกาตั้งโต๊ะอีกรูปแบบหนึ่งที่ใช้ทฤษฏีการ เห็นภาพติดตา ซึ่งโครงงานนี้ได้เลือกใช้การหมุนของใบพัดที่มี หลอดแอลอีดี ประกอบอยู่ หมุนด้วยความเร็วค่า หนึ่งจนทาให้เกิดการเห็นเป็นภาพติดตา ในที่นี้มีการนาตัวจับจังหวะจากตัวรับ-ส่งอินฟาเรดมาใช้เพื่อเป็นตัว ตรวจเช็คการครบรอบการหมุน การตั้งค่าข้อมูลเวลาให้กับนาฬิกานั้นจะควบคุมผ่านรีโมทโดยมี ไมโครคอนโทรลเลอร์ประมวลผล
46

บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Mar 17, 2018

Download

Documents

tranquynh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino i

ชื่อโครงงาน นาฬิกาใบพัดโดยบอร์ดอาร์ดูโน่

ผู้จัดท า นายมาโนชน์ หล้าหลี 5335512150

ภาควิชา วิศวกรรมคอมพิวเตอร์

ปีการศึกษา 2557

บทคัดย่อ

โครงงาน นาฬิกาใบพัดโดยบอร์ดอาร์ดูโน่ เป็นการสร้างนาฬิกาตั้งโต๊ะอีกรูปแบบหนึ่งที่ใช้ทฤษฏีการเห็นภาพติดตา ซึ่งโครงงานนี้ได้เลือกใช้การหมุนของใบพัดที่มี หลอดแอลอีดี ประกอบอยู่ หมุนด้วยความเร็วค่าหนึ่งจนท าให้เกิดการเห็นเป็นภาพติดตา ในที่นี้มีการน าตัวจับจังหวะจากตัวรับ-ส่งอินฟาเรดมาใช้เพ่ือเป็นตัวตรวจเช็คการครบรอบการหมุน การตั้ งค่าข้อมูลเวลาให้กับนาฬิกานั้นจะควบคุมผ่านรีโมทโดยมีไมโครคอนโทรลเลอร์ประมวลผล

Page 2: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino ii

Project Title Propeller Clock by Arduino

Author Mr.Manoach Lalee 5335512150

Department Computer Engineering

Academic Year 2557

Abstract

This project is to build a clock using a rotation of the propeller with a LED lamp assembly according to the theory, the persistence of vision. It has the Infrared interrupter used to determine the angle. The date and time settings are controlled remotely using a microcontroller.

Page 3: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino iii

หนังสือรับรองความเป็นเอกลักษณ์

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

ลงชื่อ.............................................

(นาย มาโนชน์ หล้หลี)

ผู้จัดท า

27 กรกฎาคม 2558

Page 4: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino iv

กิตติกรรมประกาศ

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

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

นาย มาโนชน์ หล้าหลี

ผู้จัดท า

27 กรกฎาคม 2558

Page 5: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino v

ค าน า

รายงานนี้เป็นส่วนหนึ่งของวิชา 241-402 โครงงานวิศวกรรมคอมพิวเตอร์ 2 ผู้จัดท ามีความสนใจเกี่ยวกับไมโครคอนโทรลเลอร์และการน าไมโครคอนโทรลเลอร์มาประยุกต์เข้ากับชีวิตประจ าวัน ซึ่งผู้จัดท าเล็งเห็นความน่าสนใจการแสดงผลแบบภาพติดตาจึงได้เสนอที่จะท าโครงงาน Propeller Clock by Arduino โดยความน่าสนใจของโครงงาน Propeller Clock by Arduino นี้คือการส่งไฟเลี้ยงและสัญญาณควบคุมไปยังวงจรในขณะที่ใบพัดหมุนอยู่และความเร็วที่ใช้ในการหมุนเพื่อให้เห็นเป็นนาฬิกา

หากรายงานนี้ผิดพลาดประการใด ขออภัยไว้ ณ ที่นี้ด้วย

ผู้จัดท า

มาโนชน์ หล้าหล ี

Page 6: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino vi

สารบญั เรื่อง หน้า

บทคัดย่อ ........................................................................................................................................................... i

Abstract ......................................................................................................................................................... ii

หนังสือรับรองความเป็นเอกลักษณ์ ................................................................................................................. iii

กิตติกรรมประกาศ .......................................................................................................................................... iv

ค าน า ...............................................................................................................................................................v

สารบัญ ........................................................................................................................................................... vi

สารบัญรูปภาพ ................................................................................................................................................ ix

สารบัญตาราง ................................................................................................................................................. xi

บทที่ 1 บทน า ......................................................................................................................................... 1

1.1 ความเป็นมา ................................................................................................................................... 1

1.2 วัตถุประสงค์ของโครงงาน .............................................................................................................. 1

1.3 ขอบเขตของโครงงาน ..................................................................................................................... 1

1.4 ขั้นตอนในการด าเนินงาน ............................................................................................................... 2

1.5 ประโยชน์ที่คาดว่าจะได้รับ ............................................................................................................. 2

1.6 สถานที่ท าโครงงาน ......................................................................................................................... 2

1.7 เครื่องมือที่ใช้ในการพัฒนา ............................................................................................................. 2

บทที่ 2 ความรู้พื้นฐาน ............................................................................................................................ 3

2.1 ทฤษฏีการเห็นภาพติดตา ................................................................................................................ 3

2.2 รูปแบบการแสดงผล LED ............................................................................................................... 4

2.3 มอเตอร์กระแสตรงและหลักการท างาน .......................................................................................... 4

2.4 Phototransistor Optical Interrupter Switch ........................................................................... 5

2.5 การใช้งาน RTC (Real Time Clock) ด้วย DS3231 ...................................................................... 5

2.6 IC 74HC595 .................................................................................................................................. 8

2.7 หม้อแปลงไฟฟ้า (Transformer) .................................................................................................... 9

Page 7: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino vii

สารบญั(ต่อ) เรื่อง หน้า

2.8 IR Remote .................................................................................................................................. 10

2.9 Arduino Pro Mini ...................................................................................................................... 11

2.10 การเชื่อมต่อแบบ I2C ................................................................................................................... 12

2.11 ฟังก์ชันและไลบารี่ใน Arduino .................................................................................................... 13

บทที่ 3 รายละเอียดการท างาน ............................................................................................................. 14

3.1 System Specification ............................................................................................................... 14

3.2 System Architecture ................................................................................................................ 14

3.3 System Design .......................................................................................................................... 15

3.3.1 การออกแบบวงจร ................................................................................................................ 15

3.3.2 การออกแบบการแสดงผล ................................................................................................ 18

3.3.3 การออกแบบการแสดงผลเป็นตัวอัษร .................................................................................. 20

3.4 System Implementation ......................................................................................................... 22

3.4.1 การรับข้อมูลจาก IR Remote Module .............................................................................. 22

3.4.2 การรับข้อมูลจาก DS3231 RTC Module ........................................................................... 23

3.4.3 วงจรแสดงผล LED ............................................................................................................... 24

3.4.4 การแสดงผลนาฬิกาดิจิตอล .................................................................................................. 24

3.4.5 การแสดงผลนาฬิกาอนาล็อก ............................................................................................... 25

3.4.6 การตั้งค่าเวลา ผ่าน IR Remote .......................................................................................... 25

3.5 แผนการด าเนินงาน ...................................................................................................................... 26

บทที่ 4 ผลการด าเนินงาน ..................................................................................................................... 29

4.1 การสร้าง Propeller Clock ......................................................................................................... 29

4.1.1 การสร้างใบพัดของ Propeller Clock ................................................................................. 29

4.1.2 แรงดันที่เหมาะสมกับความเร็วมอเตอร์ ................................................................................ 30

4.1.3 การจ่ายแรงดันให้กับใบพัด ................................................................................................... 30

Page 8: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino viii

สารบญั(ต่อ) เรื่อง หน้า

4.1.4 การรวมวงจรใบพัดกับมอเตอร์ ......................................................................................... 31

4.2 การทดสอบการท างานของนาฬิกา ............................................................................................... 32

4.2.1 การทดสอบการท างานของ IR Remote .............................................................................. 32

4.2.2 การทดสอบหน้าการแสดงผล ............................................................................................... 32

4.2.3 การทดสอบรีโมทในการเปลี่ยนโหมดนาฬิกา ........................................................................ 33

บทที่ 5 สรุปผลการด าเนินงาน .............................................................................................................. 34

5.1 สรุปผลผลการด าเนินงาน ............................................................................................................. 34

5.2 ปัญหาและอุปสรรค ...................................................................................................................... 34

5.3 ข้อเสนอแนะ / แนวทางการพัฒนาต่อ .......................................................................................... 34

บรรณานุกรม ................................................................................................................................................ 35

Page 9: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino ix

สารบญัรูปภาพ รูปที่ ชื่อรูป หน้า

รูปที่ 2-1 รูปแบบของ Propeller LED Display แบบแนวนอน ..................................................................... 4

รูปที่ 2-2 โครงสร้างภายในมอเตอร์ ................................................................................................................ 4

รูปที่ 2-3 Phototransistor Optical Interrupter Switch............................................................................ 5

รูปที่ 2-4 ตารางแสดงรายการรีจิสเตอร์ที่เก่ียวข้องกับการเก็บข้อมูลวันและเวลา............................................ 6

รูปที่ 2-5 ตารางแสดงการก าหนดค่าบิตในรีจิสเตอร์ที่เกี่ยวข้องกับการตั้งเวลาแจ้งเตือน (Alarm) .................. 7

รูปที่ 2-6 แสดงขาท้ังหมดของไอซี 74HC595 ................................................................................................. 8

รูปที่ 2-7 block diagram รีโมทคอนโทรล .................................................................................................. 10

รูปที่ 2-8 Protocol ของสัญญาณรีโมท ........................................................................................................ 11

รูปที่ 2-9 โครงสร้างของ Arduino Pro Mini............................................................................................... 11

รูปที่ 3-1 Block Diagram ของ Propeller Clock ..................................................................................... 14

รูปที่ 3-2 Sequence Diagram ของ Propeller Clock .............................................................................. 15

รูปที่ 3-3 วงจรของ Propeller Clock by Arduino ................................................................................... 15

รูปที่ 3-4 วงจร DS3231 RTC Module ....................................................................................................... 16

รูปที่ 3-5 วงจรจับจังหวะการกระพริบของ LED ........................................................................................... 16

รูปที่ 3-6 วงจรแสดงผล LED ........................................................................................................................ 17

รูปที่ 3-7 วงจร IR Remote Module .......................................................................................................... 17

รูปที่ 3-8 Wireless Charging Module....................................................................................................... 18

รูปที่ 3-9 วิธีการออกแบบการกระพริบของไดโอด ........................................................................................ 18

รูปที่ 3-10 รูปแบบการแสดงผลโดยแบ่งเส้นรอบวงการหมุนของ LED เป็นคอลัมน์ ...................................... 19

รูปที่ 3-11 รูปแบบการแสดงผลอักษร .......................................................................................................... 20

รูปที่ 3-12 วิธีการแสดงผลตัวเลข ................................................................................................................. 20

รูปที่ 3-13 วงจรรับค่า Arduino กับ IR Remote Module ......................................................................... 22

รูปที่ 3-14 โปรแกรมรับข้อมูลจาก IR Remote Module ............................................................................ 22

รูปที่ 3-15 วงจรรับค่า Arduino กับ DS3231 RTC Module Module ....................................................... 23

Page 10: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino x

สารบญัรูปภาพ(ต่อ) รูปที่ ชื่อรูป หน้า

รูปที่ 3-16 ผลการรันโปรแกรมรับส่งข้อมูล DS3231 RTC Module ............................................................ 23

รูปที่ 3-17 การท างานบนวงจรจริง .............................................................................................................. 24

รูปที่ 3-18 การท างานของโปรแกรมแสดงผล LED ....................................................................................... 24

รูปที่ 3-19 การแสดผลนาฬิกาดิจิตอล .......................................................................................................... 24

รูปที่ 3-20 การแสดงผลนาฬิกาอนาล็อก ...................................................................................................... 25

รูปที่ 3-21 (ซ้าย) การแสดงผลหน้าการตั้งค่าเวลา (ขวา) การแสดงผลหน้าการตั้งค่าวันที่ .......................... 25

รูปที่ 4-1 ใบพัดของ Propeller Clock ........................................................................................................ 29

รูปที่ 4-2 การปรับแรงดันที่เหมาะสมกับความเร็วมอเตอร์ ............................................................................ 30

รูปที่ 4-3 การจ่ายแรงดันให้กับใบพัด ............................................................................................................ 30

รูปที่ 4-4 Propeller Clock by Arduino .................................................................................................... 31

รูปที่ 4-5 การทดสอบ Propeller Clock by Arduino ................................................................................ 31

รูปที่ 4-6 ผลการรันโปรแกรม รับข้อมูลจาก IR Remote Module .............................................................. 32

รูปที่ 4-7 หน้าแสดงผลข้อความ.................................................................................................................... 32

รูปที่ 4-8 หน้าแสดงผลนาฬิกาดิจิตอล .......................................................................................................... 32

รูปที่ 4-9 หน้าแสดงผลนาฬิกาอนาลอก ........................................................................................................ 33

รูปที่ 4-10 หน้าแสดงผลวันที่ ....................................................................................................................... 33

รูปที่ 4-11 หน้าแสดงผลตั้งค่าเวลา ............................................................................................................... 33

รูปที่ 4-12 หน้าการแสดงตั้งค่าวันที่ ............................................................................................................. 33

รูปที่ 4-13 โหมดการท างานของรีโมท .......................................................................................................... 33

Page 11: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino xi

สารบญัตาราง ตารางท่ี ชื่อตาราง หน้า

ตารางท่ี 3-1 ชุดข้อมูลตัวอักษร ................................................................................................................. 21

ตารางท่ี 3-2 แผนการด าเนินงานเตรียมโครงงาน ....................................................................................... 26

ตารางท่ี 3-3 แผนการด าเนินงานโครงงาน 1 ............................................................................................... 27

ตารางท่ี 3-4 แผนการด าเนินงานโครงงาน 2 ............................................................................................. 28

Page 12: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 1

บทที ่1 บทน า

บทนี้จะเป็นการกล่าวถึงความเป็นมา วัตถุประสงค์ ขอบเขตในการด าเนินงาน ประโยชน์ที่คาดว่าจะได้รับ และเครื่องมือที่ใช้ในการพัฒนา

1.1 ความเป็นมา นาฬิกาคือสิ่งจ าเป็นในชีวิตประจ าวัน มนุษย์ใช้เพ่ือบอกเวลา ซึ่งมีรูปแบบหลากหลายตามการใช้งาน

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

ในปัจจุบันมีการท า Propeller Clock Project กันอย่างแพร่หลายอยู่ก็จริงท าให้ไม่มีความแปลกใหม่ แต่จากการศึกษาพบว่า Propeller Clock Project ที่ท ากันอยู่ส่วนใหญ่นั้นก็มีการจ ากัดสีของหลอดแอลอีดีเพียงสีเดียวหรือจ ากัดรูปลักษณ์หน้าตาของนาฬิกาเพียงแบบเดียวท าให้ดูไม่น่าสนใจ จึงได้พัฒนาให้สามารถแสดงสีได้หลากหลายรูปแบบและรูปลักษณ์หน้าตาของนาฬิกาท่ีหลากหลาย

โครงงานนี้เกิดแนวคิดสร้าง Propeller Clock โดยใช้ LED สีแดงจ านวน 8 ดวง ควบคุมการแสดงผลโดยบอร์ด Arduino มีโมดูลเวลาใช้ในการอ้างอิงเวลา มีการตั้งเวลาและวันที่ผ่านรีโมท แสะสมารถแสดงตัวอักษรได้ 13 ตัวอักษร

1.2 วัตถุประสงค์ของโครงงาน ศึกษาและทดลองการน าไมโครคอนโทรเลอร์อาร์ดูโน่มาประยุกต์ใช้ ศึกษาการแสดงผลโดยใช้เทคนิคภาพติดตาในที่นี้ใช้เทคนิคการหมุน

1.3 ขอบเขตของโครงงาน ใช้ LED สีแดงจ านวน 8 ดวง ใน 1 รอบการหมุนสามารถแสดงตัวอักษรได้ 13 ตัวอักษรโดยตัวอักษรมีขนาด 8*6 คอลัมน์ ตั้งเวลาและวันที่โดยใช้รีโมท แสดงเวลาและวันที่ได้ ตั้งค่าเวลาและวันที่ได้ เปลี่ยนการแสดงผลของนาฬิกาได้

Page 13: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 2

1.4 ขั้นตอนในการด าเนินงาน Project Prepare

o ศึกษาค้นคว้าและรวบรวมข้อมูล o Arduino Microcontroller o Motor o Phototransistor o IR Remote o Power Supply o ทดลองออกแบบโครงสร้างของนาฬิกา

Project 1 o ทดลองเขียนโปรแกรมแสดงผลนาฬิกาแบบดิจิตอล o แก้ไขโครงสร้างของนาฬิกา o ทดสอบและแก้ปัญหา

Project 2 o ทดลองออกแบบการแสดงผลนาฬิกาในรูปแบบอนาลอก o พัฒนาต่อเป็น Propeller Display o ทดสอบและแก้ปํญหา

1.5 ประโยชน์ที่คาดวา่จะได้รับ ประยุกต์ใช้งานการแสดงผลในรูปแบบอื่นๆ ได้ พัฒนาต่อเป็น Propeller Display ได ้

1.6 สถานที่ท าโครงงาน ห้องปฏิบัติการคอมพิวเตอร์ (ห้องโครงงาน) คณะวิศวกรรมศาสตร์ ภาควิชาวิศวกรรมคอมพิวเตอร์

มหาวิทยาลัยสงขลานครินทร์ วิทยาเขตภูเก็ต

1.7 เครื่องมือที่ใช้ในการพัฒนา Hardware

Laptop Computer Intel Core i5 M450 2.40 GHz, 4 GB of RAM IC 74HC595 DS3231 RTC Arduino Pro Mini Phototransistor Motor IR Remote

Software

Arduino C++

Page 14: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 3

บทที ่2 ความรู้พื้นฐาน

ในบทนี้กล่าวถึง ความรู้พ้ืนฐานที่เกี่ยวข้องกับการท าโครงงานนี้ โดยมีองค์ประกอบ ในการท าโครงงานนี้ ประกอบด้วย

ทฤษฎีการเห็นภาพติดตา รูปแบบการแสดงผล LED มอเตอร์ Phototransistor Optical Interrupter Switch Real Time Clock (RTL) IC 74HC595 หม้อแปลงไฟฟ้า IR Remote Arduino Pro Mini การเชื่อมต่อแบบ I2C ฟังก์ชันและไลบารี่ใน Arduino

2.1 ทฤษฏีการเห็นภาพติดตา ทฤษฏีการเห็นภาพติดตา ของ Dr. John Ayrton Paris ทฤษฎีนี้อธิบายถึงการมองเห็นภาพต่อเนื่องของ

สายตามนุษย์ไว้ว่า ธรรมชาติของสายตามนุษย์ เมื่อมองเห็นภาพใดภาพหนึ่ง หลังจากภาพนั้นหายไป สายตามนุษย์จะยังค้างภาพนั้นไว้ที่เรติน่าในชั่วขณะหนึ่ง ประมาณ 1/15 วินาที และหากในระยะเวลาดังกล่าวมีภาพใหม่ปรากฏขึ้นมาแทนที่ สมองของมนุษย์จะเชื่อมโยงสองภาพเข้าด้วยกัน และหากมีภาพต่อไปปรากฏขึ้นในเวลาไล่เลี่ยกัน ก็จะเชื่อมโยงภาพไปเรื่อย ๆ

การที่เราเห็นท าให้ propeller clock ซึ่งมีแค่ใบพัดเดียวแล้วมี LED เรียงกัน แต่พอหมุนด้วยความเร็วจะท าให้สายตาเรามองเห็นเป็นรูปหรืออักขระต่างๆ ต้องท าให้แต่ละรอบของการหมุน ซึ่งการหมุน 1 รอบจะท าให้ได้ภาพหนึ่งภาพ แต่ภาพนั้นจะหายไปจากสายตาเราอย่างรวดเร็ว ดังนั้นถ้าเราต้องการเห็นภาพนั้นตลอดเวลา เราต้องท าเกิดให้การเห็นภาพติดตาตามทฤษฏีข้างต้น โดยการให้การหมุนแต่ละรอบมีการใช้เวลา ไม่ให้มากไปกว่า 1/15 วินาที เพราะจะท าให้เราเห็นภาพเป็นภาพที่กระพริบอยู่หรือเป็นภาพที่ไม่มีความต่อเนื่องกัน

Page 15: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 4

2.2 รูปแบบการแสดงผล LED รูปแบบการแสดงผลของ LED นั้นเป็นสิ่งส าคัญแรกที่จะเป็นตัวก าหนดว่าเราจะสร้างวงจรในรูปแบบใด

และ ต้องค านวณรอบการหมุนของมอเตอร์เพ่ือให้แสดงผลในต าแหน่งที่เราต้องการและต้องก าหนดตัวอักษร หรือตัวเลขเอาไว้ เพ่ือก าหนดจ านวน LED ที่จะใช้ในการแสดงผลด้วย ดังนั้นต้องออกแบบรูปแบบของการแสดงผลก่อนว่าเป็นรูปแบบใด ส่วนในโครงงานนี้จะใช้รูปแบบแนวนอน แสดงได้ดังรูปที่ 2-1

รูปที่ 2-1 รูปแบบของ Propeller LED Display แบบแนวนอน

2.3 มอเตอร์กระแสตรงและหลักการท างาน โครงงานนี้ใช้มอเตอร์กระแสตรงเป็นแกนหมุน เพ่ือให้วงจรแสดงผลหมุนและสามารถแสดงข้อความได้

ตามต้องการ

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

รูปที่ 2-2 โครงสร้างภายในมอเตอร์

Page 16: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 5

2.4 Phototransistor Optical Interrupter Switch ใช้ส าหรับก าหนดต าแหน่งของการแสดงข้อความของ Propeller LED Display Phototransistor

Optical Interrupter Switch เป็นเซ็นเซอร์ ที่ใช้ส าหรับตรวจจับวัตถุตัวผ่าน เมื่อไม่มีวัตถุตัวผ่านจะมีแรงดันเอาต์พุตประมาณ 2.5-3 โวลต์และเมื่อมีวัตถุตัวผ่านแรงดันเอาต์พุตจะลดลงเหลือประมาณ 1-2 โวลต์

รูปที่ 2-3 Phototransistor Optical Interrupter Switch

2.5 การใช้งาน RTC (Real Time Clock) ด้วย DS3231 DS3231 เป็นไอซีประเภท RTC (Real-Time Clock) ของบริษัท Dallas Semiconductor / Maxim

ท าหน้าที่เป็นระบบฐานเวลา (ท าหน้าที่เป็นเสมือนนาฬิกาของระบบ) เก็บข้อมูลอย่างเช่น วินาที นาที ชั่วโมง (แบบ 12 หรือ 24) วันเดือนและปีในปัจจุบัน เชื่อมต่อสื่อสารแบบบัส I2C ได ้

ข้อมูลเชิงเทคนิคที่ส าคัญของไอซี DS3231

ใช้แรงดันไฟเลี้ยง (VCC) ในช่วง +2.5V .. +5.5V (+3.3V typ.) ใช้แบตเตอรี่ส ารองได้ แรงดันในช่วง (VBAT) +2.5V .. +5.5V (+3V typ.) ใช้พลังงานต่ า (Low-Power Consumption) ดังนั้นเมื่อปิดแรงดันไฟเลี้ยง VCC สามารถท างานต่อเนื่องได้โดยใช้แรงดันไฟเลี้ยง VBAT ได้โดยอัตโนมัติ ใช้ตัวถังแบบ SO (Small Outline) จ านวน 16 ขา เชื่อมต่อแบบบัส I2C (สัญญาณ SDA และ SCL) และใช้ความเร็วได้ถึง 400kHz ภายในมีวงจรสร้างสัญญาณ clock (crystal oscillator) ความถี่ 32kHz มีความแม่นย า (Accuracy) ±2ppm ในช่วงอุณหภูมิ 0°C..+40°C และ ±3.5ppm ส าหรับ -

40°C..+85°C สามารถตั้งค่าการแจ้งเตือนหรือ Alarm เลือกได้จาก 2 ชุด และสร้างสัญญาณอินเทอร์รัพท์ได้

(Interrupt) สามารถเลือกสร้างสัญญาณเอาต์พุตได้ (Programmable Square-Wave Output) ที่ขา #INT/SQW สามารถวัดค่าอุณหภูมิได้ ให้ข้อมูลดิจิทัลแบบ 10 บิต (2's complement) ความละเอียด 0.25°C แต่

มีความแม่นย า ±3°C

Page 17: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 6

ในการเขียนโปรแกรมเพ่ือสื่อสารข้อมูลกับไอซี DS3231 จะต้องส่งผ่านบัส I2C และเขียนหรืออ่านข้อมูลจากรีจิสเตอร์ที่อยู่ภายใน (อ้างอิงจาก datasheet)

รูปที่ 2-4 ตารางแสดงรายการรจีสิเตอร์ที่เกี่ยวข้องกับการเก็บข้อมลูวันและเวลา

อธิบายดังนี้

การเก็บข้อมูลเช่น วินาที (Seconds) ที่มีค่าอยู่ในช่วง 0..59 ในรีจิสเตอร์ที่ต าแหน่ง 00h จะเก็บโดยแบ่งเป็นสองส่วนๆละ 4 บิต แบบ BCD เช่น ถ้าวินาทีเท่ากับ 39 จะเก็บค่าเป็น 0011 1001 (เลขฐานสอง)

การเก็บข้อมูลส าหรับชั่วโมง (Hour) จะมีบิต 12/24 (12-hour or 24-hour mode selection) เพ่ือเลือกว่าจะเป็นในรูปแบบใดระหว่าง 12 ชั่วโมง (0..11) หรือ 24 ชั่วโมง (0..23) ถ้าเก็บแบบ 12 ชั่วโมง จะมีบิต AM/PM (ก่อนหรือหลังเที่ยงวัน) แต่ถ้าเก็บค่าแบบ 24 ชั่วโมง จะไม่มีบิต AM/PM เป็นต้น

รีจิสเตอร์ที่ต าแหน่ง 03h จะเป็นค่าวันของสัปดาห์ (day of week) ซ่ึงมีค่าอยู่ระหว่าง 1 ถึง 7 โดยที่ วันอาทิตย์ (Sunday) = 1, วันอังคาร (Tuesday) = 2, เป็นอย่างนี้ไปจนถึงวันเสาร์ ในขณะที่รีจิสเตอร์ที่ต าแหน่ง 04h จะเป็นค่าวันของเดือน (day of month) ซึ่งมีค่าอยู่ระหว่าง 1 ถึง 31

Page 18: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 7

การตั้งเวลาแจ้งเตือนหรือเวลาปลุก (Alarm) มี 2 ชุด (Alarm 1 และ Alarm 2) Alarm 1 จะตั้งเวลาแจ้งเตือนได้ในระดับวินาที แต่ Alarm 2 จะได้ในระดับนาที และการตั้งเวลาแจ้งเตือน จะต้องระบุค่าเวลาในอนาคต ลงในรีจิสเตอร์ที่เกี่ยวข้อง (ตามที่อยู่ 07h..0Ah ส าหรับ Alarm 1 และ 0Bh..0Dh ส าหรับ Alarm 2) เพื่อใช้ในการเปรียบเทียบ ถ้าตรงกัน จะสร้าง Alarm แจ้งเตือนได ้

การตั้งเวลาแจ้งเตือน จะต้องเซตบิต A1E และ A2E (Alarm Enable) ในรีจิสเตอร์ Control ส าหรับ Alarm 1 และ Alarm 2 ที่เกี่ยวข้อง เมื่อเกิด Alarm ไอซี DS3231 จะสร้างสัญญาณ Interrupt ที่ขา #INT/SQW (ท างานแบบ Active-low) และบิต A1F หรือ A2F จะถูกเซตเป็น 1 ในรีจิสเตอร์ Status เมื่อเกิด Alarm 1 หรือ Alarm 2

ถ้าตั้งเวลาแจ้งเตือนเป็นระยะๆ และขา #INT/SQW เป็นเอาต์พุต เพ่ือสร้างสัญญาณปลุกวงจรหรือระบบอ่ืน เช่น ไมโครคอนโทรลเลอร์ ก็ช่วยในการประหยัดการใช้พลังงานได้ อย่างในกรณีที่ใช้แบตเตอรี่เป็นแหล่งพลังงาน

ถ้าไม่ใช้ Alarm ก็สามารถใช้ขา #INT/SQW สร้างสัญญาณเอาต์พุตรูปคลื่นสี่เหลี่ยมได้ (Square Wave) โดยโปรแกรมเลือกความถี่ได้จาก 4 ค่า คือ 1Hz, 1000Hz, 4096Hz, 8192Hz

รูปที่ 2-5 ตารางแสดงการก าหนดค่าบิตในรีจสิเตอร์ที่เกี่ยวข้องกับการตั้งเวลาแจ้งเตือน (Alarm)

Page 19: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 8

2.6 IC 74HC595 ไอซี 74HC595 เป็นไอซีลอจิก (Logic IC) ที่ท าหน้าที่เป็นวงจรเลื่อนบิตขนาด 8 บิต (8-bit Shift

Register) โดยรับข้อมูลเข้าและส่งข้อมูลออกทีละบิต (Serial-In & Serial-Out) และมีเอาต์พุตแบบ 8 บิต (Parallel Data Output) การจะส่งข้อมูลไปก าหนดสถานะลอจิกให้ขาเอาต์พุตทั้ง 8 ขา (Q0..Q7) ต้องใช้วิธีเลื่อนบิตทีละบิต เข้าที่ขาอินพุต DS (Serial Data Input) และสร้างสัญญาณ Clock ป้อนเข้าที่ขา SHCP (Shift Clock Input) เพ่ือก าหนดจังหวะในการท างาน และสามารถเลือกใช้ความถี่ของสัญญาณอินพุต SHCP ได้เกินกว่า 10MHz สัญญาณ SHCP หนึ่งไซเคิล (Clock Cycle) หมายถึง การเลื่อนบิตหนึ่งครั้ง ดังนั้นจึงต้องใช้ทั้งหมด 8 ไซเคิล ส าหรับ 8 บิต ถ้าเลื่อนบิตมากกว่า 8 ไซเคิล ข้อมูลในรีจิสเตอร์ ก็จะถูกส่งออกมาตามล าดับที่ขา Q7S

การเลื่อนบิตเพ่ือส่งข้อมูลจะส่งแบบ MSB First เมื่อข้อมูลถูกน าไปใส่ไว้ในรีจิสเตอร์ภายในจนครบ 8 บิตแล้ว และต้องการให้ขาเอาต์พุต Q0..Q7 มีสถานะลอจิกตรงตามข้อมูลในรีจิสเตอร์ จะต้องสร้างสัญญาณแบบ Pulse เข้าที่ขา STCP (Storage Clock Input) และต้องก าหนดขาอินพุต /OE (Output Enable) ให้เป็นลอจิก LOW ถ้าต้องการจะเคลียร์ข้อมูลในรีจิสเตอร์ ให้ป้อนอินพุตที่ขา /MR (Master Reset) เป็น LOW แล้วจึงเปลี่ยนเป็น HIGH

ข้อสังเกต : อาจพบว่ามีไอซี 74HC595 และ 74HCT595 ให้เลือกใช้ แม้ว่าไอซีทั้งสองจะมีฟังก์ชันการท างานเหมือนกัน แต่อยู่ในตระกูลของไอซีลอจิก (Logic Families) ที่แตกต่างกัน การเลือกใช้แรงดันไฟเลี้ยง (VCC) ส าหรับ 74HC595 จะใช้งานได้ในช่วง 2.0 ถึง 6.0 โวลต์ แต่ถ้าเป็น 74HCT595 จะใช้แรงดันไฟเลี้ยงได้ในช่วง 4.5 ถึง 5.5 โวลต์

รูปที่ 2-6 แสดงขาท้ังหมดของไอซี 74HC595(ซ้าย)และต าแหน่งขาของไอซี 74HC595 ส าหรับตัวถังแบบ PDIP-16(ขวา)

Page 20: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 9

ไอซี 74HC595 ตัวถังแบบ PDIP-16 มีขาดังต่อไปนี้

Pin 1 = Q1 -- Data Output Bit 1 Pin 9 = Q7S -- Serial Data Output Pin 2 = Q2 -- Data Output Bit 2 Pin 10 = /MR -- Master Reset (Active-Low) Pin 3 = Q3 -- Data Output Bit 3 Pin 11 = SHCP -- Shift Register Clock Input Pin 4 = Q4 -- Data Output Bit 4 Pin 12 = STCP -- Storage Register Clock Input Pin 5 = Q5 -- Data Output Bit 5 Pin 13 = /OE -- Output Enable Input (Active-Low) Pin 6 = Q6 -- Data Output Bit 6 Pin 14 = DS -- Serial Data Input Pin 7 = Q7 -- Data Output Bit 7 Pin 15 = Q0 -- Data Output Bit 0 Pin 8 = GND Pin 16 = VCC -- Supply Voltage

2.7 หม้อแปลงไฟฟ้า (Transformer) หม้อแปลงไฟฟ้า(Transformer) คือ เครื่องกลไฟฟ้าชนิดหนึ่งที่ใช้เปลี่ยนพลังงานไฟฟ้าเป็นพลังงาน

ไฟฟ้า โดยสามารถเปลี่ยนแรงดันไฟฟ้า(Voltage) ให้เพ่ิมขึ้นเรียกว่า “Step up Transformer” และให้ลดลงเรียกว่า “Step down Transformer” แต่ไม่เปลี่ยนก าลังไฟฟ้า (Power/Watt) และความถ่ี (Frequency/Hz)

โครงสร้างของหม้อแปลงไฟฟ้า

หม้อแปลงไฟฟ้ามีส่วนประกอบที่ส าคัญอยู่ 3 ส่วน คือ แกนเหล็ก ขดลวดตัวน า และฉนวน (และอาจมีส่วนประกอบย่อยซึ่งขึ้นอยู่กับขนาดของหม้อแปลง เช่น หม้อแปลงขนาดใหญ่ อาจมีถังบรรจุหม้อแปลง น้ ามันหม้อแปลง และข้ัวของหม้อแปลง เป็นต้น)

แกนเหล็ก แกนเหล็กของหม้อแปลงจะมีลักษณะเป็นแผ่นบางๆ เคลือบด้วยฉนวน เรียกกันว่า แผ่นลามิเนต

ขดลวดตัวน า ขดลวดตัวน าของหม้อแปลงจะมีลักษณะเป็นขดลวดทองแดงหรืออลูมิเนียมหุ้มด้วยฉนวน โดยทั่วไป หม้อแปลงจะมีขดลวด 2 ชุด คือ ขดลวดปฐมภูมิ(Primary Winding) และขดลวดทุติยภูมิ(Secondary Winding)

ฉนวน ฉนวนของหม้อแปลงจะมีไว้เพ่ือป้องกัน ไม่ให้ขดลวดสัมผัสกับส่วนที่เป็นแกนเหล็ก และป้องกันไม่ให้ขดลวดแต่ละชั้นสัมผัสกัน

หลักการท างาน

Page 21: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 10

การท างานของหม้อแปลงใช้การส่งถ่ายพลังงานไฟฟ้าจากวงจรหนึ่ง(ขดลวดปฐมภูมิ -Primary Winding) ซึ่งกระแสไฟฟ้าที่ป้อนเข้ามาจะสร้างเส้นแรงแม่เหล็ก(Flux) และแรงแม่เหล็ก(Magnetromotive Force) ขึ้นในแกนเหล็ก(Iron Core) กระแสไฟฟ้าที่ไหลในขดลวดเป็นไฟฟ้ากระแสสลับ ขั้วแม่เหล็กที่เกิดขึ้นจึงสลับขั้วกลับไปกลับมาด้วยความเร็วเท่ากับความถี่ไฟฟ้า(Frequency) เส้นแรงแม่เหล็กที่เกิดขึ้นจะเคลื่อนที่ตัดกับขดลวดที่พันอยู่บนแกนเหล็ก ท าให้เกิดการเหนี่ยวน าแรงดันไฟฟ้า( Induce EMF) ไปยังอีกวงจรหนึ่ง(ขดลวดทุติยภูมิ – Secondary Winding) ส่งถ่ายเป็นแรงดันไฟฟ้าและกระแสไฟฟ้าออกมา โดยมีความถ่ีไฟฟ้าเท่ากับความถี่ไฟฟ้าที่ป้อนเข้ามา (ท่ีใช้กันอยู่ปรกติได้แก่ 50-60 เฮิรตซ์)

การท างานของหม้อแปลงไฟฟ้าจะไม่มีส่วนใดเคลื่อนที่เหมือนมอเตอร์ จึงมีการสูญเสียก าลังงานในขณะท างานน้อยกว่ามอเตอร์

2.8 IR Remote รีโมทเป็นอุปกรณ์อิเล็กทรอนิกส์ชนิดหนึ่ง ท างานโดยใช้ ล าแสง ผ่านอินฟาเรดภาคส่งและอินฟาเรด

โมดูลภาครับ โดยล าแสงของอินฟาเรด คนเราจะมองไม่เห็น เพราะเป็นคลื่นในย่านอินฟาเรด ซึ่งเป็นคลื่นที่เกินกว่าที่มนุษย์จะมองเห็น หลักการท างานของ IR Remote มีหลักการดังรูปที่ 2-7

รูปที่ 2-7 block diagram รีโมทคอนโทรล

รีโมทภาคส่งสัญญาณจะมีไอซีที่ท าหน้าที่ส่งความถี่ท่ีเป็นมาตราฐานขึ้น คือ leader low และ leader high สัญญาณถัดมาเป็นความถี่ customer ซึ่งสัญญาณนี้นี้จะท าให้รีโมทมีคลื่นความถี่ที่ไม่ซ้ ากัน เช่น รีโมทแอร์ใช้กับทีวีไม่ได้ รีโมทเครื่อเสียงใช้กับพัดลมไม่ได้ เป็นต้น ในส่วนของสัญญาณนี้จะก าหนดโดยโรงงานผู้ผลิต ต่อมาเป็นส่วนของ Data และ Invert Data เพ่ือส่วนสอบความถูกต้องของ Data

Page 22: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 11

รูปที่ 2-8 Protocol ของสัญญาณรีโมท

2.9 Arduino Pro Mini ในโครงงานนี้ใช้บอร์ด Arduino Pro Mini เป็นบอร์ดทดลองของตระกูล Arduino เพ่ือใช้ติดต่อระหว่าง

แอพพลิเคชั่นและไมโครคอนโทรลเลอร์ โดย Arduino Pro Mini โครงสร้างดังรูปที่ 2-5

รูปที่ 2-9 โครงสร้างของ Arduino Pro Mini

Page 23: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 12

คุณสมบัติของ Arduino Pro Mini

Microcontroller ATmega328 Operating Voltage 3.3V or 5V (depending on model) Input Voltage 3.35 -12 V (3.3V model) or 5 - 12 V (5V model) Digital I/O Pins 14 (of which 6 provide PWM output) Analog Input Pins 8 DC Current per I/O Pin 40 mA Flash Memory 16 KB (of which 2 KB used by boot loader) SRAM 1 KB EEPROM 512 bytes Clock Speed 16 MHz

2.10 การเชื่อมต่อแบบ I2C โดยทั่วไปมีการน าบอร์ดไมโครคอนโทรลเลอร์ อย่างเช่น Arduino มาเชื่อมต่อกับอุปกรณ์อ่ืน เช่น โมดูล

เซนเซอร์หลากหลายประเภท โดยใช้วิธีการสื่อสารข้อมูลตามรูปแบบของบัส I2C โดยฝ่ายหนึ่งจะท าหน้าที่ตามบทบาทท่ีเรียกว่า I2C Master ซึ่งส่วนใหญ่เป็นไมโครคอนโทรลเลอร์ และอีกฝ่ายหนึ่งเป็น I2C Slave ซึ่งอาจมีได้หลายชุด

การสื่อสารผ่านบัส I2C เป็นการสื่อสารแบบ Synchronous & Serial (หมายถึง การส่งข้อมูลทีละบิต และใช้สัญญาณ Clock ในการก าหนดจังหวะการส่งข้อมูล) ข้อดีของการสื่อสารข้อมูลแบบบัส I2C คือ ใช้สายสัญญาณเพียง 2 เส้น คือ SCL (สายสัญญาณ Serial Clock) และ SDA (สายสัญญาณข้อมูล Serial Data) และเป็นสัญญาณแบบ 2 ทิศทาง (Bidirectional) มีวงจรภายในส าหรับ I/O แบบ Open-Drain/Open-Collector (เวลาใช้งานต้องมีตัวต้านทานแบบ Pull-up Resistors ต่ออยู่)

บัส I2C สามารถพ่วงอุปกรณ์ได้หลายอุปกรณ์ แต่ละอุปกรณ์จะมีหมายเลขที่อยู่ (Device Address) ที่ต้องไม่ซ้ ากัน โดยทั่วไปจะใช้หมายเลขที่อยู่ขนาด 7 บิต (7-bit Device Address) ซึ่งระบุได้ถึง 128 อุปกรณ์ หรือถ้ามีมากกว่านั้น จะเป็น 10 บิต (10-bit Device Address)

อุปกรณ์ที่ท าหน้าที่เป็น I2C Master จะเป็นฝ่ายเริ่มการสื่อสารข้อมูล และสร้างสัญญาณ SCL มาควบคุมจังหวะ มีอัตราการส่งข้อมูลอยู่ที่ 100kHz และ 400kHz (บางกรณี ได้สูงกว่า 1MHz) เมื่อไม่มีการสื่อสารใดๆ สถานะลอจิกของ SCL และ SDA เป็น 1 หรือ HIGH เมื่อบัส I2C เริ่มต้นสื่อสาร อุปกรณ์ I2C Master จะส่งบิต Start (หรือเรียกว่า Start Condition) ตามด้วยการส่งไบต์ควบคุม (Control Byte) ออกไปก่อน ซึ่งจะเป็นการระบุหมายเลขของอุปกรณ์ Slave ที่อุปกรณ์ Master ต้องการจะสื่อสารด้วย และในไบต์ดังกล่าวจะมีบิตที่เรียกว่า Read/Write (R/W) Bit ส าหรับระบุว่า จะเป็นการเขียนหรืออ่านข้อมูลต่อจากนั้น ถ้าเป็นบิตเขียน (R/W Bit = 0) อุปกรณ์ Master จะส่งข้อมูลไบต์ไปยังอุปกรณ์ Slave เท่านั้น แต่ถ้าเป็นบิตอ่าน (R/W Bit = 1) ต่อไปจะเป็นการรับข้อมูลไบต์จากอุปกรณ์ Slave เพียงอย่างเดียว นอกจากนั้นในการ

Page 24: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 13

รับส่งข้อมูลแต่ละไบต์ ฝ่ายรับจะต้องท าการส่งบิตที่เรียกว่า ACK (Acknowledge) Bit ซึ่งจะต้องเป็นลอจิก 0 (ดึงสัญญาณ SDA ลง GND) เมื่อ SCL เป็น 1 เพ่ือแจ้งให้ฝ่ายส่งทราบว่า ได้รับข้อมูลไบต์แล้วและพร้อมจะท างานต่อไป ถ้าจบการสื่อสาร ก็จะต้องส่งบิต Stop (หรือเรียกว่า Stop Condition)

การเขียนโปรแกรมส าหรับ Arduino เพ่ือใช้สื่อสารข้อมูลผ่านบัส I2C ก็ท าได้ไม่ยาก เพราะสามารถเรียกใช้ค าสั่งจากไลบรารี่ของ Arduino (ใช้ซอฟต์แวร์ตามเวอร์ชัน 1.0.x) ที่ชื่อว่า Wire และสามารถใช้งานได้ทั้งกรณี I2C Master หรือ I2C Slave ความเร็วในการรับส่งข้อมูลจะอยู่ที่ 100kHz (default) และมีการใช้งานตัวต้านทาน pull-up ที่อยู่ภายในชิปไมโครคอนโทรลเลอร์ของ Arduino อีกด้วย

2.11 ฟังก์ชันและไลบารี่ใน Arduino DS3232RTC Library : เป็นไลบารี่ที่ท าหน้าที่ติดต่อสื่อสารข้อมูลกับ RTC

#include <DS3232RTC.h> เป็นค าสั่งเรียกใช้ Library setSyncProvider(RTC.get) เป็นค าสั่ง sync ข้อมูลเวลาให้ตรงกันระหว่าง Arduino กับ

RTC RTC.set() เป็นค าสั่ง สั่งเซ็ตค่าข้อมูลให้กับ RTC RTC.get() เป็นค าสั่ง อ่านข้อมูลจาก RTC

Time Library : เป็นไลบารี่ที่ท าหน้าทีต่ิดต่อสื่อสารข้อมลูเวลาบน Arduino

#include <Time.h> เป็นค าสั่งเรียกใช้ Library SetTime(ชั่วโมง,นาที,วินาที,วันที่,เดือน,ปี) เป็นค าสั่งเซ็ตเวลาให้กับ Arduino hour(), minute(), second(), day(), month(), year() เป็นค าสั่ง อ่านข้อมูลเวลาจาก

Arduino

IRremote Library : เป็นไลบารี่ที่ท าหน้าที่ติดต่อสื่อสารข้อมูลกับ Remote

#include <IRremote.h> เป็นค าสั่งเรียกใช้ Library irrecv.enableIRIn() เป็นค าสั่งเริ่มท าการรับข้อมูลจาก Remote IRrecv irrecv(receiver) เป็นค าสั่งสร้างตัวแปร Remote decode_results results เป็นค าสั่งสร้างตัวแปร Remote results.value เป็นค าสั่งอ่านค่ารีโมท

Page 25: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 14

บทที ่3 รายละเอียดการท างาน

ในบทนี้จะกล่าวถึง ขั้นตอนการด าเนินงานและการออกแบบการสร้างโครงงานนี้ในแต่ละส่วนขึ้นมา โดยโครงงานมีรายละเอียดดังนี้

3.1 System Specification RED LED จ านวน 8 ดวง สมารถแสดงตัวอักษรได้ 13 ตัวซึ่ง 1 ตัวอักษรมีขนาด 8*6 คอลัมน์ มีตั้งค่าเวลาและวันที่ผ่าน IR Remote มีการรับส่งค่าเวลาและวันที่จาก RTC สมารถแสดงผลนาฬิกาในรูปแบบคิจิตอลและอนาลอกได้รวมถึงแสดงผลนาการตั้งค่าเวลาละวันที่

โดยมีรายละเอียดอุปกรณ์ดังนี้

RED LED 5 mm. : ใช้แสดงผลข้อมูล Arduino pro mini : ควบคุมการท างานทั้งหมด ซึ่งสามารถโปรแกรมได้โดยใช้วอฟแวร์ arduino-

1.6.0 จากทาง Arduino Phototransistor : ใช้ส าหรับก าหนดต าแหน่งของการแสดงผล IC 74HC595 : เป็น Shift Register ใช้ในการส่งข้อมมูลไปแสดงผล LED DS3231 RTC : เก็บข้อมูลเวลา IR Remote Module

3.2 System Architecture

รูปที่ 3-1 Block Diagram ของ Propeller Clock

Page 26: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 15

จากรูปที่ 3-1 โมดูล Real Time Clock by DS3231 ท าหน้าที่ส่งข้อมูลเวลา โมดูล Phototransistor ท าหน้าที่ส่งข้อมูลรีเซ็ตการส่งข้อมูลในแต่ละรอบของการหมุน โมดูล IR Remote จะรับข้อมูลจากผู้ใช้ เช่น การปรับตั้งค่าเวลา ข้อมูลจากทั้ง 3 โมดูลจะถูกส่งไปยังบอร์ด Arduino Pro Mini ท าหน้าทีป่ระมวลผลและส่งข้อมูลให้ วงจรแสดงผล LED แสดงผลต่อไป

3.3 System Design การออกแบบโครงงานนี้ จะแบ่งเป็น 2 ส่วนหลักคือ ในส่วนของการออกแบบวงจรอิเล็กทรอนิกส์และ

การออกแบบการแสดงผล

3.3.1 การออกแบบวงจร วงจรแสดงผล LED จะประกอบไปด้วย 5 ส่วน ได้แก่ ส่วนของวงจร DS3231 RTC Module, วงจรจับ

จังหวะการกระพริบของ LED, วงจร LED แสดงผล, ไมโครคอนโทรลเลอร์และวงจร IR Remote Module

รูปที่ 3-2 Sequence Diagram ของ Propeller Clock

หลักการท างาน จากรูป 3-2 Arduino รับค่าข้อมูลเวลาจาก DS3231 RTC Module และ IR Remote Module มาท าการประมวลผลเพ่ือเตรียมข้อมูลส่งออกไปแสดงผลยัง วงจร LED แสดงผล โดยจะเริ่มส่งข้อมูลเมื่อ วงจรจับจังหวะการกระพริบ(Phototransistor module) ของ LED ท างาน

รูปที่ 3-3 วงจรของ Propeller Clock by Arduino

Page 27: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 16

จากรูป 3-3 ที่พอร์ต SCL และ SDA ของ DS3231 RTC Module ต่อเข้ากับพอร์ต A4 (SDA) และ A5 (SCL) ของบอร์ด Arduino พอร์ตส่งสัญญาณข้อมูลของ IR Remote Module ต่อเข้ากับพอร์ต D10 และ D2 ของบอร์ด Arduino ขาที่ 3 Photo Interrupter ต่อเข้ากับพอร์ต D3 ของบอร์ด Arduino ซ่ึงพอร์ต D2 และ D3 ของบอร์ด Arduino นั้นเป็นพอร์ต Interrupt และพอร์ตที่ D5 D6 และ D9 ของบอร์ด Arduino ต่อเข้ากับขาท่ี 14(DS) 12 (STCP) และ 11(SHCP) ของ IC 74HC595 ตามล าดับ

วงจร DS3231 RTC Module

รูปที่ 3-4 วงจร DS3231 RTC Module

Pin SCL ของโมดูล RTC ต่อกับ Pin A5 ของ Arduino และ Pin SDA ของโมดูล RTC ต่อกับ Pin A4 ของ Arduino ซึ่ ง Pin A4 และ A5 ของ Arduino เป็น Pin ที่ ใช้รับส่งข้อมูลแบบ I2C โดยใช้ ฟังก์ชัน setSyncProvider() ท าการเชื่อมต่อเวลาของ RTC กับเวลาของ Arduino ให้ตรงกับ RTC ฟังก์ชัน RTC.get() เพ่ือรับข้อมูลและฟังก์ชัน RTC.set() เพ่ือส่งข้อมูลให้กับ RTC ซึ่งเป็นฟังก์ชันที่มีอยูใน DS3232RTC-Master Library

วงจรจับจังหวะการกระพริบของ LED จากรูปที่ 3-5 (ขวา) เป็นโครงสร้างของวงจร Propeller Clock และใช้อธิบายการจับจังหวะการ

กระพริบของ LED คือ Photo Interrupter จะท าการส่งสัญญาณอินฟาเรตตลอดเวลา เมื่อมอเตอร์ท างานท าให้ Photo Interrupter มีการตรวจจับวัตถุตัดผ่าน ทรานซิสเตอร์จะท าการส่งค่าแรงดัน Low ให้ ไมโครคอนโทรลเลอร์ไปสั่งการให้เปลี่ยนข้อมูลที่จะส่งไปยัง LED แสดงผลวงจรการจับจังหวะการกระพริบ รูปที่ 3-5(ซ้าย) ในวงจรนี้ได้เลือก Pin D3 ของ Arduino ในการรับ Input จาก Photo Interrupter

รูปที่ 3-5 วงจรจับจังหวะการกระพริบของ LED

Page 28: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 17

วงจรแสดงผล LED Arduino ท าการส่งข้อมูลในรูปแบบสัญญาณ Serial ไปยัง IC 74HC595 และ IC 74HC595 ท าการ Shift ข้อมูลออกมาแบบ Parallel และส่งข้อมูลไปก าหนดสถานะลอจิกให้ขาเอาต์พุตทั้ง 8 ขา (Q0-Q7) ในวงจรนี้ได้เลือก Pin D5 ส่ง Data, Pin D6 ส่งสัญญาณ Latch และ Pin D9 ส่งสัญญาณ Clock Lath ให้ IC 74HC595

รูปที่ 3-6 วงจรแสดงผล LED

วงจร IR Remote Module วงจรนี้เลือกใช้ Pin D10 ของ Arduino ในการรับสัญญาณ Input จาก IR Remote Module

รูปที่ 3-7 วงจร IR Remote Module

Page 29: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 18

วิธีจ่ายไฟเลี้ยงให้วงจร เลือกใช้ Wireless Charging Module ในการส่งไฟเลี้ยงไปยังวงจร คุณสมบัตของ Module มีดังนี ้

รูปที่ 3-8 Wireless Charging Module

3.3.2 การออกแบบการแสดงผล วิธีการออกแบบจังหวะการกระพริบของ LED

การออกแบบการแสดงผลตัวอักษรแบบหมุนให้แสดงผลอย่างสมดุลและสวยงาม ขึ้นอยู่กับรัศมีของ LED ที่แสดงผล ดังนี้

รูปที่ 3-9 วิธีการออกแบบการกระพริบของไดโอด

ขั้นตอนที่ 1 จะต้องทราบ เส้นรอบวงกลมก่อนโดยสูตร 2πr

ขั้นตอนที่ 2 เมื่อได้เส้นรอบวงมาให้ไปหารด้วยขนาดของ LED และระยะห่างของแต่ละตัวอักษรในโครงงานนี้จะใช้รัศมีในการแสดงผล 6 เซนติเมตร ขนาดของ LED และระยะห่างของแต่ละตัวอักษร 0.5 เซนติเมตร สามารถค านวณได้ดังสมการที่ 3-1

2π(10) ÷ 0.75 = 83.77 ประมาณ 83 คอลัมน์ (3-1)

Input Voltage: 5DC Receiver Coil Inductance: 14uH Input Voltage(limits): 5DC Transmit-receive distance: 2-10mm Output Voltage: 5DC Transmitter : 22.1*13.1*3.2mm Output Current(maximum): 1.2A Receiver: 24.2*9.8*5.36mm Output Current(no-load): 30~50mA Coil Diameter: 43mm Transmitted Coil Inductance: 3.7uH Coil Height: 2.3mm

Page 30: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 19

จากสมการที่ได้ น าไปหารด้วยจ านวนคอลัมน์ของตัวอักษร ซึ่งตัวอักษรเป็นเมตตริกซ์มีขนาด 8*6 คอลัมน์จะได้ตัวอักษรประมาณ 13 ตัวอักษร

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

รูปที่ 3-10 รูปแบบการแสดงผลโดยแบ่งเส้นรอบวงการหมุนของ LED เป็นคอลัมน ์

ขั้นตอนที่ 1 จะต้องทราบเวลาที่ใช้ในการหมุน 1 รอบ ซึ่งสามารถท าได้หลายวิธี เช่น วัดค่าจาก sensor นับรอบและค านวณเวลาที่ได้จากการหมุน 1 รอบโดยตรง หรือ ตั้งเวลาที่แน่นอนไว้ เล่น 1 วินาทีแล้วนับจ านวนรอบท่ีหมุนได้ เป็นต้น

ขั้นตอนที่ 2 ในตัวอย่างนี้ใช้โดยใช้ไมโครคอนโทรลเลอร์ช่วยในการนับรอบ วัดค่าจาก sensor นับรอบและค านวณเวลาที่ได้จากการหมุน 1 รอบโดยตรง ดังนั้น ใน 1 รอบจะใช้เวลาประมาณ 0.083 มิลลิวินาที ซึ่งจะน าไปค านวณการหน่วงเวลาการกระพริบของ LED ดังสมการที่ 3-2

time_delay = time_Round ÷ Column (3-2)

เมื่อก าหนดให้ time_delay = ค่าหน่วงเวลาส าหรับการแสดงผล 1 คอลัมน์

time_Round = เวลาที่มอเตอร์หมุนครบ 1 รอบ

Column = จ านวนคอลัมน์ที่ต้องการแสดงผล

ส าหรับตัวอย่างนี้ จะก าหนดการแสดงผลของ LED ไว้ที่ 83 คอลัมน์ และจากเวลาเฉลี่ยในการหมุน 1 รอบของมอเตอร์ที่ใช้ในโครงงานนี้ สามารถค านวณเวลาหน่วงในการกระพริบของ LED ได ้

time_delay = 0.083*10^(-3)/83 = 1 uS

Page 31: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 20

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

3.3.3 การออกแบบการแสดงผลเป็นตัวอัษร การออกแบบรูปแบบตัวอักษรเป็นส่วนส าคัญ ในก าหนดค่าข้อมูลที่ไมโครคอนโทรลเลอร์ต้องส่งข้อมูล

ออกได้เป็นตัวอักษร หรือ รูปแบบ อ่ืนๆ ที่ต้องการ ในวงจรแสดงผล LED จะใช้ LED เรียงกันเป็นแถว 8 แถวคือ LED 8 ดวง และเป็นคอลัมน์ จ านวน 6 คอลัมน์ การแสดงผลเป็นตัวอักษร จากการออกแบบ จะเก็บข้อมูลของการสั่งต่อตัวอักษรเป็นกลุ่มข้อมูลอาร์เรย์ โดยข้อมูลจะเก็บเป็นเลขฐาน 2 หรือ ฐาน 16 ต่อ 1 คอลัมน์ แสดงรูปแบบตัวเลขได้ดังรูปที่ 3-11

รูปที่ 3-11 รูปแบบการแสดงผลอกัษร

วิธีออกแบบตัวอักษร เนื่องจากวงจรแสดงผล LED แบบหมุน จะมี LED เรียงกัน 8 ดวง เป็น 1 คอลัมน์ ในการแสดงผลจน

เห็นเป็นตัวอักษรนั้น จะใช้การหมุนที่มีความเร็วมาก ท าให้จังหวะการกระพริบของ LED ก็จะเร็วตามรอบของการหมุน จนสายตาของคนมองไม่ทัน และ เห็นเป็นตัวอักษรแสดงออกมานั่นเอง

ตัวอย่างการแสดงผล ถ้าต้องการตัวเลข

รูปที่ 3-12 วิธีการแสดงผลตัวเลข

Page 32: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 21

จากจุดเริ่มต้น ตัดผ่านวัตถุ

ส่งค่าข้อมูล 0x40 ส่งค่าข้อมูล 0xFE

ชุดข้อมูลตัวอักษร เป็นชุดข้อมูลของเลขที่ได้ออกแบบเพ่ือให้ไมโครคอนโทรลเลอร์ส่งข้อมูลชุดนี้ออกที่ขา I/O เพ่ือไป

แสดงผล LED ครั้งละ 1 คอลัมน์ แสดงได้ตามตารางที่ 3-1

ตารางที่ 3-1 ชุดข้อมูลตัวอักษร

a 0x20,0x54,0x54,0x54,0x78,0x00 A 0x7e, 0x09, 0x09, 0x09, 0x7e , 0x00 b 0x7f,0x48,0x44,0x44,0x38,0x00 B 0x7f, 0x49, 0x49, 0x49, 0x36 , 0x00 c 0x38,0x44,0x44,0x44,0x20,0x00 C 0x3e, 0x41, 0x41, 0x41, 0x22 , 0x00 d 0x38,0x44,0x44,0x48,0x7f,0x00 D 0x7f, 0x41, 0x41, 0x41, 0x3e , 0x00 e 0x38,0x54,0x54,0x54,0x18,0x00 E 0x7f, 0x49, 0x49, 0x49, 0x41 , 0x00 f 0x08,0x7e,0x09,0x01,0x02,0x00 F 0x7f, 0x09, 0x09, 0x09, 0x01 , 0x00 g 0x0c,0x52,0x52,0x52,0x3e,0x00 G 0x3e, 0x41, 0x49, 0x49, 0x7a , 0x00 h 0x7f,0x08,0x04,0x04,0x78,0x00 H 0x7f, 0x08, 0x08, 0x08, 0x7f , 0x00 i 0x00,0x44,0x7d,0x40,0x00,0x00 I 0x00, 0x41, 0x7f, 0x41, 0x00 , 0x00 j 0x20,0x40,0x44,0x3d,0x00,0x00 J 0x20, 0x40, 0x41, 0x3f, 0x01 , 0x00 k 0x00,0x7f,0x10,0x28,0x44,0x00 K 0x7f, 0x08, 0x14, 0x22, 0x41 , 0x00 l 0x00,0x41,0x7f,0x40,0x00,0x00 L 0x7f, 0x40, 0x40, 0x40, 0x40 , 0x00 m 0x7c,0x04,0x18,0x04,0x78,0x00 M 0x7f, 0x02, 0x0c, 0x02, 0x7f , 0x00 n 0x7c,0x08,0x04,0x04,0x78,0x00 N 0x7f, 0x04, 0x08, 0x10, 0x7f , 0x00 o 0x38,0x44,0x44,0x44,0x38,0x00 O 0x3e, 0x41, 0x41, 0x41, 0x3e , 0x00 P 0x7c,0x14,0x14,0x14,0x08,0x00 P 0x7f, 0x09, 0x09, 0x09, 0x06 , 0x00 q 0x08,0x14,0x14,0x18,0x7c,0x00 Q 0x3e, 0x41, 0x51, 0x21, 0x5e , 0x00 r 0x7c,0x08,0x04,0x04,0x08,0x00 R 0x7f, 0x09, 0x19, 0x29, 0x46 , 0x00 s 0x48,0x54,0x54,0x54,0x20,0x00 S 0x46, 0x49, 0x49, 0x49, 0x31 , 0x00 t 0x04,0x3f,0x44,0x40,0x20,0x00 T 0x01, 0x01, 0x7f, 0x01, 0x01 , 0x00 u 0x3c,0x40,0x40,0x20,0x7c,0x00 U 0x3f, 0x40, 0x40, 0x40, 0x3f , 0x00 v 0x1c,0x20,0x40,0x20,0x1c,0x00 V 0x0f, 0x30, 0x40, 0x30, 0x0f , 0x00 w 0x3c,0x40,0x30,0x40,0x3c,0x00 W 0x3f, 0x40, 0x30, 0x40, 0x3f , 0x00 x 0x44,0x28,0x10,0x28,0x44,0x00 X 0x63, 0x14, 0x08, 0x14, 0x63 , 0x00 y 0x0c,0x50,0x50,0x50, 0x3c 0x00 Y 0x07, 0x08, 0x70, 0x08, 0x07 , 0x00 z 0x44,0x64,0x54,0x4c,0x44,0x00 Z 0x61, 0x51, 0x49, 0x45, 0x43 , 0x00

0 0x3e,0x51,0x49,0x45,0x3e ,0x00 4 0x18,0x14,0x12,0x7f,0x10,0x00 8 0x36,0x49,0x49,0x49,0x36,0x00 1 0x00,0x42,0x7f,0x40,0x00,0x00 5 0x27,0x45,0x45,0x45,0x39,0x00 9 0x06,0x49,0x49,0x29,0x1e,0x00 2 0x42,0x61,0x51,0x49,0x46,0x00 6 0x3c,0x4a,0x49,0x49,0x30,0x00 3 0x21,0x41,0x45,0x4b,0x31,0x00 7 0x01,0x71,0x09,0x05,0x03,0x00

Page 33: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 22

3.4 System Implementation เป็นการทดลองสร้างฟังก์ชันควบคุม LED และทดลองสร้างฟังก์ชันในการรับส่งค่าจาก DS3231 For Pi

module กับ IR remote module

3.4.1 การรับข้อมูลจาก IR Remote Module การรับข้อมูลจาก IR Remote Module มีวงจรดังรูปที่ 3-13

รูปที่ 3-13 วงจรรับค่า Arduino กับ IR Remote Module

จากรูปที่ 3-13 IR Remote Module มีพอร์ตที่ใช้รับส่งข้อมูลเพียงพอร์ตเดียวเท่านั้น คือพอร์ต S ซ่ึงเป็นการส่งข้อมูลแบบ Serial

โปรแกรมในการควบคุมการรับค่าจาก IR Remote Module ใช้ไลบารี่ IRremote.h ซึ่งเป็นไลบารี่ที่มีฟังก์ชันที่ท าให้พอร์ตธรรมดาสามารถรับค่าแบบ Serial ได้และอ่านค่าจาก IR Remote Module ได ้

รูปที่ 3-14 โปรแกรมรับข้อมลูจาก IR Remote Module

Page 34: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 23

3.4.2 การรับข้อมูลจาก DS3231 RTC Module การรับข้อมูลจาก DS3231 RTC Module มีวงจรดังรูปที่ 3-16

รูปที่ 3-15 วงจรรับค่า Arduino กับ DS3231 RTC Module Module

DS3231 RTC Module มีพอร์ตที่ใช้รับส่งข้อมูลด้วยกัน 2 พอร์ตคือ SCL และ SDA โดยพอร์ตทั้งสองเป็นพอร์ตรับส่งข้อมูลชนิด I2C ซึ่งในบอร์ด Arduino pro mini มีพอร์ตที่สนับสนุนการรับส่งข้อมูลชนิด I2C คือ พอร์ต A4 (SDA) และ A5 (SCL)

รูปที่ 3-16 ผลการรันโปรแกรมรับส่งข้อมูล DS3231 RTC Module

จากรูปที่ 3-16 เป็นผลการรันโปรแกรมการรับส่งข้อมูล DS3231 RTC Module กับบอร์ด Arduino ทางพอร์ต Serial

Page 35: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 24

3.4.3 วงจรแสดงผล LED เมื่อ Photo interrupter มีการตรวจจับวัตถุผ่าน โปรแกรมเริ่มอ่านข้อมูลเวลาจาก RTC และน ามา

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

รูปที่ 3-17 การท างานบนวงจรจริง

รูปที่ 3-18 การท างานของโปรแกรมแสดงผล LED

3.4.4 การแสดงผลนาฬิกาดิจิตอล การแสดลผลในรูปแบบนี้จะแสดงผลข้อมูล ชั่วโมง นาที วินาที และวัน ตามรูปที่ 3-19

รูปที่ 3-19 การแสดผลนาฬิกาดิจติอล

Page 36: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 25

3.4.5 การแสดงผลนาฬิกาอนาล็อก การแสดลผลในรูปแบบนี้จะแสดงผลข้อมูลนาฬิกาอนาล็อกทั่วไป แต่เข็มวินาทีจะวนเป็นขอบของ

นาฬิกาดังรูปที่ 3-20

รูปที่ 3-20 การแสดงผลนาฬิกาอนาล็อก

3.4.6 การตั้งค่าเวลา ผ่าน IR Remote การตั้งค่าเวลา ผ่าน IR Remote เป็นโหมดหนึ่งของ Propeller Clock ที่ใช้ในการตั้งค่าเวลา การ

เรียกใช้โหมดนี้ท าได้โดยการกดปุ่ม * และ # บนรีโมท โดยปุ่ม * เป็นการตั้งค่าในส่วนของเวลา คือ ชั่วโมง นาที และวินาที และปุ่ม # เป็นการตั้งค่าในส่วนของวัน เดือน และปี การกดปุ่ม > และ < เป็นการเลื่อนต าเหน่งของตัวชี้ต าแหน่งที่ต้องการป้อนข้อมูล การตั้งเวลานั้นสมารถกดปุ่มตัเลขเพ่ือป้อนข้อมูล และปุ่ม ok เป็นการน าข้อมูลที่รับมาจากผู้ใช้ ไปท าการเว็ตเวลาให้กับ RTC และเมื่อกด * และ # อีกครั้งในโหมดนั้นจะเป็นการออกจากโหมดกการตั้งค่าเวลา

รูปที่ 3-21 (ซ้าย) การแสดงผลหน้าการตั้งค่าเวลา (ขวา) การแสดงผลหน้าการตั้งค่าวันท่ี

จากรูป 3-21(ซ้าย) 2 ตัวอักษรแรกเป็นข้อมูลชั่วโมง 2 ตัวอักษรตรงกลางข้อมูลนาทีและ 2 ตัวอักษรสุดท้ายเป็นข้อมูลวินาที 3-22(ขวา) 2 ตัวอักษรแรกเป็นข้อมูลวันที่ 2 ตัวอักษรตรงกลางข้อมูลเดือนและ 2 ตัวอักษรสุดท้ายเป็นข้อมูลปี

Page 37: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 26

3.5 แผนการด าเนนิงาน ตารางที่ 3-2 แผนการด าเนินงาน Prepare Project

การด าเนินงาน / ระยะเวลา

ปีการศึกษา พ.ศ.2556

มิถุนายน กรกฎาคม สิงหาคม กันยายน

1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4

ศึกษาค้นคว้าหาข้อมูลและรวบรวมข้อมูล

ทดลองเขียนโปรแกรมควบคุมสีของ RGB LED

ทดลองรับค่า เวลา จาก Tiny RTC I2C Module

ทดลองอ่านด่าจาก IR Remote Module

Page 38: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 27

ตารางที่ 3-3 แผนการด าเนินงาน Project 1

การด าเนินงาน / ระยะเวลา

ปีการศึกษา พ.ศ.2557

มกราคม กุมภาพันธ์ มีนาคม เมษายน

1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4

ออกแบบวงจร

ทดลองและประกอบวงจร

โค้ดแสดงผลนาฬิกาแบบ Digital

โค้ดตัง้ค่าเวลาผ่าน IR Remote

Page 39: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 28

ตารางที่ 3-4 แผนการด าเนินงาน Project 2

การด าเนินงาน / ระยะเวลา

ปีการศึกษา พ.ศ.2557

มิถุนายน กรกฏาคม

1 2 3 4 1 2 3 4

แสดงผลนาฬิกาอนาล็อก

ทดสอบ แก้ไขปรับจูน โค้ดนาฬิกาและโค้ดร๊โมท

Page 40: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 29

บทที ่4 ผลการด าเนินงาน

ในบทนี้เป็นการอธิบายการถึงการสร้าง Propeller Clock by Arduino รวมถึงการทดลองการท างานในขั้นตอนต่างๆ ของวงจรและโปรแกรม ซึ่งจะมีรายละเอียดดังต่อไปนี้

4.1 การสร้าง Propeller Clock 4.1.1 การสร้างใบพัดของ Propeller Clock

ท าการน าอุปกรณ์ต่างๆ คือ บอร์ด Arduino, IR Remote Module, DS3231 RTC Module, RED LED 8ดวง , IC 74HC595, Photo Interrupt และ Wireless Changing Module มาบัดกรีบน PCB ที่ ได้ออกแบบไว้ตามรูปที่ 3-3

รูปที่ 4-1 ใบพัดของ Propeller Clock

จากรูปที่ 4-1 มุมทั้ง 4 ของใบพัดมีการถ่วงน้ าหนักซ้ายขวาเพ่ือสร้างความสมดุลไม่ให้มอเตอร์หมุนสั่นมากเกินไป

Page 41: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 30

4.1.2 แรงดันที่เหมาะสมกับความเร็วมอเตอร์ เป็นการทดสอบแรงดันที่ใช้ในการควบคุมความเร็วของมอเตอร์ โดยใช้ หม้อแปลงไฟฟ้าขนาด 12 โวลต์

5 แอมป์ ใช้ตัวต้านปรับค่าได้เป็นตัวปรับแรงดันที่เหมาะสม โดยแรงดันที่ใช้คือ 10 โวลต์ ท าให้ LED แสดงผลได้เหมาะสม เนื่อจากแรงดันที่มากกว่านี้จะท าให้การแสดงผลเกิดการกระพริบจึงท าเห็นได้ไม่ชัดเจน

รูปที่ 4-2 การปรับแรงดันท่ีเหมาะสมกับความเร็วมอเตอร ์

4.1.3 การจ่ายแรงดันให้กับใบพัด Voltage step down Module ท าการแปลงไฟ 12 โวลต์ จากหม้อแปลงไฟฟ้าเป็น 5 v เพ่ือจ่ายไฟ

ให้กับ Wireless changing Module ภาคส่ง

รูปที่ 4-3 การจ่ายแรงดันให้กับใบพัด

จากรูปที่ 4-3 เป็นการวัดค่าแรงดันเอาท์พุตของ voltage step down Module เพ่ือจ่ายแรงดันให้กับ Wireless changing Module ภาคส่ง(ซ้าย)

Page 42: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 31

4.1.4 การรวมวงจรใบพัดกับมอเตอร์ ได้น าวงจรแสดงผลที่ได้วงจรใบพัดกับมอเตอร์ เมื่อรวมทั้ง 2 ส่วนเข้าด้วยกัน และ ท าการทดสอบการ

แสดงผล สามารถเห็นข้อความแสดงออกมาตามที่ได้โปรแกรมไว้ในบอร์ด Arduino ท าให้ได้วงจร Propeller Clock by Arduino ขึ้นมา

รูปที่ 4-4 Propeller Clock by Arduino

จากรูปที ่4-4 เป็นโครงสร้างของ Propeller Clock by Arduino

รูปที่ 4-5 การทดสอบ Propeller Clock by Arduino

Voltage step down Module

วงจรแสดงผล LED (ใบพัด)

Wireless Changing Module

หม้อแปลงไฟฟ้า

Page 43: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 32

4.2 การทดสอบการท างานของนาฬิกา 4.2.1 การทดสอบการท างานของ IR Remote

เป็นผลการรันโปรแกรมรับข้อมูลจาก IR Remote Module เมื่อกดปุ่มต่างๆ บนรีโมท

รูปที่ 4-6 ผลการรันโปรแกรม รับข้อมูลจาก IR Remote Module

4.2.2 การทดสอบหน้าการแสดงผล ท าการออกแบบการแสดงผลไว้ทั้งหมด 6 หน้า คือ หน้าแสดงผลข้อความ, หน้าแสดงผลนาฬิกา

ดิจิตอล, หน้าแสดงผลนาฬิกาอนาลอก, หน้าแสดงผลวันที่, หน้าแสดงผลตั้งค่าเวลาและหน้าการแสดงตั้งค่าวันที่ ในระหว่างการทดลองมีการปรับจูนต าเหน่งต่างๆ เพ่ือเป็นตามที่ออกแบบไว้ ได้ผลการทดลองหลังปรับจูนดังนี้

รูปที่ 4-7 หน้าแสดงผลข้อความ รูปที่ 4-8 หน้าแสดงผลนาฬิกาดิจติอล

Page 44: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 33

รูปที่ 4-9 หน้าแสดงผลนาฬิกาอนาลอก รูปที่ 4-10 หน้าแสดงผลวันท่ี

รูปที่ 4-11 หน้าแสดงผลตั้งค่าเวลา รูปที่ 4-12 หน้าการแสดงตั้งค่าวันท่ี

4.2.3 การทดสอบรีโมทในการเปลี่ยนโหมดนาฬิกา มีการก าหนดปุ่มต่างๆบนรีโมทเพ่ือเปลี่ยนโหมดนาฬิกาโดยมีการก าหนดตามรูปที่ 4-3 ซึ่งผลการทดลอง

เมื่อกดรีโมทสามารถเปลี่ยนหน้าการแสดงผลได้แต่ภาครับจะรับสัญญาณค่อนข้างยากเนื่องจากวงจรหมุนอยู่

รูปที่ 4-13 โหมดการท างานของรโีมท

X คือ ปุ่มใดๆที่ไม่มีในตาราง

Page 45: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 34

บทที ่5 สรุปผลการด าเนินงาน

ในบทนี้เป็นการสรุปผลการทดลอง ตรวจสอบปัญหาและอุปสรรคของการท างาน

5.1 สรุปผลผลการด าเนินงาน สามารถแสดงผลนาฬิกาได้ทั้ง 2 รูบแบบคือ อนาล็อกและดิจิตอล การแสดงผลหน้าการตั้งค่าเวลาและ

วันที่ รวมถึงการน า IR Remote มาใช้ในการตั้งค่า RTC Module ได้บนวงจรจริง

5.2 ปัญหาและอุปสรรค การปรับจูนการแสดงผล มีน า IR Remote มารวมเข้ากับวงจรท าให้ column ของข้อมูลแสดงผลลดลง รีโมทกดง่ายขึ้นแต่ยังมีบั๊คในบางส่วน มอเตอร์มีอาการสั่น

5.3 ข้อเสนอแนะ / แนวทางการพัฒนาต่อ เพ่ิมจ านวน LED เพ่ือพัฒนาต่อเป็น Display เปลี่ยน LED เป็น RGB เพ่ิมวงจรควบคุมมอเตอร์

Page 46: บทคัดย่อ - DEPARTMENT OF COMPUTER …intranet.coe.phuket.psu.ac.th/pdb/download/2015-07-29-517-YHG74.pdf · Propeller Clock by Arduino i ชื่อโครงงาน

Propeller Clock by Arduino 35

บรรณานุกรม [1] Maxwell LED Lighting Design Co., Ltd,

http://www.ledmaxwell.com/index.php?option=com_content&view%20%09%09%09=article&id=90&Itemid=158&lang=th , Access time: June 17, 2013.

[2] wara.com, http://wara.com/modules.php?name=project&file=showproject&sid=196 Access time: June 17, 2013.

[3] webmaster @ mind-tek.net, http://www.mind-tek.net/contact.php , Access time: June 18, 2013.

[4] LEDThaisocial , http://www.ledthaisocial.com/?cat=3 , Access time: June 18, 2013.

[5] google.com, https://sites.google.com/site/mixcolorledrgb/producer , Access time: June 18, 2013.

[6] punyisa.com , http://www.punyisa.com/photoshop/graphic/graphic4.html , Access time: June 23, 2013.

[7] scribd.com, http://www.scribd.com/doc/16629200/-Propellor-Clock-v1-Full- Know2Procom , Access time: June 23, 2013.

[8] Energy Design Concept Co. (EDCO), http://www.edco.co.th/index.php?option=com_content&view=article&id=161:-led-light-emitting-diode&catid=45:article&Itemid=144 , Access time: June 29, 2013.

[9] หลักการท างานของมอเตอร์กระแสตรง, http://www.sec.psu.ac.th/download/mculab/mcu_html/DC_motor.htm , Access time: July 17 2013.

[10] การใช้การจบัจังหวะจากตัวสง่-รบัอินฟราเรดในการจบัต าแหน่งการแสดงผล, http://www.know2pro.com/my-project/101-propellorclock-v1/302-propellor-clock-v1--1--1 , Access time: July 17 2013.

[11] รีโมทคอนโทรล, http://thai-maker.com/index.php?topic=22.0 , Access time: August 15 2013.

[12] IR-RemoteControl, http://arduino-info.wikispaces.com/IR-RemoteControl , Access time: September 1 2013.

[13] Arduino Love electronics RTC – DS3231 wiring example and tutorial., http://www.l8ter.com/?p=417 , Access time: August 1 2013.

[14] Tiny RTC, http://www.elecrow.com/wiki/index.php?title=Tiny_RTC , Access time: August 14 2013.

[15] คูม่ือการโปรแกรม Arduino board, http://www.logicthai.net/node/10 , Access time: August 17 2013.