You are on page 1of 10

EECM0422 Mobile Communication Systems (LAB)

การทดลองที่ 3
การใช GNU Radio ในการออกแบบระบบสื่อสารเบื้องตน
(Communication Systems Design using GNU Radio)

3.1 วัตถุประสงค
3.1.1 เพื่อเรียนรูการติดตั้งโปรแกรม GNU Radio บนระบบปฏิบัติการ Windows
3.1.2 เพื่อเรียนรูการใชงานโปรแกรม GNU Radio ในการออกแบบระบบสื่อสารเบื้องตน
3.1.3 เพื่อเรียนรูการปรับแตงการแสดงผลบน GNU Radio

3.2 โปรแกรม GNU Radio


GNU Radio คือ ซอฟตแวรที่เปนเครื่องมือทีใ่ ชในการเรียนรู การสรางและการใชงานเทคโนโลยีกําหนดสัญ ญาณ
วิทยุดวยซอฟตแวร (Software Defined Radio) GNU Radio มีการใหไลบรารี ของการประมวลผลสัญ ญาณมาใหมากมาย
ซึ่ง GNU Radio นี้เปนซอฟตแวรที่ไมมีลิขสิทธิ์ สามารถใชงานไดฟรีซอฟตแวรนี้ไดให Source Code ที่สมบูรณแบบสําหรับ
การทดลองสรางระบบสื่อสารโดยไมมีการปดบังรายละเอียดของโปรแกรม
สําหรับ การใชงาน GNU Radio ผูออกแบบระบบสื่อสารจะตองมีพื้นฐานความรูในดานตาง ๆ ดังนี้
1. การเขียนโปรแกรมแบบ Objected-Oriented Programming
2. การเขียนโปรแกรมโดยใชภาษาไพธอน (Python) และภาษาซีพลัสพลัส (C++)
3. พื้นฐานความรูในดานระบบการสื่อสารไรสาย เทคนิคการประมวลผลสัญ ญาณดิจิทัล ฮารด แวรเบื้องตน และ
การออกแบบวงจรไฟฟา
GNU Radio ประกอบดวยโครงสรางที่สํา คัญ 2 สวน ดังรูป ที่ 3.1 โดยบล็อกที่ใชในการประมวลผลสัญ ญาณ
ประมวลผลประสิทธิภาพของระบบทั้งหมดจะถูกสรางขึ้นมาจากการเขียนโปรแกรมคอมพิวเตอรภาษา C++ ในสวนที่สูงขึ้น
ไปคือ การบริหารจัด การระบบ การเชื่อมตอระหวางบล็อกแตละบล็อกที่ใชในการประมวลผลสัญ ญาณตลอดจนใชในการ
เชื่อมตอสัญญาณนั้น สรางขึ้นมาจากการเขียนโปรแกรมดวยภาษาไพธอน บล็อกสําหรับ ใชในการประมวลผลสัญ ญาณที่มี
การใชงานเปนประจําหรือมีการใชงานอยูบอย ๆ จะมีมาใหพรอมอยูแลวซึ่งจะอยูในสวนของตัวโปรแกรม GNU Radio

รูปที่ 3.1 โครงสรางของ GNU Radio

3-1
EECM0422 Mobile Communication Systems (LAB)

จากรูป ที่ 3.1 มีลักษณะที่คลายคลึงกันกับ โครงสรางของแบบจําลองเครือขาย OSI Model (7 Layers) โดยชั้น


