Qt 5.7 ตัวอย่างฟีเจอร์ใหม่ๆ ที่น่าสนใจกับงานทางด้าน Embedded & IoT

Qt cross platform software development for embedded & desktop 
คือคำจำกัดความของชุดพัฒนาซอฟต์แวร์ Qt ในปัจจุบัน

Building the internet of things with Qt

ด้านการนำ Qt ไปใช้กับ Desktop application และ Mobile application ผมคงไม่ได้พูดถึงในบล็อกนี้ เพราะจั่วหัวข้อมาทาง Embedded System และ IoT

ในงานทางด้าน IoT เนี่ยเนื่องจากปัจจุบันฮาร์ดแวร์ที่ใช้ในการพัฒนาค่อนข้างหลากหลายมาก บางครั้งการทำซอฟต์แวร์ที่ใช้ได้เฉพาะฮาร์ดแวร์ตัวใดตัวหนึ่ง ไม่ใช่ทางเลือกที่ดีนัก

boot to Qt architecture

ความน่าสนใจของ Qt สำหรับงาน Embedded System and IoT อีกอย่างหนึ่ง คือ เราสามารถควบคุมและออกแบบซอฟต์แวร์ได้ทั้งระบบ บนอุปกรณ์ โดยเฉพาะซอฟต์แวร์ที่มีการแสดงผลผ่านทางจอภาพ

มีตั้งแต่ใช้ Qt Library ไปลงบน Linux อื่นๆ เช่น Debain, Ubuntu หรือแม้กระทั่ง custom Linux ตัวเล็กๆ ขึ้นมาเองแล้วให้รันแอพพลิเคชั่นของเราเพียงตัวเดียว

ดังนั้นเราจึงสามารถย้าย application ของเราไปบนฮาร์ดแวร์หลายๆ แบบได้ง่าย เพียงแค่ขอให้ฮาร์ดแวร์นั้นมีระบบปฏิบัติการที่ Qt ซัพพอร์ต ซึ่งก็เกือบทุกระบบปฏิบัติการยอดนิยมบนโลกนี้ก็ว่าได้

ตัวอย่างการคัสตอมระบบปฏิบัติการ Linux และ Qt บน i.mx6 ใช้เวลา boot จนถึง application เพียงแค่ 1500ms

ซึ่งจะแตกต่างจาก Android ที่ความสามารถมากกว่าจาก application services ของ google แต่มีหลายส่วนที่นักพัฒนายังควบคุมการทำงานไม่ได้

และที่สำคัญด้วย Android จุดประสงค์ที่ทำมาเพื่อ smart phone โดยเฉพาะที่มีการแข่งขันด้านการเปลี่ยนฮาร์ดแวร์ที่รุนแรงมาก เมื่อ Android มีการอัพเดตุเวอร์ชั่นใหม่ๆ ส่วนใหญ่ฮาร์ดแวร์เก่าๆ มักจะโดนทิ้งไปพร้อมกับเวอร์ชั่นของระบบปฏิบัติการนั้นโดยปริยาย

ตัวอย่างภาพจากหลักสูตรอบรม Qt ของ Deaware

ดังนั้นถ้าใครสนใจทำซอฟต์แวร์บน Embedded System ที่ลง Linux ได้โดยเริ่มมองจากบอร์ดที่มีขายทั่วๆไป เช่น Raspberry PI, Beagle bone การเลือก Qt เป็น platform หลักในการพัฒนาถือว่า น่าสนใจเลยทีเดียว

Qt 5.7

มาเข้าเรื่องสำคัญของบล็อกนี้กัน 
สำหรับ Qt ในเวอร์ชั่น 5.7 นี้มีการพัฒนาโมดูลเพิ่มเติมเข้ามาหลายอย่าง แต่ผมจะยกมาเฉพาะตัวที่ผมสนใจจริงๆ นะครับ ได้แก่

