การทำระบบอัปเดตให้เป็นมาตรฐาน: ไลบรารี SDU
เฮ้ยน้อง ฟังนะ! ในโลกความเป็นจริงเนี่ย เวลาเราทำโปรเจกต์จนเสร็จแล้วประกอบลงกล่อง (Chassis) อย่างดี หรือเอาไปติดตั้งทิ้งไว้ในที่ไกลๆ การจะแบกคอมพิวเตอร์ไปเสียบสาย USB เพื่ออัปเดตโค้ดเนี่ย มันเป็นเรื่องที่ล้าหลังสุดๆ โปรเจกต์ SD Sketch Update เลยจัดตัวช่วยระดับเทพมาให้ นั่นคือไลบรารี SDU (Secure Digital Update) ซึ่งเป็นฟีเจอร์เด็ดสำหรับบอร์ดตระกูล SAMD (อย่างพวก MKRZero และ MKR1000) แค่เราใส่ไลบรารีนี้เข้าไปในโค้ด บอร์ดของเราก็จะฉลาดพอที่จะตรวจเช็คและแฟลช Firmware ใหม่ได้ด้วยตัวเอง แค่มีไฟล์อยู่ใน SD card ก็พอแล้ว หล่อเท่เลยงานนี้!
กลไกการอัปเดตตัวเอง (Self-Updating)
เจ้าไลบรารี SDU จะแอบไปเพิ่มโค้ดส่วน "Pre-Boot" เล็กๆ ไว้ในตัวบอร์ด มาลองดู Logic การทำงานของมันหน่อย เดี๋ยวจะหาว่าพี่โม้:
- Boot Detection: ทันทีที่บอร์ดโดน Reset หรือจ่ายไฟเข้าไป เจ้า SDU จะเริ่มรันก่อนที่ฟังก์ชัน
setup()หลักของเราจะทำงานซะอีก - The File Check: บอร์ดจะวิ่งไปส่องที่ Root Directory ของ SD card ที่เสียบอยู่ เพื่อมองหาไฟล์ที่ชื่อว่า UPDATE.bin (ชื่อต้องเป๊ะนะน้อง ห้ามเบี้ยว!)
- Automatic Overwrite: ถ้าเจอไฟล์ที่ถูกต้อง มันจะทำการเขียนทับ (Overwrite) ข้อมูลใน Flash memory เดิมด้วยข้อมูลใหม่ทันที พอเสร็จปุ๊บ บอร์ดก็จะ Reboot ตัวเองแล้วเริ่มรันโค้ดเวอร์ชันใหม่ให้เลย โคตรตึง!
ขั้นตอนการสร้างไฟล์ Binary (Export Binary)
เวลาจะสร้างไฟล์อัปเดต น้องจะมากด Upload เหมือนตอนทำ Lab ปกติไม่ได้นะ จัดไปตามนี้:
- Binary Generation: ใน Arduino IDE น้องต้องไปเลือกที่เมนู
Sketch -> Export compiled Binaryแล้วมันจะสร้างไฟล์ตระกูล.binมาให้ในโฟลเดอร์เดียวกับโปรเจกต์เรา - Renaming for recognition: ไฟล์ที่ได้มาชื่อจะยาวเป็นกิโล (เช่น
Blink.ino.mkrzero.bin) น้องต้องรีบเปลี่ยนชื่อมันเป็น UPDATE.bin ซะ ไม่งั้น SDU Bootloader มันจำหน้าไม่ได้ - Deployment: เอาไฟล์นี้โยนใส่ SD card (ฟอร์แมตเป็น FAT32 ด้วยนะวัยรุ่น) เสียบเข้าช่อง Slot ของ MKRZero แล้วกดปุ่ม Reset โลด!
โปรเจกต์ที่เหมาะจะเอา SDU ไปใช้
ฟีเจอร์นี้บอกเลยว่า Game-changer สุดๆ สำหรับงานพวกนี้:
- Field Sensors: อัปเดตพวก Sensor วัดค่าในป่าในเขา ไม่ต้องแบก Laptop ไปตากแดดตากฝนให้เหนื่อย
- Enclosed Gadgets: อุปกรณ์ที่ประกอบใส่เคสมิดชิดจนรู USB เข้าไม่ถึง เช่น เครื่องเล่นเกมพกพาหรือโคมไฟอัจฉริยะ ก็อัปเดตผ่าน SD card เอา
- Diagnostic Testing: สลับโหมดไปมาระหว่าง "โหมดตรวจเช็ค (Diagnostic)" กับ "โหมดใช้งานจริง (Production)" ได้ไวสุดๆ แค่สลับ SD card เอา
โปรเจกต์นี้ถือเป็น Workflow การทำงานระดับมืออาชีพเลยนะ เป็นการพิสูจน์ว่า Arduino ก็สามารถจัดการ Firmware (Scalable Firmware Management) ได้เทพไม่แพ้แพลตฟอร์มอื่นเลย
Note: บทเรียนนี้จะช่วยให้การอัปเดตบอร์ด SAMD ของน้องสมูทขึ้นเยอะ แค่ใส่ #include <SDU.h> ไว้ใน Sketch น้องก็เปลี่ยนช่อง SD slot ธรรมดาๆ ให้กลายเป็นเครื่องมืออัปเดตบอร์ดสุดทรงพลังได้แล้ว... สู้งานนะน้อง ห้ามช็อตนะตัวนี้!