การสื่อสารผ่านพอร์ทอนุกรม

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา

ไมโครคอนโทรลเลอร์ส่วนใหญ่ (รวมถึงเบอร์ ATMega168 ที่ใช้ในรายวิชา) มีความสามารถในการรับส่งข้อมูลระหว่างอุปกรณ์อื่นและคอมพิวเตอร์ผ่านพอร์ทอนุกรม (serial port) เราจึงสามารถนำคุณสมบัตินี้มาใช้ในการแสดงผลลัพธ์การทำงานของบอร์ดไมโครคอนโทรลเลอร์ที่ให้รายละเอียดมากกว่าการแสดงผลผ่าน LED เพียงอย่างเดียวได้ อีกทั้งสภาพแวดล้อมของ Arduino ยังมีคำสั่งจำพวก Serial.print ที่นำไปใช้ในการส่งข้อความมาแสดงผลบนหน้าจอคอมพิวเตอร์ได้ทันที การสื่อสารแบบอนุกรมนั้นต้องการใช้สายสัญญาณเพียงเส้นเดียวต่อการส่งสัญญาณหนึ่งทิศทาง ดังนั้นการเชื่อมต่ออุปกรณ์เข้าด้วยกันจึงต้องการสายไฟเพียง 3 เส้น เป็นสายสัญญาณสองเส้นเพื่อรับส่งข้อมูลสองทิศทาง และสายอ้างอิงศักย์ไฟฟ้า (หรือกราวนด์) อีกหนึ่งเส้น ตามภาพ

การเชื่อมต่อกับอุปกรณ์อื่นผ่านการสื่อสารแบบอนุกรม

คอมพิวเตอร์รุ่นใหม่โดยเฉพาะอย่างยิ่งคอมพิวเตอร์แบบโน้ตบุ๊กในปัจจุบันมักไม่มีพอร์ทอนุกรมติดมาให้ จึงต้องอาศัยอุปกรณ์เสริมที่เรียกว่า USB to serial adapter หรือ USB-Serial dongle ที่เพิ่มพอร์ทอนุกรมให้กับคอมพิวเตอร์ ตามมาตรฐานการสื่อสารผ่านพอร์ทอนุกรมนั้นมีการใช้หัวเชื่อมต่อแบบ DE-9 ที่มีลักษณะดังภาพ

อะแดปเตอร์ USB-Serial ที่มีหัวเชื่อมต่อแบบ DE-9 ตัวผู้

ในรายวิชานี้ เราจะใช้อะแดปเตอร์ USB-Serial ชนิดที่รับข้อมูลจากพอร์ท USB แล้วแปลงเป็นสัญญาณแบบ TTL โดยตรง ทำให้นำไปใช้เชื่อมต่อกับบอร์ดไมโครคอนโทรลเลอร์ได้ทันทีโดยไม่ต้องผ่านหัวเชื่อมต่อแบบ DE-9 ดังภาพ

USB-Serial Dongle ที่ใช้ในรายวิชา

การเชื่อมอะแดปเตอร์เข้ากับบอร์ดไมโครคอนโทรลเลอร์

ตามหลักการแล้วการเชื่อมต่ออุปกรณ์สองชิ้นเข้าด้วยกันผ่านการสื่อสารแบบอนุกรมนั้นทำได้โดยการเชื่อมขา TX (Transmit) เข้ากับขา RX (Receive) ของอุปกรณ์ตรงข้ามให้ครบทั้งสองทิศทางดังรูปด้านบน กรณีที่เราต้องการส่งข้อมูลจากบอร์ดไมโครคอนโทรลเลอร์ไปยังคอมพิวเตอร์เพียงทิศทางเดียวนั้นจะใช้สายเชื่อมเพียงสองเส้น คือ

  • ขา Tx จากบอร์ดไมโครคอนโทรลเลอร์ (ขาเดียวกับ PD1) เชื่อมกับขา Rx ของอะแดปเตอร์
  • ขา GND จากบอร์ดไมโครคอนโทรลเลอร์ เชือมกับขา GND ของอะแดปเตอร์

สังเกตว่าขา Tx และ Rx ของไมโครคอนโทรลเลอร์เป็นขาเดียวกับ PD1 และ PD0 ตามลำดับ จึงต้องมีการบัดกรีคอนเน็คเตอร์แบบ 5x2 ลงไปที่ตำแหน่งพอร์ท D ก่อนจึงจะใช้งานได้

ผังภาพการเชื่อมต่อบอร์ดไมโครคอนโทรลเลอร์เข้ากับอะแดปเตอร์ USB-Serial (รุ่นสีน้ำเงิน)

อย่างไรก็ตาม อะแดปเตอร์รุ่นสีแดงจะมีการใช้ขา Tx เป็นขารับสัญญาณ จึงต้องต่อขา Tx (PD1) จากบอร์ดไมโครคอนโทรลเลอร์เข้ากับขา Tx ของอะแดปเตอร์แทน ดังรูป

ผังภาพการเชื่อมต่อบอร์ดไมโครคอนโทรลเลอร์เข้ากับอะแดปเตอร์ USB-Serial (รุ่นสีแดง)

จากนั้นเสียบทั้งบอร์ดไมโครคอนโทรลเลอร์และอะแดปเตอร์ USB-Serial เข้ากับพอร์ท USB ของคอมพิวเตอร์ดังภาพ

ตัวอย่างการเชื่อมต่อบอร์ดไมโครคอนโทรลเลอร์เข้ากับอะแดปเตอร์ USB-Serial

โค้ดเฟิร์มแวร์สำหรับส่งผลลัพธ์ออกสู่พอร์ทอนุกรม