มาทำ LED Matrix Clock กัน

ผมไปเจอโปรเจคESP8266 Wemos Clock News Weather Scrolling Marquee ที่ Thingiverse เป็นนาฬิกาบอกเวลา บอกสภาพอากาศ ค่าเงิน Bitcoin สถานะการพิมพ์ของเครื่องพิมพ์ 3มิติ และข่าวจากรอยเตอร์ โปรเจคใช้ Wemos D1 mini และ LED Matrix เท่านั้นเอง

สำหรับวงจรก็ต่อวงจรแบบนี้ครับ

สำหรับโค้ดดูได้ที่ Github ครับ แปะวิดีโอไว้สักหน่อย

มาเล่น CircuitPython บนบอร์ด Chili กัน

บอร์ด Chili เราสามารถพัฒนาซอฟต์แวร์ฝังตัวโดยใช้ภาษา C บน Arduino และ 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 ใช้งาน

เอา Node32pico มาควบคุม DJI Tello กัน

จากครั้งที่แล้วได้ใช้ Node32s ส่งคำสั่งเพื่อควบคุม Tello ผ่าน udp ไป ครั้งนี้จะมาลองอะไรที่สนุกกว่าคือการใช้ Node32pico ที่มี 9DOF Sensor (3D accelerometer, 3D gyroscope, 3D magnetometer) มาควบคุม Tello ดูบ้าง หลักการง่ายๆ คือ อ่านค่าจาก accelerometer เปรียบเทียบกับลักษณะการหมุน และส่งคำสั่งไปยัง Tello

แปะวิดีโอให้ดูนิดนึง

ใครที่มี Node32pico ก็เอามาควบคุม Tello กันได้ หรือจะเอามาทำ remote control ก็น่าสนใจครับ

LINE Things

งาน LINE Developer Day ที่ผ่านมามีเรื่องเกี่ยวกับ LINE Things มี feature ใหม่ๆ ที่เพิ่มความสามารถของการเชื่อมต่อและควบคุมอุปกรณ์ Bluetooth Low Energy (BLE) ซึ่งทาง LINE ก็มีอุปกรณ์เป็น developer board ออกมาให้ได้ลองเล่นกัน และยังมี LINE Things compatible device ด้วย ซึ่งคุณสามารถใช้ชิป BLE อย่างเช่น nrf52, ESP32 ได้

วิดีโอแนะนำ LINE Things

slide แนะนำ LINE Things

โครงสร้างและบริการที่เกี่ยวข้องกับ LINE Things

จากภาพเราสามารถใช้ Messaging API ร่วมกับอุปกรณ์ LINE Things ได้ซึ่งการอ่านค่าและควบคุมอุปกรณ์สามารถทำผ่าน LIFF App ซึ่งเป็น Web App ซ้อนอยู่ใน LINE อีกชั้นหนึ่ง ซึ่ง LIFF App นี้จะสามารถสื่อสารกับอุปกรณ์ LINE Things ได้

ตัวอย่าง project ที่ใช้ LINE Things

มาติดตั้ง 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 ไม่พังเป็นอันใช้ได้

IoT Landscape 2018

เนื่องจากได้คุยกับผู้รู้หลายๆ ท่าน เรื่องฐานข้อมูลผู้ประกอบการด้าน IoT ว่าบริษัทด้าน IoT ในบ้านเรามีใครบ้าง สอบถามจากหลายๆ ท่านได้ไอเดียจากคุณโอ๊ด ThaiEasyElec แนะนำเรื่อง IoT Landscape แถมส่ง link มาให้ด้วย ก็เลยนึกขึ้นได้ว่า โอ้ว…ในบ้านเรามีใครบ้างนะ


ภาพจากเว็บไซต์ MattTurck

จบงาน 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 Developer Conference เกิดอะไรขึ้นบ้าง

NECTEC เปิดตัว KidBright เป็นโครงการ OpenSource ในงาน KidBright Developer Conference เมื่อวันเสาร์ที่ผ่านมา ก็ได้มีการรวมตัวของ Maker Community ว่าจะจัดกิจกรรมที่เกี่ยวข้องกับ KidBright บ้าง ก็เลยเกิดงาน KidBright Develper Meetup ตอน มาสร้าง Plugin ให้ KidBright IDE กันเถอะ นำทีมโดยท่านประธานชมรมเชียงใหม่เมกเกอร์

ท่านใดสนใจก็เข้าร่วมลงทะเบียนกันได้ ปล. ระหว่างนี้ก็แกะ KidBright IDE กันไปพลางๆ ก่อน อ้อ เกือบลืมไป น้องนัททำ KidBright Generator ไว้น่าจะทำให้การขึ้นโครงของ Plugin ง่ายมากขึ้น อัพเดท…ทางชมรมเมกเกอร์มหานครก็จัดกิจกรรม workshop และมีเรื่องการพัฒนา Plugin เพิ่มเติมเช่นเดียวกัน อย่าลืมลงทะเบียนก่อนไปงานนะครับ 🙂

มารู้จัก Edge Computing กัน

