Memulai dengan ESP32 Bluetooth Low Energy (BLE) di Arduino IDE

ESP32 hadir tidak hanya dengan Wi-Fi tetapi juga dengan Bluetooth dan Bluetooth Low Energy (BLE). Postingan ini adalah pengantar singkat ke BLE dengan ESP32. Pertama, kita akan mengeksplorasi apa itu BLE dan kegunaannya, dan kemudian kita akan melihat beberapa contoh dengan ESP32 menggunakan Arduino IDE. Untuk pengenalan sederhana, kami akan membuat server ESP32 BLE, dan pemindai ESP32 BLE untuk menemukan server itu.

Memperkenalkan Bluetooth Hemat Energi

Untuk pengenalan singkat tentang BLE, Anda dapat menonton video di bawah ini, atau Anda dapat menggulir ke bawah untuk penjelasan tertulis.

Apa itu Bluetooth Hemat Energi?

Bluetooth Low Energy, singkatnya BLE, adalah varian Bluetooth yang hemat daya. Aplikasi utama BLE adalah transmisi jarak pendek dari sejumlah data kecil (bandwidth rendah). Tidak seperti Bluetooth yang selalu aktif, BLE tetap dalam mode tidur terus-menerus kecuali saat koneksi dimulai.

Ini membuatnya mengkonsumsi daya yang sangat rendah. BLE mengkonsumsi daya sekitar 100x lebih sedikit daripada Bluetooth (tergantung pada kasus penggunaan).

Selain itu, BLE tidak hanya mendukung komunikasi point-to-point, tetapi juga mode broadcast, dan jaringan mesh.

Lihat tabel di bawah ini yang membandingkan BLE dan Bluetooth Classic lebih detail.

Karena sifatnya, BLE cocok untuk aplikasi yang perlu menukar sejumlah kecil data yang berjalan secara berkala di sel koin. Misalnya, BLE sangat berguna dalam industri perawatan kesehatan, kebugaran, pelacakan, suar, keamanan, dan otomatisasi rumah.

BLE Server and Client 

Dengan Bluetooth Low Energy, ada dua jenis perangkat : server dan klien. ESP32 dapat bertindak baik sebagai klien atau sebagai server.

Server mengiklankan keberadaannya, sehingga dapat ditemukan oleh perangkat lain, dan berisi data yang dapat dibaca klien. Klien memindai perangkat terdekat, dan ketika menemukan server yang dicari, klien membuat koneksi dan mendengarkan data yang masuk. Ini disebut komunikasi point-to-point.

Seperti disebutkan sebelumnya, BLE juga mendukung mode siaran dan jaringan mesh :

    Mode siaran : server mentransmisikan data ke banyak klien yang terhubung;

    Jaringan mesh : semua perangkat terhubung, ini banyak ke banyak koneksi.

Meskipun penyiapan jaringan broadcast dan mesh dimungkinkan untuk diterapkan, mereka dikembangkan baru-baru ini, jadi tidak banyak contoh yang diterapkan untuk ESP32 saat ini.

GATT

GATT adalah singkatan dari Generic Attributes dan mendefinisikan struktur data hierarkis yang diekspos ke perangkat BLE yang terhubung. Ini berarti bahwa GATT mendefinisikan cara dua perangkat BLE mengirim dan menerima pesan standar. Memahami hierarki ini penting, karena akan memudahkan untuk memahami cara menggunakan BLE dan menulis aplikasi Anda.

Layanan BLE

Tingkat teratas hierarki adalah profil, yang terdiri dari satu atau lebih layanan. Biasanya, perangkat BLE berisi lebih dari satu layanan.

Setiap layanan mengandung setidaknya satu karakteristik, atau dapat juga mengacu pada layanan lainnya. Layanan hanyalah kumpulan informasi, seperti pembacaan sensor, misalnya.

Ada layanan yang telah ditentukan sebelumnya untuk beberapa jenis data yang ditentukan oleh SIG (Kelompok Minat Khusus Bluetooth) seperti : Tingkat Baterai, Tekanan Darah, Detak Jantung, Skala Berat, dll. Anda dapat memeriksa di sini layanan lainnya yang ditentukan.

Karakteristik BLE

Karakteristik selalu dimiliki oleh sebuah layanan, dan di situlah data aktual terkandung dalam hierarki (nilai). Karakteristik selalu memiliki dua atribut : deklarasi karakteristik (yang menyediakan metadata tentang data) dan nilai karakteristik.

Selain itu, nilai karakteristik dapat diikuti oleh deskriptor, yang selanjutnya memperluas metadata yang terkandung dalam deklarasi karakteristik.

