Arduino Standalone

การใช้ Arduino แบบ Standalone หมายถึงการหยิบเอาเฉพาะตัวไมโครคอนโทรลเลอร์ (MCU) ที่อยู่บนบอร์ด มาเพียงตัวเดียว และนำมาต่อวงจรต่างๆที่จำเป็นเพิ่มเติมในภายหลัง ซึ่งวิธีนี้ทำให้เรามีความยืดหยุ่นในการดีไซน์วงจรได้มากขึ้น แถมขนาดที่อาจเล็กลง แต่ที่แน่ๆคือ ราคาถูกลงแน่นอน เพราะถ้าเทียบกับงานที่ต้องใช้ Arduino จำนวนมากๆ แต่ถ้าเราซื้อมาเฉพาะตัวไมโครคอนโทรลเลอร์ ก็จะประหยัดเงินได้หลายเท่า

สิ่งที่ควรรู้ก่อน

ในบทเรียนนี้เราจะใช้ Arduino UNO R3 เป็นอุปกรณ์หลัก โดยเราสามารถใช้งานแบบ Standalone ได้ด้วย 2 ขั้นตอน คือ

1. Burn Bootloader
2. Upload Program (Upload Code)
ซึ่งขั้นตอนการ Upload Program สามารถทำได้ 2 วิธีหลักๆ คือ
• 2.1 ใช้ Module USB TTL to UART ซึ่งเป็นอุปกรณ์ที่เอาไว้ Upload Code ลง Arduino ตระกูลที่ไม่มีช่อง USB เช่น Arduino Pro mini เป็นต้น (แต่ในบทเรียนนี้ เราจะไม่ใช้วิธีนี้ เพราะต้องซื้อโมดูลมาเพิ่มเติม)
• 2.2 ใช้ Arduino UNO R3 เป็นทั้งตัว Burn และ Upload เนื่องจาก UNO R3 เป็นรุ่นที่หลายๆคนน่าจะมีอยู่แล้ว เพราะเป็นรุ่นมารตฐาน แต่ที่สำคัญคือ เป็นรุ่นเดียวที่สามารถอด Microcontroller ออกจากตัวบอร์ดได้ ซึ่งการ Upload Standalone นั้นจำเป็นต้องถอดตัว MCU ออก ในขณะที่ Arduino รุ่นอื่นๆจะใช้ MCU แบบ SMD ซึ่งถูกบัดกรีติดกับตัวบอร์ดไปเลย

อุปกรณ์ที่ใช้

 

อุปกรณ์ จำนวน
Arduino UNO R3 พร้อม MCU บนตัว 1
MCU ATmega328P 1
Crystal กำเนิดความถี่ 16.00 MHz 1
ตัวเก็บประจุ 22 pF 2
ตัวต้านทาน 10 K โอห์ม 1
Protoboard 1
สายไฟจัมเปอร์ ตามความเหมาะสม
ภาพแสดงตำแหน่งขาต่างๆของ ATmega328P

ขั้นตอนที่ 1 : Burn Bootloader

เป็นขั้นตอนในการเปลี่ยนไมโครคอนโทรลเลอร์ทั่วๆไป ให้สามารถใช้งานกับ Code ของ Arduino ได้ โดย Arduino UNO R3 นั้น ใช้ Microcontroller รุ่น ATmega328P ซึ่งเป็นไมโครคอนโทรลเลอร์ของ Atmel แต่อยู่ๆถ้านำมาใช้เลย ก็จะไม่สามารถใช้กับ Arduino ได้ จึงต้องมีการ Burn Bootloader ก่อนนั่นเอง โดย Microcontroller ที่ติดมากับ UNO R3 ตั้งแต่แรก จะมีการ burn ไว้อยู่แล้ว แต่ไมโครคอนโทรลเลอร์ที่แยกซื้อมาต่างหาก อาจจะยังไม่ได้ burn และถึงแม้ว่าจะ burn ไว้แล้ว ก็สามารถทำซ้ำอีกรอบได้เช่นกัน

Bootloader คืออะไร?
สำหรับไมโครคอนโทรลเลอร์ทั่วๆไป การที่จะโปรแกรมหรืออัปโหลด Code ลงบนตัวมันได้ จะต้องใช้เครื่องโปรแกรม หรืออาจเรียกว่าเครื่องเบิร์น แต่สำหรับ MCU ของ Arduino หรือ MCU บางรุ่น จะมีชุดโปรแกรมเล็กๆ หรือที่เรียกว่า Firmware ซึ่งเป็นโปรแกรมที่จะทำหน้าที่ upload code โดยไม่จำเป็นต้องมีเครื่องเบิร์น และเราเรียก Firmware นั้นว่า Bootloader นั่นเอง ผู้ที่ใช้ Arduino จึงไม่จำเป็นต้องมีเครื่องเบิร์น แต่เราก็จะต้องเบิร์น Bootloader ลงบนตัว MCU ก่อน

ขั้นตอนการ Burn Bootloader
1. ต่อวงจร
2. Upload code และ Burn ได้เลย

ต่อวงจรเตรียมไว้ตามภาพ
โดยเราจะเรียก MCU บนArduino ว่า MCU หลัก และเรียก MCU บน Protoboard ว่า MCU เป้าหมาย (MCU ที่กำลังจะโดนเบิร์น)
ทำการ Upload Code Arduino ISP ลงบน MCU หลักก่อน ซึ่งเป็น Code ที่จะใช้ในการ Burn bootloader ให้ MCU เป้าหมาย โดยไปที่ Examples > ArduinoISP
ทำการ Upload Code ลง MCU หลักให้เรียบร้อย โดยกด Upload ที่ลูกศรด้านบนตามปกติ
จากนั้น เปลี่ยนประเภทการ Upload ให้เป็น Arduino as ISP (จากเดิมจะเป็น Parallel Programmer) เพื่อเปลี่ยนจากบอร์ด Arduino ให้กลายเป็นเครื่องเบิร์น bootloader ชั่วคราว
จากนั้น กด Burn Bootloader และรอจนกระทั่งการเบิร์นเสร็จสิ้น MCU เป้าหมายก็จะมี Bootloader ฝังอยู่ในตัวเอง เพื่อรอการ Upload Code ใหม่ๆในขั้นตอนต่อไป
ขั้นตอนที่ 2 : Upload Program (Code)
เมื่อ MCU ของเรามี Bootloader แล้ว เราก็จะสามารถ Upload Code ใหม่ๆลงบน MCU ตัวนั้นได้เหมือนการใช้งาน Arduino ตามปกติเลย ซึ่งตามที่กล่าวข้างต้นว่า เราจะใช้ Arduino UNO R3 เป็นตัว Upload Code ซึ่งก็จะมีวิธี Upload ย่อยๆอีก 2 วิธี คือ
1. Upload ตามปกติ
2. Upload บน Protoboard
(ให้เลือกวิธีใดวิธีหนึ่ง)
1.Upload ตามปกติ
คือการ Upload Code ลงบนตัว MCU แบบปกติเลย คือการแกะ MCU หลักออก แล้วเอา MCU เป้าหมายใส่ไปบน Socket ของบอร์ดแทน แล้วกด Upload code ผ่านโปรแกรมของ Arduino เพียงแต่ว่าหลังจาก Upload แล้ว เราก็จะแกะ MCU นั้นออกมาจากตัวบอร์ด เพื่อนำไปใช้งานแบบ Standalone เป็นวิธีที่ง่ายที่สุด
2.Upload บน Protoboard
คือการนำ MCU ที่มี bootloader ของ Arduino ไป Upload ข้างนอกบอร์ด Arduino ซึ่งนิยมนำไปต่อไว้บน Protoboard แล้วต่อวงจรจัมป์สายไฟมาจากบอร์ด Arduino แต่วิธีนี้ ระหว่างการ Upload จะต้องถอด MCUที่อยู่บน Arduino ออกด้วย เพราะชิฟ FTDI ที่อยู่บน Arduino และมีหน้าที่ในการ upload code จะติดต่อกับ MCU ได้เพียงตัวเดียว ถ้าเราถอด MCU หลักทีอยู่บน Arduino ออก ,ชิฟ FTDI ก็จะติดต่อกับ MCU เป้าหมายที่อยู่บน Protoboard แทน
เทคนิคการถอด(แกะ) MCU ออกจากบอร์ด
บางคนอาจจะไม่กล้าแกะ MCU ออกจาก Socket ของบอร์ด Arduino UNO R3 เพราะกลัวว่าขาจะขาดหรืองอ ซึ่งมันก็สามารถขาดได้จริงๆ หากเราไม่มีเทคนิคในการแกะ
เทคนิคในการแกะก็คือ ใช้ไขควงปากแบน หรืออะไรที่แบนๆก็ได้ เช่นไม้บรรทัด สอดเข้าไปใต้ท้องของ MCU แล้วค่อยๆงัด ทีละฝั่งเท่ากันๆ อย่างัดฝั่งเดียว ต้องงัดทั้ง 2 ฝั่ง (ด้านหน้าและหลัง) โดยอาจจะงัดข้างหน้าทีละนิดก่อน แล้วสลับไปงัดด้านหลัง จนกระทั่ง MCU มีความหลวมมากพอ เราก็ดึงมันออกมาจาก Socket ได้เลย
ต่อวงจรตามภาพ และถอด MCU หลักบนบอร์ด Arduino ออกด้วย

