หน้าแรก
วิธีการสั่งซื้อสินค้า
แจ้งชำระเงิน
บทความ
เว็บบอร์ด
เกี่ยวกับเรา
ติดต่อเรา
หน้าแรก
>
บทความ
>
[ESP32 ตอนที่ 8] Bluetooth
ค้นหาบทความที่นี่
บทความทั้งหมด
[ESP32 ตอนที่ 8] Bluetooth
6 ปีที่ผ่านมา
โดย
เจ้าของร้าน
อีกหนึ่งคุณสมบัติของ ESP32 นั่นคือมันมีบลูทูธ นี่เป็นสิ่งที่ต่างจาก ESP8266 ที่เห็นได้ชัดเจน การมี WiFi+Bluetooth มันเป็นการสิ้นเปลืองหรือไม่? เกินความจำเป็นหรือเปล่า? ในความเห็นของผู้เขียนนั้น คำถามเหล่านี้ต้องถามกลับว่าจะใช้งานอะไร? ในที่ผู้เขียนทำบางงานต่อกับ WiFi อย่างเดียวตลอดก็จะเลือกใช้เพียง ESP8266 บางงานใช้บลูทูธอย่างเดียวและพื้นที่มีมากกจะใช้ Arduino+Bluetooth Module ส่วนงานพื้นที่เล็กๆอาจเลือก ESP32 ในบางงานต้องใช้ทั้ง WiFi และ Bluetooth ก็ใช้เจ้า ESP32 เป็นต้น ข้อดีของเจ้า ESP32 นี้คือมันมาพร้อมกับ Bluetooth 4.2 BR/EDR + BLE ซึ่งประเด็นมันอยู่ตรง BLE มันย่อมาจาก Bluetooth Low Energy หากเราใช้โหมดนี้มันจะกินพลังงานต่ำ แต่ก็แน่นอนว่าต้องแลกกับ Data Rate ที่ลดลง หากเราใช้โหมด BR/EDR (Bluetooth Classic) จะกินไฟพีคที่ 30mA จะได้ Data Rate สูงสุดถึง 3Mbit/s แต่หากใช้โหมด BLE จะกินไฟที่ 15mA น้อยกว่าถึงครึ่งแต่แลกกับได้ Data Rate สูงสุดๆแค่ 2Mbit/s อีกทั้ง BLE นั้นจะไม่สามารถส่งสัญญาณเสียงได้ แต่เราจะใช้ส่งข้อมูลเซ็นเซอร์ต่างๆ และแน่นอนว่ายุคนี้ยุค IoT การออกแบบเรื่องพวกนี้คือการประหยัดสัญญาณ ส่งข้อมูลน้อยที่สุด เราจึงจะใช้ BLE กันครับ(ยกเว้นใครจะเอา ESP32 ไปทำลำโพงบลูทูธก็ใช้โหมดคลาสสิกกันไป) การใช้งานจะเป็นแบบไหนลองไปดูพร้อมกันครับ
ตามสไตล์เราครับ คือเราจะเน้นมือใหม่ เล่นง่ายๆแล้วเน้นอธิบายให้ไปดัดแปลงกัน ฉะนั้นเริ่มต้นด้วยตัวอย่างโดยการเปิด Flie > Examples > ESP32 BLE Arduino > BLE_server หรือแบบอธิบายไทยตามด้านล่างนี้
จากโค้ดที่ได้ ส่วนหลักๆที่ต้องรู้ คือ UUID ย่อมาจาก Universally Unique Identifier ซึ่งคือกลุ่มตัวเลขกลุ่มหนึ่ง ที่ใช้ระบุตัวตนของอุปกรณ์ และยืนยันว่าอุปกรณ์ในโปรเจคที่เราใช้งานนั้นจะไม่ซ้ำกัน พูดง่ายๆก็คงเปรียบเหมือนเลขบัตรประชาชนของแต่ละคน ในบลูทูธของ ESP32 นี้จะใช้ UUID Version4 ซึ่งจะใช้กลุ่มตัวเลขหรืออักษรแบบสุ่ม 32 บิต(ตัว) โดยจะมีรูปแบบเป็น xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx (8 ตัว - 4 ตัว - 4 ตัว - 4 ตัว - 12 ตัว) ซึ่งใน UUID บางหลักนั้นจะมีความหมาย อย่างเช่นรูปแบบที่ยกตัวอย่างนั้นเป็นรูปแบบของ UUID4 ที่เราใช้ โดยตรง x นั้นจะสุ่มอะไรขึ้นมาใส่ก็ได้ แต่ M และ N นั้นต้องเป็นค่าเฉพาะ ซึ่งอธิบายตรงนี้ต่อคงยาวมากและไม่เหมาะกับมือใหม่ สรุปสั้นๆคือเราเปลี่ยน UUID นี้ได้ ใชสิบตัวก็ใช้สิบ UUID ซึ่งเราสามารถสุ่มได้จาก
Online UUID Generator
ก็อปปี้มาใส่ได้เลย
ในอีกส่วนตรง setup loop คือ BLEDevice::init("MyESP32"); เป็นการเริ่มการทำงานของ Bluetooth โดยให้ใช้ชื่อของบลูทูธว่า MyESP32 (คล้ายๆกับการตั้ง mDNS ในส่วนของ WiFi) เวลาเอาอุปกรณ์มาเชื่อมต่อจะได้หากันง่ายๆครับ
ตรงส่วนการสร้าง Bluetooth Server ก็ไม่อยากให้คิดมากครับเวลาจะใช้ก็ก็อปปี้วางเลย จากนั้นจึงให้แสดงประโยค "Hello World says Neil" โดยใช้การ Advertising คือเหมือนๆกับการปริ้นประโยคนี้ใส่กระดาษไปติดตามเสาไฟฟ้าแหละครับ Advertising ก็แสดงประโยคนี้ให้ใครก็ได้ที่มาต่อกับบลูทูธนี้
สำหรับโค้ดนี้ก็ไม่มีอะไรเลย ดูส่วน loop คือว่างมาก ไม่มีคำสั่งใดๆ เราจะทำการอัพโหลดโค้ดเข้าไปใน ESP32 จากนั้นจะนำสมาร์ทโฟนของทุกคนมาทำการเชื่อมต่อเพื่อเช็ค สร้างความมั่นใจว่าเห้ย เราใช้งานบลูทูธได้แล้ว โดยจะให้แอปพลิเคชั่นตัวหนึ่งในการเชื่อมต่อนี้คือแอป nRF Connect ซึ่งสามารถโหลดได้ฟรี สำหรับ Android 4.3 ขึ้นไป
ดาวน์โหลดได้ที่นี่
และ iOS 9.0 ขึ้นไป iPad iPod touch
ดาวน์โหลดได้ที่นี่
ติดตั้งเรียบร้อยแล้วก็ทำการเปิดบลูทูธของโทรศัพท์แล้วเปิดแอปขึ้นมาเลยครับ หาอันที่ชื่อ MyESP32 กด CONNECT เข้าไปเลย ข้อมูลต่างๆจะมาโผล่บนโทรศัพท์ของเราแล้วครับ ทั้ง Service UUID ทั้ง Caracteristic UUID และประโยค "Hello World says Neil" ตามที่เราเขียนไว้
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
มาถึงตรงนี้ เห้ย มันยังไม่ได้ใช้งานเลย โอเค ไปต่อกันเลยดีกว่ายาวเป็นยาวบทความนี้ ต่อไปเราไปดูการใช้งาน iBeacon กันดีกว่าครับ
iBeacon เป็นเทคโนโลยีที่ถูกพัฒนาโดย Apple เปิดตัวในปี ค.ศ.2013 ใช้สำหรับการบอกตำแหน่งและส่งข้อมูลให้กับผู้ใช้โดยไม่ต้องทำอะไรเพิ่มเติม เพียงแค่เปิดใช้งานบลูทูธและอนุญาตให้รับสัญญาณจากตัวอุปกรณ์ทั้งนั้น หลักการง่ายๆที่ใช้คือยิ่งใกล้สัญญาณยิ่งแรง พอออกไปไกลสัญญาณเริ่มอ่อน จึงนำตรงนี้มาใช้งาน ถ้าใกล้ระยะนี้ให้ทำงานอันนี้ เป็นต้น โดยในปัจจุบันนั้นมีการนำไปใช้งานหลากหลาย เช่นติด iBeacon ไว้ที่จุดแคชเชียร์ ลูกค้าที่มาจ่ายเงินก็ยืนห่างจากเครื่องคิดเงินเอาว่า 70cm iBeacon ก็จะเรียกเก็บเงินจากแอปในโทรศัพท์มือถือของลูกค้าโดยที่ไม่ต้องเอาโทรศัพท์ออกมาจากกระเป๋า หรือติดตั้ง iBeacon ไว้กลางบ้าน หากเราพกมือถือเดินออกจากบ้านเกิน 5 เมตร ไฟในบ้านจะดับลง เมื่อเข้ามาในระยะ 5 เมตรไฟในบ้านจะสว่างขึ้นรอต้อนรับเรา ก็นำไปใช้งานแบบนี้เป็นต้น
โม้ยืดเวลามาเยอะ ทีนี้จะเขียนอะไรดี ผู้เขียนขอเอาอะไรที่เห็นว่ามันใช้งานได้เลยดีกว่าครับ จะทำให้เจ้า ESP32 คอยสแกนหาอุปกรณ์ของเรา ขอใช้เป็นโทรศัพท์มือถือละกัน ทีนี้พอโทรศัพท์เข้าใกล้ตัว ESP32 ซักระยะหนึ่งในการทดลองอาจซักเมตรสองเมตรจะได้ไม่ต้องลุกไกล ก็ให้หลอด LED บนบอร์ดติดขึ้นมา พอออกนอกระยะก็ดับไป เอาไปประยุกต์ใช้เปิดปิดไฟตอนเข้าออกบ้านได้ ปรับโค้ดนิดหน่อย เขียนให้ขับรีเลย์ก็ได้เลย
แต่ก่อนจะเริ่มทำโปรเจคนี้ เราต้องรู้ว่าโทรศัพท์ของเรามี MAC Address (เลขประจำแต่ละอุปกรณ์)อะไร และระยะที่เราต้องการโทรศัพท์เรามันมี RSSI (ค่าความแรงของสัญญาณ)เท่าไร หากใครมีมือถือสองเครื่องก็ไม่ยาก ลงแอป nRF Connect ไป แล้วให้จับสัญญาณของเครื่องที่จะใช้ในโปรเจคนี้ได้เลย ||
แต่หากใครมีมือถือเครื่องเดียว เรามีทางออกแต่อาจยุ่งนิดนึง ก็ใช้เจ้า ESP32 ของเรานั่นแหละทำการสแกน โดยจะมีโค้ดตามด้านล่างนี้ ซึ่งเป็นโค้ด BLE_scan ที่มีใน Examples แต่ได้ทำการเพิ่มส่วนของการหา RSSI เข้าไปอีกนิด
อัพโหลดเรียบร้อยก็จัดการเปิดบลูทูธที่โทรศัพท์มือถือ นำไปวางในระยะที่ต้องการ ในที่นี้ผู้เขียนเอาไปวางห่างซักเมตรกว่าๆ กลับมาเปิด Serial Monitor จิ้มปุ่ม Reset ของ ESP32 ครั้งหนึ่ง รอซักครู่จนมีคำว่า Device found : ขึ้นมา จากตัวอย่างด้านล่างผู้เขียนต้องสแกน 2 รอบเพราะรอบแรกเปิดบลูทูธของโน๊ตบุ๊คไว้ด้วยเลยไม่รู้ว่าอันไหนคอม อันไหนมือถือ ครั้งที่สองจึงปิดบลูทูธโน๊ตบุ๊คไป คงเหลืออันเดียวซึ่งซ้ำกับครั้งแรกที่สแกนได้ด้วย เป็นการเช็คแบบไม่ต้องใช้อุปกรณ์อะไรมากครับ อาศัยความยุ่งยากนิดนึง
หลังจากได้ MAC Address และ RSSI มาแล้วก็เอามาใส่ในโค้ดของเราเลย ลงมือเขียนโค้ดกันเลย มีโค้ดดังนี้
การทำงานของโค้ดนั้นอธิบายไว้ในัวโคค้ดแล้วครับ การทำงานหลักๆคือการตรวจจับสัญญาณของอุปกรณ์(มือถือ)ที่เรากำหนดไว้ ถ้าจับสัญญาณได้ก็หาค่า RSSI หากความแรงของสัญญาณมีค่ามากกว่าหรือเท่ากับที่กำหนดไว้ก็แสดงว่ามือถือเข้ามาอยู่ใกล้อุปกรณ์ให้ไฟติดสว่างขึ้น หากสัญญาณอ่อนแสดงว่ามือถือมีระยะห่างไปให้ไฟดับ ส่วนโค้ดอื่นๆพวกฟังก์ชั่น Callback ต่างๆนั้นแทบตายตัว คือสำเร็จมาแล้วก็อปปี้ไปวางได้เลย ก็ไม่มีอะไรยุ่งยากครับ
สำหรับ Bluetooth Beacon นั้นก็ไม่ได้มีเฉพาะ iBeacon ที่ทาง Apple คิดค้นออกมาเท่านั้น แต่ยังมีอื่นๆอีก เช่น Eddystone ของทาง Google หรือ AltBeacon ที่ Radius Networks คิดค้นข้นมาเป็น Open Source ซึ่งเหล่านี้อาจมีวิธีการใช้ เทคนิคและรายละเอียดต่างกันเล็กน้อย แ่ทั้งนี้ก็มีจุดประสงค์ในการใช้งานเหมือนกัน หากท่านใดอยากรู้เพิ่มเติมสามารถไปศึกษาเรื่องเหล่านี้ต่อได้ หรือไว้มีโอกาสผู้เขียนก็จะมาเขียนให้อ่านกันครับ
คลิกที่นี่เพื่อดาวน์โหลดโค้ดตัวอย่าง
คลิกที่นี่เพื่ออ่านบทความต่อไป
esp32
,
IoT
,
Internet of Things
,
Learning
,
tutorial
Share
Share :
COPY
Privacy Policy
|
Cookie Policy
|
Copyright © 2025
fitrox.lnwshop.com
All rights reserved.
ตะกร้า
(
0
)
▲
▼
รายการสั่งซื้อของฉัน
เข้าสู่ระบบด้วย
เข้าสู่ระบบ
สมัครสมาชิก
ยังไม่มีบัญชีเทพ
สร้างบัญชีใหม่
ไม่มีค่าใช้จ่าย
สมัครสมาชิก (ฟรี)
รายการสั่งซื้อของฉัน
ข้อมูลร้านค้านี้
Fitrox Electronics
ไฟทร็อก อิเล็กทรอนิกส์ จำหน่ายอุปกรณ์อิเล็กทรอนิกส์ บอร์ดไมโครคอนโทรลเลอร์ และอุปกรณ์สำหรับโปรเจคต่างๆ อ.เมือง จ.เชียงใหม่ (หลัง มช.)
เบอร์โทร :
0897245633
อีเมล :
fitrox.electronics@gmail.com
ส่งข้อความติดต่อร้าน
เกี่ยวกับร้านค้านี้
ค้นหาสินค้าในร้านนี้
ค้นหา
หรือค้นหาอย่างละเอียด
ค้นหาสินค้า
สินค้าที่ดูล่าสุด
{{pdata.name}}
ดูสินค้าทั้งหมดในร้าน
สินค้าที่ดูล่าสุด
บันทึกเป็นร้านโปรด
Join เป็นสมาชิกร้าน
แชร์หน้านี้
แชร์หน้านี้
↑
TOP
เลื่อนขึ้นบนสุด
คุณมีสินค้า
0
ชิ้นในตะกร้า
สั่งซื้อทันที
สินค้าในตะกร้า ({{total_num}} รายการ)
ขออภัย ขณะนี้ยังไม่มีสินค้าในตะกร้า
ราคาสินค้าทั้งหมด
฿ {{price_format(total_price)}}
- ฿ {{price_format(discount.price)}}
ราคาสินค้าทั้งหมด
{{total_quantity}} ชิ้น
฿ {{price_format(after_product_price)}}
ราคาไม่รวมค่าจัดส่ง
ดูสินค้าในตะกร้า
เริ่มการสั่งซื้อ
➜
เลือกซื้อสินค้าเพิ่ม
พูดคุย-สอบถาม
อีเมล fitrox.electronics@gmail.com
โทร 0897245633
channel/UCnHfpCdqN1RkzAfEH_lRLvw?
1924052434588436
Add @zpq2828r