- ส่วนประกอบที่จำเป็น
- แผนภูมิวงจรรวม
- การสื่อสารแบบอนุกรมโดยใช้หน้าต่างคำสั่ง MATLAB
- การสื่อสารแบบอนุกรมโดยใช้ MATLAB GUI
MATLAB เป็นซอฟต์แวร์อเนกประสงค์ที่สามารถใช้งานได้หลากหลาย ในบทเรียนก่อนหน้าของ MATLAB เราได้อธิบายวิธีใช้ MATLAB เพื่อควบคุมมอเตอร์กระแสตรงเซอร์โวมอเตอร์และเครื่องใช้ภายในบ้าน ที่นี่ในการกวดวิชานี้เราจะได้เรียนรู้วิธีการใช้ MATLAB สำหรับการสื่อสารแบบอนุกรม สำหรับการสิ้นสุดการสื่อสารแบบอนุกรมเราอยู่ที่นี่โดยใช้ Arduino
มีสองวิธีในการตั้งค่าการสื่อสารแบบอนุกรมระหว่าง MATLAB และ Arduinoวิธีหนึ่งคือการใช้หน้าต่างคำสั่งและอีกวิธีหนึ่งคือการใช้ MATLAB GUI รหัส Arduino สำหรับทั้งสองวิธีจะยังคงเหมือนเดิม หากคุณยังใหม่กับ MATLAB ขอแนะนำให้เริ่มต้นด้วยโปรแกรม LED กะพริบอย่างง่ายด้วย MATLAB และเรียนรู้คำศัพท์พื้นฐานที่ใช้ใน MATLAB
ส่วนประกอบที่จำเป็น
- MATLAB ติดตั้งแล็ปท็อป (ค่ากำหนด: R2016a ขึ้นไป)
- Arduino UNO
- LED (สีใดก็ได้)
- ตัวต้านทาน (330 โอห์ม)
แผนภูมิวงจรรวม
แผนภาพวงจรข้างต้นจะยังคงเหมือนเดิมสำหรับทั้งสองวิธีในการสร้างการสื่อสารแบบอนุกรมระหว่าง MATLAB และ Arduino
การสื่อสารแบบอนุกรมโดยใช้หน้าต่างคำสั่ง MATLAB
นี่เป็นวิธีง่ายๆในการตั้งค่าการสื่อสารแบบอนุกรมระหว่าง Arduino และ MATLAB ที่นี่เราจะส่งข้อมูลจาก MATLAB ไปยัง Arduino โดยใช้หน้าต่างคำสั่งแบบอนุกรมจากนั้น Arduino อ่านข้อมูลอนุกรมที่เข้ามา จากนั้นข้อมูลที่ส่งแบบอนุกรมนี้สามารถใช้เพื่อควบคุมทุกสิ่งที่เชื่อมต่อกับ Arduino ที่นี่เราได้เชื่อมต่อ LED กับ Arduino ซึ่งจะเปิดและปิดตามข้อมูลที่ได้รับแบบอนุกรมโดย Arduino
ขั้นแรกให้อัปโหลดรหัส Arduino ที่กำหนดใน Arduino UNO จากนั้นเริ่มการเข้ารหัสใน MATLAB Editor Window หากต้องการเปิดสคริปต์ตัวแก้ไขใหม่ให้คลิกที่ ' สคริปต์ใหม่' ดังที่แสดงในภาพด้านล่าง:
จากนั้นคัดลอกและวางโค้ด MATLAB ที่สมบูรณ์ด้านล่างในหน้าต่างตัวแก้ไขสำหรับการสื่อสารแบบอนุกรมระหว่าง MATLAB และ Arduino
% MATLAB Code สำหรับการสื่อสารแบบอนุกรมระหว่าง Arduino และ MATLAB x = serial ('COM18', 'BAUD', 9600); fopen (x); ไป = จริง; ในขณะที่ไป a = input ('กด 1 เพื่อเปิด LED & 0 เพื่อปิด:'); fprintf (x, ก); ถ้า (a == 2) go = false; ปลายปลาย
ในรหัสที่กำหนดคำสั่งด้านล่างใช้สำหรับกำหนดการสื่อสารแบบอนุกรมใน MATLAB ตรวจสอบให้แน่ใจว่าหมายเลขพอร์ต COM เป็นจำนวนพอร์ตที่มีการเชื่อมต่อ Arduino และอัตราบอดควรจะตั้งเดียวกันทั้งในรหัสของArduino และ MATLAB
x = อนุกรม ('COM18', 'BAUD', 9600);
ในการเปิดพอร์ตอนุกรมให้ใช้คำสั่งด้านล่าง
fopen (x);
คำสั่งด้านล่างนี้ใช้เพื่อส่งข้อมูลจาก MATLAB ไปยัง Arduino แบบอนุกรมโดยที่ x ใช้สำหรับการเรียก อนุกรม และ a คือค่าที่ผู้ใช้ป้อน
fprintf (x, ก);
เราใช้ฟังก์ชัน while ใน การสร้างลูปที่ไม่มีที่สิ้นสุดและเมื่อใดก็ตามที่ผู้ใช้ป้อนหมายเลข '2' วงจะแตก
ในขณะที่ไปa = input ('กด 1 เพื่อเปิด LED & 0 เพื่อปิด:'); fprintf (x, ก); ถ้า (a == 2) go = false; ปลายปลาย
หลังจากเข้ารหัสสคริปต์ตัวแก้ไข MATLAB เสร็จแล้วให้คลิกที่ ' RUN ' เพื่อเรียกใช้โปรแกรมของคุณดังที่แสดงในภาพด้านล่าง
MATLAB ใช้เวลาไม่กี่วินาทีในการประมวลผลโค้ดและเริ่มการสื่อสารแบบอนุกรมรอจนกระทั่ง MATLAB แสดงข้อความ 'ไม่ว่าง' ที่มุมล่างซ้ายของหน้าจอซอฟต์แวร์ดังที่แสดงในภาพด้านล่าง
ตอนนี้คุณจะเห็นหน้าต่างคำสั่งสำหรับส่งอินพุตของผู้ใช้เราได้ตั้งค่าข้อความเริ่มต้น
'กด 1 เพื่อเปิด LED & 0 เพื่อปิด:'
ส่ง '1' เพื่อเปิด LED, '0' เพื่อปิด LED และ '2' เพื่อหยุดการทำงาน คุณสามารถตั้งค่าหมายเลขใดก็ได้สำหรับงานใด ๆ สิ่งที่คุณต้องทำก็เพียงแค่เปลี่ยนรหัส Arduino ตามนั้น รหัส Arduino ที่สมบูรณ์จะได้รับในตอนท้าย
คุณสามารถตรวจสอบวิดีโอด้านล่างเพื่อเข้าใจกระบวนการที่สมบูรณ์ของ การส่งข้อมูลแบบอนุกรมจาก MATLAB เพื่อ Arduino ใช้หน้าต่างคำสั่ง
การสื่อสารแบบอนุกรมโดยใช้ MATLAB GUI
สำหรับการสาธิตการสื่อสารแบบอนุกรมโดยใช้ MATLAB GUI เราจะสร้างปุ่มกราฟิกสองปุ่มโดยใช้ MATLABเพื่อเปิดและปิด LED ที่เชื่อมต่อกับ Arduino ข้อมูลจะถูกส่งแบบอนุกรมจาก MATLAB ไปยัง Arduino เมื่อคลิกที่ปุ่มเหล่านี้เพื่อเปิดและปิด LED Arduino จะมีรหัสสำหรับรับข้อมูลอนุกรมจาก MATLAB และควบคุม LED ตามข้อมูลอนุกรมที่ได้รับ รหัส Arduino จะยังคงเหมือนเดิมมีข้อแตกต่างเพียงอย่างเดียวคือก่อนหน้านี้เราส่งข้อมูลอนุกรม '1' และ '0' ผ่านหน้าต่างคำสั่งของ MATLAB และตอนนี้ข้อมูลเดียวกันจะถูกส่งไปที่การชนกันบนปุ่มกราฟิกสองปุ่ม
ในการเปิดใช้งาน GUI ให้พิมพ์คำสั่งด้านล่างใน หน้าต่างคำสั่ง
คู่มือ
หน้าต่างป๊อปอัปจะเปิดขึ้นจากนั้นเลือก GUI เปล่า ใหม่ดังที่แสดงในภาพด้านล่าง
ตอนนี้เลือกปุ่มกดสองปุ่มสำหรับเปิดและปิด LEDดังที่แสดงด้านล่าง
หากต้องการปรับขนาดหรือเปลี่ยนรูปร่างของปุ่มเพียงแค่คลิกที่ปุ่มแล้วคุณจะสามารถลากมุมของปุ่มได้ การดับเบิลคลิกที่ปุ่มกดคุณสามารถเปลี่ยนสีสตริงและแท็กของปุ่มนั้น ๆ ได้ เราได้ปรับแต่งปุ่มสองปุ่มตามที่แสดงในภาพด้านล่าง
คุณสามารถปรับแต่งปุ่มตามที่คุณเลือก ตอนนี้เมื่อคุณบันทึกรหัสจะสร้างขึ้นใน หน้าต่างแก้ไข ของ MATLAB แก้ไขรหัสนี้ตามงานที่คุณต้องการทำโดย Arduino ของคุณโดยใช้ MATLAB GUI ด้านล่างเราได้แก้ไขโค้ด MATLAB คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับหน้าต่างคำสั่งหน้าต่างตัวแก้ไขและอื่น ๆ ในการเริ่มต้นใช้งานบทช่วยสอน MATLAB
กรอกรหัส MATLABสำหรับการสร้าง Serial Communication ระหว่าง MATLAB และ Arduino จะได้รับในตอนท้ายของโครงการนี้ นอกจากนี้เรายังรวมไฟล์ GUI (.fig) และไฟล์โค้ด (.m) ไว้ที่นี่เพื่อดาวน์โหลด (คลิกขวาที่ลิงค์จากนั้นเลือก 'บันทึกลิงค์เป็น… ') ซึ่งคุณสามารถปรับแต่งปุ่มได้ตามความต้องการของคุณ ด้านล่างนี้เป็นการปรับแต่งบางอย่างที่เราทำเพื่อควบคุม LED ที่เชื่อมต่อกับ Arduino
คัดลอกและวางโค้ดด้านล่างในบรรทัดที่ 74 เพื่อตั้งค่าพอร์ตอนุกรมและอัตราการส่งข้อมูล
ลบทั้งหมด; x ทั่วโลก; x = อนุกรม ('COM18', 'BAUD', 9600); ตรวจสอบให้แน่ใจว่าอัตราการรับส่งข้อมูลและพอร์ต COM เป็น % เหมือนกับใน Arduino IDE fopen (x);
โดยที่ fopen (x) ใช้เพื่อเปิดพอร์ตอนุกรมสำหรับการสื่อสารแบบอนุกรม
เมื่อคุณเลื่อนลงคุณจะเห็นว่ามีสองฟังก์ชันที่สร้างขึ้นสำหรับทั้งสองปุ่มใน GUI ตอนนี้เขียนโค้ดในฟังก์ชั่นทั้งสองตามงานที่คุณต้องการดำเนินการเมื่อคลิก
ในฟังก์ชันของปุ่ม LED-ON ให้คัดลอกและวางรหัสด้านล่างก่อนสิ้นสุดฟังก์ชันเพื่อเปิดไฟ LED ดังที่คุณเห็นในโค้ดด้านล่าง fprintf (x, 1) ใช้สำหรับส่งข้อมูลแบบอนุกรมจาก MATLAB ไปยัง Arduino serial ที่นี่เราจะส่ง '1' กับอนุกรม Arduino และถ้าคุณตรวจสอบรหัส Arduino, คุณจะพบว่า Arduino จะเรืองแสง LED โดยการทำให้มัน 13 THขาสูงเมื่อได้รับ '1' ในพอร์ตอนุกรม
x ทั่วโลก; fprintf (x, 1);
ในฟังก์ชั่นปุ่ม LED-OFF ให้คัดลอกและวางโค้ดด้านล่างก่อนสิ้นสุดฟังก์ชันเพื่อปิด LED ดังที่คุณเห็นในโค้ดด้านล่าง fprintf (x, 0) ใช้สำหรับส่งข้อมูลแบบอนุกรมจาก MATLAB ไปยัง Arduino serial ในส่วนนี้เราจะส่ง '0' ถึงอนุกรม Arduino และถ้าคุณตรวจสอบรหัส Arduino, คุณจะพบว่า Arduino จะปิดไฟ LED โดยการทำ 13 THต่ำขาเมื่อได้รับ '0' บนพอร์ตอนุกรม.
x ทั่วโลก; fprintf (x, 0);
หลังจากเสร็จสิ้นการเข้ารหัส MATLAB GUI และตั้งค่าฮาร์ดแวร์ตามแผนภาพวงจรแล้วเพียงคลิกที่ปุ่มเรียกใช้เพื่อเรียกใช้โค้ดที่แก้ไขในไฟล์. m
MATLAB อาจใช้เวลาไม่กี่วินาทีในการตอบสนองอย่าคลิกที่ปุ่ม GUI ใด ๆ จนกว่า MATLAB จะแสดงการบ่งชี้ไม่ว่างซึ่งคุณสามารถเห็นได้ที่มุมล่างซ้ายของหน้าจอดังที่แสดงด้านล่าง
เมื่อทุกอย่างพร้อมคลิกที่ปุ่ม LED-ON และ LED-OFF เพื่อเปิดและปิด LED เมื่อคุณกด LED-ON ปุ่ม 13 THขาของ Arduino ไป HIGH และนำไปสู่การเชื่อมต่อกับ PIN นี้เริ่มเร่าร้อนและเมื่อคุณกด ปุ่ม LED-OFF 13 THขาของ Arduino ไปต่ำซึ่งจะทำให้นำไปสู่การปิด
คุณสามารถตรวจสอบวิดีโอด้านล่างเพื่อเข้าใจกระบวนการที่สมบูรณ์ของ การส่งข้อมูลแบบอนุกรมจาก MATLAB เพื่อ Arduino ใช้ MATLAB GUI