- Paano naiiba ang Bluetooth Low Energy (BLE)?
- Kakayahang BLE ng NRF24L01 Module
- Kinakailangan ang Mga Bahagi
- Simula sa nRF24L01 Module
- Arduino
- Ang pagitan ng nRF24L01 kay Arduino para sa BLE na komunikasyon
Ang Bluetooth Low Energy (BLE) ay isang bersyon ng Bluetooth at naroroon ito bilang isang maliit, mataas na na-optimize na bersyon ng klasikong Bluetooth. Kilala rin ito bilang Smart Bluetooth. Ang BLE ay idinisenyo na isinasaisip ang pinakamababang posibleng paggamit ng kuryente partikular para sa mababang gastos, mababang bandwidth, mababang lakas at mababang pagiging kumplikado. Ang ESP32 ay nakabuo ng mga kakayahan sa BLE ngunit para sa iba pang mga microcontroller tulad ng Arduino, maaaring magamit ang nRF24L01. Ang module na RF na ito ay maaari ding gamitin bilang module na BLE upang maipadala ang data sa iba pang aparatong Bluetooth tulad ng mga smartphone, computer atbp.
Dito sa tutorial na ito ipapakita namin kung paano magpadala ng anumang data sa paglipas ng BLE gamit ang nRF24L01. Magpadala kami ng mga pagbabasa ng temperatura mula sa DHT11 hanggang sa smartphone gamit ang Arduino at nRF module sa paglipas ng BLE.
Paano naiiba ang Bluetooth Low Energy (BLE)?
Ang BLE ay pinagtibay dahil sa mga tampok sa pagkonsumo ng kuryente dahil nakapagpatakbo ito para sa isang pinalawig na tagal ng panahon gamit lamang ang isang coin cell. Kung ihahambing sa iba pang mga pamantayang wireless, ang mabilis na paglago ng BLE ay napabilis nang mabilis dahil sa mga kahanga-hangang aplikasyon nito sa mga smartphone, tablet, at mobile computing.
Kakayahang BLE ng NRF24L01 Module
Gumagamit ang BLE ng parehong 2.4 GHz ISM band na may baud rate mula 250Kbps hanggang 2Mbps na pinapayagan sa maraming mga bansa at maaaring mailapat sa mga pang-industriya at medikal na aplikasyon. Ang Band ay nagsisimula sa 2400 MHz hanggang 2483.5 MHz at ito ay nahahati sa 40 mga channel. Tatlo sa mga channel na ito ay kilala bilang 'Advertising' at ginagamit ng mga aparato upang magpadala ng mga packet sa advertising na may impormasyon tungkol sa mga ito upang makakonekta ang iba pang mga BLE device. Ang mga channel na ito ay paunang napili sa ibabang itaas ng banda at gitna ng banda upang maiwasan ang pagkagambala na maaaring makagambala sa isang bilang ng mga channel. Upang matuto nang higit pa tungkol sa BLE, sundin ang tutorial na ito.
Ipapaliwanag ng tutorial na ito kung paano gamitin ang module ng NRF24L01 bilang BLE transceiver. Ang tutorial sa NRF24L01 bilang RF module ay naipaliwanag na sa interfacing nRF24L01 sa Arduino tutorial. Ngayon ang pagpapaandar ng BLE ng modyul na ito ay ipaliwanag sa pamamagitan ng pagpapadala ng data ng sensor sa isang smart phone. Dito ang module na nRF24L01 ay makikipag-interfaced sa Arduino Microcontroller at ang data ng temperatura ng sensor ng DHT11 ay ipapadala sa opisyal na Nordic BLE android application.
Kinakailangan ang Mga Bahagi
Hardware:
- Arduino UNO
- nRF24L01 BLE Module
- DHT11 Temperatura at Humidity Sensor
- Mga jumper
Software:
- Arduino IDE
- Nordic BLE Android Application (nRF Temp 2.0 para sa BLE o nRF Connect for Mobile)
Simula sa nRF24L01 Module
Ang mga modyul na nRF24L01 ay mga module ng transceiver, nangangahulugang ang bawat module ay maaaring magpadala at tumanggap ng data ngunit dahil sila ay kalahating duplex maaari silang magpadala o tumanggap ng data nang paisa-isa. Ang modyul ay mayroong pangkaraniwang nRF24L01 IC mula sa Nordic semi-conductors na responsable para sa paghahatid at pagtanggap ng data. Ang IC ay nakikipag-usap gamit ang SPI protocol at samakatuwid ay madaling ma-interfaced sa anumang mga microcontroller. Napakadali nito sa Arduino dahil ang mga aklatan ay madaling magagamit. Gumamit na kami ng nRF24L01 module sa Arduino upang lumikha ng isang chat room at upang makontrol ang mga servo motor nang wireless.
Ang mga pinout ng isang karaniwang nRF24L01 module ay ipinapakita sa ibaba:
Ang module ay nasa operating boltahe mula sa 1.9V hanggang 3.6V (karaniwang 3.3V) at gumugugol ng mas kaunting kasalukuyang 12mA lamang sa normal na operasyon na ginagawang mahusay ang baterya at kaya't maaari pang tumakbo sa mga coin cell. Kahit na ang operating boltahe ay 3.3V ang karamihan sa mga pin ay 5V mapagparaya at samakatuwid ay maaaring direktang interfaced sa 5V microcontrollers tulad ng Arduino. Ang isa pang kalamangan sa paggamit ng mga modyul na ito ay, ang bawat module ay mayroong 6 Pipelines. Ibig sabihin, ang bawat modyul ay maaaring makipag-usap sa 6 iba pang mga module upang makapagpadala o tumanggap ng data. Ginagawa nitong angkop ang module para sa paglikha ng mga network ng star o mesh sa mga aplikasyon ng IoT. Gayundin mayroon silang malawak na saklaw ng address na 125 natatanging mga ID, samakatuwid sa isang saradong lugar maaari naming gamitin ang 125 ng mga modyul na ito nang hindi makagambala sa bawat isa.
Arduino
Ang pagitan ng nRF24L01 kay Arduino para sa BLE na komunikasyon
Gumagana ang nRF24L01 sa SPI, kaya ang interfacing ay gagamit ng SPI Protocol. Ang kumpletong code at video ay ikakabit sa pagtatapos ng tutorial na ito. Ang gabay sa Android app ay ipinaliwanag din sa video. Dito ginagamit ang module na nRF24L01 upang makipag-usap sa Smartphone App ng Nordic.Una isama ang mga kinakailangang aklatan. Kasama sa library ang RF24 upang ma-access ang mga utos ng nRF24L01, library ng DHT11 para sa pag-access sa mga utos ng DHT11 at library ng BTLE upang magamit ang mga pagpapaandar ng BLE.
# isama
Tukuyin at simulan ang mga pin at pag-andar para sa DHT11 at BLE module. Ang uri ng DHT ay pinasimulan bilang DHT11 dahil ginagamit namin ang DHT11. Ang DHT ay konektado sa GPIO Pin 4 at nRF module na CE at CSN pin ay konektado sa Pin 9 at 10 ayon sa pagkakabanggit.
#define DHTPIN #define DHTTYPE DHT11 DHT22 DHT dht (DHTPIN, DHTTYPE); Radyo RF24 (9, 10); BTLE btle (& radio);
Simulan ang serial port sa 9600, maaari kang pumili ng anumang port. Pagkatapos simulan ang sensor ng DHT at simulan din ang BTLE sa Pangalan ng Lokal na Bluetooth na may haba na 8 character.
Serial.begin (9600); dht.begin (); btle.begin ("CD Temp");
Basahin ang temperatura sa loop at i-save ito sa isang float variable temp . Magdagdag ng isang linya ng pag-debug para sa pagpapakita ng isang mensahe ng error kung mawalan ng lakas ang DHT o anumang hindi inaasahang mangyari.
float temp = dht.readTemperature (); // basahin ang data ng temperatura kung (isnan (h) - isnan (t)) { Serial.println (F ("Nabigong basahin mula sa sensor ng DHT!")); bumalik; }
I-save ang halaga sa Buffer at i-parse ito sa module na BLE. Ipadala rin ang halaga ng Temperatura sa BLE Module. I-a-advertise ng module na BLE ang data ng Temperatura. Maaaring maghanap ang android app sa module na BLE at matanggap ang data ng sensor.
nrf_service_data buf; buf.service_uuid = NRF_TEMPERATURE_SERVICE_UUID; buf.value = BTLE:: to_nRF_Float (temp); kung (! btle.advertise (0x16, & buf, sizeof (buf))) { Serial.println ("Nabigo ang BTLE..!"); }
Kung tapos na, umakyat ka na lang sa susunod na channel.
btle.hopChannel ();
Dahil inirerekumenda ng dokumentasyon ng sensor ng DHT na panatilihin ang isang pagkaantala ng isang minimum na 2 segundo pagkatapos ng isang pagbabasa, kaya magdagdag ng isang pagkaantala ng 2 segundo.
pagkaantala (2000);
Matapos i-upload ang at ipares ang smartphone sa nRF module, magsisimula ka nang makuha ang mga halaga sa nRF Temp 2.0 para sa BLE android application tulad ng ipinakita sa ibaba. Ang kumpletong pamamaraan ng pagpapares at pagkuha ng data sa android app ay ipinaliwanag din sa video:
Tinatapos nito ang kumpletong tutorial sa advertising ng data ng sensor sa Nordic Android App gamit ang BLE nRF24L01. Kung nakakita ka ng anumang kahirapan pagkatapos ay puna sa ibaba o sumulat sa aming forum. Upang galugarin ang higit pa tungkol sa nRF24L02, maaari mo ring subukan na Lumikha ng isang Pribadong Chat Room gamit ang Arduino, nRF24L01 at Pagproseso.