Edge Computing เป็นคำที่ได้พบเจอกันบ่อย เหมือนกับคำว่า IoT, Cloud, BigData หากจะอธิบายถึง Edge Computing คงต้องย้อยอดีตกันสักหน่อย เพื่อจะได้เห็นวิวัฒนาการที่ผ่านมา ช่วงแรกเริ่มการใช้งานคอมพิวเตอร์ใช้งานผ่าน dumb terminal พิมพ์คำสั่งแล้วรอผลจากการประมวลผลที่คอมพิวเตอร์เมนเฟรมปลายทางส่งผลลัพท์มาให้ จากนั้นก็เข้าสู่ยุคคอมพิวเตอร์ส่วนบุคคล (PC) ที่ทุกคนมีคอมพิวเตอร์ใช้งาน การประมวลผลจะอยู่ที่เครื่องคอมพิวเตอร์ต้นทาง ในปัจจุบันเป็นยุค Cloud Computing วิธีการใช้งานคอมพิวเตอร์ได้เปลี่ยนไป โปรแกรมคอมพิวเตอร์เชื่อมต่อกับ Cloud มากขึ้น การประมวลผลและการใช้งานบริการต่างๆ อยู่บน Cloud มากขึ้น เช่น บริการ Dropbox, Gmail, Office365 เป็นต้น ไม่เพียงแต่คอมพิวเตอร์ส่วนบุคคลเท่านั้นที่เชื่อมต่อกับ Cloud ยังมีอุปกรณ์อัจฉริยะอย่าง Amazon Echo, Google Home, Google Chromecast และ Apple TV ยังใช้เนื้อหาและบริการอัจฉริยะที่อยู่บน Cloud เช่นกัน

Cloud จึงกลายเป็นศูนย์กลางการเชื่อมต่อกับบริการทุกอย่าง บริษัทยักษ์ใหญ่ลงทุนโครงสร้างพื้นฐานด้าน Cloud เพื่อรองรับบริการของตนเอง รวมไปถึงเปิดบริการ Cloud ให้คนอื่นใช้งานด้วย บริการบน Cloud ไม่ได้มีแค่ infrastructure เท่านั้น ยังมีบริการอื่นๆ เพิ่มเติมอีกหลายอย่าง เช่น Machine Learning, AI รวมไปถึงบริการการประมวลผลข้อมูลขนาดใหญ่ เช่น Big Data อีกด้วย Amazon ถือเป็นผู้ให้บริการ Public Cloud รายใหญ่ มีส่วนแบ่งการตลาดมากกว่า 47 เปอร์เซ็นต์

Edge Computing คือการประมวลผลข้อมูลที่อยู่ใกล้กับแหล่งข้อมูลให้มากที่สุด อาจจะอยู่ในรูปแบบการวิเคราะห์ข้อมูล การประมวลผลข้อมูลเชิงสถิติ ซึ่งแทนที่จะเอาข้อมูลจำนวนมหาศาลขึ้นไปประมวลผลบน Cloud ก็เอาข้อมูลเหล่านั้นมาประมวลผลที่ต้นทางที่ใกล้กับแหล่งข้อมูลมากที่สุด หรือ Edge นั่นเอง สาเหตุหลักที่ทำให้การประมวลผลจำเป็นต้องอยู่ที่ต้นทาง (Edge)

null

เวลาในการรับส่งข้อมูล (Latency)

เวลาในการรับส่งข้อมูล (Latency) เป็นเหตุผลที่ทำให้ Edge Computing ได้เปรียบในด้านความเร็วในการรับส่งข้อมูล ยกตัวอย่างเช่น หากเครื่องคอมพิวเตอร์ต้องการส่งข้อมูลไปหาเครื่องคอมพิวเตอร์อีกเครื่องที่อยู่คนละฝั่งโลก ความเร็วในการรับส่งข้อมูลเป็นตัวแปรสำคัญ ซึ่งการรับส่งข้อมูลในระยะที่ใกล้จะมีความเร็วมากกว่าส่งในระยะไกลอย่างแน่นอน ตัวอย่างเช่น บริการ Voice Assistant อย่าง Amazon Echo ถ้าส่งข้อมูลไปประมวลผลบนเซิร์ฟเวอร์ที่อยู่บน Cloud ทุกครั้งเพื่อหาคำตอบ จากบริการ API ต่างๆ บน Cloud หากบริการนั้นมีความซับซ้อน Amazon Echo ก็จะใช้เวลานานในการค้นหาคำตอบกว่าจะพูดตอบกลับมายังผู้ใช้ ล่าสุด Amazon ก็เริ่มมีการพัฒนาชิป AI ฝังอยู่ Amazon Echo ทำให้ Alexa ตอบคำถามได้รวดเร็วยิ่งขึ้น ทำให้การใช้เรียกใช้บริการในฝั่งเซิร์ฟเวอร์บน Cloud ก็จะน้อยลง ข้อมูลส่วนตัวของคุณก็จะอยู่กับตัวคุณมากขึ้น เพราะไม่จำเป็นต้องส่งข้อมูลไปประมวลผลบน Cloud ทุกครั้ง

ความเป็นส่วนตัวและความปลอดภัย (Privacy & Security)

ความเป็นส่วนตัวและความปลอดภัยเป็นประเด็นที่ทุกคนให้ความสำคัญ ยกตัวอย่าง กรณีการเก็บข้อมูลลายนิ้วมือใน iPhone, iPad ของ Apple เป็นตัวอย่างที่ดี Apple มีนโยบายชัดเจนในเรื่องการเก็บข้อมูลลายนิ้วมือของผู้ใช้ ซึ่งจะต้องจัดเก็บอยู่ในอุปกรณ์เท่านั้นและไม่สามารถนำข้อมูลลายนิ้วมือออกมาได้ การที่ไม่จำเป็นต้องเอาข้อมูลส่งออกไปเก็บหรือประมวลผลที่อื่น การบริหารจัดการอยู่ที่จุดเดียวสามารถช่วยในเรื่องความปลอดภัยของข้อมูลได้

แบนด์วิธ (Bandwidth)

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

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 ครับ