ผมได้ NODE:BIT รุ่น developer preview มาจากพี่หนึ่ง LamLoei ตัวบอร์ดมีขนาดเล็กกระทัดรัด มาพร้อมกับ module E73 ภายในเป็นชิป nRF51822 Bluetooth 4.2 มีจุดต่อเสาอากาศภายนอกได้ แถมประหยัดพลังงานด้วย

บนบอร์ดมี port micro usb สำหรับเขียนโปรแกรมพร้อม pin GPIO อีกชุดใหญ่สามาถเอาไปต่อกับ sensor ต่างๆ ได้

ตัว NODE:BIT มี Flash mode เสียบเข้าเครื่องคอมพิวเตอร์แล้วจะเห็นเป็น USB Drive สามารถอัพเดท bootloader และ firmware ง่ายๆ เพียงแค่ copy ไฟล์ firmware (.hex) ลงไปเท่านั้น ง่ายมากๆ

หาก flash bootloader ของ Microbit ลงไป ตัว NODE:BIT จะแปลงร่างกลายเป็น Microbit ทันที ทำให้ใช้เครื่องมือเขียนโค้ดแบบ Block อย่าง Microsoft Makecode ได้เลย

นอกจากนี้ยังใช้ bootloader ของ Espruino ได้ด้วย

แปะ video review ไว้นิดนึงครับ

แวะมางานเปิดตัว KBIDE ที่ Pinn Creative Space พระราม 9 งานนี้มีเปิดตัว IDE ตัวใหม่สำหรับบอร์ด KidBright, KidBright Compatible และ ESP32 ตัว IDE ตัวใหม่นี้รองรับ Board KidBright และ developer board อย่าง ESP32 ด้วย

มาดูหน้าตากัน เปิดมาครั้วแรกเจอให้เลือกเลยว่าเป็น Kid Level หรือ Developer จ๋าได้

หน้าจอแบบ block

หน้าจอแบบ developer

มี Serial Monitor ให้ด้วยนะ ไม่พลาดการ debug แน่นอน

สำหรับท่านที่ไม่ได้ใช้ KidBright ก็เลือกบอร์ดที่จะใช้งานได้ ผ่าน Board Manager

มีตัวอย่างให้ด้วยนะ

อ้อและที่สำคัญมี block ใหม่ๆ ที่น่าสนใจอีกเยอะเลย

สำหรับท่านที่สนใจ ดาวน์โหลดกันได้ที่ release page ช่วยกัน contribute ได้ที่ https://github.com/MakerAsia/KBProIDE

ผมได้มีโอกาสเข้าร่วมงาน Unity Developer Day : Bangkok 2019 ครั้งนี้ถือว่าเป็นครั้งแรกที่จัด Unity Developer Day ในประเทศไทย นำทีมโดย Technology Evangelist จาก Unity Technologies มาอัพเดท Road Map การพัฒนา Unity ในปี 2019 พร้อมอัพเดทฟีสเจอร์ใหม่และเปิดเผยเทคนิคต่างๆ หลายๆ ตัว ไม่ว่าจะเป็น เทคโนโลยีใหม่อย่าง Data-Oriented Technology Stack (DOTS) ที่มี burst compiler แปลงภาษา C# ไปเป็น Assembly code ให้เลย การทำ Realtime Ray Tracing สามารถ render แบบ realtime ได้ การใช้งาน Shader Graph ทำให้แสงเงาของภาพและแอนิเมชั่นสมจริงมากยิ่งขึ้น ตัวอย่างการพัฒนาเกมส์ FPS ภายในงานมีพื้นที่ให้คำปรึกษานักพัฒนาเกมส์และแอนิเมชั่นด้วย งานนี้มีนักพัฒนาไทยและต่างชาติเข้าร่วมกว่า 120 คน

สำหรับใครที่พลาดงานนี้ไม่ต้องเสียใจ ดูวิดีโองาน Unity GDC 2019 ย้อนหลังได้เนื้อหาเท่ากันครับ

