The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

โมดูลที่ 2 พัฒนาซอฟต์แวร์สำหรับระบบสมองกลฝังตัว

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by Chaiya Tanaphatsiri, 2021-09-10 23:20:16

อาชีพนักพัฒนาระบบสมองกลฝังตัว โมดูลที่ 2

โมดูลที่ 2 พัฒนาซอฟต์แวร์สำหรับระบบสมองกลฝังตัว

บทเรยี นโมดลู ที่ 2
สมรรถนะย่อยที่ 1-5
หนงั สืออิเลก็ ทรอนกิ ส์ e-book

อสามชอีพงกลฝังตวันกั พฒั นาระบบ

คณะครศุ าสตร์อตุ สาหกรรมและเทคโนโลยี มหาวทิ ยาลัยเทคโนโลยีราชมงคลศรวี ิชยั
ทุนอดุ หนุนการวจิ ยั จากสานกั งานคณะกรรมการกองทุนส่งเสรมิ วิทยาศาสตร์ วิจัยและนวัตกรรม

ประจาปงี บประมาณ 2564

นสกั มพอฒั งนกาลรฝะังบตบวั

บทเรียนโมดูล หลักสูตรอาชีพนักพัฒนาระบบสมองกลฝังตวั

โมดูลที่ 2 เรือ่ งพฒั นาซอฟต์แวร์สาหรับระบบสมองกลฝังตวั

คาแนะนาการใชบ้ ทเรียนโมดูล

ข้ันตอนการใชบ้ ทเรยี นโมดลู
1. ศึกษาคาแนะนาการใชบ้ ทเรียนและโครงสรา้ งบทเรียนโมดูล
2. ทาแบบทดสอบก่อนเรียนเพือ่ ตรวจสอบความรพู้ น้ื ฐานของตนเอง
3. การศึกษาบทเรยี นโมดลู นกั เรียนสามารถศกึ ษาเป็นรายบคุ คลหรือรายกล่มุ ยอ่ ยจานวน 3 – 5 คน
4. ศึกษารายละเอียดของเน้ือหาแต่ละตอน พร้อมท้ังทาตามกิจกรรมต่าง ๆ ที่กาหนดในบทเรียนเช่น บันทึก
เน้ือหาทาการทดลอง ทาแบบฝกึ หดั หรอื กจิ กรรมอ่ืน ๆ ตามท่ีกาหนดไวใ้ นโมดูล
5. ตรวจแบบฝึกหัดหรือกิจกรรม จากแนวคาตอบท้ายโมดูลเพื่อตรวจสอบว่านักเรียนมีความเข้าใจในเนื้อหาน้ัน
ๆ หรือไม่ ถ้าผิดนกั เรียนควรทาการศึกษาอีกคร้ังพร้อมท้ังปรึกษาเพ่ือนในกลุ่มและซักถาม ครูผู้สอนให้เกิดความ
เขา้ ใจก่อนทาการศึกษาต่อไป
6. ทาแบบทดสอบหลังเรียน เพื่อตรวจสอบว่าตนเองมีความรู้ผ่านเกณฑ์การประเมิน โดยมีเกณฑ์การประเมิน
รอ้ ยละ 80 และ ให้ผ่านไปเรียนโมดูลตอ่ ไป
7. นักเรยี นท่ีไมผ่ า่ นเกณฑ์การประเมนิ ร้อยละ 80 ให้นกั เรียนเรยี นซ่อมเสริม และให้กลับไปศึกษาเน้ือหาในโมดูล
ตามขน้ั ตอนอีกครัง้ พร้อมทงั้ ปรกึ ษาและซกั ถามครจู นเกิดความเข้าในเน้ือหาแลว้ จงึ ทา
แบบทดสอบหลงั เรียนชุดเดมิ อกี คร้ัง ถ้าผ่านเกณฑก์ ารประเมนิ จงึ เรียนโมดลู ต่อไป
8. ขณะทากิจกรรมนักเรียนต้องมีความซื่อสัตย์ต่อตนเอง โดยต้องไม่ดูแนวทางการตอบเพราะจะไม่มีประโยชน์
ใด ๆ ต่อนักเรียน
9. การเรียนรู้ด้วยวิธีน้ี นักเรียนจาต้องซื่อสัตย์ต่อตนเองและมีความเช่ือมั่นในตนเองว่าทุกคนมีสามารถในการ
เรยี นและผ่านเกณฑ์การประเมินผลท่กี าหนดไว้ไดห้ ากมคี วามต้งั ใจจรงิ และมีความมุ่งม่ัน

นสักมพอัฒงนกาลรฝะงับตบวั สารบัญ

คาแนะนาการใชบ้ ทเรยี นโมดลู หนา้
ขนั้ ตอนการใช้บทเรียนโมดลู
เขียนโปรแกรม ควบคมุ แบบแยกสว่ นเป็นโมดูล สาหรับระบบสมองกลฝงั ตัว 1
1
การเลอื กใช้โปรแกรมสาเร็จรปู สาหรับระบบสมองกลฝงั ตวั และติดต้ังโปรแกรม 8
การใชง้ านโปรแกรม Arduino IDE เบือ้ งต้น
12
รวบรวมโปรแกรมย่อยทุกส่วนเขา้ เป็นโปรแกรมระบบ 12
การทาโปรแกรมระบบ 14
การตรวจสอบการทางานของโปรแกรมระบบ
16
ปฏบิ ตั ิการใชเ้ คร่ืองมอื ในการสร้างซอฟต์แวร์และตดิ ตงั้ ลงบอร์ด 16
คณุ สมบัตอิ ุปกรณ์ตดิ ต้งั ซอฟตแ์ วร์ลงบอรด์
22
ตรวจสอบความผดิ พลาด Code Warning และ Error 22
การตรวจสอบความผดิ พลาดและแกไ้ ข Code Warning และ Error
33
ทดสอบระบบสมองกลฝงั ตัว 33
การทดสอบระบบการทางานสมองกลฝังตวั
37
บรรณานกุ รม
38
แหลง่ อ้างองิ รูปภาพ

1 นสักมพอัฒงนกาลรฝะงับตบวั

บทเรยี นโมดลู หลกั สตู รอาชพี นักออกแบบและพัฒนาระบบอเิ ลก็ ทรอนกิ สอ์ ัตโนมตั ิ
เรอื่ ง พฒั นาซอฟต์แวรส์ าหรบั ระบบสมองกลฝงั ตัว

1. เขียนโปรแกรม ควบคมุ แบบแยกสว่ นเปน็ โมดลู สาหรับระบบสมองกลฝังตัว

ในการเลือกใช้โปรแกรมที่จะเขียน
คาสั่ง ส่วนใหญ่โปรแกรมการเขียนคาส่ัง
จะเป็นในทางเดียวกัน แต่ที่แตกต่าง คือ
หน้าตา เครื่องมือท่ีผู้ใช้ถนัด โ ดย
โปรแกรมท่ีส่วนใหญ่นิยมมี 3 โปรแกรม
ดังนี้
1) Arduino IDE (Arduino Integrated

Development Environment)

รปู ท่ี 1.1 โปรแกรม Arduino IDE [1]

Arduino Integrated Development Environment (IDE) หรือท่ีเรียกว่าArduino
Environment Environment เปน็ โปรแกรมท่ีออกแบบมาเพื่อให้ง่ายต่อการเขียนซอฟต์แวร์สาหรับแพลตฟอร์ม
โอเพน่ ซอร์สน้ี แพลตฟอรม์ Arduino เป็นแพลตฟอร์มอิเล็กทรอนิกส์ยอดนิยมท่ีออกแบบมาเพื่อลดความซับซ้อน
ของกระบวนการออกแบบอุปกรณ์อิเล็กทรอนิกส์ การใช้งานทั่วไป ได้แก่ หุ่นยนต์เทคโนโลยีการปรับปรุงบ้าน
คอมพิวเตอร์ที่สวมใส่ได้และแอปพลิเคชันอิเล็กทรอนิกส์ท่ีแปลกใหม่ ส่ิงประดิษฐ์ Arduino ส่วนใหญ่ได้รับการ
พัฒนาโดยใช้ Arduino IDE

