🚀 ทำไมต้อง 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/RISCrtic– real-time interrupt-driven concurrencydefmt– debug logging แบบ low overhead

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