- วัสดุที่จำเป็น
- แผนภูมิวงจรรวม
- การกำหนดค่าเริ่มต้นของโมดูล HC05
- Arduino กับ Arduino Bluetooth Communication Testing
โมดูลบลูทู ธ HC-05 เป็นโมดูลบลูทู ธ แบบ go-to สำหรับโครงการ Arduino ใด ๆ ! ง่ายต่อการเชื่อมต่อและโค้ดใน Arduino IDE ในโครงการส่วนใหญ่เรามักจะเชื่อมต่อกับ HC05 กับ Arduino และใช้เพื่อสื่อสารแบบไร้สายกับอุปกรณ์อัจฉริยะอื่น ๆ เช่นโทรศัพท์มือถือ นี่ค่อนข้างง่ายและเราได้สร้างโครงการที่น่าสนใจมากมายเช่นหุ่นยนต์ที่ควบคุมด้วยบลูทู ธ, การควบคุมด้วยเสียงบลูทู ธ, ระบบอัตโนมัติภายในบ้านบลูทู ธ เป็นต้นอย่างไรก็ตามคุณจำเป็นต้องเชื่อมต่อ HC-05 สองตัวเข้าด้วยกันหรือไม่? การเชื่อมต่อ HC05 กับสมาร์ทโฟนไม่ตรงไปตรงมามีขั้นตอนเพิ่มเติมที่เกี่ยวข้อง บทช่วยสอนนี้จะแนะนำคุณตลอดกระบวนการนี้ เข้ามาเลย!
วัสดุที่จำเป็น
- 2x Arduino (ทุกรุ่นจะทำฉันใช้ Arduino Uno R3 และ Arduino Nano)
- 2x HC05 โมดูลบลูทู ธ
- เขียงหั่นขนม
- สายจัมเปอร์
- ตัวต้านทาน2x 1kΩ
- 2x 2.2kΩตัวต้านทาน
แผนภูมิวงจรรวม
นี่คือแผนภาพวงจรพื้นฐาน ต่อสาย 2 ของวงจรเหล่านี้อันหนึ่งสำหรับมาสเตอร์และอีกอันสำหรับทาส สำหรับการเชื่อมต่อสิ่งที่เราทำที่นี่คือการเชื่อมต่อ HC05 กับ Arduino ขารับ (Rx) ของ HC05 ทำงานที่ช่วง 0V ถึง 3.3V และ Arduino ทำงานที่ช่วง 0V ถึง 5V ดังนั้นเราจะใช้ตัวต้านทาน (R1 และ R2) เพื่อสร้างตัวแบ่งแรงดันไฟฟ้าเพื่อลดเอาต์พุต 5V ของ Arduino เป็น 3.3V เพื่อไม่ให้โมดูล HC05 เสียหาย
ฉันใช้1kΩสำหรับ R1 และ2.2KΩสำหรับ R2 แต่คุณสามารถใช้ค่าตัวต้านทานใดก็ได้ตราบเท่าที่ R2 มีค่าประมาณสองเท่าของ R1 (R2 ≈ 2R1) ในทำนองเดียวกันทำซ้ำวงจรสำหรับทั้ง master และ slave วงจร Arduino Master Bluetooth CircuitและArduino Slave Bluetooth Circuitจะแสดงไว้ด้านล่าง
การกำหนดค่าเริ่มต้นของโมดูล HC05
นี่เป็นขั้นตอนเพิ่มเติมที่จำเป็นในการเชื่อมต่อโมดูล HC05 สองโมดูลเข้าด้วยกัน เราจำเป็นต้องเปลี่ยนการตั้งค่าบางอย่างภายในโมดูลบลูทู ธ HC05 ในการทำเช่นนี้เราต้องเข้าไปในโหมดคำสั่ง ATของโมดูล HC05 และส่งคำสั่งไปยังจอภาพอนุกรมของ Arduino IDE ในการทำเช่นนี้เราต้องเขียนโค้ด Arduino เพื่อส่งคำสั่งผ่านมอนิเตอร์แบบอนุกรมไปยัง HC05
รหัสการกำหนดค่าโมดูล HC05สามารถพบได้ที่ด้านล่างของหน้านี้คำอธิบายของรหัสเป็นดังนี้
เพิ่มไลบรารี SoftwareSerial ลงในโค้ดนี้
#include < SoftwareSerial.h>
กำหนดหมายเลขพินการส่ง (Tx) และรับ (Rx) ฉันใช้พิน 2 สำหรับ Tx และพิน 3 สำหรับ Rx
#define tx 2 #define rx 3
ตั้งชื่อการเชื่อมต่อบลูทู ธ (ที่นี่ฉันใช้ configBt) จากนั้นบอกไลบรารี SoftwareSerial ว่าพินคือ Tx และพินใดคือ Rx ไวยากรณ์คือbluetoothName (Rx, Tx);
SoftwareSerial configBt (rx, tx); // RX, TX
ในการกำหนดค่าโมดูลบลูทู ธ Arduino จำเป็นต้องส่งคำสั่งไปที่อัตรารับส่งข้อมูลที่ 38400 baud ในทำนองเดียวกันเราตั้งอัตราการรับส่งข้อมูลของการเชื่อมต่อบลูทู ธ ไว้ที่ 38400 บอด ตั้งค่า Transmit (Tx) ไปที่ขาเอาต์พุตและรับ (Rx) ไปที่ขาอินพุต
การตั้งค่าเป็นโมฆะ () { Serial.begin (38400); configBt.begin (38400); PinMode (tx, เอาท์พุท); pinMode (rx, อินพุต); }
ภายในลูปตลอดไปเรามีโค้ดหลัก แนวคิดในที่นี้คือการส่งสิ่งที่พิมพ์ในกล่องข้อความในจอภาพอนุกรมไปยัง HC05 ผ่านพิน Tx ของ Arduino จากนั้นแสดงสิ่งที่ส่งออกโดย HC05 ในจอภาพอนุกรม
void loop () {if (configBt.available ()) // ถ้า HC05 กำลังส่งบางสิ่ง… { Serial.print (configBt.readString ()); // print in serial monitor} if (Serial.available ()) // if serial monitor is outputing something … {configBt.write (Serial.read ()); // เขียนลงใน Tx pin ของ Arduino}}
อัปโหลดรหัสนี้ไปยัง Arduino ที่เชื่อมต่อกับโมดูล HC05 หลักก่อน หลังจากอัปโหลดรหัสแล้วให้เสียบสายไฟ Arduino กดปุ่มบน HC05 ค้างไว้ ตอนนี้เสียบสายไฟ Arduino ในขณะที่ยังคงกดปุ่มบน HC05 ได้เลยตอนนี้คุณสามารถปล่อยปุ่มบน HC05 ได้แล้ว นี่คือวิธีที่คุณเข้าสู่โหมด AT ของ HC05 ในการตรวจสอบว่าคุณทำถูกต้องหรือไม่ตรวจสอบว่าไฟสีแดงบน HC05 กะพริบทุกๆหนึ่งวินาทีโดยประมาณ (กะพริบช้าๆ!) โดยปกติก่อนที่ HC05 จะเชื่อมต่อกับอุปกรณ์ Bluetooth ใด ๆ ไฟสีแดงจะกะพริบด้วยความถี่สูงมาก (กะพริบเร็ว!)
จากนั้นเปิดซีเรียลมอนิเตอร์ (ปุ่มมอนิเตอร์อนุกรมอยู่ที่ด้านบนขวาของ Arduino IDE) ที่มุมขวาด้านล่างของหน้าต่างจอภาพอนุกรมถ้าคุณยังไม่ได้ดำเนินการตรวจสอบให้แน่ใจว่าคุณตั้งสายสิ้นสุดการตั้งค่าที่จะ“ทั้ง NL และ CL”และอัตราการส่งข้อมูลไปยัง38400ตอนนี้พิมพ์ AT ในจอภาพอนุกรมหากทุกอย่างเป็นไปด้วยดีคุณจะได้รับ“ ตกลง” จาก HC05 ที่แสดงในหน้าต่างจอภาพแบบอนุกรม ยินดีด้วย! คุณเข้าสู่โหมดคำสั่ง AT ของโมดูล HC05 สำเร็จแล้ว
ตอนนี้ป้อนคำสั่งต่อไปนี้ในตารางด้านล่างเพื่อกำหนดค่า โมดูลหลัก HC05:
คำสั่ง (ป้อนสิ่งนี้ในจอภาพอนุกรมแล้วกด Enter) |
การตอบสนอง (ตอบกลับจาก HC05 แสดงในมอนิเตอร์แบบอนุกรม) |
ฟังก์ชัน (คำสั่งนี้ใช้ทำอะไร) |
ที่ |
ตกลง |
ทดสอบ |
ที่ + CMODE? |
ตกลง |
ตรวจสอบ CMODE หรือโหมดการเชื่อมต่อ ----------------------------- CMODE: 0 คือทาส 1 คือมาสเตอร์ |
ที่ + CMODE = 1 |
ตกลง |
ตั้งค่า CMODEเป็น1ตามที่เรากำหนดค่าหลัก HC05 |
ที่ + ADDR? |
+ ที่อยู่: FCA8: 9A: 58D5 ตกลง * นี่คือที่อยู่ของ HC05 ต้นแบบของฉัน ที่อยู่ของคุณจะแตกต่างออกไป! |
ส่งคืนที่อยู่ของ HC05 ให้จดบันทึกไว้เพราะเราจะต้องใช้ในภายหลัง! |
ถัดไปเชื่อมต่อคอมพิวเตอร์ของคุณกับ HC05 อื่น ๆ ของคุณทาส:
คำสั่ง (ป้อนสิ่งนี้ในจอภาพอนุกรมแล้วกด Enter) |
การตอบสนอง (ตอบกลับจาก HC05 แสดงในมอนิเตอร์แบบอนุกรม) |
ฟังก์ชัน (คำสั่งนี้ใช้ทำอะไร) |
ที่ |
ตกลง |
ทดสอบ |
ที่ + CMODE? |
ตกลง |
ตรวจสอบ CMODE หรือโหมดการเชื่อมต่อ ----------------------------- CMODE: 0 เป็นทาส 1 คือมาสเตอร์ |
ที่ + CMODE = 0 |
ตกลง |
ตั้งค่า CMODEเป็น0ขณะที่เรากำหนดค่าทาส HC05 |
ที่ + ผูก = FCA8,9A, 58D5 * แทนที่“:” ในที่อยู่ HC05 หลักด้วย“,” * ที่นี่ฉันใช้ที่อยู่ของต้นแบบ HC05 ที่ฉันจดไว้จากตารางก่อนหน้า คุณควรใช้ที่อยู่ของ HC05 ต้นแบบของคุณ! |
ตกลง |
การตั้งค่าที่อยู่ของ HC05 ต้นแบบที่ทาส HC05 นี้จะเชื่อมต่อโดยอัตโนมัติเมื่อบูตเครื่อง |
ที่ + ผูก? |
+ ผูก: FCA8: 9A: 58D5 ตกลง * นี่คือที่อยู่ของ HC05 ต้นแบบของฉัน ที่อยู่ของคุณจะแตกต่างออกไป! |
ตรวจสอบที่อยู่ผูกพันของทาสของคุณ หากตรงกับที่อยู่ของ HC05 ต้นแบบของคุณคุณก็พร้อมที่จะไป! |
Arduino กับ Arduino Bluetooth Communication Testing
ประการแรกให้จ่ายไฟทั้งโมดูล HC05 หลักและทาส หลังจากเปิดเครื่องและผ่านไปไม่กี่วินาทีให้มองไปที่ไฟสีแดงบนโมดูล HC05
ความเร็วในการกะพริบของแสงสีแดง |
ความหมาย |
กะพริบด้วยความถี่สูงมาก (กะพริบเร็ว!) |
ไม่ดี! หมายความว่าโมดูล HC05 ของคุณไม่ได้เชื่อมต่อกัน! ถึงเวลาแก้ไขปัญหา! |
กะพริบด้วยความถี่ต่ำ (กะพริบช้าๆ!) |
ดี! คุณทำสำเร็จแล้ว! แต่เรายังต้องทำการตรวจสอบอีกครั้งเพื่อให้แน่ใจว่าการตั้งค่านี้ใช้งานได้จริง! เดินหน้า! |
เมื่อไฟสีแดงของคุณกะพริบที่ความถี่ต่ำ (กะพริบช้าๆ!) คุณสามารถมั่นใจได้ว่า HC05 ทั้งสองของคุณเชื่อมต่อกันแต่เรายังไม่ได้ทดสอบว่าสามารถส่งข้อมูลไปมาระหว่าง master และ slave ได้หรือไม่ ท้ายที่สุดนั่นคือจุดประสงค์หลักของที่นี่
อัปโหลดรหัสด้านล่างไปยัง Arduinos ซึ่งเป็นรหัสสำหรับทดสอบเครื่องส่งสัญญาณ (Tx)อีกครั้งคุณสามารถดูรหัสที่สมบูรณ์สำหรับทั้งเครื่องส่งและเครื่องรับได้ที่ด้านล่างของหน้านี้
ตามรหัสก่อนหน้านี้เราเพิ่มไลบรารี SoftwareSerial ลงในรหัสนี้และกำหนดหมายเลขพินการส่ง (Tx) และรับ (Rx) จากนั้นเราตั้งชื่อการเชื่อมต่อ Bluetooth และส่งหมายเลขพิน Tx และ Rx ไปยังไลบรารี
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
ในฟังก์ชั่นการตั้งค่าเรากำลังตั้งค่าอัตราการส่งข้อมูลสำหรับจอภาพอนุกรม Arduino และบลูทู ธ อีกครั้ง คุณเห็นความแตกต่างที่นี่เมื่อเทียบกับรหัสก่อนหน้านี้หรือไม่? เรากำลังใช้อัตราการส่งข้อมูลที่ 9600 บอด นี่คืออัตราการรับส่งข้อมูลการสื่อสารที่ตั้งไว้ล่วงหน้าเริ่มต้นของโมดูลบลูทู ธ HC05 เมื่อสื่อสารกับอุปกรณ์บลูทู ธ อื่น ๆ ดังนั้นโปรดทราบว่า 38400 baud ใช้สำหรับกำหนดค่า HC05 ด้วยคำสั่ง AT และ 9600 baud เป็นอัตราการส่งข้อมูลเริ่มต้นของโมดูล HC05 สุดท้ายเช่นเดียวกับก่อนที่เราจะกำหนดค่าพิน Tx เป็นขาออกและขา Rx เป็นอินพุต
การตั้งค่าเป็นโมฆะ () { Serial.begin (9600); bt.begin (9600); PinMode (tx, เอาท์พุท); pinMode (rx, อินพุต); }
ภายในลูปตลอดไปสิ่งที่เราทำคือส่งค่าแบบสุ่ม“ 123” ผ่าน HC05
ห่วงเป็นโมฆะ () {bt.write (123); }
อัปโหลดรหัสนี้ไปยัง Arduino อื่นซึ่งเป็นรหัสสำหรับทดสอบการรับ (Rx):
เหมือนกับรหัสก่อนหน้านี้ทุกประการเรากำหนดค่าไลบรารี SoftwareSerial
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
รหัสในฟังก์ชันการตั้งค่าเหมือนกับรหัสที่จะทดสอบการส่ง (Tx) ทุกประการ
การตั้งค่าเป็นโมฆะ () { Serial.begin (9600); bt.begin (9600); PinMode (tx, เอาท์พุท); pinMode (rx, อินพุต); }
ในลูปตลอดไปเราเพียงแค่ต้องรับสิ่งที่เราส่งจาก Arduino ที่กำลังส่ง หากบัฟเฟอร์การรับได้รับข้อมูลบางส่วนจาก HC05 ให้แสดงสิ่งที่ได้รับในมอนิเตอร์แบบอนุกรม
โมฆะ loop () {if (bt.available ()> 0) { Serial.println (bt.read ()); }}
หลังจากที่คุณอัปโหลดรหัสตามลำดับไปยัง Arduino แต่ละตัวแล้วให้เปิด Serial monitor ไปที่ Arduino ที่ได้รับ ตรวจสอบให้แน่ใจว่าคุณเลือกอัตรารับส่งข้อมูลเป็น 9600 และสิ้นสุดบรรทัดเป็น Newline ในมอนิเตอร์แบบอนุกรม หากทุกอย่างทำงานได้ดีคุณควรเห็น 123
หมายเหตุ:หากคุณเชื่อมต่อทั้งการส่งและรับ Arduinos กับแล็ปท็อปเครื่องเดียวกันตรวจสอบให้แน่ใจว่าคุณเลือกพอร์ต COM ที่ถูกต้องภายใต้ TOOLS> PORT คุณควรเชื่อมต่อกับพอร์ต COM ของ Arduino ที่รับ
หากทุกอย่างเป็นไปด้วยดีให้สลับโมดูล HC05 เพื่อให้แน่ใจว่าการสื่อสารสามารถเกิดขึ้นได้ทั้งสองทิศทางและเราเสร็จแล้ว!