เราเคยเห็น ESP32 ถูกนำไปใช้กับโครงการมากมาย ตั้งแต่อุปกรณ์ IoT เรียบง่าย ไปจนถึงโปรเจกต์ AI, งานด้านระบบเสียง และงานด้าน Vision แต่ระหว่างมองหาโปรเจกต์ใหม่ ๆ เราได้พบกับ เฟิร์มแวร์ ESP-SDR เปลี่ยน ESP32 ให้เป็น Software-Defined Radio (SDR) ได้โดยไม่ต้องใช้ฮาร์ดแวร์เพิ่มเติม
เฟิร์มแวร์โอเพนซอร์สนี้จะข้ามการทำงานของโมเด็ม Wi-Fi และ Bluetooth แบบฟังก์ชันตายตัว (fixed-function) ที่อยู่ใน ESP32 แล้วเข้าถึงสายสัญญาณ ADC ภายในโดยตรง เพื่อจับข้อมูล I/Q baseband แบบดิบ (raw I/Q samples) จากนั้นจึงส่งข้อมูลเหล่านี้ไปยังคอมพิวเตอร์ผ่าน USB หรือ UART เพื่อให้คอมพิวเตอร์นำไปประมวลผลและแสดงเป็น สเปกตรัมวิทยุ (radio spectrum) หรือ waterfall display ด้วยวิธีนี้ชิป ESP32 ที่รองรับจึงสามารถทำหน้าที่เป็นตัวรับสัญญาณวิทยุแบบ Software-Defined Radio ราคาประหยัดได้ โดยไม่จำเป็นต้องมี SDR hardware เพิ่มเติม
คุณสมบัติเด่นและฮาร์ดแวร์ที่รองรับ:
- ชิปที่รองรับ – ESP32, ESP32-C3, ESP32-C5 (รองรับ 2.4/5 GHz แบบ dual-band), ESP32-C6, ESP32-C61, ESP32-S2, ESP32-S3 และ ESP32-S31 ซึ่งยังอยู่ในช่วง preview
- ช่วงความถี่ – โดยทั่วไปอยู่ในย่าน ISM 2.4 GHz โดยบางชิปรองรับประมาณ 2.2–2.7 GHz และ ESP32-C5 รองรับย่าน 5 GHz ประมาณ 4.8–6.0 GHz ส่วน C61 สามารถจูนได้สูงถึง 2.7 GHz และสามารถรับสัญญาณ LTE Band 7 และ 5G NR Band n7 ได้
- อัตราการสุ่มตัวอย่างและแบนด์วิดท์ – สูงสุดประมาณ 80 MSa/s โดยมีแบนด์วิดท์ประมาณ 13–54 MHz ขึ้นอยู่กับชิป
- FFT ภายในชิป – เฟิร์มแวร์รองรับการทำ FFT บนชิป และสามารถส่งข้อมูลสเปกตรัมแบบย่อแทนการส่งข้อมูล I/Q แบบดิบทั้งหมด
ตามข้อมูลจากนักพัฒนา มีความเป็นไปได้ที่วิศวกรของ Espressif จะทิ้งเส้นทางสำหรับการสุ่มตัวอย่างสัญญาณ I/Q แบบ debug ไว้ในซิลิคอน เพื่อใช้ในการทดสอบเวเฟอร์ในโรงงาน ทีมพัฒนาใช้ LLM ช่วย reverse-engineer ฟังก์ชัน adctrig ภายในไลบรารี librftest ของ Espressif จนสามารถค้นพบวิธีตั้งค่ารีจิสเตอร์พิเศษที่ใช้เปิดใช้งานความสามารถดังกล่าวได้
เมื่อเปิดใช้งานแล้ว ESP32 จะเขียนข้อมูล I/Q แบบดิบลงใน SRAM ภายในชิป โดยตรง จากนั้นเฟิร์มแวร์จะใช้ ring buffer เพื่อย้ายข้อมูลจาก SRAM และส่งต่อไปยังคอมพิวเตอร์ผ่าน USB หรือ UART, สำหรับการแสดงผลสัญญาณ สามารถใช้ ESP-WebSDR ซึ่งเป็นเครื่องมือทำงานบนเบราว์เซอร์ โดยเชื่อมต่อกับ ESP32 ผ่าน USB และแสดงสเปกตรัมวิทยุและ waterfall แบบเรียลไทม์ นอกจากนี้ ESP-WebSDR ยังสามารถใช้แฟลชเฟิร์มแวร์ ESP-SDR ได้โดยตรงจากเบราว์เซอร์ที่รองรับ เช่น Chrome หรือ Edge
ESP32 มีความเร็วสูงและสามารถจับข้อมูลได้สูงสุดประมาณ 80 MSa/s ซึ่งสร้างข้อมูลได้มากถึงประมาณ 2.56 Gbps อย่างไรก็ตามปัญหาหลักคือการนำข้อมูลจำนวนมหาศาลนี้ออกจากชิป เพราะทั้ง USB และ UART ไม่สามารถรองรับอัตราข้อมูลเต็มระดับดังกล่าวได้ ดังนั้น ESP-WebSDR จึงใช้วิธีจับ I/Q snapshot ช่วงสั้น ๆ แล้วนำข้อมูลเหล่านั้นมาสร้างเป็น spectrum และ waterfall ข้อเสียคือวิธีนี้อาจพลาดสัญญาณที่เกิดขึ้นในช่วงเวลาระหว่างการจับข้อมูลแต่ละครั้ง สำหรับการส่งข้อมูลแบบต่อเนื่อง ทีมพัฒนากำลังทำโครงการ SoapyESPSDR สำหรับ ESP32-S31 ซึ่งสามารถส่งข้อมูล I/Q ผ่าน Gigabit Ethernet ที่ความเร็วประมาณ 8–16 MSa/s ไปยังซอฟต์แวร์อย่าง GNU Radio และ Gqrx ได้
ก่อนหน้านี้เราเคยเขียนบทความเกี่ยวกับโปรเจกต์วิทยุและ SDR บน ESP32 มาหลายโครงการ แต่ทั้งหมดนั้นยังต้องพึ่งพาเครื่องรับสัญญาณภายนอก หรือใช้ข้อมูล Wi-Fi ที่ผ่านการประมวลผลมาแล้ว เมื่อไม่กี่วันที่ผ่านมา เราเพิ่งเขียนถึงวิธีที่เฟิร์มแวร์ LakeShark เปลี่ยน LilyGO T-Display P4 ให้เป็นเครื่องสแกน SDR แบบพกพา โดย ESP32-P4 ไม่มีวิทยุในตัว จึงต้องใช้ RTL-SDR Blog V3 หรือ V4 เป็น RF front end ภายนอก นอกจากนี้ยังมี ESP32-C5 Wi-Fi analyzer ของ Chen Liang ซึ่งสามารถตรวจสอบสัญญาณ Wi-Fi ในย่าน 2.4 และ 5 GHz ขณะที่ ESP-WIFI-CSI สามารถใช้ข้อมูล Channel State Information (CSI), ส่วน nRFBOX V2 และ ESP32-DIV ใช้ชิป nRF24 ภายนอกเพื่อสแกนย่านความถี่ 2.4 GHz เมื่อเทียบกับโครงการเหล่านี้แล้ว จุดเด่นของ ESP-SDR คือมันใช้ วิทยุที่อยู่ภายใน ESP32 โดยตรง จึงไม่จำเป็นต้องมี SDR hardware เพิ่มเติม ทำให้สามารถทำ spectrum analysis ขั้นพื้นฐานได้บนบอร์ด ESP32 ที่มีราคาอาจต่ำกว่า $5 (~170฿)
นักพัฒนา Florian Euchner และ Zoltan Doczi จากโครงการ ESPARGOS ค้นพบความสามารถนี้ระหว่างที่กำลังพัฒนา ESPARGOS One เมื่อใช้ ESP-SDR ระบบดังกล่าวยังสามารถทำหน้าที่เป็น SDR แบบ 8 ช่องสัญญาณ (eight-channel SDR) และสามารถตรวจจับรวมถึงระบุตำแหน่งของสัญญาณต่าง ๆ เช่น Bluetooth LE และ Zigbee ในย่าน 2.4 GHz ได้
ทั้ง ESP-SDR และ ESP-WebSDR เป็นโครงการโอเพนซอร์สที่เผยแพร่ภายใต้สัญญาอนุญาต GPL-3.0 สามารถดูซอร์สโค้ดได้บน GitHub และทดลองใช้เดโม SDR บนเบราว์เซอร์ กับบอร์ดพัฒนา ESP32 ที่รองรับได้ ทางทีมยังทิ้งหมายเหตุเกี่ยวกับการใช้งาน AI ไว้ใน repository ของ ESP-WebSDR ด้วย:
บางส่วนของโค้ดนี้สร้างขึ้นโดย AI แม้ว่าเราจะใช้ความพยายามด้วยตนเองอย่างมากกับ pyespargos และเฟิร์มแวร์สำหรับอาร์เรย์ ESPARGOS One แต่เราไม่มีเวลามากพอที่จะตรวจสอบซอร์สโค้ดทั้งหมดของ ESP-WebSDR ด้วยตนเอง
แปลจากบทความ : ESP-SDR firmware turns ESP32 into a 2.4/5 GHz Software-Defined Radio (SDR)

บรรณาธิการข่าวและบทความภาษาไทย CNX Software ได้มีความสนใจในด้านเทคโนโลยี โดยเฉพาะ Smart Home และ IoT



