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

ปริญญานิพนธ์ สาขาวิศวกรรมคอมพิวเตอร์

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by chayut.a, 2021-11-05 00:36:09

All omni project

ปริญญานิพนธ์ สาขาวิศวกรรมคอมพิวเตอร์

37

(ก) แสดงส่วนของฐานดา้ นบนทีทาํ (ข) แสดงส่วนของฐานดา้ นบนทีไดอ้ อกแบบไว้
จากเครือง D Printer

รูปที 3.7 แสดงส่วนของฐานดา้ นบน

2.2.1.2 ฐานด้านใน แตล่ ะดา้ นมีความยาว 100 มิลลิเมตร จาํ นวนรูใน
การยึดระหวา่ งฐานด้านบนกบั ฐานดา้ นล่างมีทงั หมด 9 รู แต่ละรูกวา้ ง 6 มิลลิเมตร จาํ นวนช่อง
สาํ หรับเดินสายไฟมี 1 ช่องลกั ษณะเป็นรูป 6 เหลียม และช่องสําหรับใส่แบตเตอรี มีความกวา้ ง 49
มิลลิเมตร ยาว 102 มิลลิเมตร

(ก) แสดงส่วนของฐานดา้ นในทีทาํ (ข) แสดงส่วนของฐานดา้ นในทไี ดอ้ อกแบบไว้
จากเครือง D Printer
รูปที 3.8 แสดงส่วนของฐานดา้ นใน

38
2.2.1.3 ฐานดา้ นล่าง แต่ละดา้ นมคี วามยาว 100 มิลลเิ มตร จาํ นวนรูใน
การยดึ ฐานดา้ นในมีทงั หมด 3 รู ส่วนของตวั ยดึ มอเตอร์มคี วามยาว 48 มิลลเิ มตร กวา้ ง 38 มิลลเิ มตร

(ก) แสดงส่วนฐานด้านล่างทที าํ จากเครือง 3D Printer (ข) แสดงส่วนฐานดา้ นล่างทไี ดอ้ อกแบบ
รูปที 3.9 แสดงส่วนของฐานดา้ นลา่ ง

2.2.2 ส่วนของลอ้ ใชเ้ ครืองพมิ พ์ 3 มิติ (3D Printer) ขนึ รูปชินส่วน โดยวสั ดุ
ทีใชเ้ ป็นพลาสตกิ เอบีเอส (ABS) อะคริโลไนไตรล-์ บวิ ทาไดอีน-สไตรีน (Acrylonitrile-Butadiene-
Styrene) หนาขนาด 1.75 มลิ ลิเมตร แบ่งออกเป็น

2.2.2.1 ส่วนของเพลา ฐานมคี วามหนา 5 มิลลเิ มตร กวา้ ง 45 มิลลเิ มตร
แกนเพลายาว 35 มิลลเิ มตร กวา้ ง 20 มลิ ลเิ มตร และรูเพลามคี วามกวา้ ง 6.2 มิลลเิ มตร

รูปที 3.10 แสดงส่วนของเพลาทีทาํ จากเครือง 3D Printer

39
2.2.2.2 ส่วนของลอ้ ทงั ดา้ นหน้าและดา้ นหลงั มีเส้นผ่านศูนยก์ ลางรอ
บวงขนาด 90 มิลลิเมตร รูสวมเพลาเส้นผ่านศูนย์กลางขนาด 20 มิลลเิ มตร รูยึดแกนเพลามีเส้น
ศูนยก์ ลางขนาด 5 มิลลิเมตร จาํ นวน 6 รู และรูยึดตัวลอ้ ลูกกลิง มีเส้นผ่านศูนยก์ ลางขนาด 4
มิลลเิ มตร จาํ นวน 6 รู

รูปที 3.11 แสดงส่วนของตวั ลอ้ ทงั ดา้ นหนา้ และดา้ นหลงั ทที าํ จากเครือง 3D Printer
2.2.2.3 ตัวล้อลูกกลิ งมีเส้นผ่านศูนย์กลางของตัวล้อขนาด 14

มลิ ลเิ มตร มคี วามยาวขนาด 22 มิลลิเมตร แกนยดึ ลอ้ ความกวา้ งและความยาวขนาด 4 มิลลิเมตร

รูปที 3.12 แสดงตวั ลอ้ ลูกกลิงทีทาํ จากเครือง 3D Printer

40
3.2.4 การออกแบบวงจรขบั มอเตอร์

โครงงานนีไดเ้ ลอื กใชไ้ อซีเบอร์ L298N (IC L298N) จาํ นวน 2 ตวั ในการขบั มอเตอร์
ไฟฟ้ากระแสตรง (DC Motor) จาํ นวน 3 ตวั โดยไอซีเบอร์ L298N (IC L298N) สามารถขบั
มอเตอร์ไดม้ ากสุด 2 ตวั รองรับแรงดนั โหลดไดม้ ากสุดที 46V รองรับกระแสได้สูงสุดที 2A ใน
การใชง้ านตอ้ งจ่ายไฟจากแบตเตอรี เข้าทีขาพอร์ต VS และVCC (ขาเบอร์ 4 และ ) รับสัญญาณ
ทาง Logic ทีขาพอร์ต IN1-IN4 , ENA และ ENB (ขาเบอร์ 5, 7, 10, 12, 6 และ ) และขบั
กระแสไฟออกเพือควบคุมทิศทางการหมุนและควบคุมความเร็วของมอเตอร์ทีขาพอร์ต OUT1-
OUT4 (ขาเบอร์ 2, 3, 13 และ 14) ตามลาํ ดบั

รูปที 3.13 วงจรขบั มอเตอร์ดว้ ยไอซีเบอร์ L298N (Schematic L298N)
1. ขนั ตอนการออกแบบวงจรขบั มอเตอร์แบบ Schematic ภายในโปรแกรมโปรตอิ สุ

1.1 จดั เตรียมอุปกรณก์ ่อนทาํ การออกแบบวงจรมาไวบ้ นแถบเครืองมอื DEVICES

41

รูปที 3.14 รายการอุปกรณ์ทจี ะนาํ มาตอ่ เป็น Schematic ของวงจรขบั มอเตอร์
1.2 ทาํ การเพิมขวั ปลายสายไฟบนแถบเครืองมือ TERMINALS โดยส่วนทีตอ้ งทาํ

การเพิมคือขาพินใหเ้ ลือกที DEFAULT และขากราวด์ให้เลือกที GROUND จากนนั นาํ อุปกรณ์ที
เลือกทงั หมดมาจดั วาง ดงั รูปที 3.15

42

7805 Res Led Diode TBlock 2

TBlock 3
Con 3

Cap

Default

L298 Ground

รูปที 3.15 ตาํ แหน่งในการวางอปุ กรณเ์ พอื เตรียมการเชือมตอ่ สายสญั ญาณ

1.3 ขาพินทีเชือมต่อกับขาพอร์ต VCC ของอุปกรณ์ L298 ทงั U1 กบั U3 และ
ขาพนิ ทีเชือมต่อกบั ขาพอร์ต VO ของอุปกรณ์ 7805 ใหต้ งั ชือวา่ (+5V) ส่วนขาพินทีเชือมต่อกบั ขา
พอร์ต VS ของอปุ กรณ์ L298 ทงั U1 กบั U3 และขาพินทีเชือมตอ่ กบั ขาพอร์ต VI ของอุปกณ์ 7805
ใหต้ งั ชอื วา่ (+12V) และทาํ การเชือมตอ่ สายสัญญาดงั รูปที 3.16

43

+12 +5V +5V +12

V

VI VO
VCC
VS

+5V +12

รูปที 3.16 การเชือมตอ่ สายไฟใหก้ บั ขาพนิ ทไี ดม้ กี ารตงั ชือ
1.4 ทาํ การเชือมสายไฟทงั หมดดงั รูปที 3.17

รูปที 3.17 วงจรขบั มอเตอร์แบบ Schematic ทีเสร็จสมบูรณ์

44
2. ขนั ตอนการออกแบบวงจรขบั มอเตอร์แบบ PCB Layout

2.1 ทาํ การตรวจสอบรายการอปุ กรณ์บนแถบเครืองมือ COMPONENTS ดงั รูปที
3.18

รูปที 3.18 รายการอุปกรณ์ทีไดอ้ อกแบบไวต้ อนทาํ Schematic
2.2 กดแถบ Layer Selector เลือก Board Edge (สีเหลือง) เพือทาํ การสร้างขนาด
ความกวา้ ง และความยาวของแผ่น PCB

เลือก Board Edge

รูปที 3.19 ทาํ การเลือก Board Edge เพอื สร้างขนาดของแผน่ PCB

