Tags:
Node Thumbnail

คอมพิวเตอร์ขนาดเล็กที่สมบูรณ์ในชิปตัวเดียว หรือใช้ชิปประกอบร่วมกันไม่กี่ตัวในกลุ่มไมโครคอนโทรลเลอร์ (microcontroller) หรือ system-on-chip ทั้งหลายได้ครับความนิยมมานานในงานควบคุมโรงงานหรือภาคการศึกษาและวิจัยต่างใช้ชิปในสถาปัตยกรรมที่ความซับซ้อนต่ำ และใช้ผลิตชิปกินพลังงานต่ำกันมาเป็นเวลานานนับสิบปี

โลกของคอมพิวเตอร์ฝังตัวที่ใช้ชิปเหล่านี้ก็พัฒนาขึ้นพร้อมกับเทคโนโลยีการผลิตที่ไปไกลขึ้นเรื่อยๆ วันนี้ชิปกินพลังงานต่ำเช่น ARM มีชุดคำสั่งที่ซับซ้อนไม่ต่างจากพีซีเต็มรูปแบบเมื่อหลายปีก่อน ปีที่แล้วอินเทลก็ออกชิป x86 ในตระกูล Quark ที่เตรียมบุกตลาด

No Description

อินเทลเลือกที่จะสาธิตชิป Quark ด้วยการร่วมมือกับโครงการ Arduino เพื่อสร้างบอร์ด Galileo ขึ้นมา บอร์ดราคา 60 ดอลลาร์ ที่ภายในเป็นชิป x86 แบบ 32 บิตพร้อมหน่วยความจำแฟลชและแรมในตัว ทำให้มันเป็นพีซีสมบูรณ์แบบในเครื่องเดียว

โครงการ Arduino นั้นแต่เดิมเลือกใช้ชิป AVR ของบริษัท Atmel ที่ประสิทธิภาพต่ำแต่ราคาถูกมาปรับปรุงกระบวนการอัพโหลดซอฟต์แวร์ขึ้นชิปจากเดิมต้องใช้เครื่องเฉพาะ มาประกอบเข้ากับ IDE เพื่อให้ง่ายต่อการพัฒนา นักพัฒนาต้องจำเพียงแค่ว่าใช้บอร์ดรุ่นไหนและต้องการอ่านหรือเขียนค่าออกไปยังขาใด ก็สามารถเลือกตัวแปรแล้วส่งค่าออกไปได้ทันที เทียบกับโปรแกรมเมอร์ยุคเก่าที่ต้องเปิดตารางหาค่าหน่วยความจำของขาแต่ละขาเพื่อส่งค่าหรืออ่านค่าแล้ว Arduino พัฒนาได้ง่ายจนกระทั่งใช้เรียนรู้ในวิชาเรียนระดับมัธยมได้

แม้ว่าจะทำงานได้ง่าย ทำให้คนทั่วไปเข้าถึงโลกของคอมพิวเตอร์เพื่อการควบคุมอุปกรณ์ไฟฟ้า หรืออ่านค่าจากเซ็นเซอร์อุณหภูมิหรือความชื้นได้โดยง่าย แต่ข้อจำกัดสำคัญของ Arduino รุ่นเดิมๆ ก็คือพลังประมวลผลที่จำกัด การประมวลผลที่ซับซ้อน การเชื่อมต่ออินเทอร์เน็ต กลายเป็นงานที่ยาก บอร์ดเสริมเพื่อเชื่อมต่ออินเทอร์เน็ตกลับมีความซับซ้อนสูง ผู้ผลิตจำนวนมากรวมถึงตัว Arduino เองก็รู้ถึงปัญหานี้ดีและพยายามแก้ปัญหาด้วยการออกแบบบอร์ดที่มีชิปพลังประมวลผลสูงมาประกบ เช่น Arduino Yun หรือ Arduino TRE ด้วยความที่บอร์ดเหล่านี้มีชิปแยกกัน ทำให้หลายตั้งต้องเขียนโปรแกรมสองแบบ คือเขียนโปรแกรมบนชิป AVR บน Arduino IDE และเขียนโปรแกรมบนชิป ARM หรือ MIPS อีกครั้ง

alt="upic.me"

Intel Galileo กลับเลือกเส้นทางที่ต่างออกไป อินเทลตัดชิป AVR ออกไปจากบอร์ด แล้วใช้ชิป Quark เข้ามาแทนทั้งหมด พร้อมกับเพิ่มขา GPIO (ขาสำหรับอ่านค่าระดับสัญญาณไฟ หรือส่งค่าออก) ด้วยชิปเล็กๆ สำหรับการเพิ่มขาที่ไม่มีพลังประมวลผลใดๆ พร้อมกับปรับแต่ง Arduino IDE รุ่นของตัวเองขึ้นมาเฉพาะ

เมื่อเปิดบอร์ดขึ้นมาติดตั้งไดร์เวอร์และเปิด IDE สำเร็จแล้ว (ผมเองมีปัญหาระหว่างเปิด IDE บนวินโดวส์ แต่บนลินุกซ์ไม่มีปัญหาอะไร) ก็จะได้ IDE เหมือน Arduino ทุกประการ รวมถึงฟังก์ชั่น setup และ loop ตัวอย่างพื้นฐานเช่น Blink นั้นก็รันได้ทันที

กระบวนการภายในของ Galileo มันคือลินุกซ์ Yocto ที่ใช้ชุดซอฟต์แวร์ busybox (แบบเดียวกับใน OpenWRT และแอนดรอยด์) ทางอินเทลดัดแปลงทั้งตัวลินุกซ์และตัว IDE ทำเหมือนว่าโค้ดกำลังรันอยู่บนไมโครคอนโทรลเลอร์ เราสามารถเขียนอ้างถึง "ขา" ต่างๆ ของบอร์ดได้ตามปกติ

แต่ภายในแล้ว โค้ดที่เราเขียนลงไปจะกลายเป็นโปรเซสบนลินุกซ์ที่รันบนบอร์ด Galileo อีกทีหนึ่ง ด้วยความที่เป็นลินุกซ์เต็มรูปแบบ ทำให้เราสามารถสั่งฟังก์ชั่น system หรือ printf ได้

การเชื่อมต่อกับคอมพิวเตอร์ของเราเมื่อต่อสาย USB ครั้งแรก เครื่องของเราจะมองเห็น Galileo เป็นพอร์ตซีเรียลขึ้นมาพอร์ตหนึ่งสามารถอัพเดตเฟิร์มแวร์และลงเขียนโปรแกรมใหม่ลงไปได้ แต่หากต้องการใช้ความสามารถเครือข่ายบนบอร์ดจะบูตจาก micro SD แทน โดยดาวน์โหลดเฟิร์มแวร์ใหม่มาเอง การติดตั้งไม่ใช่ใช้ท่าพิสดารเช่นการติดตั้งลินุกซ์ทั่วไป เราต้องใช้ micro SD ที่ฟอร์แมตเป็น FAT ปกติมาแตกไฟล์ 7z วางลงไป จากนั้นเสียบ micro SD แล้วรันต่อได้

เมื่อติดตั้งลินุกซ์ตัวเต็มลงในบอร์ดแล้วความสามารถต่างๆ ที่มีจะสามารถใช้ได้ครบ เราสามารถรัน SSH server ขึ้นมารอรับการเชื่อมต่อผ่านเครือข่าย หรืออาจจะซื้อการ์ด Wi-Fi มาติดตั้งเพิ่มได้บนช่อง mini PCIe

การสั่งคำสั่งต่างๆ เช่น ให้ขอไอพีจากเราท์เตอร์ อาจจะสั่ง system บนโค้ดที่คอมไพล์จาก Arduino IDE ไปเรื่อยๆ ได้แต่เราสามารถเชื่อมต่อกับแอพพลิเคชั่นของเราผ่านพอร์ตซีเรียลได้อยู่แล้ว จึงมีคนเขียน Poor Man's serial มาให้ใช้งาน ทำให้เราสามารถพิมพ์คำสั่งลินุกซ์ผ่านคอนโซลซีเรียลบน Arduino IDE ได้ทันที

