# Introduction

**บอร์ด CorgiDude (คอร์กี้ดู๊ด) คืออะไร**

ถ้าจะให้กล่าวเรื่องบอร์ดนี้ก็ต้องเท้าความกันเกี่ยวกับเรื่อง AI กันก่อน ในช่วงที่ผ่านมาหลาย ๆ ท่านคงอาจจะเคยได้ยินเรื่องราวเกี่ยวกับ AI (Artificial Inteligent) หรือที่แปลเป็นภาษาไทยได้ว่า **“ปัญญาดิษฐ์”** มีข่าวมากมายเกี่ยวกับการนำไปใช้ในเรื่องต่าง ๆ เช่น แข่งหมาล้อมชนะแชมป์โลกได้ สร้างหน้าผู้ชายเป็นผู้หญิง/ผู้หญิงเป็นผู้ชาย หรือจะนำมาแทนคนบ้างหล่ะ skynet จะยึดครองโลกบ้างหล่ะ ก็ว่ากันไป เรื่องเหล่านี้สะท้อนได้ว่าแต่ละคนมีทัศนคติเกี่ยวกับ AI แตกต่างกัน จริง ๆ แล้วปัญญาประดิษเป็นคำกว้าง ๆ ที่มีเนื้อหามาจากหลักสูตรในวิชาวิทยาการคอมพิวเตอร์ (ตอนผมเรียนยังเป็นวิชาเลือกด้วยซ้ำ) ที่มีเนื้อหาว่าด้วยการเขียนโปรแกรมนั้นฉลาด เหมือนกับการสร้างวิธีการ (Algorithm) ให้มันเพื่อแก้ไขปัญหาต่าง ๆ คล้ายกับการสร้างปัญญาให้คอมพิวเตอร์อะไรทำนองนั้น ในนั้นก็มีวิธีการต่าง ๆ มากมายเพื่อให้มันฉลาดขึ้นเช่น การค้นหาระยะทางที่สั้นที่สุด การเรียงลำดับ การค้นหาตามแนวกว้าง แนวลึก การทำ Machine Learning ตัวแบบโมเดลต่าง ๆ Neural Network, Support Vector Machine เยอะแยะไปหมด สรุปก็คือถ้าเราสามารถทำให้โปรแกรมฉลาดและแก้ไขปัญหาให้เราได้ก็นับเป็น AI แล้ว แม้แต่การเขียนเงื่อนไข วนรอบซ้ำ รวม ๆ กัน ก็นับเป็น AI เหมือนกัน (ขอแค่มันฉลาดแก้ปัญหาได้) แต่ถ้าลงรายละเอียดแบบลึก ๆ ว่าจะทำยังไงให้มันเก่ง มันดี เรียนรู้เอง อันนี้มันเป็นแขนงหนึ่งแตกออกมาให้เรียนกันยันจบด็อกเตอร์กันเลย

![](https://ff.lnwfile.com/_/ff/_raw/bg/bf/61.jpg)

ภาพรวมของ AI (ภาพจาก <https://thaikeras.com/2018/ai-ml-dl-relationship/> )

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

![](https://ff.lnwfile.com/_/ff/_raw/20/aq/3e.gif)

ภาพแสดงให้เห็นถึงความแม่นยำของ 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 ก็ล้วนเอาชิปพวกนี้ทั้งสิ้น

![](https://ff.lnwfile.com/_/ff/_raw/ow/je/l7.png)

ภาพการประมวลผลแบบ 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 และพอร์ดสำหรับต่อกล้องกับจอเอาไว้ให้ครบเลยทีเดียว

![](https://ff.lnwfile.com/_/ff/_raw/xc/1l/x1.png)

ภาพแสดงโครงสร้างของชิป Kendryte K210

ชิปตัวนี้ถูกบริษัท Sipeed นำมาลงโมดูลให้ใช้งานง่ายมากขึ้น มีการใส่ชิป ESP8285 ทำให้สามารถต่อ WiFi เชื่อมต่ออินเตอร์เน็ตได้ มีการพัฒนา SDK ต่อยอดจากเดิมเพื่อเพิ่มประสิทธิภาพ และพัฒนา IDE ต่อจาก OpenMV เพื่อให้ micropython บนอุปกรณ์ตัวนี้ได้ (เดี๋ยวรายละเอียดแบบลึก ๆ เกี่ยวกับ Sipeed จะมาเล่าให้ฟังอีกรอบ)

![](https://ff.lnwfile.com/_/ff/_raw/b4/74/ya.jpg)

CorgiDude นั้นนอกจาก Chip AI แล้วยังได้ถูกออกแบบมาสำหรับการต่อและใช้งานเกี่ยวกับงานด้าน Microcontroller IoT ด้วย

![](https://ff.lnwfile.com/_/ff/_raw/9l/nm/a2.png)

* **ช่องต่อ 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 คร่าว ๆ ก็จะประมาณนี้ ในบทความหน้าเราจะมาลงรายละเอียดในเรื่องของการใช้งานและพอร์ตแต่ละอันกันครับ
