บทความทั่วไป ของ OpenFog

ตอนที่ 1. - โดย Tumrobot

มาทำให้ MCU ATMEGA กลายร่างมาเป็น Arduino Chip กันเถอะ

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

แล้วถ้าถามว่าอยากทำ Hardware เพิ่มโดยไม่ต้องซื้อ Arduino Board เพิ่มจะต้องทำยังไง ในนี้มีคำตอบให้ครับ

 

เราสามารถ เปลี่ยน IC ATMEGA ให้กลายเป็น Arduino ได้ครับ ซึ่งความจริงแล้วเจ้า Arduino ก็เพียงแค่เพิ่ม Boot Loader เข้าไปใน IC แค่นั้นเองซึ่งทำให้สามารถใช้ Arduino IDE เป็นช่องทางพัฒนาโปรแกรมแล้วนำลงมาฝังลงบน MCU ที่เป็น Arduino ผ่านทาง Serial Port ครับ เพียงเท่านี้หากว่าเราต้องการที่จะเล่น Arduino เราก็ไม่จำเป็นที่จะต้องซื้อ Arduino Board อีกต่อไปครับ ยกเว้น ว่าไม่อยากทำ Hardware เองก็ซื้อหา Board สำเร็จมาใช้ก็ไม่ผิดอะไรครับ

สิ่งที่ต้องมีสำหรับการลง Boot Loader มีดังต่อไปนี้ครับ

1. Arduino IDE เวอร์ชั่นปัจจุบันครับ หาดาวน์โหลดได้จาก http://arduino.cc/en/Main/Software

2. USBASP ซึ่งหาซื้อได้ตาม Web Electronics Online ทั่วไปครับ ตัวนี้จะเป็นตัวที่ทำหน้าที่เบิร์น Bootloader Arduino ลงไปฝังบน ATMEGA MCU ราคาที่หาซื้อได้ทั่วไปโดยประมาณ 150 บาท

3. Board เอนกประสงค์ หรือ โปรโตบอร์ด ก็ได้ครับ

4. ATMEGA328P-PU หรือ ATMEGA168-20PU

 

ทีนี้ลองมาทำความเข้าใจกับ PIN ที่เราต้องการใช้งานจาก USBASP ที่เราต้องการต่อเข้ากับ IC ATMEGA ดังต่อไปนี้

PIN ที่เราต้องการใช้งานนั้นก็จะมี

- SCK

- MISO

- MOSI

- RST

- GND

 

จากนั้นเราก็นำ PIN ที่ต้องการใช้งานต่อเข้ากับ PIN ของ ATMEGA ดังต่อไปนี้

PIN SCK ต่อเข้ากับขา 19

PIN MISO ต่อเข้ากับขา 18

PIN MOSI ต่อเข้ากับขา 17

PIN RST ต่อเข้ากับขา 1

PIN GND ต่อเข้ากับขา 8

 

รูป Hardware ตัวอย่างที่ต่อไว้สำหรับโปรแกรมตัว Anduino Bootloader ลงบน MCU ATMEGA

 

ขั้นตอนสำหรับการ Up Bootloader Arduino ลงบน ATMEGA

1. เปิดโปรแกรม Arduino IDE จากนั้นให้เลือกไปที่ Tool

   

 

 

2. ทำการเลือก Tool >> Board แล้วเลือกบอร์ดให้ตรงกับ ATMEGA เบอร์ที่เราต้องการใช้

   

 

 

3. จากนั้นเลือก Tool >>Programmer >> USBasp

   

 

4. เมื่อต่อ USBasp เข้ากับช่อง USB ของคอมแล้วให้ตรวจสอบ Hardware ว่า Detect เจอ Hardware มั้ย ถ้าไม่เจอก็ให้ลง Driver ซึ่งสามารถ Download ได้จาก http://www.fischl.de/usbasp/

   

 

5. ทำการโปรแกรมตัว Bootloader ลงบน ATMEGA ด้วยการเลือก Tool >> Burn Bootloader

   

 

5. เมื่อโปรแกรมเสร็จเรียบร้อยแล้ว Arduino IDE จะมีข้อความแจ้งตามนี้

   

 

การนำ Arduino Chip ไปใช้งาน

ต่อไปนี้ผมขอเรียกตัว ATMEGA ที่ผ่านการ Burn Arduino Bootloader แล้ว ว่า Arduino Chip ก็แล้วกันครับ เพื่อความเข้าใจจะได้ตรงกัน โดยหลังจากที่เราทำการโปรแกรม Boodloader ของ Arduino ลงไปที่ Chip เรียบร้อยแล้ว ตอนนี้ MCU ของเราก็จะกลายร่างเป็น Arduino Chip เรียบร้อยแล้วละครับ

สำหรับใครที่ไม่มี Arduino Board แล้วเราจะเขียนและพัฒนาโปรแกรมยังไงดีหล่ะ ซึ่งหลายคนเข้าใจว่าถ้าเริ่มต้นเขียนโปรแกรมนั้นก็คงจะต้องเปิด Arduino IDE แล้วเขียนโปรแกรมภาษา C ลงไปบน IDE แต่หลังจากนั้นหล่ะ จะนำ Code ที่ Compile แล้วจับใส่ลงใน Arduino Chip ด้วยวิธีไหน

ซึ่ง ก็มีวิธีที่ Arduino Board เค้านิยมใช้กันก็คือการส่ง hex ไฟล์เข้าไปยัง Arduino Chip ทาง Serial Port ซึ่งบอร์ด ซึ่งแนวทางการต่อ Serial Board ก็ตามวงจรต่อไปนี้ครับ

   

ดาวน์โหลด PDF ไฟล์เพื่อดูรูปที่ชัดเจน ที่นี่

วงจรนี้ หัวใจหลักๆ ก็คือตัว MAX3232 ที่เชื่อมต่อกับ Comport ของ Computer หรือจะเป็น USB to Serial ที่ต่อออกมาจาก Notebook ก็ได้ครับใช้งานได้เหมือนกัน โดยเมื่อเรา Compile โปรแกรมของเราแล้ว เราก็สามารถกด Upload โปรแกรมลงไปยัง Arduino Chip ของเราได้ทันทีเลยครับ ความจริงแล้ว MAX3232 นี้จะใช้แค่ 4 PIN เท่านั้นเชื่อมต่อและโปรแกรม hex ไฟล์เข้ากับ Arduino โดยจะมีแค่ TX, RX, GND และขา 9 R2OUT ที่ต่อไปยังขา RESET ของ Arduino Chip เท่านั้นครับ

   

 

โดยเมื่อเราทำการ Upload เสร็จก็จะมีข้อความแจ้งว่า SUCCESS

   

 

หวังว่าบทความนี้จะเป็นประโยชน์สำหรับผู้เริ่มต้น และผู้ที่ต้องการทำ Arduino Hardware ราคาประหยัด หรือต้องการออกแบบ Hardware เป็นงานของตัวเองโดยไม่ต้องใช้ Arduino Board สำเร็จรูปครับ