ขาต่างๆ ของบอร์ด Galileo นั้นเป็นอุปกรณ์ภายใน สามารถเรียกอ่านและเขียนผ่านไฟล์เสมือน /sys/device/virtual/gpio/gpio[หมายเลขขา] ได้เลย แม้ว่าเวลาที่เราเขียนค่าขาต่างๆ ผ่าน Arduino IDE เช่นหากเราอยากเขียนค่า "1" ลงในขา 40 ของบอร์ด เราสามารถทำได้ง่ายๆ

cd /sys/device/virtual/gpio/gpio40
echo "out" > direction
echo "1" > value

ตัว Arduino IDE รุ่นของแปลงโค้ดที่เคยเขียนขึ้นเพื่อทำงานบนไมโครคอนโทรลเลอร์ให้กลายเป็นโปรเซสบนลินุกซ์ เมื่ออัพโหลดลงไปมันจะรันทันที และตัวโปรแกรมจะเปิดไฟล์พอร์ต GPIO ทั้งหมด

บทสรุป

ความที่ Galileo อยู่ตรงกลาง ระหว่างคอมพิวเตอร์ขนาดเล็ก เช่น Raspberry Pi หรือ Cubieboard ขณะเดียวกันก็มีราคาแพงกว่าบอร์ดราคาถูกอย่าง Arduino อย่างมาก คำถามสำคัญคือ Galileo จะเหมาะกับงานประเภทใด

ในงานการใช้ประกอบการเรียน Galileo จะเหมาะมากกับการสอนเด็กๆ ที่ยังไม่พร้อมจะออปติไมซ์ซอฟต์แวร์มากมายนัก การเชื่อมต่ออุปกรณ์ภายนอกกับคอมพิวเตอร์ที่มีแรมถึง 256 MB ทำให้เด็กๆ สามารถจินตนาการได้เต็มที่ ไม่ถูกจำกัดด้วยสเปคที่แม้แต่ผู้ใหญ่ที่มีความเชี่ยวชาญบางครั้งยังปวดหัว แต่การใช้ Galileo เพื่อการสอนก็ควรระวังว่าอย่าใช้กับเด็กเล็ก เพราะบอร์ดร้อนพอสมควร

แต่สำหรับการใช้งานในอุตสาหกรรม ด้วยราคาที่แพงกว่าคอมพิวเตอร์ในระดับใกล้กันอย่าง Raspberry Pi แต่ซีพียูไม่ได้แรงกว่า Galileo น่าจะเป็นตัวเลือกสำหรับนักพัฒนาที่มีโครงการที่ซับซ้อนอยู่บน Arduino อยู่แล้ว คุณอาจจะมีบอร์ด Arduino พร้อมอุปกรณ์เสริมที่พบว่าทำงานได้ยากเพราะพลังประมวลผลต่ำ หรือต้องการเชื่อมโครงงาน Arduino เข้ากับเน็ตเวิร์ค ที่หากซื้อบอร์ดแลนมาเสริมก็มีราคาแพง Galileo อาจจะเป็นทางเลือกที่ดีกว่า เพราะความเข้ากันได้กับ Arduino ที่ดี ใช้โค้ดร่วมกันได้ค่อนข้างมาก น่าจะลดเวลาการปรับแต่งโค้ดไปได้ แต่สำหรับการเริ่มโครงการใหม่ที่ต้องการเชื่อมต่อเครือข่ายแน่นอน ต้องการพลังประมวลผลสูงๆ การเลือกบอร์ดที่ตรงงานกว่าเช่น Raspberry Pi น่าจะคุ้มค่ากว่า

สุดท้ายขอบคุณทางอินเทลที่ส่งบอร์ดนี้มาให้ทดสอบครับ (ผมร้องขอไปทางอีเมลเอง) ตอนนี้ไม่มีข้อมูลว่ามีขายในเมืองไทยหรือไม่ แต่บอร์ดที่ส่งมาให้ผมมีสติกเกอร์รับประกันของ Ingram Micro