CircuitPython และ MicroPython เหมือนหรือแตกต่างกันอย่างไร CircuitPython ก็ใช้ภาษา Python เหมือนกันกับ MicroPython ใช้เครื่องมือ IDE ก็เหมือนกัน และยังทำงานบน Embedded System เหมือนกันด้วย ครั้งนี้ถือโอกาสมาอธิบายเพิ่มเติมว่า CircuitPython แตกต่างจาก MicroPython อย่างไร CircuitPython พัฒนามาจาก MicroPython ที่เน้นให้การใช้งานภาษา Python สำหรับงาน Embedded System โดยปรับปรุงภาษาและการใช้งานให้ง่ายขึ้น มีชุดคำสั่งที่กระชับเข้าใจง่าย ทำให้ CircuitPython เหมาะสำหรับคนที่เริ่มต้นศึกษาภาษา Python สำหรับงาน Embedded System CircuitPython พัฒนาโดย Adafruit Industries ฮาร์ดแวร์ที่รองรับส่วนใหญ่เป็นฮาร์ดแวร์ที่ผลิดโดย Adafruit เป็นหลัก

CircuitPython รองรับชิป Atmel SAMD21 หรือที่เราเรียกว่า M0 และยังมีรุ่นที่รองรับ ESP8266 ด้วย สำหรับ developer board ในประเทศไทย บอร์ด Chili สามารถพัฒนาโปรแกรมด้วย CircuitPython ได้เช่นกัน

สักษณะการทำงาน

  • CircuitPython มีลำดับการทำงานของไฟล์อย่างชัดเจน ที่ให้เราสามารถแยกไฟล์ออกมาเป็นไฟล์ต่างๆ ได้
  • ไฟล์ boot.py หรือ settings.py จะทำงานครั้งแรกครั้งเดียวเมื่อพอร์ด USB เริ่มทำงาน
  • code.py หรือ main.py จะทำงานทุกครั้งที่ reload จนกระทั่งจบการทำงาน จากนั้น vm และ hardware จะเริ่มต้นการทำงานใหม่ ทำให้คุณไม่สามารถตรวจสอบสถานะของ code.py ได้จาก REPL
  • หลังจาก code.py ทำงานเสร็จ จึงจะสามารถใช้งาน REPL ได้

API สำหรับเรียกใช้งาน

CircuitPython มี API สำหรับ hardware ทั่วไป เช่น audioio, analogio, busio, digitalio, pulseio, touchio, microcontroller, board, bitbangio ไม่มี machine API ใน Atmel SAMD21

ถ้าคุณเพิ่งเริ่มต้นศึกษา สามารถเริ่มต้นศึกษาได้ทั้ง 2 ภาษา แต่ CircuitPython ออกแบบมาให้ง่ายสำหรับผู้เริ่มต้น หากต้องการใช้ CircuitPython สามารถศึกษาเพิ่มเติมได้ที่ CitcuitPython Overview หรือ CircuitPython Essentials สำหรับ MicroPython ศึกษาเพิ่มเติมได้ที่ MicroPython Document

บอร์ด Chili เราสามารถพัฒนาซอฟต์แวร์ฝังตัวโดยใช้ภาษา C บน Arduino และ Python บน CircuitPython เพื่อใช้ในการพัฒนาได้ หลายท่านอาจจะไม่คุ้นกับ CircuitPython ว่าคืออะไร CircuitPython เป็น MicroPython ของค่าย Adafruit พัฒนาต่อจาก MicroPython พัฒนาขึ้นมาเพื่อรองรับฮาร์ดแวร์ของ Adafruit โดยเฉพาะ และยังมี Python Module ที่ออกมารองรับฮาร์ดแวร์และเซนเซอร์ต่างๆ ของ Adafruit อีกด้วย

บอร์ด Chili มีความสามารถในการใช้ CircuitPython เหมือนกันและยังสามารถใช้ Module ของ CircuitPython ที่พัฒนาโดย Adafruit ได้ด้วย วิธีเขียน CircuitPython สามารถทำได้ 2 วิธี คือ เขียน code และ save ลงบนตัวบอร์ด หรือเขียนโค้ดผ่าน REPL มาลองกัน

