APRS (Automatic Packet Report System) > KNOWLEDGE / เนื้อหาสาระความรู้

nTNC กับการพัฒนาและประยุกต์ใช้งาน

(1/3) > >>

HS5TQA:
ขออนุญาติตั้งกระทู้ใหม่ เพื่อเป็นกระทู้เนื้อหารวบรวมข้อมูลของ nTNC ตั้งแต่ต้น(2553)จนถึงปัจจุบัน และการนำไปประยุกต์ใช้งานในด้านต่าง ๆ ซึ่งทางผมจะออกแบบมาในรูปโมดูลเพื่อการถอดเปลี่ยนโยกย้ายสลับการใช้งานได้ง่าย เปรียบเสมือนผมสร้าง CPU มาตัวหนึ่ง ผู้พัฒนาคนต่อไปก็สร้างเมนบอร์ดมาใส่ CPU ส่งให้ผู้ใช้ทั่วไปเอาไปใช้งานต่อไป กรณีนี้ผมก็ออกแบบตัว nTNC-Module ซึ่งเป็นแกนหลัก นักพัฒนาคนอื่นก็จะออกแบบบอร์ดเชื่อมต่อมันกับดีไวซ์หรืออุปกรณ์อื่น ๆ เพื่อใช้งานต่อไปเช่น บอร์ดเชื่อมต่อระหว่าง nTNC กับ LinkSys  บอร์ดเชื่อมต่อกับราสเบอร์รี่พาย เป็นต้น สำหรับบอร์ดเชื่อมต่อนั้น ทางผมจะออกแบบให้เป็นตัวอย่างไว้ให้โดยขอใช้ชื่อตามท้ายว่า Evalution เพื่อใช้เป็นต้นแบบหรือแนวทางการนำไปประยุกต์ใช้งานต่อไป

แนวคิดในการออกแบบนั้น ผมชอบคนจีนอยู่อย่างหนึ่งคือ เขาสามารถทำของแพงให้เป็ฯของถูก ๆ ได้ไม่ว่าจะก๊อปมาก็ตามเถอะ เราก็พวกนักวิจัยพัฒนานะครับ มองยังไงก็ทำแข่งกับจีนไม่ได้ คือทำยังไงก็ราคาสูงกว่ามัน ถ้าจะให้ทำแบบราคาสูงไม่อั้นแบบนี้ใคร ๆ ก็ทำได้ครับ แต่ถ้าทำให้ถูกนั้นทำยากยิ่งกว่า มันก็เลยเหลือทางเลือกเดียวในตอนนี้คือ เลือกทำที่คนอื่นไม่ทำแล้วทำให้ถูกที่สุด ดังนั้นออกแบบวงจร ก็จะหาเลือกใช้อุปกรณ์น้อยที่สุด ราคาถูกที่สุด แต่มันต้องทำงานได้เหมือนเครื่องราคาแพง ๆ

เริ่มต้นการพัฒนาเครื่องต้นแบบ
สำหรับท่านอื่น ๆ อาจจะเริ่มจากการใช้แล้วค่อยสร้าง ส่วนทางผมมาแนวโหดนิดหนึ่งที่เริ่มจากการสร้างแล้วค่อยใช้ ถือว่าใช้เวลาหนักหนาสาหัสเลยทีเดียว แต่ด้วยพื้นฐานมาสายอีเล็ค-คอมฯ เลยไปได้ไม่ยากเย็นนัก เริ่มจากการใช้ MCU ตระกูล AVR ที่ถนัดใช้มันมาแต่กำเนิด จึงจับมันมาสร้างสัญญาณซายน์เวฟ 1200Hz และ 2200Hz ผนวกกับศึกษาโปรโตคอล APRS ตั้งแต่ระดับล่างสุดจนบนสุดได้แก่โปรโตอล AFSK NRZI HDLC AX.25 APRS จึงเรียนรู้ได้ไม่ยากเพราะเคยเรียนเป็นพื้นฐานมาหมดแล้ว การสร้างสัญญาณซายเวฟนั้นก็มีหลายวิธีด้วยกัน กรณีนี้ใช้ DAC(Digital to Analog Control) ถ้าไปดูพวกวงจรของ FoxDigi/FoxTracker ก็จะใช้รีซิสเตอร์อาร์เรย์ ทางผมมองแล้วมันใช้ขาของ MCU เยอะเกินไปจึงลดโดยการใช้เทคนิคของ PWM(Pule Width Mod) แทนซึ่งจะใช้ขา MCU เพียงขาเดียว กำหนดขนาดแรงดันออกด้วยการกำหนดความกว้างของพัลส์ ซึ่งเจ้า AVR เราก็สร้างสัญญาณ PWM ได้เร็วถึง 68KHz ในคริสตอล 18MHz สร้างสัญญาณออกมาแล้วกรองด้วย R/C นิดหน่อยเอาสโคปจับดู ได้สัญญาณซายน์เวฟออกมาสวยไม่มีรอยหยัก เอาละถึงเวลาส่งออกตามโปรโตคอลแล้วเริ่มจาก APRS(ข้อความ)->AFSK(สัญญาณซายน์เวฟ) เล่นเอาเหนื่อยไปหลายวันอยู่... พอส่งได้แล้วก็เปลี่ยนเป็นโหมดส่งสเตตัสง่าย ๆ จนกระทั่งเอา GPS จิ้มเข้าไปส่งข้อมูลเป็นแทรกเกอร์ได้