หลังจากต่อวงจรไว้แล้ว ก็ทำการ Upload ตามปกติ โดยอย่าลืมเปลี่ยนประเภทการ Upload (programmer) ให้กลับมาเป็นแบบ Parallel Programmer ด้วย เพราะการ Upload Code ของ Arduino จะใช้การเชื่อมต่อแบบ Parallel

เลือกประเภทการ Upload กลับมาเป็น Parallel Programmer

ทำการ Upload code ที่ต้องการตามปกติ เช่น code ไฟ LED กระพริบ ก็สามารถ Upload ได้ตามปกติเลย โดยไปคลิกที่เครื่องหมายลูกศรด้านบน และรอจน Upload เสร็จสิ้น เพียงเท่านี้ เราก็จะได้ Arduino แบบ Standalone มาใช้แล้ว

การนำ MCU แบบ Standaloneไปใช้

หลังจากที่ได้ MCU แบบ Standalone มาแล้ว การที่เราจะนำไปใช้งานได้ ก็จะต้องมีการต่อวงจรเล็กๆเพิ่ม อีก 2 วงจร ได้แก่1.วงจรกำเนิดความถี่ 2.วงจรไฟเลี้ยง

1.วงจรกำเนิดความถี่

การใช้งานไมโครคอนโทรลเลอร์ทั่วๆไป จะต้องมีวงจรกำเนิดความถี่ให้กับมัน เพราะความถี่นี้ จะเป็นตัวกำหนดจังหวะการทำงานและการนับเวลาต่างๆของ MCU
วงจรกำเนิดความถี่ ไม่มีอะไรซับซ้อน มีอุปกรณ์ดังนี้

อุปกรณ์ จำนวน
Crystal กำเนิดความถี่ 16.00 MHz 1 ตัว
ตัวเก็บประจุ 22 pF 2 ตัว

โดยการนำ Crystal ต่อเข้าที่ขา 9 และ 10 ของ MCU ATmega328P (ต่อด้านไหนก็ได้ เพราะ Crystal ไม่มีขั้ว) และนำตัวเก็บประจุจัมป์ระหว่างขาทั้ง 2 ของ Crystal กับ Ground

2.วงจรไฟเลี้ยง

เป็นอีกวงจรที่สำคัญมาก เพราะก่อนอื่นต้องรู้ว่า MCU ATmega328P รับไฟเลี้ยงได้ไม่เกิน 5.5 V แต่ในบางครั้ง เราอาจต้องการใช้กับไฟเลี้ยง หลายๆแบบที่หามาได้ เช่น 5 V , 9 V หรือ 12 V เป็นต้น ดังนั้น เราจึงจำเป็นต้องมี IC Voltage Regulator เพื่อจำกัดแรงดันให้ไม่เกิน 5 V เพื่อประสิทธิภาพสูงสุดของ MCU และป้องกันความเสียหายจากไฟแรงดันเกิน
โดยมีอุปกรณ์ดังนี้

อุปกรณ์ จำนวน
IC 7805 Voltage Regulator 1 ตัว
ตัวเก็บประจุ 0.1 uF 1 ตัว
ตัวเก็บประจุ 0.33 uF 1 ตัว

* ตัวเก็บประจุจะเพิ่มความเสถียรและความเรียบของสัญญาณไฟฟ้าได้มาก   IC 7805 Voltage Regulator ทำหน้าที่แปลงแรงดันขาเข้า จาก 5 – 35 V ให้กลายเป็นแรงดันขาออก 4.8 – 5.2 V นั่นหมายความว่า เราสามารถใช้แหล่งจ่ายได้หลากหลายตั้งแต่ 5 – 35 V   

วงจรกำเนิดความถี่และไฟเลี้ยงของ MCU Arduino Standalone

 

แหล่งข้อมูลเพิ่มเติม