45
2.3 กาํ หนดขนาดของแผน่ PCB ดงั รูปที 3.20

32th
0.3n
75.5mm.
48 mm.

รูปที 3.20 ขนาดของแผน่ PCB ทที าํ การออกแบบ
2.4 คลิกขวาบนพืนทีวา่ ง เลือก Place จากนนั มาที Power Plane และทาํ การตงั ค่า
ตามรูปที 3.21 โดยหลงั จากทาํ การตงั ค่าเสร็จแลว้ ทาํ การกดลากคลุมพืนทีทงั หมดของแผ่น PCB
เพอื ทาํ เป็นพืนกราวด์ (Ground Plane)

GND=POWER

รูปที 3.21 การทาํ พนื กราวด์ (Ground Plane)

46
2.5 นาํ อปุ กรณ์ทงั หมดมาจดั วางบนพนื กราวดท์ ีออกแบบไวด้ งั รูปที 3.22 โดยแถบ
เครืองมือ COMPONENTS ตอ้ งวา่ งเปลา่

รูปที 3.22 ตาํ แหน่งการวางอุปกรณ์เพอื รอทาํ การเชือมตอ่ สายไฟ
2.6 ทาํ การเชือมต่อสายไฟทงั หมดโดยตงั ค่าใหข้ นาดของสายไฟ +12V เป็น T50
และขนาดของสาย +5V เป็น T30 ดงั รูปที 3.23

รูปที 3.23 วงจรขบั มอเตอร์แบบ PCB Layout ทเี สร็จสมบูรณ์

47
2.7 สามารถดูภาพแบบ 3D ไดท้ ี 3D Visualizer เพอื ดูรูปจาํ ลองก่อนทาํ วงจรจริง

(ก) ภาพจาํ ลอง 3D ของวงจรขบั มอเตอร์ (ข) วงจรขบั มอเตอร์ทที าํ เสร็จเรียบรอ้ ยแลว้
รูปที 3.24 วงจรขบั มอเตอร์ดว้ ยไอซีเบอร์ L298N

3. รายการอปุ กรณ์ทีใช้ในการทาํ วงจรขบั มอเตอร์
ตารางที 3. รายการอปุ กรณท์ ีใชใ้ นวงจรขบั เคลือนมอเตอร์

ชอื อา้ งอิง จาํ นวน คาํ อธิบาย

IC L298N 2 ไอซีสําหรับควบคุมมอเตอร์ไฟฟ้ากระแสตรง
Resistor 1 ตวั ตา้ นทานขนาด กิโลโอห์ม

IC 7805 1 สําหรับกาํ หนดแรงดนั ไฟฟ้าฝังขาออกเป็น5V
LED 1 ไฟแอลอีดีสีเขียวสําหรับเช็คสถานะวงจร
Capacitor 3 ตวั เก็บประจุขนาด 22uF
Diode 12 สาํ หรับควบคุมทศิ ทางการไหลของกระแสไฟฟ้า

Terminal Block 3 Pin 1 ตวั เชอื มต่อสายไฟแบบ 3 ขา ขนาด 5 มิลลเิ มตร

Terminal Block 2 Pin 3 ตวั เชอื มต่อสายไฟแบบ 2 ขา ขนาด 5 มลิ ลเิ มตร

40 Pin Header Single Row 1 กา้ งปลา 40 ขา ขนาด 2.54 มลิ ลเิ มตร

48

ตารางที 3.1 (ต่อ)

ชอื อา้ งอิง จาํ นวน คาํ อธิบาย
Print Circuit Board (PCB) 1 แผ่นวงจรพมิ พห์ นา 1.5 มลิ ลเิ มตร
3 แผ่นระบายความร้อนพร้อมแผ่นกาว
Mini Heat sink

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

กาํ หนดขอบเขตใหห้ ุ่นยนตส์ ามารถเคลือนทีในแนวตรง ,ถอยหลงั ,หมุนซา้ ย ,หมนุ ขวา ,เลียวซา้ ย ,
เลียวขวา ,เฉียงไปทางซ้ายดา้ นหนา้ และเฉียงไปทางขวาดา้ นหนา้ ได้ โดยโปรแกรมประยุกตท์ ีใช้มี
ชือวา่ Blynk ขนั ตอนการออกแบบและดาํ เนินการสร้างมีดงั นี

1. ดาวน์โหลดโปรแกรม Blynk จาก Play store และทาํ การติดตงั ลงบนอุปกรณ์
เคลือนที เมือติดตงั โปรแกรมเสร็จใหไ้ ปทีโปรแกรม Blynk เพือทาํ การลงทะเบียนเขา้ ใช้งาน
โปรแกรม โดยเลือกที Create New Account

รูปที 3.25 เลอื ก Create New Account เพอื ทาํ การลงทะเบียนเขา้ ใชง้ าน

49
2. ใส่ E-mail ทีตอ้ งการลงทะเบียน และตงั รหสั ผ่าน หลงั จากนนั กด Sign Up

รูปที 3.26 ใส่ E-mail ทีตอ้ งการลงทะเบยี น
3. หลงั ลงทะเบียนเสร็จ ใหท้ าํ การสร้างโครงงาน โดยเลอื กที Create New Project

รูปที 3.27 เลอื ก Create New Project เพือสร้างโครงงาน

50
4. ตงั ชือโครงงาน เลือก Hardware Model เป็น ESP8266 และกดป่ ุม Email เพือส่ง
รหสั Auth Token ไปที Email ทไี ดท้ าํ การลงทะเบยี น จากนนั กด Create เพือสร้างโครงงาน

1
2
3

รูป 3.28 การสร้างรูปแบบการเชือมต่อโครงงาน
5. โปรแกรมจะปรากฏหนา้ โครงงานขึนมา ใหท้ าํ การกดทเี ครืองหมาย + บริเวณมุม
บนขวา เพอื เลอื ก Widget

รูปที 3.29 หน้าโครงงานสําหรบั วางป่ ุมควบคมุ

51
6. หนา้ ต่าง Widget กดทปี ่ ุม Button เพอื เลอื กใชง้ านป่ ุมกดสาํ หรับใช้ในโครงงาน

รูปที 3.30 หนา้ ต่าง Widget สําหรับเลอื กอปุ กรณ์ควบคมุ
7. หนา้ จอควบคุมกดทปี ่มุ BUTTON เพอื ทาํ การตงั คา่ ใหก้ บั ปุ่ม

รูปที 3.31 หน้าจอควบคุม

52

8. หน้าต่าง Button Settings ใส่ชือป่ ุมกด จากนันไปที Output เพือกําหนด
ค่าพารามเิ ตอร์และไปที Mode กาํ หนด Button เป็น PUSH

1

2
V22

3

รูปที 3.32 การตงั ค่าใหป้ ่ มุ ควบคมุ แบบ Button

9. ทาํ ขอ้ 5-8 ซาํ อีก 3 ครังเพอื สร้างอกี 3 ป่ ุม โดยเปลียนชือและค่าพารามเิ ตอร์ใหม่
ในขอ้ ที 8 หลงั ทาํ ครบทกุ ขนั ตอน จะไดท้ งั หมด 4 ป่ ุม ดงั รูปที 3.33

รูปที 3.33 การสร้างปุ่มควบคุมแบบ Button

53
10. กลบั มาทีหนา้ ต่าง Widget อกี ครังกดทปี ่ ุม Style Button เพือเลอื กใช้งานป่ มุ กด
สําหรับใชใ้ นโครงงาน

รูปที 3.34 หนา้ ต่าง Widget สาํ หรับเลอื กอุปกรณ์ควบคมุ
11. หนา้ จอควบคุมกดทปี ่มุ Style Button เพอื ทาํ การตงั ค่าใหก้ บั ปุ่ม

รูปที 3.35 หนา้ จอควบคุมทมี ีการเพิมป่ ุมStyle Button

54
12. หนา้ ต่าง Styled Button Settings ใส่ชือป่ มุ กด จากนนั ไปที Output เพือกาํ หนด
คา่ พารามิเตอร์ และไปที Mode กาํ หนด Button เป็น PUSH

1
2

3

รูปที 3.36 การตงั ค่าใหป้ ่มุ ควบคมุ แบบ Style Button
13. ทาํ ขอ้ 10-12 ซาํ อกี 3 ครังเพือสร้างอกี 3 ป่ ุม โดยเปลียนชือและค่าพารามิเตอร์
ใหม่ในขอ้ ที 12 หลงั ทาํ ครบทกุ ขนั ตอน จะไดท้ งั หมด 8 ป่ ุม ดงั รูปที 3.37