จากที่ลองเล่นมาหลายวัน หลายคนอาจจะรู้สึกเหมือนผมน่ะครับว่า เล่น APRS ในโหมดส่งแทรกเกอร์อย่างเดียวได้ประโยชน์ไม่เยอะเท่าไหร่ เหมือนประจานตัวเองอยู่ฝ่ายเดียว ยิ่งถ้าไม่มีคอมพิวเตอร์ ไม่มีอินเตอร์เน็ตด้วยแล้วก็แทบไม่อยากเล่นเลย เพราะเราดูข้อมูลไม่ได้! โชคดีที่ผมมีเจ้าเครื่อง VX8R ก็เลยถือติดรถไปด้วยเอาไว้แสดงผล tracker ตัวเองที่มันยิงออกมา กับข้อมูลของสถานีอื่น ๆ มันก็เลยคิดว่า ทำไมเราไม่ทำ Tracker ที่มันแสดงผลได้เหมือนเจ้าเครื่อง VX8R ใช้กันบ้างน่ะ.. อย่างน้อยก็จะได้รู้ว่าตัวเองอยู่ตำแหน่งไหนบ้าง ? หรือรู้ว่าเครื่องเรามันทำงานอยู่จริงหรือเปล่า ? คราวนี้ก็เลยมีแนวคิดว่ามันต้องทำ Tracker หรือ TNC ที่มันควรจะมอนิเตอร์ข้อมูล APRS ได้ แล้วมันจะดูมีประโยชน์ขึ้นอีกเยอะเลย ดังนั้นจึงเริ่มออกแบบในโหมดการรับบ้าง โดยเทคนิคการถอดสัญญาณซายน์เวฟมาเป็นบิทข้อมูลนั้น เริ่มด้วยใช้หลักการง่าย ๆ คือจับสัญญาณซายน์เวฟขยายสัญญาณให้มันเป็นคลื่นสี่เหลี่ยม แล้วเอาเคาท์เตอร์จับเวลาความกว้างของพัลซ์ที่ได้ คลื่นกว้าง ๆ คือความถี่ 1200Hz คลื่นแคบ ๆ ก็ความถี่ 2200Hz ในวงจรจริงก็ใช้แค่คอมพาราเตอร์กับไทม์เมอร์เค้าท์เตอร์ซึ่งใน AVR ก็มีให้อยู่แล้ว เมื่อได้บิทข้อมูลก็ถอดด้วย NRZI HDLC AX25 และ APRS ตามลำดับ กว่าจะได้ก็เล่นเอาเหนื่อยกว่าตอนส่งอีกนะครับ


ภาพประกอบ Yaesu VX-8R


ภาพประกอบ Yaesu FTM-350

เมื่อเราสามารถรับข้อมูล APRS ขาเข้าได้แล้วก็ให้มันส่งออกมาทาง UART ในรูปแบบข้อความ TNC2 Monitor ก็จะคล้าย ๆ กับ miniTNC หรือ FoxDigi นั่นแหละครับ ซึ่งแน่นอนว่าตอนนี้มันทำงานเป็น TNC ได้ทั้งรับและส่ง ในส่วนของดิจินั้น เขียนโปรแกรมเพิ่มเติมนิดหน่อย ก็สามารถรับและส่งต่อได้ไม่ยากเย็นเท่าไหร่นัก เมื่อวิบากกรรมในการเข้ารหัสและถอดรหัสทางด้านฮาร์ดแวร์และซอฟร์แวร์เสร็จสิ้นลงแล้ว ก็จับเอาจอแสดงผลมาใส่ให้มันสักหน่อย ที่เห็นดูดีราคาถูกในตอนนั้นก็เป็นจอโนเกีย 3110 LCD ขนาด 84x48 Pixel โมโนโครม เมื่อรับข้อมูลได้ก็ถอดรหัสโปรโตคอล APRS ออกมาแสดงผล




การพัฒนาขึ้นอีกขั้นในการประยุกต์ใช้งาน
จากที่เราออกแบบบนโฟโต้บอร์ดและบนปริ้นท์อเนกประสงค์ไปแล้วนั้น ได้เอาไปใช้ในงาน แทรกเกอร์บ้าง สถานีตรวจวัดอากาศบ้าง เอาไปเป็นไอเก็ตบ้าง ดิจิบ้าง ฯลฯ เมื่อคิดว่าถ้าออกแบบ PCB ขึ้นมารองรับงานทั้งหมดดูแล้วค่อนข้างวุ่นวายน่าดู จึงมีแนวคิดว่า ถ้าทำออกมาเป็นโมดูลหลักสักตัว แล้วค่อยประยุกต์อุปกรณ์น้อยชิ้นนิดหน่อยเพื่อไปเชื่อมต่อในงานต่าง ๆ น่าจะดีกว่า ดังนั้นจึงได้ออกแบบออกมาเป็น nTNC-Module ที่มีขนาด 28ขา PDIP เท่ากับไอซี 28ขาแบบกว้าง ซึ่งจะสามารถใช้ซ๊อกเก็ต 28ขาได้ ถอดเปลี่ยนได้ง่าย ซ่อมแซมได้ง่าย



รุ่นนี้ทำออกมาเพียงแค่ 10ชุดเท่านั้น ส่วนใหญ่เอาไปใช้กับสถานีตรวจวัดอากาศ(อุตรดิตถ์ สงขลา กรุงเทพฯ) ไอเก็ต(HS5TQA) ดิจิ(HS5TQA-3) ผนวกกับเป็นช่วงมรสุมงานเข้ามาเยอะมากจนไม่มีเวลาผลิตต่อ จึงไม่มีนักวิทยุสมัครเล่นท่านใหนได้มีโอกาศได้ไปใช้งานเลย

การพัฒนาขั้นสุดท้ายแต่ยังไม่ท้ายสุด
ผลจากการทดลองใช้งานเจ้า nTNC มานานนับปี และมีผู้ใช้แทรกเกอร์มากขึ้น ซึ่งยากต่อการปรับเสียงของผู้ใช้ให้มีมาตรฐานตรงกัน ซึ่งส่งผลให้ nTNC ที่ถอดสัญญาณในรูปแบบคอมพาราเตอร์นั้นมีปัญหาจากที่ความแรงของสัญญาณความถี่ 1200Hz กับ 2200Hz ไม่เท่ากัน หรือมีฮาร์โมนิคเกิดขึ้นมาทำให้วัดคาบเวลาควางกว้างของพัลซ์ผิดเพี้ยนไป ส่งผลให้ถอดสัญญาณได้บ้างไม่ได้บ้างตามแทรกเกอร์นั้น ๆ ที่ปรับแต่งไว้ และมีปัญหาจากแฟกเตอร์อื่นๆ เข้ามาอีกมาก ซึ่งคาดว่ายังไม่เหมาะที่จะให้ผู้ใช้อื่นเอาไปประยุกต์ใช้งาน ดังนั้นจึงพัฒนาใหม่ทั้งทางฮาร์ดแวร์และซอฟร์แวร์ โดยใช้เทคนิคถอดรหัสใหม่เป็น FFT(Fast Fourier Tranform) ซึ่งเป็นการแปลงสัญญาณอนาล๊อกให้เป็นดิจิตอล(ADC) แล้วนำข้อมูลดิจตอลไปประมวลผลทางคณิตศาสตร์(กรองความถี่ทางดิจิตอล) ได้ผลที่ออกมาดีกว่าเดิมมาก สามารถรองรับสัญญาณที่ผิดเพี้ยน และแตกต่างกันได้มากขึ้น จึงได้ทดลองดัดแปลง nTNC เดิมแล้วทดสอบในสถานีตรวจวัดอากาศจังหวัดอุตรดิตถ์ที่ทำหน้าที่เป็น ดิจิและไอเก็ตอยู่ ซึ่งให้ผลที่น่าพอใจ ดูผลการทำงานได้ที่ลิงค์ http://www.hamsiam.com/smf/index.php?topic=118751.0 จึงได้ออกแบบ PCB เจ้า nTNC ใหม่ตามฮาร์ดแวร์ที่เปลี่ยนแปลงไปเล็กน้อย