2) Notepad++ 2สมนอกั พงกัฒลนฝารังะตบัวบ

โปรแกรม text editor ที่ดีท่ีสุด ด้วย
ความสามารถที่เทียบเท่าและดีกว่าโปรแกรม Edit
plus ที่ทุกคนเคยใช้มาในอดีต ไม่ว่าจะเป็นการแก้ไข
source code ซ่ึงรองรับ syntax ในรูปแบบ
โปรแกรมได้หลากหลาย หรือแม้กระท่ังจะนามาใช้
แทนโปรแกรม Notepad แบบธรรมดาในโปรแกรม
windows ก็สามารถทาได้เลย

รูปท่ี 1.2 โปรแกรม Notepad ++ [2] เป็นโปรแกรมแก้ไขซอร์สโค้ดที่
3) Visual Studio Code พัฒนาโดยไมโครซอฟท์สาหรับ
Windows, Linux และ macOS
รูปท่ี 1.3 โปรแกรม Visual Studio Code [3] มีการสนับสนุนสาหรับการดีบัก
การควบคุม Git ในตัวและ
GitHub การเน้นไวยากรณ์ การ
เติมโค้ดอัจฉริยะ ตัวอย่าง และ
code refactoring มันสามารถ
ปรับแต่งได้หลายอย่าง ให้ผู้ใช้
สามารถเปล่ียนธีม แป้นพิมพ์ลัด
การตั้งค่า และติดตั้งส่วนขยายท่ี
เพ่ิมฟังก์ชันการทางานเพ่ิมเติม
ซอร์สโค้ดน้ันฟรีและโอเพนซอร์ส
และเผยแพร่ภายใต้สิทธิ์การใช้
งาน MIT ไบนารีที่คอมไพล์แล้ว
เป็นฟรีแวร์และฟรีสาหรับการใช้
ส่วนตวั หรือเพ่อื การคา้

3 นสักมพอัฒงนกาลรฝะงับตบวั

1.1 การติดตงั้ โปรแกรม Arduino IDE
ข้ันตอนแรกจะเปน็ การติดต้ัง โปรแกรม Arduino IDE

1. ดาวนโ์ หลด Arduino IDE โดยไปที่ https://www.arduino.cc และไปท่ี click ท่ี Download

รปู ท่ี 1.4 หน้าแรกเว็บไซต์ Arduino [4]

2. เลือกระบบปฎิบตั ิการของเครอ่ื งคอมพิวเตอรท์ ใ่ี ช้ในการเขยี นโปรแกรม Arduino

รูปท่ี 1.5 โหลดเวอรช์ ั่นของ Arduino IDE [4]

4สมนอกั พงกฒั ลนฝารงั ะตบวั บ

3. กด JUST DOWNLOAD (หากต้องการร่วมบริจาคช่วยการพัฒนา Arduino Software

สามารถกด CONTRIBUTE & DOWNLOAD)

รปู ที่ 1.6 ปุ่มดาวนโ์ หลดโปรแกรม [4]

4. บันทึกไฟล์ ติดต้ังโ ปรแกรมไปยัง

โฟลเดอร์ทต่ี อ้ งการ

5. Unzip ไฟล์ arduino-1.8.15
6. คลกิ ทีไ่ ฟล์ arduino.exe

รปู ที่ 1.7 โปรแกรม Arduino [4]

5 นสกัมพอฒั งนกาลรฝะังบตบวั

7. หนา้ ต่างโปรแกรม Arduino จะปรากฏขึน้ ดงั รูป

รปู ท่ี 1.8 หนา้ แรกของโปรแกรม Arduino [4]
1.2 การใช้งานโปรแกรม Arduino IDE เบ้อื งต้น]
ในการเขียนโปรแกรมแบบแยกส่วนผู้ต้องรู้จักการใช้งานโปรแก
รเบือ้ งต้น มกี ารใชง้ านดังน้ี
1) การสรา้ งไฟล์ใหม่ เปน็ การสรา้ งโปรเจ็คงานเพือ่ เขียนคาสั่งโดย
เข้าไปที่ File > New

รูปที่ 1.9 การสร้างไฟลใ์ หม่ [5]

6สมนอกั พงกฒั ลนฝารงั ะตบวั บ

2) การติดตง้ั Library มี 2 วิธี ดงั นี้
ตดิ ตัง้ Library จาก ตวั โปรแกรม Arduino IDE

เปิด Arduino IDE ข้ึนมา กดที่ เมนู Sketch >>
Include Library >> Manage Libraries...

รปู ท่ี 1.10 การเพิ่ม Library จาก Manage Libraries [5]

จากนั้นจะขึน้ หน้าตา่ งตามภาพ

รปู ท่ี 1.11 การเพ่มิ Library จาก Manage Libraries [5]

ตดิ ต้ังแบบ Winzip หาโหลดจาก Google
ผูเ้ รียนสามารถค้นหา Library จาก Google ไดเ้ ช่น การค้นหา Library เซนเซอร์ dht 22

7 นสกัมพอฒั งนกาลรฝะังบตบวั

รูปท่ี 1.12 การคน้ หา Library เซนเซอร์ dht 22) [5]

เมอื่ เขา้ เวบ็ ไซตป์ ุ่มดาวน์โหลดจอยู่ใน
Code > Download Zip

รปู ที่ 1.13 การดาวน์โหลด Library จากเวบ็ ไซต์ [5]

เมอื่ ทาการดาวนม์ าแลว้ โหลดเปดิ
Arduino IDE ขนึ้ มา กดที่ เมนู Sketch
>> Include Library >> Add

.ZIP Library

รูปท่ี 1.14 การตดิ ตง้ั Library จากภายนอก [5]

8สมนอักพงกัฒลนฝารังะตบวั บ

จากนน้ั ให้เรา เลอื กไฟล์ทา่ ดาวน์
โหลดมา แลว้ กด Open ก็เสรจ็
ขนั้ ตอนการตดิ ตง้ั แบบ ZIP

รปู ท่ี 1.15 การตดิ ต้งั Library จากภายนอก [5]

โครงสรา้ งพ้ืนฐานของภาษาซที ่ใี ชก้ ับ Arduino น้ันจะประกอบไปด้วย 3 สว่ นใหญๆ่ ดว้ ยกนั คอื

รูปที่ 1.16 Library Header [6]
1. Header ในสว่ นนจ้ี ะมีหรือไม่มีก็ได้ ถา้ มตี ้องกาหนดไวใ้ นส่วนเร่ิมต้นของโปรแกรม ซ่ึงส่วนของ Header ได้แก่
ส่วนที่เป็น Compiler Directive ต่างๆรวมไปถึงส่วนของการประกาศตัวแปร และค่าคงท่ีต่างๆท่ีจะใช้ใน
โปรแกรม

รปู ที่ 1.17 ฟงั ช่นั Setup [6] 2.setup() ในส่วนนี้เป็นฟังก์ชั่นบังคับท่ีต้อง
กาหนดให้มีในทุกๆโปรแกรม ถึงแม้ว่าในบาง
โปรแกรมจะไม่ต้องการใช้งานก็ยังจาเป็นต้อง
ประกาศไวด้ ว้ ยเสมอ เพยี งแตไ่ มต่ อ้ งเขียน