ก่อนอื่นเราต้องมีไฟล์ UF2 เพื่อทำให้บอร์ด Chili เข้าโหมดการเขียนโค้ดด้วย CircuitPython ก่อน ให้ดาวน์โหลด ไฟล์ chili_circuitpython.uf2 ที่ git repository ของ Gravitech จากนั้น เสียบสาย USB เข้าไปที่บอร์ด Chili และเสียบเข้ากับเครื่องคอมพิวเตอร์ จากนั้นกดปุ่ม reset 2 ครั้ง ตัว Neopixel จะเปลี่ยนเป็นสีเขียว และมี Storage โผล่ขึ้นมา ชื่อ CHILLIBOOT

จากนั้นให้ Copy ไฟล์ chili_circuitpython.uf2 ไปยัง drive ที่ชื่อ CHILLIBOOT ตัวบอร์ดจะ reset และ boot ใหม่ โดยมี Storage ขื่อ CIRCUIPY ขึ้นมาแทน

IDE ที่เราจะใช้คือ MuEditor ให้ดาวน์โหลด IDE มาเตรียมไว้ เปิด IDE เปลี่ยนโหมดเป็น Adafruit CircuitPython

จากนั้นก็ลงมือเขียนโค้ดกันได้

อ้อเกือบลืม ใน Git Repository ของ Gravitech มี Bundle Library ของ CircuitPython มาด้วย ไม่ต้องกลัวว่าจะไม่มี Library ใช้งาน

GravitechThai ออก developer board ตัวใหม่ชื่อ Chili ตัวบอร์ดมีสีแดงสด มีขนาดเล็กคล้ายกับ Arduino Nano มาพร้อมกับ MCU Atmel SAMD21 ใช้สถาปัตยกรรม ARM Cortex-M0+ แบบ 32 bits ความเร็วการประมวลผล 48 MHz มี Flash 256KB และ RAM 32KB ภายในชิปมี USB-to-Serial programe กับ debug ได้ มี GPIO 24 ขา เป็น PWM ได้ทุกขา มีไฟ NeoPixel ให้ใช้งาน ตัว บอร์ด Chilli มีรุ่น Basic และรุ่น Plus รองรับการเขียนโปรแกรมได้ทั้ง Arduino และ Circuit Python

ลองมาดู spec รุ่น Basic

  • Chili ใช้้ MCU AT SAMD21G18 หรือ ARM Cortex M0+ แบบ 32Bits ความเร็ว 48 MHz
  • มี Flash 256KB และ RAM 32KB
  • ภายในชิปมี USB-to-Serial programe กับ debug ได้
  • มี GPIO 24 ขา เป็น PWM ได้ทุกขา
  • มีขา I2C และ SPI
  • NeoPixel ต่ออยู่ที่ Pin 8
  • LED สีแดงต่ออยู่ที่ Pin 13
  • มีขนาดเล็กเท่ากับ Arduino Nano

สำหรับรุ่น Plus จะมีเซนเซอร์พื้นฐานอยู่บนบอร์ดด้วย ดังนี้

  • Temperature Humidity Sensor
  • 3-Axis Accelerometer
  • 3-Axis Gyroscope
  • 3-Axis Magnetometer
  • Barometer

สำหรับ Arduino ต้องติดตั้งบอร์ดเพิ่มเติม โดยตั้งค่าที่ File > Preference เพิ่ม https://raw.githubusercontent.com/gravitech-engineer/package_gravitech_board/master/package_gravitech_index.json ลงไปที่ Additional Board Manager

จากนั้นติดตั้งบอร์ด ชื่อ Chili เพิ่มเติมได้

การใช้งานให้เชื่อมต่อบอร์ด Chili กับคอมพิวเตอร์โดยใช้สาย USB เลือกบอร์ด Arduino Nano Chili เท่านี้ก็ใช้งานได้แล้ว

หากเชื่อมต่อกับบอร์ดแล้วไม่พบ USB บนบอร์ด ให้กดปุ่ม reset 2 ครั้ง ไฟ NeoPixel จะเปลี่ยนเป็นสีเขียว พอร์ด USB จะเปลี่ยนโหมดทำงานเท่านี้ก็ใช้งานได้แล้ว ตัวอย่างการเรียกใช้งาน Sensor และรายชื่อ Library Sensor บนบอร์ดดูรายละเอียดเพิ่มเติมได้ที่ https://github.com/anoochit/chilli-board