เปลี่ยนแปลงการพัฒนาระบบแสดงผล
จากการพัฒนา nTNC ที่สามารถแสดงผลออกจอ LCD ได้นั้น เมื่อพัฒนามาถึงจุดหนึ่งพบว่า ขนาดหน่วยความจำโปรแกรมของ MCU นั้นไม่เพียงพอ และเป็น MCU รุ่นสูงสุดที่บรรจุหน่วยความจำไว้ถึง 32KB แล้ว(ไม่มีตัวใหญ่กว่านี้) จึงตกลงปลงใจว่าถอดระบบการแสดงผลออกไป เน้นเรื่องการใช้งานเป็น igate/digi/tnc/tracker/wx และ Telemetry ไปเลยดีกว่า ซึ่งก็นับว่าสามารถนำไปประยุกต์ใช้งานได้มากแล้ว ในส่วนการแสดงผลนั้นจึงมีแนวคิดโยนไปเรื่องใหม่ ซึ่งจะนำเอา CPU ตระกูล ARM Cortex-M3 มาใช้แทน ซึ่งปัจจุบันมีราคาที่ถูกลงในประสิทธิภาพที่สูงขึ้นกว่า MCU รุ่นอื่น ๆ ที่เทียบจากระดับราคาเดียวกันหลายเท่าตัวนัก และจะนำเสนอเป็นหัวข้อการพัฒนาระบบแสดงผล APRS เป็นเรื่องใหม่ เพราะไม่ได้เกี่ยวต่อเนื่องกับ nTNC ในหัวข้อนี้

การประยุกต์ใช้งาน
ในส่วนการนำไปประยุกต์ใช้งานนั้น ด้วยตัว nTNC-Module เองสามารถนำไปใช้งานได้โดยตรงถ้าอุปกรณ์ที่จะไปเชื่อมต่อนั้นมีอินเตอร์เฟสที่สอดคล้องกับ nTNC ในส่วนด้านบอร์ดอินเตอร์เฟสอื่น ๆ นั้นจะออกเป็นบอร์ด Evalution เพื่อเป็นตัวอย่างในการประยุกต์ใช้งานในด้านต่าง ๆ ที่จะนำเสนอต่อไป




HS2NBE:
nTNC สำหรับ wx  ส่วน อุปกรณ์ จัดหา จาก ภายในประเทศได้ ไหม ครับ

HS5TQA:

--- อ้างจาก: HS2NBE ที่ พฤศจิกายน 20, 2012, 10:48:16 AM ---nTNC สำหรับ wx  ส่วน อุปกรณ์ จัดหา จาก ภายในประเทศได้ ไหม ครับ

--- End quote ---
คือส่วน WX นั้น ทำออกมารองรับกับ Lacross WS-2316 ที่เมื่อก่อนท่าน E20GMY นำเข้ามาขายให้อยู่พักหนึ่งนะครับ
ส่วนรุ่นหลัง ๆ ลาคอสทำออกมาเป็น USB กำลังหาทางแฮกค์มันอยู่ครับผม

HS5FXK:
nTNC-Module (สงสัยงานจะเข้าซะล่ะ  :'( ) หลังจากจ่ายไฟแล้วสถานะไฟแสดงสถานะวิ่งไล่กันแล้วหลังจากนั้นไฟทั้งสามดวงติดทุกดวงไม่ยอมดับ นี่มีทางกู้กลับได้มั้ยครับ

HS5TQA:

--- อ้างจาก: HS5FXK ที่ ธันวาคม 01, 2012, 09:21:18 AM ---nTNC-Module (สงสัยงานจะเข้าซะล่ะ  :'( ) หลังจากจ่ายไฟแล้วสถานะไฟแสดงสถานะวิ่งไล่กันแล้วหลังจากนั้นไฟทั้งสามดวงติดทุกดวงไม่ยอมดับ นี่มีทางกู้กลับได้มั้ยครับ

--- End quote ---
อาการนี้ผมยังไม่แน่ใจว่าเป็นปัญหาที่ตัว MCU เองหรือไม่นะครับ ที่แน่ ๆ คือแฟลซโปรแกรมไม่เข้าหรือเสีย
อาทิตย์นี้ผมขึ้นเหนือ เห็นรถผมวิ่งผ่านก็กวักมือเรียกเปลี่ยนเอาของใหม่ไปก็แล้วกันนะครับ

นำร่อง

[0] ดัชนีข้อความ

[#] หน้าถัดไป

Go to full version