คาสั่งใดๆไว้ในระหว่างวงเล็บปีกกา {} ท่ีใช้เป็นตัวกาหนดของเขตของฟังก์ช่ัน โดยฟังก์ช่ันนี้จะใช้สาหรับบรรจุ
คาส่งั ในส่วนท่ตี ้องกาให้โปรแกรมทางานเพียงรอบเดียวตอนเร่ิมต้นทางานของโปรแกรมครั้งแรกเท่านั้น ซึ่งได้แก่
คาสั่งเก่ียวกับการ Setup ค่าการทางานต่างๆ เช่น การกาหนดหน้าท่ีการใช้งานของ PinMode และการ
กาหนดคา่ Baudrate สาหรบั ใช้งานพอร์ตส่อื สารอนุกรม เปน็ ต้น

9 นสกัมพอัฒงนกาลรฝะงับตบัว 3.loop() เป็นส่วนฟังก์ชั่นบังคับท่ีต้องกาหนดให้มีในทุกๆ
โปรแกรมเช่นเดียวกันกับฟังก์ชั่น setup() โดยฟังก์ชั่น
รูปที่ 1.18 ฟังชัน่ Loop [6] loop() น้ีจะใช้บรรจุคาสั่งที่ต้องการให้โปรแกรมทางาน
เป็นวงรอลซ้าๆกนั ไปไมร่ จู้ บ ซงึ่ ถ้าเปรียบเทียบกับรูปแบบ
ของ ANSI-C ส่วนนี้ก็คอื ฟังกช์ นั่ main() น่ันเอง

ถา้ ผเู้ รียนต้องการใช้ตัวอย่างคาสงั่ เพื่อทดสอบเซนเซอร์ ให้เขา้ ไปท่ี File > Examples

รูปที่ 1.19 แสดงการเปดิ คาส่ังตัวอย่าง

10สมนอักพงกฒั ลนฝารังะตบัวบ

โดยส่วนใหญ่ การเขียนโปรแกรมบน Arduino เพ่ือ
ใช้คู่กับ Hardware ภายนอก ซ่ึง Hardware ท่ีต่อพ่วง
แต่ละชนิด จะคิดเป็น 1 โมดูล (module) เช่น โมดูล
wifi, โมดูล sound sensor, โมดูล loadcell เป็นต้น
เม่ือเราต้องการจัดระเบียบ การแยกโค้ดออกเป็นส่วนๆ
ตามโมดลู จะช่วยให้เข้าใจวา่ โคด้ ส่วนนใ้ี ช่ร่วมกับเซนเซอร์
อะไร

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

1. การต้ังค่าโมดูล ท่ีมักถูกเรียกอยู่ใน setup() ใช้
เพื่อกาหนดค่าต่างๆของโมดูลท่ีต้องทาแค่คร้ังเดียว
เฉพาะตอนเรม่ิ ต้นเท่าน้ัน

2. การใช้ข้อมูลโมดูล การอ่านค่า การเขียนค่า ที่มัก
อยู่ในสว่ นของ loop() ซ่งึ ทางานซา้ ไปซา้ มา

ตัวอย่างโค้ดของโมดูล wifi และ loadcell ในส่วนของ รปู ท่ี 1.20 ตัวอย่างโค้ดของโมดลู wifi และ loadcell [7]
การตั้งคา่ ซ่ึงเราสามารถแยกออกจากกนั ได้

เม่ือนาแต่ละส่วนแยกเกบ็ ไวเ้ ป็นฟงั ก์ชนั

รูปท่ี 1.21 ฟงั ก์ช่ัน wifi [7]

รปู ที่ 1.22 ฟงั กช์ ่นั loadcell [7]

11 นสักมพอฒั งนกาลรฝะงับตบวั

สามารถเรียกใช้โมดูลท่ีผู้เรียนเขียนแยกได้
โดยการใสช่ ื่อฟงั กช์ ่ัน เช่น wifi_init()

รูปท่ี 1.24 การใช้ฟังกช์ ัน่ โมดูล [7] รูปที่ 1.23 การใช้ฟงั ก์ชนั่ โมดลู [7]
สามารถเรยี กใชโ้ มดลู ท่ีผเู้ รียนเขียนแยกได้

โดยการใส่ช่อื ฟังกช์ ่นั เชน่ wifi_init()

1. กดทเ่ี ครือ่ งลกู ศรลง
2. เลอื กที่ New Tab

จากน้นั ตง้ั ชือ่ เป็นชือ่ โมดลู ทต่ี ้องการ ลงทา้ ย
ดว้ ยนามสกุล .h (header) ดังรปู

1) ต้ังชอ่ื โมดูล
2) กด “OK” เพ่ือตกลงให้

รูปท่ี 1.25 ต้ังชือ่ โมดลู [7]

เมือ่ ลองดใู นโฟลเดอร์ทางาน จะเห็นไฟล์นี้ในโฟลเดอร์เดียวกับไฟล์ .ino หากสร้างไฟล์ไว้แบบน้ี แม้จะสร้าง
กับตวั Arduino IDE แตร่ ะบบคอมไพเลอร์จะยังไมร่ ู้จัก เพราะอย่าลืมวา่ ทกุ อย่างทต่ี ้องการให้คอมไพเลอร์ทางาน
ต้องระบุไว้ในโค้ดทัง้ หมด ดังนั้นการสร้างไฟล์ใหม่ ต้องเรียกคาส่ังที่จะดึงไฟล์น้ันไปใช้งานในหน้าหลักด้วย จึงจะ
สามารถใชง้ านได้ โดยการใส่ #include ตวั อยา่ งเชน่

รปู ท่ี 1.26 การเรยี กใชโ้ มดลู [7]

12สมนอกั พงกัฒลนฝารงั ะตบวั บ

2. รวบรวมโปรแกรมย่อยทุกส่วนเข้าเปน็ โปรแกรมระบบ

2.1 การทาโปรแกรมระบบ
เม่ือทาการเขียนโค้ดในแต่ละส่วนของโมดูลแล้ว ผู้เรียนควรนาโค้ดโปรแกรมย่อยมารวมกันเพ่ือ
ทดสอบระบบในการทางานและแกไ้ ขข้ ้อผดิ พลาดต่อไป โดยการรวบรวมเป็นโปรแกรมระบบ มดี งั นี้
1) ไม่ควรให้ชือ่ ตวั แปรซา้ กัน เชน่ int x = 12 , int x = 12
2) ตอ้ งใส่ { } เริม่ และจบโค้ดในสว่ นคาสัง่ เชน่

void Humidity() {
int analogPin = A1;
float valH1,valH2,valH3,valTH = 0;
int Humidity;
valH1 = analogRead(analogPin);
Serial.print("DataHum = "); Serial.println(valH1);
Humidity = 100*(valH1/1023);
Serial.print("Humidity = "); Serial.print(Humidity+22);
Serial.println("%");
lcd.setCursor(16,3);lcd.print(Humidity+22);lcd.print("%");
}

13 นสักมพอัฒงนกาลรฝะงับตบัว

3) เรียงลาดับการทางานของโค้ดให้ชัดเจน เพราะ Arduino จะทา
ตามคาส่งั จากบนลงล่าง
4) ในการใสโ่ มดลู ตอ้ งใส่ #include “ชอ่ื โมดลู .h” เสมอ

ก่อนท่ีผู้เรียนจะทดสอบโปรแกรมต้องทาการ
ตรวจสอบโคด้ เบ้อื งต้นเพอ่ื ใหท้ ดสอบไปได้อยา่ งราบล่นื

2.1.1 การเปิดหมายเลขบรรทัดโค้ด
ในการเปิดหมายเลขบรรทัดโค้ด เพ่ือให้
ตรวจสอบโค้ดในแต่ละบรรทัดได้ง่ายข้ึนและการตรวจด้วยระบบ
โปรแกรมจะบอกบรรทัดโค้ดท่ีเกดิ ข้อผดิ พลาด
1) ใหผ้ ้เู รียนกด File > Preferences

