ข้ามไปที่เนื้อหาหลัก

การใช้งาน HC-05 Bluetooth Master Slave

HC-05 Bluetooth ส่วนใหญ่จะใช้งานด้านการสื่อสารหรือส่งข้อมูลเป็นหลัก เพราะ HC-05 สามารถทำงานได้ 2 โหมด เป็น Server หรือ Client ได้ เราสามารถประยุกต์ใช้ Bluetooth Module มาเป็นช่องทางในควบคุมอุปกรณ์ระหว่างมือถือกับ Arduino โดยหลักการง่ายๆ ของการใช้ Bluetooth คือต้องมีการ pair อุปกรณ์เข้าหากัน คุณก็สามารถสั่งงานผ่าน Mobile App ได้


เตรียมอุปกรณ์ดังนี้

1. บอร์ด Arduino UNO R3  พร้อม สาย USB Port

2. Bluetooth (HC-05 Master+Slave)

3. Jumper (F2M) cable wire 40pcs 10 cm 2.54mm Female to Male
   (สายเชื่อมต่อ ผู้-เมีย 5 เส้น)

เชื่อมต่อ HC-05 Bluetooth กับ Arduino UNO ดังภาพ

UNO <---> HC-05
5V <---> VCC 
GND <---> GND
8 <---> EN
9 <---> TXD
10 <---> RXD

เมื่อเชื่อมต่อเสร็จ จะได้ตามภาพด้านล่าง




เชื่อม USB Port  ต่อเข้ากับคอมพิวเตอร์




เปิดโปรแกรม Arduino (IDE)  เขียน โค้ดดังนี้

#include <SoftwareSerial.h>
SoftwareSerial BTSerial(9, 10);

void setup()
{
  pinMode(8, OUTPUT); 
  digitalWrite(8, HIGH);
  Serial.begin(9600);
  BTSerial.begin(9600); 
  delay(1000);
  Serial.println("Enter AT commands:");
}

void loop()
{

  if (BTSerial.available())
    Serial.write(BTSerial.read());


  if (Serial.available())
    BTSerial.write(Serial.read());
}

Verify แล้ว Upload โค้ด ลงไปในบอร์ด Arduino UNO R3



อธิบายการทำงาน จากตัวอย่าง Source Code ด้านบน

 ก่อนอื่นต้องทำความรู้จักกับ ไลบรารี่ ฟังก์ชัน (Library Function) ในภาษา C  ไลบรารี่ เป็นฟังก์ชันสำหรับการทำงานหนึ่งๆ ที่ผู้พัฒนา ได้ทำการพัฒนามาเตรียมไว้ให้เราเรียกใช้ มีผลดีคือลดเวลาในการพัฒนา โปรแกรมคอมพิวเตอร์ของเราครับ ไลบรารี่ ฟังก์ชัน  ของภาษา C จะเก็บอยู่ใน ไฟล์นามสกุล.h  หรือที่เรียกว่า เฮดเดอร์ไฟล์ (Header File) อย่างเช่น stdio.h  math.h  การเรียกใช้ ไลบรารี่ ฟังก์ชัน เราต้องรู้ว่า ฟังก์ชัน ที่ต้องการอยู่ในไฟล์ใด จากนั้นทำการ  #include ไฟล์นั้นไว้ในส่วนหัวของโปรแกรม  และ ไลบรารี่ ฟังก์ชัน (Library Function) ของ Arduino เองก็มีผู้พัฒนาไว้ให้เราอย่างมากมายแล้วเช่น SoftwareSerial.h เป็น ฟังก์ชัน ที่เกี่ยวกับ การติดต่อสื่อสารกับ USB Port (Serial Port  หรือ พอร์ตอนุกรม) ของ บอร์ด Arduino เป็นต้น

#include <SoftwareSerial.h>  // ให้คอมไพเลอร์นำเฮดเดอร์ไฟล์ (Library Function) ชื่อ SoftwareSerial.h เข้ามาร่วมในการประมวลผลด้วย

SoftwareSerial BTSerial(9, 10);  //ตั้งให้ขา 9 และ 10 ให้เป็น RX, TX โดยใช้ชื่อว่า BTSerial

