มาติดตั้ง KidBright IDE บน Raspberry Pi กัน

ผมได้มีโอกาสไปเล่น 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 ไม่พังเป็นอันใช้ได้

จบงาน KidBright Developer Meetup #1 สร้าง plugin แบบง่ายๆ ได้ 1 อัน

หลังจากไปร่วมงาน KidBright developer meetup มาก็เลยได้ลองสร้าง KidBright plugin ง่ายๆ มา 1 อัน เป็น plugin ไฟกระพริบ ใช้เครื่องมือ generator ทุ่นแรงจากน้องนัทช่วยสร้างโครงให้

จบงานได้มา 1 block เป็น เปิด/ปิด LED บนบอร์ดแบบง่ายๆ ถ้าเอาเข้า loop ใส่ delay นิดหน่อยก็ได้ไฟกระพริบแล้ว

แล้วก็มาทำต่อเพิ่มเติม ให้ครบตามข้อกำหนดของการสร้าง block

แปะ git repository ไว้ให้ https://github.com/anoochit/kidbright_ledx ปล.ไม่มีบอร์ด KidBright เลยไม่ได้ทำอะไรต่อ

KidBright เปิดเป็น OpenSource แล้วนะ

เมื่อวานแวะไปงาน KidBright Developer Conference (KBD) งานนี้เป็นงานเปิดตัว KidBright IDE รุ่นใหม่ แถลงข่าวเปิดตัวเป็นโครงการ OpenSource และมอบรางวัลโครงงานสิ่งประดิษฐ์จากบอร์ด KidBright งานนี้มีคนในวงการรวมทั้ง Maker ทั้งรุ่นเล็กรุ่นใหญ่มาร่วมงาน เป็นสักขีพยานและร่วมแสดงความยินดีกับการเปิดตัวเป็น OpenSource ในครั้งนี้ด้วย

KidBright เปิดเป็นโครงการ OpenSource เรียบร้อยแล้วทั้งใน KidBright IDE และ Library KidBright32 โครงการอยู่ที่ GitLab ไปส่องกันดูได้ ใช้ Apache License 2.0 นะ

แปะหน้า IDE ให้ดูก่อน

เมื่อ KidBright เปิดโค้ดแล้วเราก็สามารถเขียน Plugin เพิ่มเติมได้ มีตัวอย่าง Plugin จาก KB Chain มาให้ 3 ชุด

นอกจากนี้ยังมี KB Chain มีมาให้ดูเป็นตัวอย่างด้วย ใครสนใจก้อไปสั่งซื้อกันได้ ที่เว็บไซต์ KidBright.IO ครับ

เรียกใช้ Youtube API บน Arduino กัน

เมื่อสัปดาห์ที่แล้วอัพเดท Arduino Library บางตัวไปเจอ Library ตัวนึงน่าสนใจมาก เป็นของคุณ Brian Lough เป็น Library เอาไว้เรียกใช้ Youtube API สามารถดึงข้อมูลสถิติมาใช้งานได้ เช่น จำนวน subscribe, จำนวน video, จำนวน comment, จำนวนคนที่ดู channel เป็นต้น

การใช้งานก็ง่ายมาก แค่สร้าง Application ใน Google Developer Console สร้าง Credential และ API Key แล้วเอา API Key มาใช้งาน นอกจาก Youtube API แล้วคุณ Brian ยังมี Library ที่น่าสนใจอีกหลายตัว แปะวิดีโอของ Becky Stern สร้างกำลังใจกันสักหน่อย

WifiManager บน ESP32

WifiManager ออกมาในช่วง ESP8266 กำลังเป็นที่นิยม ช่วยให้การ config อุปกรณ์ง่ายขึ้น สามารถ config wifi ผ่านเว็บ browser ได้เลย อีกทั้งยังสามารถเพิ่ม custom field ได้ด้วย ระยะหลังเริ่มมีคน fork project ไปทำเพื่อรองรับ ESP32 ด้วย แต่โครงการต้นน้ำก็ยังมีการพัฒนาต่อเนื่อง ช่วงนี้ได้ทดสอบใน development branch แล้วพบว่าใช้งานฟังก์ชั่นหลักๆ ได้แล้ว แต่ยังไม่ release รุ่นออกมา ใครสนใจก็ลองติดตามไปทดสอบกันได้

ใช้งานได้จริงๆ นะ อ้อข้อมูลในส่วน custom parameter ให้เขียนลงใน SPIFFS กันเองนะจ๊ะ

ตัวอย่างโค้ด

มาเล่น Node32s กัน