Properti menggambarkan bagaimana nilai karakteristik dapat berinteraksi. Pada dasarnya berisi operasi dan prosedur yang dapat digunakan dengan karakteristik:

    • Siaran

    • Membaca

    • Tulis tanpa tanggapan

    • Menulis

    • Memberitahukan

    • Menunjukkan

    • Penulisan Tertanda yang Diautentikasi

    • Properti yang Diperluas

UUID

Setiap layanan, karakteristik, dan deskriptor memiliki UUID (Universally Unique Identifier). UUID adalah nomor 128-bit (16 byte) yang unik. Sebagai contoh:

Ada UUID yang dipersingkat untuk semua jenis, layanan, dan profil yang ditentukan dalam SIG (Bluetooth Special Interest Group).

Tetapi jika aplikasi Anda membutuhkan UUID sendiri, Anda dapat membuatnya menggunakan situs web generator UUID ini.

Singkatnya, UUID digunakan untuk mengidentifikasi informasi secara unik. Misalnya, dapat mengidentifikasi layanan tertentu yang disediakan oleh perangkat Bluetooth.

BLE dengan ESP32

ESP32 dapat bertindak sebagai server BLE atau sebagai klien BLE. Ada beberapa contoh BLE untuk ESP32 di library ESP32 BLE untukArduino IDE. Pustaka ini terinstal secara default saat Anda menginstal ESP32 di Arduino IDE.

Catatan : Anda harus menginstal add-on ESP32 di Arduino IDE. Ikuti salah satu tutorial berikutnya untuk mempersiapkan Arduino IDE Anda untuk bekerja dengan ESP32, jika Anda belum melakukannya.

    Instruksi Windows – Papan ESP32 di Arduino IDE

    Instruksi Mac dan Linux – Papan ESP32 di Arduino IDE

Di Arduino IDE Anda, Anda dapat membuka File > Examples > ESP32 BLE Arduino dan menjelajahi contoh yang disertakan dengan perpustakaan BLE.

Catatan : untuk melihat contoh ESP32, Anda harus memilih papan ESP32 di ToolsBoard.

Untuk pengenalan singkat tentang ESP32 dengan BLE pada Arduino IDE, kami akan membuat server ESP32 BLE, dan kemudian pemindai ESP32 BLE untuk menemukan server tersebut. Kami akan menggunakan dan menjelaskan contoh yang disertakan dengan perpustakaan BLE.

Untuk mengikuti contoh ini, Anda memerlukan dua papan pengembangan ESP32. Kami akan menggunakan Papan ESP32 DOIT DEVKIT V1.

Server ESP32 BLE

Untuk membuat Server ESP32 BLE, buka Arduino IDE Anda dan buka  File > Examples > ESP32 BLE Arduino dan pilih contoh BLE_server. Kode berikut harus dimuat :



Untuk membuat server BLE, kode harus mengikuti langkah-langkah berikut :

    • Buat Server BLE. Dalam hal ini, ESP32 bertindak sebagai server BLE.

    • Buat Layanan BLE.

    • Buat Karakteristik BLE pada Layanan.

    • Buat Deskriptor BLE pada Karakteristik.

    • Mulai Layanan.

    • Mulai beriklan, sehingga dapat ditemukan oleh perangkat lain.

Cara kerja kode

Mari kita lihat sekilas bagaimana kode contoh server BLE bekerja.

Itu dimulai dengan mengimpor perpustakaan yang diperlukan untuk kemampuan BLE.

Kemudian, Anda perlu menentukan UUID untuk Layanan dan Karakteristik.

Anda dapat meninggalkan UUID default, atau Anda dapat membuka uuidgenerator.net untuk membuat UUID acak untuk layanan dan karakteristik Anda.

Dalam setup(), itu memulai komunikasi serial pada baud rate 115200.

Kemudian, Anda membuat perangkat BLE yang disebut "MyESP32". Anda dapat mengubah nama ini menjadi apa pun yang Anda suka.

Di baris berikut, Anda mengatur perangkat BLE sebagai server.

Setelah itu, Anda membuat layanan untuk server BLE dengan UUID yang ditentukan sebelumnya.

Kemudian, Anda mengatur karakteristik untuk layanan itu. Seperti yang Anda lihat, Anda juga menggunakan UUID yang ditentukan sebelumnya, dan Anda harus meneruskan properti karakteristik sebagai argumen. Dalam hal ini, itu adalah : BACA dan TULIS.

Setelah membuat karakteristik, Anda dapat mengatur nilainya dengan metode setValue().

