ไมโครคอนโทรลเลอร์ Arduino
Arduino (อาดุอิโน่ หรือ อาดุยโน่) มาจากภาษาอิตาเลี่ยน เป็นบอร์ดไมโครคอนโทรลเลอร์ ตระกูล AVR ที่ถูกพัฒนาเป็นแบบโอเพ่นซอร์ซ (Open Source) ซึ่งผู้ผลิตเปิดเผยข้อมูลทั้งฮาร์ดแวร์ (Hardware)และซอฟต์แวร์ (Software) บอร์ดไมโครคอนโทรลเลอร์ Arduino ถูกออกแบบขึ้นมา เพื่อให้ใช้งานได้ง่าย ดังนั้นจึงเหมาะสำหรับที่ผู้เริ่มต้นศึกษาการเขียนโปรแกรมเบื้อต้น ซึ่งผู้ใช้งาน สามารถดัดแปลง พัฒนาต่อยอดฮาร์ดแวร์ (Hardware) และซอฟต์แวร์ (Software) ได้อีกด้วย Arduino นำมาใช้งานเช่นเดียวกับไมโครคอนโทรลเลอร์ตระกูลอื่นๆ เพื่อใช้สำหรับควบคุมอุปกรณ์ไฟฟ้าโดย การเขียนโปรแกรมควบคุมการทำงานตามต้องการ ตัวอย่างการประยุกต์ใช้ Arduino ในชีวิตประจำ วัน เช่น ควบคุมการเปิด/ปิดไฟในบ้านอัตโนมัติ, วงจรวัดค่าอุณหภูมิ, ควบคุมการรดน้ำต้นไม้อัตโนมัติ ควบคุมการเปิด/ปิดประตูอัตโนมัติควบคุมเครื่องซักผ้าหยอดเหรียญ หรือควบคุมความเร็วและทิศทาง การหมุนของมอเตอร์ เป็นต้น จุดเด่นของบอร์ดไมโครคอนโทรลเลอร์ Arduino คือ
1. มีรูปแบบคำสั่งพื้นฐาน ไม่ซับซ้อน เหมาะสำหรับผู้เริ่มต้นใช้งาน และง่ายต่อการพัฒนา โปรแกรม
2. การใช้งานเป็นแบบโอเพ่นซอร์¬¬¬ซ (Open Source) สามารถนำบอร์ดไปต่อยอดใช้งานได้ หลายด้าน
3. สามารถพัฒนาโปรแกรมบนระบบปฏิบัติการต่าง ๆ ได้เช่น Windows, Mac OS X หรือ Linux
4. บอร์ดไมโครคอนโทรลเลอร์ Arduino มีราคาไม่แพง
รูปที่ 1.1 การประยุกต์ใช้งานArduino
โครงสร้างของไมโครคอนโทรลเลอร์ Atmega328
สำหรับไมโครคอนโทรลเลอร์ Atmega328 เป็นไอซีไมโครคอนโทรลเลอร์ของบริษัท Atmel มีโครงสร้างภายในเป็นแบบ RISC (Reduced instruction set Computer) มีหน่วยความจำโปรแกรมภายในเป็นแบบแฟลช สามารถเขียน-ลบโปรแกรมใหม่ได้หลายครั้ง โปรแกรมข้อมูลเป็นแบบ In-System programmable คุณสมบัติเบื้องต้นของไอซีเบอร์ Atmega328 มีดังนี้
รูปที่ 1.2 ตำแหน่งและรูปร่างของไมโครคอนโทรลเลอร์Atmega328
1. เป็นไมโครคอนโทรลเลอร์ขนาด 8 บิตแบบ RISC ใช้กำลังงานต่ำ
2. หน่วยความจำโปรแกรมแบบแฟลซ 32 กิโลไบต์ สามารถเขียนและลบโปรแกรมในวงจรได้ 10,000 รอบ เก็บรักษาข้อมูลได้นาน 20 ปี
3. หน่วยความจำข้อมูลชั่วคราวแบบ SRAM 2 กิโลไบต์ และหน่วยความจำข้อมูลถาวรแบบ EEPROM 1 กิโลไบต์
4. บรรจุ USB บูตโหลดเดอร์มาจากผู้ผลิต จึงสามารถโปรแกรมหน่วยความจำผ่านพอร์ต USB ได้ โดยไม่ต้องใช้เครื่องโปรแกรมภายนอก
5. มีพอร์ตอินพุตเอาต์พุตแบบโปรแกรมได้ ทั้งหมด 23 ขา
6. ความถีสัญญาณนาฬิกาจากภายนอกสูงสุด 20 MHz
7. มีโมดูลแปลงสัญญาณอนาล็อกเป็นดิจิตอล ความละเอียด 10 บิต จำนวน 6 ช่อง
8. มีโมดูลไทเมอร์/เคาว์เตอร์ ขนาด 16 บิต จำนวน 1 ช่อง, ขนาด 8 บิต จำนวน 2 ช่อง
9. มีโมดูลกำเนิดสัญญาณ PWM จำนวน 6 ช่อง
10. มีวงจรตรวจจับไฟเลี้ยงต่ำกว่าที่กำหนดหรือบราวเอาต์แบบโปรแกรมได้
11. มีโมดูลสื่อสารข้อมูลผ่านบัส SPI และ 12C
12. มีโมดูลอินเตอร์รัพพ์ภายนอก 2 ช่องและภายใน 26 ช่อง
13. มีโมดูลสื่อสารข้อมูลอนุกรม USART
14. ใช้ไฟเลี้ยงมีค่าแรงดันตั้งแต่ 4.5 5.5 V ถ้าเลือกใช้สัญญาณนาฬิกาที่ความถี่ 0 - 20 MHz
15. ค่าอุณหภูมิใช้งานตั้งแต่ -40 ถึง +85 °C
รูปที่ 1.3 บล็อกไดอะแกรมไมโครคอนโทรลเลอร์ Atmega 328
หน้าที่และตำแหน่งขาต่าง ๆ ของไมโครคอนโทรลเลอร์ Atmega 328 มีดังนี้
1. ขา VCC เป็นขาไฟเลี้ยง 1.8 โวลต์ ถึง 5.5 โวลต์
2. ขา GND เป็นขากราวนด์
3. Port B (PB7:0) XTAL1/XTAL2/TOSC1/TOSC2 มีทั้งหมด 8 พอร์ต ตั้งแต่พอร์ต PB0 ถึงพอร์ต PB7 แต่ละพอร์ตสามารถเป็นได้ทั้งพออินพุตและเอาต์พุต เป็นพอร์ตที่มีตัวต้านทานพูลอัปอยู่ภายใน และสามารถต่อวงจรเอาต์พุตขับได้ทั้งกระแสซิงค์และกระแสซอร์ซ
4. Port C (PC[6:01) มีทั้งหมด 7 พอร์ต ตั้งแต่พอร์ต PC0 ถึงพอร์ต PC6 แต่ละพอร์ตสามารถเป็นได้ทั้งพอร์ต กระแสซิงค์และกระแสซอร์ซ อินพุตและเอาต์พุต เป็นพอร์ตที่มีตัวต้านทานพูลอัปอยู่ภายใน และสามารถต่อวงจรเอาต์พุตขับได้ทั้ง
5. Port D (PD[7:0]) มีทั้งหมด 8 พอร์ต ตั้งแต่พอร์ต PD0 ถึงพอร์ต PD7 แต่ละพอร์ตสามารถเป็นได้ทั้งพอร์ต อินพุตและเอาต์พุต เป็นพอร์ตที่มีตัวต้านทานพูลอัปอยู่ภายใน และสามารถต่อวงจรเอาต์พุตขับได้ทั้ง กระแสซิงค์และกระแสซอร์ซ
6. AVCC เป็นขาแรงดันไฟฟ้าสำหรับ AND คอนเวอร์เตอร์
7. AREF เป็นขาอ้างอิงสัญญาณอนาล็อกสำหรับ A/D คอนเวอร์เตอร์
สถาปัตยกรรมหลักของซีพียูตระกูล AVR
หน้าที่หลักของซีพียู คือ น้ำคำสั่งและข้อมูลที่เก็บไว้ในหน่วยความจำมาแปลความหมาย และ กระทำตามเรียงกันไปทีละ คำสั่ง ตามคำสั่งพื้นฐานของไมโครคอนโทรลเลอร์ ภายในซีพียูมีหน่วย คำนวณและตรรกะ หรือ Arithmetic & Logical Unit (ALU) เป็นหน่วยที่ทำหน้าที่คำนวณทาง คณิตศาสตร์ ได้แก่ การบวก ลบ คูณ หาร และเปรียบเทียบทางตรรกะเพื่อการตัดสินใจ การทำงาน ของ ALU คือ รับข้อมูลจากหน่วยความจำมาไว้ในที่เก็บชั่วคราวของ ALU หรือเรียกว่า รีจิสเตอร์ (register) เพื่อทำการคำนวณแล้วส่งผลลัพธ์กลับไปยังหน่วยความจำ
รูปที่ 1.4 บล็อกไดอะแกรมสถาปัตยกรรมไมโครคอนโทรลเลอร์ AVR
1. รีจิสเตอร์สถานะ (Status Register: SREG)
เป็นรีจิสเตอร์ที่ใช้สำหรับเก็บสถานะผลของการทำงานที่เกิดจากการทำงานประมวลผลชุด คำสั่งครั้งล่าสุด ซึ่งข้อมูลนี้ไปใช้ประโยชน์ในคำสั่งที่เป็นเงื่อนไขเพื่อใช้ในการตัดสินใจรีจิสเตอร์สถานะ นี้มีการเปลี่ยนแปลงสถานะเสมอเมื่อมีการดำเนินการเกี่ยวกับการประมวลผลทางคณิตศาสตร์และ ตรรกะ (ALU) รีจิสเตอร์สถานะไม่จัดเก็บแบบอัตโนมัติเมื่อมีการเรียกใช้โปรแกรมย่อยแ¬บบขัดจังหวะ (interrupt routine) และเมื่อกลับจากการขัดจังหวะต้องได้รับการจัดการโดยซอฟต์แวร์
รูปที่ 1.5 รีจิสเตอร์สถานะ
บิต 7 - 1: Global Interrupt Enable
บิต 1 ต้องตั้งค่าสําหรับการเปิดใช้งานขัดจังหวะ โดยกําหนดให้รีจิสเตอร์บิดเป็น 1 ทําให้รีจิสเตอร์นี้ถูกเซต ยอมให้มีการขัดจังหวะได้ แต่ถ้ารีจิสเตอร์บิตเป็น 0 ทําให้ไม่มีการขัดจังหวะเกิดขึ้น
บิต 6 - T: Bit Copy Storage
บิต T เป็นคําสั่งคัดลอกบิต ชื่อว่า BLD (Bit LoaD) และ BST (Bit STore)
บิต 5 - H: Half Carry Flag
บิต H ใช้สําหรับการคํานวณเกี่ยวกับ BCD
บิต 4 - S: Sign Flag, S = N + V
บิต S ใช้สําหรับเก็บผลของเครื่องหมายของตัวเลข โดยคํานวณมาจาก S = N + V
บิต 3 - V: Two's Complement Overflow Flag
บิต V ใช้สําหรับการสนับสนุนการทํา 2 คอมพลีเมนต์ (Two's complement) ของตัวเลข
บิต 2 - N: Negative Flag
บิต N เป็นบิตที่ตัวบอกว่า จากการคํานวณหรือการดําเนินการทางตรรกศาสตร์นั้นมีผลลัพธ์เป็นค่าลบหรือไม่
บิต 1 – Z: Zero Flag
บิต Z เป็นบิตที่ตัวบอกว่า จากการคํานวณหรือการดําเนินการทางตรรกศาสตร์นั้นมีผลลัพธ์ เป็น 0 หรือไม่
บิต O - C: Carry Flag
บิต Z เป็นบิตที่ตัวบอกว่า จากการคํานวณหรือการดําเนินการทางตรรกศาสตร์นั้นเกิดการยืมหรือไม่
2. รีจิสเตอร์ใช้งานทั่วไป (General Purpose Register File)
เป็นรีจิสเตอร์ที่ถูกกําหนดขึ้นมาเพื่อใช้กับชุดคําสั่งแบบ RISC ของไมโครคอนโทรลเลอร์ตระกูล AVR ซึ่งในการทํางาน ของคําสั่งนั้นมีการนําเข้าและส่งออกข้อมูลจากรีจิสเตอร์ใช้งานทั่วไปจากคําสั่งมาเก็บในรีจิสเตอร์ดังนี้
• One 8-bit output operand and one 8-bit result input
• TWO 8-bit Output operands and one 8-bit result input
• TWO 8-bit Output operands and one 16-bit result input
• One 16-bit output operand and one 16-bit result input
รูปที่ 1.6 รีจิสเตอร์ใช้งานทั่วไป
3. สแตก พอยเตอร์ (Stack Pointer)
สแตก พอยเตอร์ ถูกใช้งานเพื่อการเก็บข้อมูลไว้ชั่วคราวของตัวแปรและตําแหน่งแอดเดรส ขณะทําการขัดจังหวะหรือกระโดดไปยังโปรแกรมย่อย และตัวชี้ตําแหน่งสแตกมีหน้าที่เก็บค่าตําแหน่ง สูงสุดของสแตกเอาไว้ในไอซี AVR ตัวชี้สแตกมีรีจิสเตอร์ขนาด 8 บิต จํานวน 2 ตัว ได้แก่ SPH และ SPL
ตารางที่ 1.1 คำสั่งสแตก พอยเตอร์
บอร์ดไมโครคอนโทรลเลอร์ Arduino Uno R3
บอร์ดไมโครคอนโทรลเลอร์ Arduino Uno R3 ได้รับความนิยมอีกบอร์ดหนึ่ง เนื่องจากมีราคา ไม่แพง ซึ่งส่วนใหญ่โปรเจคและไลบรารีต่าง ๆ ที่พัฒนาขึ้นมาถูกอ้างอิงกับบอร์ดนี้เป็นหลัก เพราะเป็น ขนาดที่เหมาะกับการเริ่มต้นการเรียนรู้ Arduino ซึ่งบอร์ด Arduino Uno ได้ถูกพัฒนาขึ้นมา ตั้งแต่ R2, R3 และมีรุ่นชิปไอซีเป็นแบบ SMD ในการเรียนรู้บอร์ดไมโครคอนโทรลเลอร์ Arduino เล่มนี้ใช้ เป็นบอร์ดรุ่น Arduino Uno R3 มีคุณสมบัติของบอร์ดดังนี้
1. ใช้ไอซีไมโครคอนโทรลเลอร์ ATmega328
2. ใช้แรงดันไฟฟ้าเลี้ยงไอซีไมโครคอนโทรลเลอร์ ATmega328 มีค่า 5 โวลต์
3. แรงดันไฟฟ้าป้อนที่บอร์ดไมโครคอนโทรลเลอร์ Arduino Uno R3 อยู่ในช่วง 7 - 12โวลต์
4. มีพอร์ตดิจิตอลอินพุต/เอาต์พุต (Digital VO) จํานวน 14 พอร์ต (มี PWM output จํานวน 6 พอร์ต)
5. มีพอร์ตอนาล็อกอินพุต (Analog Input) จํานวน 6 พอร์ต
6. สามารถจ่ายกระแสไฟฟ้า แต่ละพอร์ตได้ 40 มิลลิแอมป์ (mA)
7. สามารถจ่ายกระแสไฟฟ้าในพอร์ต 3.3 V จ่ายได้ 50 มิลลิแอมป์ (mA)
8. มีพื้นที่หน่วยความจําโปรแกรม 32 กิโลไบต์ (KB)
9. มีพื้นที่หน่วยความจําชั่วคราวแบบ SRAM 2 กิโลไบต์ (KB)
10. มีพื้นที่หน่วยความจําถาวรแบบ EEPROM 1 กิโลไบต์ (KB)
11. ใช้ความถีสัญญาณนาฬิกา 16 เมกะเฮิรตซ์ (MHz)
รูปที่ 1.7 บอร์ดไมโครคอนโทรลเลอร์ Arduino Uno R3
1. ภาคจ่ายไฟฟ้า
บอร์ดไมโครคอนโทรลเลอร์ Arduino Uno R3 สามารถใช้พลังงานไฟฟ้าจากพอร์ต USB ของคอมพิวเตอร์ หรือแหล่งพลังงานไฟฟ้าจากภายนอกโดยบอร์ดสามารถเลือกแหล่งจ่ายไฟฟ้าได้โดย อัตโนมัติ ในส่วนของแหล่งพลังงานไฟฟ้าจากภายนอก สามารถใช้ได้ทั้งแบบไฟฟ้ากระแสสลับและ ไฟฟ้ากระแสตรงจากอะแดปเตอร์ หรือจากแบตเตอรี่โดยมีขั้วไฟฟ้าของอะแดปเตอร์สามารถเชื่อมต่อ ด้วยการเสียบปลักขนาด 2.1 มม. เข้ากับแจ็คพาวเวอร์ของบอร์ด ช่วงแรงดันของแหล่งจ่ายไฟฟ้าที่ แนะนําควรมีค่าอยู่ในช่วง 7 - 12 โวลต์ แต่ถ้าใช้แรงดันไฟฟ้ามากกว่า 12 โวลต์ ส่งผลให้ไอซีควบคุม แรงดันไฟฟ้าร้อนมากเกินไปและเกิดความเสียหายต่อบอร์ดได้ ขาพาวเวอร์ซัพพลาย มีดังนี้
- Vin เป็นขารับแรงดันไฟฟ้าเลียงบอร์ด Arduino จากแหล่งจ่ายไฟฟ้าภายนอก
- 5 V เป็นขาจ่ายแรงดันไฟฟ้า 5 โวลต์ ที่ได้จากแรงดันจาก Vin ผ่านวงจรเร็กกูเลเตอร์ภายในบอร์ด หรือจากแรงดันไฟฟ้าที่พอร์ต USB
- 3.3V เป็นขาจ่ายแรงดันไฟฟ้า 3.3 โวลต์ ที่สร้างขึ้นโดยวงจรเร็กกเลเตอร์ภายในบอร์ดจ่ายกระแสสูงสุดคือ 50 มิลลิแอมป์
- GND เป็นขากราวนด์
2. หน่วยความจํา
ไมโครคอนโทรลเลอร์ ATmega328 มีหน่วยความจําแบบแฟลชสําหรับการจัดเก็บโปรแกรม ขนาด 32 กิโลไบต์ (มีหน่วยความจําใช้สําหรับการบูต ขนาด 0.5 กิโลไบต์) มีหน่วยความจําชั่วคราวแบบสแตติกแรม (SRAM) ขนาด 2 กิโลไบต์ และมีหน่วยความจําถาวรแบบอีอีพร็อม (EEPROM)ขนาด 1 กิโลไบต์
3. พอร์ตอินพุต - เอาต์พุต
บอร์ดไมโครคอนโทรลเลอร์ Arduino Uno R3 มีพอร์ตดิจิตอลทั้งหมด 14 ขา สามารถเป็นได้ทั้งพอร์ตอินพุตหรือเอาต์พุต โดยใช้ฟังก์ชัน pinMode (), digitalWrite ) และ digitalRead () แต่ละขาทํางานที่แรงดัน 5 โวลต์ สามารถจ่ายหรือรับกระแสไฟฟ้าได้สูงสุด 40 มิลลิแอมป์ และมียังมีหน้าที่พิเศษ ดังนี้ ตัวต้านทานต่อแบบพูลอัปอยู่ภายในมีค่าความต้านทาน 20 - 50 กิโลโอห์ม นอกจากนี้แล้ว บางพอร์ต
- พอร์ต O เป็นขา RX ใช้เป็นพอร์ตรับสัญญาณสื่อสารแบบอนุกรม
- พอร์ต 1 เป็นขา TX ใช้เป็นพอร์ตส่งสัญญาณสื่อสารแบบอนุกรม
- พอร์ต 2 และ 3 เป็นพอร์ตรับสัญญาณอินเตอร์รัพท์ภายนอก (Interrupts) พอร์ตเหล่านี้สามารถกําหนดค่าให้รับสัญญาณขัดจังหวะได้ทั้งแบบลอจิกสูง ลอจิกต่ํา หรือแบบอื่น ๆ
- พอร์ต 3, 5, 6, 9, 10 และ 11 เป็นพอร์ตส่งสัญญาณเอาต์พุตแบบ PWM ขนาด 8 บิต
- พอร์ต 10, 11, 12 และ 13 เป็นพอร์ตสื่อสารแบบ SPI
- พอร์ต 13 เป็นพอร์ตควบคุมแอลอีดีที่ติดตั้งบนบอร์ด เมื่อขา 13 จ่ายเอาต์พุตลอจิก “1” ทําให้แอลอีดีติดสว่าง และเมื่อจ่ายลอจิก “0” ทําให้แอลอีดีดับ
4. อนาล็อกอินพุต
บอร์ดไมโครคอนโทรลเลอร์ Arduino Uno R3 มีพอร์ตอนาล็อกอินพุต 6 ขา คือ ขา AO - ขา A5 ซึ่งแต่ช่องมีความละเอียดขนาด 10 บิต แบ่งระดับความแตกต่างได้ 1,024 ค่า โดยเริ่มต้น จากระดับแรงดัน 0 โวลต์ จนถึงระดับ 5 โวลต์ และสามารถเปลี่ยนระดับแรงดันอ้างอิงได้โดยใช้ แรงดันอ้างอิงจากภายนอกป้อนที่ขา AREF ร่วมกับฟังก์ชัน analogReference() นอกจากนี้ยังมี บางขาที่มีหน้าที่พิเศษ ดังนี้
- พอร์ต A4 (SDA) และพอร์ต A5 (SCL) เป็นพอร์ตสื่อสารแบบ IRC
- พอร์ต Aref แรงดันอ้างอิงสําหรับอินพุตอนาล็อก ใช้งานร่วมกับฟังก์ชัน analog Reference ()
5. การสื่อสาร
บอร์ดไมโครคอนโทรลเลอร์ Arduino Uno R3 มีพอร์ตสื่อสารเพื่อเชื่อมต่อกับคอมพิวเตอร์ หรือบอร์ด Arduino อื่นๆ หรือไมโครคอนโทรลเลอร์เบอร์อื่น ๆ หลายรูปแบบ ตามความสามารถของ ไมโครคอนโทรลเลอร์ ATmega328 ที่มีพอร์ตสื่อสารอนุกรมแบบ UART ที่พอร์ตดิจิตอล ขา 0 (R และพอร์ตดิจิตอล ขา 1 (TX) ช่องทางการสื่อสารแบบอนุกรมยังเชื่อมโยงผ่านพอร์ต USB และยัง ปรากฏเป็นพอร์ต COM เสมือนซอฟต์แวร์บนเครื่องคอมพิวเตอร์ ด้วยเฟิร์มแวร์ 8U2 คอมพิวเตอร์ สามารถเชื่อมต่อได้โดยใช้ไดรเวอร์ USB มาตรฐาน และไม่ต้องใช้ไดรเวอร์ภายนอกแต่อย่างไร
ซอฟต์แวร์ Arduino แสดงผลการสื่อสารผ่านพอร์ตแบบอนุกรมทางพอร์ต USB ระหว่าง
บอร์ด Arduino กับคอมพิวเตอร์ผ่านขา RX และ TX ซึ่งทําให้ไฟ LED กะพริบเมื่อข้อมูลถูกส่งผ่าน
ทางพอร์ต USB
สรุป
Arduino (อาดอีโน่ หรือ อาดุยโน่) มาจากภาษาอิตาเลียน เป็นบอร์ดไมโครคอนโทรลเลอร์ตระกูล AVR ที่ถูกพัฒนาเป็นแบบโอเพ่นซอร์ซ (Open Source) ซึ่งผู้ผลิตเปิดเผยข้อมูลทั้งฮาร์ดแวร์ (Hardware) และซอฟต์แวร์ (Software) บอร์ดไมโครคอนโทรลเลอร์ Arduino ถูกออกแบบขึ้นมาเพื่อให้ใช้งานได้ง่าย ดังนั้นจึงเหมาะสําหรับที่ผู้เริ่มต้นศึกษาการเขียนโปรแกรมเบื้องต้น ซึ่งผู้ใช้งาน สามารถดัดแปลง พัฒนาต่อยอดฮาร์ดแวร์ (Hardware) และซอฟต์แวร์ (Software) ได้
บอร์ดไมโครคอนโทรลเลอร์ Arduino Uno R3 มีคุณสมบัติของบอร์ดดังนี้
1. ใช้ไอซีไมโครคอนโทรลเลอร์ ATmega328
2. ใช้แรงดันไฟฟ้าเลี้ยงไอซีไมโครคอนโทรลเลอร์ ATmega328 มีค่า 5 โวลต์
3. แรงดันไฟฟ้าป้อนที่บอร์ดไมโครคอนโทรลเลอร์ Arduino Uno R3 อยู่ในช่วง 7 - 12 โวลต์
4. มีพอร์ตดิจิตอลอินพุต/เอาต์พุต (Digital I/O) จํานวน 14 พอร์ต (มี PWM output จํานวน 6 พอร์ต)
5. มีพอร์ตอนาล็อกอินพุต (Analog Input) จํานวน 6 พอร์ต
6. สามารถจ่ายกระแสไฟฟ้าแต่ละพอร์ตได้ 40 มิลลิแอมป์ (mA)
7. สามารถจ่ายกระแสไฟฟ้าในพอร์ต 3.3 V จ่ายได้ 50 มิลลิแอมป์ (mA)
8. มีพื้นที่หน่วยความจําโปรแกรม 32 กิโลไบต์ (KB)
9. มีพื้นที่หน่วยความจําชั่วคราวแบบ SRAM 2 กิโลไบต์ (KB)
10. มีพื้นที่หน่วยความจําถาวรแบบ EEPROM 1 กิโลไบต์ (KB)
11. ใช้ความถี่สัญญาณนาฬิกา 16 เมกะเฮิรตซ์ (MHz)