รปู ที่ 2.1 แสดงข้ันตอนการเปิดบรรทัดโคด้ [8]
2) กดต๊ิกว่างช่อง “Display line numbers”

รูปท่ี 2.2 แสดงขั้นตอนการเปดิ บรรทดั โค้ด [8]

14สมนอกั พงกฒั ลนฝารังะตบวั บ

2.2 การตรวจสอบการทางานของโปรแกรมระบบ
1) เลื่อนเมาส์ไปที่ เคร่ืองหมายถูกด้านซ้ายมือของ

โปรแกรมจะชื่อ “Verify”
2) โปรแกรมจะทาการตรวจสอบโค้ดในระบบ

รูปท่ี 2.3 เคร่ืองมือในการตรวจสอบ
โคด้ ระบบด้วยโปรแกรม [8]

รปู ที่ 2.4 เคร่อื งมือในการตรวจสอบ
โคด้ ระบบดว้ ยโปรแกรม [8]

ในกรณที ่ีโปรแกรมตรวจสอบไม่เจอขอ้ ผดิ พลาดจะขึ้นว่า
“Done compiling”

รูปท่ี 2.5 โปรแกรมตรวจสอบสาเร็จ
ไม่มีขอ้ ผดิ พลาด [8]

15 นสกัมพอัฒงนกาลรฝะังบตบวั

อีกกรณีโปรแกรมเจอขอ้ ผดิ พลาดในการเขยี น
โคด้ คาสง่ั จะมคี าแนะนาในการแก้ไข้โคด้ ชอ่ ง

สเ่ี หลย่ี มชอ่ งที่สอง

รปู ที่ 2.6 โปรแกรมตรวจสอบสาเรจ็ ไม่มขี อ้ ผดิ พลาด [8]

16สมนอักพงกฒั ลนฝารงั ะตบัวบ

3. ปฎิบตั กิ ารใช้เคร่ืองมอื ในการรา้ งซอฟตแ์ วรลงบอร์ด
3.1 คุณสมบตั ิอุปกรณต์ ิดต้งั ซอฟตแ์ วรล์ งบอรด์
การเบิร์น Bootloader ของ Arduino น้ีก็ไม่ใช่เฉพาะชิป ATmega328P เท่านั้น แต่ชิปใน

กลุ่ม 328 ตั้งแต่ ATmega8 ATmega48 ATmega88 ATmega168 ATmega328 ล้วนแต่ลง Bootloader ของ
Arduino ไดท้ ้ังส้นิ (สาหรับ ATmega8 ตอ้ งใช้ IDE 1.0.x เทา่ นั้น ใน IDE รุ่นใหม่ ๆ จะไม่รองรับแล้ว)(ชิปท่ีนิยม
นามาใส่ Bootlaoder อีกเบอร์นอกจาก ATmega328 คือ ATmega168) โดยวิธีในการเบิร์น Bootloader เพ่ือ
ทาใหช้ ิป ATmega กลายเป็นชิป Arduino มีหลายวิธี ดังน้ี

1. ใช้ Arduino รว่ มกบั บอร์ด AVRISP Shield

ใช้ AVRISP Shield วธิ นี ้เี ปน็ วธิ ีท่ยี งุ่ ยากนอ้ ยทีส่ ดุ

รปู ท่ี 3.1 อปุ กรณส์ าหรบั ลงโปรแกรมใน
ชปิ AVRISP Shield [8]

รปู ท่ี 3.2 การต่อวงจรสาหรับลงโปรแกรมในชปิ โดยใช้ บอร์ด Arduino [8]
ใช้บอร์ด Arduino UNO จากวิธแี รก ถ้าผู้เรยี นไมไ่ ดท้ า Bootloader บ่อย เช่นปีละครั้ง การทีจ่ ะซอ้ื

AVRISP Shield มาเพอื่ ใชป้ ีละครัง้ มันคงไม่คมุ้

17 นสักมพอฒั งนกาลรฝะังบตบัว

2. ใชเ้ ครอ่ื งโปรแกรม

ถ้าผเู้ รียน Arduino UNO แคบ่ อรด์ เดยี ว อปุ กรณ์
อ่นื ๆในวงจรไมม่ ี เชน่ คริสตลั ตวั เก็บประจุ มีชิป
เปล่าๆ ผเู้ รยี นสามาใช้ AVRISP ในการโปรแกรม

แทนได้โดยจะมหี น้าตาดังนี้

รปู ที่ 3.3 อปุ กรณ์สาหรับลงโปรแกรมชิป ATmega “AVRISP” [8]

รูปท่ี 3.4 Pin ต่อสาหรับโปรแกรม [8]
ซึ่งตามช่อื กบ็ อกอยู่แล้ววา่ ออกแบบมาสาหรับชิป AVR เลย หากดตู รงหัวต่อ ก็จะมขี าตามรูปขา้ งล่างนี้ ซึง่ ขาตา่ ง ๆ

กค็ อื ขาเชื่อมตอ่ แบบ SPI

18สมนอักพงกัฒลนฝารังะตบัวบ

3.2 การตดิ ตั้งซอฟตแ์ วรล์ งบอรด์
การจะทาให้ ATmega328 ใช้งานเป็น Arduino ได้นั้น จาเป็นที่จะต้องมี Bootloader ก่อน ซ่ึง
เจ้า Bootloader นี่มันคือ firmware ที่ทาหน้าท่ีช่วยในการ upload sketch ท่ีเขียนผ่านทางสาย USB โดยไม่ต้อง
มีเคร่ืองโปรแกรม ซ่ึงก็ไม่เพียง Arduino อย่าง Smart Phone ท่ีพกไปมากันนี่ก็มี Smart Device ท้ังพวก Band
พวก Watch หรืออุปกรณ์อื่น ๆ ก็ล้วนมี Bootloader ของตวั เองทัง้ นนั้

รูปท่ี 3.5 แผนผงั การทางาน Bootloader [8]
ขั้นตอนในการตดิ ตง้ั โปรแกรมลงชปิ ATmega มีดังน้ี

1) ใช้ Arduino UNO ตัวอื่น ใช้ AVRISP Shield
มีวิธีการทาคือ เตรียม Arduino UNO ไว้ 1 ตัว ใส่ AVRISP Shield ลงไปให้เรียบร้อย เปิด
โปรแกรม ArduinoISP จาก File > Examples > 11.ArduinoISP > ArduinoISP แล้วทาการอัพโหลดโปรแกรมน้ี
ลงไปใสไ่ ว้ใน Arduino UNO ทนี ้ี Arduino UNO ตวั น้ีกจ็ ะกลายเป็นเครอื่ งโปรแกรมแล้ว

รูปท่ี 3.6 การเตรยี ม Arduino เพอ่ื ลงโปรแกรมในชิป [8]

19 นสักมพอฒั งนกาลรฝะังบตบวั

เม่ือเจ้า Arduino UNO กลายเป็นเคร่ือง
โปรแกรมไปแล้ว จะทา Bootloader อีกกี่พันตัว
ก็แค่ทาข้ันตอนต่อไปนี้เลยครับ เตรียมชิปเปล่า
ใส่ลงไปใน Sockets ดูขาให้ตรง ในตัว Sockets
จะมีที่โยกล็อคขาชิป ขา 1 ของชิปต้องอยู่กับตัว
โยกนี้ (สังเกตจากรอยบากบนตวั ชิป)