Deeplearning4j (DL4J) เป็น deep learning framework ในภาษา Java ทำให้นักพัฒนาสามารถเพิ่มความสามารถด้าน deep learning ให้กับซอฟต์แวร์ได้ง่ายมากขึ้นและ DL4J ยังเป็นซอฟต์แวร์โอเพนซอร์สสามารถนำมาใช้งานได้ฟรีไม่มีค่าใช้จ่าย DL4J อยู่ภายใต้การดูแลของ Eclipse Foundation มีบริการ support แบบ commercial โดยบริษัท Skymind

DL4J แบ่งออกเป็น 2 ส่วน

  1. ETL (Extract Transform Load) ใช้ DataVec และ ND4J เป็นเครื่องมือช่วยจัดการข้อมูล
  2. Learning system ใช้ feature กระจายโหลด โดยใช้ MapReduce บน Hadoop หรือ Spark cluster

โดยทั่วไป Deep Learning ใช้ vectors หรือ tensors ในการจัดการข้อมูลเพื่อใช้ในการประมวลผล DL4J มี tensor library ชื่อ ND4J ที่ทำหน้าที่จัดการข้อมูลในอาเรย์แบบหลายมิติ (n-dimension) ซึ่ง DL4J สามารถประมวลผลได้ทั้งบน CPU และ GPU

สรุปเกี่ยวกับ DL4J

  • ทำงานบน JVM ของภาษา Java, Scala และ Clojure ได้
  • สามารถใช้ IDE อย่าง InteliJ ในการเขียนโปรแกรมได้
  • สามารถใช้เครื่องมือออนไลน์ SKIL (Skymind Inteligence Layer)
  • มี Zeppelin Notebook (Web base IDE ชื่อดังตัวหนึ่ง) เพิ่มเข้ามา เพื่ออำนวยความสะดวกในการ train AI โมเดล
  • รองรับภาษาในการเขียน deep learning ได้หลากหลายมากขึ้น ปัจจุบันรองรับภาษา Java, Scala, Clojure และ Python
  • SKIL มีรุ่น Community ที่เป็นโอเพนซอร์สให้งานได้ฟรี และรุ่น Commercial แบบมีค่าใช้จ่ายสำหรับลูกค้าองค์กร

ความแตกต่างระหว่างรุ่น Community และ Commercial เพียงแต่ Commercial จะดีกว่าดังนี้

  • รองรับการทำ Multi-Node สำหรับใช้ train model บน cluster
  • รองรับการทำ Fault tolerance, load balancing, และ leader election
  • รองรับการทำ Integration กับ application ต่างๆ เช่น Robotic Process Automation เป็นต้น

DL4J ใช้ภาษา Java และติดตั้งบน JVM ทำให้ Enterprise Software ที่พัฒนาด้วย Java สามารถเรียกใช้ ความสามารถของ Deep Learning ได้ง่ายขึ้น ไม่จำเป็นต้องเรียนรู้ภาษาใหม่ นอกจากการพัฒนาโดยใช้ภาษา Java ที่สามารถทำได้ง่ายแล้ว DL4J ยังสามารถเรียกใช้งาน model จาก Deep Learning Framework ที่มีอยู่แล้ว เช่น Keras และ Tensorflow ได้ สำหรับการติดตั้งสามารถติดตั้งบน JVM แบบ on-premise หรือการ Scale Out บน Container Service บน Cloud ได้เช่นกัน

Deep Learning ยังต้องใช้ GPU เพื่อช่วยเร่งการประมวลผลให้เร็วขึ้น แต่ DL4J สามารถทำงานได้บน CPU ที่มีชุดคำสั่ง AVX และ AVX2 (Advanced Vector Extensions) นอกจากการประมวลผลโดยใช้ CPU, GPU แล้ว DL4J ยังสามารถใช้ Hadoop และ Spark เป็นคลัสเตอร์ช่วยในการประมวลผล Deep Learning แบบกระจายได้ (Distributed Deep Learning) DL4J เหมาะสำหรับงานด้าน Image recognition, fraud detection, text mining, speech tagging, machine vision และ natural language processing

