ผมไปเจอโปรเจคESP8266 Wemos Clock News Weather Scrolling Marquee ที่ Thingiverse เป็นนาฬิกาบอกเวลา บอกสภาพอากาศ ค่าเงิน Bitcoin สถานะการพิมพ์ของเครื่องพิมพ์ 3มิติ และข่าวจากรอยเตอร์ โปรเจคใช้ Wemos D1 mini และ LED Matrix เท่านั้นเอง
สำหรับวงจรก็ต่อวงจรแบบนี้ครับ
สำหรับโค้ดดูได้ที่ Github ครับ แปะวิดีโอไว้สักหน่อย
IoT
There are 51 posts tagged IoT (this is page 1 of 6).
มาเล่น 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)
เวลาในการรับส่งข้อมูล (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 ครับ