รูปที 3.37 หนา้ จอควบคมุ ทีเสร็จสมบรู ณ์แลว้

55

3.2.6 การออกแบบเฟิ ร์มแวร์

เฟิร์มแวร์คอื ซอฟตแ์ วร์ทีฝังอยู่ในส่วนของฮาร์ดแวร์ ทางผูจ้ ดั ทาํ ไดอ้ อกแบบส่วน
ของเฟิร์มแวร์เป็น 3 ส่วน คือ 1. ส่วนของเฟิร์มแวร์ทรี บั คาํ สังมาจากโปรแกรมประยกุ ต์บนอุปกรณ์
เคลือนที 2. ส่วนของเฟิร์มแวร์ทรี ับและส่งสัญญาณทาง Logic ไปควบคุมทิศทางการหมุนและ
ความเร็วของมอเตอร์ 3. ส่วนของเฟิ ร์มแวร์ทีเขา้ รหสั เพือเชือมต่อกับระบบเครือข่ายไร้สาย
(Wireless LAN)

1. ขนั ตอนการออกแบบเฟิร์มแวร์
1.1 สร้างไลบรารีของ ESP8266 บนโปรแกรมประยุกต์ Arduino IDE เพือให้

โปรแกรมประยกุ ต์ Arduino IDE มีไลบรารีของ NodeMCU โดยไปที File เลือก Preference ทาํ การ
ระบุ URLs ตรงบริเวณช่อง Additional Boards Manager URLs: ใหท้ าํ การระบุ URLs ดงั นี http://
arduino.esp8266.com/stable/package_esp8266com_index.json จากนนั กด OK

รูปที 3.38 การสร้างไลบรารีใหโ้ ปรแกรม Arduino IDE

56
1.2 มาทแี ถบเมนเู ลอื ก Tools เลือนหาเมนู Board: “Arduino/Genuino Uno”
จากนนั กดคาํ วา่ Boards Manager…

รูปที 3.39 การปรับปรุงไลบรารี ESP8266
1.3 จะขึนหนา้ ต่าง Boards Manager จากนนั เลือก Type เป็น Contributed และ
ทาํ การเลอื นหาบอร์ด ของ ESP8266 หลงั พบแลว้ ใหเ้ ลือกเป็นรุ่นล่าสุดและกด Install

57

รูปที 3.40 การปรับปรุงบอร์ดทดลอง ESP8266 ใหเ้ ป็นรุ่นล่าสุด
1.4 หลงั ติดตงั ไลบรารีเสร็จใหท้ าํ การปิดโปรแกรมและเปิ ดขนึ มาใหม่ จากนนั ที
แถบเมนูเลือก Tools เลือนหาเมนู Board: “Arduino/Genuino Uno” ให้ทาํ การเปลียนเป็ น
NodeMCU 1.0 (ESP12-E Module)

58

รูปที 3.41 แสดงบอร์ดทดลองทเี พิมขนึ มาใหม่
1.5 ทาํ การเขียนโปรแกรม โดยจุดทีตอ้ งทําการแกไ้ ขคือ 1.บรรทดั ทีเขียนว่า
char auth [ ] ให้นาํ รหสั ทีไดจ้ ากการทาํ โปรแกรมประยุกต์ Blynk ซึงอยใู่ น E-mail ทีใช้ในการ
ลงทะเบียน มาใส่ 2.บรรทดั ทีเขียนว่า char ssid [ ] ให้นาํ ID ของสัญญาณ WiFi ทีตอ้ งการทาํ การ
เชือมต่อมาใส่ และ 3.บรรทดั ทีเขยี นวา่ char pass [ ] ใหน้ าํ Password ของสญั ญาณ WiFi ทีตอ้ งการ
ทาํ การเชือมต่อมาใส่

59
รูปที 3.42 ส่วนทีตอ้ งทาํ การแกไ้ ข

60
1.6 หลังเขียนโปรแกรมเสร็จให้ทําการเลือกเครืองหมายถูกเพือทาํ การ
ตรวจสอบโปรแกรม หากไม่มีขอ้ ผิดพลาดจะมขี อ้ ความแสดงขนึ วา่ Done compiling ดงั รูปที 3.43

Done compiling

รูปที 3.43 แสดงส่วนของเฟิร์มแวร์ทผี ่านการตรวจสอบแลว้
1.7 ทําการเสียบสาย USB ระหว่างคอมพิวเตอร์กับ NodeMCU เพือทาํ การ
บนั ทึกเฟิร์มแวร์ลงไมโครคอนโทรลเลอร์บน NodeMCU
1.8 จากนนั ตรวจสอบการติดตงั ไดร์เวอร์ของ NodeMCU โดยคลิกขวาที My
Computer เลอื ก Properties และมาที Device Manager

รูปที 3.44 ขนั ตอนการปรับปรุงไดร์เวอร์ของ NodeMCU

61
1.9 ที Ports (COM & LPT) จะพบไดร์เวอร์ของ NodeMCU ใหท้ าํ การคลิกขวา
เลือกปรบั ปรุงไดร์เวอร์
1.10 กลบั มาทีโปรแกรม Arduino IDE มาทีแถบเมนูเลือก Tools จากนนั เลือน
ลงมาทีคาํ วา่ Port: ซึงในตวั อยา่ งนีคือ Port: “COM8”

รูปที 3.45 การเลือกพอร์ตทเี สียบสาย USB ระหวา่ งคอมพวิ เตอร์กบั NodeMCU
1.11 เลือกเครืองหมายลกู ศรเพือทาํ การบนั ทึกเฟิร์มแวร์ลง NodeMCU หลัง

บนั ทึกเสร็จสามารถถอดสาย USB แลว้ นาํ NodeMCU ไปใชง้ านได้

รูปที 3.46 ป่ ุม Uplode ขอ้ มลู ลง NodeMCU

62

2. คาํ อธิบายในส่วนตา่ งๆของเฟิร์มแวร์
ขนั ตอนการทาํ งานของเฟิ ร์มแวร์จะเริ มจากคน้ หาชือไวไฟทีมีอยู่ในรัศมีของ

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

#include <ESP WiFi.h> // อา้ งอิงไฟล์ ESP8266WiFi.h จากไดเรกทอรี
#include<BlynkSimpleEsp .h> // อา้ งอิงไฟล์ BlynkSimpleEsp .h จากไดเรกทอรี
#define BLYNK_PRINT Serial // กาํ หนดตวั แปรชือ BLYNK_PRINT Serial
#define dir PinA D // กาํ หนดตวั แปรชอื dir1PinA และกาํ หนดชือขา D9
#define dir PinA D // กาํ หนดตวั แปรชอื dir2PinA และกาํ หนดชือขา D8
#define speedPinA D7 // กาํ หนดตวั แปรชอื speedPinA และกาํ หนดชอื ขา D7
#define dir PinB D
#define dir PinB D // กาํ หนดตวั แปรชือ dir1PinB และกาํ หนดชือขา D6
#define speedPinB D4 // กาํ หนดตวั แปรชือ dir2PinB และกาํ หนดชือขา D5
#define dir1PinC D // กาํ หนดตวั แปรชอื speedPinB และกาํ หนดชือขา D4
#define dir PinC D // กาํ หนดตวั แปรชอื dir1PinC และกาํ หนดชอื ขา D2
#define speedPinC D0 // กาํ หนดตวั แปรชือ dir2PinC และกาํ หนดชอื ขา D1
char auth[] = "XXXXXXXX"; // กาํ หนดตวั แปรชอื speedPinC และกาํ หนดชอื ขา D0
// บรรทดั นีใหใ้ ส่รหสั ทไี ดจ้ ากการสร้างโปรแกรม
char ssid[] = "XXXXXXXX"; ประยกุ ตบ์ นอปุ กรณ์เคลือนที ซึงรหสั จะอยู่ใน E-mail
char pass[] = "XXXXXXXX"; หลงั จากทเี ริมสร้างโปรแกรม
void setup() // บรรทดั นีใหใ้ ส่ชือ WiFi ทีตอ้ งการเชอื มตอ่
Serial.begin( ); // บรรทดั นีใหใ้ ส่รหสั WiFi ทตี อ้ งการเชอื มตอ่
// ประกาศตงั ค่าเริมตน้ ของฟังกช์ นั
Blynk.begin(auth, ssid, pass); // ตงั ค่าความเร็วเพอื ตดิ ตอ่ สือสารกบั คอมพวิ เตอร์ใน
pinMode(dir PinA, OUTPUT); อตั ราเร็ว 115,200 บิตต่อวนิ าที
// ประกาศตวั แปร auth, ssid, pass เพอื เชือมต่อสัญญาณ
// ตงั ค่าใหข้ า D9 เป็นเอาตพ์ ตุ