ตัวอย่าง Usecase และ Industry ที่เกี่ยวข้อง

Usecase Industry
Sound
Voice recognition UX/UI, Automotive, Security, IoT
Voice search Telecom, a Handset maker
Sentiment analysis CRM
Flaw detection (engine noise) Automotive, Aviation
Fraud detection Financial, Credit Cards
Time Series
Log analysis, Risk detection Data centers, Security, Finance
Enterprise resource planning Manufacturing, Auto, Supply chain
Predictive analytics, sensor data IoT, Smart home, Hardware manufacturer
Business and Economic analytics Finance, Accounting, Government
Recommendation engine E-commerce, Media, Social Networks
Text
Sentiment Analysis CRM, Social media, Reputation management
Augmented search, Theme detection Finance
Threat detection Social media, Govt
Fraud detection Insurance, Finance
Image
Face recognition
Image search Social media
Machine vision Automotive, aviation
Photo clustering Telecom, Handset makers
Video
Motion detection Gaming, UX, UI
Real-time threat detection Security, Airports

ข้อดี

  • ประมวลผลได้ทั้งบน CPU ที่มี AVX, AVX2 และ GPU ผ่าน CUDA
  • ติดตั้งและ scale ได้ง่ายผ่าน container service บน Cloud
  • ประมวลผลแบบ parallel อัตโนมัติ ไม่จำเป็นต้องเขียน parallel programming
  • เชื่อมต่อกับ ecosystem ของ Java ได้ train model บน Hadoop, Spark Cluster ได้
  • มี commercial support และ AI platform ให้บริการโดย Skymind จ่ายค่า subscription plan ตามต้องการ

ข้อเสีย

  • DL4J มีเครื่องมือยังไม่แพร่หลาย เน้น B2B เป็นหลัก

เมื่อสัปดาห์ก่อนได้รับบอร์ด Node32Lite จากพี่ช้างแห่ง Ayarafun Factory ส่งบอร์ดมาให้ทดลองเล่น บอร์ด Node32Lite นี้ ออกแบบและผลิตโดยคนไทย โดย Ayarafun/LamLoei และผลิตโดย GravitechThai เป็นบอร์ดที่ออกแบบและผลิตโดยคนไทย 100%

  • ตัวบอร์ดใช้ชิป ESP-WROOM-32 เป็น Wifi/Bluetooth module จาก Espressif
  • ตัวบอร์ดมีขนาดกว้าง 0.9 นิ้ว ทำให้เหลือช่องบน breadboard ข้างละ 1 ช่อง
  • ใช้ FTDI ชิปเพื่อการโหลดโปรแกรมแบบอัตโนมัติ
  • มีวงจร PTC Fuse ตัดกระแสไฟเกินที่ 500mA
  • มี regulator 3.3V 600mA บนบอร์ด
  • มี Push button switch ที่ขา IO0 และ EN สำหรับ reset
  • เหมาะสำหรับงาน พัฒนาต้นแบบ อุปกรณ์รูปแบบ Portable และ Wearable

แปะวิดีโอแกะกล่อง

สั่งซื้อได้ที่ GravitechThai และร้าน Home of Maker สำหรับข้อมูลเพิ่มเติมเกี่ยวกับบอร์ดและ resource ต่างๆ สามารถอ่านเพิ่มเติมได้ที่เว็บไซต์ของ Ayarafun Factory ครับ

ช่วง Black Friday มีสินค้าลดราคากันเยอะมาก DJI ก้อจัดรายการเหมือนกัน วันนี้เห็น post ใน Facebook ของ PowerBuy และ DJI ต่างก็กระหน่ำลดราคาสินค้ากัน ก็เลยลองมาค้นข้อมูลดูหน่อยว่า ถ้าซื้อมาจะเขียนโปรแกรมควบคุมยังไงได้บ้าง

พอทราบข้อมูลเบื้องต้นว่า Tello สั่งงานผ่าน wifi ซึ่งตัวโดรนจะเป็น UDP server เราสามารถส่งคำสั่งไปควบคุม Drone ได้ ทำให้มีเครื่องมือออกมาหลายตัว เช่น

