- วัสดุที่จำเป็น
- โมดูลบลูทู ธ (HC-05)
- พอร์ต STM32 USART
- แผนภาพวงจรและการเชื่อมต่อ
- การเขียนโปรแกรม STM32F103C8
- ขั้นตอนในการเชื่อมต่อโมดูลบลูทู ธ กับโทรศัพท์ Android
ในโลกปัจจุบันของบลูทู ธ ได้กลายเป็นที่นิยมมากและเกือบอุปกรณ์เช่นโทรศัพท์มือถือแล็ปท็อปและระบบ Infotainment ในรถยนต์ทุกใช้บลูทู ธ สำหรับการสื่อสารไร้สายบลูทู ธ ไม่เพียง แต่ใช้ในการถ่ายโอนข้อมูล แต่ยังควบคุมอุปกรณ์บลูทู ธ อื่นแบบไร้สายด้วยเช่นการใช้ชุดหูฟังบลูทู ธ คุณสามารถฟังเพลงแบบไร้สายจากโทรศัพท์มือถือของคุณหรือสามารถใช้ระบบเครื่องเสียงรถยนต์เพื่อเล่นเพลงจากมือถือของคุณ
Bluetooth เป็นเทคโนโลยีไร้สายที่ทำงานบนความถี่ 2.4GHz สัญญาณบลูทู ธ ปกติอยู่ในระยะรัศมี 10 เมตร บลูทู ธ เป็นเทคโนโลยีไร้สายที่ใช้กันมากที่สุดในโปรเจ็กต์แบบฝังในกรณีที่ช่วงการสื่อสารมี จำกัด บลูทู ธ ได้เพิ่มข้อได้เปรียบของการใช้พลังงานต่ำและการใช้งานต้นทุนต่ำ โดยทั่วไปจะใช้สำหรับเชื่อมต่อไมโครคอนโทรลเลอร์กับโทรศัพท์สมาร์ทโฟนโดยใช้แอพพลิเคชั่นบลูทู ธ
เราได้เห็นการเชื่อมต่อโมดูลบลูทู ธ กับไมโครคอนโทรลเลอร์อื่น ๆ เช่น Arduino, 8051, PIC ฯลฯ ตอนนี้ในการกวดวิชานี้เราจะเชื่อมต่อโมดูลบลูทู ธ HC-05 กับ STM32F103C8 และเปิด / ปิดไฟ LED ที่ใช้ Android มือถือ
วัสดุที่จำเป็น
- STM32F103C8
- โมดูลบลูทู ธ (HC-05)
- LED
- มือถือ Android
- เขียงหั่นขนม
- การเชื่อมต่อสายไฟ
ซอฟต์แวร์:
- Bluetooth Terminal (แอปพลิเคชัน Android)
โมดูลบลูทู ธ (HC-05)
ส่วนใหญ่จะใช้โมดูลบลูทู ธ ในโครงการฝังตัว เป็นโมดูลบลูทู ธ แบบอนุกรมที่ใช้การสื่อสารแบบอนุกรมที่มีระยะน้อยกว่า 100 เมตรและทำงานที่ 5V (ขั้นต่ำ 3.3V) สามารถใช้เชื่อมต่อไมโครคอนโทรลเลอร์สองตัวแบบไร้สายและกับโทรศัพท์มือถือและแล็ปท็อป เนื่องจากมีแอปพลิเคชัน Android จำนวนมากจึงมีประโยชน์มากสำหรับการสร้างโครงการที่ควบคุมด้วยบลูทู ธ ไร้สาย
ใช้การสื่อสาร USART และสามารถเชื่อมต่อกับไมโครคอนโทรลเลอร์ที่มีโปรโตคอลการสื่อสาร USART
มีเสาอากาศในตัว มีการกำหนดค่า Master / Slave ที่สามารถเปลี่ยนแปลงได้ในโหมดคำสั่ง AT ที่มีประโยชน์เมื่ออุปกรณ์เพียงเครื่องเดียวควรส่งข้อมูล (master to slave) เช่นจาก PC (MASTER) ไปยัง slave (MCU ใด ๆ) มาสเตอร์สามารถเชื่อมต่อกับอุปกรณ์อื่น ๆ ได้และทาสจะไม่เชื่อมต่อกับการเชื่อมต่ออื่นที่ไม่ใช่มาสเตอร์
โหมดการทำงาน
มีสองโหมด AT Command Mode & Data Mode
เมื่อบลูทู ธ ขับเคลื่อนขึ้นจะเข้าสู่การเริ่มต้นโหมดข้อมูลโหมดนี้สามารถใช้สำหรับการถ่ายโอนข้อมูล ในการเข้าสู่โหมด AT Commandระหว่างการเปิดเครื่องเราต้องกดปุ่มที่มีอยู่ในโมดูลเพื่อเปลี่ยนการตั้งค่าเริ่มต้นของโมดูลเช่นการกำหนดค่าหลัก / ทาส
หมุดของโมดูลบลูทู ธ
- EN pin (ENABLE) - พินนี้ใช้เพื่อตั้งค่าโหมดข้อมูลหรือโหมดคำสั่ง AT โดยค่าเริ่มต้นจะอยู่ในโหมดข้อมูล เมื่อกดปุ่มระหว่างเปิดเครื่องจะไปที่โหมดคำสั่ง AT
- + 5V พิน - ใช้สำหรับจ่ายไฟให้กับโมดูล
- พิน GND - ใช้สำหรับกราวด์สำหรับโมดูล
- TX pin - พินนี้เพื่อเชื่อมต่อกับ RX พินของ MCU
- RX พิน - พินนี้เชื่อมต่อกับพิน TX ของ MCU
- STATE - พินนี้ระบุสถานะของโมดูลดูด้านล่างเกี่ยวกับข้อบ่งชี้
ไฟ LED
- มีไฟ LED (RED) ซึ่งแสดงสถานะของโมดูลบลูทู ธ
- เมื่อโมดูลบลูทู ธ ไม่ได้เชื่อมต่อกับอุปกรณ์ใด ๆ สัญญาณจะต่ำและไฟ LED สีแดงจะกะพริบอย่างต่อเนื่องซึ่งแสดงว่าโมดูลไม่ได้จับคู่
- เมื่อโมดูลบลูทู ธ เชื่อมต่อกับอุปกรณ์ใด ๆ สัญญาณจะสูงขึ้นและไฟ LED สีแดงกะพริบพร้อมกับความล่าช้าบางอย่างซึ่งบ่งชี้ว่าโมดูลนั้นจับคู่แล้ว
ตรวจสอบโครงการอื่น ๆ ของเราเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับโมดูลบลูทู ธ HC-05 กับไมโครคอนโทรลเลอร์อื่น ๆ:
- รถของเล่นที่ควบคุมด้วยบลูทู ธ โดยใช้ Arduino
- ระบบโฮมอัตโนมัติที่ควบคุมด้วยบลูทู ธ โดยใช้ 8051
- ไฟที่ควบคุมด้วยเสียงโดยใช้ Raspberry Pi
- สมาร์ทโฟนควบคุมวิทยุ FM โดยใช้ Arduino และการประมวลผล
- รถหุ่นยนต์ควบคุมโทรศัพท์มือถือโดยใช้ G-Sensor และ Arduino
- การเชื่อมต่อโมดูลบลูทู ธ HC-06 กับไมโครคอนโทรลเลอร์ PIC
พอร์ต STM32 USART
STM32F103C8 (BLUE PILL) พอร์ตการสื่อสารแบบอนุกรมของ USART แสดงอยู่ในภาพขาออกด้านล่าง เหล่านี้เป็นสีน้ำเงินที่มี (PA9-TX1, PA10- RX1, PA2-TX2, PA3- RX2, PB10-TX3, PB11-RX3) มีสามช่องทางการสื่อสารดังกล่าว
แผนภาพวงจรและการเชื่อมต่อ
การเชื่อมต่อวงจรสำหรับเชื่อมต่อโมดูลบลูทู ธ กับ STM32มีดังต่อไปนี้
การเชื่อมต่อระหว่าง STM32F103C8 และโมดูลบลูทู ธ (HC-05)
- TX พิน (PA9) ของ STM32F103C8 เชื่อมต่อกับพิน RX ของโมดูลบลูทู ธ
- ขา RX (PA10) ของ STM32F103C8 เชื่อมต่อกับพิน TX ของโมดูลบลูทู ธ
- ขา VCC (+ 5V) ของโมดูลบลูทู ธ เชื่อมต่อกับขา 5V ของ STM32F103C8
- พิน GND ของโมดูลบลูทู ธ เชื่อมต่อกับพิน GND ของ STM32F103C8
การเชื่อมต่ออื่น ๆ
- พิน (PA0) ของ STM32 (Blue Pill) เชื่อมต่อกับขาบวกของ LED ผ่านตัวต้านทานแบบอนุกรม LED ใช้ที่นี่เป็นสีผสม
- ขาอีกอันที่นำไปเชื่อมต่อกับ GND ของ STM32
การเขียนโปรแกรม STM32F103C8
การเชื่อมต่อ Bluetooth กับ STM32 นั้นเหมือนกับ arduino และการเขียนโปรแกรมใน STM32 จะเหมือนกับ Arduino IDE ดูบทช่วยสอนสำหรับการเขียนโปรแกรม STM32 ด้วย USB โดยใช้ Arduino IDE
ดังที่ได้บอกไปแล้วในโครงการนี้เราจะเชื่อมต่อโมดูลบลูทู ธ (HC-05) กับ STM32F103C8 และใช้สมาร์ทโฟน Android ที่มีแอปพลิเคชั่น Bluetooth Terminal เพื่อเปิดและปิด LED
หมายเหตุ: ต้องถอดพิน RX & TX ออกขณะอัปโหลดโค้ดไปที่ STM32F103C8
รหัสเสร็จสมบูรณ์สำหรับโครงการนี้จะได้รับในตอนท้ายของการกวดวิชานี้มีการสาธิตวิดีโอ
การเข้ารหัสสำหรับโครงการนี้ทำได้ง่ายมาก สามารถใช้รหัส Arduino เดียวกันได้ แต่ควรเปลี่ยนเฉพาะพินเท่านั้น เนื่องจากเรามีพิน USART สามชุดใน STM32F103C8 ดังนั้นเราจึงต้องระบุพินที่ถูกต้องที่เราใช้ในการเชื่อมต่อโมดูลบลูทู ธ
1. ก่อนอื่นเราต้องตั้งชื่อพินด้วยหมายเลขพินตามลำดับโดยมีประเภทข้อมูล int ดังนี้
const int pinout = PA0;
2. ต่อไปเราต้องมีตัวแปรเพื่อเก็บข้อมูลอนุกรมจากมือถือ Android ข้อมูลสามารถเป็นถ่านหรือจำนวนเต็มได้ดังนี้
ถ่าน inputdata = 0;
3. ถัดไปใน การตั้งค่าโมฆะ () เราต้องเริ่มการสื่อสารแบบอนุกรมระหว่าง STM32 Blue Pill และโมดูลบลูทู ธ โดยให้อัตราการส่งข้อมูลที่ 9600
Serial1.begin (9600);
เราใช้Serial1ที่นี่เพราะเราเชื่อมต่อ HC-05 TX1 และ RX1 ของ STM32
เรายังสามารถใช้ Serial2 หรือ Serial3 ได้ แต่ต้องเชื่อมต่อพินตามนั้น
4. บทนำข้อความจะถูกส่งเป็นข้อมูลแบบอนุกรมกับSerial1,ที่เป็นโมดูลบลูทู ธ HC05 โมดูลนี้ส่งข้อมูลไปยังแอพ Bluetooth Terminal ของมือถือ Android เพิ่มเติม ดังนั้นเราจึงใช้คำสั่งด้านล่าง
Serial1.print ("CIRCUIT DIGEST \ n"); Serial1.print ("BLUETOOTH พร้อม STM32 \ n");
5. ต่อไปเราต้องตั้งค่า พินโหมด (PA0) เป็นเอาต์พุตเมื่อเราเชื่อมต่อกับพินนี้เราจึงใช้
pinMode (พินเอาท์เอาท์พุท);
6. ถัดไปใน void loop () เราเรียกใช้ข้อมูลต่อไปนี้เพื่ออ่านข้อมูลอนุกรมและเปิด / ปิด LED ตามลำดับ
เป็นโมฆะ loop () { If (Serial1.available ()> 0) { inputdata = Serial1.read (); ถ้า (inputdata == '1') { digitalWrite (pinout, HIGH); Serial1.print ("LED ON \ n"); } else if (inputdata == '0') { digitalWrite (pinout, LOW); Serial1.print ("LED OFF \ n"); } } }
ที่นี่เราใช้ ถ้า คำสั่งเพราะรหัสเหล่านี้เท่านั้นที่ดำเนินการเมื่อพอร์ต Serial1 มีข้อมูลใด ๆ ที่ได้รับจากโมดูลบลูทู ธ ที่ว่าทำไมคำสั่งนี้จะถูกใช้ Serial1.available ()> 0 มิฉะนั้นหากเข้าไม่ได้ก็จะรอจนกว่าจะเริ่มการสื่อสารแบบอนุกรม ตอนนี้มันเก็บข้อมูลที่ได้รับในตัวแปร inputdata = Serial1.read () จากนั้นตรวจสอบค่าที่ส่งจากแอพเทอร์มินัลบลูทู ธ ดังนั้นหากค่าเป็น 1 จะพิมพ์ LED ON และทำให้พิน (PA0) สูงขึ้นโดยคำสั่ง digitalWrite (pinout, HIGH) และถ้าค่าเป็น 0 จะพิมพ์ LED OFF และทำให้พิน (PA0) อยู่ในระดับต่ำ
ขั้นตอนในการเชื่อมต่อโมดูลบลูทู ธ กับโทรศัพท์ Android
ขั้นตอนที่ 1: -เปิดบลูทู ธ จากมือถือหลังจากอัปโหลดรหัสไปยัง STM32 จาก Arduino IDE และให้พลังงานแก่วงจร โปรดจำไว้ว่าให้ถอดพิน RX และ TX ออกในขณะที่อัปโหลดโค้ด
ขั้นตอนที่ 2: -ในอุปกรณ์ที่มีให้เลือก HC-05 และป้อนรหัสผ่านเป็น 1234
ขั้นตอนที่ 3: -หลังจากจับคู่แล้วให้เปิดแอพ Bluetooth Terminal แล้วเลือกเชื่อมต่ออุปกรณ์แล้วเลือก HC-05 ตามที่แสดงด้านล่าง
ขั้นตอนที่ 4: - หลังจากเชื่อมต่อกับโมดูลบลูทู ธ HC-05 แล้วให้ระบุค่าในเทอร์มินัล 1 หรือ 0 เพื่อเปิดและปิด LED คุณจะได้รับข้อความแจ้งว่า LED เปิดหรือปิด