63

pinMode(dir PinA, OUTPUT); // ตงั ค่าใหข้ า D8 เป็นเอาตพ์ ตุ
pinMode(speedPinA, OUTPUT);
pinMode(dir PinB, OUTPUT); // ตงั ค่าใหข้ า D7 เป็นเอาตพ์ ตุ
pinMode(dir PinB, OUTPUT);
pinMode(speedPinB, OUTPUT); // ตงั คา่ ใหข้ า D เป็ นเอาตพ์ ตุ
pinMode(dir1PinC, OUTPUT); // ตงั คา่ ใหข้ า D เป็นเอาตพ์ ุต
pinMode(dir2PinC, OUTPUT); // ตงั ค่าใหข้ า D เป็นเอาตพ์ ุต
pinMode(speedPinC, OUTPUT); // ตงั ค่าใหข้ า D เป็นเอาตพ์ ตุ
void loop() // ตงั คา่ ใหข้ า D เป็นเอาตพ์ ตุ
Blynk.run(); // ตงั คา่ ใหข้ า D เป็นเอาตพ์ ุต
void TurnLeft() // ประกาศใหฟ้ ังกช์ นั จาก Void setup( ) ทาํ การวนซาํ
analogWrite(speedPinA, 767)
// สังใหโ้ ปรแกรมชือBlynk ทาํ การประมวลผล
analogWrite(speedPinB, 1023); // ประกาศฟังกช์ นั TurnLeft
// ใหข้ า D7 เป็นเอาต์พุตแบบอนาลอ็ ก และตงั ค่า Duty
analogWrite(speedPinC, 512); Cycle เป็น 75% ของเลขฐาน ขนาด บติ
// ใหข้ า D4 เป็นเอาตพ์ ตุ แบบอนาลอ็ ก และตงั ค่า Duty
digitalWrite(dir PinA, HIGH); Cycle เป็น 100% ของเลขฐาน ขนาด บติ
digitalWrite(dir PinA, LOW); // ใหข้ า D0 เป็นเอาตพ์ ตุ แบบอนาล็อก และตงั ค่า Duty
digitalWrite(dir PinB, LOW); Cycle เป็น 50% ของเลขฐาน ขนาด บติ
digitalWrite(dir PinB, HIGH); // ใหข้ า D9 เป็นเอาตพ์ ตุ แบบดจิ ติ อล และเป็น Logic 1
digitalWrite(dir1PinC, LOW); // ใหข้ า D8 เป็นเอาตพ์ ตุ แบบดจิ ติ อล และเป็น Logic 0
digitalWrite(dir2PinC, HIGH); // ใหข้ า D6 เป็นเอาตพ์ ุตแบบดิจิตอล และเป็น Logic 0
void TurnRight () // ใหข้ า D5 เป็นเอาต์พตุ แบบดจิ ติ อล และเป็น Logic 1
analogWrite(speedPinA, 1023) // ใหข้ า D2 เป็นเอาต์พุตแบบดิจติ อล และเป็น Logic 0
// ใหข้ า D1 เป็นเอาตพ์ ุตแบบดิจติ อล และเป็น Logic 1
// ประกาศฟังกช์ นั TurnRight
// ใหข้ า D7 เป็นเอาตพ์ ตุ แบบอนาล็อก และตงั ค่า Duty
Cycle เป็น 100% ของเลขฐาน ขนาด บติ

analogWrite(speedPinB, 767); // ใหข้ า D4 เป็นเอาต์พุตแบบอนาล็อก และตงั ค่า Duty
Cycle เป็น 75% ของเลขฐาน ขนาด บติ

64

analogWrite(speedPinC, 512); // ใหข้ า D0 เป็นเอาต์พตุ แบบอนาลอ็ ก และตงั ค่า Duty
Cycle เป็น 50% ของเลขฐาน ขนาด บติ
digitalWrite(dir PinA, HIGH); // ใหข้ า D9 เป็นเอาต์พุตแบบดจิ ิตอล และเป็น Logic 1
digitalWrite(dir PinA, LOW); // ใหข้ า D8 เป็นเอาต์พตุ แบบดจิ ิตอล และเป็น Logic 0
digitalWrite(dir PinB, LOW); // ใหข้ า D6 เป็นเอาต์พุตแบบดจิ ิตอล และเป็น Logic 0
digitalWrite(dir PinB, HIGH); // ใหข้ า D5 เป็นเอาตพ์ ุตแบบดจิ ิตอล และเป็น Logic 1
digitalWrite(dir PinC, HIGH); // ใหข้ า D2 เป็นเอาต์พุตแบบดิจิตอล และเป็น Logic 1
digitalWrite(dir PinC, LOW); // ใหข้ า D1 เป็นเอาตพ์ ตุ แบบดิจติ อล และเป็น Logic 0
void Back() // ประกาศฟังกช์ นั Back
analogWrite(speedPinA, 1023) // ใหข้ า D7 เป็นเอาตพ์ ุตแบบอนาลอ็ ก และตงั ค่า Duty
Cycle เป็น 100% ของเลขฐาน ขนาด บติ
analogWrite(speedPinB, 1023); // ใหข้ า D4 เป็นเอาตพ์ ุตแบบอนาล็อก และตงั ค่า Duty
Cycle เป็น 100% ของเลขฐาน ขนาด บติ
digitalWrite(dir PinA, LOW); // ใหข้ า D9 เป็นเอาต์พุตแบบดจิ ติ อล และเป็น Logic 0
digitalWrite(dir PinA, HIGH); // ใหข้ า D8 เป็นเอาตพ์ ุตแบบดจิ ิตอล และเป็น Logic 1
digitalWrite(dir PinB, HIGH); // ใหข้ า D6 เป็นเอาตพ์ ตุ แบบดจิ ติ อล และเป็น Logic 1
digitalWrite(dir PinB, LOW); // ใหข้ า D5 เป็นเอาตพ์ ตุ แบบดจิ ติ อล และเป็น Logic 0
Void Forward () // ประกาศฟังกช์ นั Forward
analogWrite(speedPinA, 1023) // ใหข้ า D7 เป็นเอาตพ์ ุตแบบอนาลอ็ ก และตงั ค่า Duty
Cycle เป็น 100% ของเลขฐาน ขนาด บติ
analogWrite(speedPinB, 1023); // ใหข้ า D4 เป็นเอาต์พุตแบบอนาล็อก และตงั ค่า Duty
Cycle เป็น 100% ของเลขฐาน ขนาด บติ
digitalWrite(dir PinA, HIGH); // ใหข้ า D9 เป็นเอาต์พตุ แบบดจิ ิตอล และเป็น Logic 1
digitalWrite(dir PinA, LOW); // ใหข้ า D8 เป็นเอาตพ์ ุตแบบดจิ ิตอล และเป็น Logic 0
digitalWrite(dir PinB, LOW); // ใหข้ า D6 เป็นเอาต์พุตแบบดจิ ิตอล และเป็น Logic 0
digitalWrite(dir PinB, HIGH); // ใหข้ า D5 เป็นเอาตพ์ ตุ แบบดจิ ิตอล และเป็น Logic 1
void RotateLeft() // ประกาศฟังกช์ นั RotateLeft

analogWrite(speedPinA, 512) // ใหข้ า D7 เป็นเอาต์พตุ แบบอนาลอ็ ก และตงั ค่า Duty
Cycle เป็น 50% ของเลขฐาน ขนาด บติ

65

