- Bluetooth Low Energy (BLE) แตกต่างกันอย่างไร?
- ความสามารถ BLE ของโมดูล NRF24L01
- ส่วนประกอบที่จำเป็น
- เริ่มต้นด้วยโมดูล nRF24L01
- Arduino
- การเชื่อมต่อ nRF24L01 กับ Arduino สำหรับการสื่อสาร BLE
Bluetooth Low Energy (BLE) เป็นเวอร์ชันหนึ่งของบลูทู ธ และมีอยู่ในเวอร์ชันบลูทู ธ คลาสสิกที่มีขนาดเล็กและได้รับการปรับให้เหมาะสมที่สุด เป็นที่รู้จักกันในชื่อ Smart Bluetooth BLE ได้รับการออกแบบโดยคำนึงถึงการใช้พลังงานที่ต่ำที่สุดเท่าที่จะเป็นไปได้โดยเฉพาะสำหรับต้นทุนต่ำแบนด์วิดท์ต่ำพลังงานต่ำและความซับซ้อนต่ำ ESP32 มีความสามารถ BLE ในตัว แต่สำหรับไมโครคอนโทรลเลอร์อื่น ๆ เช่น Arduino สามารถใช้ nRF24L01 ได้ โมดูล RF นี้สามารถใช้เป็นโมดูล BLE เพื่อส่งข้อมูลไปยังอุปกรณ์บลูทู ธ อื่น ๆ เช่นสมาร์ทโฟนคอมพิวเตอร์เป็นต้น
ในบทช่วยสอนนี้เราจะสาธิตวิธีการส่งข้อมูลใด ๆ ผ่าน BLE โดยใช้ nRF24L01 เราจะส่งการอ่านค่าอุณหภูมิจาก DHT11 ไปยังสมาร์ทโฟนโดยใช้ Arduino และโมดูล nRF ผ่าน BLE
Bluetooth Low Energy (BLE) แตกต่างกันอย่างไร?
BLE ถูกนำมาใช้เนื่องจากคุณสมบัติการใช้พลังงานเนื่องจากสามารถทำงานได้เป็นระยะเวลานานโดยใช้เพียงเซลล์เหรียญ เมื่อเทียบกับมาตรฐานไร้สายอื่น ๆ การเติบโตอย่างรวดเร็วของ BLE นั้นเร็วกว่ามากเนื่องจากแอปพลิเคชันที่ยอดเยี่ยมในสมาร์ทโฟนแท็บเล็ตและคอมพิวเตอร์พกพา
ความสามารถ BLE ของโมดูล NRF24L01
BLE ใช้แถบความถี่ 2.4 GHz ISM เดียวกันโดยมีอัตราการส่งข้อมูลตั้งแต่ 250Kbps ถึง 2Mbps ซึ่งได้รับอนุญาตในหลายประเทศและสามารถนำไปใช้กับงานอุตสาหกรรมและการแพทย์ได้ Band เริ่มต้นที่ 2400 MHz ถึง 2483.5 MHz และแบ่งออกเป็น 40 ช่องสัญญาณ สามช่องทางเหล่านี้เรียกว่า 'การโฆษณา' และใช้โดยอุปกรณ์เพื่อส่งแพ็กเก็ตโฆษณาพร้อมข้อมูลเกี่ยวกับช่องเหล่านี้เพื่อให้อุปกรณ์ BLE อื่น ๆ สามารถเชื่อมต่อได้ เริ่มแรกช่องเหล่านี้ถูกเลือกไว้ที่ส่วนบนล่างของแถบและตรงกลางของวงดนตรีเพื่อหลีกเลี่ยงการรบกวนที่อาจรบกวนช่องสัญญาณจำนวนมาก หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ BLE ให้ทำตามบทแนะนำนี้
กวดวิชานี้จะอธิบายวิธีการใช้โมดูล NRF24L01 เป็นตัวรับส่งสัญญาณ บทช่วยสอนเกี่ยวกับ NRF24L01 เป็นโมดูล RF ได้รับการอธิบายแล้วในการเชื่อมต่อ nRF24L01 กับบทช่วยสอน Arduino วันนี้ฟังก์ชัน BLE ของโมดูลนี้จะอธิบายโดยการส่งข้อมูลเซ็นเซอร์ไปยังสมาร์ทโฟน ที่นี่โมดูล nRF24L01 นี้จะเชื่อมต่อกับไมโครคอนโทรลเลอร์ Arduino และข้อมูลอุณหภูมิเซ็นเซอร์ DHT11 จะถูกส่งไปยังแอปพลิเคชัน Android ของ Nordic BLE อย่างเป็นทางการ
ส่วนประกอบที่จำเป็น
ฮาร์ดแวร์:
- Arduino UNO
- nRF24L01 โมดูล BLE
- DHT11 เซ็นเซอร์อุณหภูมิและความชื้น
- จัมเปอร์
ซอฟต์แวร์:
- Arduino IDE
- แอปพลิเคชัน Nordic BLE Android (nRF Temp 2.0 สำหรับ BLE หรือ nRF Connect สำหรับมือถือ)
เริ่มต้นด้วยโมดูล nRF24L01
โมดูล nRF24L01 เป็นโมดูลตัวรับส่งสัญญาณซึ่งหมายความว่าแต่ละโมดูลสามารถส่งและรับข้อมูลได้ แต่เนื่องจากเป็นแบบ half-duplex จึงสามารถส่งหรือรับข้อมูลได้พร้อมกัน โมดูลนี้มี IC nRF24L01 ทั่วไปจากสารกึ่งตัวนำนอร์ดิกซึ่งมีหน้าที่ในการส่งและรับข้อมูล IC สื่อสารโดยใช้โปรโตคอล SPI และด้วยเหตุนี้จึงสามารถเชื่อมต่อกับไมโครคอนโทรลเลอร์ใด ๆ ได้อย่างง่ายดาย Arduino ง่ายขึ้นมากเนื่องจากมีไลบรารีพร้อมใช้งาน เราใช้โมดูล nRF24L01 กับ Arduino เพื่อสร้างห้องสนทนาและควบคุมเซอร์โวมอเตอร์แบบไร้สายแล้ว
พินเอาต์ของโมดูล nRF24L01 มาตรฐานแสดงไว้ด้านล่าง:
โมดูลมีแรงดันไฟฟ้าตั้งแต่ 1.9V ถึง 3.6V (โดยทั่วไปคือ 3.3V) และใช้กระแสไฟฟ้าน้อยกว่าเพียง 12mA ในระหว่างการทำงานปกติซึ่งทำให้แบตเตอรี่มีประสิทธิภาพและสามารถทำงานบนเซลล์เหรียญ แม้ว่าแรงดันไฟฟ้าที่ใช้งานคือ 3.3V หมุดส่วนใหญ่จะทนต่อ 5V ได้และด้วยเหตุนี้จึงสามารถเชื่อมต่อโดยตรงกับไมโครคอนโทรลเลอร์ 5V เช่น Arduino ข้อดีอีกอย่างของการใช้โมดูลเหล่านี้คือแต่ละโมดูลมี 6 Pipelines ความหมายแต่ละโมดูลสามารถสื่อสารกับโมดูลอื่น ๆ อีก 6 โมดูลเพื่อส่งหรือรับข้อมูล สิ่งนี้ทำให้โมดูลเหมาะสำหรับการสร้างเครือข่ายแบบดาวหรือแบบตาข่ายในแอปพลิเคชัน IoT นอกจากนี้ยังมีช่วงที่อยู่ที่กว้างถึง 125 ID ที่ไม่ซ้ำกันดังนั้นในพื้นที่ปิดเราสามารถใช้ 125 โมดูลเหล่านี้ได้โดยไม่รบกวนซึ่งกันและกัน
Arduino
การเชื่อมต่อ nRF24L01 กับ Arduino สำหรับการสื่อสาร BLE
nRF24L01 ทำงานบน SPI ดังนั้นการเชื่อมต่อจะใช้ SPI Protocol รหัสที่สมบูรณ์และวิดีโอจะแนบในตอนท้ายของการกวดวิชานี้ นอกจากนี้ยังมีคำอธิบายเกี่ยวกับแอพ Android ในวิดีโอ นี่โมดูล nRF24L01 ถูกนำมาใช้ในการสื่อสารกับ มาร์ทโฟนของนอร์ดิกประการแรกรวมไลบรารีที่จำเป็น ไลบรารีประกอบด้วย RF24 เพื่อเข้าถึงคำสั่ง nRF24L01 ไลบรารี DHT11 สำหรับการเข้าถึงคำสั่ง DHT11 และไลบรารี BTLE เพื่อใช้ฟังก์ชัน BLE
# รวม
กำหนดและเริ่มต้นหมุดและฟังก์ชั่นสำหรับ DHT11 และโมดูล ประเภท DHT เริ่มต้นเป็น DHT11 เนื่องจากเราใช้ DHT11 DHT เชื่อมต่อกับ GPIO Pin 4 และหมุด CE และ CSN ของโมดูล nRF เชื่อมต่อกับ Pin 9 และ 10 ตามลำดับ
# กำหนด DHTPIN #define DHTTYPE DHT11 DHT22 DHT dht (DHTPIN, DHTTYPE); วิทยุ RF24 (9, 10); BTLE btle (& วิทยุ);
เริ่มพอร์ตอนุกรมที่ 9600คุณสามารถเลือกพอร์ตใดก็ได้ จากนั้นเริ่มเซ็นเซอร์ DHT และเริ่ม BTLEด้วย Bluetooth Local Name ที่มีความยาวสูงสุด 8 อักขระ
Serial.begin (9600); dht.begin (); btle.begin ("อุณหภูมิซีดี");
อ่านอุณหภูมิที่ห่วงและบันทึกลงในตัวแปรลอย ชั่วคราว เพิ่มบรรทัดการดีบักเพื่อแสดงข้อความแสดงข้อผิดพลาดหาก DHT สูญเสียพลังงานหรือมีอะไรไม่คาดคิดเกิดขึ้น
อุณหภูมิลอย = dht.readTemperature (); // อ่านข้อมูลอุณหภูมิ if (isnan (h) - isnan (t)) { Serial.println (F ("Failed to read from DHT sensor!")); กลับ; }
ประหยัดค่าบัฟเฟอร์และแยกไปยังโมดูล BLE ส่งค่าอุณหภูมิไปยังโมดูล BLE โมดูล BLE จะโฆษณาข้อมูลอุณหภูมิ แอพ android สามารถค้นหาโมดูล BLE และรับข้อมูลเซ็นเซอร์
nrf_service_data buf; buf.service_uuid = NRF_TEMPERATURE_SERVICE_UUID; buf.value = BTLE:: to_nRF_Float (อุณหภูมิ); ถ้า (! btle.advertise (0x16, & buf, sizeof (buf))) { Serial.println ("BTLE ล้มเหลว.. !"); }
เมื่อเสร็จแล้วให้กระโดดไปที่ช่องถัดไป
btle.hopChannel ();
เนื่องจากเอกสารของเซ็นเซอร์ DHT แนะนำให้หน่วงเวลาอย่างน้อย 2 วินาทีหลังจากการอ่านหนึ่งครั้งดังนั้นให้เพิ่มการหน่วงเวลา 2 วินาที
ล่าช้า (2000);
หลังจากอัปโหลดและจับคู่สมาร์ทโฟนกับโมดูล nRF คุณจะเริ่มได้รับค่าใน nRF Temp 2.0 สำหรับแอปพลิเคชัน Android BLE ดังที่แสดงด้านล่าง ขั้นตอนที่สมบูรณ์ของการจับคู่และการรับข้อมูลบนแอพ Android มีอธิบายไว้ในวิดีโอ:
นี่เป็นการจบบทช่วยสอนที่สมบูรณ์เกี่ยวกับการโฆษณาข้อมูลเซ็นเซอร์ไปยัง Nordic Android App โดยใช้ BLE nRF24L01 หากคุณพบปัญหาใด ๆ ให้แสดงความคิดเห็นด้านล่างหรือเขียนลงในฟอรัมของเรา หากต้องการสำรวจเพิ่มเติมเกี่ยวกับ nRF24L02 คุณสามารถลองสร้างห้องสนทนาส่วนตัวโดยใช้ Arduino, nRF24L01 และการประมวลผล