รูปท่ี 3.7 การใส่ชปิ ATmega ลงอุปกรณ์ [8]
เม่ือใส่ชิปลงไปกดคันโยกล็อคเรียบร้อย เปิด ArduinoIDE กด Tools เลือก Port ท่ี Arduino UNO ตัว
โปรแกรมเราเสียบอยู่ตามปกติ มีส่ิงท่ีต้องต้ังค่าเพิ่มเติมคือบรรทัดรองสุดท้าย ตรง Programmer ให้เลือก
Arduino as ISP จากนัน้ คลิกที่บรรทัดลา่ งสุด Burn Bootloader ได้เลย

รูปที่ 3.8 การใสช่ ปิ ATmega ลงอุปกรณ์ [8]

รอสักครู่ โปรแกรมจะขน้ึ วา่ Done Burn Bootloader 20สมนอกั พงกัฒลนฝารงั ะตบวั บ

ใช้บอรด์ Arduino UNO

วิธีน้ีใช้ Arduino UNO และมสี ่งิ ทตี่ ้องเตรียมเพิ่มเติมคือ Breadboard, ตัวต้านทาน 10k, Crystal
16MHz และตัวเก็บประจุ 22pF อีก 2 ตวั

ก่อนอื่น นาชิปเปล่าที่ไปซ้ือมาใหม่ ๆ ต่อวงจรตามรูปข้างล่างนี้ก่อนครับ โดยต่อตัวเก็บประจุกับ Crystal
เขา้ กบั XTAL1, XTAL2 (ขา 9 และขา 10) และตวั ต้านทานต่อเป็น Pull-Up ให้ RESET (ขา 1)

รปู ท่ี 3.9 แผนผังการตอ่ ชิปเพื่อนาไปใช้งาน [8]
จากน้นั นาบอรด์ Arduino UNO ตัวที่ยังใชไ้ ดม้ าต่อขาของบอรด์ UNO เขา้ กบั ชปิ เปลา่ ที่เตรียมไว้

รูปที่ 3.10 แผนผังการต่อชิปเพือ่ ลงโปรแกรม [8]

21 นสักมพอัฒงนกาลรฝะงับตบัว

จากนัน้ ก็ลง ArduinoISP ใหก้ บั บอรด์ ตวั Arduino กด Burn Bootloader ตามขน้ั ตอนเหมือนแบบแรก เท่าน้ี
ก็เสรจ็ เรียบร้อย (เหมือนการสร้าง AVRISP บน Breadboard ของผเู้ รยี นเอง แบบน้ีประหยดั แตไ่ ม่สะดวก)

2) ใชเ้ ครือ่ งโปรแกรม
วิธีการคอื ดึงชิปตัวเก่าออกจากซอกเกต็ จากน้นั จงึ ใส่ชปิ ตัวใหม่ท่ีเป็นชิบเปล่า ๆ ลงไปแทน (ไอซี

ทกุ ตวั ทกุ เบอรจ์ ากโรงงานจะมีขาทามมุ เฉียงออกหมด ขามนั จะกว้างกว่าซอกเก็ตก็ค่อย ๆ ดัดขาเข้ามาให้ขาต้ังฉาก
จะได้ใสไ่ ด้)

รูปที่ 3.11 ขั้นตอนการนาชิปตวั เก่าออกจากบอร์ด Arduino [8]
จากน้ันใช้หัวแปลง 10pin to 6pin Adapter เพื่อแปลงหัว 10 ขาให้เหลือ 6 ขา แล้วเสียบลงไปบนบอร์ด
Arduino UNO ดขู าใหต้ รง ถา้ ใช้ Adapter ก็สังเกตตามรปู ไดเ้ ลย

รปู ท่ี 3.12 ข้นั ตอนการตอ่ AVRISP กับบอร์ด Arduino [8]
ขั้นตอนสุดท้ายเปิด ArduinoIDE ข้ึนมา เลือกบอร์ด Arduino UNO เลือก Port ที่ AVRISP เสียบอยู่
จากนั้นกด Burn Bootloader รอจนขึ้นวา่ Done Burn Bootloader เป็นอันเรียบร้อย ตัว LED_BUILTIN ที่ขา
13 ก็จะกระพริบ จากนั้นผเู้ รยี นจะได้บอรด์ Arduino UNO ตัวใหมม่ าใช้งานแลว้

22สมนอกั พงกัฒลนฝารังะตบวั บ

4.ตรวจสอบความผดิ พลาด Code Warning และ Error
4.1 การตรวจสอบความผิดพลาด และแกไ้ ข Code Warning และ Error
โครงสร้างโค้ดอาจจะมีความผิดพลาดที่เกิดได้จากผู้เขียนหรือโปรแกรม โดย Code error ที่
เกิดขน้ึ บ่อยๆ มดี งั น้ี
1) มี Void ไม่ครบตามโครงสร้างของ Arduino โดยปกติแล้ว Arduino จะมี void setup()
และ void loop() เป็นหลักอยู่แล้ว ครับแต่บางที ผู้เรียนไปก็อบ Code มา แล้ว Void loop() หายไปหรือไป
เปล่ยี นช่อื ก็จะขน้ึ ข้อความใน Error วา่ error: ld returned 1 exit status

รปู ท่ี 4.1 Code Error ที่เกิด Void ไมค่ รบตามโครงสร้าง [9]
2) มี Void ซ้อนกันช่ือซ้ากัน มักจะเกิดจากเวลา ไปก๊อบ Code จากท่ีอ่ืนมาผสมกันแล้ววาง
Code ซ้อนกัน โดยปกติแล้ว Arduino จะประกอบไปด้วย void setup() และ void loop() หากมี Void loop()
ซอ้ นกัน Arduino IDE ก็จะเกดิ อาการนี้ Error มกั จะแสดงวา่ exit status 1 redefinition of 'void loop()’

รปู ที่ 4.2 Code Error ทเี่ กดิ Void ซ้าซ้อน [9]

23 นสกัมพอฒั งนกาลรฝะงับตบัว

3) เร่ืองเครื่งหมาย { } บางครั้งน้องๆอาจจะใส่เกิน ทางร้านก็เคยเจอครับ มักจะเจอข้อความ
error: expected declaration before '}' token }}

รูปท่ี 4.3 Code Error ทีเ่ กิด Void ซา้ ซอ้ น [9]
4) Library ไม่สามารถใช้งานร่วมกับบอร์ดน้ีได้ อันน้ีเจอได้บ่อย โดยเฉพาะก๊อบ Code มา
ยกตัวอยา่ ง Libary บางตวั เช่น esp8266.h แตเ่ อามาใช้กับ Arduino Uno R3 มันก็จะ Error เป็นธรรมดา error:
ESP8266WiFi.h: No such file or directory compilation terminated.

รปู ท่ี 4.4 Library ใชร้ ว่ มบอรด์ นไ้ี ด้ [9]
5) เสียบ Arduino แล้วข้ึนว่า Window could not find driver software for your device.
If you know the manufacturer of your device, you can visit its website and check the support
section for driver software. เกิดจากไฟเล้ียงไม่พอ สาย USB เสีย หากร้างแรงท่ีสุด บอร์ด Arduino ของเรา
เสยี
6) Com port ในโปรแกรม Arduino IDE ไมข่ ้นึ
7) ข้ึนว่า avrdude: ser_open(): can't open device "\\.\COM ": The system cannot
find the file specified. เกิดจาก Com port หลดุ หรือ Com port ไมต่ รง

24สมนอักพงกัฒลนฝารังะตบวั บ

รูปท่ี 4.5 Com port Error code [9]
8) Error ข้ึนว่า fatal error: LiquidCrystal_I2C.h: No such file or directory ปัญหาน้ีเกิด
จากยังไมไ่ ด้ลง library