void setup() //ฟังก์ชันส่วนนี้จะทำงานครั้งแรก เพียงครั้งเดียวเท่านั้น
//เริ่มการทำงานของฟังก์ชัน setup
  pinMode(8, OUTPUT);  //ตั้งค่าให้ ดิจิตอล ขา 8 เป็นโหมดเอาท์พุท
  digitalWrite(8, HIGH);   //ตั้งค่าให้ ดิจิตอล ขา 8 สถานะ มี ไฟ 5 โวลต์
  Serial.begin(9600);   //ตั้งค่าความเร็วในการรับ-ส่งข้อมูล ค่ามาตรฐาน คือ 9600
  BTSerial.begin(9600);   //ตั้งค่าความเร็วในการรับ-ส่งข้อมูล ค่ามาตรฐาน คือ 9600
  delay(1000); //ตั้งค่าให้รอ 1 วินาที  (1 Millisecond เท่ากับ 1/1000 ของวินาที)
  Serial.println("Enter AT commands:"); //ให้แสดงคำที่อยู่ในเครื่องหมายคำพูด ""
//สิ้นสุดการทำงานของฟังก์ชัน setup

void loop() //ฟังก์ชันส่วนนี้จะทำงานซ้ำ วนลูป ไปเรื่อยๆ
//เริ่มการทำงานของฟังก์ชัน loop

  if (BTSerial.available()) //ถ้า BTSerial มีข้อมูลเข้ามา
    Serial.write(BTSerial.read()); // พอร์ต Serial ส่งค่าที่รับจากพอร์ต BTSerial ออกมา

  if (Serial.available()) //ถ้า Serial มีข้อมูลเข้ามา
    BTSerial.write(Serial.read()); //  พอร์ต BTSerial ส่งค่าที่รับจากพอร์ต Serial ออกมา
//สิ้นสุดการทำงานของฟังก์ชัน loop แต่ให้กลับไปทำงานใหม่


เพิ่มเติมการเรียนรู้ ภาษา C

ประโยค  if   แบบง่าย


                ประโยค  if  แบบง่าย  1  ทางเลือก คือ การเขียนประโยค  if  ที่มีการตรวจสอบเงื่อนไขเพียงหนึ่งทางเลือก คือ ถ้าเงื่อนไขเป็นจริง จะทำงานในส่วนของคำสั่งที่กำหนด แต่ถ้าเงื่อนไขเป็นเท็จ จะข้ามการทำงานของคำสั่งดังกล่าวไป ดังรูปแบบข้างล่างนี้





 จากภาพ แสดงให้เห็นว่า ถ้า เงื่อนไขหรือค่าของนิพจน์ที่ตรวจสอบ เป็นจริง ก็จะเลือกกระทำชุดคำสั่งหนึ่งแล้วไปกระทำตามคำสั่งต่อไป แต่ถ้าค่าของนิพจน์ เป็นเท็จ ก็ไม่ทำ ชุดคำสั่งใด ๆ ในทางเลือกเลย แต่ให้ไปทำชุดประโยคคำสั่งต่อไป

ตัวอย่างตามโค้ดด้านบน เช่น

  if (BTSerial.available()) //ถ้า BTSerial มีข้อมูลเข้ามา = จริง จะทำงานบรรทัดต่อไป , ถ้าไม่มี ก็จะ = เท็จ คือไม่ต้องทำงาน ให้ข้ามไป ครับ


สรุปการทำงานของ โปรแกรม นี้ คือ รับคำสั่ง AT-COMMAND จากช่องป้อนข้อมูล ของ Serial Monitor การทำงานจะเริ่มจากคำสั่งที่เขียน ไว้ในไฟล์ SoftwareSerial.h  ร่วมกับ คำสั่งที่เราเขียนเพิ่มเข้าไป เพื่อตรวจสอบการทำงาน ของ Bluetooth แล้วส่งผลลัพธ์ กลับมาแสดงผลด้านล่าง ของช่องป้อนข้อมูล

