🚀 ทำไมต้อง 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