Get latest news from Blognone

Comments

By: hisoft
ContributorWindows PhoneWindows
on 23 July 2014 - 02:17 #724370
hisoft's picture

การ่วม

กา => การ

ที่ด้วยชิปเล็กๆ

?

ใช้ท่าพิศดาร

พิศดาร => พิสดาร

ลงในบอร์ต

บอร์ต => บอร์ด

ความสาารถ

สาารถ => สามารถ

By: iambodin
Ubuntu
on 26 July 2014 - 17:51 #725609 Reply to:724370

หรือ system-on-chip ทั้งหลายได้ครับความนิยม

หรือ system-on-chip ทั้งหลายได้รับความนิยม

By: จักรนันท์ on 28 July 2014 - 03:59 #725810 Reply to:724370

ทำให้หลายตั้งต้องเขียนโปรแกรมสองแบบ => หลายครั้ง

By: Ace
iPhoneWindows PhoneAndroidWindows
on 23 July 2014 - 02:29 #724375

มีขายที่ Inex ครับ แพงเอาการเลย ทีแรกว่าจะซื้อมาลองเล่นซะหน่อย (3,424 บาท) ถ้าไม่เกิน 2 พันนี่น่าสนใจทีเดียว

By: Taopoon
AndroidWindows
on 23 July 2014 - 03:28 #724393 Reply to:724375
Taopoon's picture

ที่ gravitech จัดโปรอยู่ครับ เหลือสองพันกว่าบาท

By: lew
FounderJusci's WriterMEconomicsAndroid
on 23 July 2014 - 06:27 #724405 Reply to:724393
lew's picture

โอ้ว เพิ่งเคยเห็น gravitech แหล่งใหม่!


lewcpe.com, @wasonliw

By: Eagle Blue Eyes
ContributorWindows PhoneAndroidSymbian
on 23 July 2014 - 08:53 #724423
Eagle Blue Eyes's picture

ก่อนหน้านี้งาน YECC ของ NSTDA ใช้ PIC มาเป็นเวลานาน ปีนี้เปลี่ยนบอร์ดมาเป็นตัวนี้
คงจะได้เห็นโครงงานใหม่ๆจากเด็กมัธยมเยอะขึ้น

By: tlenetto
AndroidUbuntuWindows
on 23 July 2014 - 09:44 #724441
tlenetto's picture

บอร์ดนี้มี ADC รึเปล่าครับ ถ้ามี ADC กี่บิตครับ

By: lew
FounderJusci's WriterMEconomicsAndroid
on 23 July 2014 - 10:46 #724472 Reply to:724441
lew's picture

มี 12 บิตครับ


lewcpe.com, @wasonliw

By: tlenetto
AndroidUbuntuWindows
on 24 July 2014 - 11:35 #724911 Reply to:724472
tlenetto's picture

ขอบคุณครับ

By: javaboom
WriteriPhone
on 23 July 2014 - 22:26 #724731
javaboom's picture

เมื่อหลายเดือนที่ผ่านมา เหมือนมีทีมวิจัยทำเป็น Beowulf cluster หน้าตาประมาณนี้


My Blog

By: garmin
Android
on 25 July 2014 - 10:54 #725241

กำลังแกะสนิมออก หาโครงการ MCU มาทำ home automation น่าสนใจมาก ใช้กันทุกบ้าน

กล้อง cctv กับ motion sensor

No Description

PIR Motion Alarm GPIO Project Kit for Raspberry Pi

By: xbird007
iPhoneWindows PhoneAndroidUbuntu
on 26 July 2014 - 13:14 #725525

[ASK] ใช้เวลาบูตนานไหมครับ

By: tlenetto
AndroidUbuntuWindows
on 27 July 2014 - 14:18 #725729
tlenetto's picture

วันก่อนเห็นมีข่าวว่ามี V2 ออกมาแล้วด้วยนะครับ