สารบัญ:
วีดีโอ: วิธีใช้ Bluetooth(BLE) ด้วย ESP32: 3 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
#####บันทึก#####
วิธีการที่แสดงใน Instructables นี้เก่าและล้าสมัย ดูวิดีโอนี้สำหรับวิธีการล่าสุด
###############
ในขณะที่ ESP32 มีรายการคุณสมบัติมากมาย (วิกิพีเดีย) คุณลักษณะที่ใหญ่ที่สุดที่ดึงดูดสายตาคือบลูทูธ v4.2 ในตัวพร้อมการรองรับ BLE แต่ข้อความดังกล่าวอาจทำให้เข้าใจผิดได้ แม้ว่าจะมีฮาร์ดแวร์อยู่ แต่ไม่มีซอฟต์แวร์รองรับการใช้บลูทูธ (อยู่ระหว่างการพัฒนา)
สำหรับผู้ที่ไม่รู้ว่า BLE คืออะไร ย่อมาจาก Bluetooth Low Energy เป็นโปรโตคอลบลูทูธที่ช่วยเพิ่มการใช้พลังงานที่ต่ำกว่ามากเมื่อเทียบกับบลูทูธ "คลาสสิก"
ในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นว่าคุณสามารถใช้ทรัพยากรที่จำกัด (ซอฟต์แวร์) เพื่อส่งข้อมูลจากบอร์ด ESP32 ไปยังโทรศัพท์ของคุณผ่าน BLE ได้อย่างไร
ข้อสงวนสิทธิ์บางประการ …
บางสิ่งที่ควรกล่าวถึงก่อนที่คุณจะดำเนินการต่อไปกับคู่มือนี้..
หมายเหตุ 1: เมื่อฉันบอกว่ายังไม่รองรับ Bluetooth ฉันหมายถึงในสภาพแวดล้อมการพัฒนา Arduino
การสนับสนุนเป็นอย่างดีอาจมีอยู่ใน SDK อย่างเป็นทางการเช่นเดียวกับ IDF แต่ฉันไม่พบคำแนะนำที่เหมาะสมสำหรับสิ่งเหล่านั้น
หมายเหตุ 2: วิธีที่ฉันใช้นั้นเป็นวิธีแก้ปัญหาชั่วคราวและไม่ใช่วิธีที่ BLE ควรจะทำงานได้ดี ห้องสมุดรองรับการสร้างบริการใน BLE ไม่ได้อยู่ที่นี่สำหรับสภาพแวดล้อมของ Arduino
สิ่งเดียวที่คุณสามารถทำได้อย่างน่าเชื่อถือคือการสร้าง Beacon ที่โฆษณาชื่อ ความคิดเห็น YouTube ใส่ไว้อย่างหรูหรามาก: "ฮ่า ๆ แฮ็คที่โหดร้าย แต่คุณจะทำอย่างไร"
หมายเหตุ 3: ข้อมูลประเภทเดียวที่คุณสามารถส่งได้คือสตริง
คุณอาจตัดสินใจเขียนโค้ดและถอดรหัสข้อมูลประเภทอื่นๆ เข้าและออกจากสตริงได้เป็นอย่างดี แต่นั่นก็อยู่นอกเหนือขอบเขตของคู่มือนี้
ขั้นตอนที่ 1: ตัวอย่างบิลด์
หากคุณมาที่นี่เพื่ออธิบาย คุณสามารถข้ามขั้นตอนนี้ได้ แต่การทำตามขั้นตอนนี้อาจให้ความกระจ่างขึ้นเล็กน้อย..
อันดับแรก ฉันจะสร้างโครงการตัวอย่าง จากนั้นฉันจะพยายามอธิบายว่ามันทำงานอย่างไรและคุณจะจำลองการสื่อสาร Bluetooth ได้อย่างไร เราจะสร้างเซ็นเซอร์อุณหภูมิแบบพกพาที่ส่งฟีดข้อมูลสดไปยังสมาร์ทโฟนของคุณ บิลด์สามารถทำงานได้หลายวันบน li-po เดียว และแสดงให้เห็นประโยชน์ของ BLE ได้อย่างง่ายดาย
คุณสามารถใช้โมดูลนี้เป็นรถไฟเหาะเพื่อป้องกันเครื่องดื่มของคุณและรับการแจ้งเตือนทันทีที่เครื่องดื่มของคุณมีอุณหภูมิที่เหมาะสม เพราะมันจะเป็นการเลียนแบบถ้าคุณต้องจิบชาที่มีดีกรีสูงกว่า 40
ฮาร์ดแวร์เดียวที่คุณต้องการคือบอร์ด ESP32 และเซ็นเซอร์อุณหภูมิดิจิตอล บอร์ดของฉันรองรับแบตเตอรี่ภายนอก ดังนั้นฉันจึงใช้ 3.7v li-po ที่ฉันกู้คืนจากอุปกรณ์เก่าบางตัวเพื่อทำให้โปรเจ็กต์นี้พกพาสะดวก
ฮาร์ดแวร์
การเชื่อมต่อสำหรับเซ็นเซอร์อุณหภูมิทำได้ง่าย สายสีแดงเชื่อมต่อกับ 3.3v สีดำเชื่อมต่อกับกราวด์ (gnd) สีเหลืองเชื่อมต่อกับ GPIO 2 ซึ่งบนกระดานของฉันถูกทำเครื่องหมายเป็น D9 เชื่อมต่อตัวต้านทาน 4.7k ohm ระหว่างสายสีแดงและสีเหลือง ฉันไม่ได้ใช้ตัวต้านทาน แต่ฉันใช้เทอร์มินัลแบบเสียบได้ 3 พินที่มาพร้อมกับเซ็นเซอร์ของฉัน มีตัวต้านทานแบบดึงขึ้นในตัว
li-po ควรเชื่อมต่อโดยใช้ขั้วต่อ JST แต่ฉันไม่สามารถซื้อได้ดังนั้นฉันจึงเสียบสายจัมเปอร์ (หญิงเป็นหญิง) ลงในขั้วต่อและบัดกรีอีกคู่หนึ่งเข้ากับขั้วแบตเตอรี่ ทำให้มีการเชื่อมต่อที่เชื่อถือได้และสวิตช์เปิดปิดชั่วคราว
ตอนนี้ในฐานะโครงของโปรเจ็กต์ ฉันใช้ดิสก์ Styrofoam ที่ถูกตัดออกจากชีตที่ใหญ่ขึ้น สิ่งนี้ทำให้เป็นฉนวนที่ดี ดิสก์ที่เล็กกว่ามากอีกอันติดอยู่ด้านบน แต่อยู่ด้านข้างเล็กน้อย ใช้สำหรับพันสายไฟที่มีความยาวพิเศษเพื่อไม่ให้ห้อยต่องแต่ง หลังจากใช้กาวและรูเล็กๆ สำหรับโพรบเซ็นเซอร์แล้ว คุณก็พร้อมที่จะใช้ซอฟต์แวร์ต่อไป
ซอฟต์แวร์
หากคุณยังไม่ได้ติดตั้ง Arduino IDE ให้ไปที่ลิงค์นี้เพื่อดาวน์โหลด ซอฟต์แวร์ Arduino เป็นค่าเริ่มต้นไม่ได้มาพร้อมกับคำจำกัดความของบอร์ดสำหรับบอร์ด ESP32 ต่างๆ เพื่อให้พวกเขาไปที่ลิงค์นี้และดาวน์โหลดไฟล์ในซิป คุณต้องแตกไฟล์ไปยังตำแหน่งนี้:
C:/ผู้ใช้//เอกสาร/Arduino/ฮาร์ดแวร์/espserrif/ESP32
ชื่อผู้ใช้ของคุณอยู่ที่ไหนในพีซีของคุณ ตรวจสอบให้แน่ใจว่าไฟล์ต่างๆ อยู่ภายใต้โฟลเดอร์ ESP32 และไม่ได้อยู่ภายใต้โฟลเดอร์อื่น
ตอนนี้ หากคุณเริ่มซอฟต์แวร์ Arduino และไปที่เครื่องมือ -> บอร์ด คุณจะเห็นบอร์ด ESP32 ต่างๆ เมื่อคุณเลื่อนลง
เซ็นเซอร์อุณหภูมิแบบดิจิตอลส่วนใหญ่ใช้โปรโตคอล OneWire เพื่อสื่อสารกับไมโครคอนโทรลเลอร์ เราจึงต้องรับไลบรารี ไปที่สเก็ตช์ -> รวมไลบรารี -> จัดการไลบรารีและค้นหา onewire และติดตั้งไลบรารีที่มีผู้เขียนมากเกินไป คุณไม่จำเป็นต้องมีฮับ onewire ละเว้นมัน
ตอนนี้คุณสามารถดาวน์โหลดและเปิดโค้ดที่แนบมากับขั้นตอนนี้ (temperature-example.ino)
หากคุณใช้เซ็นเซอร์ที่แตกต่างจากฉัน คุณจะต้องเปลี่ยนรหัสตามนั้น แทนที่รหัสภายใต้ getTemp() เพียงคืนอุณหภูมิสุดท้ายในรูปของ
กลับ;
ลอยตัวที่มีอุณหภูมิอยู่ที่ไหน
เสียบบอร์ด เลือกบอร์ดและพอร์ตที่ถูกต้องจากใต้เครื่องมือ แล้วกดอัพโหลด
หากรหัสปฏิเสธที่จะอัปโหลด ให้ถอดเซ็นเซอร์ออกและเชื่อมต่อ GPIO 0 กับกราวด์ คืนค่าการเชื่อมต่อหลังจากการอัปโหลด
ตอนนี้ ESP ของคุณควรกรีดร้องอุณหภูมิของกาแฟของคุณไปทั่วโลก แต่คุณต้องการใครสักคนที่สามารถเข้าใจได้
แอพ Android
ขออภัยผู้ใช้ iPhone (…ไม่จริง)
ดาวน์โหลด apk จากที่นี่และติดตั้ง เมื่อคุณเริ่มแอป คุณจะได้รับการต้อนรับด้วยอินเทอร์เฟซที่เรียบง่าย
หากคุณได้รับข้อความแสดงข้อผิดพลาดว่า 'ไม่รองรับการโฆษณา' ให้คลิกตกลงและไม่ต้องสนใจ แต่หากคุณได้รับข้อความว่า 'ไม่รองรับ BLE' แสดงว่าโทรศัพท์ของคุณไม่มี Bluetooth 4.0 หรือสูงกว่าและจะไม่สามารถทำงานได้ แอป
ตรวจสอบให้แน่ใจว่า Bluetooth บนโทรศัพท์ของคุณเปิดอยู่ และคลิก 'เริ่มการสแกน' ตราบใดที่ esp อยู่ในระยะทำการและเปิดเครื่องอยู่ คุณควรจะได้รับค่าอุณหภูมิบางส่วน
ข้อผิดพลาดที่เป็นไปได้:
- -1000:: หมายความว่าอุปกรณ์ของคุณไม่พบ ESP ตรวจสอบให้แน่ใจว่า Bluetooth เปิดอยู่ และลองรีสตาร์ท ESP
- SNA:: หมายความว่าโทรศัพท์ของคุณกำลังรับข้อมูลจาก ESP แต่ตัว ESP เองไม่พบเซ็นเซอร์อุณหภูมิบน GPIO 2 ตรวจสอบให้แน่ใจว่าการเชื่อมต่อนั้นปลอดภัย ดูว่าคุณกำลังใช้ตัวต้านทานค่าที่ถูกต้องหรือไม่ ตรวจสอบอีกครั้งกับแผนผังบอร์ดของคุณว่าคุณเชื่อมต่อกับ GPIO 2 และไม่ใช่พินที่ทำเครื่องหมายเป็น D2
ขั้นตอนที่ 2: คำอธิบาย
วิธีการทำงานของ BLE ตามปกติคืออุปกรณ์โฆษณาชื่อเหมือนสัญญาณ ทุกคนสามารถเห็นชื่อนี้และใช้เพื่อระบุอุปกรณ์ จากนั้นอุปกรณ์ก็สามารถสร้างบริการต่างๆ ที่ผู้อื่นเห็นได้เมื่อเชื่อมต่อ บริการเหล่านี้สามารถมีสตรีมข้อมูลที่แตกต่างกันได้
สำหรับเช่น อุปกรณ์ที่ชื่อว่า 'Weather Station' สามารถให้บริการภายใต้เช่น 'Temperature', 'Humidity' และ 'Wind' เมื่ออุปกรณ์ BLE อื่น เช่น สมาร์ทโฟนของคุณสแกนหาอุปกรณ์ จะเห็น Weather Station และเมื่อเชื่อมต่อกับอุปกรณ์ ก็จะสามารถรับสตรีมข้อมูลภายใต้บริการต่างๆ ได้
ไลบรารี่ (สำหรับ ESP32) ที่เรามีอยู่ในปัจจุบันทำให้เราสร้างบีคอนที่ผู้อื่นสามารถค้นพบได้ แต่นั่นคือขอบเขตของมัน เราไม่สามารถสร้างบริการและอุปกรณ์ใดๆ เชื่อมต่อกับมันได้
ดังนั้นวิธีที่ฉันส่งข้อมูลโดยไม่สร้างบริการก็คือการใช้เทคนิคที่คล้ายกับโปรโตคอล WiFi ที่เรียกว่า Beacon Stuffing ซึ่งหมายความว่าฉันกำลังรวมข้อมูลที่จะส่งภายในชื่อบีคอนด้วย ซึ่งช่วยให้ฉันโฆษณาข้อมูลได้โดยไม่ต้องให้อุปกรณ์อื่นเชื่อมต่อกับบีคอน
ble.begin(beaconMsg); //beaconMsg เป็นชื่อที่โฆษณา
เรากำลังใช้ไลบรารี SimpleBLE เพื่อสร้างบีคอนที่มีชื่ออยู่ในรูปแบบ ESP โดยที่ 'ESP' ยังคงไม่เปลี่ยนแปลงที่จุดเริ่มต้นของชื่อเสมอ และจะถูกแทนที่ด้วยข้อมูลล่าสุดที่ส่งคืนโดยฟังก์ชัน getValue() ทุกๆ 100 มิลลิวินาที
float getValue(){ส่งคืน sensorValue;}
แอป Android จะค้นหาชื่ออุปกรณ์ BLE ที่ขึ้นต้นด้วย "ESP" เมื่อพบแล้ว จะแยกชื่อและแสดงเฉพาะข้อมูลจากส่วนท้ายเท่านั้น
การสื่อสารมีทางเดียวเท่านั้น แอพไม่ส่งอะไรกลับ
ขั้นตอนที่ 3: บทสรุป
ในตอนท้ายของวัน วิธีนี้ไม่สามารถทดแทนไลบรารี BLE ที่ใช้งานได้อย่างถูกต้อง แต่อาจเพียงพอที่จะทำให้โครงการบางโครงการสิ้นสุดลง จนกว่า Arduino จะรองรับ BLE อย่างสมบูรณ์ หวังว่าคำแนะนำนี้จะช่วยคุณได้บ้าง
ขอบคุณมากที่ DFRobot.com ที่ส่งผลิตภัณฑ์เหล่านี้มาให้ฉัน:
- บอร์ด ESP32 FireBeetle
- โล่ขยาย FireBeetle
- DS18B20 เซ็นเซอร์อุณหภูมิ
ฉันเพิ่งพบห้องสมุดนี้ ReadME อ้างว่าคุณสามารถเชื่อมต่อกับอุปกรณ์ BLE อื่นเพื่อรับข้อมูลได้ (ไม่สามารถโฆษณาตัวเองได้) ฉันยังไม่ได้ลอง แต่คุณสามารถตรวจสอบได้หากคุณสนใจ
สามารถตรวจสอบวิดีโอโครงการได้ที่: YouTube
แนะนำ:
วิธีการตั้งค่า OSMC ด้วย Hyperion บน Raspberry Pi ด้วย WS2812b Led Strip: 8 ขั้นตอน
วิธีการตั้งค่า OSMC ด้วย Hyperion บน Raspberry Pi ด้วย WS2812b Led Strip: บางครั้งฉันพูดภาษาอังกฤษได้ดีมาก บางครั้งก็ไม่มี… สิ่งแรกเลย นี่เป็นการสอนครั้งแรกของฉันและภาษาอังกฤษไม่ใช่ภาษาแม่ของฉัน ดังนั้นโปรดอย่ากดดันฉันมากเกินไป นี่จะไม่เกี่ยวกับวิธีการสร้างเฟรมที่ง่าย มันเกี่ยวกับการติดตั้ง
วิธีใช้ Max7219 8x8 Dot Matrix ด้วย "skiiiD": 9 ขั้นตอน
วิธีใช้ Max7219 8x8 Dot Matrix กับ "skiiiD": นี่คือวิดีโอคำแนะนำของ Max7219 8x8 Dot Matrix ผ่าน "skiiiD"ก่อนเริ่ม ด้านล่างนี้เป็นบทช่วยสอนพื้นฐานสำหรับวิธีใช้ skiiiDhttps://www.instructables.com/id /เริ่มต้น-เริ่มต้น-W
ESP32 Bluetooth Tutorial - วิธีใช้ Bluetooth ในตัวของ ESP32: 5 ขั้นตอน
ESP32 Bluetooth Tutorial | วิธีใช้ Bluetooth ในตัวของ ESP32: สวัสดีทุกคน เนื่องจากบอร์ด ESP32 มาพร้อมกับ WiFi & บลูทูธทั้งคู่ แต่สำหรับโปรเจ็กต์ส่วนใหญ่ เรามักจะใช้แค่ Wifi เราไม่ได้ใช้บลูทูธ ดังนั้นในคำแนะนำนี้ ฉันจะแสดงให้เห็นว่าการใช้บลูทูธของ ESP32 & สำหรับโครงการพื้นฐานของคุณ
วิธีสร้าง CubeSat ด้วย Arduino ด้วย Arducam: 9 ขั้นตอน
วิธีสร้าง CubeSat ด้วย Arduino ด้วย Arducam: ในรูปแรก เรามี Arduino และเรียกว่า "Arduino Uno"ในรูปที่สอง เรามี Arducam และเรียกว่า "Arducam OV2640 มินิ 2MP"พร้อมกับภาพที่สอง มีวัสดุที่คุณต้อง
วิธีใช้ ESP32 เพื่อควบคุม LED ด้วย Blynk ผ่าน WiFi: 7 ขั้นตอน (พร้อมรูปภาพ)
วิธีใช้ ESP32 เพื่อควบคุม LED ด้วย Blynk ผ่าน WiFi: บทช่วยสอนนี้จะใช้บอร์ดพัฒนา ESP32 เพื่อควบคุม LED ด้วย Blynk ผ่าน WiFi Blynk เป็นแพลตฟอร์มที่มีแอป iOS และ Android เพื่อควบคุม Arduino, Raspberry Pi และไลค์บนอินเทอร์เน็ต เป็นแดชบอร์ดดิจิทัลที่คุณสามารถสร้าง