การเขียนโปรแกรมประยุกต์ติดต่อกับไมโครคอนโทรลเลอร์ผ่านทาง Serial Port Computer

การเขียนโปรแกรมประยุกต์ติดต่อกับไมโครคอนโทรลเลอร์ผ่านทาง Serial Port Computer

    ในกรณีที่เราต้องการโปรแกรมสักตัวหนึ่งที่เอาไว้ดูข้อมูลที่วิ่งเข้าออกทาง Serial Port Computer เราอาจจะเลือกใช้โปรแกรมที่ติดต้งมากับระบบปฏิบัิติการ Windows เช่น Hyper Terminal หรือจะเป็นโปรแกรมสำเร็จรูปที่มีให้ดาวน์โหลดทางอินเตอร์เนต เช่น Putty หรือโปรแกรมติดต่อสื่อสารอื่น ซึ่งทางหากต้องการแค่ดูข้อมูลเพียงอย่างเดียว ก็คงเลือกใช้โปรแกรมเหล่านี้ได้ แต่ ถ้าในกรณีงานของเรามีความต้องการ นำข้อมูลที่รับมาได้ ไปประมวลผลต่อ หรือต้องการนำข้อมูลที่รับเข้ามาไปเป็นเงื่อนไข ในการสั่งงานอะไรสักอย่าง นั่นแปลว่า โปรแกรมที่พูดมาเหล่านี้ ไม่สามารถตอบโจทย์ของเราได้ ดังนั้น เราจำเป็นจะต้องสร้างโปรแกรมขึ้นมาใหม่ เพื่อใช้ในการติดต่อสื่อสารกับพอร์ตอนุกรมของคอมพิวเตอร์ เพื่อรับค่าจากไมโครคอนโทรลเลอร์ แล้วนำไปแสดงผล ประมวลผลต่อไป   

    ในการจะทำเช่นนั้นได้ เราเองในฐานะเป็นผู้สร้าง จะต้องมีความรู้ความเข้าใจเกี่ยวกับการเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ ภาษาใด ภาษาหนึ่งเป็นอย่างน้อย ซึ่งในปัจจุบัน หากเป็นภาษาคอมพิวเตอร์หลายๆ ภาษา มีความสามารถในการติดต่อสื่อสารกับพอร์ตอนุกรมติดมาด้วยอยู่แล้ว ไม่ว่าจะเป็น MATLAB , Python , Visual Studio.NET , LABView เหล่านี้ ล้วนแต่มีความาสามารถในการติดต่อสื่อสารกับพอร์ตอนุกรม ที่เป็น ไลบรารีเสริม ติดตั้งมากับภาษาเหล่านี้อยู่แล้ว 

    

    ในตอนนี้ ผมจะมาแนะนำการติดต่อสือสารกับพอร์ตอนุกรมของคอมพิวเตอร์ด้วยภาษา C#.NET จริงๆ หลายๆภาษาก็ทำได้ แต่ C#.NET ก็ตอบโจทย์เกี่ยวกับ Windows Programming ได้ค่อนข้างครอบคลุม และยังเข้ากันได้กับ Windows เป็นอย่างดี หากใครสนใจที่จะเขียนด้วย Python ติดต่อกับไมโครฯ ผ่านทาง Serial Port Computer ผมก็มีแนะนำ ที่นี่ ลองเอาไปประยุกต์กันดู 

อันดับแรก คงต้องแนะนำให้รู้จักกับ Serial Port Computer กันก่อน ซึ่งในปัจจุบันอาจจะหายากแล้วในคอมพิวเตอร์บางเครื่อง คงจะมีพอร์ต USB เข้ามาแทน แต่ เราก็ยังสามารถที่จะใช้ USB to TTL cable ที่มีขายอยู่ทั่วไป มาทดแทนกันได้ ขอเพียงมี Driver รองรับติดตั้งไว้ที่เครื่องคอมพิวเตอร์ของเรา ก็จะทำให้ Windows มองเห็นเป็นเสมือนพอร์ตอนุกรฒ พอร์ตหนึ่งเหมือนกัน ส่วนการเขียนโปรแกรมติดต่อก็เหมือนๆกัน 

    ก่อนที่เราจะมาลงมือเขียนโปรแกรมนั้น ผมจะขอพูดถึงภาพรวม ไม่อิงวิชาการมากนัก เพื่อให้เกิดความเข้าใจก่อน โดยผมจะแบ่งงานออกเป็น 3 กลุ่มใหญ่ด้วยกัน ก็คือ

จากรูปจะเห็นว่า PC เราจะส่งข้อมูลออกทาง Tx (อ้างอิงตามสายแปลง USB to TTL cable)  ไปยังขา Rx ซึ่งเป็นขา USART module ทำหน้าที่รับข้อมูล และขา Tx ของไมโครคอนโทรลเลอร์ส่งข้อมูลกลับมาที่ Rx ที่ฝั่งคอมพิวเตอร์ และกราวด์ทั้งสองฝั่ง ต่อถึงกัน ซึ่งเป็นการต่อแบบ Null Modem without handshaking 

    อันดับแรก เราจะมาจัดการกับฝั่ง PC ของเราก่อน ในที่นี้ เราจะมาเขียนโปรแกรมด้วยภาษา C#.NET ของบริษัทไมโครซอร์ฟ ซึ่งในเวอร์ชั่น Express edition นั้นสามารถให้โหลดมาใช้งานได้ฟรีๆ ซึ่งนั่นก็เพียงพอสำหรับการเขียนโปรแกรม สร้างหน้าต่าง GUI (Graphic User Interface) และติดต่อกับพอร์ต Serial ได้แล้ว เริ่มจากติดตั้งโปรแกรมชุดพัฒนา C# กันก่อนครับ ในที่นี้ขอเป็น Microsoft Visual C# 2008 Express ขึ้นไปนะครับ วิธีดาวน์โหลดและติดตั้งอยู่ ที่นี่ ครับ 

จากนั้น ก็เตรียมสายแปลง USB to TTL นะครับ หาซื้อได้ตามร้านค้าในอินเตอร์ของบ้านเรา ราคาประมาณเส้นละ ไม่เกิน 100 บาท ซึ่งเป็นสายสำหรับแปลงพอร์ต USB ของเราให้เป็น Serial Port ที่คอมพิวเตอร์มองเห็น แต่ ระดับสัญญาณอยู่ในช่วง TTL logic ดังนั้น เราไม่จำเป็นต้องใช้ IC Driver อย่างเช่น MAX232 แต่อย่างไร ในตอนต่อไป เรามาดูโค๊ดของของ C# กันครับ ว่าต้องมีอะไรบ้าง ใน ตอนที่ 2