Dalam hal ini kami menetapkan nilai ke teks "Hello World said Neil". Anda dapat mengubah teks ini menjadi apa pun yang Anda suka. Dalam proyek mendatang, teks ini dapat berupa pembacaan sensor, atau keadaan lampu.

Akhirnya, Anda dapat memulai layanan dan iklan, sehingga perangkat BLE lain dapat memindai dan menemukan perangkat BLE ini.

Ini hanyalah contoh sederhana tentang cara membuat server BLE. Dalam kode ini tidak ada yang dilakukan di loop(), tetapi Anda dapat menambahkan apa yang terjadi ketika klien baru terhubung (periksa contoh BLE_notify untuk beberapa panduan).

Pemindai BLE ESP32

Membuat pemindai ESP32 BLE itu sederhana. Ambil ESP32 lain (sementara yang lain menjalankan sketsa server BLE). Di Arduino IDE Anda, buka File > ExamplesESP32 BLE Arduino dan pilih contoh BLE_scan. Kode berikut harus dimuat.



Kode ini menginisialisasi ESP32 sebagai perangkat BLE dan memindai perangkat terdekat. Unggah kode ini ke ESP32 Anda. Anda mungkin ingin untuk sementara memutuskan sambungan ESP32 lain dari komputer Anda, jadi Anda yakin bahwa Anda mengunggah kode ke papan ESP32 yang tepat.

Setelah kode diunggah dan Anda harus menyalakan dua papan ESP32:

    • Satu ESP32 dengan sketsa "BLE_server";

    • Lainnya dengan sketsa "BLE_scan" ESP32.

Buka Serial Monitor dengan ESP32 menjalankan contoh "BLE_scan", tekan tombol ESP32 (dengan sketsa "BLE_scan") ENABLE untuk memulai ulang dan tunggu beberapa detik saat memindai.

Pemindai menemukan dua perangkat: satu adalah ESP32 (memiliki nama “MyESP32"), dan yang lainnya adalah MiBand2 kami.

Menguji Server ESP32 BLE dengan Smartphone Anda

Sebagian besar smartphone modern harus memiliki kemampuan BLE. Saat ini saya menggunakan OnePlus 5, tetapi sebagian besar ponsel cerdas juga berfungsi.

Anda dapat memindai server ESP32 BLE Anda dengan ponsel cerdas Anda dan melihat layanan dan karakteristiknya. Untuk itu, kami akan menggunakan aplikasi gratis bernama nRF Connect for Mobile dari Nordic, ini berfungsi di Android (Google Play Store) dan iOS (App Store).

Buka Google Play Store atau App Store dan cari "nRF Connect for Mobile". Instal aplikasi dan buka.

Jangan lupa masuk ke pengaturan Bluetooth dan aktifkan adaptor Bluetooth di ponsel cerdas Anda. Anda mungkin juga ingin membuatnya terlihat oleh perangkat lain untuk menguji sketsa lain nanti.

Setelah semuanya siap di ponsel cerdas Anda dan ESP32 menjalankan sketsa server BLE, di aplikasi, ketuk tombol pindai untuk memindai perangkat terdekat. Anda harus menemukan ESP32 dengan nama "MyESP32".

Klik tombol "Connect".

Seperti yang Anda lihat pada gambar di bawah, ESP32 memiliki layanan dengan UUID yang telah Anda tentukan sebelumnya. Jika Anda mengetuk layanan, itu akan memperluas menu dan menunjukkan Karakteristik dengan UUID yang juga telah Anda tetapkan.

Karakteristiknya memiliki properti READ dan WRITE, dan nilainya adalah yang telah Anda definisikan sebelumnya di sketsa server BLE. Jadi, semuanya bekerja dengan baik.

Membungkus

Dalam tutorial ini kami telah menunjukkan kepada Anda prinsip-prinsip dasar Bluetooth Low Energy dan menunjukkan kepada Anda beberapa contoh dengan ESP32. Kami telah menjelajahi sketsa server BLE dan sketsa pemindaian BLE. Ini adalah contoh sederhana untuk membantu Anda memulai dengan BLE.

Idenya adalah menggunakan BLE untuk mengirim atau menerima pembacaan sensor dari perangkat lain. Kami akan memposting lebih banyak tutorial dan proyek tentang BLE dengan ESP32, jadi pantau terus!

Ini adalah kutipan dari kursus kami: Belajar ESP32 dengan Arduino IDE. Jika Anda menyukai ESP32 dan ingin mempelajarinya lebih lanjut, kami sarankan untuk mendaftar di kursus Belajar ESP32 dengan Arduino IDE.

Posting Komentar

0 Komentar