IPST Micro BOX ห้องเรียนพิเศษวิทยาศาสตร์ วันที่ 1 - 5 เมษายน 2556 รองศาสตราจารย์ธีรวัฒน์ ประกอบผล คณะวิทยาศาสตร์ สถาบันเทคโนโลยีพระจอมเกล้าเจ้าคุณทหารลาดกระบัง Email : kpteeraw@kmitl.ac.th facebook.com/kpteeraw
L/O/G/O Wednesday, April 10, 13
L/O/G/O
เรียนวิทย์ คิด สนุก มีความสุข ระดับมัธยมศึกษา Wednesday, April 10, 13
เนื้อหา 1
สมองกลฝังตัว และ IPST Micro Box
2
พอร์ตไอโอและการเชื่อมต่อกับอุปกรณ์แสดงผล
3
เขียนโปรแกรมไฟว่ิงอย่างง่าย
4
การเชื่อมต่อกับเซนเซอร์และอุปกรณ์กล
5
IPST Micro BOX กับการพัฒนาโครงงาน
www.themegallery.com Wednesday, April 10, 13
ตกลงกันก่อน • อุปกรณ์ที่ใช้ทดลองหากใช้ผิดวิธีอาจเสียหายได้ ดังนั้นหากวิทยากรแนะนําเรื่องใดหรือส่งสัญญาณ พิเศษให้หยุดงานอื่นก่อน • ก่อนเชื่อมต่อหรือถอดอุปกรณ์ให้ปิดสวิตซ์บอร์ต ทุกครั้ง • อุปกรณ์แจกกลับไปให้เป็นของโรงเรียน เข้าอบรม ครบทั้ง 5 วัน ทาง สสวท จะทําหนังสือแจ้งไป
4 Wednesday, April 10, 13
www.themegallery.com
ตัวอย่างการจัดกิจกรรมโดยใช้ไอซีที • สร้างกิจกรรมที่เน้นการเรียนรู้ การรวมความคิด การแก้ปัญหาจากหลากหลายรายวิชา เช่น การ สร้างหุ่นยนต์จากไมโครคอนโทรลเลอร์ , การ ทดลองกับตัวตรวจวัด , การเชื่อมต่อคอมพิวเตอร์ เบื้องต้น • ใช้ ICT เป็นตัวเชื่อมโยงกิจกรรม
www.themegallery.com Wednesday, April 10, 13
เล่นแบบนี้เก่งแล้ว ก็พัฒนาต่อให้ควบคุมด้www.themegallery.com วยคอมพิวเตอร์ Wednesday, April 10, 13
กิจกรรมที่ได้รับความสนใจ หุ่นยนต์ สาขาที่กําลังได้รับความสนใจ พื้นฐานวิทยาศาสตร์
MECHATRONICS
พื้นฐานทางวิศวกรรม
MECHANICAL
ELECTRONICS
INFORMATICS
พื้นฐานทางช่าง
ลองดูกิจกรรมต่อไปนี้ www.themegallery.com
Wednesday, April 10, 13
กิจกรรมที่ได้รับความสนใจ
ระบบควบคุมอัตโนมัติ ตรวจจับ
ปรับแต่ง
อินพุต
ระบบ ควบคุม อัตโนมัติ
แสดงผล
เอาต์พุต
อุปกรณ์ตรวจวัด ลองคิดดูซิว่า เรานําระบบลักษณะไปใช้อะไรบ้าง ลองคิดดูซิว่า เราจะพัฒนาระบบอะไรขึ้นมาได้บ้าง Wednesday, April 10, 13
ระบบควบคุมอัตโนมัติ ฟิสิกส์ , เคมี, อื่น ๆ
อินพุต
Wednesday, April 10, 13
เขียนโปรแกรมคอมพิวเตอร์
ระบบควบคุม อัตโนมัติ
เอาต์พุต
อุปกรณ์ชุดนี้นํามาทําอะไรได้บ้าง ตรวจจับ
ปรับแต่ง
แสดงผล
เจเนเรเตอร์
10 Wednesday, April 10, 13
* หากต้องการวัดความเร็วลมจะทําอย่างไร * เราจะนําระบบคอมพิวเตอร์มาประมวลผลอะไรได้บ้าง
ระบบเครื่องมือวัด 1. ตรวจจับ
การทํางาน สอดคล้องกัน
3.แสดงผล
2. ปรับแต่ง
www.themegallery.com Wednesday, April 10, 13
ระบบเครื่องมือวัด •
ตรวจจับ ( Transducer ) : วัดปริมาณทางฟิสิกส์ เช่น ปริมาณความร้อน ความเข้มของแสงสว่าง ความดังของเสียง การ เปลี่ยนแปลงของแม่เหล็กไฟฟ้า ค่าอุณหภูมิ ค่าความดัน
•
ปรับแต่ง ( Signal processing Unit ) : เปลี่ยนแปลงค่าให้ดียิ่งขึ้น เช่น ค่าแรงดันไฟฟ้า (V) หรือ ค่ากระแสไฟฟ้า ( I ) ที่ส่งมาจากตัวตรวจจับ อาจจะมากหรือน้อย แล้วให้ไฟฟ้าออกมาใช้งาน
•
แสดงผล ( Record & Display ) : แสดงค่าที่วัดได้ ให้เห็น เช่น มิเตอร์แสดงผลเป็นเข็มชี้ที่แผงหน้าปัทม์ หรือ เป็นตัวเลขแบบดิจิตอล
www.themegallery.com Wednesday, April 10, 13
ไมโครคอนโทรลเลอร์นํามาทําอะไร * เก็บข้อมูลให้เราอัตโนมัติ * เก็บข้อมูลแล้วนํามาประมวลผลตามที่ต้องการ * ประมวลผลสัญญาณอินพุต เพื่อให้เอาต์พุตตามที่ต้องการ * ผู้พัฒนางานต้องเขียนโปรแกรม
www.themegallery.com Wednesday, April 10, 13
ถ้าจะทําโครงงานนี้จะทําอย่างไร 1. นับรอบการหมุน 2. นําจํานวนรอบมาคํานวณ 3 แสดงผลระยะทาง
14 Wednesday, April 10, 13
www.themegallery.com
ตัวอย่างการใช้งานไมโครคอนโทรลเลอร์
Wednesday, April 10, 13
ขั้นตอนการพัฒนาโปรแกรมกับไมโครคอนโทรลเลอร์ ภาษา
ภาษา
C
BASIC
ภาษา
ซอฟต์แวร์
Java
Analog Digital
ฮาร์ดแวร์
ส่วน
Wednesday, April 10, 13
ผล ง ด แส
การเขียนโปรแกรมสําหรับไมโครคอนโทรลเลอร์ • เขียนด้วยภาษาแอสแซมบลี • เขียนด้วยภาษาระดับสูง • แปลงเป็นรหัสภาษาเครื่อง
AA:
MOV MOV MOV ADD MOV INC INC JMP
R1 , 12H R2 , 23H A , R1 A , R2 20H , A R2 R1
• โปรแกรมลงไปบนชิป int x,y; x = 4; y = 5; x = x + y; P1 = x; P2 = y;
011011001100110110101 110011110010110010111 010111000001110110111 ปัจจุบันไมโครคอนโทรลเลอร์ใช้หน่วยความจํา โปรแกรมประเภท Flash Memory ทําให้โปรแกรม ได้หลายครั้ง และโปรแกรมโดยไม่ต้องถอดออกจากวงจรได้ (In-System Programmable) www.themegallery.com Wednesday, April 10, 13
ไมโครคอนโทรลเลอร์ชนิดต่าง ๆ ที่นิยมใช้กันมีหลายตระกูล เลือกใช้ได้ตามความเหมาะสม • Z-80 ไมโครโปรเซสเซอร์ • MCS-51 ไมโครคอนโทรลเลอร์ • PIC มีให้เลือกหลายเบอร์หลายขนาด • AVR มีความเร็วสูง • ARM นิยมใช้ในโทรศัพท์ ,PDA , เครื่องคิดเลข
www.themegallery.com Wednesday, April 10, 13
การใช้งานครั้งแรก • มองเป็นกล่อง • มีพอร์ตอะไรให้ใช้บ้าง • เขียนโปรแกรมอย่างไร อินพุต
สมองกลฝังตัว
อินพุต
www.themegallery.com Wednesday, April 10, 13
การใช้งานไมโครคอนโทรลเลอร์
ตัวตรวจรู้
หน่วยแสดงผล
สวิตซ์
LED / LCD
uC
A/D
หน่วยความจํา ROM & RAM
Real Time clock
พอร์ตอินพุต เอาต์พุต
D/A ลําโพง
ตัวนับ ตัวจับเวลา หน่วยทํางานพิเศษอื่น ๆ Wednesday, April 10, 13
www.themegallery.com
มีสร้างออกมามากมาย
21 Wednesday, April 10, 13
www.themegallery.com
บางชิ้นก็ให้ใช้ง่าย ๆ
22 Wednesday, April 10, 13
www.themegallery.com
เล่นกับ LED ทําได้ง่ายเมื่อใช้ uc
สร้างวงจร Timer ควบคุมจังหวะเวลา
ขับหลอด LED ได้มากขึ้น
ต่อกับพอร์ตโดยตรง
www.themegallery.com Wednesday, April 10, 13
คุณลักษณะของไมโครคอนโทรลเลอร์ • มีไมโครโปรเซสเซอร์เป็นส่วนประกอบ • มีหน่วยความจําโปรแกรมและข้อมูลอยู่ภายใน • มีตัวนับตัวจับเวลา • มีวงจรแปลง A/D และ D/A อยู่ภายใน • สามารถโปรแกรมพอร์ตให้ใช้งานเป็นอินพุตหรือ เอาต์พุตได้ • เชื่อมต่อกับอุปกรณ์ดิจิตอลได้ง่าย
www.themegallery.com Wednesday, April 10, 13
รู้จัก IPST Micro Box สมองกลฝังตัวใช้ชิพ ATMEGA-16
25
Wednesday, April 10, 13
www.themegallery.com
IPST-MicroBOX (SE) • ใช้ไมโครคอนโทรลเลอร์ 8 บิต ATmega6444P • ทํางานที่สัญญาณนาฬิกา 16 MHz • มีจอแสดงผลแบบกราฟิกสี • เขียนโปรแกรมด้วย เชื่อมต่อกับพอร์ต USB โดยตรง • สร้่างโครงงานและหุ่นยนต์ขนาดเล็กได้เป็นอย่างดี
www.themegallery.com Wednesday, April 10, 13
IPST-MicroBOX (SE) • มีพอร์ตแบบดิจิตอลและอนาลอกที่โปรแกรมใช้งานง่าย • อินพุตอะนาลอกใช้ขาพอร์ต A0 ถึง A6 • พอร์ตดิจิตอลใช้พอร์ตหมายเลข 24 ถึง 30 • มีสวิตซ์บนบอร์ตให้ใช้งาน (OK และ SW1) • มีพอร์ตสําหรับต่อกับมอเตอร์ไฟตรง และเซอร์โวมอเตอร์ • มีพอร์ตสําหรับรับส่งข้อมูลอนุกรม • พอร์ตรับส่งข้อมูลแบบ I2C
www.themegallery.com Wednesday, April 10, 13
อุปกรณ์อินพุตเอาต์พุต • แผงวงจร ZX-LED • แผงวงจร ZX-LED8 • ลําโพงเปียโซ • แผงวงจรสวิตซ์ • หน่วยแสดงผลแบบ LCD สี • แผงวงจรตัวต้านทานปรับค่าได้ • ไอซีวัดอุณหภูมิ วัดได้ -40 ถึง +125 องศาเซลเซียส • อุปกรณ์สําหรับประกอบเป็นหุ่นยนต์ขนาดเล็ก
www.themegallery.com Wednesday, April 10, 13
29 Wednesday, April 10, 13
www.themegallery.com
30 Wednesday, April 10, 13
www.themegallery.com
เตรียมคอมพิวเตอร์ให้พร้อมใช้งาน
31 Wednesday, April 10, 13
www.themegallery.com
เตรียมคอมพิวเตอร์ให้พร้อมใช้งาน • ติดตั้งโปรแกรม Wiring IDE • เสียบสาย USB ระหว่าง IPST-SE กับคอมพิวเตอร์ • จ่ายไฟเลี้ยง เปิดสวิตซ์ รอไฟ USB สว่าง • ตรวจสอบหมายเลขพอร์ต
32 Wednesday, April 10, 13
www.themegallery.com
การเชื่อมต่อกับคอมพิวเตอร์เพื่อดาวน์โหลดข้อมูล หน้า 9 ในหนังสือ
Wednesday, April 10, 13
เริ่มต้นใช้งาน
void setup() {
• ออกแบบฮาร์ดแวร์ • เขียนโปรแกรมภาษาซี ด้วย Wiring
} void loop() { }
• คอมไพล์แล้วอัพโหลดลงบอร์ต IPST-SE อินพุต
IPST - SE
อินพุต
www.themegallery.com Wednesday, April 10, 13
การนําไมโครคอนโทรลเลอร์ไปใช้งาน • ต่อไฟเลี้ยง • ให้สัญญาณนาฬิกา • วงจรรีเซต • ต่ออุปกรณ์ภายนอกเพิ่มเติม • เขียนโปรแกรม Wednesday, April 10, 13
ทดลองโปรแกรมต่อไปนี้ • ติดตั้งโปรแกรม Wiring IDE • เสียบสาย USB ระหว่าง IPST-SE กับคอมพิวเตอร์ • จ่ายไฟเลี้ยง เปิดสวิตซ์ รอไฟ USB สว่าง • ตรวจสอบหมายเลขพอร์ต
36 Wednesday, April 10, 13
www.themegallery.com
รู้จักกับ Wiring • Wiring IDE ประกอบด้วยส่วนที่ เท็กซ์เอดิเตอร์ และตัวแปรภาษา ซี เป็น Hex ไฟล์ • สามารถอัปโหลดได้โดยตรง
37 Wednesday, April 10, 13
www.themegallery.com
โครงสร้างภาษาซี #include “stdio.h” int x,y; void function() { ....... } void main() { ...... ...... }
38 Wednesday, April 10, 13
#include <ipst.h> int x,y; void setup() { ....... } void loop() { ...... ...... }
www.themegallery.com
หน้าตาของโปรแกรม
ทําครั้งเดียว
วนทําซ้ํา
เชื่อมต่อแผงวงจร จ่ายไฟ และเปิดสวิตซ์
39 Wednesday, April 10, 13
www.themegallery.com
เลือกฮาร์ดแวร์ที่ใช้
40 Wednesday, April 10, 13
www.themegallery.com
เมื่อเขียนโปรแกรมแล้วคอมไพล
41 Wednesday, April 10, 13
www.themegallery.com
เมื่อเขียนโปรแกรมแล้วอัพโหลดลงบอร์ต
42 Wednesday, April 10, 13
www.themegallery.com
ทดลองเขียนโปรแกรมดังนี้ #include <ipst.h> void setup() { glcdClear(); } void loop() { glcd(1,1,”Hello”); glcd(3,1,”IPST”); glcd(4,1,”MicroBox”); }
43 Wednesday, April 10, 13
หน้า 12 #include <ipst.h> void setup() { glcdClear(); glcdMode(0); } void loop() { setTextSize(2); setTextColor(GLCD_YELLOW); glcd(1,1,”Hello”); setTextColor(GLCD_SKY); glcd(3,1,”IPST”); glcd(4,1,”MicroBox”); setTextSize(1); glcd(10,2,”Secondary Education”); }
www.themegallery.com
จบวันแรก
44 Wednesday, April 10, 13
www.themegallery.com
คําสั่งพื้นฐานที่ควรรู้จักเบื้องต้น •
out(บิต , ข้อมูล) ใช้ส่งค่าลอจิกไปยังบิตพอร์ตข้อมูล
•
sleep(time) หน่วงเวลา โดย time เป็นมิลลิวินาที
•
delay(time) หน่วงเวลา โดย time เป็นมิลลิวินาที
•
delay_us(time) หน่วงเวลาในหน่วยของไมโครวินาที 17
IPST BOX
18
45 Wednesday, April 10, 13
void loop() { out(17,1); out(18,1); sleep(500); out(17,0); out(18,0); sleep(500); }
void loop() { int x; for(x=0;x<10;x++) { out(17,1); out(18,0); sleep(500-x*40); out(17,0); out(18,1); sleep(500-x*40); } } www.themegallery.com
แผงวงจรขับ LED
ช่อง HIGH ถ้าอินพุตเป็นลอจิก "1" LED ติดเป็น สีสว่าง ช่อง LOW ถ้าอินพุตเป็นลอจิก "0" LED ดับ
Wednesday, April 10, 13
การทดลอง ควบคุมการติดดับของ LED void loop() { out(17,1); out(18,1); sleep(500); out(17,0); out(18,0); sleep(500); }
Wednesday, April 10, 13
การทดลอง ควบคุมการติดดับของ LED รอการกดสวิตซ์
ดูหน้า 65
คําสั่ง sw_OK_press() วนลูปรอจนกว่าจะกดคีย์ OK
#include <ipst.h> void setup() { sw_ok_press(); } ลองคิvoid ดดูว่าloop() { ถ้าหากนําคําสั่งนี้ไว้ในลูปจะเกิดอะไรขึ้น out(17,1); out(18,1); sleep(500); out(17,0); out(18,0); sleep(500); }
Wednesday, April 10, 13
หลอด LED 8 ดวง • void pinLED8(int pin) กําหนดจุดต่อพอร์ตให้กับ LED8 • void LED8(int pin, unsigned char _dat) ส่งข้อมูลไปยัง LED8 ตัวอย่าง LED8(17,0b10110001); LED8(17,177);
49 Wednesday, April 10, 13
www.themegallery.com
การทดลอง หลอด LED 8 หลอด โปรแกรมนับเลขฐานสอง #include <ipst.h> void setup() { } void loop() { unsigned char i = 0; while(1) { LED8(20,i++); delay(500); } } ลองใส่ while(1); Wednesday, April 10, 13
#include <ipst.h> void setup() { } void loop() { int i,d = 1; for(i=0;i<8;i++) { LED8(20,d); d = d<<1; delay(500); } }
ทดลองเขียนโปรแกรมวิ่งไป วิ่งกลับ
วิธีออกแบบรูปแบบการแสดงผล 1111 1111
0FFH
0000 1111
0FH
1010 1010
0AAH
0101 0101
055H
1000 0001
081H
นําตัวแปรอาร์เรย์มาใช้ int A[8] = {0x81,0x42,0x24,0x18,0x18,0x24,0x42,0x81}; for(i=0; i<8; i++) { LED8(20,A[i]); dealy(500); } 51 Wednesday, April 10, 13
คําสั่งอ่านการกดสวิตซ์บนบอร์ต • sw1_press()
วนตรวจสอบสวิตซ์ SW1 จนกว่าจะกด
• sw1()
ตรวจสอบการกดสวิตซ์ sw1 ขณะเวลาใด ๆ
•
ได้ “0” ถ้ากด ได้ “1” ถ้าไม่กด
..................... sw1_press(); ..................... .....................
52 Wednesday, April 10, 13
char x; x = sw1(); ..................... นําไปใช้งาน .....................
www.themegallery.com
คําสั่งอ่านการกดสวิตซ์บนบอร์ต • unsigned char sw_OK()
คืนค่าเป็น “1” หรือ “จริง” ถ้ากด คืนค่าเป็น “0” หรือ “เท็จ “ ถ้าไม่กด
• sw_OK_press()
รอจนกดสวิตซ์ OK
..................... if(sw_OK()) { .......... } ..................... .....................
53 Wednesday, April 10, 13
www.themegallery.com
54 Wednesday, April 10, 13
www.themegallery.com
เขียนโปรแกรม • วัด1กดคีย์สวิตซ์ OK แล้ว LED สว่าง 2 ดวงสลับกันพร้อมทั้ง แสดงข้อความบนจอ LCD • กดสวิตซ์แล้วจึงเป็นไฟวิ่งจากขวาไปซ้าย จํานวน 10 รอบ โดย การวิ่งแต่ละรอบให้แสดงหมายเลขรอบบนจอ LCD ด้วย • วัด2ไฟวิ่งสองดวงวิ่งไปวิ่งกลับเมื่อกดสวิตซ์พร้อมทั้งแสดง ข้อความทิศทางการวิ่งบนจอ LCD • ข้อ 3 เขียนโปรแกรมไฟวิ่งจากซ้ายไปขวา เมื่อกดสวิตซ์ OK ให้ เปลี่ยนทิศทางการวิ่งจากขวาไปซ้าย พร้อมส่งเสียงบี๊บ
55 Wednesday, April 10, 13
www.themegallery.com
วิธีออกแบบรูปแบบการแสดงผล 0000 0011
03H
0000 0110
06H
0000 1100
0CH
0001 1000
18H
0011 0000
30H
นําตัวแปรอาร์เรย์มาใช้ int A[8] = {0x81,0x42,0x24,0x18,0x18,0x24,0x42,0x81}; for(i=0; i<8; i++) { LED8(20,A[i]); dealy(500); } 56 Wednesday, April 10, 13
คําสั่งอ่านข้อมูลจากบิตพอร์ต • in(x)
อ่านข้อมูลจากขาบิตพอร์ต x แล้วคืนค่า 0 หรือ 1 ออกมา พอร์ต x ของบอร์ตมีค่าตั้งแต่ 0 ถึง 30 ( ไม่ควรใช้ 19 และ 20)
18
IPST BOX
57 Wednesday, April 10, 13
22
void loop() { unsigned char k; k = in(18); if(k == 0) { ..... } }
www.themegallery.com
แผงวงจรสวิตช์ : ZX-SWITCH
0V ลอจิก “0”
5V
Wednesday, April 10, 13
5V ลอจิก “1”
5V
ลําโพงเปียโซ • ตัวลําโพงตอบสนองความถี่เสียงในย่าน 300 ถึง 3000 Hz คําสั่ง - beep(bitport) ส่งเสียงบีปออกทางลําโพงที่ต่ออยู่กับบิตพอร์ต - sound(bit, fre, time) ส่งเสียงความถี่ fre เป็นเวลา time มิลลิวินาทีออกทางลําโพงที่ต่ออยู่กับบิตพอร์ต แนะนําให้ใช้จุดต่อพอร์ต 19 ถึง 20
59 Wednesday, April 10, 13
www.themegallery.com
การทดลองที่ 3 ขับเสียงออกลําโพงเปียโซ #include <ipst.h> void setup() { } void loop() { sound(19,500,500); sound(19,2500,500); }
Wednesday, April 10, 13
มอเตอร์ • แปลงพลังงานไฟฟ้าเป็นพลังงานกล • ควบคุมทิศทางโดยทิศทางของกระแสไฟฟ้า • ควบคุมความเร็วด้วยจังหวะของสัญญาณไฟฟ้า
[ Image information in product ] Image : www.opanas.com Note to customers : This image has been licensed to be used within this PowerPoint template only. You may not extract the image for any other use.
www.themegallery.com Wednesday, April 10, 13
ฟังก์ชั่นควบคุมมอเตอร์ • void motor(char _channel, int _power) ขับเคลื่อนมอเตอร์ – channel กําหนดช่องเอาต์พุตของมอเตอร์ 1 หรือ 2 – power กําหนดกําลังของมอเตอร์มีค่าระหว่าง -100 ถึง 100 • void motor_stop(char _channel) หยุดมอเตอร์ – channel กําหนดช่องเอาต์พุตของมอเตอร์ มีค่า 1,2 และ ALL
62 Wednesday, April 10, 13
www.themegallery.com
ทดลองควบคุมมอเตอร์ #include <ipst.h> void setup() { } void loop() { motor(1,60); delay(500); motor(1,-60); delay(500); }
63 Wednesday, April 10, 13
#include <ipst.h> void setup() { sw_OK_press(); } void loop() { motor(1,60); delay(500); motor(1,-60); delay(500); if (sw1()) { motor_stop(1); while(1); } } www.themegallery.com
ทดลองควบคุมมอเตอร์ #include <ipst.h> void setup() { sw_OK_press(); } void loop() { motor(1,60); motor(2,60) delay(3000); motor(1,-60); motor(2,-60) delay(3000); if (sw1()) { motor_stop(ALL); } }
64 Wednesday, April 10, 13
www.themegallery.com
เขียนโปรแกรมควบคุมมอเตอร์ • กดคีย์สวิตซ์ที่ต่อแล้วเปลี่ยนทิศทาง
65 Wednesday, April 10, 13
www.themegallery.com
สรุป •
out(บิต , ข้อมูล) ใช้ส่งค่าลอจิกไปยังบิตพอร์ตข้อมูล
•
sleep(time) หน่วงเวลา โดย time เป็นมิลลิวินาที
•
LED8(pin , x) ส่งข้อมูลไปยัง LED8
•
in(pin) อ่านข้อมูลจากพอร์ตเข้ามา
•
sw_OK_press(); รอการกดคีย์ OK
•
motor(x,power); สั่งให้มอเตอร์หมุน
•
motor_stop(x); สั่งให้มอเตอร์หยุด
•
analog(channel);
อ่านค่าสัญญาณดิจิตอลเข้ามา 17
IPST BOX 18 66 Wednesday, April 10, 13
void setup() { ........ } void loop() { out(17,1); out(18,1); sleep(500); out(17,0); out(18,0); sleep(500); www.themegallery.com }
ทําอะไรดี
ต้องการทําอะไรก็ขีด ๆ เขียน ๆ ออกมาก่อน
• หุ่นยนต์ – วิ่งเป็นตัว S – วิ่งไปหยุดในตําแหน่งที่กําหนด • โครงงาน – ประตูปิดเปิดอัตโนมัติ – เครื่องมือนับต่าง ๆ – เครื่องมือวัด – อุปกรณ์อัตโนมัติ – อุปกรณ์ควบคุมอัตโนมัติ
67 Wednesday, April 10, 13
www.themegallery.com
วันที่สี่
การทดลองอุปกรณ์กลุ่ม
แผงวงจรตรวจจับแบบอะนาลอก Wednesday, April 10, 13
5 ประสาทรับรู้ของมนุษย์ การสัมผัส การมองเห็น การได้ยินเสียง การรับรู้กลิ่น การรับรู้รส Wednesday, April 10, 13
5V 10W
0V
25 C 10.5 cm
วงจรแปลง อะนาลอก เป็นดิจิตอล
bit byte
ฐานสอง
ฐานสิบ ลอจิกหก
อะนาลอก VS ดิจิตอล 0-5V Wednesday, April 10, 13
0-1023 (10 bit)
กระบวนการแปลค่าดิจิตอล (Quantization) Wednesday, April 10, 13
บัญญัติไตรยางค์ Vdigital
8 บิต หมายถึงข้อมูลไบนารี่ 8 บิต เกิดค่าที่เปลี่ยนแปลงได้จาก 0 ถึง 255 28
10 บิต หมายถึงข้อมูลไบนารี่ 10 บิต เกิดค่าที่เปลี่ยนแปลงได้จาก 0 ถึง 1023 210
Wednesday, April 10, 13
Data x V
= Full Data 512 x 5
Vdigital
= 1024
Vdigital
=
2.5 V
ความละเอียดเพิ่มขึ้น 2 บิต ความละเอียดเพิ่มขึ้น 4 เท่า
ความละเอียดในการแปลค่า (Resolution)
การอ่านค่าจากสัญญาณอนาลอก • ค่าสัญญาณอนาลอกจะอ่านได้จากบิตพอร์ต A0 ถึง A6 โดย ข้อมูลเข้าอยู่ระหว่าง 0 - 5 โวลต์ และให้ค่าออกมาในช่วง 0 ถึง 1024
สัญญาณอินพุต ADC 10 บิต
การประมวลผลลักษณะนี้สามารถนํามาสร้าง เครื่องมือตรวจจับ เครื่องมือวัด ควบคุมได้เป็นอย่างดี
A0 - A6 IPST BOX
73 Wednesday, April 10, 13
www.themegallery.com
ชุดคําสั่งสําหรับอ่านค่าอะนาลอก ฟังก์ชั่น analog สําหรับการอ่านค่าอะนาลอกความละเอียดขนาด 10 บิต ที่ขาสัญญาณใดๆของพอร์ต A
รูปแบบฟังก์ชั่น
unsigned int analog(unsigned char channel)
ทําหน้าที่กําหนดช่องอะนาลอกที่ต้องการใช้งานโดยมีค่า ตั้งแต่ 0 ถึง 6 ซึ่งจะตรงกับพอร์ต A0 ถึง A6 ตามลําดับ channel
ตัวอย่างที่ 7
int adc_val=0; adc_val = analog(2);
อ่านค่าข้อมูลจากเซนเซอร์อะนาลอกที่ต่ออยู่กับขา A2 เก็บไว้ในตัวแปร adc_val Wednesday, April 10, 13
การทดลอง #include <ipst.h> int val = 0; void setup() { glcdClear(); setTextSize(2); } void loop() { glcd(1,0,”Analog Test”); val = analog(2); setTextSize(3); glcd(2,2,”%d “,val); setTextSize(2); }
75 Wednesday, April 10, 13
www.themegallery.com
มาถึงตรงนี้ทําโครงงานอะไรได้บ้าง • วัดเครื่องวัดมุม • เครื่องวัดระดับน้ํา • หมุน VR แล้วสว่างเป็นกราฟแท่ง • ปรับความเร็วพัดลม • รถบังคับควบคุมความเร็วได้
76 Wednesday, April 10, 13
www.themegallery.com
77 Wednesday, April 10, 13
www.themegallery.com
ฟังก์ชัน knob() ฟังก์ชัน unsigned int knob() อ่านค่าจากตัวต้านทานปรับค่าได้ที่ต่ออยู่ทาง ขาพอร์ต A7
•
#include <ipst.h> int val = 0; เรียกมาใช้ตรง ๆ ได้ข้อมูลตัวเลขจํานวนเต็มทันที void setup() { glcdClear(); setTextSize(2); } void loop() { glcd(1,0,”KnobTest”); setTextSize(3); glcd(2,2,”%d “,knob()); setTextSize(2); } 78 Wednesday, April 10, 13
www.themegallery.com
สร้างเครื่องวัดมุมที่ทํางานได้จริง
79 Wednesday, April 10, 13
www.themegallery.com
การทดลองนําสัญญาณอนาลอกเข้าไปประมวลผลอย่างง่าย หากต้องการใช้บอร์ดทดลองจําลองการทํางานของระบบที่รับ สัญญาณอนาลอกเข้าไป ประมวลผลตามเงื่อนไขที่กําหนดแล้วให้เอาต์พุตออกมา สามารถใช้ส่วนประกอบของบอร์ตทดลองได้ดังรูปต่อไปนี้ Microcontroller +5
ตัวต้านทาน ปรับค่าได้
LED 8
หลอด หรือแสดง
แรงดันไฟฟ้าระหว่าง 0 ถึง +5 โวลต์ www.themegallery.com Wednesday, April 10, 13
การทดลองกับวงจรแปลงสัญญาณอนาลอกเป็นดิจิตอล การทดลองระบบควบคุมอุณหภูมิอย่างง่าย เตาควบคุมอุณภูมิ Microcontroller
Output
Heater
Output
Fan
Sensor
Input
www.themegallery.com Wednesday, April 10, 13
การเชื่อมต่อกับคอมพิวเตอร์ แสดงผลตัวเลข
Microcontroller
Output Heater
Output
Output
Fan
Output
Sensor
Buzzer
Input
RS232-485
Key PC
www.themegallery.com Wednesday, April 10, 13
แผงวงจรตรวจจับแสง
ใช้ตรวจจับแสงสว่าง เลือกเอาต์พุตได้ 2 แบบคือ แรงดันเอาต์พุตเพิ่ม เมื่อแสงตกกระ ทบมากขึ้น Wednesday, April 10, 13
แผงวงจรตรวจจับแสง
ได้รับแสง มาก ค่าที่ตรวจวัดได้ มาก ได้รับแสง น้อย ค่าที่ตรวจวัดได้ น้อย Wednesday, April 10, 13
แผงวงจรตรวจจับแสง หน้า 27
ได้รับแสง น้อย ค่าที่ตรวจวัดได้ มาก ได้รับแสง มาก ค่าที่ตรวจวัดได้ น้อย Wednesday, April 10, 13
แผงวงจรตรวจจับแสง
VLDR = +5V(RLDR/(RLDR+R1)) VR1 = +5V(R1/(RLDR+R1)) Wednesday, April 10, 13
Wednesday, April 10, 13
Wednesday, April 10, 13
เซนเซอร์ เปลี่ยนคุณสมบัติทางฟิสิกส์มาเป็นคุณสมบัติทางไฟฟ้า
www.themegallery.com
Wednesday, April 10, 13
การเลือกใช้เซนเซอร์ ความแม่นยํา (Accuracy) ความสามารถในการวัดซ้ํา (Repeatability) เสถียรภาพเมื่อเวลาผ่านไป (Stability) ความทนทานต่อสารเคมีและกายภาพ ขนาด ความคุ้มทุน
www.themegallery.com
Wednesday, April 10, 13
เซนเซอร์วัดค่าความชื้น (Humidity Sensor) เซนเซอร์วัดความชื้นแบบคาปาซิตีฟ (Capacitive Humidity Sensor) เซนเซอร์แบบรีชีสตีฟ (Resistive Humidity Sensor) เซนเซอร์แบบเทอร์มัล (Thermal Conductivity Humidity Sensor)
www.themegallery.com
Wednesday, April 10, 13
วงจรรีเซต
ต่อไปเลี้ยง
สัญญาณนาฬิกา Wednesday, April 10, 13
ต่ออุปกรณ์ภายนอกเพิ่มเติม
ภาคจ่ายไฟ ภาคจ่ายไฟเป็นส่วนที่ให้พลังงานกับหุ่นยนต์
แบบเตอรรี่ แบตเตอรรี่ซิ้งค์คาร์บอน แบตเตอรรี่อัลคาไลท์ แบตเตอรรี่นิเกิลแคดเมียม นิเกิลเมทัลไฮไดร แบตเตอรรี่ลิเทียมไอออน
หม้อแปลงไฟฟ้า • ใช้ไฟบ้าน
แผงเซลแสงอาทิตย์ พลังงานขึ้นกับขนาดของเซล
• ใช้หม้อแปลงไฟฟ้า • เรกกูเลตเตอร์
www.themegallery.com Wednesday, April 10, 13
จอกราฟิก LCD สี • ขนาดจอแสดงผล 1.8 นิ้ว ความละเอียด 120 x 160 จุด • แสดงภาพกราฟิกลายเส้นและสีพื้น 65536 สี • แสดงผลตัวอักษรขนาดปกติได้ 21 ตัวอักษร 16 บรรทัด บรรทัด 0 หลัก 0
94 Wednesday, April 10, 13
บรรทัด 0 หลัก 20
บรรทัด 15 หลัก 20
www.themegallery.com
ฟังก์ชันการแสดงผล • glcd(x,y, *p) แสดงข้อความที่หน้าจอ LCD • int colorRGB(red, green, blue) เปลี่ยนค่าสีในรูป RGB เป็นตัวเลข 16 บิต • glcdFillScreen(int color) เคลียร์หน้าจอแล้วเปลี่ยนสีพื้นหลัง ค่าคงที่กําหนดสี glcd(2,0,”Hello World”); int x = 20; glcd(4,2,”Value = %d”,x);
95 Wednesday, April 10, 13
#include <ipst.h> int colors; void setup() { int colors; colors = colorRGB(31,0,0); glcdFillScreen(colors); } void loop() { }
GLCD_RED GLCD_GREEN GLCD_BLUE GLCD_YELLOW GLCD_BLACK GLCD_WHITE GLCD_SKY GLCD_MAGENTA
www.themegallery.com
ฟังก์ชันการแสดงผล • glcdSetColorWordRGB() กําหนดการเรียงบิตข้อมูลสีให้เป็นแบบ RGB • setTextColor(int newColor) กําหนดค่าสีของตัวอักษรที่จะแสดงผล • setTextBackgroundColor(int newcolor) กําหนดสีพื้นหลังตัวอักษร • glcdClear() เคลียร์หน้าจอแสดงผลให้เป็นไปตามสีพื้นที่กําหนด • glcdFillScreen(int color) เคลียร์หน้าจอแสดงผลแล้วเปลี่ยนสีพื้น
96 Wednesday, April 10, 13
www.themegallery.com
ฟังก์ชันควบคุมการแสดงผล • glcdMode(int modeset) กําหนดโหมดทิศทางการแสดงผล 0,1,2,3 • setTextSize(int newSize) กําหนดขนาดตัวอักษรเป็นจํานวนเท่า • getTextColor()
คืนค่าสีปัจจุบันของตัวอักษร
• getTextBackgroundColor() คืนค่าสีพื้นหลังของตัวอักษร • getTextSize()
คืนค่าขนาดของตัวอักษร
• glcdGetMode()
คืนค่าโหมดทิศทางแสดงผลปัจจุบัน
• glcdPixel(x , y , color)
พล๊อตจุดลงในพิกัดที่กําหนด
97 Wednesday, April 10, 13
www.themegallery.com
ลองทําโครงงาน • วัดสร้างเครื่องวัดการดูดกลืนแสง
98 Wednesday, April 10, 13
www.themegallery.com
วิชาพื้นฐานการสร้างหุ่นยนต์ระบบอัตโนมัติ
มีโครงสร้างวิชาหลัก ๆ ดังต่อไปนี้
วิทยาศาสตร์ประยุกต์
ระบบวัด
ระบบควบคุม คอมพิวเตอร์
www.themegallery.com Wednesday, April 10, 13
แบตเตอรรีชนิดต่าง ๆ
www.themegallery.com Wednesday, April 10, 13
ขั้นตอนการสร้างหุ่นยนต์
ออกแบบสร้างและทดสอบ เลือกวัสดุอุปกรณ์ที่ต้องนํามาใช้ เขียนแบบโครงร้างของหุ่นยนต์ วิเคราะห์ความต้องการของงาน Description of the products
www.themegallery.com Wednesday, April 10, 13
ตั้งคําถามจากหุ่นยนต์ 1. แรงบิดเท่าไร แรงบิด
ควบคุม
4. ควบคุมการ ทํางานได้อย่างไร
รอบ
2. รอบการหมุนเป็น เท่าไร
3. จะควบคุมทิศทาง ได้อย่างไร
พลังงาน
5. กินพลังงาน เท่าไร
ทิศทาง
www.themegallery.com Wednesday, April 10, 13
การนําหุ่นยนต์มาเป็นเครื่องมือจัดการเรียนรู้ •
เป็นสื่อการสอนให้นักเรียนได้ฝึกคิดสร้างสรรค์
•
กระตุ้นให้เด็กเกิดความคิด จินตนาการ การเรียนรู้ ความอยากรู้ และลงมือทํา
•
ทําให้เด็กชอบวิทยาศาสตร์ เพราะครูนําการทดลองมาให้ทํา
•
ไม่ได้เป็นการสอนตามหลักสูตรแกนกลาง แต่เป็นการสอนเสริมในเรื่องต่าง ๆ
•
การเรียนจะไม่สมบูรณ์ หากครูไม่เป็นผู้กระตุ้นให้เกิดคําถาม และแนะนําเด็ก
•
เป็นเครื่องมือจัดกิจกรรมการสอนแบบองค์รวม
•
เป็นเครื่องมือในการออกแบบการจัดการเรียนรู้แบบเน้นผู้เรียนเป็นสําคัญ
www.themegallery.com Wednesday, April 10, 13
เล่นหุ่นยนต์แล้วได้อะไร • สร้างชิ้นงานจากจินตนาการที่นักเรียนคิด • ฝึกการใช้เครื่องมือ • ทบทวนและเข้าใจวิชาวิทยาศาสตร์
104 Wednesday, April 10, 13
www.themegallery.com
เด็ก ๆ ได้อะไรบ้าง ลองเริ่มสร้างในลักษณะ โครงงานดูก่อน
105 Wednesday, April 10, 13
www.themegallery.com
ทําให้หุ่นยนต์เคลื่อนไหว • ต้องมีแรง – แรงมนุษย์ – แรงโน้มถ่วงของโลก – จากพลังงานศักย์ชนิดต่าง ๆ – พลังงานไฟฟ้า
106 Wednesday, April 10, 13
www.themegallery.com
หุ#นยนต' IPST BOT แบบง#าย • ใช้ DC มอเตอร์ควบคุม 2 ตัว • เขียนโปรแกรมด้วยภาษาซี
107 Wednesday, April 10, 13
www.themegallery.com
เขียนโปรแกรมให้หุ่นยนต์เดินหน้า • ให้มอเตอร์สองตัวขับเคลื่อนไปทางเดียวกัน มอเตอร์สองตัวต้องหมุนทิศทางสวนกัน จ่ายกระแสไฟฟ้ากลับขั้วจะหมุนสวนทิศทางกัน ฟังก์ชัน motor motor (หมายเลขมอเตอร์ , ความเร็วมอเตอร์)
ให้มอเตอร์สองตัวหมุนด้วยความเร็ว 80 หน่วย 108 Wednesday, April 10, 13
#include <ipst.h> void loop() { motor(1,80); motor(2,80); } www.themegallery.com
เขียนโปรแกรมควบคุมมอเตอร์สองตัว • ให้มอเตอร์สองตัวขับเคลื่อนไปทางเดียวกัน #include <ipst.h> void loop() { motor(1,80); motor(2,80); }
109 Wednesday, April 10, 13
www.themegallery.com
นําการหน่วงเวลามาใช้ #include <ipst.h> void loop() { motor(1,80); motor(2,80); sleep(5000); motor_stop(ALL); }
110 Wednesday, April 10, 13
วิ่งไปแล้วหยุด
www.themegallery.com
นําการหน่วงเวลามาใช้
#include <ipst.h> void loop() { motor(1,80); motor(2,20); sleep(5000); motor_stop(ALL); }
111 Wednesday, April 10, 13
www.themegallery.com
มอเตอร์หมุนด้วยความเร็วต่างกัน • ถ้ามอเตอร์หมุนด้วยความเร็วไม่เท่ากันจะเกิดอะไรขึ้น หากต้องการให้มอเตอร์เลี้ยวซ้ายและขวาจะทําอย่างไร ถ้ามอเตอร์สองตัวหมุนทิศทางต่างกันจะเป็นอย่างไร
112 Wednesday, April 10, 13
www.themegallery.com
เฟือง (Gears) • ใช้ส่งผ่านแรง ทดแรง ปรับความเร็ว – เฟืองขับ เฟืองตาม – เฟืองโซ่
www.themegallery.com Wednesday, April 10, 13
เนื้อหาแยกเป็นช่วงชั้น ธรรมชาติของเด็กประถม ชอบเรียนรู้ ชอบเล่น ชอบทําสิ่งใหม่ ๆ ที่ตนเองไม่ เคยทํามาก่อน
ช่วงชั้นที่ 1
ช่วงชั้นที่ 2
ช่วงชั้นที่ 3
รู้จักการสร้างสิ่งประดิษฐ์อย่างง่ายโดยใช้อุปกรณ์พื้นฐาน เข้าใจการต่อวงจรไฟฟ้า การต่อแบตเตอรรี การควบคุม มอเตอร์ การสร้างหุ่นยนต์อย่างง่าย
รู้จักองค์ประกอบและโครงสร้างของหุ่นยนต์ วงจรสวิตซ์ การควบคุมมอเตอร์ เซนเซอร์อย่างง่าย หลักการแก้ปัญหา โดยใช้ภาษาโลโก้
เขียนโปรแกรม เชื่อมโยงกับงาน วิทยาศาสตร์ www.themegallery.com
Wednesday, April 10, 13
เนื้อหาแยกเป็นชั้นปี •
ป.1 สร้างสิ่งประดิษฐ์หุ่นยนต์จากวัสดุเหลือใช้ เช่น แกนกระดาษทิชชู กระดาษสี กระดาษแข็ง หลอดกาแฟ กระดาษกาว เพื่อสร้างเป็นตัวหุ่นยนต์ ขนาดเล็ก
•
ป.2 การต่อวงไฟฟ้า การต่อถ่านไฟฉาย การต่อหลอดไฟ การต่อมอเตอร์ เป็นพัดลม สร้างหุ่นยนต์อย่างง่ายโดยมีมอเตอร์เป็นส่วนประกอบ เช่น หุ่น ยนต์โดเรมอนมีใบพัด
•
ป.3 วงจรขนาน การต่อมอเตอร์สองตัว การสร้างหุ่นยนต์อย่างง่าย นําสิ่ง ประดิษฐ์จาก ป1 มาประกอบเพื่อตกแต่งหุ่นให้ดูสวยงาน
Wednesday, April 10, 13
• ป.4 การต่อวงจรมอเตอร์ให้สามารถหมุนได้สอง ทิศทาง มีไฟแสดงการเดินหน้า ถอยหลัง อุปกรณ์ที่ ใช้เป็นดังนี้
Wednesday, April 10, 13
• ป.5 รู้จักโครงสร้างหุ่นยนต์ รู้จักเซนเซอร์อย่างง่าย วงจรสวิตซ์สําหรับควบคุมให้มอเตอร์หมุนซ้ายขวา สร้างหุ่นยนต์แบบชนแล้วถอยหลังได้เอง นําไมโคร คอนโทรลเลอร์มาใช้ โดยโหลดโปรแกรมตัวอย่าง เพื่อทดลองใช้งาน • ป.6 การแก้ปัญหา การวิเคราะห์การทํางาน การออกแบบโปรแกรมอย่างง่าย เขียนโปรแกรม
www.themegallery.com Wednesday, April 10, 13
การจัดการเรียนการสอน จัดในหลักสูตรการงานอาชีพและเทคโนโลยี จัดเป็นกิจกรรมพัฒนานักเรียน จัดเป็นโครงการสอนเสริมเพิ่มศักยภาพ
Wednesday, April 10, 13
การจัดกิจกรรมด้านวิชาการ วางรากฐานวิทยาศาสตร์ คณิตศาสตร์ที่จําเป็น ฝึกทักษะกระบวนการคิดวิเคราะห์ ใช้ทฤษฏีการสร้างความรู้ด้วยตนเอง ฝึกแก้ปัญหาโจทย์ด้วยตนเอง ครูผู้สอนควรทําวิจัยควบคู่กับการเรียนการสอน
Wednesday, April 10, 13
ปัจจัยที่ส่งผลต่อความสํ เร็จ และ ครูวิทา ยาศาสตร์ คอมพิวเตอร์
ครูผู้สอน ต้องเข้าใจถึงวัตถุประสงค์ นักเรียน ต้องรักที่จะทําหุ่นยนต์ ผู้บริหาร ต้องสนับสนุน ผู้ปกครอง ต้องคอยชี้แนะอย่างถูกต้อง
Wednesday, April 10, 13
ทิศทางการพัฒนาการเรียนรู้ รู้จักระบบการวัด รู้จักระบบควบคุม รู้จักการเขียนโปรแกรม ใช้หุ่นยนต์และสิ ่งประดิษฐ์เป็น คอมพิ วเตอร์ เครื่องมือ
ส่งเสริมกระบวนการพัฒนาทักษะกระบวนการคิ ด ใหม่ พัฒนาเทคโนโลยี และสิ ่งประดิ ฐ์ที่มีใช้ ส่งเสริมการพัฒนาทักษะกระบวนการคิ ดแก้ ปัญษหา Wednesday, April 10, 13
งานได้จริง
ลักษณะของคนที่มี คิดเป็น (มีเหตุผล มีปัญญา มีวิจารณญาณ มี ระบบขั้นตอน) แก้ปัญหาเป็น (วางแผนเป็น หาข้อมูลเป็นการ ตัดสินใจ) ทําเป็น (มีทักษะต่าง ๆ มีความเชื่อมั่น) มีวินัย (รับผิดชอบ ซื่อสัตย์ หนักแน่น) ใฝ่รู้ (แสวงหาความรู้ได้ด้วยตนเอง) ทํางานเป็นกลุ่มได้ บริหารได้ www.themegallery.com
Wednesday, April 10, 13
Thank you! www.themegallery.com
L/O/G/O Wednesday, April 10, 13