User experiences

  • Qt3D
    งาน 3D เลิกนั่ง hack โปรแกรม หรือใช้ third party เขียนเองแล้วเอามาประกอบกับ Qt ได้เลย เพราะตอนนี้ Qt ซัพพอร์ตแล้ว โดยเฉพาะงานที่ต้อง simuation ออกมาเป็น 3D แบบ real times เนี่ยง่ายขึ้นเยอะ
  • Qt quick control 2.0
Home automation demo

quick control เหมือนกับชุด widget สำเร็จรูปที่พร้อมให้ใช้งานบน QML นั่นเอง
ทำให้สามารถสร้าง UI ที่หน้าตาดูดีได้ง่ายขึ้น แต่ที่สำคัญเหนืออื่นใดคือประสิทธิภาพโดยเฉพาะบน Embedded System นี่แหละ มันเร็วขึ้นมาก 
จากปกติที่เร็วอยู่แล้ว

Modern C++

  • C++ 11
    ใช้ C++ 11 พัฒนาอย่างเต็มตัว ดังนั้นใครจะคอมไพล์ Qt เวอร์ชั่น 5.7 ให้เช็ค compiler ก่อนเสมอว่ารองรับ C++ 11

Embedded Linux device creation

  • Raspberry PI 3 , Intel NUC
    เพิ่มซัพพอร์ต Official ของบอร์ดอย่าง Raspberry PI เวอร์ชั่น 3 ขึ้นมาตัว image ถูกสร้างมาจาก tool ที่ใช้ custom linux ยอดนิยมอย่าง Yocto

Tooling

  • Qt creator 4.0
    เพิ่มเยอะมากๆ โดยเฉพาะฟีเจอร์ที่เคยเป็น commercial ตอนนี้นำมาเปิดให้ opensource ใช้ทั้งหมดเช่น
Qt creator 4.0 FlameGraph

โดยเฉพาะตัว Flame graph จากรูปด้านบน จะช่วยให้เราวิเคราะห์การทำงานของ UI เราได้หมด รวมทั้งผลกระทบจาก component อื่น

ถ้าใครสนใจรายละเอียดเพิ่มเติมหรือฟีเจอร์ที่ไม่ได้พูดถึงดูได้ที่ 
https://www.qt.io/qt5-7/

ทดลองนำมาใช้กับ Raspberry PI 3 บ้าง

และที่น่าสนใจเป็นพิเศษคือ ไลบรารี่บางตัวที่เคยเป็น license commercial ไม่ให้ license opensource ใช้งานเช่น Graph, Virtual Keyboard ตอนนี้ได้ปล่อยออกมาให้ใช้แบบ opensource แล้ว

และเราก็นำมาทดลองรันบน Raspberry PI 3 พบว่าใช้ได้ดีเลย

ทดสอบฟีเจอร์ใหม่ๆ ของ Qt 5.7 บนบอร์ด Raspberry PI 3

สุดท้ายนี้ก็ขอฝากไว้ว่า Qt ถือว่าเป็น Tool ที่หลายๆ คนอาจจะคิดว่าหายไปแล้วโดยเฉพาะหลังจาก Nokia ขายให้ Digia ไป

แต่ด้วยเหตุผลหลายๆ อย่างที่กล่าวไปข้างต้น ทำให้ปัจจุบัน Qt กลายเป็นหนึ่งในบแพลตฟอร์มสำหรับงาน Internet of things ที่สำคัญมากๆ เลยก็ว่าได้

ศึกษาครั้งเดียวแต่นำไปใช้ทำอะไรได้ค่อนข้างหลากหลาย เพราะยังไง cross platform

ช่วงโฆษณา :

ขอประชาสัมพันธ์นิดนึงครับ คอร์สอบรม Qt ของ Deaware ได้อัพเดตุและปรับมาเป็น QML/C++ และ Qt5.7 หมดแล้วสำหรับท่านที่สนใจอยากเข้าร่วมอบรมสามารถดูรายละเอียดได้ที่

รายละเอียดการเข้าร่วมอบรม Qt