วันนี้ได้ Node32s ส่งตรงจาก Gravitech Thai สั่งซื้อแบบ pre-order ไว้ ช่วงเดือนพฤศจิกายนจนลืมไปแล้ว วันนี้พัสดุมาส่งก็เลยมา blog ไว้สักหน่อย Node32s เป็น development board จาก Ayarafun และ LamLoei ผลิตโดย Gravitech Thai มาดูบอร์ดกันสักหน่อย

ตัวบอร์ดมาพร้อม USB to TTL ใช้ชิป FTDI มีพอร์ท JST สำหรับต่อแบตเตอรี่และสามารถชาร์ตแบตเตอรี่ได้ด้วย สำหรับชิปเป็น ESP32s แบบ module มี PTC Fuse ขนาด 500mA ด้วย 🙂 ด้านหลังมี label บอกตำแหน่ง pin ต่างๆ

สำหรับการเขียนโปรแกรมสามารถใช้ ESP-IDF หรือ Arduino Core ก็ได้ตามความถนัด หรือท่านที่ชอบใช้ Platform.io ก็สามารถใช้งานได้เช่นกัน สำหรับ pin layout เป็นแบบนี้ครับ

ฝากไว้หน่อย คู่มือการใช้งานและการเขียนโปรแกรมบน Node32s ครับ

มาเล่น Nano32 กัน

Nano32 เป็น Development Board ที่ใช้ชิป ESP32 ตัว Dev Kit พัฒนาโดย MakerAsia และ GravitechThai ตัวบอร์ดมาพร้อมกับ FTDI เสียบสาย usb ปุ๊บใช้งานได้เลย ความสามารถของชิป ESP32 ที่หลายคนรอคอยคือสามารถใช้งาน Wifi และ Bluetooth ได้ แถมประหยัดพลังงานด้วย สำหรับการเชื่อมต่อก็มี GPIO มาให้ใช้งานเยอะมาก มี SPI, SDIO, I2C, UART มาพร้อม รายละเอียดดูได้ที่เว็บ Espressif ครับ

สำหรับการเขียนโปรแกรมบน ESP32 นี้จะใช้ ESP IDF (Espressif IoT Development Framework) ช่วงแรกนี้อาจจะโหดสักหน่อยเพราะมีการเปลี่ยนแปลงแยะมาก สำหรับท่านที่เขียน C++ บน RTOS มาก่อนคงไม่ค่อยรู้สึกแตกต่างมากนัก สำหรับท่านที่เริ่มใหม่ก็ต้องสร้างกำลังใจเรียนรู้ใหม่กันเลยครับ
การติดตั้ง toolchain สำหรับ ESP32 มีหลายวิธี แต่วิธีที่ง่ายที่สุดคงเป็นติดตั้งและใช้งานบน Linux มีคนทำ toolchain บน Docker ด้วยน่าสนใจดีครับ สำหรับท่านที่ใช้ Mac OS แบบผมก็สามารถติดตั้ง toolchain มาเล่นบน Mac ได้เหมือนกัน ลองอ่านวิธีการได้ที่ Wiki ของ ESP IDF อ้อเกือบลืมท่านที่ใช้ Brew อย่าลืมติดตั้ง package เพิ่มเติมดังนี้
brew install gnu-sed gawk binutils homebrew/dupes/gperf grep gettext ncurses pkgconfig
ตั้งค่า PATH ดังนี้

สำหรับการพัฒนาก็ง่ายมาก สามารถศึกษาได้จากตัวอย่างใน git repository โครงการ ESP-IDF ได้ การสร้างโปรเจคใหม่ทาง Esspressif มี template ใช้งานเช่นกัน
เพิ่มเติมทาง Chiang Mai Maker Club มี Tutorial การติดตั้ง Toolchain และ ESP-IDF สำหรับ Windows, Mac, Ubuntu และ Docker ลองไปศึกษาเพิ่มเติมได้ครับ
สำหรับวิธีการ Build ก็ง่ายมาก Makefile มีเครื่องมือมาให้ใช้งานพร้อมแล้ว ผ่าน make tool เช่น

  • การ build ใช้คำสั่ง make
  • การตั้งค่า sdkconfig ผ่านคำสั่ง make menuconfig (อารมณ์เดียวกับ build kernel เลย)
  • การ flash ก็เพียงแค่สั่ง make flash

อัพเดทเพิ่มเติมสำหรับท่านที่อยากใช้ Arduino IDE สามารถติดตั้ง ESP32 บน Arduino IDE และเขียนโค้ดแบบ Arduino ได้แล้ว ดูวิธีการติดตั้ง ESP32 สำหรับ Arduino Core จาก Chiang Mai Maker Club ได้ ปล. Arduino Core วิ่งได้แค่ Core เดียวนะครับ