รูปที่ 4.6 โปรแกรมเรียกหา Library [9]
9) Error ขึ้น stk500_recv(): programmer is not responding มักจะเกิดจาก บอร์ด
Arduino ไม่ตอบสนองกบั คอมพิวเตอร์ แตส่ ามารถเชือ่ มต่อกบั บอร์ด ได้
10) อัพโหลดค้างรอ นาน อัพโหลดไม่เข้า ปัญหานี้มักอาจจะเกิดจากเลือกบอร์ดผิด หรือ
Arduino ของเสีย หรือ Bootloader หลุด
11) บอรด์ Arduino รอ้ นมากๆ และไมย่ อมทางานตอบสนอง
12) Arduino คา้ งระหว่างใชง้ าน
13) Up datedriver Arduino แก้ปญั หามองไม่เหน็ COM Port ชิพ MAGA16U2

25 นสักมพอัฒงนกาลรฝะังบตบัว

4.2 การแกไ้ ข Code Warning และ Error
1) มี Void ไม่ครบตามโครงสรา้ งของ Arduino
วิธกี ารแก้ไข ใหต้ รวจสอบโครงสรา้ งของ Code มี Void ต่างๆมคี รบไหมถูกต้องไหม อย่าลืมน่ะ

ครับชอ่ื ตอ้ งเปน็ ตวั เลก็

รปู ที่ 4.7 Code Error ท่เี กิด Void ไมค่ รบตามโครงสร้าง [10]

2) มี Void ซ้อนกันชอ่ื ซา้ กนั
วิธีการแก้ไข ตรวจสอบโครงสร้าของ Code มี Void ซ้ากันไหมถ้าซ้าให้ทาการรวม Code

กันน่ะครบั

รปู ที่ 4.8 Code Error ที่เกิด Void ซ้าซ้อน [10]

3) เร่ืองเครงื่ หมาย { } บางครงั้ อาจจะใส่เกิน
วธิ กี ารแกไ้ ข ให้ตรวจสอบเรื่องเคร่อื งหมายปกี กาตา่ งๆ ใหถ้ กู ตอ้ งไมข่ าดไมเ่ กนิ

รูปท่ี 4.9 Code Error ที่เกิด Void ซ้าซอ้ น [10]

สมนอักพงกัฒลนฝารังะตบัวบ 26

4) Library ไม่สามารถใชง้ านรว่ มกับบอรด์ นไ้ี ด้
วิธกี ารแก้ไข ลองศึกษา เกย่ี วกับ Library ตา่ งๆด้วยว่าลองรบั บอรด์ ตัวนน้ั ไหม

รูปท่ี 4.10 Library ใช้รว่ มบอรด์ น้ีได้ [10]

5) เสียบ Arduino แล้วขึ้นว่า Window could not find driver software for your device.
If you know the manufacturer of your device, you can visit its website and check the support
section for driver software. เกิดจากไฟเล้ียงไม่พอ สาย USB เสีย หากร้างแรงที่สุด บอร์ด Arduino ของเรา
เสีย

ปัญหานี้ จะเกิดกับ Arduino ท่ีใช้คร้ังแรก ให้ผู้เรียนตรวจสอบ โดยการเปลี่ยนช่องเสียบ USB
เปล่ยี นสาย USB อาจจะเกดิ จากไฟเลย้ี งไมพ่ อ สาย USB เสยี หากร้างแรงท่สี ุด บอรด์ Arduino ของเสีย

6) Com port ในโปรแกรม Arduino IDE ไม่ขน้ึ
ลองตรวจสอบไดร์เวอร์ ว่าติดตั้งไดร์เวอร์แล้วหรือยัง ข้ันตอนการติดต้ังไดร์เวอร์ สาหรับ CH340 หากเป็น
Arduino ตวั แพง สามารถเลือกไดรเ์ วอร์ได้ใน พอเดอร์ Arduino IDE ได้เลย

7) ข้ึนว่า avrdude: ser_open(): can't open device "\\.\COM ": The system cannot
find the file specified. เกดิ จาก Com port หลดุ หรอื Com port ไมต่ รง

รปู ท่ี 4.11 Com port Error code [10]

27 นสักมพอฒั งนกาลรฝะงับตบัว
อาการนี้เกิดจาก Com port หลุด หรือ Com port ไม่ตรงให้เช็ค ที่ Tools > port ว่าตรง
หรือไม่ หากตรงใหล้ องเปลีย่ นชอ่ งเสียบ USB
8) Error ข้ึนวา่ fatal error: LiquidCrystal_I2C.h: No such file or directory
ปญั หานเี้ กิดจากยังไมไ่ ด้ลง library หากยังไมไ่ ดต้ ิดต้ัง สามารถตดิ ตั้งจากแหล่งข้อมูลอินเตอร์เน็ต
โดยวิธีการให้ค้นหา ช่ือไฟล์ ตามท่ี Code แจ้ง error ข้ึนมา เช่นตัวอย่างแจ้งว่า หาไฟล์ชื่อว่า
LiquidCrystal_I2C.h ไม่เจอกเ็ อาชื่อไฟล์ LiquidCrystal_I2C.h ไปคน้ หาลงใน Google เปน็ อนั จบ

รปู ที่ 4.12 โปรแกรมเรยี กหา Library [10]

9) Error ขน้ึ stk500_recv(): programmer is not responding
มักจะเกิดจาก บอร์ด Arduino ไม่ตอบสนองกับ คอมพิวเตอร์ของเรา แต่สามารถติดต่อเชื่อมต่อ
ได้กบั บอรด์ ได้วิธกี ารแก้ ดงั น้ี

•ถอดสายออกจากชอ่ ง rx tx เวลาอพั โหลด
• ลองเปลยี่ นสาย USB
• ลองสลับช่อง USB
• ลอง Bootloader ใหม่ Bootloader อาจจะหลดุ

หากยังไม่สามารถอพั โหลดได้แสดงวา่ ตัว MCU เสยี ให้ทาการเปลย่ี น MCU ใหม่
10) อัพโหลดคา้ งรอ นาน อัพโหลดไม่เข้า
ปัญหานี้ มักอาจจะเกิดจากเลือกบอร์ดผิด หรือ เจ้า Arduino ของเสียแล้ว หรือ Bootloader
หลดุ วธิ แี ก้ คือ การตดิ ตัง้ Bootloader กอ่ น หากไม่ได้ Arduino ของผูเ้ รียนเสียแน่นอน
11) บอร์ด Arduino ร้อนมากๆ และไม่ยอมทางานตอบสนอง หากบอร์ด Arduino มีอาการไม่
ตอบสนอง รอ้ นมาก ใหค้ ดิ ไวเ้ ลยว่าเสยี แล้วแนน่ อน จาเปน็ ต้องซอ้ื ใหมอ่ ยา่ งเดยี ว
12) Arduino ค้างระหวา่ งใชง้ าน วิธที ่ีแก้ปัญหา คอื ฟังก์ชั่น Watch Dog Timer เป็นคาส่ังที่ใช้
ตรวจสอบวา่ บอร์ด Arduino เกิดการค้าง เครือ่ งแฮงค์ หรอื ไม่ ถ้าเกิดการคร่ืองแฮงค์ ฟังก์ช่ัน Watch Dog Timer
ก็จะสามารถสั่ง Reset ระบบไดอ้ กี ด้วย

28สมนอักพงกัฒลนฝารังะตบวั บ

รูปท่ี 4.13 ฟงั ก์ช่นั Watch Dog Timer [11]

1. คาส่ัง wdt_enable(WDTO_2S);
คาส่ังนี้ใช้ในการกาหนดค่าการตวรสอบการค้างของ
โปรแกรม ถ้าโปรแกรมค้างเกินกว่าเวลาท่ีกาหนด ต่อ
การวนรอบ 1 ลปู จะส่ังให้ Reset บอร์ดใหม่
wdt_enable(WDTO_2S);
รปู แบบคาสั่ง wdt_enable(WDTO_2S);
wdt_enable(WDTO_2S);
2S ตัวสีแดง คือ เวลาท่ีกาหนด 2วินาที ถ้า โปรแกรม
คา้ งเกิน 2 วินาที จะส่ังงานให้ Reset บอร์ดใหม่โดยการ
ตัง้ เวลาจะ ตั้งไดต้ ามค่านี้

