CMT PLL Module Smart V2X

คู่มือคำสั่ง Serial และรายละเอียดการควบคุมความถี่ / TX / RX / ฟังก์ชันเสริม
วิเคราะห์จากซอร์สโค้ดรุ่น V2X ณ วันที่ 14 ตุลาคม 2026

1. ขอบเขตเอกสาร

เอกสารนี้สรุปคำสั่งที่ถูก parse ในไฟล์ CMT_PLL_MODULE_SMART_V2X.ino เป็นหลัก รวมถึงกลไกที่เกี่ยวข้องใน WiFi_Manager_CMT.h, CMT_Smart_Hardware.h และ API ของไลบรารีอ้างอิง CMT-ESP32-PLL_V1.

วิธีส่งคำสั่ง: เปิด Serial ที่ 115200 baud, พิมพ์คำสั่ง 1 บรรทัด แล้วกด Enter (CR หรือ LF ก็ได้) ตัว parser จะ trim และแปลงเป็นตัวพิมพ์เล็กก่อนตรวจสอบ ดังนั้นคำสั่งไม่แยกตัวพิมพ์ใหญ่/เล็ก แต่ข้อความที่ส่งในวงเล็บปีกกาอาจถูกแปลงเป็นตัวพิมพ์เล็กด้วย

หน่วยความถี่: ความถี่ RF ใช้ Hz เช่น 430200000 = 430.200 MHz; ความถี่เสียง/โทนใช้ Hz; เวลาใช้ ms; ความเร็ว Morse ใช้ WPM.

2. ภาพรวมการทำงาน

PLL / I²C
RDA/PLL address 0x71, SDA GPIO11, SCL GPIO10
PTT
GPIO14, Active LOW; กดแล้วเข้า TX, ปล่อยแล้วกลับ RX
Signal / RSSI
GPIO9 เป็น signal detect; GPIO21 เป็น LED/control
ค่าเริ่มต้น
RX/TX 430.200 MHz, RX/TX CTCSS index 12, Volume 8

ตอนบูต firmware บังคับเริ่มที่ RX เพื่อความปลอดภัย จากนั้นตรวจสิทธิ์ช่วงความถี่ด้วย Tier/Service Mode ก่อนเรียก pll.RX() หรือ pll.TX(). ความถี่จริงที่ส่งให้ PLL คือความถี่คำสั่งบวก XTAL offset ที่ตั้งไว้.

3. คำสั่งตั้งความถี่และเปลี่ยนโหมด

คำสั่งรูปแบบ / ตัวอย่างการทำงานผลตอบกลับ/ข้อจำกัด
cmt-ftx<freq>cmt-ftx430200000ตั้งค่า TX frequency ในตัวแปรปัจจุบัน ยังไม่ TX ทันทีรับ 10 MHz–1 GHz ก่อน แล้วตรวจ Tier/ช่วงที่อนุญาต
cmt-frx<freq>cmt-frx145500000ตั้งค่า RX frequency ในตัวแปรปัจจุบัน ยังไม่เปลี่ยน PLL ทันทีรับ 10 MHz–1 GHz ก่อน แล้วตรวจ Tier/ช่วงที่อนุญาต
cmt-txcmt-txเข้า TX ที่ txFreq, ตั้ง TX CTCSS, รอ 150 ms แล้วเล่น Roger profile 0ถ้าผ่านจะแจ้ง READY TO TRANSMIT; ถ้าไม่ผ่านจะแจ้ง RANGE LIMIT/TX failed
cmt-rxcmt-rxเล่น Roger profile 1, ตั้ง RX CTCSS แล้วเข้า RX ที่ rxFreqตรวจช่วงความถี่ก่อนเรียก PLL
cmt-dif<offset>cmt-dif+5000
cmt-dif-5000
ตั้ง repeater/TX offset ใน txOffset และเรียก pll.setTXDIF()หน่วย Hz; เป็น offset คนละส่วนกับ XTAL tuning
cmt-tune<offset>cmt-tune-1200ตั้ง XTAL offset แบบชั่วคราวใน RAM; มีผลกับความถี่ที่ส่งให้ PLLยังไม่ถาวรจนกว่าจะใช้ cmt-save
cmt-savecmt-saveบันทึกความถี่, โหมด, CTCSS, Volume, CW, Roger, ช่อง 0–9 และรวม XTAL RAM offset เข้าค่า NVSค่าจะคงอยู่หลังรีสตาร์ต
สำคัญ: cmt-ftx/cmt-frx เปลี่ยนค่าตัวแปร แต่ไม่ได้เรียก TX/RX เพื่อ tune ทันที หากต้องการให้ความถี่มีผลกับฮาร์ดแวร์ทันที ให้ตามด้วย cmt-tx หรือ cmt-rx หรือเลือกช่องด้วย cmt-mch<n>.

