วันอังคารที่ 4 สิงหาคม พ.ศ. 2558

Arduino : การติดต่อสื่อสารผ่านทางพอร์ทอนุกรม (Serial Port)

 Arduino : การติดต่อสื่อสารผ่านทางพอร์ทอนุกรม (Serial Port)






ใช้ไมโครคอนโทรลเลอร์เป็นบอร์ด Arduino Uno R3 โดย Arduino Uno R3 จะทำหน้าที่เป็นทั้งตัวรับ และ ตัวส่งข้อมูล

การทำงานคือ Arduino Uno R3 จะคอยรับข้อมูลจากอุปกรณ์ภายนอกมาทางขา 10 (Rx) โดยกระบวนการทำงานภายในคือจะรับเป็นตัวอักขระมาทีละตัว แล้วนำอักขระ(char) มาต่อๆกัน ให้เป็นข้อความ(String) จากนั้นก็ทำการส่งข้อความออกไปทางขา 11 (Tx) เพื่อทำการส่งไปให้คอมพิวเตอร์

การทดสอบการใช้งาน ในการรับส่งข้อมูลโดยใช้โปรแกรม
- X-CTU (ฝั่งซ้าย) เป็นตัวส่งข้อมูลให้กับ Arduino Uno R3 โดยทำการส่งข้อมูลด้วย tool Assamble Packet
- X-CTU (ฝั่งขวา) เป็นตัวรับข้อมูล(คอมพิวเตอร์)

ดาวน์โหลดโปรแกรม X-CTU ได้จาก http://www.digi.com/products/wireless-wired-embedded-solutions/zigbee-rf-modules/xctu


แสดงการต่อวงจร





แสดงโค๊ดโปรแกรม







อธิบายโปรแกรม

บรรทัดที่ 1              เรียกใช้ไลบราลี่ SofewareSerail
บรรทัดที่ 3              ตั้งชื่อพอร์ตสือสารว่า mySerial (จะตั้งชื่อว่าอะไรก็ได้) และระบุขาที่ใช้ในการรับ-ส่งข้อมูล
ในที่นี้ใช้ ขา 10 เป็นขารับข้อมูล (Rx) และ ใช้ขา 11 เป็นขาส่งข้อมูล (Tx)
บรรทัดที่ 4              ประกาศตัวแปร inputString เป็นตัวแปรชนิดสตริง กำหนดค่าเริ่มต้นให้มีเท่ากับค่าว่าง
บรรทัดที่ 6              ประกาศตัวแปร c เป็นตัวแปรชนิดจำนวนเต็ม กำหนดค่าเริ่มต้น ให้มีค่าเท่ากับ 0
บรรทัดที่ 10           กำหนดความเร็วในการ รับ-ส่งข้อมูล (buadrate) ให้มีค่าเท่ากับ 9600
บรรทัดที่ 14           ฟังก์ชั่น void loop เป็นฟังก์ชั่นการทำงานในลักษณะ วนซ้ำๆ
บรรทัดที่ 16           คำสั่ง ในเงื่อนไข while ทำหน้าที่ตรวจเช็คข้อมูลที่เข้ามาทางขารับข้อมูล(Tx)

บรรทัดที่ 18           ประกาศตัวแปร inChar เป็นตัวแปรชนิดอักขระ
โดยข้อมูลที่รับเช้ามาทางขา Rx(mySerial.read) จะถูกนำไปเก็บไว้ในตัวแปร inChar

บรรทัดที่ 19           นำข้อมูลที่เก็บอยู่ในตัวแปร inChar มาเก็บไว้ในตัวแปร inputString ซึ่งเป็นการนำอักขระมาต่อๆกัน ให้เป็นข้อความ

บรรทัดที่ 20           กำหนดให้ตัวแปร c เพิ่มค่าทีละ 1
บรรทัดที่ 23           ทำการตรวจเช็คเงื่อนไขว่า c มีค่ามากกว่า 1 หรือไม่ ถ้าใช่ทำในบรรทัดถัด 25-28
ถ้าไม่ใช่ก็จะไม่เข้าไปทำในบรรทัดที่ 25-28

บรรทัดที่ 25           สั่งให้นำข้อความที่เก็บอยู่ในตัวแปร inputString +\r ส่งออกไปทางขาส่งข้อมูล (Tx)
บรรทัดที่ 26           ทำการเคลียข้อมูลหรือข้อความที่เก็บอยู่ในตัวแปร inputString ให้มีค่าทำกับค่าว่าง
บรรทัดที่ 27           ทำการกำหนดตัวแปร c ให้มีค่าเท่ากับ 0
บรรทัดที่ 30           ปิดฟังก์ชั่น loop

ปล. “\r”  หรือในฐานสิบหก(0D) หรือ Carriage return ใช้ตัวย่อว่า CR ในทางคอมพิวเตอร์ ถือเป็นตัวอักขระตัวหนึ่งที่มองไม่เห็น ใช้เมื่อสิ้นสุดการพิมพ์แต่ละบรรทัด และทำให้ตัวชี้ตำแหน่ง (cursor) ลงไปอยู่เป็นตำแหน่งแรกของบรรทัดถัดลงมา โดยปกติ จะกำหนดให้กดแป้น <RETURN> หรือ <ENTER>
ข้อมูลจาก :: http://dictionary.sanook.com/search/dict-computer/carriage-return


การใช้งานโปรแกรม X-CTU เบื้องต้นสุดๆ
ฝั่งส่งข้อมูล
1.เปิดโปรแกรมขึ้นมา ในแท็ป PC Setting ทำการเลือกคอมพอร์ต และ ทำการกำหนด baud rate





2. คลิกแท็ป terminal กดปุ่ม Show Hex





2.1เลือก Assamble Packet  จะปรากฏกล่องข้อความ ให้เราสามารถส่งข้อมูลออกไปได้ ซึ่งสามารถเลือกส่งข้อมูลได้ทั้ง Ascii และ Hex




ฝั่งรับข้อมูล
1.เปิดโปรแกรมขึ้นมา ในแท็ป PC Setting ทำการเลือกคอมพอร์ต และ ทำการกำหนด baud rate



2. คลิกแท็ป terminal กดปุ่ม Show Hex





ปล.ฝั่งรับข้อมูล ถ้าไม่ต้องการส่งข้อมูลกลับไป ก้ไม่ต้องเลือก Assamble Packet




ทดสอบส่งข้อมูล
ฝั่งส่ง                                                                                                                       ฝั่งรับ






เอกสารฉบับนี้ แจกฟรีโล๊ดดด...
Coppy , Edit , Share ตามอัธยาศัยเลยจร้า
ผิดพลาดประการใด แจ้งมาได้ที่ dekbandonza@hotmail.com
ปล.ผู้จัดทำก็มั่วๆเอาเหมือนกัน ฮ่าๆๆ

1 ความคิดเห็น:

เวลา 21 มกราคม 2561 เวลา 20:10 , Blogger Unknown กล่าวว่า...

ขอบคุณมากเลย

 

แสดงความคิดเห็น

สมัครสมาชิก ส่งความคิดเห็น [Atom]

<< หน้าแรก