ลางสุดจะใหบ ริการแกชั้นสูงสุด ชั้นสูงสุดจะเปนที่บ รรจุตัวโปรแกรมที ใชในการประมวลผลสัญ ญาณโดยการใชการเขียน
โปรแกรมภาษา C++ ในการพัฒนาโปรแกรม ภายในบล็ อกที่ ใชสําหรับ การประมวลผลสั ญ ญาณในแตละบล็อกจะเป น
ตัวแทนของการประมวลผลสัญญาณของอุปกรณที่ใชในการสรางระบบสื่อสาร โดยแตละบล็อกสามารถเชื่ อมตอการทํางาน
ดวยกันไดผานทาง Flow graph จะเห็นไดวาตัวบล็อกที่ใชในการประมวลผลสัญ ญาณและตัวบล็อกที่ เปนแอปพลิเ คชั่นนั้น
ถูกพัฒนาขึ้นมาดวยภาษาที่แตกตางกัน การที่จะทําใหทั้ง 2 บล็อก คือ บล็อกในการประมวลผลสัญ ญาณและบล็อกของ
แอปพลิเคชั่นสามารถสื่อสารกันไดตองใช SWIG ซึ่ง SWIG เปนเครื่องมือในการเชื่อมตอระหวางคลาสของโปรแกรมภาษา
C++ กับ Flow graph ที่ถูกพัฒนาดวยภาษาไพธอน ซึ่งก็คือ SWIG จะทําการแปลงคลาสของ C++ ใหอยูใ นรูป ที่คลายคลึง
กับ คลาสของภาษาไพธอนนันเอง ไมวาจะดวยเหตุใดก็ตามโปรแกรมที่ถูกเขียนดวยภาษาไพธอนนั้น มีขอดีที่โปรแกรมสั้นแต
ทํางานไดดี อีกทัง้ ยังเหมาะสมในการใชงานกับเทคโนโลยีกําหนดสัญ ญาณวิท ยุดวยซอฟตแวร สวนที่ยากที่สุด ในการพัฒนา
เทคโนโลยีนี้คือ การสรางตัวประมวลสัญ ญาณดวยภาษา C++ มีกฎอยูอยางหนึง่ ทีนาสนใจซึง่ มีใจความวา “สําหรับ การสราง
แอปพลิเคชั่นใด ๆ นั้น กอนที่จะสรางตองทราบวัตถุป ระสงคในการสราง ซึ่งในระดับ ของภาษาไพธอนนั้น จะทําการแสดง
ไดอะแกรมทิศทางการเคลื่อนที่ของสัญ ญาณจากตนกําเนิด ไปยังจุด รับ สัญ ญาณ ในบางครั้ งก็ยังสนับ สนุนการทํางานแบบ
GUI ดวย” ฉะนั้นการเรียนรูภาษาไพธอนจึงจําเปนอยางมากในการกาวเขามาสูโลกแหงการเรียนรูของชุดโปรแกรม GNU
Radio ขอดีของภาษาไพธอน อาทิเชนเปนภาษาทีม่ ีประสิทธิภาพ เปนภาษาที่งายและยืดหยุนในการเขียนโปรแกรม อีกทั้ง
หากมี ความชํานาญดา นการเขีย นโปรแกรมาภาษา C++ อยู แลว ก็ยิ่งทําใหโ ลกของเทคโนโลยีกํ าหนดสัญ ญาณวิท ยุดว ย
ซอฟตแวรดูงายขึ้นและงายตอการเรียนรู

การทดลอง

การทดลองที่ 1 การใชงานโปรแกรม GNU Radio Companion

1. เปดโปรแกรม GNU Radio Companion ตั้งคา Options ใหเปน QT GUI และตั้งคาตัวแปร (Variable) ชื่อ
samp_rate ใหมีคาเปน 48k แสดงไดดังรูปที่ 3.2

3-2
EECM0422 Mobile Communication Systems (LAB)

รูปที่ 3.2 การตั้งคา Options ใหเปน QT GUI และตั้งคาตัวแปร (Variable) ชื่อ samp_rate

2. ทําการสราง Simulation Block ดังแสดงในรูปที่ 3.3

รูปที่ 3.3 Simulation Block สําหรับการแสดงสัญญาณที่สรางขึ้นจาก Signal Source

จากรูปที่ 3.3 ประกอบดวยสวนประกอบของ Blocks ตาง ๆ ดังตอไปนี้

2.1 Signal Source เปน Block ที่อยูในเมนู Waveform Generators โดยใหตั้งคาตาง ๆ ดังแสดงในรูป ที่ 3.4

รูปที่ 3.4 การตั้งคา Signal Source โดยกําหนด Waveform ใหเปน Sine

3-3
EECM0422 Mobile Communication Systems (LAB)

2.2 Throttle เปน Block ที่อยูในเมนู Misc โดยใหตั้งคาตาง ๆ ดังแสดงในรูป ที่ 3.5

รูปที่ 3.5 การตั้งคา Throttle

2.3 QT GUI Frequency Sink เปน Block ที่อยูในเมนู Instrumentation>>QT โดยใหตั้งคาตาง ๆ ดังแสดงใน
รูปที่ 3.6

รูปที่ 3.6 การตั้งคา QT GUI Frequency Sink

3-4
EECM0422 Mobile Communication Systems (LAB)

2.4 ใหทําการบันทึกผลการทดลองดังตอไปนี้

2.4.1 Waveform: Constant

กําลังงานสูงสุดมีคาเทากับ ที่ความถี่

2.4.2 Waveform: Sine

กําลังงานสูงสุดมีคาเทากับ ที่ความถี่

3-5
EECM0422 Mobile Communication Systems (LAB)

2.4.3 Waveform: Cosine

กําลังงานสูงสุดมีคาเทากับ ที่ความถี่

2.4.4 Waveform: Square

กําลังงานสูงสุดมีคาเทากับ ที่ความถี่

3-6
EECM0422 Mobile Communication Systems (LAB)

2.4.5 Waveform: Triangle

กําลังงานสูงสุดมีคาเทากับ ที่ความถี่

2.4.6 Waveform: Saw Tooth

กําลังงานสูงสุดมีคาเทากับ ที่ความถี่

3-7
EECM0422 Mobile Communication Systems (LAB)

การทดลองที่ 3 การปรับ แตงการแสดงผลบน GNU Radio Companion

รูปที่ 3.7 Simulation Block สําหรับการปรับแตงการแสดงผลบน GNU Radio Companion

ตารางที่ 3.1 การตั้งคา Block ตาง ๆ สําหรับการปรับ แตงการแสดงผลบน GNU Radio Companion

ชื่อ Blocks เมนู การตั้งคา


Options Generate Option: QT GUI
Variable ID: samp_rate
Value: 48000
Signal Source Waveform Generators Sample Rate: samp_rate
Waveform: uisigtype
Frequency: uifreq
Amplitude: 1
Offset: 0
Throttle Misc Sample Rate: samp_rate
QT GUI Frequency Sink Instrumentation>>QT FFT Size: 1024
Center Frequency (Hz): 0
Bandwidth (Hz): samp_rate
Y Min: -200
Y Max: 10
Y Label: Power
GUI Hint: 1,0,1,2
QT GUI Range GUI Widgets>>QT ID: uifreq
Default Value: 1000
Start: 10
Stop: 10000
Step: 10
GUI Hint: 0,1

3-8
EECM0422 Mobile Communication Systems (LAB)

ชื่อ Blocks เมนู การตั้งคา


QT GUI Chooser GUI Widgets>>QT ID: uisigtype
Num Options: 2
Default Value: 101
Option 0: 101
Label 0: Sine
Option 1: 103
Label 1: Square
GUI Hint: 0,0

3.1 ใหทําการบันทึกผลการทดลองดังตอไปนี้

3.1.1 เปลี่ยน Widget เปน Knob ใน QT GUI Range

3-9
EECM0422 Mobile Communication Systems (LAB)

3.1.2 เพิ่มสัญญาณ Triangle และ Saw Tooth ใน QT GUI Chooser (ใหทําการบันทึกทั้ง Simulation Block
และผลลัพธจากการ Execute)

3-10

You might also like