AT-COMMAND คือ ชุดคำสั่งมาตรฐาน ที่สามารถใช้ติดต่อสื่อสารกับอุปกรณ์สื่อสารต่างๆ เช่น โมเด็ม หรือ อุปกรณ์ DTE (Data Terminal Equipment) เพื่อโต้ตอบตั้งค่าหรือสั่งงานอุปกรณ์เหล่านั้น ให้ทำงานตามที่ต้องการ

ต่อนะครับ เมื่อ Upload เสร็จ ให้เปิด Serial Monitor ขึ้นมา โดยไปที่  Tools -> Serial Monitor 




ในช่อง Serial Monitor ทางขวาด้านล่างจะมีช่องค่า Baudrate เลือกค่าที่ถูกต้องในตามโปรแกรม ค่า ปกติเราจะใช้ค่า 9600 และเลือก Both NL & CR ดังรูป




 พิมพ์ AT แล้วกด Send หรือ Enter จะมีคำว่า OK แสดงออกมาให้เห็นดังภาพ



 พิมพ์ AT+ROLE? แล้วกด Send เพื่อตรวจสอบให้แน่ชัดว่าเป็น  Slave Mode (โหมดรอรับคำสั่ง) ค่าที่แสดงออกมาจะเป็น +ROLE:0 ก็แสดงว่า HC-05 Bluetooth ของเรานั้น พร้อมใช้งานแล้วครับ





หมายเหตุ : หากไม่มีการตอบสนอง ให้ตรวจสอบการต่อสายต่าง ๆ ตรวจสอบที่ตัว HC-05  ลองกดที่ปุ่ม BUTTON SWITCH  ของ HC-05 หากยังไม่มีการตอบสนอง ให้ปิดหน้าต่าง Serial Monitor แล้วลองอีกครั้ง


ถ้า HC-05 องเราพร้อมใช้งานแล้ว ลองเปิดบลูทูธ  ที่ โทรศัพท์มือถือของเรา (ระบบปฏิบัติการ แอนดรอยด์)  ก็จะพบ HC-05 ของเราทำงานอยู่




เมื่อเชื่อมต่อเข้าไป ถ้าเป็นครั้งแรก ก็จะถามรหัสผ่าน ให้ ใส่ 1234 -> ตกลง




หน้าจอก็จะแสดง HC-05 ของเรา เชื่อมต่อกับ โทรศัพท์มือถือของเรา สำเร็จ พร้อมที่จะรับคำสั่ง จาก Mobile App แอนดรอยด์ ต่อไป




โพสต์ยอดนิยมจากบล็อกนี้

การใช้งาน IR Infrared Obstacle Avoidance Sensor Module

โมดูลเซ็นเซอร์แสงสำหรับตรวจจับวัตถุกีดขวาง   IR Infrared Obstacle Avoidance Sensor Module โมดูลเซ็นเซอร์แสงสำหรับตรวจจับวัตถุกีดขวาง    IR Infrared Obstacle Avoidance Sensor Module โดยโมดูลนี้ จะมีตัวรับและตัวส่ง infrared ในตัว ตัวสัญญาณ(สีขาว) infrared จะส่งสัญญาณออกมา และเมื่อมีวัตถุมาบัง คลื่นสัญญาณ infrared  ที่ถูกสั่งออกมาจะสะท้องกลับไปเข้าตัวรับสัญญาณ (สีดำ) สามารถนำมาใช้ตรวจจับวัตถุที่อยู่ตรงหน้าได้ และสามารถปรับความไว ระยะการตรวจจับ ใกล้หรือไกลได้ ภายตัวเซ็นเซอร์แบบนี้จะมีตัวส่ง Emitter และ ตัวรับ Receiver ติดตั้งภายในตัวเดียวกัน ทำให้ไม่จำเป็นต้องเดินสายไฟทั้งสองฝั่ง เหมือนแบบ Opposed Mode ทำให้การติดตั้งใช้งานได้ง่ายกว่า แต่อย่างไรก็ตามจำเป็นต้องติดตั้งตัวแผ่นสะท้อนหรือ Reflector ไว้ตรงข้ามกับตัวเซ็นเซอร์เอง โดยโฟโต้เซ็นเซอร์แบบที่ใช้แผ่นสะท้อนแบบนี้จะเหมาะสำหรับชิ้นงานที่มีลักษณะทึบแสงไม่เป็นมันวาว เนื่องจากอาจทำให้ตัวเซ็นเซอร์เข้าใจผิดว่าเป็นตัวแผ่นสะท้อน และ ทำให้ทำงานผิดพลาดได้ เซ็นเซอร์แบบนี้จะมีช่วงในการทำงาน หรือ ระยะในการตรวจจั...

