ไม่คิดว่าจะมีโอกาสได้มาเล่น Microcontroller กับเขา เป็นเพราะพี่ที่ออฟฟิตเขาอยากจะรื้อฟื้นความรู้ทางด้านอิเล็คทรอนิคส์ของตัวเอง ผมก็เลยได้โอกาสลองดูบ้าง ความตั้งใจจริงๆ อยากจะสร้างหุ่นยนต์กับเขาสักตัวนึง ที่มีความสามารถเดินได้ด้วยตัวเอง ตัดสินใจทำอะไรต่างๆ ได้ แต่ราคาหุ่นสำเร็จรูปมันสูงครับ เลยคิดว่าสร้างเองดีกว่า
ดังนั้นก่อนจะมีหุ่นได้ก็ต้องรู้จักกับส่วนควบคุมกันก่อน จะเอาคอมพิวเตอร์ขนาดใหญ่มาใช้มันก็ไม่ใช่เรื่อง เลยมาย่อส่วนเป็น Microcontroller ขนาดเล็ก ตัวแรกที่ซื้อ ซื้อเพราะไม่รู้เรื่องอะไรเลย ได้ตัวใหญ่มาครับ ATmega1280 มี I/O เยอะมาก เยอะจนเกินความจำเป็นเลยทีเดียว แฮะๆ
การเขียนโปรแกรมควบคุมทำได้ไม่ลำบาก เจ้าบอร์ดตัวนี้มีการลงระบบควบคุม (หรือเรียกว่า Bootloader) ที่ชื่อ Arduino ทำให้เขียนภาษา C/C++ ไปควบคุมการทำงานได้ ซึ่งคนทำ Arduino ได้รวบเอาคำสั่งยากๆ มาเป็นชุดคำสั่ง Library พร้อมเรียกใช้งาน ถือว่าโชคดีเริ่มได้ไม่ยาก
นอกจากบอร์ดตัวนี้ก็ซื้ออุปกรณ์เสริมเล็กๆ น้อยๆ อย่างเช่นจอ LCD 16×2, Keyboard 8×8, LED Test, RTC เพื่อมาทดสอบความเข้าใจในการควบคุม MCU
ถือว่าโชคดีครับมีความรู้ด้านเขียนโปรแกรมเป็นทุนอยู่แล้ว แต่ก็โชคร้ายที่ความรู้ด้านอิเล็คทรอนิกส์น้อยมาก ทำหลอด LED ไหม้หลายตัว แต่ไม่เป็นไร เรื่องนี้ถือว่าเป็นค่าประสพการณ์
เอาล่ะครับหลังจากที่เริ่มคุ้นเคยกับการเขียนโปรแกรมกับตัวพัฒนา (IDE) ของ Arduino แล้วก็แวะไปซื้อ Motor Servo เพื่อมาทำชิ้นส่วนต่างๆ ของหุ่น เริ่มจากแขนก่อน ใช้ Servo จำนวน 4 ตัวเลียนแบบข้อต่อต่างๆ ของมนุษย์ ทำออกมาได้ตรงความต้องการเลย และการควบคุมก็ใช้อุปกรณ์ Wii Nunchuck มาคุม
ต่อมาหลังจากที่ทำแขนสำเร็จ ก็มาลองทำขาดูบ้าง ด้วยโครงสร้างสำเร็จรูป (Frame) ของตัว Servo มันค่อนข้างจะจำกัดจินตนาการ และน้ำหนักค่อนข้างสูง ไม่สามารถทำขาในรูปแบบที่ต้องการได้ เลยลดจากโครงสร้างขาแบบเต็มรูปแบบ มาเป็นขาที่ใช้ Motor Servo ข้างละ 2 ตัวมาทำแทน ก็โอเคครับ เดินได้จริงแต่ไม่ได้ดั่งใจต้องการ
โปรเจคหุ่นยนต์ทำเองเลยต้องยุติไว้ชั่วคราว เพราะปัจจัยหลักเรื่องการทำโครงสร้างต่างๆ (อยากมีบ้านเป็นโรงงานตัดแผ่นอลูมิเนียมจริงๆ)
ต่อมาก็มานั่งคิดว่าเราจะมาทำอะไรดี ในมือก็มีจอ LCD 16×2 อยู่ ก็ได้ไอเดียว่า มาทำนาฬิกาดีกว่า แต่นาฬิกาธรรมดามันเชยครับ เอาเป็นนาฬิกาที่ไม่ว่าจะหมุนไปด้านไหนก็สามารถเห็นเวลาได้ (ตัวเลขมันพลิกให้เลย) เอาล่ะ มีอุปกรณ์อะไรบ้างในมือ พบว่าไม่ครบสักอย่าง จะเอา ATMega1280 มาใช้ก็ใหญ่เกินไป เลยเปิดเว็บเจอ ET-Easy168 Stamp
ขนาดเล็กมากจริงๆ ตอนที่ตัดสินใจว่าจะเอาตัวไหนดี นอกจากตัวนี้แล้วก็ยังมี Duino Thumb อีกอัน แต่มันไม่สะดวกในเรื่องการเชื่อมต่อเลยต้องตัดใจครับ นอกจากตัวนี้แล้วก็ยังหา Tilt Detector Module มาใช้เพื่อตรวจสอบการหมุนของนาฬิกา (แต่สั่งทางไปรษณีย์ค่าส่งมันเยอะ เลยสั่ง Bluetooth Module, Ultrasonic Range finder, GP2D120) มาพร้อมกันเลย
พอมาดูอุปกรณ์ที่มี ก็พบว่าจอ LCD 16×2 มันมีข้อเสียเรื่องที่ว่า ตัวอักษรที่แสดงมันแสดงได้ทีละตัวอักษร ไม่ใช่วาดทีละจุดแบบจอคอมพิวเตอร์ (โชคดีที่ใช้คอมมั้ง) และกำหนดตัวอักษรได้เองแค่ 8 ตัว จะพลิกให้ครบสี่ด้านไม่สำเร็จแน่เลย คิดแล้วเศร้า ดังนั้นไม่รอช้าครับ เดินไปบ้านหม้อ เดินหาจอใหม่เลยดีกว่า หาจอ Graphic LCD ขนาดใหญ่ ไปเจอจอ OLED ของ Bollymin สีเหลืองสวยมาก คว้ามาเลยครับ ค่อยมาหาวิธีใช้อีกที แต่ด้วยความรู้ด้านไฟฟ้าที่น้อยมาก ทำให้อ่านสเปคไม่ขาด รู้แค่ใช้ไฟ 3.3V แต่ไม่รู้ว่าแต่ละ PIN ที่ควบคุมจอจะต้องใช้ไฟ 3.3V ด้วย (Logic Level) และเพิ่งจะรู้หลังจากเสียบจอกับ MCU ไปแล้วว่า MCU ที่ใช้มันเป็น 5V Logic Level เอาละซิทำอย่างไรดี
ลองค้นหาในอินเทอร์เน็ตดูก็พบกับคุณ J. Nut เขาก็แนะนำว่ามีสองวิธี หาตัวแปลง Logic Level จาก 5V เป็น 3.3V หรือว่าไปใช้ MCU ที่ใช้ไฟ 3.3V เลย เขาแนะนำ ARM STM32 ครับ เอาไงดีเราเพื่อจะทดสอบให้ได้ว่าจอมันพังไหม ตัดใจเลยครับ ซื้อ ARM STM32 (ET-STM32F103)
สุดยอดแห่งความเร็วเลยครับ เสียเงินเพิ่มมาเพื่อทดสอบว่าจอ OLED เสียหรือยัง เอาน่าได้ MCU ขนาด 32bit มาศึกษาอีกตัวนึง ดีกว่าหยุดอยู่แค่ 8bit ละกันแต่กันเหนียวไม่ให้เสียเที่ยว ก็ซื้อจอ Nokia 6610 มาด้วย พอทดสอบได้แล้วก็สบายใจครับไม่เสียเงินค่าจอฟรี ได้จอสีมาใช้งานอีกตัวด้วย เอาล่ะเริ่มโปรเจคได้
เริ่มต้นด้วยเอา ATMega168 Stamp เลือกเพราะขนาดที่เล็ก มาต่อเข้ากับ RTC Module แล้วก็ใช้ Regulate 5V กับจอ Nokia 6610 สร้างนาฬิกาแบบเข็ม สำเร็จด้วยดีครับ พอมาคิดว่าจะหมุนจอ ก็พบว่านาฬิกาเข็มมันไม่เหมาะ ดูยาก เลยเปลี่ยนเป็นตัวเลข ก็โอเคครับ สวยขึ้น พลิกได้ตามต้องการทุกอย่าง แต่ข้อเสียของจอ Nokia 6610 มันเหมาะกับเอามาจ่อดู วางโต๊ะไม่เห็นตัวเลขอะไรเลย
เอาไงละทีนี้ คิดใหม่เลยครับคราวนี้ จะทำอย่างไรดี ก็มาดูจอที่มีอยู่ OLED มันจะใช้ทีนึงต้องมี 5V->3V Logic Shift สองแผ่น ใหญ่เข้าไปอีก จะเอา STM32 มาใช้ก็บอร์ดใหญ่เกินไป สรุปกลับไปหาตัวเดิมเลย LCD 16×2 ทำให้มันหมุนกลับด้านได้สองด้านก็พอ (หมดกันอุตสาหร์ซื้อจอใหญ่มา จบที่จอ LCD ซะงั้น)
หลังจากที่ประกอบทุกอย่างเรียบร้อย ขนาดนาฬิกาที่ได้ใหญ่เกินครับ ต้องทำการลดขนาดลง RTC Module ที่ใช้ก็ไปหาอุปกรณ์มาเสียบบนบอร์ดหลักเอา แล้วไฟ 5V ก็ไม่ใช้ Regulate แล้ว เอา Adapter 5V มาเสียบตรงเลย (เพิ่งรู้ว่า Adapter นี่แหล่ะ Regulate มาเรียบร้อย) ลดขนาดได้เยอะมากครับ สุดท้ายโปรเจคนาฬิกาสำเร็จด้วยดี
หลังจากนั้นเพื่อให้มันเป็นอะไรที่มากกว่าโชว์เวลา โชว์วันที่ ก็เอามาพ่วงเข้ากับหลอดไฟ RGB LED เพื่อให้ปล่อยแสงตามช่วงเวลา จะได้ห้องที่เปลี่ยนอารมณ์ได้ตลอดเวลา แต่ยังไม่ประกอบเป็นกล่องไว้มีเวลาก่อนค่อยประกอบ
โปรเจคแรกสำหรับ MCU ก็ประสพความสำเร็จ ก็มาคิดต่อว่ากลับไปทำหุ่นยนต์อะไรดี จะทำหุ่นมีขาเดินเหมือนคนก็ไม่ค่อยจะคุ้มเท่าไหร่ เลยมาทำหุ่นยนต์ที่ใช้ล้อเอาแล้วกัน
ค้นหาในอินเทอร์เน็ตก็เจอหุ่นยนต์ต้นแบบจนได้ เป็น Sumo Robot หรือเรียกกันว่า Sumobot ครับ เป็นหุ่นยนต์สองล้อ ที่มีการแข่งขันกันทั่วโลกเลย กติกาไม่มีอะไรมากแค่ดันคู่แข่งออกจากสังเวียนการแข่งขันโดยที่เราไม่หลุดออกไปในเวลาที่กำหนดได้ก็ชนะแล้ว (พูดซะง่ายเลย) แต่ก็มีกฏในเรื่องขนาดของหุ่นที่กว้างและยาวไม่เกิน 10cm (Mini Sumo) น้ำหนักไม่เกิน 1/2 กิโลกรัม สูงได้ไม่จำกัด
ไว้จะมาอัพเดทเพิ่มเติมครับว่าหน้าตาของหุ่นที่ทำจะเป็นอย่างไร