คุณสมบัติของ Arduino UNO R3
ก่อนหน้านี้ผมได้แนะนำในส่วนของเจ้าตัวไมโครคอนโทรลเลอร์ที่ชื่อว่า Arduino (อาดูอิโน่) ซึ่งเป็นบอร์ดไมโครคอนโทรลเลอร์สำเร็จรูป ที่มีความสะดวกในการใช้งาน และนิยมนำมาใช้ในการเรียนรู้และพัฒนาโครงงานต่าง ๆ เหมาะสำหรับผู้เริ่มต้น และที่สำคัญมีราคาถูก ตลอดจนไมโครคอนโทรลเลอร์ตระกูลนี้ใช้ชิป AVR เป็นหลักในการประมวลผลเนื่องจากมีความทันสมัยและชิปบางตัวสามารถเชื่อมต่อกับคอมพิวเตอร์ผ่านสายยูเอสบีได้เลย และยังมีโปรแกรมบูตโหลดเดอร์ (ฺBool loader) ที่จะถูกเรียกขึ้นมาก่อนจะเรียกโปรแกรมปกติ ทำให้สามารถเขียนหรือสั่งงานได้ก่อนการเรียกโปรแกรมปกติ ทำให้การใช้งานสามารถโปรแกรมผ่านพอร์ตอนุกรม USR ได้ทันที ทำให้ผมเลือกที่จะใช้บอร์ดไมโครคอนโทรลเลอร์ Arduino UNO R3 เป็นตัวศึกษาเรียนรู้ไมโครคอนโทรลเลอร์
ภาพจาก http://digital.csic.es/bitstream/10261/127788/7/D-c- Arduino uno.pdf 1. ชิปไอซีไมโครคอนโทรเลอร์ ATmega328
2. ใช้แรงดันไฟฟ้า 5 V
3. รองรับการจ่ายแรงดันไฟฟ้า (ที่แนะนำ) 7 – 12 V
4. พอร์ต Digital I/O 14 พอร์ต (มี 6 พอร์ต PWM output)
5. พอร์ต Analog Input 6 พอร์ต
6. กระแสไฟที่จ่ายได้ในแต่ละพอร์ต 40 mA
7. กระแสไฟที่จ่ายได้ในพอร์ต 3.3V 50 mA
8. พื้นที่โปรแกรมภายใน 32 KB พื้นที่โปรแกรม
9. พื้นที่แรม 2 KB
10. พื้นที่หน่วยความจำถาวร (EEPROM) 1 KB
11. ความถี่คริสตัล 16 MHz
12. ขนาด 68.6 x 53.4 mm น้ำหนัก 25 กรัม
แหล่งจ่ายไฟ
Arduino Uno สามารถใช้พลังงานไฟฟ้าได้จากพอร์ต USB หรือจากแหล่งจ่ายไฟภายนอก โดยบอร์ดสามารถเลือกแหล่งจ่ายไฟฟ้าได้โดยอัตโนมัติ
แหล่งไฟจากภายนอก (ที่ไม่ใช่ USB) สามารถใช้ได้ทั้งแบบ AC - DC อะแดปเตอร์หรือแบตเตอรี่ ขั้วไฟฟ้าของอะแดปเตอร์สามารถเชื่อมต่อด้วยการเสียบปลั๊กขนาด 2.1mm เข้ากับแจ็คเพาเวอร์ของบอร์ดหรืออาจต่อจากแบตเตอรี่เข้าที่ขั้ว Gnd และ Vin
บอร์ดต้องการแรงดันไฟฟ้าของ 6-20 โวลต์ แต่แรงดันของแหล่งจ่ายไฟฟ้าน้อยกว่า 7V แรงดันเอาต์พุตที่ขา 5V อาจน้อยว่าห้าโวลต์และบอร์ดอาจไม่เสถียร แต่ถ้าใช้มากกว่า 12V, ไอซีควบคุมแรงดันไฟฟ้าจะร้อนมากเกินไป และเกิดความเสียต่อบอร์ดได้ช่วงแรงดันของแหล่งจ่ายไฟฟ้าที่แนะนำคือ 7-12 โวลต์
ขาเพาเวอร์ซัพพลาย มีดังต่อไปนี้ :
• VIN ขารับแรงดันไฟฟ้าเลี้ยงบอร์ด Arduino จากแหล่งจ่ายไฟภายนอก
• 5V ขาจ่ายแรงดันไฟ 5V ที่ได้จากแรงดันจาก VIN ผ่านวงจรเร็กกูเลเตอร์ภายในบอร์ดหรือจากแรงดันที่ได้
• 3V3 ขาจ่ายแรงดันไฟฟ้า3.3 โวลต์ ที่สร้างขึ้นโดยควบคุมวงจรเร็กกูเลเตอร์ภายในบอร์ด จ่ายกระแสสูงสุดคือ 50 มิลลิแอมป์
• GND ขากราวน์
2. ใช้แรงดันไฟฟ้า 5 V
3. รองรับการจ่ายแรงดันไฟฟ้า (ที่แนะนำ) 7 – 12 V
4. พอร์ต Digital I/O 14 พอร์ต (มี 6 พอร์ต PWM output)
5. พอร์ต Analog Input 6 พอร์ต
6. กระแสไฟที่จ่ายได้ในแต่ละพอร์ต 40 mA
7. กระแสไฟที่จ่ายได้ในพอร์ต 3.3V 50 mA
8. พื้นที่โปรแกรมภายใน 32 KB พื้นที่โปรแกรม
9. พื้นที่แรม 2 KB
10. พื้นที่หน่วยความจำถาวร (EEPROM) 1 KB
11. ความถี่คริสตัล 16 MHz
12. ขนาด 68.6 x 53.4 mm น้ำหนัก 25 กรัม
แหล่งจ่ายไฟ
Arduino Uno สามารถใช้พลังงานไฟฟ้าได้จากพอร์ต USB หรือจากแหล่งจ่ายไฟภายนอก โดยบอร์ดสามารถเลือกแหล่งจ่ายไฟฟ้าได้โดยอัตโนมัติ
แหล่งไฟจากภายนอก (ที่ไม่ใช่ USB) สามารถใช้ได้ทั้งแบบ AC - DC อะแดปเตอร์หรือแบตเตอรี่ ขั้วไฟฟ้าของอะแดปเตอร์สามารถเชื่อมต่อด้วยการเสียบปลั๊กขนาด 2.1mm เข้ากับแจ็คเพาเวอร์ของบอร์ดหรืออาจต่อจากแบตเตอรี่เข้าที่ขั้ว Gnd และ Vin
บอร์ดต้องการแรงดันไฟฟ้าของ 6-20 โวลต์ แต่แรงดันของแหล่งจ่ายไฟฟ้าน้อยกว่า 7V แรงดันเอาต์พุตที่ขา 5V อาจน้อยว่าห้าโวลต์และบอร์ดอาจไม่เสถียร แต่ถ้าใช้มากกว่า 12V, ไอซีควบคุมแรงดันไฟฟ้าจะร้อนมากเกินไป และเกิดความเสียต่อบอร์ดได้ช่วงแรงดันของแหล่งจ่ายไฟฟ้าที่แนะนำคือ 7-12 โวลต์
ขาเพาเวอร์ซัพพลาย มีดังต่อไปนี้ :
• VIN ขารับแรงดันไฟฟ้าเลี้ยงบอร์ด Arduino จากแหล่งจ่ายไฟภายนอก
• 5V ขาจ่ายแรงดันไฟ 5V ที่ได้จากแรงดันจาก VIN ผ่านวงจรเร็กกูเลเตอร์ภายในบอร์ดหรือจากแรงดันที่ได้
• 3V3 ขาจ่ายแรงดันไฟฟ้า3.3 โวลต์ ที่สร้างขึ้นโดยควบคุมวงจรเร็กกูเลเตอร์ภายในบอร์ด จ่ายกระแสสูงสุดคือ 50 มิลลิแอมป์
• GND ขากราวน์
หน่วยความจำ
ไมโครคอนโทรลเลอร์ ATmega328 มี หน่วยความจำแฟลชสำหรับการจัดเก็บรหัสขนาด 32 กิโลไบต์ (ซึ่งหน่วยความจำนวน 0,5 KB ที่จะใช้สำหรับการบูต ); หน่วยความจำสแตติกแรม(SRAM )ขนาด 2 กิโลไบต์ และหน่วยความจำอีอีพรอม 1 กิโลไบต์ (ซึ่งสามารถอ่านและเขียนด้วยคำสั่งในไลบราลี EEPROM)
Input/Output
Input/Output
ขาดิจิตอลทั้ง 14 ขาบนบอร์ด Uno สามารถนำมาใช้เป็น input หรือ output ได้โดยใช้ฟังก์ชั่น
pinMode () digitalWrite () และ digitalRead () แต่ละขาทำงานที่แรงดัน 5 โวลต์ สามารถจ่ายหรือรับกระแสไฟฟ้าได้สูงสุด 40 mA และมีตัวต้านทานพูลอัพภายในค่า 20-50 kohms (ปกติจะยังไม่ต่อตัวต้านทานนี้ไว้)
pinMode () digitalWrite () และ digitalRead () แต่ละขาทำงานที่แรงดัน 5 โวลต์ สามารถจ่ายหรือรับกระแสไฟฟ้าได้สูงสุด 40 mA และมีตัวต้านทานพูลอัพภายในค่า 20-50 kohms (ปกติจะยังไม่ต่อตัวต้านทานนี้ไว้)
ขาที่มีหน้าที่พิเศษ
- ขาพอร์ตสื่อสารอนุกรมขา RX (ขา 0) ขารับสัญญาณสื่อสารแบบอนุกรม ขา TX (ขา 1) ขาส่งสัญญาณสื่อสารแบบอนุกรม
- ขารับสัญญาณอินเตอร์รัพต์ภายนอก Interrupts : ขา2 และ ขา3 ขาเหล่านี้สามารถกำหนดค่าให้รับสัญญาณขัดจังหวะได้ทั้งแบบลอจิกสูง ลอจิกต่ำ หรือ แบบอื่น ๆ ดูรายละเอียดฟังก์ชัน attachInterrupt ()
- ขาสัญญาณเอาต์พุตแบบ PWM ขา3, ขา5, ขา6, ขา9, ขา10, และ ขา 11 สามารถส่งสัญญาณ PWM ขนาด8 บิต ด้วยฟังก์ชัน analogWrite ()
- ขาพอร์ตสื่อสารแบบ SPI ขา SS( ขา10), ขาMOSI (ขา11 ), ขาMISO (ขา12 ), ขาSCK (ขา13 ) ขาสัญญาณสื่อสารแบบ SPI ที่สามารถทำงานได้ในระดับฮาร์ดแวร์ ขาควบคุมแอลอีดี ขา 13 เป็นขาที่ต่อกับแอลอีดีที่ติดตั้งบนบอร์ด เมื่อขา 13จ่ายเอาต์พุตลอจิกหนึ่ง แอลอีดี จะติดสว่าง และเมื่อจ่ายเอาต์พุตลอจิกศูนย์ แอลอีดี จะดับ
- ขารับสัญญาณอินเตอร์รัพต์ภายนอก Interrupts : ขา2 และ ขา3 ขาเหล่านี้สามารถกำหนดค่าให้รับสัญญาณขัดจังหวะได้ทั้งแบบลอจิกสูง ลอจิกต่ำ หรือ แบบอื่น ๆ ดูรายละเอียดฟังก์ชัน attachInterrupt ()
- ขาสัญญาณเอาต์พุตแบบ PWM ขา3, ขา5, ขา6, ขา9, ขา10, และ ขา 11 สามารถส่งสัญญาณ PWM ขนาด8 บิต ด้วยฟังก์ชัน analogWrite ()
- ขาพอร์ตสื่อสารแบบ SPI ขา SS( ขา10), ขาMOSI (ขา11 ), ขาMISO (ขา12 ), ขาSCK (ขา13 ) ขาสัญญาณสื่อสารแบบ SPI ที่สามารถทำงานได้ในระดับฮาร์ดแวร์ ขาควบคุมแอลอีดี ขา 13 เป็นขาที่ต่อกับแอลอีดีที่ติดตั้งบนบอร์ด เมื่อขา 13จ่ายเอาต์พุตลอจิกหนึ่ง แอลอีดี จะติดสว่าง และเมื่อจ่ายเอาต์พุตลอจิกศูนย์ แอลอีดี จะดับ
อะนาล็อกอินพุต
บอร์ดอูโน่มีอะนาล็อกอินพุต 6 ช่อง (ขาA0- ขาA5) ซึ่งแต่ช่องมีความละเอียด 10 บิต แบ่งระดับความแตกต่าง 1024 ระดับ โดยเริ่มต้นจากระดับ GND 0 โวลต์ ถึงระดับลอจิกหนึ่ง 5 โวลต์ และสามารถจะเปลี่ยนระดับแรงดันอ้างอิงได้โดยใช้การป้อนแรงดันอ้างอิงภายนอกให้ ขา Aref ร่วมกับการใช้ฟังก์ชั่น analogReference() นอกจากนี้ยังมีบางขาที่มีหน้าที่พิเศษ ได้แก่
- ขาพอร์ตสื่อสารแบบ I2C: ขาSDA (ขาA4 ) และ ขาSCL (ขาA5 )
- ขา Aref แรงดันอ้างอิงสำหรับอินพุตอะนาล็อก ใช้งานร่วมกับการใช้ฟังก์ชั่น analogReference()
- ขารีเซ็ต เมื่อได้รับลอจิกศูนย์ไมโครคอนโทรลเลอร์ จะรีเซ็ตการทำงาน โดยทั่วไปจะใช้ในการเพิ่ม ปุ่มรีเซ็ต ไว้ที่วงจรส่วนขยาย
บอร์ดอูโน่มีอะนาล็อกอินพุต 6 ช่อง (ขาA0- ขาA5) ซึ่งแต่ช่องมีความละเอียด 10 บิต แบ่งระดับความแตกต่าง 1024 ระดับ โดยเริ่มต้นจากระดับ GND 0 โวลต์ ถึงระดับลอจิกหนึ่ง 5 โวลต์ และสามารถจะเปลี่ยนระดับแรงดันอ้างอิงได้โดยใช้การป้อนแรงดันอ้างอิงภายนอกให้ ขา Aref ร่วมกับการใช้ฟังก์ชั่น analogReference() นอกจากนี้ยังมีบางขาที่มีหน้าที่พิเศษ ได้แก่
- ขาพอร์ตสื่อสารแบบ I2C: ขาSDA (ขาA4 ) และ ขาSCL (ขาA5 )
- ขา Aref แรงดันอ้างอิงสำหรับอินพุตอะนาล็อก ใช้งานร่วมกับการใช้ฟังก์ชั่น analogReference()
- ขารีเซ็ต เมื่อได้รับลอจิกศูนย์ไมโครคอนโทรลเลอร์ จะรีเซ็ตการทำงาน โดยทั่วไปจะใช้ในการเพิ่ม ปุ่มรีเซ็ต ไว้ที่วงจรส่วนขยาย
การสื่อสาร
บอร์ด Arduino Uno มีพอร์ตสื่อสารเพื่อเชื่อมต่อคอมพิวเตอร์หรือบอร์ด Arduino อื่น ๆ หรือไมโครคอนโทรลเลอร์อื่น ๆ หลายรูปแบบ ตามความสามารถของไมโครคอนโทรลเลอร์ ATmega328 ที่มีพอร์ตสื่อสารอนุกรมแบบ UART TTL (5V) ที่ขาดิจิตอล 0 (RX) และ ขาดิจิตอล1 (TX) ช่องทางการสื่อสารแบบอนุกรมยังเชื่อมโยงผ่าน USB และปรากฏเป็นพอร์ต COM เสมือนซอฟต์แวร์บนเครื่องคอมพิวเตอร์ ด้วยเฟิร์มแวร์ 8U2 คอมพิวเตอร์สามารถเชื่อมต่อได้Ffp โดยใช้ไดรเวอร์ USBCOM มาตรฐาน
ซอฟต์แวร์ Arduino แสดงผลการสื่อสารผ่านพอร์ตแบบอนุกรมทาง USB ระหว่างบอร์ดกับคอมพิวเตอร์ผ่านขา RX และ TX ไฟ LED จะกระพริบเมื่อข้อมูลถูกส่งผ่านทาง USB (แต่ไม่กระพริบสำหรับการสื่อสารแบบอนุกรมโดยตรงบนขา 0 และ 1)
ไลบรารี SoftwareSerial ช่วยในการเพิ่มพอร์ตสื่อสารแบบอนุกรม ให้ขาดิจิตอลบนบอร์ดอูโน่ และไมโครคอนโทรลเลอร์ ATmega328 ยังสนับสนุน I2C (TWI) ซอฟต์แวร์ Arduino ใช้ร่วมกับไลบรารี wire เพื่อให้ I2C บัสใช้งานได้ง่าย และการสื่อสาร SPI
ไลบรารี SoftwareSerial ช่วยในการเพิ่มพอร์ตสื่อสารแบบอนุกรม ให้ขาดิจิตอลบนบอร์ดอูโน่ และไมโครคอนโทรลเลอร์ ATmega328 ยังสนับสนุน I2C (TWI) ซอฟต์แวร์ Arduino ใช้ร่วมกับไลบรารี wire เพื่อให้ I2C บัสใช้งานได้ง่าย และการสื่อสาร SPI
ขอบขอบคุณข้อมูล
นพพร จูจันทร์ แปลจาก http://digital.csic.es/bitstream/10261/127788/7/D-c- Arduino uno.pdf
http://digital.csic.es/bitstream/10261/127788/7/D-c- Arduino uno.pdf
http://www.arduino.cc/en/Hacking/PinMapping168
นพพร จูจันทร์ แปลจาก http://digital.csic.es/bitstream/10261/127788/7/D-c- Arduino uno.pdf
http://digital.csic.es/bitstream/10261/127788/7/D-c- Arduino uno.pdf
http://www.arduino.cc/en/Hacking/PinMapping168