การใช้งานโมดูลสื่อสารไร้สายด้วยเทคโนโลยีบลูทูธ
การสื่อสารไร้สายด้วยเทคโนโลยีบลูทูธ
บลูทูธ (Bluetooth) คือ
มาตรฐานของเทคโนโลยีการสื่อสารไร้สายที่ใช้ในการแลกเปลี่ยนข้อมูลในระยะทางสั้น ๆ ที่พัฒนาโดยกลุ่ม
Bluetooth special Interest Group (BIG) โดยการสื่อสารนี้จะใช้คลื่นวิทยุในช่วง
UHF (2.4-2.485 GHz) โดยทั่วไปบลูทูธจะถูกนำไปใช้กับอุปกรณ์เคลื่อนที่
โดยอุปกรณ์จะสร้างเครือข่ายส่วนตัว (personal area networks, PANs) ที่มักจะมีระยะทางในการส่งข้อมูลไม่เกิน 10 เมตร และจำนวนอุปกรณ์ไม่เกิน 7
ชิ้น จุดประสงค์ของการพัฒนาบลูทูธ เพื่อนำมาใช้แทนที่การส่งข้อมูลแบบ
RS-232 ที่ใช้สาย โดยปัจจุบันเทคโนโลยีนี้ถูกพัฒนาไปถึง Bluetooth
5 ที่มีความสามารถในการส่งสัญญาณได้ในช่วงกว้าง (สูงสุด 40 400
เมตร) โลโก้สัญลักษณ์ของบลูทูธแสดงดังรูปที่
11.1 โดยเรามักจะพบโลโก้นี้ในอุปกรณ์อิเล็กทรอนิกส์ที่สามารถสื่อสารด้วยเทคโนโลยีนี้ได้
ปัจจุบันเทคโนโลยีบลูทูธถูกนำมาประยุกต์ใช้งานอย่างแพร่หลาย
เช่น การสื่อสารและควบคุมไร้สายระหว่างโทรศัพท์มือถือและหูฟัง/เครื่องเสียง
การสื่อสารไร้สายในเมาส์ การส่งข้อมูลระหว่างโทรศัพท์และคอมพิวเตอร์ โดยเทคโนโลยีนี้เป็นเสมือนเทคโนโลยีทางเลือกในการสื่อสารผ่านเครือข่ายไร้สาย
ซึ่งเหมาะกับการสร้างเครือข่ายขนาดเล็กที่มีการเชื่อมต่ออุปกรณ์เพียง 1-2 ชิ้น ในระยะเวลาสั้น
ๆ โดยความเสถียรของการส่งข้อมูลขึ้นกับทั้งตัวอุปกรณ์และสภาพแวดล้อม
รูปที่
11.1
โลโก้ของบลูทูธ
โมดูลสื่อสารไร้สายและโปรแกรมเชื่อมต่อ
บอร์ดโมดูลที่ใช้ในการทดลองนี้คือ
บลูทูธโมดูล HC-06
เป็นบอร์ดสำหรับใช้รับ-ส่งสัญญาณกับอุปกรณ์ที่เชื่อมต่อผ่านบลูทูธได้
เช่น โทรศัพท์มือถือ โดยบอร์ดนี้จะสื่อสารกับไมโครคอนโทรลเลอร์ด้วยการสื่อสารแบบอนุกรมที่เรียกว่า
USART (Universal Synchronous/Asynchronous Receiver/Transmitter) รูปที่ 11.2 แสดงบอร์ดโมดูลสื่อสารไร้สาย HC-06
ที่ใช้เทคโนโลยีบลูทูธในการเชื่อมต่อ
รูปที่ 11.2
บอร์ดโมดูลสื่อสารไร้สาย HC-06 (ก) ด้านหน้าและ (ข) ด้านหลัง
การเชื่อมต่อเพื่อใช้งานโมดูลนี้ในเบื้องต้น
ทำได้โดยง่าย คือใช้เพียงขา RXD (Receive) และ TXD
(Transmit) ในการรับส่งสัญญาณแบบอนุกรมในระดับ LVTTL (3.3 V) โดยเราจะต้องป้อนไฟเลี้ยง
(รองรับไฟเลี้ยงระดับแรงดัน 3.6 6 V) ให้แก่บอร์ดด้วย
NodeMCU
ที่ภายในมีชิป ESP8266 จะมีการสื่อสารแบบ UART
อยู่ภายในบอร์ดอยู่แล้ว โดยเราสามารถส่งสัญญาณจาก NodeMCU ไปยังโมดูลบลูทูธ HC-06
ได้ด้วยการเชื่อมต่อขา RX บนบอร์ด NodeMCU ไปที่ขา TXD บนโมดูลบลูทูธ
และขา TX บนบอร์ดไปที่ขา RXD บนโมดูล
สำหรับการรับข้อมูลจาก NodeMCU นั้น ผู้ใช้จะต้องมีโปรแกรมที่ใช้ในการเชื่อมต่อ
โดยทั้งนี้เราอาจใช้คอมพิวเตอร์ที่สามารถเชื่อมต่อผ่านบลูทูธได้
(คือโน๊ตบุ๊คหรือคอมพิวเตอร์ตั้งโต๊ะที่มีโมดูลบลูทูธอยู่ภายในหรือใช้โทรศัพท์มือถือก็ได้เช่นกัน)
โดยโปรแกรมพื้นฐานที่ขอกล่าวถึงและแสดงการทดลองใช้ในที่นี้
คือ โปรแกรม Bluetooth Terminal HC-05 ซึ่งสามารถดาวน์โหลดและติดตั้งได้ฟรี
ออกแบบมาสำหรับโมดูลบลูทูธนี้โดยเฉพาะ รูปที่ 11.3
แสดงหน้าต่างที่แสดงการดาวน์โหลดและติดตั้งผ่าน Google Play
รูปที่
11.3 หน้าต่างแสดงการดาวน์โหลดและติดตั้งโปรแกรม
Bluetooth
Terminal HC-05 ผ่าน Google Play บนโทรศัพท์มือถือตระกูลแอนดรอยด์
เมื่อติดตั้งโปรแกรมเสร็จสมบูรณ์แล้ว
บนโทรศัพท์จะแสดงไอคอนของโปรแกรม ดังรูปที่ 11.4
โดยเมื่อเข้าโปรแกรมแล้วเราจะต้องอนุญาตให้โปรแกรมเข้าถึงการเชื่อมต่อแบบบลูทูธในโทรศัพท์ และการกำหนด (Setting) บนโทรศัพท์จะต้อง Enable การสื่อสารชนิดนี้อยู่ด้วย
จากนั้นจึงสแกนค้นหาอุปกรณ์บลูทูธ
แล้วจะพบอุปกรณ์เมื่อโมดูลบลูทูธทำงานอยู่บริเวณใกล้เคียง
โดยหากมีอุปกรณ์ที่มีชื่อเดียวกันอยู่ในย่านนั้นมากกว่า 1 ตัว (เช่น มีอุปกรณ์ชื่อ
HC-06 หลายตัว) เราก็จะต้องสังเกตเบอร์ MAC Address ของอุปกรณ์ที่เราต้องการเชื่อมต่อ โดย MAC Address นี้คือ
เบอร์ของฮาร์ดแวร์ ซึ่งเป็นเลขฐานสิบหก 6 ชุด
เมื่อเลือกอุปกรณ์ที่เชื่อมต่อแบบบลูทูธแล้วเราจะต้องทำการกรอกรหัสผ่านซึ่งโดยปกติจะตั้งค่าไว้เป็น
1234 แล้วจึงสามารถเชื่อมต่อได้ ดังแสดงในรูปที่ 11.5 (สำหรับการเปลี่ยนชื่อและพาสเวิร์ดของอุปกรณ์บลูทูธนี้
จะต้องใช้คำสั่ง AT (AT Command) ซึ่งมิกล่าวถึงในการใช้งานเบื้องต้นนี้
รูปที่
11.4 หน้าต่างการเข้าใช้งานโปรแกรม
Bluetooth
Terminal HC-05
รูปที่
11.5 หน้าต่างการเข้าใช้งานโปรแกรม
Bluetooth
Terminal HC-05
การทดลองรับส่งข้อมูล
วัตถุประสงค์
1.
สามารถอธิบายวิธีการและทำการเชื่อมต่อโมดูลเพื่อสื่อสารไร้สายได้
2.
สามารถเขียนโปรแกรมให้ NodeMCU
v.3 ส่งข้อมูลแบบไร้สายได้อย่างถูกต้อง
3.
สามารถเขียนโปรแกรมให้ NodeMCU
v.3 สามารถรับข้อมูลจากการสื่อสารไร้สายและประมวลผลได้อย่างถูกต้อง
อุปกรณ์ที่ใช้ในการทดลอง
1. เครี่องคอมพิวเตอร์ที่มีระบบปฏิบัติการ
Windows
(ตั้งแต่ Windows 7 ขึ้นไป)
พร้อมติดตั้งโปรแกรม Arduino IDE 1.8.8 IoT 1
เครื่อง
2. NodeMCU v.3 1
บอร์ด
3. NodeMCU Base
Ver 1.0 1
บอร์ด
4. บอร์ดโมดูลสื่อสารไร้สาย
HC-06 1
บอร์ด
5. โมดูลวัดความสว่างด้วย LDR 1
บอร์ด
6. อะแดปเตอร์ 9 V 1
ตัว
7. สาย USB 1
เส้น
8. สายต่อวงจร (สายจัมพ์ เมีย-เมีย) 10
เส้น
วิธีการทดลอง
ตอนที่
1
1.
ต่อวงจรดังรูปที่ 11.6
โดยขอให้สังเกตว่า ขา TX ของ NodeMCU ต่อกับขา RXD ของโมดูล HC-06 และ
ขา RX ของ NodeMCU ต่อกับขา RXD
ของโมดูล HC-06 และนอกจากนี้
เรายังต่อให้ไฟเลี้ยง (5 V) มาจากอะแดปเตอร์ 9 V แทนที่จะใช้ไฟจาก VUSB
2.
เขียนโค้ดที่แสดงในหน้าถัดไปแล้วอัปโหลดลงบอร์ด
NodeMCU v.3 (ข้อสังเกตโค้ดนี้คือโค้ดเดียวกันกับโค้ดที่แสดงในบทที่
9)
รูปที่
11.6
การเชื่อมต่อ NodeMCU
v.3 กับโมดูล HC-06 และโมดูลวัดความสว่างด้วย LDR
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
// Wireless Communication of NodeMCU
ESP8266 // by using Bluetooth Module HC-06 // // Read LDR by NodeMCU ESP8266 // Result is sent to Bluetooth Module. // Pin A0 = analog input int LDR_Sensor
= A0; int data_LDR; void setup() { // Set serial speed to
9600 bps Serial.begin(9600); } void loop() { // Read Analog Data data_LDR
= analogRead(LDR_Sensor); Serial.println(data_LDR); delay(500);
} |
3.
ทำการถอดสาย USB แล้วเชื่อมต่อบอร์ด NodeMCU
กับโปรแกรม Bluetooth Terminal HC-05 แล้วทดลองปรับค่าความสว่างที่เซนเซอร์ได้รับ
รูปที่ 11.7
แสดงตัวอย่างผลการทดลองที่สังเกตเห็นผ่าน Bluetooth Terminal
ซึ่งค่านี้คือค่าที่อ่านได้จากขา A0 ที่ต่อกับเซนเซอร์ LDR นั่นเอง
รูปที่
11.7
ตัวอย่างหน้าจอผลการทดลองที่แสดงผ่าน Bluetooth Terminal
ตอนที่
2
ในการทดลองนี้
เราจะทดสอบการส่งค่าจากโทรศัพท์มือถือผ่านบลูทูธ ไปควบคุมไฟแอลอีดีที่อยู่บนบอร์ด
NodeMCU
(ต่ออยู่กับขา D4) โดยมีขั้นตอนดังนี้
1.
ต่อวงจรดังรูปที่ 11.6
โดยอาจนำโมดูลวัดความสว่างแสงออก และเชื่อมต่อ NodeMCU กับคอมพิวเตอร์เพื่อลงโปรแกรมต่อไป
2.
เขียนโค้ดที่แสดงด้านล่างนี้แล้วอัปโหลดลง
NodeMCU v.3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
// Wireless Communication of NodeMCU
ESP8266 // by using Bluetooth Module HC-05 #define ON LOW #define OFF HIGH int LED = D4; // On board LED void setup() { pinMode(LED,
OUTPUT); Serial.begin(9600); Serial.println("\n\nConnection OK."); Serial.println("Select
either 1 (ON) or 0 (OFF)"); } void loop() { // If data is available on serial port if (Serial.available()) { // Data
received from bluetooth char data_received = Serial.read(); if (data_received == '0') { digitalWrite(LED, OFF); Serial.println("LED turned OFF"); Serial.println("Select either 1 (ON) or 0
(OFF)"); } else if (data_received == '1') { digitalWrite(LED,
ON); Serial.println("LED turned ON"); Serial.println("Select either 1 (ON) or 0
(OFF)"); } } } |
3.
ทำการถอดสาย USB แล้วเชื่อมต่อบอร์ด NodeMCU
กับโปรแกรม Bluetooth Terminal HC-05 แล้ว
กดปุ่มรีเซ็ตบนบอร์ด NodeMCU จากนั้นจึงทดลองเปลี่ยนสถานะของไฟแอลอีดี
โดยส่ง 0 หรือ 1 ไปยังบอร์ด
รูปที่ 11.8
แสดงลักษณะการเชื่อมต่อและหน้าต่างโปรแกรม Bluetooth Terminal HC-05 ในขณะใช้งาน
รูปที่
11.8
ลักษณะการเชื่อมต่อและหน้าต่างโปรแกรม Bluetooth Terminal HC-05 ในขณะใช้งานตามการทดลองตอนที่ 2