ในเว็บไซต์ของ Tello เอง ยังมี Tello Edu มี SDK ให้ดาวน์โหลดไปพัฒนาต่อยอดได้ เช่น Drone Swarm, Multi Control, AI เป็นต้น

นอกจากนี้เรายังสามารถใช้ IoT dev kit ต่างๆ อย่างเช่น ESP8266, ESP32 มาควบคุม Drone ได้ด้วย

แปะโค้ดตัวอย่างไว้นิดนึง

*** ข้อควรระวัง อย่าบินเกินระยะของสัญญาณ Wifi นะครับ :) ***

แปะวิดีโอแกะกล่อง และ Git Repository เพิ่มเติมนะครับ

ผมได้มีโอกาสไปเล่น Pi Top Ceed ที่บูธของ MakerAsia ในงาน Thailand 4.0 ชอบ Pi Top Ceed มานานละ มันคล่องตัวและสะดวกมาก แนวคิดคือหิ้ว Pi Top Ceed ไปออกงาน แล้วเสียบ keyboard mouse แล้วใช้งานได้เลย แต่ประเด็นไม่ได้อยู่ที่ Pi Top Ceed แต่เป็น KidBright IDE บน Raspberry Pi ต่างหาก วันนี้ก็เลยมาลองติดตั้ง KidBright IDE บน Raspbian กันสักหน่อย

ก่อนติดตั้ง ต้องทำความเข้าใจกันก่อนว่า script สำหรับติดตั้ง KidBright IDE ใช้สำหรับเครื่องคอมพิวเตอร์ที่เป็น CPU ตระกูล X86 แต่ Raspberry Pi เป็น ARM ดังนั้นสิ่งที่ต้องทำมีดังนี้

  • ติดตั้ง KidBright IDE
  • compile toolchain ใหม่

มาลงมือกันเลย ติดตั้ง dev tools กันก่อน

sudo apt-get install git wget make libncurses-dev flex bison gperf python python-serial gawk gperf grep gettext python python-dev automake bison flex texinfo help2man libtool libtool-bin

ติดตั้ง KidBright IDE

ดาวน์โหลด node.js v8

wget -c https://nodejs.org/dist/latest-v8.x/node-v8.13.0-linux-armv7l.tar.gz

แตกไฟล์

tar zxvf node-v8.13.0-linux-armv7l.tar.gz

ตั้ง path

export PATH=$PATH:$HOME/node-v8.13.0-linux-armv7l/bin

ทดสอบ node กันก่อน

node -v

จะได้ผลลัพท์เป็น version ของ node.js

จากนั้นติดตั้ง pyserial

pip install pyserial

สั่ง clone KidBright IDE มาจาก gitlab ได้เลย

git clone https://gitlab.com/kidbright/kbide --recursive

สั่ง build

cd kbide

npm run build

เมื่อสั่ง build ตัวโปรแกรมจะติดตั้ง toolchain มาให้ แต่เป็น X86 เราต้อง compile toolchain ใหม่ให้ใช้บน ARM ได้ไม่งั้น compile programe ไม่ได้นะ

สั่ง clone crosstool มาเพื่อ compile toolchain ใหม่

git clone -b xtensa-1.22.x https://github.com/espressif/crosstool-NG.git

สั่ง compile

cd crosstool-NG

./bootstrap && ./configure --enable-local && make install

./ct-ng xtensa-esp32-elf

./ct-ng build

นอนรอ Zzz ใช้เวลา compile ประมาณ 20 นาที เมื่อ compile เสร็จให้ chmod เพื่อให้ excute ได้

chmod -R u+w builds/xtensa-esp32-elf

เปลี่ยน toolschain ที่มีอยู่เดิม เท่านี้ก็เรียบร้อย

cd ..

rm -rf xtensa-esp32-elf

cp -rf builds/xtensa-esp32-elf .

จากนั้นสั่ง run KidBright IDE ได้ตามปกติ

npm start

ลองลากๆ วางๆ

กด flash ไม่พังเป็นอันใช้ได้