รปู ที่ 4.14 ตารางตง้ั เวลา Watch Dog Timer [11]

29 นสกัมพอัฒงนกาลรฝะังบตบวั

2) Up datedriver Arduino แกป้ ญั หามองไมเ่ หน็ COM Port ชิพ MAGA16U2
วิธีแก้ไข ปัญหามองไม่เห็น COM Port ของ Arduino ท่ีใช้ชิพ MAGA16U2 ปัญหานี้อาจเกิดจาก

การที่ Computer ไม่รู้จักกับ Port ที่เช่ือมต่อกับ Arduino หรือ ไม่มีไดร์เวอร์น้ันเอง มักเกิดขึ้นได้เป็นบางครั้งท่ีลง
โปรแกรม Arduino IDE ตัวใหม่ วธิ ีแก้มีดังนี้

• ข้นั ตอนแรกไปท่ี Computer แล้วคล๊กิ ขวา ไปที่ Manage

• รูปท่ี 4.15 แสดงการแกป้ ญั หา COM Port [12]
ตอ่ ไป ไปทตี่ วั จดั การอุปกรณ์ สังเกตวุ า่ คอมพิวเตอรข์ องเราไม่รูจ้ กั กับ อปุ กรณท์ ี่เชอ่ื มตอ่ เขา้ มา

รปู ท่ี 4.16 แสดงการแกป้ ญั หา COM Port [12]

30สมนอกั พงกัฒลนฝารังะตบัวบ

• คล๊กิ ขวา Upadate Driver Software

รูปท่ี 4.17 แสดงการแก้ปญั หา COM Port [12]

รูปที่ 4.18 แสดงการแกป้ ญั หา COM Port [12]

31 นสักมพอฒั งนกาลรฝะังบตบัว

• ขั้นตอนน้ี ใหเ้ ลอื ก โฟลเดอร์ Drivers ที่ อยใู่ นโฟลเดอรข์ องโปรแกรม arduino IDE

รปู ที่ 4.19 แสดงการแก้ปัญหา COM Port [12]

รูปที่ 4.20 แสดงการแก้ปัญหา COM Port [12]

สมนอกั พงกฒั ลนฝารงั ะตบวั บ 32

เม่อื ทาตามขบวนการทกุ ข้นั ตอน คอมพวิ เตอรก์ จ็ ะสามารถมองเห็น COM Prot ของบอร์ด Arduino

รปู ท่ี 4.21 แสดงการแก้ปัญหา COM Port [12]

33 นสกัมพอฒั งนกาลรฝะังบตบัว

5. ทดสอบระบบสมองกลฝงั ตัว

5.1 การทดสอบระบบการทางานสมองกลฝงั ตัว

1) ขน้ั แรกอปุ กรณ์ท่ตี อ้ งเตรยี มเพ่ือมทาการทดลองได้แก่

- Arduino UNO R3 1

- MCU ATmega 328PU 1

- Crystal 16.00 MHz 1

- ตัวเกบ็ ประจุ 22 pF 2

- ตัวเกบ็ ประจุ 10 uF 2

- LED (สแี ดง, เขียว) 2

- ตัวตา้ นทาน 10K โอหม์ 1

- ตัวต้านทาน 220 โอห์ม 2

- 7805 Voltage regulator 1

- DC Jack 1

2) การติดตั้งโปรแกรมลงชิป ATmega328PU ในการทดลองน้ีใช้ Arduino UNO ตัวอ่ืนในการทา

Bootloader ดงั น้ี

เตรียม Arduino UNO ไว้ 1 ตัว และเตรียมวงจร
Arduino UNO R3 ไว้อีก 1 ตัว ให้เรียบร้อยดังรูปแบบการ
ตอ่ ไปนี้

รปู ที่ 5.1 การตอ่ แบบArduino ISP
เพือ่ อพั Bootloader [12]

เปิดโปรแกรม ArduinoISP จาก
File > Examples > 11.ArduinoISP >
ArduinoISP แล้วทาการอพั โหลดโปรแกรมนี้ลงไปใส่
ไว้ใน Arduino UNO ทนี ี้ Arduino UNO ตัวนกี้ จ็ ะ
กลายเปน็ เครื่องโปรแกรมแลว้

รูปที่ 5.2 การเตรียม Arduino เพอื่ ลงโปรแกรมในชิป [12]

34สมนอกั พงกฒั ลนฝารังะตบัวบ

3) เตรยี มชิปเปล่าใส่ลงไปใน Sockets ดขู าให้
ตรง ในตัว Sockets จะมีท่โี ยกล็อคขาชิป ขา 1
ของชปิ ต้องอยูก่ ับตวั โยกน้ี (สังเกตจากรอยบาก

บนตวั ชิป)

รปู ท่ี 5.3 นาIC ATmega 328PU ลงใน Sockets [12]

รปู ท่ี 5.4 ลง Bootloader เสรจ็ เรียบร้อย [12] เม่ือใส่ชิปลงไปกดคันโยกล็อคเรียบร้อย เปิด
ArduinoIDE กด Tools เลือก Port ท่ี Arduino UNO
ต่ออยู่ มีสิ่งที่ต้องตั้งค่าเพ่ิมเติมคือบรรทัดรองสุดท้าย
ตรง Programmer ให้เลือก Arduino as ISP จากนั้น
คลิกทบ่ี รรทดั ลา่ งสุดเพอื่ Burn Bootloader

4) ตัวอย่างการทดเปน็ การทาวงจรไฟกระพริบ 1
1
อุปกรณ์ที่ต้องเตรียม 1
- Arduino UNO R3 2
- MCU ATmega 328PU 2
- Crystal 16.00 MHz 2
- ตวั เก็บประจุ 22 pF 1
- ตวั เก็บประจุ 10 uF 2
- LED (สแี ดง, เขยี ว) 1
- ตัวต้านทาน 10K โอห์ม 1
- ตวั ตา้ นทาน 220 โอหม์ 1
- 7805 Voltage regulator
- DC Jack
- สวิตช์

35 นสกัมพอัฒงนกาลรฝะังบตบัว

5) โค้ดโปรแกรม
int timer = 100; // delay time for 100 ms
void setup() {
for (int pin = 4; pin<6; pin++){

pinMode (pin,OUTPUT);
}
}
void loop() {
for (int pin =4;pin <6; pin++){
digitalWrite(pin,HIGH); // LED ON
delay(timer); // LED ON for 100 ms
digitalWrite(pin,LOW); // LED OFF
}}
3) วงจรไฟกระพรบิ

รปู ที่ 5.5 ไดอาแกรมวงจรไฟกระพรบิ [12]

36สมนอกั พงกัฒลนฝารงั ะตบวั บ

5) สาธติ การทดลองวงจรไฟกระพรบิ

จากตัวอยา่ งจะ เห็นวา่ เราจะใชค้ าสงั่ for เป็นคาสั่งที่สั่งให้
โปแกรมมีการทางานซ้า ๆ วนลูปจนกว่าเง่ือนไขที่กาหนด
ไวเ้ ป็นเท็จ จงึ ออกจากเงอ่ื นไขการทางาน

รปู ท่ี 5.6 แสดงการทางานวงจรไฟกระพริบโดยใชว้ งจร
Arduino Standalone [12]

37 นสักมพอฒั งนกาลรฝะงับตบวั บรรณานกุ รม