analogWrite(speedPinB, 512); // ใหข้ า D4 เป็นเอาตพ์ ุตแบบอนาลอ็ ก และตงั ค่า Duty
Cycle เป็น 50% ของเลขฐาน ขนาด บติ
analogWrite(speedPinC, 512); // ใหข้ า D0 เป็นเอาตพ์ ตุ แบบอนาล็อก และตงั ค่า Duty
Cycle เป็น 50% ของเลขฐาน ขนาด บติ
digitalWrite(dir PinA, LOW); // ใหข้ า D9 เป็นเอาต์พุตแบบดิจิตอล และเป็น Logic 0
digitalWrite(dir PinA, HIGH); // ใหข้ า D8 เป็นเอาต์พตุ แบบดิจติ อล และเป็น Logic 1
digitalWrite(dir PinB, LOW); // ใหข้ า D6 เป็นเอาตพ์ ตุ แบบดจิ ิตอล และเป็น Logic 0
digitalWrite(dir PinB, HIGH); // ใหข้ า D5 เป็นเอาตพ์ ุตแบบดิจิตอล และเป็น Logic 1
digitalWrite(dir1PinC, LOW); // ใหข้ า D2 เป็นเอาต์พตุ แบบดิจิตอล และเป็น Logic 0
digitalWrite(dir2PinC, HIGH); // ใหข้ า D1 เป็นเอาตพ์ ตุ แบบดิจิตอล และเป็น Logic 1
void RotateRight() // ประกาศฟังกช์ นั RotateRight
analogWrite(speedPinA, 512) // ใหข้ า D7 เป็นเอาตพ์ ุตแบบอนาลอ็ ก และตงั ค่า Duty
Cycle เป็น 50% ของเลขฐาน ขนาด บติ
analogWrite(speedPinB, 512); // ใหข้ า D4 เป็นเอาตพ์ ตุ แบบอนาล็อก และตงั ค่า Duty
Cycle เป็น 50% ของเลขฐาน ขนาด บติ
analogWrite(speedPinC, 512); // ใหข้ า D0 เป็นเอาตพ์ ตุ แบบอนาลอ็ ก และตงั ค่า Duty
Cycle เป็น 50% ของเลขฐาน ขนาด บติ
digitalWrite(dir PinA, HIGH); // ใหข้ า D9 เป็นเอาตพ์ ุตแบบดิจติ อล และเป็น Logic 1
digitalWrite(dir PinA, LOW); // ใหข้ า D8 เป็นเอาต์พตุ แบบดิจิตอล และเป็น Logic 0
digitalWrite(dir PinB, HIGH); // ใหข้ า D6 เป็นเอาต์พุตแบบดิจติ อล และเป็น Logic 1
digitalWrite(dir PinB, LOW); // ใหข้ า D5 เป็นเอาตพ์ ตุ แบบดจิ ติ อล และเป็น Logic 0
digitalWrite(dir1PinC, HIGH); // ใหข้ า D2 เป็นเอาต์พุตแบบดิจติ อล และเป็น Logic 1
digitalWrite(dir2PinC, LOW); // ใหข้ า D1 เป็นเอาตพ์ ตุ แบบดจิ ติ อล และเป็น Logic 0
void FLeft() // ประกาศฟังก์ชนั FLeft
analogWrite(speedPinA, 512) // ใหข้ า D7 เป็นเอาต์พตุ แบบอนาลอ็ ก และตงั ค่า Duty
Cycle เป็น 50% ของเลขฐาน ขนาด บติ
analogWrite(speedPinB, 1023); // ใหข้ า D4 เป็นเอาต์พุตแบบอนาลอ็ ก และตงั ค่า Duty
Cycle เป็น 100% ของเลขฐาน ขนาด บติ
analogWrite(speedPinC, 767); // ใหข้ า D0 เป็นเอาตพ์ ตุ แบบอนาลอ็ ก และตงั ค่า Duty
Cycle เป็น 75% ของเลขฐาน ขนาด บติ

66

digitalWrite(dir PinA, HIGH); // ใหข้ า D9 เป็นเอาต์พตุ แบบดจิ ติ อล และเป็น Logic 1
digitalWrite(dir PinA, LOW); // ใหข้ า D8 เป็นเอาต์พุตแบบดิจิตอล และเป็น Logic 0
digitalWrite(dir PinB, LOW); // ใหข้ า D6 เป็นเอาต์พุตแบบดจิ ิตอล และเป็น Logic 0
digitalWrite(dir PinB, HIGH); // ใหข้ า D5 เป็นเอาตพ์ ตุ แบบดจิ ิตอล และเป็น Logic 1
digitalWrite(dir1PinC, HIGH); // ใหข้ า D2 เป็นเอาต์พตุ แบบดิจติ อล และเป็น Logic 1
digitalWrite(dir2PinC, LOW); // ใหข้ า D1 เป็นเอาต์พุตแบบดิจิตอล และเป็น Logic 0
void FRight() // ประกาศฟังก์ชนั FRight
analogWrite(speedPinA, 1023) // ใหข้ า D7 เป็นเอาต์พุตแบบอนาล็อก และตงั ค่า Duty
Cycle เป็น 100% ของเลขฐาน ขนาด บติ
analogWrite(speedPinB, 512); // ใหข้ า D4 เป็นเอาตพ์ ตุ แบบอนาล็อก และตงั ค่า Duty
Cycle เป็น 50% ของเลขฐาน ขนาด บติ
analogWrite(speedPinC, 767); // ใหข้ า D0 เป็นเอาต์พุตแบบอนาลอ็ ก และตงั ค่า Duty
Cycle เป็น 75% ของเลขฐาน ขนาด บติ
digitalWrite(dir PinA, HIGH); // ใหข้ า D9 เป็นเอาตพ์ ตุ แบบดิจิตอล และเป็น Logic 1
digitalWrite(dir PinA, LOW); // ใหข้ า D8 เป็นเอาต์พุตแบบดจิ ติ อล และเป็น Logic 0
digitalWrite(dir PinB, LOW); // ใหข้ า D6 เป็นเอาต์พุตแบบดจิ ติ อล และเป็น Logic 0
digitalWrite(dir PinB, HIGH); // ใหข้ า D5 เป็นเอาต์พตุ แบบดจิ ิตอล และเป็น Logic 1
digitalWrite(dir1PinC, LOW); // ใหข้ า D2 เป็นเอาตพ์ ุตแบบดิจติ อล และเป็น Logic 0
digitalWrite(dir2PinC, HIGH); // ใหข้ า D1 เป็นเอาต์พตุ แบบดิจิตอล และเป็น Logic 1
Void no() // ประกาศฟังกช์ นั no
digitalWrite(dir PinA, HIGH); // ใหข้ า D9 เป็นเอาตพ์ ตุ แบบดจิ ิตอล และเป็น Logic 1
digitalWrite(dir PinA, HIGH); // ใหข้ า D8 เป็นเอาต์พตุ แบบดิจิตอล และเป็น Logic 1
digitalWrite(dir PinB, HIGH); // ใหข้ า D6 เป็นเอาต์พุตแบบดิจติ อล และเป็น Logic 1
digitalWrite(dir PinB, HIGH); // ใหข้ า D5 เป็นเอาตพ์ ุตแบบดจิ ติ อล และเป็น Logic 1
digitalWrite(dir PinC, HIGH); // ใหข้ า D2 เป็นเอาต์พตุ แบบดิจติ อล และเป็น Logic 1
digitalWrite(dir PinC, HIGH); // ใหข้ า D1 เป็นเอาตพ์ ุตแบบดิจิตอล และเป็น Logic 1
BLYNK_WRITE(V24) // รับค่าพารามเิ ตอร์ V24 ในโปรแกรม BLYNK
if (param[ ]) // ถา้ คา่ พารามเิ ตอร์เทา่ กบั 0
TurnLeft(); // คาํ สงั ตา่ งๆทีอยใู่ นกลุ่มฟังกช์ นั TurnLeft ทาํ งาน
else // แลว้ ถา้ พารามเิ ตอร์ไมเ่ ท่ากบั 0