การติดตั้ง Library ของ DHT Sensor DHT11 , DHT21 , DHT22

การติดตั้ง Library ของ DHT Sensor ไลบรารี DHT ใช้สำหรับในการให้เซ็นเซอร์ DHT  อ่านอุณหภูมิและความชื้นด้วย  Arduino หรือ ESP8266 ได้ คลิกที่นี่เพื่อดาวน์โหลดไลบรารี ของเซ็นเซอร์ DHT https://github.com/adafruit/DHT-sensor-library เปิดโปรแกรม Arduino IDE  ไปที่ Skecth -> Include Library -> Add .ZIP Library... ไปที่ ไลบรารี DHT-sensor-library ที่เรา ดาวน์โหลด มา ตรวจสอบที่ Skecth -> Include Library  จะพบ ไลบรารี DHT sensor library เพิ่มเข้ามาใน Arduino IDE ของเรา ไปที่ Skecth -> Include Library -> Manage Libraries... ไปที่ช่องค้นหา พิมพ์ DHT -> Enter (เพื่อค้นหา DHT sensor library ) เมื่อพบ DHT sensor library แล้ว ให้คลิก More info คลิกที่ Select Vers.. ในตัวอย่าง เลือก Version 1.2.3 คลิก Install คลิก Close เพิ่ม #include <DHT.h> ไปที่ส่วนบนสุดของโค้ด #include <DHT.h> void setup() {   // put your setup code here, to run once: }...

ESP32 #2: การติดตั้ง Arduino core for ESP32 WiFi chip

ในบทความนี้จะเป็นการแนะนำการติดตั้งโปรแกรม Arduino IDE ตั้งแต่ต้น ไปจนถึงการติดตั้งชุดพัฒนา Arduino core for ESP32 WiFi chip และ การตรวจสอบว่าติดตั้งสำเร็จหรือไม่ “Arduino” แต่เดิมเป็นแพลตฟอร์มที่ใช้ในการพัฒนาเฟิร์มแวร์ให้กับบอร์ด Arudino เท่านั้น แต่ภายหลังกลุ่มผู้พัฒนาโปรแกรม Arduino IDE ได้เริ่มรองรับการติดตั้งชุดพัฒนาเฟิร์มแวร์ให้กับบอร์ดอื่น ๆ ด้วย ทำให้บอร์ดอื่น ๆ ที่รองรับการเขียนโปรแกรมด้วยภาษา C/C++ สามารถเข้ามาใช้โปรแกรม Arduino IDE ในการพัฒนาได้ นอกจากข้อดีของโปรแกรม Arduino IDE แล้ว ชุดไลบารี่ต่าง ๆ ที่ทำมารองรับกับแพลตฟอร์ม Arduino ก็จะสามารถนำมาใช้งานกับบอร์ดอื่น ๆ ได้ด้วย การจะใช้ Arduino core for ESP32 กับ Arduino IDE ได้นั้น มีขั้นตอนดังนี้ คือ 1. ติดตั้งโปรแกรม Arduino (IDE) ลิงค์ดาวโหลด Arduino (IDE)  https://www.arduino.cc/en/Main/Software 2. ติดตั้ง แพลตฟอร์ม ESP32 ในการเริ่มต้นเราจะต้องอัปเดตผู้จัดการบอร์ดด้วย URL ที่กำหนดเอง เปิด Arduino IDE และไปที่ File > Preferences คัดลอก URL ด้านล่างลงใน Additional Board Manager URLs: แ...