4. CTCSS และเสียง

คำสั่งตัวอย่างรายละเอียด
cmt-rxctcss<n>cmt-rxctcss12ตั้ง RX CTCSS index 0–39 และเรียก pll.RX_CTCSS() ทันที
cmt-txctcss<n>cmt-txctcss25ตั้ง TX CTCSS index 0–39 และเรียก pll.TX_CTCSS() ทันที
cmt-volume<n>cmt-volume8ตั้ง Volume 0–15; ตามคอมเมนต์ในโค้ด 0 = ดังสุด, 15 = เบาสุด

ถ้าใช้ PTT จริง: ตอนกดจะตั้ง TX CTCSS หลังเข้า TX; ตอนปล่อยจะตั้ง RX CTCSS ก่อนกลับ RX.

5. ช่องจำ 10 ช่อง (Memory Channels)

คำสั่งตัวอย่างรายละเอียด
cmt-mch<n>cmt-mch3เลือกช่อง 0–9, โหลด RX/TX frequency และ CTCSS ของช่องนั้น, บันทึก active channel และ tune PLL ทันทีตามโหมดปัจจุบัน
cmt-readch<n>cmt-readch3อ่านค่าออกเป็น CH:3,rx,tx,rxc,txc
cmt-writech<n>,<rx>,<tx>,<rxc>,<txc>cmt-writech3,145500000,145500000,12,12เขียนข้อมูลช่อง 0–9; ตรวจสิทธิ์ช่วง RX/TX ก่อนเขียน; ถ้าเป็นช่องที่ active จะอัปเดต PLL ทันที
การเขียนช่องอัปเดตใน RAM ก่อน ควรใช้ cmt-save เพื่อให้ข้อมูลช่องคงอยู่หลังรีสตาร์ต.

6. RSSI Monitor และ Frequency Sweep

คำสั่งตัวอย่างการทำงาน
cmt-rssi-streamcmt-rssi-streamเปิด RSSI stream, บังคับ RX ที่ rxFreq และส่งค่า RSSI mV ทาง Serial ทุกประมาณ 50 ms เมื่อ PTT ไม่ถูกกดและ GPIO9 เป็น HIGH
cmt-rssi-stopcmt-rssi-stopหยุด RSSI stream
xxคำสั่ง legacy สำหรับหยุด RSSI stream
cmt-sweep-on<step>cmt-sweep-on5000เปิด sweep RX รอบ rxFreq; step เป็น Hz, ค่าต่ำกว่า 100 จะถูกปรับเป็น 100; ใช้จุดตั้งแต่ -12 ถึง +12 steps (25 จุด) ตามค่าเริ่มต้น
cmt-sweep-offcmt-sweep-offปิด sweep

ขณะ sweep firmware จะ tune RX ทีละจุด อ่าน pll.CHK_RSSI_MV() แล้วส่งข้อมูลหนึ่งบรรทัดรูปแบบ SWDATA:v1,v2,... จากนั้นกลับไปยังความถี่กลาง. Sweep มีคอมเมนต์ระบุว่า bypass Tier check และเป็น RX-only จึงควรใช้ด้วยความระมัดระวัง.

7. Morse / CW และ Roger Beep