no(); 67
BLYNK_WRITE(V )
if (param[ ]) // คาํ สงั ต่างๆทอี ยู่ในกลุ่มตวั แปร TurnLeft ไมท่ าํ งาน
TurnRight(); // รับคา่ พารามิเตอร์ V25 ในโปรแกรม BLYNK
else // ถา้ ค่าพารามเิ ตอร์เท่ากบั 0
no(); // คาํ สงั ตา่ งๆทอี ยู่ในกลุ่มฟังกช์ นั TurnRight ทาํ งาน
BLYNK_WRITE(V23) // แลว้ ถา้ พารามเิ ตอร์ไม่เท่ากบั 0
if (param[ ]) // คาํ สงั ต่างๆทีอยู่ในกลุ่มฟังกช์ นั TurnRight ไมท่ าํ งาน
Back(); // รับคา่ พารามเิ ตอร์ V25 ในโปรแกรม BLYNK
else // ถา้ คา่ พารามเิ ตอร์เท่ากบั 0
no(); // คาํ สงั ต่างๆทีอย่ใู นกลุ่มฟังกช์ นั Back ทาํ งาน
BLYNK_WRITE(V22) // แลว้ ถา้ พารามเิ ตอร์ไมเ่ ท่ากบั 0
if (param[ ]) // คาํ สงั ตา่ งๆทอี ยูใ่ นกลุ่มฟังกช์ นั Back ไม่ทาํ งาน
Forward(); // รับค่าพารามิเตอร์ V22 ในโปรแกรม BLYNK
else // ถา้ คา่ พารามิเตอร์เท่ากบั 0
no(); // คาํ สงั ตา่ งๆทีอยู่ในกลุ่มฟังกช์ นั Forward ทาํ งาน
BLYNK_WRITE(V26) // แลว้ ถา้ พารามเิ ตอร์ไมเ่ ท่ากบั 0
if (param[ ]) // คาํ สงั ต่างๆทีอย่ใู นกลุ่มฟังกช์ นั Forward ไม่ทาํ งาน
RotateLeft(); // รับค่าพารามิเตอร์ V26 ในโปรแกรม BLYNK
else // ถา้ คา่ พารามเิ ตอร์เทา่ กบั 0
no(); // คาํ สงั ตา่ งๆทอี ยู่ในกลุ่มฟังกช์ นั RotateLeft ทาํ งาน
BLYNK_WRITE(V27) // แลว้ ถา้ พารามเิ ตอร์ไมเ่ ท่ากบั 0
if (param[ ]) // คาํ สงั ต่างๆทีอย่ใู นกลุ่มฟังกช์ นั RotateLeft ไมท่ าํ งาน
RotateRight(); // รับค่าพารามเิ ตอร์ V27 ในโปรแกรม BLYNK
else // ถา้ คา่ พารามิเตอร์เทา่ กบั 0
no(); // คาํ สงั ต่างๆทีอยใู่ นกลุ่มฟังกช์ นั RotateRight ทาํ งาน
BLYNK_WRITE(V20) // แลว้ ถา้ พารามเิ ตอร์ไมเ่ ท่ากบั 0
if (param[ ]) // คาํ สงั ต่างๆทีอยู่ในฟังกช์ นั RotateRight ไม่ทาํ งาน
FLeft(); // รับค่าพารามเิ ตอร์ V27 ในโปรแกรม BLYNK
else // ถา้ ค่าพารามเิ ตอร์เท่ากบั 0
// คาํ สงั ตา่ งๆทอี ยู่ในกลุ่มฟังกช์ นั FLeft ทาํ งาน
// แลว้ ถา้ พารามเิ ตอร์ไม่เท่ากบั 0

no(); 68
BLYNK_WRITE(V21)
if (param[ ]) // คาํ สงั ต่างๆทอี ยใู่ นฟังกช์ นั FLeft ไมท่ าํ งาน
FRight(); // รับค่าพารามิเตอร์ V27 ในโปรแกรม BLYNK
else // ถา้ ค่าพารามเิ ตอร์เทา่ กบั 0
no(); // คาํ สงั ตา่ งๆทอี ยู่ในกลุ่มฟังกช์ นั FRight ทาํ งาน
// แลว้ ถา้ พารามเิ ตอร์ไมเ่ ท่ากบั 0
// คาํ สงั ตา่ งๆทอี ยใู่ นฟังก์ชนั FRight ไมท่ าํ งาน

69
รูปที 3.47 แสดงอลั กอริทึมของเฟิร์มแวร์

บทที 4
ผลการศึกษา

4.1 การทดสอบการเคลือนทแี นวตรงและถอยหลัง

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

จดุ ทีกาํ หนด เส้นระยะทหี นุ่ ยนต์
ต้องหยดุ เคลอื นที
50 ซม. เพือทาํ การบนั ทึก

จดุ เริมต้น

รูปที 4.1 เส้นทางทีใชใ้ นการทดสอบ

71

300 ซม. 200 ซม. 250 ซม.

150 ซม.

100 ซม.

50 ซม.

รูปที 4.2 หุ่นยนตอ์ ยู่ตาํ แหน่งจดุ เริมตน้ เพือเริ มทาํ การทดสอบ

หลงั เสร็จสิ นการทดสอบทงั การเคลอื นทแี นวตรงและถอยหลงั ไดผ้ ลการทดลองดงั ตารางที
4.1 และตารางที 4.2 ดงั นี

72

ตารางที 4.1 การทดสอบการเคลอื นทแี นวตรงและถอยหลงั เพอื วดั ระยะห่างจากจดุ ทีกาํ หนด

ลาํ ดบั รายการ ระยะห่างจากจดุ ทีกาํ หนด (ซม.) คา่ เฉลยี ระยะห่าง ขอ้ สังเกต
ครังท1ี ครังท2ี ครังที3 จากจดุ ทกี าํ หนด
1 วงิ ตรง 50 ซม. ยิงระยะการ
2 วงิ ตรง 100 ซม. 000 0.0 ทดสอบไกล
3 วงิ ตรง 150 ซม. 0 0 7.3 2.4
4 วงิ ตรง 200 ซม. 6 0 14 6.7 เทา่ ไหร่
5 วงิ ตรง 250 ซม. 8.2 0 15.5 7.9 ระยะห่าง
6 วงิ ตรง 300 ซม. 18 10.5 22 16.8 ระหวา่ งตวั
7 ถอยหลงั 50 ซม. 66.5 56 22.8 48.4 หุ่นยนตก์ บั
8 ถอยหลงั 100 ซม. 000 0.0 จดุ ทีกาํ หนด
9 ถอยหลงั 150 ซม. 000 0.0 จะเพิมขนึ
10 ถอยหลงั 200 ซม. 000 0.0 ตามลาํ ดบั
11 ถอยหลงั 250 ซม. 0 0 25 8.3
12 ถอยหลงั 300 ซม. 6 0 38 14.7
9.2 0 46.7 18.6

ตารางที 4.2 การทดสอบการเคลอื นทีแนวตรงและถอยหลงั เพือวดั องศาทีห่างจากจดุ เริ มตน้

ลาํ ดบั รายการ องศาทีห่างจากจุดเริมตน้ (องศา) ค่าเฉลยี องศาจาก ขอ้ สงั เกต
ครังท1ี ครังท2ี ครังที3 จุดเริ มตน้
1 วงิ ตรง 50 ซม. 0.0 ถา้ หุ่นยนต์
2 วงิ ตรง 100 ซม. 000 2.4 อยูใ่ น
3 วงิ ตรง 150 ซม. 0 0 7.3 4.4 ระยะห่าง
4 วงิ ตรง 200 ซม. 4 0 9.3 4.0
5 วงิ ตรง 250 ซม. 4.1 0 7.8 6.7 ระหวา่ งจดุ ที
6 วงิ ตรง 300 ซม. 7.2 4.2 8.8 14.5 กาํ หนด
7 ถอยหลงั 50 ซม. 20.16 18.7 4.7 0.0
000 เท่ากนั ทกุ ๆ
จุด องศาที

73

ตารางที 4.2 (ตอ่ )

ลาํ ดบั รายการ องศาทีห่างจากจุดเริมตน้ (องศา) คา่ เฉลยี องศาจาก ขอ้ สังเกต
ครังท1ี ครังท2ี ครังที3 จุดเริ มตน้
8 ถอยหลงั ซม. ห่างจะ
9 ถอยหลงั ซม. 000 0.0 นอ้ ยลงไป
10 ถอยหลงั ซม. ตามลาํ ดบั
11 ถอยหลงั ซม. 000 0.0
12 ถอยหลงั ซม. 0 0 12.5 4.2

2.4 0 15.2 5.9
3 0 8.3 3.8

4.2 การทดสอบการหมุนซ้ายและหมุนขวา

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

ตาํ แหน่งระหว่างด้านหน้า จดุ ทดสอบ
ของหนุ่ ยนต์กบั จดุ ทดสอบ
ตําแหน่งในการ
วางหนุ่ ยนต์

รูปที 4.3 จุดทีใช้ในการทดสอบ

74

เส้นทดสอบระยะห่าง
ระหว่างจดุ ทีกาํ หนดกบั
ด้านหน้าของห่นุ ยนต์

รูปที 4.4 หุ่นยนตอ์ ยใู่ นตาํ แหน่งทีพร้อมทาํ การทดสอบ

หลงั เสร็จสิ นการทดสอบทงั การหมุนซ้ายและหมนุ ขวาได้ผลการทดลองดงั ตารางที 4.3
ดงั นี

ตารางที 4.3 การทดสอบการหมุนซา้ ยและหมุนขวาเพือวดั ระยะห่างจากเส้นทกี าํ หนด

ระยะห่างจากเส้นทกี าํ หนด (ซม.) ค่าเฉลยี
ระยะห่างจาก
ลาํ ดบั รายการ ครังที 1 ครังที 2 ครังที 3 เสน้ ทีกาํ หนด ขอ้ สงั เกต

1 หมุนซ้าย รอบ 0 0 1 0.3 ยิงจาํ นวนรอบ
2 หมุนซา้ ย รอบ 0.1 0 1 0.4 การหมุนมาก
3 หมนุ ซา้ ย รอบ 2.2 1.3 1.2 1.6 ขนึ เท่าไหร่
4 หมุนขวา รอบ 0 0 0.8 0.3 ระยะห่างจะ
5 หมนุ ขวา รอบ 1 0.5 1 0.8
6 หมุนขวา รอบ 1.5 1 1.2 1.2 เพิมขนึ
ตามลาํ ดบั

