5.1 การเช่ือมต่อกบั บอรด์ uKit Explore 5.1.1 การเชื่อมตอ่ กับบอรด์ 3 PIN Port สามารถใช้สาย 3 Pin ต่อเข้ากับตัวควบคมุ หลักและเซอรโ์ วมอเตอร์ โดยสามารถเชื่อมตอ่ กันเป็น อนกุ รมได้ ไมจ่ ำเป็นต้องต่อเข้ากบั ตวั ควบคุมหลักโดยตรง ดงั ภาพด้านลา่ ง สายไฟ 3 Pin ในการเชื่อมตอ่ ใชส้ าย 3 Pin เพื่อเช่อื มต่ออุปกรณเ์ ซนเซอร์และเซอรโ์ วมอเตอร์ (รองรบั การเชื่อมต่อในชดุ อปุ กรณ์) 7 PIN Port สามารถใช้สาย 7 Pin เพื่อเชื่อมต่อเข้ากับตัวควบคุมหลักและอุปกรณ์ uKit Grayscale Sensor โดยอุปกรณ์ uKit Grayscale Sensor สามารถเช่ือมต่อเขา้ กบั พอรต์ X3 เทา่ นั้น สายไฟ 7 Pin ในการเชอื่ มต่อ 46
5.2 ควบคมุ มอเตอร์ บทที่ 1 กงั หนั ลมยกั ษ์ (Big Pinwheel) คณุ ลองมองภาพกังหันลม มฟี งั ก์ชนั การทำงานอย่างไร 1. บางสถานที่พลังงานลมถูกนำมาใช้เป็นพลังงานทางเลือก เช่นเดียวกับพลังงานน้ำและแหลง่ พลงั งานอื่นๆ เพื่อผลติ กระแสไฟฟ้า 2. การหมุนกังหันวิดน้ำและการหมุนโม่หินบดที่มีการใช้แรงงานมนุษย์จะถูกแทนที่ด้วยระบบ อัตโนมตั ิ ตอนนี้จะใช้อปุ กรณ์ uKit Explore ในการประกอบเพ่อื การสร้างกงั หนั ลมอย่างงา่ ย ดภู าคผนวกสำหรับการต่อประกอบ 47
อปุ กรณ์ที่จำเป็น การเชอื่ มต่อดา้ นฮาร์ดแวร์ โปรเจกต์นีไ้ ม่จำเป็นตอ้ งใช้เซนเซอร์อืน่ ๆ ทำการเชื่อมต่อมอเตอร์กับพอร์ต 3 ขาบนบอรด์ uKit Explore จำนวนมอเตอร์ในชุดสามารถเพิ่มได้โดยมี ID ของมอเตอร์ที่แตกต่างกันและสามารถควบคุม มอเตอร์ได้ด้วย ID ของมอเตอร์แต่ละตัว ทำการเชื่อมต่อบอร์ด uKit Explore กับคอมพิวเตอร์ดว้ ยสาย USB เชื่อมต่อมอเตอรด์ ้วยพอร์ต 3 ขา เชื่อมตอ่ แบตเตอรี่กับบอรด์ uKit Explore และทำการเปิดสวิตช์ จะเชือ่ มตอ่ กบั มอเตอร์ 1 หมายเหตุ หลงั จากเขยี นโปรแกรม จำเปน็ ต้องเลื่อนสวติ ช์ไฟไปทต่ี ำแหน่ง ON เพื่อขับเซอร์โวมอเตอร์ 5.2.1 โปรแกรมตวั อย่าง เปิดซอฟต์แวร์ Arduino IDE สามารถเปิดโปรแกรมตัวอย่างได้ที่ File > Examples > uKit Explore 2.0 > Chapter 5 > Section 2 > Big_pinwheel แนะนำให้ปอ้ นขอ้ มูลโปรแกรมดว้ ยตัวเอง เพื่อสรา้ งความคุ้นเคยกับโปรแกรม นีค้ ือโปรแกรมตัวอยา่ ง /* uKit Explore 2.0 <Chapter 5> <Section 2> 5.2.1 Big pinwheel */ #include\"uKitExplore2En.h\" 48
int i = 0; void setup() { Initialization(); } void loop() { button1.Update();//Read button update if (button1.clicks == 1) //Button is clicked once { i = i + 20; if (i > 120) { i = 0; } Serial.println(i);//Print output data } setMotorTurnAdj(1, i, 0xffff); } หลังจากป้อนข้อมูลเสร็จให้ทำการกด Verify เพื่อตรวจสอบความผิดพลาดของโปรแกรม คุณ สามารถเร่มิ การอัปโหลดโปรแกรมได้หลังจากตรวจสอบเสร็จแล้วเพื่อแน่ใจวา่ ไม่มีข้อผิดพลาด ทำการกด Upload และ IDE จะส่งข้อมูลโปรแกรมไปยงั บอรด์ uKit Explore 5.2.2 การทดลอง หลังจากทำตามขั้นตอนข้างต้นแล้ว ทำการกดปุ่มสวิตช์บนบอร์ด uKit Explore จะสังเกตเหน็ มอเตอรห์ มุนอย่างชา้ ๆ ทำการกดอีกคร้ังมอเตอรจ์ ะหมนุ เร็วขึน้ โดยมีความเรว็ ท้ังหมด 6 ระดบั 5.2.3 การทดลองเพิม่ เตมิ หลังจากทำตามขน้ั ตอนข้างต้น ลองออกแบบและควบคุมการหมุนของล้อ 49
บทท่ี 2 รถขบั เคล่อื น 2 ลอ้ (Two-wheel-drive Vehicle) ความแตกตา่ งระหวา่ งรถขับเคล่อื น 2 ล้อและรถขับเคลือ่ น 4 ล้อคอื อะไร 1. รถขับเคลื่อน 2 ล้อ รถจะถูกขับเคลื่อนด้วย 2 ล้อ ไม่ว่าจะเป็นขับเคล่ือนล้อหน้าหรอื ล้อหลัง ของรถ 2. รถขับเคลื่อนสี่ล้อ รถจะถูกขับเคลื่อนด้วย 4 ล้อและรวมถึงรถ4WD ที่มีการทำงานแบบ Full Time และ Past Time ตอนนจี้ ะใช้อปุ กรณ์ uKit Explore ในการประกอบเพ่ือการจำลองรถขบั เคล่ือน 2 ล้อ ดูภาคผนวกสำหรบั การตอ่ ประกอบ 50
อปุ กรณท์ ีจ่ ำเปน็ การเชื่อมตอ่ ด้านฮารด์ แวร์ โปรเจกต์นี้ไม่จำเปน็ ต้องใช้เซนเซอร์อื่นๆ ทำการเชื่อมต่อมอเตอร์กับพอร์ต 3 ขาบนบอรด์ uKit Explore จำนวนมอเตอร์ในชุดสามารถเพิ่มได้โดยมี ID ของมอเตอร์ที่แตกต่างกันและสามารถควบคุม มอเตอร์ได้ด้วย ID ของมอเตอร์แต่ละตัว ทำการเชื่อมต่อบอร์ด uKit Explore กับคอมพิวเตอร์ด้วยสาย USB เชื่อมตอ่ มอเตอร์ดว้ ยพอร์ต 3 ขา เชื่อมตอ่ แบตเตอรีก่ ับบอร์ด uKit Explore และทำการเปิดสวิตช์ จะเชอ่ื มต่อกบั มอเตอร์ 1 (ซ้าย) และมอเตอร์ 2 (ขวา) หมายเหตุ หลงั จากเขียนโปรแกรม จำเปน็ ตอ้ งเลอ่ื นสวติ ช์ไฟไปทตี่ ำแหนง่ ON เพอ่ื ขับเซอรโ์ วมอเตอร์ 5.2.4 โปรแกรมตัวอย่าง เปิดซอฟต์แวร์ Arduino IDE สามารถเปิดโปรแกรมตัวอย่างได้ที่ File > Examples > uKit Explore 2.0 > Chapter 5 > Section 2 > Two_drive แนะนำให้ป้อนข้อมูลโปรแกรมด้วยตัวเอง เพ่ือสรา้ งความคุ้นเคยกับโปรแกรม นค้ี อื โปรแกรมตวั อย่าง 51
/* uKit Explore 2.0 <Chapter 5> <Section 2> 5.2.2 Two-wheel-drive vehicle */ #include\"uKitExplore2En.h\" int i = 0; void setup() { Initialization(); } void loop() { button1.Update();//Read button update if (button1.clicks == 1) //Button is clicked once { i = i + 20; if (i > 120) { i = 0; } } setMotorTurnAdj(1, -i, 0xffff); //Motor 1 rotates clockwise setMotorTurnAdj(2, i, 0xffff); //Motor 2 rotates counterclockwise } หลังจากป้อนข้อมูลเสร็จให้ทำการกด Verify เพื่อตรวจสอบความผิดพลาดของโปรแกรม คุณ สามารถเร่มิ การอัปโหลดโปรแกรมไดห้ ลังจากตรวจสอบเสรจ็ แล้วเพ่อื แนใ่ จวา่ ไมม่ ีขอ้ ผิดพลาด ทำการกด Upload และ IDE จะสง่ ขอ้ มลู โปรแกรมไปยังบอรด์ uKit Explore 5.2.5 การทดลอง หลังจากทำตามขั้นตอนข้างต้นแล้ว ให้กดปุ่มสวิตช์บนบอร์ด uKit Explore จะสังเกตเห็นรถ เคลือ่ นที่ดว้ ยความเร็วทช่ี า้ ทำการกดอกี ครง้ั รถจะเคลือ่ นท่ีเรว็ ขึ้น โดยมีความเร็วทั้งหมด 6 ระดบั 52
5.2.6 การทดลองเพมิ่ เติม หลังจากทำตามข้นั ตอนขา้ งต้น ลองออกแบบรถเพอ่ื ควบคมุ การเล้ยี วซา้ ยหรือเล้ียวขวา 5.3 ควบคุมเซอร์โวมอเตอร์ บทท่ี 1 ไมก้ อล์ฟ (Golf Club) เซอร์โวมอเตอร์เป็นมอเตอร์ที่ใช้ระบบป้อนกลับในการควบคุมตำแหน่งของมอเตอร์ สามารถ ควบคุมมุมของมอเตอรไ์ ดเ้ ปน็ อย่างดี สว่ นใหญส่ ามารถหมุนได้ถึง 180° เซอร์โวมอเตอร์บางชนิดสามารถ หมุนได้ถึง 360° โดยปกติแล้วเซอร์โวมอเตอรจ์ ะใช้สำหรบั การปรบั มุมตามท่ีต้องการ เช่น กลอ้ ง อุปกรณ์ ตรวจจับด้านหน้าสำหรับรถอัจฉริยะและแพลตฟอร์มมือถือที่มีใช้ในการตรวจสอบ เซอร์โวมอเตอร์ สามารถใช้สำหรับของเล่นที่มีการเคลื่อนไหว สามารถใช้เซอร์โวมอเตอร์จำนวนหนึ่งเพื่อสร้างหุ่นยนต์ ขนาดเล็กและเซอร์โวมอเตอรส์ ามารถทำหน้าทีเ่ ปน็ ขอ้ ต่อของหนุ่ ยนต์ ดงั นั้นเซอรโ์ วมอเตอร์จะมปี ระโยชน์ อย่างมาก เซอร์โวมอเตอร์ขนาด 4 กิโลกรมั ที่ใหม้ าโดย UBTECH Robotics สามารถควบคุมได้ท้ังเซอร์โว มอเตอร์และมอเตอร์ สามารถเรียกใช้ไลบรารีในการควบคุมเซอร์โวมอเตอร์อย่างงา่ ย เซอรโ์ วมอเตอร์ 4 กิโลกรัมในชุดสามารถหมุนจาก -118° ถึง 118° โปรแกรมถูกออกแบบมาเพื่อควบคุมเซอร์โวมอเตอร์ 1 หมุน 20° ถึง -20° เป็นเวลา 300 มิลลิวินาที หลังจาก 300 มิลลิวินาทีจะหยุดและหลังจากที่ 300 มลิ ลวิ ินาทีจะเรม่ิ ต้นใหม่ ตอนนีจ้ ะใชอ้ ุปกรณ์ uKit Explore ในการประกอบและสรา้ งการจำลองไม้กอล์ฟ ดภู าคผนวกสำหรบั การตอ่ ประกอบ 53
อุปกรณ์ทจ่ี ำเปน็ การเชอื่ มตอ่ ด้านฮารด์ แวร์ โปรเจกต์นีไ้ ม่จำเป็นตอ้ งใช้เซนเซอร์อืน่ ๆ ทำการเชื่อมต่อมอเตอร์กับพอร์ต 3 ขาบนบอรด์ uKit Explore จำนวนมอเตอร์ในชุดสามารถเพิ่มได้โดยมี ID ของมอเตอร์ที่แตกต่างกันและสามารถควบคุม มอเตอร์ได้ด้วย ID ของมอเตอร์แต่ละตัว ทำการเชื่อมต่อบอร์ด uKit Explore กับคอมพิวเตอร์ดว้ ยสาย USB เชื่อมตอ่ มอเตอรด์ ้วยพอร์ต 3 ขา เชื่อมตอ่ แบตเตอรี่กับบอร์ด uKit Explore และทำการเปิดสวิตช์ จะเชอื่ มต่อกับเซอรโ์ วมอเตอร์ 1 หมายเหตุ หลงั จากเขียนโปรแกรม จำเปน็ ตอ้ งเลื่อนสวติ ช์ไฟไปท่ีตำแหนง่ ON เพ่อื ขบั เซอรโ์ วมอเตอร์ 5.3.1 ฟังก์ชนั while คอื อะไร ลปู while จะทำงานซ้ำจนกว่าเงื่อนไขจะกลายเปน็ เทจ็ จะตอ้ งมบี างสงิ่ ทสี่ ามารถเปล่ยี นแปลง เง่อื นไขได้ไมอ่ ยา่ งน้นั จะวนลปู อย่างไมส่ ้นิ สุด 54
5.3.2 โปรแกรมตัวอยา่ ง เปิดซอฟต์แวร์ Arduino IDE สามารถเปิดโปรแกรมตัวอย่างได้ที่ File > Examples > uKit Explore 2.0 > Chapter 5 > Section 3 > Goft แนะนำใหป้ ้อนข้อมูลโปรแกรมด้วยตวั เองเพื่อสร้าง ความค้นุ เคยกับโปรแกรม น้คี ือโปรแกรมตัวอย่าง /* uKit Explore 2.0 <Chapter 5> <Section 3> 5.3.1 Golf club */ #include\"uKitExplore2En.h\" void setup() { Initialization();//EN:Initialization } //EN: setServoAngle: first is the id number,if the servo is 2,you need to change the id number to 2; the second is the angle (-118°to 118); the third is the running time (100 to 3000) void loop() { setServoAngle(1, 50, 800); delay(100); button1.Update();//Read button update if (button1.clicks == 1) //Button is clicked once { setServoAngle(1, -20, 100); delay(200); setServoStop(1); while (1); } } 55
หลังจากป้อนข้อมูลเสร็จให้ทำการกด Verify เพื่อตรวจสอบความผิดพลาดของโปรแกรม คุณ สามารถเริ่มการอปั โหลดโปรแกรมไดห้ ลงั จากตรวจสอบเสรจ็ แล้วเพื่อแน่ใจว่าไม่มีข้อผดิ พลาด ทำการกด Upload และ IDE จะส่งขอ้ มลู โปรแกรมไปยงั บอร์ด uKit Explore 5.3.3 การทดลอง หลงั จากทำตามขนั้ ตอนข้างตน้ จะสังเกตเห็นว่าเมือ่ กดปมุ่ สวิตช์ ไมก้ อลฟ์ จะทำการตลี กู บอล 5.3.4 การสะทอ้ นผลการทดลอง หลงั จากทำตามขนั้ ตอนขา้ งตน้ จะสงั เกตเหน็ ว่าไม้กอล์ฟจะทำการตลี ูกบอล ลองปรบั มมุ และเวลา การตีลกู บอล และสงั เกตลกู บอลมรี ะยะทแี่ ตกต่างกันหรอื ไม่ บทที่ 2 รถขบั เคล่ือนล้อหลัง (Rear-wheel-drive Car) เซอร์โวมอเตอร์เป็นมอเตอร์ที่ใช้ระบบป้อนกลับในการควบคุมตำแหน่งของมอเตอร์ สามารถ ควบคมุ มมุ ของมอเตอรไ์ ด้เป็นอย่างดี สว่ นใหญส่ ามารถหมุนได้ถงึ 180° เซอร์โวมอเตอรบ์ างชนิดสามารถ หมุนได้ถึง 360° โดยปกตแิ ล้วเซอรโ์ วมอเตอร์จะใชส้ ำหรบั การปรบั มุมตามทตี่ อ้ งการ เซอร์โวมอเตอร์ขนาด 4 กิโลกรมั ที่ให้มาโดย UBTECH Robotics สามารถควบคมุ ได้ท้ังเซอร์โว มอเตอรแ์ ละมอเตอร์ สามารถเรียกใช้ไลบรารีในการควบคุมเซอร์โวมอเตอร์อย่างง่าย เซอร์โวมอเตอร์ใน ชุดอุปกรณ์จะ หมุนด้วยความเร็วระดับ 5 เป็นเวลา 300 มิลลิวินาที ทิศทางตามเข็มนาฬิกาและ 300 มิลลิวินาที ทิศทางทวนเข็มนาฬิกา จากนนั้ หมุนตามเข็มนาฬกิ า 300 มิลลิวนิ าทีและทวนเขม็ นาฬกิ า 300 มลิ ลิวินาทีและหยุด 300 มลิ ลิวนิ าที ตอนนีจ้ ะใช้อปุ กรณ์ uKit Explore ในการประกอบเพอื่ การจำลองรถ ขบั เคลือ่ นล้อหลัง ดภู าคผนวกสำหรับการตอ่ ประกอบ 56
อปุ กรณท์ ี่จำเปน็ การเช่ือมตอ่ ด้านฮาร์ดแวร์ โปรเจกต์นตี้ อ้ งใชเ้ ซนเซอรห์ ลายตวั ทำการเชอื่ มตอ่ เซอรโ์ วมอเตอรก์ ับพอร์ต 3 ขาบนบอร์ด uKit Explore จำนวนมอเตอร์ในชุดสามารถเพิ่มได้โดยมี ID ของมอเตอร์ที่แตกต่างกันและสามารถควบคุม มอเตอร์ได้ด้วย ID ของมอเตอร์แต่ละตัว ทำการเชื่อมต่อบอร์ด uKit Explore กับคอมพิวเตอร์ดว้ ยสาย USB เชื่อมตอ่ มอเตอร์ด้วยพอร์ต 3 ขา เชื่อมต่อแบตเตอรี่กบั บอร์ด uKit Explore และทำการเปิดสวิตช์ จะเช่อื มต่อกบั เซอรโ์ วมอเตอร์ 1 (ขวา) 2 (ซา้ ย) และ 3 เซนเซอรอ์ ินฟราเรด 1 และโมดลู LED 1 และ 2 57
หมายเหตุ หลงั จากเขยี นโปรแกรม จำเปน็ ตอ้ งเลอื่ นสวิตช์ไฟไปทีต่ ำแหนง่ ON เพ่ือขับเซอร์โวมอเตอร์ 5.3.5 โปรแกรมตวั อย่าง เปิดซอฟต์แวร์ Arduino IDE สามารถเปิดโปรแกรมตัวอย่างได้ที่ File > Examples > uKit Explore 2.0 > Chapter 5 > Section 3 > Rear_wheel_drive แนะนำให้ป้อนข้อมูลโปรแกรมดว้ ย ตวั เองเพื่อสร้างความคุ้นเคยกับโปรแกรม นค้ี ือโปรแกรมตัวอย่าง /* uKit Explore 2.0 <Chapter 5> <Section 3> 5.3.2 Rear-wheel-drive car */ #include\"uKitExplore2En.h\" void setup() { Initialization(); } void loop() { if (readInfraredDistance(1) < 10) //If the infrared sensor value is less than 10 { setEyelightScene(1, 1, 2); //Eye light scene mode (eye light ID, scene light, number of times) setEyelightScene(2, 1, 2); setServoAngle(3, 33, 400); //Servo mode (servo ID, angle, duration) setServoTurn(1, 0, 80); //Servo wheel mode (servo ID, clockwise, speed) setServoTurn(2, 1, 80); // Servo wheel mode (servo ID, counterclockwise, speed) delay(5000); } else { setEyelightLook(1, 11, 3, 0, 255, 1); //Eye light look mode (eye light ID, scene mode, color *3, number of times) setEyelightLook(2, 11, 3, 0, 255, 1); setServoAngle(3, 0, 400); 58
setServoTurn(1, 0, 80); setServoTurn(2, 1, 80); } } หลังจากป้อนข้อมูลเสร็จให้ทำการกด Verify เพื่อตรวจสอบความผิดพลาดของโปรแกรม คุณ สามารถเรม่ิ การอปั โหลดโปรแกรมไดห้ ลงั จากตรวจสอบเสรจ็ แล้วเพ่ือแน่ใจว่าไม่มีขอ้ ผิดพลาด ทำการกด Upload และ IDE จะส่งขอ้ มูลโปรแกรมไปยังบอร์ด uKit Explore 5.3.6 การทดลอง หลงั จากทำตามขนั้ ตอนขา้ งตน้ จะสงั เกตเห็นวา่ เม่ือมีวัตถุเขา้ มาใกล้ รถจะเคล่อื นทถ่ี อยหลงั 5.3.7 การสะทอ้ นผลการทดลอง หลงั จากเสรจ็ ขั้นตอน ลำดบั ตอ่ ไปลองนึกถึงพลังของการขบั เคล่อื นล้อหลัง จะมผี ลลัพธท์ ดี่ ีข้ึน หรือไม่ หากความเร็วเปลี่ยนไป บทที่ 3 หนุ่ ยนต์คนแคระ (Dwarf) หุ่นยนต์สองขา (Biped robot) เป็นห่นุ ยนต์ทส่ี ามารถเดินสองขาจะแตกตา่ งจากหุ่นยนต์ที่ใช้ล้อ หรอื หุ่นยนต์ตดิ ตาม โดยห่นุ ยนต์เดนิ สองขาสามารถปรับใหเ้ ข้ากับภมู ปิ ระเทศทซ่ี ับซอ้ นเกือบท้ังหมดและ เอาชนะอุปสรรค หุ่นยนต์สองขาตามธรรมชาติยังมีข้อเสีย ตัวอย่างเช่นพวกเขามีแนวโน้มที่จะล้มลง เนอื่ งจากจุดศนู ยถ์ ว่ งและเดนิ ช้ากว่าหนุ่ ยนต์ตัวอื่น ทำงานรว่ มกนั เพอ่ื สรา้ งห่นุ ยนต์คนแคระ ตอนน้ีจะใช้ อปุ กรณ์ uKit Explore ในการประกอบและเพือ่ จำลองหุ่นยนต์คนแคระ ดภู าคผนวกสำหรับการต่อประกอบ 59
อปุ กรณ์ทจ่ี ำเป็น การเชอ่ื มต่อดา้ นฮารด์ แวร์ โปรเจกต์นี้ต้องใช้เซนเซอรป์ ุ่มกด (Touch sensor) เท่านั้น ทำการเชื่อมต่อเซนเซอร์ปุ่มกดกบั พอรต์ 3 ขา บนบอรด์ uKit Explore จำนวนมอเตอร์ในชุดสามารถเพ่ิมได้โดยมี ID ของมอเตอร์ท่แี ตกต่าง กันและสามารถควบคมุ มอเตอร์ได้ดว้ ย ID ของมอเตอร์แตล่ ะตวั ทำการเชื่อมต่อบอร์ด uKit Explore กับ คอมพิวเตอร์ด้วยสาย USB เชื่อมต่อมอเตอรด์ ้วยพอร์ต 3 ขา เชื่อมต่อแบตเตอรี่กบั บอรด์ uKit Explore จะเชอ่ื มต่อกบั เซอรโ์ วมอเตอร์ 1 2 3 และ 4 60
1. เปิดซอฟต์แวร์ Arduino IDE ให้ป้อนข้อมูลโปรแกรมด้วยตัวเองเพื่อสร้างความคุ้นเคยกับ โปรแกรม น้คี ือโปรแกรมตวั อยา่ ง /* Read the servo angle */ #include\"uKitExplore2En.h\" const unsigned char id[4] = {1, 2, 3, 4}; //[Define the number of IDs]={Enter the corresponding servo number}; void setup() { Initialization();//EN: Initialization } void loop() { button1.Update(); if (button1.clicks == 1) { readServoAnglePD_M(id, 4); //Read the servo angle; enter the number of servos } } หลังจากปอ้ นขอ้ มูลเสรจ็ ใหท้ ำการกด Verify เพอ่ื ตรวจสอบความผดิ พลาดของโปรแกรม คุณสามารถ เริ่มการอัปโหลดโปรแกรมได้หลังจากตรวจสอบเสร็จแล้วเพื่อให้แน่ใจว่าไม่มีข้อผิดพลาด ทำการกด Upload และ IDE จะส่งขอ้ มูลโปรแกรมไปยงั บอร์ด uKit Explore 2. หลงั จากนั้นทำการเปดิ หนา้ ตา่ งมอนเิ ตอรพ์ อรต์ อนกุ รม จะปรากฏหนา้ ต่างต่อไปนี้ 61
3. เมอ่ื จดั ท่าทางของหุน่ ยนตเ์ รียบรอ้ ยแล้ว ทำการคลกิ ปมุ่ สวิตช์บนบอรด์ ในแต่ละเฟรมของท่าทาง ทำการกดปุ่มเพื่อจัดท่าทางของหนุ่ ยนต์ 3 เฟรม 4. เมอื่ การกระทำได้รับการออกแบบมุมของแตล่ ะเฟรมจะถกู ป้อน เปดิ ซอฟตแ์ วร์ Arduino IDE สามารถ เปดิ โปรแกรมตัวอยา่ งไดท้ ี่ File > Examples > uKit Explore 2.0 > Chapter 5 > Section 3 > Dwarf แนะนำใหป้ อ้ นข้อมลู โปรแกรมด้วยตวั เองเพอื่ สรา้ งความค้นุ เคยกบั โปรแกรม นคี้ ือโปรแกรม ตัวอยา่ ง /* uKit Explore 2.0 <Chapter 5> <Section 3> 5.3.3 Dwarf */ /* Create action Custom name 1: Zero (name of the run in loop) 62
Custom name 2: Zeros (number of frames running, angle name) Custom name 3: Zero_time (the length of each frame run) */ #include\"uKitExplore2En.h\" const signed char id[4] = {1, 2, 3, 4}; //[Define the number of IDs]={Enter the corresponding servo number}; const signed char Zeros[3][4] = {{1, 0, -1, -1}, { -27, 27, 26, -20}, {2, -2, -3, -3}}; // Custom name 2, [action frame number] [number of servos] = {{per frame angle}}; // Connect to the serial port to display the angle of each frame const int Zero_time[3] = {1000, 600, 700}; // Custom name 3, [action frame number] = {motion duration between frames}; void Zero(char times); void setup() { Initialization(); } void loop() { button1.Update(); if (button1.clicks == 1) { //readServoAnglePD_M(id,4);//Mask the servo angle Zero(1);//Custom name 1, execute once delay(300); while (1); } } void Zero(char times) { //void Custom name 1 for (int c = 0; c < times; c++) { for (int i = 0; i < sizeof(Zeros) / sizeof(Zeros[0]); i++) //Enter the custom name 2 in parentheses to determine how many frames are in Zeros { for (int t = 0; t < sizeof(id) / sizeof(id[0]); t++) 63
{ setServoAngle(id[t], (Zeros[i][t]), 800); //Place custom name 2 into the parentheses and execute every frame } delay(Zero_time[i]);//Execute custom name 3 for Zero_time } } } หลังจากป้อนข้อมูลเสร็จให้ทำการกด Verify เพื่อตรวจสอบความผิดพลาดของโปรแกรม คุณ สามารถเรม่ิ การอัปโหลดโปรแกรมได้หลังจากตรวจสอบเสร็จแล้วเพ่ือแนใ่ จว่าไมม่ ีข้อผิดพลาด ทำการกด Upload และ IDE จะส่งขอ้ มูลโปรแกรมไปยังบอร์ด uKit Explore 5.3.9 การทดลอง หลงั จากทำตามข้ันตอนข้างตน้ จะสงั เกตว่าเทา้ ของหุน่ ยนตค์ นแคระมีการทำงานอยา่ งอตั โนมัติ เพยี งครงั้ เดียว 5.3.10 การสะทอ้ นผลการทดลอง หลงั จากทำตามข้ันตอนขา้ งตน้ แลว้ ลองเขียนการกระทำหลายอยา่ งเพื่อใหห้ ุ่นยนต์คนแคระมีชวี ติ มากขึน้ 5.4 เซนเซอร์แบบสัมผัส บทที่ 1 ออด (Doorbell) เซนเซอร์แบบสัมผสั เป็นสวิตช์อิเล็กทรอนกิ ส์ที่มีการทำงานเมือ่ มีการกดและหยุดการทำงานเมอ่ื ปล่อย จะมีการทำงานบนหลักการที่ว่าสปริงโลหะภายในปุ่มมีการทำงานเม่ือถูกแรงกระทำ ตอนนี้จะใช้ อปุ กรณ์ uKit Explore ในการประกอบเพ่ือจำลองออด 64
ดูภาคผนวกสำหรบั การต่อประกอบ อปุ กรณ์ทีจ่ ำเป็น 65
การเชอื่ มตอ่ ดา้ นฮารด์ แวร์ โปรเจกต์น้ตี ้องใชเ้ ซนเซอร์ปุ่มกด (Touch sensor) เทา่ นน้ั ทำการเชือ่ มต่อเซนเซอร์กับพอร์ต 3 ขาบน บอร์ด uKit Explore จำนวนเซนเซอรป์ ุ่มกดในชุดสามารถเพิ่มได้โดยมี ID ของเซนเซอรท์ ่ีแตกต่าง กันและสามารถควบคุมเซนเซอร์ได้ด้วย ID ของแต่ละตัว ทำการเชื่อมต่อบอร์ด uKit Explore กับ คอมพวิ เตอร์ด้วยสาย USB เชื่อมตอ่ เซนเซอรด์ ว้ ยพอร์ต 3 ขา เชือ่ มตอ่ แบตเตอรก่ี บั บอร์ด uKit Explore จะเชอ่ื มตอ่ กับเซนเซอร์ปุม่ กด 1 5.4.1 โปรแกรมตัวอยา่ ง เปิดซอฟต์แวร์ Arduino IDE สามารถเปิดโปรแกรมตัวอย่างได้ที่ File > Examples > uKit Explore 2.0 > Chapter 5 > Section 4 > Doorbell แนะนำใหป้ ้อนข้อมลู โปรแกรมด้วยตัวเองเพ่ือ สร้างความค้นุ เคยกับโปรแกรม นีค้ อื โปรแกรมตัวอย่าง /* uKit Explore 2.0 <Chapter 5> <Section 4> 5.4.1 Doorbell */ #include\"uKitExplore2En.h\" void setup() { Initialization(); } //Return 256 with no operation, return 1 with a click, and return 2 with a double click void loop() { int ButtonState = 0; ButtonState = readButtonValue(1); if (ButtonState == 1) //return 1 is clicking { tone(556, 300); tone(495, 400); tone(556, 300); tone(495, 400); 66
} if (ButtonState == 2) //return 2 is double click. tone(800, 800); } หลังจากป้อนข้อมูลเสร็จให้ทำการกด Verify เพื่อตรวจสอบความผิดพลาดของโปรแกรม คุณ สามารถเริ่มการอปั โหลดโปรแกรมไดห้ ลังจากตรวจสอบเสรจ็ แล้วเพือ่ แน่ใจวา่ ไม่มีขอ้ ผดิ พลาด ทำการกด Upload และ IDE จะส่งขอ้ มลู โปรแกรมไปยังบอรด์ uKit Explore 5.4.2 การทดลอง หลงั จากเสรจ็ ตามขัน้ ตอนแลว้ ทำการกดปมุ่ และจะเกิดเสียงสญั ญาณดงั ขึน้ 5.4.3 การสะท้อนผลการทดลอง หลงั จากทำตามขน้ั ตอนขา้ งต้นแลว้ ลองเขียนโปรแกรมควบคมุ เสียงใหด้ ังขน้ึ เม่อื มีการกดปุ่มค้าง และทำให้โมดลู LED เปลี่ยนเป็นสแี ดง 5.5 การใช้งานเซนเซอรอ์ ินฟราเรด บทท่ี 1 กระปุกออมสินอตั โนมตั ิ (Automated Piggy Bank) เซนเซอรอ์ ินฟราเรดเปน็ เซนเซอร์ทใ่ี ช้คณุ สมบัติเฉพาะตัวของรังสอี ินฟราเรดสำหรบั การวดั 5.5.1 ความรเู้ กย่ี กบั เซนเซอร์อินฟราเรด แสงอนิ ฟราเรดสามารถสะทอ้ น หกั เห กระจาย แทรกแซง และถูกดดู ซึมได้ สารใดๆ ท่มี ีอณุ หภูมิ ที่แน่นอน (สูงกว่าศูนย์สัมบูรณ์) จะส่องแสงอินฟราเรด เมื่อวัดแสงอินฟราเรดที่แผ่ออกมาจากวัตถุใน มมุ มองของเซนเซอร์อนิ ฟราเรดไมไ่ ด้สมั ผสั กบั วตั ถุดังนนั้ จงึ ไมม่ ีแรงเสยี ดทานเกิดข้นึ นอกจากน้ีเซนเซอร์ อนิ ฟราเรดมคี วามไวสงู และตอบสนองได้อยา่ งรวดเร็ว 5.5.2 ระบบเซนเซอร์อินฟราเรด ระบบเซนเซอรอ์ นิ ฟราเรดแบง่ ออกเป็น 5 ประเภทตามฟงั กช์ นั การใช้งาน 1. Radiometers ใชส้ ำหรบั การวัดรงั สแี ละสเปกตรัม 2. Locating และ tracking systems ใช้สำหรบั การคน้ หาและตดิ ตามเป้าหมายอนิ ฟราเรด 3. Thermal imaging systems ใช้สำหรบั สรา้ งภาพท่ีแสดงการกระจายของรังสีอนิ ฟราเรดจาก วัตถุ 67
4. Infrared ranging และ communication systems ใชส้ ำหรับการสอื่ สาร 5. Combined systems เปน็ การรวมกนั ของระบบขา้ งตน้ ที่มากกวา่ สองระบบขึ้นไป ตอนนี้จะใชอ้ ุปกรณ์ uKit Explore ในการประกอบเพื่อจำลองกระปุกออมสินอตั โนมัติ ดภู าคผนวกสำหรับการตอ่ ประกอบ 68
อปุ กรณท์ จ่ี ำเป็น การเชอ่ื มต่อดา้ นฮาร์ดแวร์ โปรเจกต์นี้จำเป็นตอ้ งใชเ้ ซนเซอรห์ ลายตวั ทำการเชื่อมตอ่ เซนเซอรก์ บั พอรต์ 3 ขาบนบอร์ด uKit Explore จำนวนเซนเซอร์ในชุดสามารถเพ่ิมได้โดยมี ID ของเซนเซอร์ที่แตกต่างกันและสามารถควบคมุ เซนเซอร์ได้ด้วย ID ของแต่ละตัว ทำการเชื่อมต่อบอร์ด uKit Explore กับคอมพิวเตอร์ด้วยสาย USB เชื่อมต่อเซนเซอร์ด้วยพอร์ต 3 ขา เชื่อมต่อแบตเตอรี่กับบอร์ด uKit Explore จะเชื่อมต่อกับเซอร์โว มอเตอร์ 1 เซนเซอร์อนิ ฟราเรด 1 และโมดูล LED 1 และ 2 5.5.3 โปรแกรมตวั อยา่ ง เปิดซอฟต์แวร์ Arduino IDE สามารถเปิดโปรแกรมตัวอย่างได้ที่ File > Examples > uKit Explore 2.0 > Chapter 5 > Section 5 > piggy_bank แนะนำให้ป้อนข้อมูลโปรแกรมด้วยตัวเอง เพื่อสรา้ งความคนุ้ เคยกบั โปรแกรม น้ีคอื โปรแกรมตวั อยา่ ง หมายเหตุ ใชเ้ ทปสีดำตดิ บนพืน้ ทเ่ี ตรียมไวเ้ พื่อความสะดวก /* uKit Explore 2.0 <Chapter 5> <Section 5> 5.5.1 Automated piggy bank */ #include\"uKitExplore2En.h\" void setup() { Initialization();//EN: Initialization 69
setServoAngle(1, 0, 300); delay(300); } void loop() { Serial.print(\"Infrared_distance:\"); Serial.println(readInfraredDistance(1)); delay(300); if (readInfraredDistance(1) < 8) //Can adjust the size according to the data printed to the serial port { delay(300); setServoAngle(1, -70, 200); delay(100); setEyelightLook(1, 1, 2, 0, 200, 100); setEyelightLook(2, 1, 2, 0, 200, 100); delay(300); setServoAngle(1, 0, 200); delay(300); } } หลังจากป้อนข้อมูลเสร็จให้ทำการกด Verify เพื่อตรวจสอบความผิดพลาดของโปรแกรม คุณ สามารถเร่ิมการอปั โหลดโปรแกรมได้หลงั จากตรวจสอบเสร็จแล้วเพื่อแนใ่ จวา่ ไมม่ ีขอ้ ผดิ พลาด ทำการกด Upload และ IDE จะส่งข้อมูลโปรแกรมไปยงั บอรด์ uKit Explore 5.5.4 การทดลอง หลังจากเสรจ็ ตามขั้นตอนแล้ว ใสว่ ตั ถุลงไปในมอื ของกระปกุ ออมสิน หลังจากนน้ั กระปุกออมสิน จะใส่วัตถุลงใน “ท้อง” อย่างอตั โนมตั ิ 5.5.5 การสะท้อนผลการทดลอง หลงั จากทำตามขนั้ ตอนข้างตน้ คดิ วา่ เซนเซอรอ์ นิ ฟราเรดเปน็ ประเภทใด และมีวิธีการใชง้ าน อย่างไร 70
บทที่ 2 ก้านยกอตั โนมตั ิ (Automatic Sensing Lifting Lever) เทคโนโลยีในปจั จบุ นั มีการเปลยี่ นแปลงอยา่ งรวดเร็ว ก้านยกทีใ่ ชใ้ นอดตี มกี ารควบคมุ ดว้ ยมนษุ ย์ ตอนนจ้ี ะสามารถใช้เซนเซอรอ์ นิ ฟราเรดเพื่อสรา้ งกา้ นยกตรวจจับอัตโนมตั ิอยา่ งงา่ ย 5.5.6 การใช้งานของเซนเซอร์อนิ ฟราเรด เซนเซอร์อินฟราเรดมีบทบาทอย่างมากในระบบการผลิตที่ทันสมัย ด้วยความก้าวหน้าของ อุปกรณ์ตรวจจับและเทคโนโลยอี ่ืนๆ ทำให้เซนเซอร์อินฟราเรดมีความไวมากขึน้ และมีการใชง้ านที่กวา้ ง ขึ้น เช่น เมาส์อินฟราเรด เครื่องวัดอุณหภูมิอินฟราเรด กล้องถ่ายภาพอินฟราเรด รีโหมดอินฟราเรด ควบคมุ ระยะไกล และก้านยกอตั โนมตั ิ ตอนน้จี ะใชอ้ ปุ กรณ์ uKit Explore ในการประกอบเพอ่ื จำลองกา้ น ยกอัตโนมตั ิ ดูภาคผนวกสำหรบั การต่อประกอบ 71
อุปกรณ์ท่ีจำเปน็ การเช่อื มตอ่ ด้านฮาร์ดแวร์ โปรเจกต์น้ีจำเปน็ ต้องใชเ้ ซนเซอร์หลายตวั ทำการเชือ่ มต่อเซนเซอรก์ บั พอรต์ 3 ขาบนบอรด์ uKit Explore จำนวนเซนเซอร์ปุ่มกดในชุดสามารถเพิ่มได้โดยมี ID ของเซนเซอร์ที่แตกต่างกันและสามารถ ควบคุมเซนเซอร์ได้ด้วย ID ของแต่ละตัว ทำการเชื่อมต่อบอร์ด uKit Explore กับคอมพิวเตอร์ด้วยสาย USB เชือ่ มตอ่ เซนเซอร์ดว้ ยพอรต์ 3 ขา เชื่อมต่อแบตเตอรี่กับบอร์ด uKit Explore จะเชอ่ื มตอ่ กับเซอร์โว มอเตอร์ 1 และเซนเซอร์อนิ ฟราเรด 1 5.5.7 โปรแกรมตัวอยา่ ง เปิดซอฟต์แวร์ Arduino IDE สามารถเปิดโปรแกรมตัวอย่างได้ที่ File > Examples > uKit Explore 2.0 > Chapter 5 > Section 5 > lifting_lever แนะนำให้ปอ้ นข้อมูลโปรแกรมด้วยตัวเอง เพอ่ื สรา้ งความ คนุ้ เคยกบั โปรแกรม นค้ี ือโปรแกรมตัวอยา่ ง /* uKit Explore 2.0 <Chapter 5> <Section 5> 5.5.2 Automated lifting lever */ 72
#include\"uKitExplore.h\" void setup() { Initialization();//EN:Initialization setServoAngle(1, -90, 300); delay(300); } void loop() { Serial.print(\"Infrared_distance:\"); Serial.println(readInfraredDistance(1));//Infrared sensor ID delay(300); if (readInfraredDistance(1) <= 15) //Can be adjusted according to the data printed to the serial port { delay(300); setServoAngle(1, 0, 700); delay(2000); } else { setServoAngle(1, -90, 600); delay(300); setServoAngle(1, -50, 600); delay(300); } } หลังจากป้อนข้อมูลเสร็จให้ทำการกด Verify เพื่อตรวจสอบความผิดพลาดของโปรแกรม คุณ สามารถเริ่มการอัปโหลดโปรแกรมได้หลังจากตรวจสอบเสร็จแล้วเพอ่ื แน่ใจว่าไมม่ ีข้อผิดพลาด ทำการกด Upload และ IDE จะสง่ ข้อมลู โปรแกรมไปยังบอรด์ uKit Explore 5.5.8 การทดลอง หลงั จากเสร็จตามข้นั ตอนแล้ว เมื่อมีวัตถุมาถงึ ระยะทีเ่ ซนเซอร์อนิ ฟราเรดวดั ได้ ก้านยกจะทำการ ยกข้นึ 73
5.5.9 การสะท้อนผลการทดลอง หลงั จากทำตามขั้นตอนขา้ งตน้ แล้ว ลองปรับมุมตา่ งๆ หรอื ระยะเวลาตา่ งๆ เพือ่ สังเกตการ เปลยี่ นแปลงของเซอร์โวมอเตอร์ 5.6 การใช้งานเซนเซอร์ตรวจวดั ระดบั สีเทา บทที่ 1 การประยกุ ตใ์ ชเ้ ซนเซอร์ตรวจวัดระดบั สเี ทา (Applications of Grayscale Sensors) ใชส้ ายสัญญาณ 7 Pin เพื่อเช่อื มต่อพอร์ต route กบั บอรด์ uKit explore หากตอ้ งการบันทึกสี เขม้ (H) และสอี ่อน (L) จำเปน็ ตอ้ งทำตามขั้นตอนต่อไปน้ี หมายเหตุ การอา่ นข้อมูลจำเป็นต้องใหเ้ ซนเซอร์ 5 จดุ ตรวจจบั พื้นทส่ี ีเดยี วกัน เพอ่ื ใหข้ อ้ มลู มี ความแมน่ ยำมากขึ้น นอกจากน้ขี อ้ มลู จะมีความแม่นยำมากข้ึนเมื่อทำการปรับเทียบ • ดบั เบลิ คลกิ ปุ่ม Record เพอ่ื เข้าสโู่ หมดบันทกึ ไฟแสดงสถานะ Led จะกระพริบ 3 ดวง • คลิกปมุ่ Record เพอื่ ยนื ยนั โหมดบันทกึ • นำเซนเซอร์ไปวางท่พี นื้ ทีส่ ีดำและทำการคลิกปุ่ม Record เพ่ือบนั ทึกสีดำ ไฟแสดง สถานะ Led จะกระพรบิ 1 ดวง แสดงว่าการบนั ทกึ เสรจ็ • นำเซนเซอรไ์ ปวางท่พี ื้นทีส่ ีขาว ทำการคลกิ ปมุ่ Record เพอ่ื บนั ทึกสีขาว • ไฟแสดงสถานะ Led จะกระพริบ 5 ดวง เพ่อื ระบุวา่ การบนั ทึกเสรจ็ สมบรู ณ์ สเี ขม้ จะ แสดงถงึ สถานะ HIGH และสอี อ่ นแสดงถงึ สถานะ LOW 74
บทที่ 2 หนุ่ ยนตต์ ดิ ตามเสน้ (Line Follower Robot) เราสามารถทำการเพ่ิมเซนเซอร์ตรวจวัดระดบั สเี ทาให้กบั รถขับเคลื่อน 2 ล้อ เพื่อใหเ้ คล่อื นท่ไี ป ตามเสน้ สดี ำ ตอนนจี้ ะใช้อุปกรณ์ uKit Explore ในการประกอบเพื่อจำลองหุน่ ยนตต์ ดิ ตามเสน้ ดภู าคผนวกสำหรับการต่อประกอบ 75
อปุ กรณ์ที่จำเป็น การเชอ่ื มตอ่ ด้านฮารด์ แวร์ โปรเจกต์นี้จำเป็นต้องใช้เซนเซอรห์ ลายตวั ทำการเชอื่ มต่อเซนเซอรต์ รวจวัดระดบั สเี ทากับพอร์ต 7 ขาบนบอร์ด uKit Explore จำนวนเซนเซอร์ในชุดสามารถเพิ่มได้โดยมี ID ของเซนเซอร์ที่แตกต่างกัน และสามารถควบคุมเซนเซอร์ได้ด้วย ID ของแต่ละตัว ทำการเชื่อมต่อบอร์ด uKit Explore กับ คอมพิวเตอร์ด้วยสาย USB เชื่อมต่อมอเตอร์ดว้ ยพอรต์ 3 ขา เชื่อมต่อแบตเตอรี่กบั บอรด์ uKit Explore จะเชือ่ มต่อกับมอเตอร์ 1 และ 2 และเซนเซอร์ตรวจวดั ระดับสเี ทา 1 5.6.1 ตวั แปร int คืออะไร ชนิดขอ้ มลู จำนวนเต็มเปน็ ชนดิ ข้อมลู พ้นื ฐานทีม่ ขี นาด 2 ไบต์ ชว่ งของจำนวนเต็มคอื -32,768 ถงึ 32,767 (-2 ^ 15 ถึง (2 ^ 15) -1) รูปแบบของคำส่ัง: int var = val; พารามิเตอร:์ var - ชือ่ ตวั แปร val - คา่ ทีก่ ำหนดใหก้ บั ตวั แปร 5.6.2 ตัวแปร void คืออะไร ฟงั กช์ ัน void จะไม่มกี ารสง่ คืนข้อมลู ใดๆ 76
5.6.3 โปรแกรมตวั อย่าง เปิดซอฟต์แวร์ Arduino IDE สามารถเปิดโปรแกรมตัวอย่างได้ที่ File > Examples > uKit Explore 2.0 > Chapter 5 > Section 6 > Line_follower_robot แนะนำให้ป้อนข้อมูลโปรแกรม ดว้ ยตัวเองเพ่อื สรา้ งความคุ้นเคยกบั โปรแกรม นคี้ อื โปรแกรมตวั อยา่ ง /* uKit Explore 2.0 <Chapter 5> <Section 6> 5.6.2 Line follower robot */ #include \"uKitExplore2En.h\" int lnum = 0; //Define the variable int rnum = 0; void straight(int speed);//Declaration function void setup() { Initialization();//Initialization } void loop() { straight(100);//Execute straight, speed } void forwardss(int speed) { setMotorTurn(1, -speed); setMotorTurn(2, speed); } void turnLL(int speed)//Turn left { setMotorTurn(1, speed); setMotorTurn(2, speed); } void turnRR(int speed)//Turn right { 77
setMotorTurn(1, -speed); setMotorTurn(2, -speed); } void straight(int speed)//Go straight { getGrayAllValue(); if (lnum + rnum >= 3) { forwardss(speed); delay(50); lnum = 0; rnum = 0; } if (num3 == 0)//If sensor is in the black zone { if (num2 == 0 & num4 == 1) // If black on the left and white on the right, turn left { turnLL(speed); } else if (num2 == 1 & num4 == 0) //If white on the left and black on the right, turn right { turnRR(speed); } else // If white on both sides, go straight { forwardss(speed); } } else // If sensor is in the white zone { if (num1 == 1 & num5 == 0) 78
{ turnRR(speed); delay(30); rnum = rnum + 1; } else if (num1 == 0 & num5 == 1) { turnLL(speed); delay(30); lnum = lnum + 1; } else if (num2 == 0 & num4 == 1)// If black on the left and white on the right, turn left quickly { turnLL(speed); } else if (num2 == 1 & num4 == 0) // If white on the left and black on the right, turn right quickly { turnRR(speed); } else // If all white, stop { forwardss(speed); } } } หลังจากป้อนข้อมูลเสร็จให้ทำการกด Verify เพื่อตรวจสอบความผิดพลาดของโปรแกรม คุณ สามารถเร่ิมการอัปโหลดโปรแกรมไดห้ ลังจากตรวจสอบเสรจ็ แล้วเพอ่ื แนใ่ จว่าไมม่ ีข้อผิดพลาด ทำการกด Upload และ IDE จะสง่ ข้อมลู โปรแกรมไปยังบอรด์ uKit Explore 79
5.6.4 ผลการทดลอง หลังจากเสร็จตามขัน้ ตอนแล้ว หุ่นยนต์จะว่งิ ตามเสน้ สดี ำ 5.6.5 การทดลองเพิ่มเติม หลงั จากทำตามขั้นตอนขา้ งตน้ ลองปรบั โปรแกรมเพ่ือให้หนุ่ ยนต์เลี้ยวกลบั ตัว 5.7 การใช้งานเซนเซอร์อัลตราโซนกิ บทที่ 1 การประยกุ ต์ใช้เซนเซอรอ์ ลั ตราโซนิก (Applications of Ultrasonic Sensors) บทเรียนน้ีสอนวธิ กี ารอ่านระยะทางที่วัดด้วยเซนเซอรอ์ ลั ตราโซนกิ แสดงผลไปยงั หนา้ ต่าง มอนเิ ตอร์พอร์ตอนุกรมและสงั เกตการเปล่ียนแปลงของข้อมลู อุปกรณท์ ีจ่ ำเป็น การเชื่อมต่อดา้ นฮาร์ดแวร์ โปรเจกต์นจี้ ำเปน็ ตอ้ งใช้เซนเซอรห์ ลายตวั ทำการเชื่อมตอ่ เซนเซอร์กบั พอร์ต 3 ขาบนบอร์ด uKit Explore จำนวนเซนเซอร์ในชุดสามารถเพิ่มได้โดยมี ID ของเซนเซอรท์ ีแ่ ตกต่างกันและสามารถควบคุม เซนเซอร์ได้ด้วย ID ของแต่ละตัว ทำการเชื่อมต่อบอร์ด uKit Explore กับคอมพิวเตอร์ด้วยสาย USB เชือ่ มต่อเซนเซอรด์ ว้ ยพอร์ต 3 ขา เชอื่ มต่อแบตเตอร่กี บั บอรด์ uKit Explore จะเชือ่ มตอ่ กับเซนเซอร์อัล ตราโซนกิ 1 80
5.7.1 เซนเซอรอ์ ลั ตราโซนกิ คืออะไร เซนเซอร์อัลตราโซนกิ เป็นเซนเซอร์ทีแ่ ปลงสัญญาณอัลตราโซนกิ เป็นสญั ญาณพลังงานอื่น (โดย ปกติจะเปน็ สญั ญาณไฟฟา้ ) คลื่นอัลตราโซนกิ เป็นคล่ืนเสียงทีม่ คี วามถ่ีสงู กว่า 20 kHz มลี ักษณะความถ่ีท่ี สงู ความยาวคล่นื ส้ัน การเลี้ยวเบนน้อย มีทิศทางที่แนน่ อน หลักการทำงานจะอาศยั การกระจายหรือการ เคลื่อนที่ของคลื่นเสียงไปกระทบกับพื้นผิวของตัวกลาง ซึ่งอาจเปน็ ของแข็งหรือของเหลว บางส่วนของ คลื่นเสียงจะแทรกผ่านเข้าไปในตัวกลางนั้นและคลื่นความถี่สูงส่วนใหญ่จะสะท้อนกลับเรียกว่า \"Echo\" โดยชว่ งเวลาของการสะท้อนกลับของคล่นื เสยี งเปน็ สดั สว่ นโดยตรงกับระยะหา่ งระหว่างวตั ถกุ บั เซนเซอร์ 5.7.2 โปรแกรมตวั อย่าง เปดิ ซอฟตแ์ วร์ Arduino IDE สามารถโปรแกรมไดโ้ ดย File > Examples > uKit Explore 2.0 > Chapter 5 > Section 7 > Ultrasonic_distance แต่ขอแนะนำให้ป้อนข้อมูลด้วยตัวเองเพื่อให้ คุณสามารถทำความคนุ้ เคยกับโปรแกรม นคี้ อื โปรแกรม /* uKit Explore 2.0 <Chapter 5> <Section 7> 5.7.1 Applications of ultrasonic sensors EN:Read the distance from the uKit Ultrasonic ID-1 and print it to the serial port */ #include\"uKitExplore2En.h\" void setup() { Initialization();//EN: Initialization } void loop() { Serial.print(\"Ultasonic_distance:\"); Serial.println(readUltrasonicDistance(1)); delay(300); } หลังจากป้อนข้อมูลเสร็จให้ทำการกด Verify เพื่อตรวจสอบความผิดพลาดของโปรแกรม คุณ สามารถเริ่มการอปั โหลดโปรแกรมไดห้ ลงั จากตรวจสอบเสรจ็ แล้วเพอื่ แน่ใจว่าไม่มีข้อผดิ พลาด ทำการกด Upload และ IDE จะสง่ ขอ้ มูลโปรแกรมไปยงั บอร์ด uKit Explore 81
5.7.3 การทดลอง หลังจากเสรจ็ ตามข้นั ตอนแล้ว ทำการเปดิ หน้าต่างมอนิเตอรพ์ อรต์ อนุกรมใน Arduino IDE และ สามารถดขู ้อมลู ดังตอ่ ไปนี้ 5.7.4 การสะทอ้ นผลการทดลอง หลงั จากทำตามขั้นตอนขา้ งตน้ แล้ว ลองนกึ ถงึ การใช้อลั ตราซาวด์ (Ultrasound) ใน ชวี ิตประจำวัน บทที่ 2 รถหลบหลกี สิง่ กดี ขวาง (Obstacle Avoidance Car) นวัตกรรมใหม่ในโลกยุคใหม่ ปัญญา (Intelligence) ถือว่ามีความสำคัญที่จะกำหนดทิศทาง อนาคตสำหรับนักพฒั นาเพ่อื ทำตามเป้าหมายทต่ี อ้ งการหรือมากกว่าน้นั โดยผ่านระบบอัตโนมตั ิท่ีใช้ข้อมูล สภาพแวดล้อมมาวเิ คราะห์การทำงาน โดยไม่จำเป็นตอ้ งใช้มนษุ ย์ ตอนนี้จะใช้อุปกรณ์ uKit Explore ใน การประกอบเพอ่ื จำลองรถหลบหลีกส่ิงกดี ขวาง ดูภาคผนวกสำหรบั การต่อประกอบ 82
อุปกรณ์ที่จำเป็น การเชอ่ื มตอ่ ดา้ นฮาร์ดแวร์ โปรเจกต์น้ีจำเป็นตอ้ งใช้เซนเซอร์หลายตัว ทำการเช่อื มต่อเซนเซอรก์ บั พอร์ต 3 ขาบนบอร์ด uKit Explore จำนวนเซนเซอร์ในชุดสามารถเพ่ิมได้โดยมี ID ของเซนเซอร์ที่แตกต่างกันและสามารถควบคมุ เซนเซอร์ได้ด้วย ID ของแต่ละตัว ทำการเชื่อมต่อบอร์ด uKit Explore กับคอมพิวเตอร์ด้วยสาย USB เชื่อมต่อเซนเซอร์ด้วยพอร์ต 3 ขา เชื่อมต่อแบตเตอรี่กับบอร์ด uKit Explore จะเชื่อมต่อกับเซอร์โว มอเตอร์ 1 (ซา้ ย) 2 (ขวา) และ 3 เซนเซอร์อัลตราโซนิก 1 83
5.7.5 Static คืออะไร Static จะใช้ตอนประกาศตวั แปรทีม่ ีขอบเขตใช้งานแค่ภายในฟังก์ชันเทา่ นัน้ โดยแตกต่างจากตัว แปร Local ตรงทีต่ ัวแปรแบบ Local จะถกู สรา้ งและลบท้งิ ทกุ ครง้ั ท่มี ีการเรียกใช้ฟงั กช์ นั ตวั แปร Static ยังคงเก็บข้อมูลอยู่หลังจากมีการเรียกใช้ฟังก์ชัน ตัวแปรที่ถูกประกาศเป็น Static จะถูกสร้างและ กำหนดคา่ ในคร้งั แรกที่เรยี กใชฟ้ ังกช์ นั เทา่ น้นั 5.7.6 Const คอื อะไร Const หมายถึงค่าที่เปลี่ยนแปลงไม่ได้ขณะรันโปรแกรม กำหนดค่าคงที่ให้ “read-only” ซึ่ง หมายความว่าสามารถใช้ตัวแปรได้เช่นเดียวกับตัวแปรประเภทอื่น แต่ไม่สามารถเปลี่ยนค่าได้ ค่าว่า Constants ถูกกำหนดดว้ ยคำวา่ Const เปน็ คำสงวนเพื่อกำหนดขอบเขตเหมือนตวั แปรอื่น 5.7.7 โปรแกรมตวั อยา่ ง เปดิ ซอฟตแ์ วร์ Arduino IDE สามารถโปรแกรมได้โดย File > Examples > uKit Explore 2.0 > Chapter 5 > Section 7 > Obstacle_avoidance_car แต่ขอแนะนำให้ป้อนข้อมูลด้วยตัวเอง เพ่อื ให้คุณสามารถทำความคนุ้ เคยกับโปรแกรม น้คี ือโปรแกรม /* uKit Explore 2.0 <Chapter 5> <Section 7> 5.7.2 Obstacle avoidance car */ #include\"uKitExplore2En.h\" const int startingAngle = -45;//Initial angle const int minimumAngle = -45;//Minimum angle const int maximumAngle = 45;//Maximum angle const int rotationSpeed = 8;//Stepping speed long distance = 0; //Initialize the distance void setup() { Initialization(); // put your setup code here, to run once: } 84
void loop() { // put your main code here, to run repeatedly: while (1) { tt(50);//Speed } } void tt(int speed) { //Forward setServoTurn(1, 1, speed); setServoTurn(2, 0, speed); static int motorAngle = startingAngle;//motorAngle is equal to its real angle; used to store the variable static int setMotorTurnAmount = rotationSpeed;//setMotorTurnAmount defines the stepping speed; declared as static so it can hold data between function calls, but other functions cannot change its value setServoAngle(3, motorAngle, 100); delay(30); distance = readUltrasonicDistance(1); //Ultrasonic sensor ID delay(30); motorAngle += setMotorTurnAmount; if (motorAngle <= minimumAngle || motorAngle >= maximumAngle) { setMotorTurnAmount = -setMotorTurnAmount; } else if (distance < 20 & distance != 0) //Detection distance { if (motorAngle < 0) { //Turn right setServoTurn(1, 1, speed); 85
setServoTurn(2, 1, speed); delay(distance * 20); } else { //Turn left setServoTurn(1, 0, speed); setServoTurn(2, 0, speed); delay(distance * 50); } } } หลังจากป้อนข้อมูลเสร็จให้ทำการกด Verify เพื่อตรวจสอบความผิดพลาดของโปรแกรม คุณ สามารถเริม่ การอปั โหลดโปรแกรมไดห้ ลังจากตรวจสอบเสร็จแล้วเพ่ือแนใ่ จว่าไมม่ ีขอ้ ผดิ พลาด ทำการกด Upload และ IDE จะส่งข้อมูลโปรแกรมไปยงั บอร์ด uKit Explore 5.7.8 การทดลอง หลังจากเสร็จตามขั้นตอนแล้ว ทำการวางมือหรือวัตถุไว้ด้านหน้าเซนเซอร์อัลตราโซนิก จะ สงั เกตเหน็ รถเลี้ยวเพือ่ หลบหลกี สงิ่ กดี ขวาง 5.7.9 การทดลองเพิ่มเติม หลงั จากทำตามข้นั ตอนข้างต้น ลองจำลองรถยนตไ์ รค้ นขับโดยใช้เซนเซอรแ์ ละเขียน โปรแกรมควบคุม 86
5.8 โมดูลบลูทธู โมดูลบลูทูธเป็นเทคโนโลยีการติดต่อสื่อสารแบบไร้สารระยะใกล้อย่างหนึ่ง ซึ่งจะแบ่งออกเป็น โมดูลบลูทูธรับสำหรับข้อมูล (Bluetooth data module) และโมดูลบลูทูธสำหรบั รับเสียง (Bluetooth voice module) จะต่างตามการใช้งาน โมดูลบลูทธู จึงหมายถึงชุดวงจรของอปุ กรณ์บลูทูธแบบรวมไมโค รชิพที่ใช้สำหรบั การสอื่ สารเครือขา่ ยไร้สาย บทท่ี 1 บลูทูธแบบสองโหมด (Dual-Mode Bluetooth Module) บลูทธู แบบสองโหมด (Dual Mode) มกี ารออกแบบมาสำหรบั การถ่ายโอนขอ้ มลู แบบไรส้ ายและ สามารถจับคูก่ บั บลูทูธของคอมพวิ เตอร์หรือโทรศพั ทม์ ือถือได้อย่างง่ายดาย เป็นการหลีกเลีย่ งการเชอื่ มตอ่ ทม่ี ีสายซับซ้อนและมพี ้นื ทจ่ี ำกัด อปุ กรณ์นี้ยังสามารถใชแ้ ทนสาย USB ไดโ้ ดยตรง คุณสมบตั ิของโมดลู บลูทธู แบบสองโหมด มดี ังนี้ 1. รองรบั โหมด BT2.1 + EDR และ BT4.0 (BLE) สามารถใช้แบบสองโหมดพรอ้ มกัน 2. ไมจ่ ำเป็นตอ้ งยกเลิกการเชอื่ มตอ่ โมดลู บลูทธู เมอ่ื มกี ารอปั โหลดโปรแกรม Arduino ผ่านทาง สาย USB 3. ใชร้ หสั ผา่ นในการจับคู่ ลองเชื่อมตอ่ ด้วยรหสั 0000 หรอื 1234 4. LED แสดงสถานะการเชอื่ มตอ่ บลูทูธ ไฟสีฟา้ กระพริบเพอ่ื ระบุว่าไม่มกี ารเชอ่ื มตอ่ บลทู ูธ และ ไฟสีฟา้ ติดตลอดเปน็ การเชอื่ มตอ่ บลทู ธู และแสดงพอร์ต 5. รับสญั ญาณจากอนิ พุตภายนอก ใชพ้ ลงั งานตำ่ ด้วย Internal pull-up 6. เปิดการใช้งานอปุ กรณ์มอื ถอื (Android / IOS) เพอ่ื ควบคุมโมดูลอเิ ลก็ ทรอนิกส์ 7. ชว่ ยลดความซับซ้อนในการเขียนโปรแกรมซอฟตแ์ วร์ Arduino IDE 8. ตดิ ตั้งขาสัญญาณ RX, TX, VCC และ GND ทร่ี องรบั ดว้ ยบอร์ด Arduino บทท่ี 2 การประยกุ ตใ์ ชโ้ มดูลบลทู ธู แบบสองโหมด (Applications of Dual-Mode Bluetooth Modules) กอ่ นเริ่มต้นสิง่ ทีต่ ้องเตรียมคือ บอร์ด uKit Explore แบตเตอรล่ี เิ ธียม 7.4 โวลต์ และโมดูลบลูทูธ แบบสองโหมด นอกจากน้จี ำเปน็ ตอ้ งใชค้ อมพิวเตอร์ที่ใชร้ ะบบปฏิบัติการ Windows / Mac OS / Linux ท่ีมีการเขา้ ถึงอินเทอร์เน็ตและบลูทธู จำเป็นต้องเชื่อมต่อบอร์ด uKit Explore แบตเตอรี่ลิเธียม 7.4 โวลต์ และโมดูลบลูทูธแบบสอง โหมด 87
หมายเหตุ เชอื่ มตอ่ โมดลู บลทู ูธแบบสองโหมดเข้ากับขาสญั ญาณ JP19 และ JP24 บนบอร์ด uKit Explore 5.8.1 โมดลู บลูทธู แบบสองโหมดคืออะไร บลูทธู แบบสองโหมด (Dual Mode) มกี ารออกแบบมาสำหรับการถ่ายโอนขอ้ มลู แบบไรส้ ายและ สามารถจบั คูก่ บั บลูทูธของคอมพิวเตอร์หรือโทรศัพทม์ ือถอื ไดอ้ ยา่ งง่ายดาย เปน็ การหลกี เลย่ี งการเช่ือมตอ่ ทีม่ ีสายซับซ้อนและมพี ื้นทจ่ี ำกัด อปุ กรณ์นี้ยงั สามารถใชแ้ ทนสาย USB ได้โดยตรง ขัน้ ตอนตอ่ ไปนี้จะช่วย ให้สามารถเรียนรกู้ ารเชือ่ มต่อโมดลู บลูทูธแบบสองโหมดได้อยา่ งรวดเร็ว 5.8.2 วิธกี ารเชอ่ื มต่อกบั คอมพวิ เตอร์ Windows 10 1. เชือ่ มต่อโมดลู บลทู ธู แบบสองโหมดเขา้ กบั ขาสัญญาณ JP27 และ JP28 บนบอรด์ uKit Explore และทำการเปดิ เครอื่ ง จะสังเกตเหน็ ไฟ LED บนโมดลู บลูทธู มกี ารกระพริบ 2. คลิกการตัง้ ค่าของคอมพิวเตอรเ์ พอ่ื คน้ หาอปุ กรณ์ 88
3. คลกิ แท็บ Bluetooth & other devices เปิดบลูทธู และทำการเพิม่ อปุ กรณ์ (add a Bluetooth device) 89
4. เลือกเชอ่ื มต่อ uKit_Explore_SPP อยา่ เช่อื มต่อ uKit_Explore_BLE 5. เล่ือนลงไปท่ี More Bluetooth options 90
6. คลกิ แทบ็ COM Ports เพอื่ ดู COM port ท่ขี ามาและจะมคี วามแตกต่างกันไปตามคอมพวิ เตอร์แตล่ ะ เคร่อื ง 7. หลังจากรู้รายละเอียดของ port ที่จะเชื่อมต่อแล้ว ทำการเปิดซอฟต์แวร์ Arduino IDE สามารถเปิด โปรแกรมตัวอย่างไดท้ ี่ File > Examples > uKit Explore 2.0 > Chapter 4 > RGB_light แนะนำ ให้ป้อนข้อมูลโปรแกรมด้วยตัวเองเพื่อสร้างความคุ้นเคยกับโปรแกรม นี้คือโปรแกรมตวั อย่าง (โปรแกรม ตัวอย่าง RGB ในบทท่ี 4) /* uKit Explore 2.0 <Chapter 4> <Section 2> 4.2 RGB light */ #include\"uKitExplore2En.h\" void setup() { Initialization();//EN: Initialization } void loop() { setRgbledColor(255, 0, 0); //(R, G, B) delay(1000);//Flash red 1000 ms setRgbledColor(0, 255, 0); 91
delay(1000);//Flash green 1000 ms setRgbledColor(0, 0, 255); delay(1000);//Flash blue 1000 ms } หลังจากป้อนข้อมูลเสร็จให้สลับไปที่ Tools > Port ทำการเลือก “COM_port” ที่ใช้ในการ เชื่อมต่อ พอร์ตท่ีเชื่อมต่อจะแสดงเมื่อมีการเชื่อมต่อบอร์ด uKit explore กับคอมพิวเตอร์ ตอนน้ีจะ เลือกใช้พอร์ต COM1 หลังจากทำการเชือ่ มต่อพอร์ตแล้ว รายละเอียดของบอรด์ uKit explore และพอร์ตท่ีเชอื่ มตอ่ จะ แสดงทีม่ มุ ลา่ งขวาของหน้าตา่ ง สุดท้ายทำการคลิกปุ่ม Upload และจะมีคำว่า \"Program being Verify\" แสดงท่ี debugging prompt area หลงั จากน้ันจะเปลยี่ นเปน็ \"Uploading \" และไฟ LED ของโมดลู บลทู ูธแบบ สองโหมดจะหยุดกระพริบซง่ึ แสดงถึงโปรแกรมกำลงั ถกู เขียนไปยงั บอร์ด uKit Explore 92
5.8.3 การทดลอง หลังจากเสร็จตามขั้นตอนแล้ว จะสังเกตเห็นไฟ LED 3 ดวง (สีแดง สีเขียว และสีน้ำเงิน) เปลย่ี นแปลงอยตู่ ลอดเวลา 5.8.4 การสะท้อนผลการทดลอง หลงั จากทำตามข้นั ตอนข้างตน้ แล้ว ลองนึกถึงการใช้งานของอปุ กรณ์บลทู ธู ในชีวิตประจำวัน 5.9 ไจโรสโคป บทท่ี 1 หลังการของไจโคสโคป (The Principle of a Gyroscope) 5.9.1 ไจโรสโคปคืออะไร ไจโรสโคป (Gyroscope) เป็นอุปกรณ์ทต่ี รวจจบั ความเรว็ เชิงมมุ โดยใชก้ ฎการอนุรกั ษ์โมเมนตัม เชิงมุมที่อาศยั หลักการของแรงเฉ่อื ยเพื่อรักษาระดับและทิศทางของแกนหมุน 5.9.2 หลักการของไจโรสโคป ไจโรสโคป คือ ล้อที่ติดตั้งในกรอบวงแหวนหมุนได้ ที่ยอมให้หมุนโดยอิสระในทิศทางใดๆ ก็ได้ เป็นอุปกรณ์ท่ีอาศัยแรงเฉื่อยของล้อหมุนเพื่อนช่วยรักษาทิศทางของแกนหมนุ โมเมนตัมเชิงมุมของลอ้ ดังกล่าวทำให้ไจโรสโคปสามารถรักษาทศิ ทางการหมุนได้แม้วา่ กรอบล้อจะเอียง มีหลักการคือไมว่ ่าจะมี แรงมากระทำกับวงแหวนด้านนอกมากเท่าใด แกนหมุนภายในก็จะไม่เปลีย่ นทิศทาง หรือก็คือแกนหมนุ ภายในจะพยายามรกั ษาสภาพและทศิ ทางด้งั เดิมเอาไวเ้ สมอ 5.9.3 MPU-6050 MPU-6000 (6050) เป็นโมดลู เซนเซอร์ที่ตรวจจบั การเคลอ่ื นไหวและความเอยี งของวัตถุแบบ 6 แกนตวั แรกของโลก มกี ารนำ Gyroscopes และ Accelerometers มารวมเข้าดว้ ยกันทำใหส้ ามารถแกไ้ ข ปัญหาได้ดี รวมทงั้ สามารถลดพ้ืนการติดต้งั ใหเ้ ลก็ ลงได้ เม่อื MPU-60X0 มกี ารเชอ่ื มตอ่ กับสนามแม่เหล็ก 3 แกน จะให้ผลลัพธ์ได้ 9 แกน โดยเชื่อมต่อผ่านพอร์ต I2C เป็นหลักหรือพอร์ต SPI (SPI จะมีเฉพาะใน MPU-6000 เทา่ นน้ั ) 5.9.4 ขอสัญญาณของอุปกรณ์ MPU-6050 SCL และ SDA เป็นอินเทอร์เฟซของ IIC กับ MCU โดยการควบคมุ MPU6050 จะเชื่อมตอ่ ผ่าน ทาง IIC และอาจมีอนิ เทอร์เฟซ IIC อื่น คือ AXCL และ XDA อินเทอร์เฟซน้ีสามารถใช้เชื่อมต่ออปุ กรณ์ slave จากภายนอกไดเ้ ชน่ เซนเซอร์ตรวจจับแม่เหล็ก (Magnetic sensor) ดังนั้นเซนเซอร์ 9 แกน จะมี 93
VLOGIC เปน็ พอรต์ IO ทมี่ ีขาสญั ญาณแรงดันตำ่ เพยี ง 1.8 โวลต์ สามารถตอ่ ขาสญั ญาณ VDD ไดโ้ ดยตรง ขาสัญญาณ AD0 เปน็ ถูกควบคุมจากอินเตอร์เฟซ IIC (เชื่อมต่อกับ MCU) ซึ่งถกู ควบคมุ ด้วย lowest bit การเช่อื มต่อ GND ของ MPU-6050 คอื 0X68 หากเช่ือมต่อ VDD คือ 0X69 หมายเหตุ lowest bit ไม่ใช่ การถ่ายโอนข้อมูล (lowest bit ใช้เพ่อื ระบกุ ารอ่านและเขียน) บทท่ี 2 รถสกูต๊ เตอร์สมดลุ (Two-wheeled Self-balancing Scooter) รถสก๊ตู เตอร์สมดุลเปน็ ที่รจู้ กั กนั ในชอื่ hoverboard มีเพียงหน่งึ ลอ้ และสองลอ้ โดยทัว่ ไปเปน็ รถท่ี สามารถปรับสมดุลในตัวเองมกี ารทำงานบนหลกั การท่เี รียกว่า การรกั ษาเสถียรภาพแบบไดนามกิ 5.9.5 การรักษาเสถยี รภาพแบบไดนามิก (Dynamic stabilization) คืออะไร การรักษาเสถียรภาพแบบไดนามกิ หมายถึงระบบพลังงานที่มกี ารรักษาความเสถียรภาพในการ ทำงานที่อยู่ตลอดเวลาภายใต้การควบคุมโดยอัตโนมัติและมีการควบคุมอุปกรณ์เมื่อถูกรบกวนจาก สิ่งรบกวนอย่างมากหรือน้อย โดยทั่วไปแล้วมันเป็นอีกรูปแบบหนึ่งของการรักษามุมให้เสถียรภาพของ ระบบพลังงานท่ไี ม่มีการสน่ั สะเทอื นหรือการสน่ั อย่างตอ่ เนอื่ งหลังจากการถกู รบกวน 5.9.6 หลักการของรถสก๊ตู เตอร์ รถสกูต๊ เตอร์ทส่ี ามารถปรับสมดลุ ในตัวเองมกี ารทำงานบนหลกั การรักษาเสถยี รภาพแบบไดนามกิ นน่ั คือรถสก๊ตู เตอร์สามารถปรบั สมดลุ อยา่ งอตั โนมัตดิ ว้ ย Solid-State Gyroscopes ทม่ี คี วามแม่นยำและ ใช้เพื่อตรวจสอบตำแหน่งของตัวรถโดยใช้ไมโครโปรเซสเซอร์ท่ีมีความเร็วในการคำนวณสูงจึงเหมาะสม สำหรบั ควบคุมมอเตอร์ใหม้ กี ารรกั ษาความสมดุล ตอนนจ้ี ะใชอ้ ปุ กรณ์ uKit Explore ในการประกอบเพ่ือจำลองรถสกู๊ตเตอรส์ มดลุ ดภู าคผนวกสำหรับการต่อประกอบ 94
อุปกรณ์ทจี่ ำเป็น การเชื่อมต่อดา้ นฮารด์ แวร์ โปรเจกต์น้ีจำเปน็ ต้องใชม้ อเตอร์รบั นำ้ หนกั 4 กิโลกรัมจำนวน 2 ตัว ทำการเช่อื มตอ่ เซนเซอร์กับ พอร์ต 3 ขาบนบอร์ด uKit Explore จำนวนเซนเซอร์ในชุดสามารถเพิ่มได้โดยมี ID ของเซนเซอร์ท่ี แตกต่างกันและสามารถควบคมุ เซนเซอรไ์ ด้ด้วย ID ของแต่ละตวั ทำการเชื่อมต่อบอร์ด uKit Explore กบั คอมพิวเตอรด์ ว้ ยสาย USB เชือ่ มต่อเซนเซอร์ดว้ ยพอร์ต 3 ขา เชือ่ มต่อแบตเตอรีก่ บั บอรด์ uKit Explore จะเชื่อมตอ่ กบั มอเตอร์ 1 (ซ้าย) และมอเตอร์ 2 (ขวา) 95
Search
Read the Text Version
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372