คำสั่งตัวอย่างรายละเอียด
cmt-morse{ข้อความ}cmt-morse{HELLO}ส่งข้อความ CW ด้วย pll.sendCWString(); ความยาว 1–50 ตัวอักษร
cmt-cwspeed<wpm>cmt-cwspeed20ตั้งความเร็ว CW 5–40 WPM
cmt-cwfreq<hz>cmt-cwfreq1200ตั้งความถี่เสียง CW 300–2000 Hz
cmt-rgrdebugcmt-rgrdebugแสดง Roger profiles
cmt-rgrtest1 / cmt-rgrtest2cmt-rgrtest1ทดสอบ Roger profile 0/1 ตามลำดับ (ในโค้ดคำสั่งใช้เลข 1 = profile index 0 และเลข 2 = index 1)
cmt-rgrspeed<wpm>cmt-rgrspeed25ตั้งความเร็ว Roger Morse 5–50 WPM
cmt-rgr1on / cmt-rgr1offcmt-rgr1onเปิด/ปิด Roger profile 1; profile 2 ใช้ cmt-rgr2on/off
cmt-rgr1{mode,freq,dur,pattern}cmt-rgr1{2,1800,0,-}ตั้ง profile 1; profile 2 ใช้ cmt-rgr2{...}. mode 0=OFF, 1=SINGLE_TONE, 2=MORSE_PATTERN

ค่าเริ่มต้นจากโค้ด: profile 0 = mode 2, 1800 Hz, pattern -; profile 1 = mode 2, 1800 Hz, pattern --; Roger เปิดใช้งานและความเร็ว 25 WPM. Roger profile 0 เล่นตอนเริ่ม TX และ profile 1 เล่นตอนจบ TX.

8. ระบบ, สิทธิ์ และการตรวจสอบ

คำสั่งตัวอย่างรายละเอียด
cmt- หรือ cmtcmt-ทดสอบ parser; ตอบ OK
cmt-helpcmt-helpแสดงเมนูคำสั่งใน Serial
cmt-statuscmt-statusแสดง Tier, Service, ช่วง VHF/CB/UHF, XTAL offset และ CH/RX/TX ปัจจุบัน
cmt-versioncmt-versionแสดงเวอร์ชัน Smart firmware; ค่าที่ define คือ V1.0.4-SMART
cmt-id หรือ cmt-get-idcmt-idแสดง Serial Number รูปแบบ SN:PLL-<MAC-derived-ID>
cmt-checkcmt-checkอ่าน I²C register 0x00 เพื่อตรวจการสื่อสาร; ผ่านจะแสดง SYSTEM CHECK: OK
cmt-reg<addr>cmt-reg00อ่าน register I²C โดย address เป็นเลขฐานสิบหก เช่น 00, 1A
cmt-resetcmt-resetรอ 1 วินาทีแล้ว restart ESP32
cmt-model<tier>cmt-model4ตั้ง Product Tier และบันทึก NVS; 0=ล็อก, 1=VHF, 2=CB, 3=UHF, 4=ALL, 9=GOV; ต้อง restart เพื่อให้ระบบเริ่มต้นใหม่ครบ
cmt-setlimits<6 ค่า>cmt-setlimits144000000,146000000,245000000,246000000,430000000,450000000ตั้งช่วง VHF start/end, CB start/end, UHF start/end และบันทึกใน security NVS
cmt-service0cmt-service0ปิด Service Mode
cmt-service1-<token>cmt-service1-SVC-XXXXXXXXเปิด Service Mode เมื่อ token ตรงกับ token ที่คำนวณจาก Serial Number ของเครื่อง; Service Mode อนุญาต 10 MHz–1 GHz
cmt-activate-<token>cmt-activate-<activation-token>เปิดใช้งาน module ด้วย activation token ที่ฝังใน firmware; เมื่อสำเร็จจะตั้ง Tier 4 หากเดิมล็อก แล้ว restart
ข้อควรระวังด้านสิทธิ์: เมื่อ Tier เป็น 0 (Factory Locked) ระบบจะหยุดการทำงานหลักและไม่ให้รับ/ส่งจนกว่าจะ activate หรือเข้า Service Mode. อย่าเปิด Service Mode ระหว่างต่อเสาอากาศ/โหลดที่ไม่เหมาะสม เพราะช่วงที่อนุญาตกว้างมาก.