75

4.3 การทดสอบการเลียวซ้ายและเลยี วขวา

ในการทดสอบการเลียวซ้ายและเลียวขวาจะเริ มจากการทดสอบการเลียวซ้ายโดยการเลียว
นนั จะเพิมขึนครังละ 90 องศาจนดา้ นหนา้ ของหุ่นยนตห์ นั ไปในทศิ ทางขององศานนั ๆ และทาํ การ
ทดสอบมาจนถึง 360 องศา พร้อมทงั บนั ทกึ ผลการทดสอบระยะห่างระหวา่ งจุดทกี าํ หนดกบั ตวั ของ
หุ่นยนต์ ส่วนการทดสอบการเลยี วขวาจะทาํ เหมือนการการทดสอบการเลียวซา้ ยทุกประการ

องศา องศา องศา
องศา

จดุ เริมต้น องศา

องศา

รูปที 4.5 ตาํ แหน่งต่างๆทใี ชใ้ นการทดสอบ

องศา
องศา องศา

องศา
รูปที 4.6 หุ่นยนตอ์ ยใู่ นตาํ แหน่งทีพร้อมทาํ การทดสอบ

76

หลงั เสร็จสิ นการทดสอบทงั การเลียวซ้ายและเลียวขวาไดผ้ ลการทดลองดงั ตารางที .
ดงั นี

ตารางที 4.4 การทดสอบการเลยี วซ้ายและเลยี วเพอื วดั ระยะห่างจากจุดทีกาํ หนด

ลาํ ดบั รายการ ระยะห่างจากจุดทกี าํ หนด ค่าเฉลยี ขอ้ สงั เกต
(ซม.) ระยะห่างจาก
1 เลยี วซา้ ย 90องศา จุดทีกาํ หนด ยิงองศาการ
2 เลียวซ้าย 180องศา ครังที 1 ครังที 2 ครังที 3 เลยี วมากขึน
3 เลียวซ้าย 270องศา 000 0.0
4 เลยี วซ้าย 360องศา 4.5 0 1.5 2.0 เทา่ ไหร่
5 เลยี วขวา 90องศา 8.5 6.5 4 6.3 ระยะห่าง
6 เลยี วขวา 180องศา 10.5 9.5 10.5 10.2 จากจดุ ที
7 เลยี วขวา องศา 000 0.0 กาํ หนดจะ
8 เลียวขวา องศา 1 2.5 0 1.2 เพิมขนึ
11 8 8.5 9.2 ตามลาํ ดบั
11.5 11.5 9.5 10.8

4.4 การทดสอบการเฉียงซ้ายและเฉยี งขวา

ในการทดสอบการเฉียงซา้ ยและเฉียงขวาจะเป็นการทดสอบการเคลือนทแี บบสลบั ฟันปลา
โดยเริมตน้ จากเฉียงซ้ายเป็นระยะทาง 30 เซนติเมตร และเฉียงไปทางขวาอีก 30 เซนติเมตร จากนนั
จึงเพิมขึนครังละ 30 เซนติเมตร จนสิ นสุดทีการเฉียงขวา 120 เซนติเมตร โดยในระหว่างการ
ทดสอบนนั ทกุ ๆจดุ ทีตอ้ งทาํ การเปลียนทิศทางการเคลอื นทจี ะตอ้ งบนั ทึกผลการทดลอง

77

จุดเริ มตน้ จดุ สิ นสุด
จุดเริ มตน้ จุดเริ มตน้
จุดเริ มตน้

จดุ เริ มตน้

จุดเริ มตน้

จุดเริ มตน้

จดุ เริ มตน้

รูปที 4.7 จุดเปลยี นทศิ ทางการเคลือนทีตามเส้นทาง

เซนตเิ มตร

เซนตเิ มตร

เซนตเิ มตร

รูปที 4.8 หุนยนตอ์ ย่ใู นตาํ แหน่งทีกาํ หนดพร้อมทาํ การทดสอบ

78

หลงั เสร็จสิ นการทดสอบทงั การเฉียงซ้ายและเฉียงขวาไดผ้ ลการทดลองดงั ตารางที 4.5
ดงั นี

ตารางที 4.5 การทดสอบการเฉียงซ้ายและเฉียงขวาเพอื วดั ระยะห่างจากจดุ ทีกาํ หนด

ลาํ ดบั รายการ ระยะห่างจากจุดทกี าํ หนด (ซม.) คา่ เฉลยี ขอ้ สังเกต
ครังที 1 ครังที 2 ครังที 3 ระยะห่างจาก
จุดทีกาํ หนด ยิงระยะการ
1 เฉียงซา้ ย ซม. 0 0 0 เฉียงไกล
2 เฉียวขวา ซม. 0 0 0 0.0 เทา่ ไหร่
3 เฉียงซ้าย ซม. 0 0 2.5 0.0 ระยะห่างจาก
4 เฉียวขวา ซม. 0 0 4.5 0.8 จดุ ทีกาํ หนด
5 เฉียงซ้าย ซม. 5.5 0 8.5 1.5 จะเพิมขนึ
6 เฉียวขวา ซม. 14.5 0.5 11 4.7 ตามลาํ ดบั
7 เฉียงซา้ ย ซม. 16.5 10 12 8.6
8 เฉียวขวา ซม. 17.5 20.5 27 12.8
21.6

4.5 สรุปผลการทดลอง

จากการทดลองทงั สีหวั ขอ้ ไดข้ อ้ สรุปดงั นี
1. การทดสอบการเคลือนทีแนวตรงและถอยหลงั ได้ข้อสรุป คือ หุ่นยนต์เคลือนทีได้
ตาํ แหน่งทีแม่นยาํ ทีสุดในระยะการเคลือนทีไม่เกิน 150 เซนติเมตร ส่วนระยะทางตังแต่ 150
เซนตเิ มตรเป็นตน้ ไป หุ่นยนตจ์ ะเริมออกนอกเส้นทางโดยเฉียงไปทางซา้ ย
2. การทดสอบการหมุนซ้ายและหมุนขวา ไดข้ อ้ สรุป คือ หุ่นยนตห์ มุนไดต้ าํ แหน่งทีแมน่ ยาํ
ทีสุดไม่เกิน 1 รอบ ส่วนการหมนุ ตงั แต่ 1 รอบเป็นตน้ ไป หุ่นยนต์เริมหมุนจนออกนอกจดุ ทกี าํ หนด
โดยถอยออกห่างจากจดุ ทกี าํ หนดเรือยๆ
3. การทดสอบการเลียวซ้ายและเลียวขวา ไดข้ ้อสรุป คือ หุ่นยนตจ์ ะเลียวไดต้ าํ แหน่งที
แม่นยาํ ทีสุดคือไม่เกิน 90 องศา ส่วนการเลียงตงั แต่ 90 องศาเป็นตน้ ไป หุ่นยนตเ์ ริมออกห่างจากจุด
ทีกาํ หนดไปโดยถา้ เป็นการเลียวซ้ายจะห่างไปทางขวา และการเลยี วขวาจะห่างไปทางซา้ ย

79

4. การทดสอบการเฉียงซ้ายและเฉียวขวา ไดข้ อ้ สรุป คือ หุ่นยนต์เฉียงไดต้ าํ แหน่งทแี ม่นยาํ
ทีสุดในระยะการเคลือนทีไม่เกิน 30 เซนติเมตร ส่วนระยะทางตงั แต่ 30 เซนติเมตรเป็นตน้ ไป
หุ่นยนตเ์ ริมออกนอกจดุ ทีกาํ หนดโดยการเฉียงซ้ายหุ่นยนตเ์ คลือนทีไปทางซ้าย และการเฉียงขวา
หุ่นยนตเ์ คลอื นทีไปทางขวาเกินทีระยะกาํ หนดไว้

ตารางที 4.6 สรุปผลการทดสอบทงั หมด

ลาํ ดบั การทดลอง ตาํ แหน่งทแี มน่ ยาํ เหตุการณ์เมือพ้นตาํ แหนง่ ทีแมน่ ยาํ
เฉียงไปทางซ้าย
การทดลองที 1 ระยะทางไมเ่ กิน 150 เซนติเมตร ถอยออกห่างจากจดุ ทีกาํ หนด
ห่างจากจดุ ทกี าํ หนดไปทางขวา (เลียวซา้ ย)
การทดลองที 2 หมนุ ไม่เกนิ 1 รอบ ห่างจากจดุ ทีกาํ หนดไปทางซ้าย (เลียวขวา)
ห่างจากจดุ ทกี าํ หนดไปทางซ้าย (เฉียงซ้าย)
การทดลองที 3 เลียวไม่เกิน 90 องศา ห่างจากจดุ ทีกาํ หนดไปทางขวา (เฉียงขวา)

