Introduction
Last updated
Last updated
บอร์ด CorgiDude (คอร์กี้ดู๊ด) คืออะไร
ถ้าจะให้กล่าวเรื่องบอร์ดนี้ก็ต้องเท้าความกันเกี่ยวกับเรื่อง AI กันก่อน ในช่วงที่ผ่านมาหลาย ๆ ท่านคงอาจจะเคยได้ยินเรื่องราวเกี่ยวกับ AI (Artificial Inteligent) หรือที่แปลเป็นภาษาไทยได้ว่า “ปัญญาดิษฐ์” มีข่าวมากมายเกี่ยวกับการนำไปใช้ในเรื่องต่าง ๆ เช่น แข่งหมาล้อมชนะแชมป์โลกได้ สร้างหน้าผู้ชายเป็นผู้หญิง/ผู้หญิงเป็นผู้ชาย หรือจะนำมาแทนคนบ้างหล่ะ skynet จะยึดครองโลกบ้างหล่ะ ก็ว่ากันไป เรื่องเหล่านี้สะท้อนได้ว่าแต่ละคนมีทัศนคติเกี่ยวกับ AI แตกต่างกัน จริง ๆ แล้วปัญญาประดิษเป็นคำกว้าง ๆ ที่มีเนื้อหามาจากหลักสูตรในวิชาวิทยาการคอมพิวเตอร์ (ตอนผมเรียนยังเป็นวิชาเลือกด้วยซ้ำ) ที่มีเนื้อหาว่าด้วยการเขียนโปรแกรมนั้นฉลาด เหมือนกับการสร้างวิธีการ (Algorithm) ให้มันเพื่อแก้ไขปัญหาต่าง ๆ คล้ายกับการสร้างปัญญาให้คอมพิวเตอร์อะไรทำนองนั้น ในนั้นก็มีวิธีการต่าง ๆ มากมายเพื่อให้มันฉลาดขึ้นเช่น การค้นหาระยะทางที่สั้นที่สุด การเรียงลำดับ การค้นหาตามแนวกว้าง แนวลึก การทำ Machine Learning ตัวแบบโมเดลต่าง ๆ Neural Network, Support Vector Machine เยอะแยะไปหมด สรุปก็คือถ้าเราสามารถทำให้โปรแกรมฉลาดและแก้ไขปัญหาให้เราได้ก็นับเป็น AI แล้ว แม้แต่การเขียนเงื่อนไข วนรอบซ้ำ รวม ๆ กัน ก็นับเป็น AI เหมือนกัน (ขอแค่มันฉลาดแก้ปัญหาได้) แต่ถ้าลงรายละเอียดแบบลึก ๆ ว่าจะทำยังไงให้มันเก่ง มันดี เรียนรู้เอง อันนี้มันเป็นแขนงหนึ่งแตกออกมาให้เรียนกันยันจบด็อกเตอร์กันเลย
ภาพรวมของ AI (ภาพจาก https://thaikeras.com/2018/ai-ml-dl-relationship/ )
เมื่อก่อน (เมื่อก่อน ๆ ที AI ยังไม่บูม) เรื่องพวกนี้เป็นเรื่องที่ยาก มองเห็นภาพกันไม่ค่อยออก มีแต่เฉพาะในงานวิจัยเท่านั้น เพราะเมื่อก่อนเครื่องไม้เครื่องมือมันยังไม่ทันสมัย การประมวลผลตัว AI ที่เก่ง ๆ ต้องใช้ทรัพยากรณ์มหาศาล และใช้เวลานาน ๆ นานแบบเป็นปีถึงจะทำผลงานที่มีประสิทธิภาพออกมา และมันไม่คุ้มค่าในการทำ เลยไม่เป็นที่แพร่หลาย แต่การมาถึงของอุปกรณ์อย่างพวกการ์ดจอสมัยใหม่ ที่มีการประมวลผลแบบขนาน คือทำหลาย ๆ งานได้พร้อมกันในคราวเดียว ก็มาเปิดโลกของ AI โดยเฉพาะอย่างยิ่งในส่วนของการทำ Machine Learning ที่เป็นวิธีในการทำให้โปรแกรมเก่งขึ้นโดยการสอนข้อมูลเข้าไป มันก็เก่งขึ้นได้ เพราะพวกนี้ชอบการทำซ้ำ ๆ ยิ่งสอนเยอะก็ยิ่งฉลาด ถูกจริตกับการประมวลผลแบบขนานยิ่งนัก เราแยกข้อมูลกันประมวลผลได้เลย ไม่ต้องรอป้อนเข้าทีละอัน ทีนี้ความฉลาดของมันเลยเปลี่ยนจากหน้ามือเป็นหลังเท้าเลยก็ว่าได้ ตัวการ์ดจอมันพอหาซื้อได้ เข้าถึงได้ นักพัฒนาที่เก่ง ๆ สามารถพัฒนาขั้นตอนวิธีใหม่ ๆ เพื่อให้มันพัฒนาลำไปอีก ยุคหลังเราจึงเห็นได้ว่ามี AI เกิดขึ้นมามากมาย
ภาพแสดงให้เห็นถึงความแม่นยำของ AI ในการจำแนกภาพ เมื่อใช้ Deep Learning ที่รันใน GPU
ภาพจาก : https://blogs.nvidia.com/blog/2016/01/12/accelerating-ai-artificial-intelligence-gpus/
และก็เข้ามาสู่ยุคของ Edge AI / Edge Computing อย่างที่ได้กล่าวมา ในการประมวลผล AI นั้นเราจำเป็นต้องใช้การ์ดจอหรืออุปกรณ์เร่งการประมวลผล ที่แรงเร็ว มันจึงหนีไม่พ้นการทำเซิฟเวอร์และต้องเปิดไว้ตลอดเวลา จึงเป็นการลำบากที่เราจะพกพาความฉลาดนี้ติดตัวไปไหนมาไหน มันกลับกลายเป็นว่า ถ้าอยากใช้งานก็ต้องต่ออินเตอร์เน็ต ส่งข้อมูลไปประมวลผลแล้วค่อยส่งกลับมายังอุปกรณ์ปลายทาง จากที่ว่าประมวลผลได้รวดเร็ว ก็กลายเป็นช้าไป งานบางอย่างที่ต้องใช้ AI ตัดสินใจแบบทันทีก็ทำไม่มัน ยกตัวอย่างทำรถวิ่งอัตโนมัติ ตรวจเจอไฟแดงกว่าจะส่งข้อมูลไปประมวลผลส่งกลับมา รถชนกลางแยกพอดี นี่จึงเป็นปัญหาที่ทำให้เกิด AI on Edge ขึ้นมา คือการนำการประมวลผลมาไว้ที่อุปกรณ์ปลายทาง (Edge) แทนการทำในเซิฟเวอร์ ซึ่งก็ต้องขอบคุณเทคโนโลยีอีกนั้นแหละที่ทำให้เราสามารถผลิตไมโครชิป (Microchip) ที่ประมวลผลแบบขนานได้เหมือนกับการ์ดจอ ถึงจะไม่ได้เร็วเท่า แต่มันก็เอามาทำ AI ได้ ถึงแม้จะไม่ครอบคลุมเหมือนเครื่องใหญ่ ๆ แต่มันก็พกพาไปไหนมาไหนได้ ยกตัวอย่างก็เช่นพวกโทรศัพท์มือถือรุ่นใหม่ ๆ ที่บอกว่ากล้อง AI ก็ล้วนเอาชิปพวกนี้ทั้งสิ้น
ภาพการประมวลผลแบบ Edge AI ที่นำการประมวลผลไปไว้ยังอุปกรณ์ปลายทาง
ภาพจาก : Juven
CorgiDude ก็เป็นหนึ่งในอุปกรณ์เหล่านั้น (กริ่นซะยาว) มีความสามารถในการเร่งการประมวลผลคล้ายกับการ์ดจอ แต่ถอดออกมาเฉพาะบางส่วน ทำให้สามารถทำงาน AI บางอย่างได้เช่น ตรวจจับใบหน้า รู้จำใบหน้า จำแนกวัตถุ รู้จำเสียง ค้นหาวัตถุได้ เป็นต้น ซึ่งทำงานในตัวอุปกรณ์เองได้เลยไม่ต้องส่งข้อมูลไปไหน และความเร็วยังอยู่ในระดับดีน่าพอใจเลยทีเดียว (จำแนกรูปขนาด 224x224 ในระดับ 10 - 20 รูปต่อวินาทีได้) หัวใจหลักของมันคือชิป Kendryte K210 มีความเร็วในการประมวลผลอยู่ที่ 1 TOPS ที่ 108MHz + Flash 16Mbyte (Tera Operations Per Second : 1 ล้านล้าน การประมวลผล ใน 1 วินาที) แต่มันกินไฟแค่ 0.3W ซึ่งชิปตัวนี้ถูกผลิตขึ้นโดยบริษัท Canaan ที่หลัก ๆ ทำงานด้าน Blockchain (ชิปขุด Bitcoin ประมาณนั้น) ใช้สถาปัตยกรรม RISC-V Dual Core 64bit, with FPU ขนาด 28nm ในชิปมีหน่วยประมวลผล KPU สำหรับการทำ Convolutional Neural Network (CNN) บนอุปกรณ์ฮาร์ดแวร์ สำหรับทำ Machine Learning ในขณะที่ตัวมันเองกินไฟแค่ 3.3v นอกจากนั้นมันยังมีส่วนประกอบอื่นในการเป็น Microcontroller ไว้ครบเช่น GPIO, UART, SPI และพอร์ดสำหรับต่อกล้องกับจอเอาไว้ให้ครบเลยทีเดียว
ภาพแสดงโครงสร้างของชิป Kendryte K210
ชิปตัวนี้ถูกบริษัท Sipeed นำมาลงโมดูลให้ใช้งานง่ายมากขึ้น มีการใส่ชิป ESP8285 ทำให้สามารถต่อ WiFi เชื่อมต่ออินเตอร์เน็ตได้ มีการพัฒนา SDK ต่อยอดจากเดิมเพื่อเพิ่มประสิทธิภาพ และพัฒนา IDE ต่อจาก OpenMV เพื่อให้ micropython บนอุปกรณ์ตัวนี้ได้ (เดี๋ยวรายละเอียดแบบลึก ๆ เกี่ยวกับ Sipeed จะมาเล่าให้ฟังอีกรอบ)
CorgiDude นั้นนอกจาก Chip AI แล้วยังได้ถูกออกแบบมาสำหรับการต่อและใช้งานเกี่ยวกับงานด้าน Microcontroller IoT ด้วย
ช่องต่อ Input พอร์ตสำหรับต่อเซนเซอร์ที่อ่านค่าได้ เช่นอุณหภูมิ ความชื้น ความเร็วความเร่ง แรงดันไฟฟ้า โดยจะมีทั้งหมด 2 ช่อง (INPUT1 และ INPUT2) ช่องละ 5 GPIO นับรวมไฟเลี้ยง 3.3v รวมเป็น 7 Pin รวมกันแล้วสามารถใช้ GPIO ได้ทั้งหมด 10 Pin
ช่องต่อ Output มีลักษณะคล้ายกันกับ Input แต่ใช้สำหรับต่ออุปกรณ์ Output เช่นควบคุมมอเตอร์ เซอร์โวมอเตอร์ ปิดเปิด Relay โดยช่อง Output จะมี 2 ช่อง คือ OUTPUT1 และ OUTPUT2 แต่ละช่องจะมี GPIO ทั้งหมด 4 ตัว และไฟเลี้ยง 2 ขา รวมเป็น 6 ขา รวมแล้วใช้ GPIO ได้ทั้งหมด 8 Pin ด้วยกัน
ช่องต่อกล้อง จะมีคำว่า “CAMERA” เขียนกำกับไว้ โดยกล้องที่รองรับจะเป็นรุ่น OV2640 24Pin
ช่องต่อจอภาพ จอภาพที่ต่อได้จะเป็นรุ่น ST7789 การต่อคล้ายกันกับการต่อกล้อง คือจะมีคอนเน็คเตอร์เขียนว่า “DISPLAY” กำกับเอาไว้
ช่องต่อไฟเลี้ยง ไฟเลี้ยงบอร์ดสามารถใช้ไฟจาก USB 5V หรือเลือกเสียบ Adaptor ที่จ่ายไฟเลี้ยงได้ตั้งแต่ 6-18V DC โดยใช้แจ็คขนาดประมาณ 2x5.5mm (หาซื้อได้ทั่วไป)
ปุ่มกด
ปุ่มกดในบอร์ดจะมีทั้งหมด 2 ปุ่มคือ
RESET ใช้สำหรับกด reset บอร์ดให้เริ่มทำงานใหม่
BOOT ใช้สำหรับกดเพื่อควบคุมการเข้า Boot โหมด หรือ สั่งทำงานต่าง ๆ โดยต่อไว้กับ GPIO 16
ช่องเสียบ Micro-SD ใช้สำหรับการโหลดไฟล์หรือบันทึกไฟล์ต่าง ๆ
หลอดไฟ RGB สำหรับแสดงสถานะต่าง ๆ
สำหรับเรื่องราวของบอร์ด CorgiDude คร่าว ๆ ก็จะประมาณนี้ ในบทความหน้าเราจะมาลงรายละเอียดในเรื่องของการใช้งานและพอร์ตแต่ละอันกันครับ