9. ลำดับใช้งานแนะนำ

  1. เปิด Serial Monitor ที่ 115200.
  2. ตรวจอุปกรณ์ด้วย cmt-check, cmt-id, cmt-version และ cmt-status.
  3. ตั้ง RX/TX เช่น cmt-frx145500000 และ cmt-ftx145500000.
  4. ตั้ง CTCSS ด้วย cmt-rxctcss12 และ cmt-txctcss12.
  5. เข้า RX ด้วย cmt-rx; ทดสอบ TX ด้วย cmt-tx เมื่อระบบ/เสาอากาศพร้อม.
  6. ถ้าต้องการจำค่า ให้ใช้ cmt-save.
cmt-check
cmt-status
cmt-frx145500000
cmt-ftx145500000
cmt-rxctcss12
cmt-txctcss12
cmt-rx
cmt-save

10. API ของไลบรารีอ้างอิงที่พบในโครงการ

ส่วนนี้ไม่ใช่คำสั่ง Serial โดยตรง แต่เป็นฟังก์ชัน C++ ของ CMT_ESP32_PLL_V1 ที่สเก็ตช์/ตัวอย่างอ้างอิงสามารถเรียกใช้ได้:

Frequencybegin(), PLL_Initial(), TX(freq), RX(freq), SET_TX_FREQ(freq), SET_RX_FREQ(freq), setTXDIF(), setRXDIF(), autoCalibrateTX(), autoCalibrateRX()

CTCSSTX_CTCSS(), RX_CTCSS(), setupCTCSS(), disableCTCSS(), checkCTCSSDetected(), readDetectedCTCSS(), CHK_CTCSS()

Audio/RSSIsetVolume(), setSquelch(), CHK_RSSI(), CHK_RSSI_MV(), getRawRSSI(), getStatusRSSI(), s_meter_out()

DTMFsendDTMFTone(), sendDTMFSequence(), sendDTMFChar(), sendDTMFString(), setDTMFDuration(), setDTMFGap(), initDTMFDecoder(), availableDTMF()

FSK/AX.25initFSK(), sendFSKBit(), sendFSKByte(), sendFSKString(), sendFSKData(), sendAX25Packet(), sendBell202Tones(), sendFSKTestPattern(), setFSKBaudRate(), setFSKFrequencies()

CW/RogerinitCWTone(), sendCWChar(), sendCWString(), setCWSpeed(), setCWFrequency(), setRogerProfile(), setRogerMode(), playRoger(), enableRoger(), setRgrSpeed()

ตัวอย่าง DTMF/FSK/AX.25 ในโฟลเดอร์ ref เป็นตัวอย่าง API ของไลบรารี ไม่พบ parser คำสั่ง Serial สำหรับฟังก์ชันเหล่านี้ใน V2X หลัก ดังนั้นไม่ควรสรุปว่า cmt-... รองรับการส่ง DTMF/FSK โดยตรงใน firmware รุ่นนี้.

11. จุดที่ควรทราบจากซอร์สโค้ด

12. แหล่งอ้างอิงในโครงการ

ไฟล์ส่วนสำคัญ
CMT_PLL_MODULE_SMART_V2X.inoตัวแปรระบบ, parser คำสั่ง, PTT, RSSI, Sweep, NVS และลำดับ TX/RX
WiFi_Manager_CMT.hTier, band limits, Service Mode, XTAL offset, NVS security และ Web API
CMT_Smart_Hardware.hเวอร์ชัน, token activation, pin mapping และ Serial Number
ref/CMT-ESP32-PLL_V1/src/CMT-ESP32-PLL_V1.hรายการ API ของ PLL, CTCSS, RSSI, DTMF, FSK, CW และ Roger Beep

เอกสารนี้เป็นการถอดพฤติกรรมจากซอร์สโค้ด ไม่ใช่การยืนยันข้อกำหนดทางวิทยุหรือข้อกำหนดใบอนุญาตใช้งานคลื่นความถี่ ผู้ใช้งานต้องตรวจสอบกฎหมายและการต่อโหลด/เสาอากาศให้เหมาะสมก่อน TX.