การทดลองที 4 ระยะทางไมเ่ กิน 30 เซนตเิ มตร

บทที 5
สรุป อภิปรายผลและข้อเสนอแนะ

5.1 สรุป

ในส่วนของฮาร์ดแวร์ จากการศึกษาทฤษฎหี ลกั การทาํ งานและการออกแบบชุดขบั เคลือน
มอเตอร์ไฟฟ้า และคุณสมบตั ิของวสั ดุพลาสติกชนิด PLA และ ABS ทาํ ใหเ้ กิดแนวคิดในการ
ออกแบบและประดิษฐห์ ุ่นยนตเ์ คลอื นทดี ว้ ยลอ้ โอมนิ และใช้งบประมาณในการดาํ เนินโครงงานให้
นอ้ ยทีสุด ดงั นนั โครงงานนีจงึ พยายามทีจะลดตน้ ทุนในการดาํ เนินโครงงานโดยการสร้างชิ นส่วน
ของหุ่นยนตจ์ ากการออกแบบในโปรแกรมประยุกตโ์ ซลดิ เวริ ์ค (Solid Works) และใชว้ สั ดุพลาสติก
ชนดิ PLA ในการขนึ รูปชิ นสว่ นของหุ่นยนต์ดว้ ยเครืองพิมพ์ 3มิติ (3D Printer) ในส่วนของวงจร
ขบั เคลือนมอเตอร์ไดม้ ีการออกแบบวงจรในโปรแกรมประยกุ ตโ์ ปรติอุส (Proteus) ตามทฤษฎีทีได้
ศึกษา และดาํ เนินการสร้างวงจรตามทไี ดอ้ อกแบบไว้

ในส่วนของซอฟต์แวร์ จากการศึกษาทฤษฎีและคุณสมบตั ิของ NodeMCU, ทฤษฎีการ
ทาํ งานและการเคลือนทขี องลอ้ โอมนิ, ทฤษฎีการสร้างสัญญาณ PWM (Pulse Width Modulation)
และทฤษฎีเกียวกบั Wi-Fi (Wireless Fidelity) ทาํ ให้เกิดแนวคิดทีจะควบคุมหุ่นยนต์ดว้ ยอุปกรณ์
เคลือนทผี า่ นระบบเครือข่ายไร้สาย (Wireless LAN) และสามารถกําหนดทิศทางในการเคลือนที
ของหุ่นยนตไ์ ด้ ดงั นนั โครงงานนีจงึ ไดม้ กี ารนาํ NodeMCU หรือไมโครคอนโทรลเลอร์แบบมีชิป
ไวไฟ (WiFi Module) มาเป็นตวั ประมวลผลกลาง เพราะสามารถเชือมต่อกบั สญั ญาณ WiFi และขา
พอร์ตดิจิตอลของ NodeMCU สามารถใช้สัญญาณ PWM (Pulse Width Modulation) ไดท้ ุกขา
พอร์ต โดยลายละเอียดและขึนตอนการออกแบบเฟิร์มแวร์จะใช้ ทฤษฎีการสร้างสัญญาณ PWM
(Pulse Width Modulation) มาช่วยในส่วนทีตอ้ งควบคุมความเร็วของมอเตอร์ และใช้ทฤษฎกี าร
ทาํ งานและการเคลือนทขี องลอ้ โอมนิ มาช่วยในการออกแบบทิศทางการเคลือนที

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

81

พนื ผิวทีใชใ้ นการทดสอบ 2.ความแขง็ แรงของวสั ดุ 3.ความสมดลุ ของนาํ หนกั 4.ประสิทธิภาพของ
แบตเตอรี และ .โครงสร้างของลอ้ ทีออกแบบ

5.2 อภิปรายผล

จากการศึกษา ออกแบบ พัฒนา และการประยุกต์ใช้งานล้อโอมนิ เพือใช้ในงาน
อุตสาหกรรมอตั โนมตั ิ สามารถใชง้ านไดจ้ ริงเป็ นไปตามขอบเขต และวตั ถปุ ระสงคข์ องโครงงานที
กาํ หนดไวอ้ ยา่ งครบถว้ น หุ่นยนต์เคลือนทีด้วยลอ้ โอมนิ (Omni wheel) ทีไดส้ ร้างขึนมามีลกั ษณะ
การเคลือนทีประเภทเคลือนทีด้วยลอ้ (Wheel-drive locomotion) เหมาะสําหรับงานบนพืนราบ
สามารถเคลือนทไี ดอ้ ยา่ งรวดเร็ว พร้อมทงั ไดส้ ร้างระบบควบคุมผ่านเทคโนโลยีเครือข่ายไร้สาย
ทาํ ใหง้ ่ายต่อการควบคุม แต่ยงั คงมีปัญหาในการติดต่อสือสารอยบู่ างครงั ในเรืองของสัญญาณทีไม่
เสถียร

5.3 ข้อเสนอแนะ

แนวทางพฒั นาหุ่นยนต์เคลือนทีดว้ ยล้อโอมนิ (Omni wheel) เพือใช้ในงานอุตสาหกรรม
อตั โนมตั นิ นั สามารถสรุปไดด้ งั นี

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

2. เปลียนแบตเตอรีทีใช้ในการจ่ายไฟให้กับส่วนต่างๆ ให้สามารถจา่ ยกระแสได้สูงขึน
หรือเปลียนแบตเตอรีให้มีนําหนักทีเบาลง เช่น แบตเตอรีลิโพ (Li-po) นําหนัก 249 กรัม มี
แรงดนั ไฟฟ้าขนาด 12 V และจา่ ยกระแสไดส้ ูงสุดที 3A เพือเพิมระยะเวลาในการใชง้ านและเพิม
ประสิทธิภาพใหก้ บั หุ่นยนต์

3.พฒั นาขอ้ มลู ในส่วนของเฟิร์มแวร์ เพอื ใหห้ ุ่นยนตม์ ีทศิ ทางการเคลอื นทเี พิมมากขึน เช่น
การเคลือนทีทางซ้าย หรือทางขวาโดยทศิ ทางดา้ นหนา้ ของหุ่นยนต์ยงั คงอยใู่ นแนวตรงเป็ นตน้

4. เปลียนแปลงมอเตอร์ใหม้ ีกาํ ลงั หรือแรงบิดมากขึน เพือเพิมสมรรถนะในการเคลือนที
และเพิมกาํ ลงั ในการแบกรับวตั ถขุ องตวั หุ่นยนตข์ ณะทาํ การเคลอื นที

ภาคผนวก

ภาคผนวก ก
การตดิ ตังโปรแกรมโปรติอสุ 8.5 (Proteus 8.5)

84

การตดิ ตังโปรแกรมโปรติอสุ 8.5 (Proteus 8.5)

1. ดาวน์โหลดโปรแกรม และตวั ปรับปรุงแพทชจ์ ากเวบ็ ไซต์ หลงั จากดาวน์โหลดเสร็จ
ใหค้ ลิกขวาเลือก Run as Administrator

รูปที ก-1 เริมตน้ ติดตงั โปรแกรมโปรตอิ สุ 8.5
2. เลอื กการติดตงั แบบ Custom

รูปที ก-2 เลือกรูปแบบการติดตงั

85
3. คดั ลอก Installation Path ทงั หมดมาวางที Program Data Path จากนนั กด Next

รูปที ก-3 เลอื กตาํ แหน่งการติดตงั
4. รอจนกวา่ โปรแกรมจะติดตงั เสร็จ จากนนั กด Close
5. คลิกขวาไฟลท์ ชี ือ PATCHED FILES เลอื ก Extract Here เพอื ทาํ การแตกไฟล์

รูปที ก-4 แตกไฟล์ PATCHED FILES

86
6. หลงั จากแตกไฟลเ์ สร็จ ใหท้ าํ การคดั ลอกไฟลท์ งั 2 ไว้

รูปที ก-5 คดั ลอกไฟลท์ งั หมดทแี ตกออกมา
7. นาํ มาวางไวใ้ นตาํ แหน่งทีทาํ การลงโปรแกรม (C:\Program Files (x )\Labcenter
Electronics\Proteus Demonstration)

รูปที ก-6 ตาํ แหน่งวางไฟลท์ ีคดั ลอก


Click to View FlipBook Version