- เริ่มต้นใช้งาน ESP32 Bluetooth
- ทำความเข้าใจกับ Bluetooth Low Energy (BLE) และ ESP32 Classic Bluetooth
- กำลังเตรียม Arduino IDE สำหรับ ESP32
- โปรแกรม Serial Bluetooth สำหรับ ESP32
- ทดสอบ Serial Bluetooth กับ ESP32
โมดูลบลูทู ธ เช่น HC-05 และ HC-06 นั้นง่ายต่อการติดตั้งและใช้งานกับ Arduino IDE ได้อย่างรวดเร็ว แต่มีข้อ จำกัด ของตัวเองเช่นการใช้พลังงานสูงและทำงานบน Bluetooth V2.0 รุ่นเก่า นอกจากนี้เมื่อเร็ว ๆ นี้ฉันมีชุด ESP32 DEVใหม่โมดูลเหล่านี้มีคุณสมบัติมากมายเช่นWi-Fi และบลูทู ธ ในตัวหมุด ADC และ DAC ที่เพียงพอการสนับสนุนด้านเสียงการสนับสนุนการ์ด SD โหมด Deep Sleep เป็นต้น ทุกอย่างเพื่อสร้างโครงการ IoT
และเช่นเดียวกับที่นักเล่นอดิเรกทุกคนชอบมันตอนนี้ ESP32 ได้รับการสนับสนุนอย่างเป็นทางการโดย Arduino IDE ก่อนหน้านี้เราต้องแก้ปัญหาครั้งใหญ่กับ Neil Kolbans Library แต่ตอนนี้ต้องขอบคุณการเขียนโปรแกรม ESP32 กับ Arduino IDE ที่ทำงานหนักของผู้ชายคนนี้ได้กลายเป็นเค้ก ดังนั้นฉันจึงเปิดตัว Arduino IDE ของฉันและใช้โปรแกรม BLE ตัวอย่างอย่างละเอียดโดยที่ฉันไม่เข้าใจอะไรเลย หลังจากที่เวลานานของการท่องและ youtubing ฉันตระหนักว่ามีสิ่งอื่น ๆ อีกมากมายที่จะเข้าใจถ้าคุณมีการทำงานร่วมกับบลูทู ธ พลังงานต่ำ (BLE) โดยใช้ ESP32 ฉันตัดสินใจที่จะพูดถึง BLE ในบทความแยกต่างหากดังนั้นที่นี่เราจะใช้ Classic Serial Bluetooth ของ ESP32 เพื่อสลับ LED โดยใช้ Smart Phone. หากคุณสนใจที่จะตรวจสอบวิธีการใช้คุณสมบัติ BLE ให้ตรวจสอบบทความนี้เกี่ยวกับ ESP32 BLE Server และ ESP32 BLE Client
เริ่มต้นใช้งาน ESP32 Bluetooth
โปรแกรมแรกที่อยากลองใช้คือโปรแกรมง่ายๆที่ใช้เปิดหรือปิดไฟ LED จากแอปพลิเคชั่น Bluetooth Terminal ของโทรศัพท์มือถือเหมือนกับ HC-05 สมัยก่อน แต่ปรากฎว่า Bluetooth Low Energy (BLE) ไม่เยื้องสำหรับสิ่งนั้น ฉันยังค้นพบว่ามีบลูทู ธ สองประเภทในโมดูล ESP32 หนึ่งคือบลูทู ธ แบบคลาสสิกและอีกแบบคือบลูทู ธ พลังงานต่ำBLE โอเค แต่ทำไม…. ทำไมเรามีบลูทู ธ สองประเภทและฉันควรใช้อะไรกับโปรเจ็กต์ของฉัน?
ทำความเข้าใจกับ Bluetooth Low Energy (BLE) และ ESP32 Classic Bluetooth
บลูทู ธ พลังงานต่ำตามชื่อระบุว่าใช้พลังงานน้อยกว่าบลูทู ธ แบบคลาสสิก ทำได้โดยการส่งข้อมูลตามความจำเป็นโดยมีการอัพเดตเป็นระยะที่กำหนดไว้ล่วงหน้า แต่แตกต่างจากบลูทู ธ แบบคลาสสิกที่ไม่ได้ใช้เพื่อถ่ายโอนไฟล์หรือเพลง คุณเคยสงสัยหรือไม่ว่าโทรศัพท์ของคุณระบุโดยอัตโนมัติได้อย่างไรว่าอุปกรณ์บลูทู ธ ที่คุณเพิ่งจับคู่เป็นอุปกรณ์เสียงหรือแล็ปท็อปหรือโทรศัพท์คุณอาจเคยเห็นว่าระดับแบตเตอรี่ในเครื่องเล่นเสียงไร้สายหรือแถบออกกำลังกายจะแสดงโดยอัตโนมัติในแถบสถานะของ มือถือของคุณ สิ่งเหล่านี้เป็นไปได้ด้วยคุณสมบัติของอุปกรณ์ BLE อุปกรณ์ BLEทำงานร่วมกับบลูทู ธ V4.0และสามารถทำงานได้ด้วยการใช้พลังงานต่ำเป็นเซิร์ฟเวอร์หรือเป็นลูกค้าซึ่งจะทำให้BLE ตัวเลือกที่เหมาะสำหรับบีคอนนาฬิกาสมาร์ท, วงดนตรีที่ออกกำลังกาย ฯลฯ
ในทางกลับกันบลูทู ธ แบบคลาสสิกเป็นเพียงบลูทู ธ เก่าธรรมดาที่เราใช้ในการถ่ายโอนไฟล์และข้อมูลอื่น ๆ อุปกรณ์ BLE เกือบทั้งหมดมีฟังก์ชัน Bluetooth แบบคลาสสิกที่เกี่ยวข้อง บลูทู ธ ที่ใช้ในโมดูลเช่น HC-05 เป็นเวอร์ชันของบลูทู ธ คลาสสิกที่เรียกว่า Bluetooth SSP (Serial Port Protocol) ซึ่งหมายความว่าบลูทู ธ เป็นไปตามโปรโตคอลอนุกรมมาตรฐานซึ่งทำให้ง่ายต่อการส่งและรับข้อมูล ในตอนท้ายของบทช่วยสอนนี้เราจะเรียนรู้วิธีใช้ฟังก์ชัน Serial Bluetooth ใน ESP32
ในบทความนี้เราจะใช้ฟังก์ชัน Serial Bluetooth บน ESP32 เพื่อจับคู่กับสมาร์ทโฟนและใช้แอป Bluetooth Terminal ที่มีอยู่จาก Play store เพื่อส่งคำสั่งไปยัง ESP32 และสลับ LED บนบอร์ดตามลำดับ
ในบทความต่อไปเราจะกล่าวถึง ESP32 BLE ทั้งเซิร์ฟเวอร์และไคลเอนต์ โดยทั่วไปเซิร์ฟเวอร์ BLE จะใช้เพื่อส่งข้อมูล BLE ไปยังอุปกรณ์บลูทู ธ อื่น ๆ และไคลเอนต์ BLE ใช้เพื่อสแกนอุปกรณ์ BLE อื่น ๆ จึงทำหน้าที่เป็นสัญญาณ
กำลังเตรียม Arduino IDE สำหรับ ESP32
โปรดทราบว่า Arduino IDE โดยค่าเริ่มต้นไม่รองรับบอร์ด ESP32 คุณต้องดาวน์โหลดและติดตั้งโดยใช้ตัวจัดการบอร์ด หากนี่เป็นโปรแกรมแรกของคุณที่มี ESP32 ให้ทำตามบทช่วยสอนการเริ่มต้นนี้เพื่อเพิ่มบอร์ด ESP32 ลงใน Arduino ของคุณและอัปโหลดร่างทดสอบ
นอกจากนี้คุณสามารถทำโปรเจ็กต์อื่น ๆ ด้วย ESP32 ได้โดยไม่ต้องใช้ไมโครคอนโทรลเลอร์ใด ๆ
โปรแกรม Serial Bluetooth สำหรับ ESP32
โปรแกรมที่สมบูรณ์ในการสลับ LED โดยใช้ ESP32 Bluetoothมีให้ที่ท้ายหน้านี้ ภายใต้หัวข้อนี้ให้แบ่งโค้ดออกเป็นตัวอย่างขนาดเล็กและพยายามทำความเข้าใจ หากคุณเคยใช้โมดูลบลูทู ธ อื่น ๆ เช่น HC-05 แล้วคุณจะพบว่าโปรแกรมตัวอย่าง ESP32 Bluetooth Classicนี้คล้ายกันมาก
ความคิดของโปรแกรมคือการinitialise การเชื่อมต่อบลูทู ธ แบบอนุกรมโดยใช้ ESP32 และฟังข้อมูลจากอุปกรณ์ที่จับคู่ หากข้อมูลขาเข้าเป็น '1' เราจะเปิด LED และถ้าเป็น '0' เราควรปิด LED เราเริ่มโปรแกรมของเราโดยเพิ่มไฟล์ส่วนหัว BluetoothSerial ซึ่งทำให้ ESP32 Bluetooth ทำงานเป็น Bluetoth SSP
#include "BluetoothSerial.h" // ไฟล์ส่วนหัวสำหรับ Serial Bluetooth จะถูกเพิ่มโดยค่าเริ่มต้นใน Arduino
มีหลายสิ่งหลายอย่างเกิดขึ้นเบื้องหลังห้องสมุดนี้ แต่เราเลือกที่จะไม่เจาะลึกเข้าไปในห้องสมุดนี้เพื่อให้สิ่งต่างๆเรียบง่าย สิ่งต่อไปที่เราจำเป็นต้องเป็นวัตถุสำหรับการดำเนินงานบลูทู ธ ที่เกี่ยวข้องของเรา ที่นี่ฉันตั้งชื่อของฉันเป็น ESP_BT แต่คุณสามารถเลือกชื่อใดก็ได้
BluetoothSerial ESP_BT; // วัตถุสำหรับบลูทู ธ
ถัดไปภายในฟังก์ชัน void setup () เราเริ่มต้นด้วยการสื่อสารแบบอนุกรมอัตราบอด 9600 และเริ่มต้นสัญญาณบลูทู ธ ที่มีชื่อ ที่นี่ฉันตั้งชื่อเป็น “ ESP32_LED_Control ” ซึ่งจะเป็นชื่อที่โทรศัพท์ของเราจะพบเมื่อพยายามจับคู่ ในที่สุดฉันได้ประกาศขา LED ในตัวเป็นขาออกเนื่องจากเราจะสลับตามสัญญาณบลูทู ธ
การตั้งค่าเป็นโมฆะ () { Serial.begin (9600); // เริ่มการทำงานของ Serial monitor ใน 9600 ESP_BT.begin ("ESP32_LED_Control"); // ชื่อของสัญญาณ Bluetooth Serial.println ของคุณ("อุปกรณ์ Bluetooth พร้อมที่จะจับคู่"); pinMode (LED_BUILTIN, OUTPUT); // ระบุว่าเอาต์พุตขา LED }
ภายในอนันต์ ห่วงโมฆะ ฟังก์ชั่นที่เราตรวจสอบว่ามีข้อมูลใด ๆ ที่มาจากโมดูลบลูทู ธถ้าใช่แล้วข้อมูลจะถูกอ่านและเก็บไว้ในตัวแปรที่เข้ามา นอกจากนี้เรายังพิมพ์ค่านี้บนจอภาพอนุกรมเพื่อตรวจสอบสิ่งที่ได้รับจาก Arduino
ถ้า (ESP_BT.available ()) // ตรวจสอบว่าเราได้รับอะไรจากบลูทู ธ หรือไม่ { incoming = ESP_BT.read (); // อ่านสิ่งที่เรารับ Serial.print ("ได้รับ:"); Serial.println (ขาเข้า);
ตอนนี้ข้อมูลที่ได้รับจะถูกเก็บไว้ในตัวแปร ขาเข้า ดังนั้นเราจึงสามารถเปรียบเทียบตัวแปรนี้กับค่าที่คาดหวังได้โดยตรงและดำเนินการตามที่ต้องการ แต่ค่าที่ส่งจากบลูทู ธ จะอยู่ในรูป ถ่าน และ Arduino จะอ่านค่าทศนิยมของถ่านที่กำลังส่งจากโทรศัพท์ ในกรณีของเราสำหรับ char '0' ค่าทศนิยมจะเป็น 48 และสำหรับ char '1' ค่าทศนิยมจะเป็น 49 คุณสามารถอ้างอิงแผนภูมิ ASCII เพื่อทำความเข้าใจว่าอะไรจะเป็นค่าทศนิยมสำหรับทุกอักขระ
ที่นี่เราได้มีการเปรียบเทียบตัวแปรเข้ามาพร้อมกับ 48 และ 49 เพื่อตรวจสอบ 0 และ 1 ตามลำดับ ถ้าเป็น 1 เราจะปิด LED และพิมพ์ข้อความตอบรับกลับไปที่ Bluetooth โดยแจ้งว่า LED ถูกปิดและกลับกันเป็น 0
ถ้า (ขาเข้า == 49) { digitalWrite (LED_BUILTIN, HIGH); ESP_BT.println ("LED เปิดอยู่"); } if (ขาเข้า == 48) { digitalWrite (LED_BUILTIN, LOW); ESP_BT.println ("LED ปิด"); }
ทดสอบ Serial Bluetooth กับ ESP32
เชื่อมต่อ ESP ของคุณกับ Arduino IDE และเลือกบอร์ดและพอร์ตที่ถูกต้องตามที่กล่าวไว้ในบทช่วยสอนการเริ่มต้นใช้งาน เพราะมันเป็น 3 ถผู้จัดการคณะกรรมการพรรคอาจใช้เวลาอีกนิดสำหรับรหัสที่ได้รับการรวบรวมและอัปโหลด เมื่ออัปโหลดแล้วให้เปิดจอภาพอนุกรม (สำหรับการดีบักเท่านั้น) และเปิดการตั้งค่าบลูทู ธ บนโทรศัพท์ของคุณ คุณควรหาอุปกรณ์บลูทู ธ ชื่อ ESP32_LED_Control จับคู่กับ.
ตอนนี้คุณสามารถเปิดแอปเทอร์มินัลบลูทู ธ บนสมาร์ทโฟนของคุณได้แล้วฉันใช้แอปที่ชื่อว่า"เทอร์มินัลบลูทู ธ "ซึ่งดาวน์โหลดจาก Google App store เชื่อมต่อแอพพลิเคชั่นบลูทู ธ เข้ากับอุปกรณ์ที่เราเพิ่งจับคู่และพิมพ์ 1 แล้วกดส่ง
โมดูล ESP32 ควรจะได้รับมันและเปิดไฟ LED ตามโปรแกรมของเราและยังให้คุณรับทราบข้อความบอกว่าไฟ LED เปิดอยู่เหมือนภาพหน้าจอที่แสดงข้างต้น นอกจากนี้คุณยังสามารถตรวจสอบ Serial monitor ซึ่งจะแสดงข้อมูลที่กำลังรับโดย ESP32 Bluetooth ในรูปแบบทศนิยมซึ่งเป็น Arduino ของคุณจะอ่าน 48 สำหรับ 0 และ 49 สำหรับ 1 ตามที่อธิบายไว้ก่อนหน้านี้ ภาพรวมของหน้าต่างเทอร์มินัลของฉันแสดงอยู่ด้านล่าง
ในทำนองเดียวกันคุณควรปิดไฟ LED ได้โดยส่ง 0 จากแอปพลิเคชันมือถือ การทำงานที่สมบูรณ์จะปรากฏในวิดีโอด้านล่างหวังว่าคุณจะเข้าใจบทแนะนำและเรียนรู้สิ่งที่เป็นประโยชน์ หากคุณมีข้อสงสัยอย่าลังเลที่จะทิ้งไว้ในส่วนความคิดเห็นด้านล่างหรือใช้ฟอรัมของเราเพื่อขอความช่วยเหลือด้านเทคนิคอื่น ๆ