microBlock IDE คือ เครื่องมือที่ใช้เขียนโปรแกรมบอร์ด KidBright ด้วยภาษาบล็อกและภาษา Python พัฒนาโดย ร้านไอโอเอ็กซ์ฮ๊อบ ร่วมมือกับ บริษัท อินโนเวตีฟ เอ็กเพอริเมนต์ จำกัด (INEX) บริษัท กราวิเทคไทย (ไทยแลนด์) จำกัด Senses IoT PrinceBot LamLoei มีเป้าหมายสำคัญคือสร้างสภาพแวดล้อมแห่งการเรียนรู้ทางด้านไมโครคอนโทรลเลอร์ที่สมบูรณ์ที่สุด โดยคำนึงถึงการนำไปใช้เรียนรู้จริงในห้องเรียนเป็นสำคัญ การสร้างสรรค์โครงงาน การบ่มเพาะและพัฒนาทักษะนักพัฒนารุ่นใหม่
microBlock IDE แตกต่างจากเครื่องมือที่ใช้เขียนโปรแกรมบอร์ด KidBright อย่าง KidBrightIDE และ KBIDE ตรงที่โปรแกรมดังกล่าว บล็อกจะถูกแปลงเป็นโค้ดโปรแกรมภาษา C/C++ แล้วจึงคอมไพล์เป็นภาษาเครื่อง จากนั้นอัพโหลดลงบอร์ด KidBright แต่ microBlock IDE แปลงบล็อกเป็นโค้ดโปรแกรมภาษา Python แล้วอัพโหลดโค้ด Python ลงบอร์ดไปเลย เฟิร์มแวร์ MicroPython ที่ติดตั้งบนบอร์ด KidBright อยู่แล้ว เป็น Interpreter ประมวลผลโค้ดโปรแกรมทีละคำสั่ง ทีละบรรทัด ทำให้โปรแกรม microBlock IDE มีขนาดโปรแกรมที่เล็กกว่าโปรแกรมอื่น ๆ มาก เพราะไม่ต้องฝังไลบารี่ภาษา C/C++ , คอมไพล์เลอร์ ไว้ในตัวโปรแกรม อัพโหลดโค้ดโปรแกรมเร็วกว่าเพราะไม่ต้องคอมไพล์โค้ดโปรแกรมก่อน รวมทั้งในแง่ของการต่อยอด สร้าง Plugins/Extension เพิ่มบล็อกให้กับตัวโปรแกรมก็สามารถทำได้ง่ายกว่า เนื่องจากภาษา Python (MicroPython) ทำความเข้าใจได้ง่าย และพัฒนาได้รวดเร็วกว่าภาษา C/C++ สามารถนำไลบารี่ของ MicroPython มาเพิ่มบล็อกลงไป แล้วสร้างเป็น Extension ใส่ลงในตัวโปรแกรม microBlock IDE ได้เลย
ฮาร์ดแวร์ที่รองรับ
ปัจจุบัน microBlock IDE รองรับบอร์ด KidBright32 ทั้งหมด 4 กลุ่ม ดังนี้
KidBright32 V1.3 – V1.4
เป็นบอร์ด KidBright เวอร์ชั่นที่แจกให้กับโรงเรียนต่าง ๆ ทั่วประเทศ พัฒนาโดยเนคเทค มีอุปกรณ์พื้นฐานอย่าง หน้าจอแสดงผลแบบแอลอีดีขนาด 16×8 สวิตช์กดติด-ปล่อยดับแบบโปรแกรมได้ จำนวน 2 ตัว มีสวิตช์กดติด-ปล่อยดับสำหรับรีเซ็ตการทำงาน จำนวน 1 ตัว มีบัสเซอร์สำหรับสร้างเสียงดนตรี จำนวน 1 ตัว ช่อง USB-A ตัวเมีย สำหรับต่ออุปกรณ์ที่รับไฟจาก USB เช่น แอลอีดี USB หรือพัดลม USB มีเซ็นเซอร์วัดอุณหภูมิ เซ็นเซอร์แสง ช่อง KB-Chain สำหรับต่ออุปกรณ์เสริมภายนอก มีจุดต่ออุปกรณ์ภายนอก OUT1 OUT2 IN1 IN2 IN3 และ IN4
microBlock IDE ได้จัดเตรียมบล็อกและคำสั่ง Python สำหรับเขียนโปรแกรมควบคุมสั่งงานอุปกรณ์บนบอร์ด KidBright32 V1.3 และ V1.4 ไว้อย่างครบถ้วนแล้ว
KidBright32 V1.5 Rev.3
เป็นบอร์ด KidBright32 เวอร์ชั่นล่าสุด (ณ ที่จัดทำบทความนี้) จากเนคเทค เพิ่มช่องต่ออุปกรณ์เสริมภายนอกผ่าน JST 2 มิลลิเมตร ทำให้เชื่อมต่ออุปกรณ์เสริมต่าง ๆ ได้ง่ายขึ้น รวมทั้งทำให้สามารถอ่านค่าแอนะล็อกจากอุปกรณ์ภายนอกได้โดยตรง (เวอร์ชั่น 1.3 – 1.4 ต้องต่ออุปกรณ์ตัวกลาง จึงจะสามารถอ่านค่าแอนะล็อกได้) เพิ่มจุดต่อเซอร์โวมอเตอร์จำนวน 2 ตัว ตัดหลอดแอลอีดี NTP และ BT ออก
microBlock IDE ได้จัดเตรียมบล็อกและคำสั่ง Python สำหรับเขียนโปรแกรมควบคุมสั่งงานอุปกรณ์บนบอร์ด KidBright32 V1.5 Rev.3 ไว้อย่างครบถ้วนแล้ว
KidBright32i
เป็นบอร์ด KidBright ที่ต่อยอดมาจาก KidBright32 V1.5 Rev.3 พัฒนาโดย บริษัท อินโนเวตีฟ เอ็กเพอริเมนต์ จำกัด (INEX) เพิ่มเซ็นเซอร์วัดความเร่ง (Accelerometer) และเซ็นเซอร์แม่เหล็ก เปลี่ยนช่อง MicroUSB เป็น USB-C แทน รวมทั้งเปลี่ยนอุปกรณ์บางส่วนบนบอร์ดเป็น SMD
microBlock IDE ได้จัดเตรียมบล็อกและคำสั่ง Python สำหรับเขียนโปรแกรมควบคุมสั่งงานอุปกรณ์บนบอร์ด KidBright32i ไว้อย่างครบถ้วนแล้ว
KidBright32 V1.6 by Gravitech
เป็นบอร์ด KidBright ที่ต่อยอดมาจาก KidBright32 V1.5 Rev.3 โดยเพิ่มเซ็นเซอร์วัดความเร่ง (Accelerometer) เซ็นเซอร์วัดความเร็วเชิงมุม (Gyroscope) และ RGB LED จำนวน 6 ดวง
microBlock IDE ได้จัดเตรียมบล็อกและคำสั่ง Python สำหรับเขียนโปรแกรมควบคุมสั่งงานอุปกรณ์บนบอร์ด KidBright32 V1.6 by Gravitech ไว้แล้ว ยกเว้น RGB LED จำเป็นต้องติดตั้ง Extension เพิ่มเติม
รูปแบบการเขียนโปรแกรมสั่งงาน
โปรแกรม microBlock IDE รองรับการเขียนโปรแกรมสั่งงานบอร์ด KidBright ได้ 2 แบบ คือ
เขียนโปรแกรมแบบบล็อก
การเขียนโปรแกรมแบบบล็อก คือ การเขียนโปรแกรมสั่งงานโดยลากบล็อกมาต่อกันตามลำดับ แล้วอัพโหลดโปรแกรมลงบอร์ด KidBright เพื่อให้บอร์ด KidBright ทำงานตามโปรแกรมที่ได้เขียนไว้ การเขียนโปรแกรมด้วยการต่อบล็อกมีข้อดีประการสำคัญคือ ช่วยให้นักพัฒนาเน้นขบวนการคิดแก้ปัญหา (Algorithm) มากกว่าการใช้เวลาส่วนใหญ่ไปกับการแก้ปัญหาไวยากร (Syntax) ผิดพลาด ส่วนข้อเสียคือไม่เหมาะกับการสร้างโครงงานขนาดใหญ่ เพราะจะต้องสร้างบล็อกจำนวนมาก ยากต่อการจัดการ
เขียนโปรแกรมแบบโค้ดภาษา Python
การเขียนโปรแกรมแบบโค้ดภาษา Python คือ การเขียนโปรแกรมโดยใช้แป้นพิมพ์พิมพ์คำสั่งตามรูปแบบของภาษา Python ลงในหน้าต่างโปรแกรมทีละบรรทัด เมื่ออัพโหลดโปรแกรม โปรแกรมจะเริ่มทำงานตามคำสั่งทีละบรรทัด
ข้อดีของของการเขียนโปรแกรมสั่งงานด้วยภาษา Python คือยืดหยุ่นในการจัดการโค้ดโปรแกรมขนาดใหญ่มากกว่า บางครั้งการเขียนโค้ดด้วย Python ก็เร็วกว่าการลากบล็อก รวมทั้งได้เรียนรู้หลักไวยากรของภาษา (Syntax) ซึ่งสามารถต่อยอดไปใช้ในโค้ดโปรแกรมคอมพิวเตอร์ภาษาอื่น ๆ ได้ ในขณะที่ข้อเสียของการใช้การเขียนโค้ด Python คือ โปรแกรมขนาดเล็ก ยังใช้เวลาในการเขียนมากกว่าการลากต่อบล็อก
ทางสายกลาง เขียนบล็อกในขั้นต้นแล้วเปลี่ยนมาเขียน Python
โปรแกรม microBlock IDE เมื่อเขียนโปรแกรมด้วยบล็อกแล้ว บล็อกจะถูกแปลงเป็นโค้ด Python ทันที ผู้เรียน นักพัฒนาสามารถดูโค้ดโปรแกรม Python ได้ตลอดเวลา ช่วยให้ผู้เรียน นักพัฒนา เข้าใจว่าบล็อกจะแปลงเป็นโค้ดโปรแกรม Python ได้อย่างไร และหากต้องการแก้ไขโค้ดโปรแกรม Python ที่ได้จากการแปลงบล็อกก็สามารถทำได้ (แต่หลังจากยืนยันจะแก้ไขโค้ดโปรแกรม Python แล้ว จะแปลงโค้ดกลับเป็นบล็อกไม่ได้แล้ว) ดังนั้นในขั้นต้นสามารถเขียนโปรแกรมด้วยบล็อกก่อนได้ เมื่อโปรแกรมมีขนาดใหญ่ขึ้นจนเริ่มจัดการยาก การสลับมาเขียนด้วยโค้ด Python จะช่วยได้
เวอร์ชั่นของ microBlock IDE
โปรแกรม microBlock IDE มี 2 เวอร์ชั่น คือ
เวอร์ชั่นเว็บ
เวอร์ชั่นเว็บ คือการใช้งาน microBlock IDE บนเว็บด้วยโปรแกรม Google Chrome โดยสามารถใช้งานได้ทันที ไม่ต้องติดตั้งโปรแกรม และไม่ต้องอัพเดทโปรแกรมเอง เพราะเมื่อมีการอัพเดทเวอร์ชั่นของ microBlock IDE บนเว็บจะอัพเดทเวอร์ชั่นให้อัตโนมัติ นอกจากนี้ยังมีฟีเจอร์เชื่อมต่อกับ GitHub ช่วยให้สามารถบันทึกโค้ดโปรแกรมที่เขียนลงใน GitHub ได้เลย เมื่อเปลี่ยนเครื่องคอมพิวเตอร์ที่ใช้ในการเขียนโค้ด สามารถเรียกโค้ดจากบน GutHub มาทำงานต่อได้เลย
ข้อดีของ microBlock IDE เวอร์ชั่นเว็บ
- ไม่ต้องติดตั้งโปรแกรมเพิ่มเติมลงในเครื่องคอมพิวเตอร์
- ประหยัดพื้นที่ที่ใช้บนเครื่องคอมพิวเตอร์
- มีการอัพเดทโปรแกรมอัตโนมัติ
- เชื่อมต่อกับ GitHub เพื่อบันทึก และเปิดโค้ดได้ตลอดเวลา
- ใช้งานได้กับทุกระบบปฏิบัติการ
- ใช้งานแบบออฟไลน์ได้โดยกดปุ่มติดตั้งลงในเครื่อง
ข้อเสียของ microBlock IDE เวอร์ชั่นเว็บ
- ไม่สามารถตรวจสอบและอัพเดทเฟิร์มแวร์ MicroPython ได้ หากบนบอร์ดยังไม่ได้ติดตั้ง MicroPython จำเป็นต้องใช้โปรแกรมอื่น ๆ ติดตั้ง MicroPython ลงบอร์ดก่อน
- ใช้งานได้กับโปรแกรม Google Chrome เท่านั้น
- จำเป็นต้องเปิดใช้ Web Serial API ก่อน จึงจะใช้งานได้
เวอร์ชั่นโปรแกรม
เวอร์ชั่นโปรแกรม คือ microBlock IDE ในรูปแบบโปรแกรมคอมพิวเตอร์ ซึ่งสามารถติดตั้งและใช้งานได้โดยที่เครื่องคอมพิวเตอร์ไม่จำเป็นต้องเชื่อมต่ออินเตอร์เน็ต แนะนำให้ติดตั้งเฟิร์มแวร์ MicroPython อัตโนมัติกรณียังไม่ได้ติดตั้งหรือเป็นเวอร์ชั่นเก่า
ปัจจุบัน microBlock IDE รองรับระบบปฎิบัติการ Windows , mac OS X และ Ubuntu บนสถาปัตยกรรม x86 และ x86-64
ข้อดีของ microBlock IDE เวอร์ชั่นโปรแกรม
- ใช้งานได้แบบออฟไลน์ ไม่จำเป็นต้องมีอินเตอร์เน็ตก็ใช้งานได้
- เรียกใช้งานได้สะดวกกว่าเวอร์ชั่นเว็บ ไม่ต้องรอโหลด
- แนะนำและติดตั้งเฟิร์มแวร์ MicroPython ให้อัตโนมัติหากยังไม่ได้ติดตั้ง หรือเป็นเวอร์ชั่นเก่า
- บันทึก และเปิดโปรเจคเก่าจากในเครื่องคอมพิวเตอร์ได้ง่ายกว่าเวอร์ชั่นเว็บ
ข้อเสียของ microBlock IDE เวอร์ชั่นโปรแกรม
- ต้องติดตั้งลงบนเครื่องคอมพิวเตอร์
- เมื่อมี microBlock IDE เวอร์ชั่นใหม่ จำเป็นต้องดาวน์โหลดมาติดตั้งทับของเก่าเอง
- รองรับระบบปฏิบัติการได้จำกัด
- ใช้พื้นที่บนเครื่องคอมพิวเตอร์มากกว่าเวอร์ชั่นเว็บ
การดีบัคโปรแกรม
microBlock IDE แปลงบล็อกเป็นโค้ดโปรแกรมภาษา Python โดยใช้เฟิร์มแวร์ MicroPython ที่ติดตั้งบนบอร์ด KidBright อยู่แล้ว เป็น Interpreter ประมวลผลโปรแกรม
จากข้อความข้างต้น ส่งผลให้การใช้ microBlock IDE มีข้อจำกัดด้านการตรวจสอบไวยากร (Syntax) ของภาษา โดยเฉพาะเมื่อเขียนโปรแกรมแบบโค้ดภาษา Python โดยผู้เขียนโค้ดจะไม่ทราบเลยว่าโค้ดที่เขียนนั้น ถูกหลักไวยากรหรือไม่ จะทราบก็ต่อเมื่ออัพโหลดโค้ดโปรแกรมลงบอร์ดไปแล้ว และ MicroPython แจ้งว่าโค้ดผิดรูปแบบไวยากร
ดังนั้น microBlock IDE จึงเตรียมเครื่องมือที่ใช้ตรวจสอบและติดตามผลการทำงานของโค้ดโปรแกรมที่ชื่อว่า Terminal ไว้ให้ ในหน้าต่าง Terminal นักพัฒนาสามารถดูข้อความ Error ต่าง ๆ ของโค้ดโปรแกรมได้ ใช้เป็นพื้นที่แสดงผลข้อมูลได้ ใช้เป็นพื้นที่ทดสอบคำสั่ง และดูค่าในตัวแปรต่าง ๆ ได้ รวมทั้งติดตามและทำความเข้าใจสิ่งที่ microBlock IDE ทำ เมื่อกดปุ่มอัพโหลดโปรแกรม
การเพิ่มบล็อก/เพิ่มคำสั่ง Python
การเพิ่มบล็อก หรือเพิ่มคำสั่ง Python สามารถทำได้โดยติดตั้ง Extension เพิ่ม ซึ่งใน microBlock IDE มีเมนู Extension โดยเฉพาะ สามารถกดเข้าไปค้นหา และเลือกติดตั้ง Extension ได้ตามต้องการ