[1] NetinBag. (2564). Arduino® IDE คืออะไร.[ออนไลน์]. จาก
https://www.netinbag.com/th/internet/what-is-an-arduinoreg-ide.html
สบื คน้ 19 พฤษภาคม 2564.

[2] pawarisorn502. (2553). โปรแกรม notepad++ คือ……???. [ออนไลน์]. จาก
https://bit.ly/3yQ6NlH สืบค้น 19 พฤษภาคม 2564.

[3] วกิ ิพีเดยี สารานกุ รมเสรี. (2564). วิชวลสตดู ิโอโคด้ .[ออนไลน์]. จาก
https://bit.ly/2SPriyl สบื ค้น 19 พฤษภาคม 2564.NodeMCU/ESP8266.

[4] netpie.(2564).การติดตงั้ ArduinoIDE และทดสอบการทางานเบื้องตน้ ของ
NodeMCU/ESP8266.[ออนไลน์]. จาก https://netpie.gitbooks.io/nodemcu-
esp8266-on-netpie/content/chapter1.html.สบื ค้น 19 พฤษภาคม 2564.

[5] เจ้าของร้าน. (2563). การติดต้ัง เพ่ิม ไลบราร่ี (Library) สาหรับ Arduino IDE. [ออนไลน์].
จาก https://bit.ly/3uH0XQi สืบคน้ 19 พฤษภาคม 2564.

[6] เจา้ ของรา้ น. (2558). การเขียนโปรแกรมเบ้ืองต้นกับ Arduino C++ (โครงสรา้ งโปรแกรม
ของ Arduino). [ออนไลน์]. จาก https://bit.ly/3wMYOE0

สบื คน้ 19 พฤษภาคม 2564.
[7] เจ้าของร้าน. (2563). แยกไฟล์ จัดระเบียบโค้ดให้เป็นระเบียบอย่างง่าย บน Arduino IDE

[ออนไลน์]. จาก https://bit.ly/3g0Peqr สบื ค้น 19 พฤษภาคม 2564.
[8] เจ้าของร้าน. (2563). [Tips] เบิรน์ Bootloader ให้กบั ATmega328P. [ออนไลน์]. จาก

https://bit.ly/3uBJd8Q สืบคน้ 19 พฤษภาคม 2564.
[9] เจ้าของร้าน. (2563). แก้ปัญหาArduino ข้ึน Error compiling for board แก้ไขอย่างไรดี.

[ออนไลน์]. จาก https://bit.ly/3vNzLk4 สบื คน้ 19 พฤษภาคม 2564.
[10] เจ้าของร้าน. (2563). รวมปัญหา Error Arduino และการแก้ปัญหา ขั้นต้นสาหรับผู้เร่ิมต้น

จาก. [ออนไลน์]. จาก https://bit.ly/3p9ww42 สบื คน้ 19 พฤษภาคม 2564.
[11] เจา้ ของรา้ น. (2562). สอนใช้งาน Arduino คาสั่ง Watch Dog Timer ตรวจสอบการ

ทางาน ของโปรแกรม. [ออนไลน์]. จาก https://bit.ly/3cduquK
สบื ค้น 19 พฤษภาคม 2564.
[12] เจ้าของร้าน. (2563). Up datedriver Arduino แก้ปัญหามองไม่เห็น COM Port ชิพ
MAGA16U2. [ออนไลน์]. จาก https://bit.ly/3wHmLN0
สืบค้น 19 พฤษภาคม 2564.
[13] ธรี ะทัศน์ เสียงอ่อน. วิจยั ฐานขอ้ มูลเชิงสมั พันธ์ [ออนไลน์]. จาก http://itd.htc.ac.th/
สืบค้น 19 พฤษภาคม 2564.

แหล่งอา้ งอิงรปู ภาพ 38สมนอกั พงกัฒลนฝารังะตบัวบ

[1] NetinBag. (2564). Arduino® IDE คอื อะไร.[ออนไลน์]. จาก
https://www.netinbag.com/th/internet/what-is-an-arduinoreg-ide.html
สบื คน้ 19 พฤษภาคม 2564.

[2] pawarisorn502. (2553). โปรแกรม notepad++ คอื ……???. [ออนไลน์]. จาก
https://bit.ly/3yQ6NlH สบื คน้ 19 พฤษภาคม 2564.

[3] วกิ พิ ีเดีย สารานกุ รมเสรี. (2564). วชิ วลสตูดิโอโค้ด.[ออนไลน์]. จาก
https://bit.ly/2SPriyl สบื คน้ 19 พฤษภาคม 2564.NodeMCU/ESP8266.

[4] netpie.(2564).การตดิ ตง้ั ArduinoIDE และทดสอบการทางานเบือ้ งต้นของ
NodeMCU/ESP8266.[ออนไลน์]. จาก https://netpie.gitbooks.io/nodemcu-
esp8266-on-netpie/content/chapter1.html.สืบคน้ 19 พฤษภาคม 2564.

[5] เจ้าของร้าน. (2563). การติดตั้ง เพ่ิม ไลบรารี่ (Library) สาหรับ Arduino IDE. [ออนไลน์].
จาก https://bit.ly/3uH0XQi สบื ค้น 19 พฤษภาคม 2564.

[6] เจ้าของร้าน. (2558). การเขยี นโปรแกรมเบือ้ งตน้ กับ Arduino C++ (โครงสรา้ งโปรแกรม
ของ Arduino). [ออนไลน์]. จาก https://bit.ly/3wMYOE0

สืบค้น 19 พฤษภาคม 2564.
[7] เจ้าของร้าน. (2563). แยกไฟล์ จัดระเบียบโค้ดให้เป็นระเบียบอย่างง่าย บน Arduino IDE

[ออนไลน์]. จาก https://bit.ly/3g0Peqr สืบค้น 19 พฤษภาคม 2564.
[8] เจา้ ของร้าน. (2563). [Tips] เบริ น์ Bootloader ให้กบั ATmega328P. [ออนไลน์]. จาก

https://bit.ly/3uBJd8Q สบื ค้น 19 พฤษภาคม 2564.
[9] เจ้าของร้าน. (2563). แก้ปัญหาArduino ขึ้น Error compiling for board แก้ไขอย่างไรดี.

[ออนไลน์]. จาก https://bit.ly/3vNzLk4 สบื ค้น 19 พฤษภาคม 2564.
[10] เจ้าของร้าน. (2563). รวมปัญหา Error Arduino และการแก้ปัญหา ข้ันต้นสาหรับผู้เร่ิมต้น

จาก. [ออนไลน์]. จาก https://bit.ly/3p9ww42 สบื ค้น 19 พฤษภาคม 2564.
[11] เจา้ ของร้าน. (2562). สอนใชง้ าน Arduino คาส่ัง Watch Dog Timer ตรวจสอบการ

ทางาน ของโปรแกรม. [ออนไลน์]. จาก https://bit.ly/3cduquK
สบื คน้ 19 พฤษภาคม 2564.
[12] เจ้าของร้าน. (2563). Up datedriver Arduino แก้ปัญหามองไม่เห็น COM Port ชิพ
MAGA16U2. [ออนไลน์]. จาก https://bit.ly/3wHmLN0
สืบค้น 19 พฤษภาคม 2564.

อาชีพนกั พัฒนา

ระบบสมองกลฝังตวั

คณะครศุ าสตรอ์ ุตสาหกรรมและเทคโนโลยมี หาวิทยาลยั เทคโนโลยีราชมงคลศรีวชิ ัย
ทุนอดุ หนุนการวจิ ยั จากสานักงานคณะกรรมการกองทนุ สง่ เสรมิ วิทยาศาสตรว์ ิจัยและนวัตกรรม
ประจาปงี บประมาณ 2564


Click to View FlipBook Version