สารบัญ:

การทำพอร์ต USB ของบอร์ดที่ใช้ SAMD21 ให้เป็นพอร์ตอนุกรมของฮาร์ดแวร์!: 3 ขั้นตอน
การทำพอร์ต USB ของบอร์ดที่ใช้ SAMD21 ให้เป็นพอร์ตอนุกรมของฮาร์ดแวร์!: 3 ขั้นตอน

วีดีโอ: การทำพอร์ต USB ของบอร์ดที่ใช้ SAMD21 ให้เป็นพอร์ตอนุกรมของฮาร์ดแวร์!: 3 ขั้นตอน

วีดีโอ: การทำพอร์ต USB ของบอร์ดที่ใช้ SAMD21 ให้เป็นพอร์ตอนุกรมของฮาร์ดแวร์!: 3 ขั้นตอน
วีดีโอ: วิธีแก้ปัญหา Arduino ไม่เจอคอมพอร์ต COM Port ลงโปรแกรมไม่ได้ ใช้กับ ESP8266 ESP32 ได้ Arduino IDE 2 2024, พฤศจิกายน
Anonim
Image
Image
สร้างอุปกรณ์ซีเรียลด้วยขั้วต่อ USB
สร้างอุปกรณ์ซีเรียลด้วยขั้วต่อ USB

เป็นมาตรฐานในปัจจุบันที่จะใช้พอร์ต USB ของบอร์ด Arduino (หรืออื่น ๆ ที่เข้ากันได้) เป็นพอร์ตอนุกรมจำลอง สิ่งนี้มีประโยชน์มากสำหรับการดีบัก การส่ง และรับข้อมูลจากกระดานที่น่ารักของเรา

ฉันกำลังทำงานกับ uChip เมื่อผ่านแผ่นข้อมูลของ MCU (SAMD21) ฉันสังเกตเห็นว่า USB gpio PORTA 24 และ 25 (ซึ่งเป็น D-/D+ ตามลำดับ) สามารถใช้เป็น SERCOM (PAD 2 และ 3) ได้เช่นกัน

หลังจากสังเกตเห็นสิ่งนี้ในแผ่นข้อมูล ฉันคิดว่ามันจะมีประโยชน์มากในบางครั้งที่จะแนบอุปกรณ์ซีเรียลของฮาร์ดแวร์เข้ากับพอร์ต USB โดยตรง แทนที่จะติดสายไฟบนเขียงหั่นขนมหรือบัดกรีเข้ากับบอร์ดโดยตรง

ดังนั้น นี่คือบทแนะนำสั้นๆ ที่แสดงวิธีการตั้งค่าบอร์ดของคุณ เพื่อให้คุณสามารถใช้ USB เป็นพอร์ตอนุกรมของฮาร์ดแวร์ได้

ในบทช่วยสอนเฉพาะนี้ อุปกรณ์อนุกรมที่เชื่อมต่อคืออะแดปเตอร์อนุกรม Bluetooth HC-06 อย่างไรก็ตาม คุณสามารถปรับโค้ดให้เข้ากับอุปกรณ์อนุกรมอื่นๆ ได้ ตราบใดที่คุณบัดกรีอะแดปเตอร์สาย USB เข้ากับอุปกรณ์ซีเรียล

บิลวัสดุ

uChipx 1

อะแดปเตอร์ micro-USB เป็น USB/A x 1 (ลิงก์)

โมดูล HC-06 BT x 1

สาย USB รีไซเคิล x 1

แบตเตอรี่ (3V3 < VBAT < 5) x 1

ขั้นตอนที่ 1: สร้างอุปกรณ์ซีเรียลด้วยตัวเชื่อมต่อ USB

ลอกสาย USB ออกและบัดกรีสายไฟเข้ากับอุปกรณ์ Serial ดังแสดงในแผนผังและเขียนไว้ด้านล่าง

- สาย USB สีดำ -> GND

- สาย USB สีแดง -> VCC (ไฟ)

- สาย USB (D-) สีขาว -> RX

- สาย USB (D+) สีเขียว -> TX

ขั้นตอนที่ 2: โปรแกรม UChip

โปรแกรม UChip
โปรแกรม UChip

เชื่อมต่อ uChip กับคอมพิวเตอร์ของคุณและโหลดภาพร่าง “HWSerialUSB.ino” ลงในบอร์ด จากนั้นยกเลิกการเชื่อมต่อ uChip เพื่อดำเนินการในขั้นตอนต่อไป

เคล็ดลับ: รหัสทำงานอย่างไร เหตุใดพอร์ต USB ของฉันจึงแตกต่างไปจากนี้

นี่คือคำอธิบายโดยสรุปเคล็ดลับที่ฉันทำในโค้ด

โดยทั่วไป ฉันกำลังสร้างอินสแตนซ์ “SerialUSB_HW” ใหม่โดยใช้ GPIO ที่ได้รับมอบหมายให้ทำงานเป็น D- และ D+ ในปัจจุบัน

ใน Setup() ฉันเปิดใช้งานฟังก์ชัน SERCOM สำหรับพิน USB โดยใช้ฟังก์ชัน “pinPeripherial()” ที่ระบุในส่วนหัว “wiring_private.h” ซึ่งรวมอยู่ในตอนต้นของโค้ด

ตอนนี้ ฉันสามารถใช้อินสแตนซ์ “SerialUSB_HW” ได้เช่นเดียวกันกับ Serial หรือ SerialUSB มาตรฐาน รับและส่งข้อมูลไปยังอุปกรณ์ซีเรียล HC-06 ของฉัน

ขั้นตอนที่ 3: ประกอบ - เชื่อมต่อ - ทดลอง

ประกอบ - เชื่อมต่อ - ทดลอง
ประกอบ - เชื่อมต่อ - ทดลอง

ต่อแบตเตอรี่เข้ากับ uChip

- pin_8 -> VBAT--

- pin_16 -> VBAT+

ใส่อแดปเตอร์ OTG จากนั้นต่อกับอุปกรณ์ Serial ที่มีพอร์ต USB ใหม่เอี่ยม และ…เท่านี้ ฮาร์ดแวร์ก็พร้อม!

หลังจากจับคู่กับโมดูล HC-06 (รหัสผ่านมาตรฐานคือ 1234) ให้เชื่อมต่อกับอุปกรณ์ BT โดยใช้โทรศัพท์หรืออินเทอร์เฟซ BT ของคุณ ตอนนี้คุณควรได้รับสถานะของ LED ออนบอร์ด

ส่งอักขระ 'o' เพื่อเปิดไฟ LED หรืออักขระอื่นเพื่อปิด

ทดลองและลองใช้อุปกรณ์อนุกรมอื่นๆ ตอนนี้คุณรู้วิธีใช้พอร์ต USB เป็นพอร์ต Hardware Serial แล้ว!

เคล็ดลับ: มี #define ในโค้ด ซึ่งช่วยให้คุณสลับไปมาระหว่างการใช้พอร์ต USB เป็น Emulated serial หรือเป็น Hardware serial ทดลองและตรวจสอบว่าอุปกรณ์ Serial ที่แนบมา (HC-06) ไม่สื่อสารเว้นแต่ว่าเราบังคับให้ USB ทำงานเป็นฮาร์ดแวร์ซีเรียล!

แนะนำ: