Rust กับระบบ IoT: เขียนเฟิร์มแวร์สำหรับ embedded device

Sharing is caring!

🚀 ทำไมต้อง Rust สำหรับ IoT?

Rust ได้รับความนิยมมากขึ้นในวงการ IoT เพราะมันให้ความเร็วในระดับเดียวกับ C/C++ แต่มีระบบความปลอดภัยด้านหน่วยความจำที่แข็งแกร่ง ทำให้ลดปัญหา bug ที่เกิดจาก buffer overflow หรือ dangling pointer ได้ดี เหมาะกับการพัฒนา firmware ที่ต้องเสถียรและปลอดภัย

🔌 เตรียมเครื่องมือให้พร้อม

  • ติดตั้ง rustup
  • ติดตั้ง target สำหรับ embedded เช่น thumbv7em-none-eabihf
  • ติดตั้ง probe-rs หรือ cargo-flash สำหรับ flash firmware
rustup target add thumbv7em-none-eabihf
cargo install cargo-binutils
rustup component add llvm-tools-preview
  

📦 สร้างโปรเจค embedded

สามารถเริ่มต้นจาก cargo generate ด้วย template เช่น:

cargo install cargo-generate
cargo generate --git https://github.com/knurling-rs/app-template
  

🔧 โค้ดตัวอย่าง: Blink LED

นี่คือตัวอย่างโค้ดเบื้องต้นที่ใช้ควบคุม GPIO เพื่อกระพริบ LED

#![no_std]
#![no_main]

use cortex_m_rt::entry;
use panic_halt as _;
use stm32f4xx_hal::{
    prelude::*,
    pac,
    delay::Delay,
};

#[entry]
fn main() -> ! {
    let dp = pac::Peripherals::take().unwrap();
    let rcc = dp.RCC.constrain();
    let clocks = rcc.cfgr.freeze();
    let gpiod = dp.GPIOD.split();
    let mut led = gpiod.pd12.into_push_pull_output();
    let mut delay = Delay::new(cp.SYST, clocks);

    loop {
        led.set_high();
        delay.delay_ms(500_u16);
        led.set_low();
        delay.delay_ms(500_u16);
    }
}
  

💡 Flash เฟิร์มแวร์เข้าสู่บอร์ด

ใช้ cargo-flash ในการอัปโหลดไปยัง microcontroller:

cargo install cargo-flash
cargo flash --chip STM32F407VG --release
  

🌐 เชื่อมต่อ IoT ผ่าน MQTT หรือ WiFi

คุณสามารถใช้ไลบรารีอย่าง embedded-nal, heapless, และ smoltcp สำหรับ TCP/IP
หรือใช้ esp-idf-hal สำหรับ ESP32 เพื่อเชื่อมต่อกับ WiFi และ MQTT ได้

🛠 แนะนำไลบรารีสำหรับ Rust Embedded

  • embedded-hal – trait มาตรฐาน
  • cortex-m / riscv – สำหรับสถาปัตยกรรม ARM/RISC
  • rtic – real-time interrupt-driven concurrency
  • defmt – debug logging แบบ low overhead
Rust Embedded Stack

📚 แหล่งเรียนรู้เพิ่มเติม

✅ สรุป

Rust เป็นภาษาที่พร้อมสำหรับโลกของ embedded และ IoT อย่างเต็มรูปแบบ หากคุณต้องการเขียนเฟิร์มแวร์ที่เร็ว ปลอดภัย มีระบบจัดการหน่วยความจำที่ดี Rust คือทางเลือกที่ไม่ควรมองข้าม


บทความนี้ใช้เวลาอ่านประมาณ 20 นาที โดยทีมงาน poolsawat.com

Leave a Reply

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *