Isi kandungan:

Alat kawalan jauh ESP32 Bluetooth BLE: 8 Langkah
Alat kawalan jauh ESP32 Bluetooth BLE: 8 Langkah

Video: Alat kawalan jauh ESP32 Bluetooth BLE: 8 Langkah

Video: Alat kawalan jauh ESP32 Bluetooth BLE: 8 Langkah
Video: Home Automation using ESP32 Bluetooth and IR remote control Relay | ESP32 Projects 2021 2024, November
Anonim
Alat kawalan jauh ESP32 Bluetooth BLE
Alat kawalan jauh ESP32 Bluetooth BLE
Alat kawalan jauh ESP32 Bluetooth BLE
Alat kawalan jauh ESP32 Bluetooth BLE
Alat kawalan jauh ESP32 Bluetooth BLE
Alat kawalan jauh ESP32 Bluetooth BLE
Alat kawalan jauh ESP32 Bluetooth BLE
Alat kawalan jauh ESP32 Bluetooth BLE

Projek ini adalah contoh bagaimana menyambungkan kayu bedik Bluetooth BLE yang murah ke ESP32. Kod ditulis menggunakan Arduino IDE Ver 1.8.5 dengan addon ESP32. Joystick BLE yang digunakan adalah peranti komersial yang boleh anda beli di Internet dengan harga kurang dari $ 20.00 atau dari kedai FiveBELoW tempatan anda dengan harga $ 5.00.

Joystick yang saya gunakan untuk projek ini ialah Spektrum VR Control Bluetooth Remote Controller. Itu dipasarkan sebagai bekerja dengan tablet Android dan IOS sebagai joystick / tetikus untuk digunakan dengan headset VR.

Alat kawalan jauh Bluetooth VR Control mempunyai kayu bedik tunggal dengan paksi X dan Y, dua butang pencetus di depan dan enam butang pada pemegangnya. Dua butang adalah untuk kawalan hidup / mati dan kawalan mod. Empat butang yang lain boleh digunakan untuk apa sahaja yang anda mahukan. Projek ini adalah kerangka atau kerangka yang menangani semua antara muka Bluetooth dan penyahkodan butang & kayu bedik. Yang perlu anda lakukan ialah menambah panggilan fungsi untuk mengendalikan apa yang anda mahu butang dan kayu bedik dilakukan. Anda tidak perlu mengetahui apa-apa mengenai Bluetooth untuk menggunakan rangka kerja ini.

Terdapat banyak laman web dengan arahan terperinci untuk memasang Arduino IDE dan ESP32 addon. Saya tidak akan berusaha mengulangi maklumat itu di sini. Google dan ikut arahannya.

Kerangka kerja adalah penyesuaian contoh klien BLE yang diterbitkan oleh IoT Sharing. Anda boleh menemuinya di sini. Anda boleh mempelajari kod ini untuk mendapatkan idea bagaimana BLE berfungsi. Expressif mempunyai contoh lengkap untuk pelanggan GATT BLE dan menerangkan operasi secara terperinci (tidak ditulis untuk Arduino IDE). Anda boleh mendapatkannya di sini.

Ini bukan tutorial BLE. Saya tidak akan menerangkan bagaimana kod tersebut berfungsi secara terperinci. Saya akan menggunakan terminologi BLE untuk menerangkan beberapa ciri kayu bedik. Bahagian kod yang perlu anda ubah untuk projek anda akan dijelaskan secara terperinci untuk membantu anda mengubahnya. Skopnya terhad untuk memastikan Instructable ini pendek dan tertumpu pada penggunaan joystick.

Langkah 1: Sedikit Mengenai Tenaga Rendah Bluetooth (BLE)

Ini tidak bertujuan untuk menjadi tutorial mengenai BLE. Semasa saya memulakan projek ini, saya tidak mengetahui perbezaan antara BLE dan Bluetooth Klasik. Saya hanya ingin melihat sama ada saya boleh mendapatkan kayu bedik yang saya beli untuk bekerja dengan ESP32. Dalam teks berikut, saya menggunakan terminologi BLE untuk memberikan gambaran ringkas bagaimana BLE berfungsi.

BLE menggunakan seni bina pelanggan / pelayan. Satu peranti adalah pelayan yang menyediakan perkhidmatan. Peranti lain adalah pelanggan yang menggunakan perkhidmatan. Untuk mengurangkan keperluan kuasa, BLE hanya menghantar paket kecil maklumat apabila berlaku perubahan. Dalam kes joystick, peranti joystick adalah pelayan. Sebagai pelayan, ia mengiklankan dirinya dan akan menghantar senarai perkhidmatan yang diberikannya ketika ditanya. Peranti kayu bedik mengiklankan lima perkhidmatan. Satu-satunya perkhidmatan yang kami minati ialah perkhidmatan BLE HID (Human Interface Device). Perkhidmatan BLE mempunyai apa yang dikenali sebagai Karakteristik yang berkaitan dengannya. Karakteristik biasanya merupakan sumber data. Perkhidmatan HID kayu bedik mempunyai sepuluh Ciri. Sebilangan ciri adalah pendua dan tidak diendahkan. Kami hanya berminat dengan Karakteristik Laporan BLE yang mempunyai kemampuan Baca dan Beritahu. Tiga ciri memenuhi syarat ini dan memberikan data mengenai kedudukan kayu bedik dan keadaan butang. Apabila pemberitahuan diaktifkan, pelayan akan mengirim paket data ketika perubahan dikesan pada karakteristik yang terkait.

Rangka kerja mengesahkan bahawa pelayan yang dijumpainya mempunyai perkhidmatan BLE HID dan kemudian akan mengaktifkan Pemberitahuan mengenai tiga Karakteristik Laporan yang memberikan maklumat keadaan kayu bedik dan butang. Kemudian, apabila butang ditekan atau dilepaskan atau kayu bedik digerakkan, ESP32 menerima sebungkus data yang memberitahunya apakah kedudukan kayu bedik baru dan / atau keadaan beberapa butang.

Langkah 2: Petunjuk Pengimbasan dan Sambungan

Rangka kerja menentukan dua LED, HIJAU dan BLUELED dan memberikannya kepada dua pin GPIO ESP32. GREENLED menyala ketika ESP32 mencari kayu bedik BLE. Apabila kayu bedik dijumpai GREENLED dimatikan dan BLUELED menyala untuk menunjukkan bahawa sambungan telah terjalin dan anda sudah bersedia untuk pergi. Sekiranya sambungan terputus, BLUELED dimatikan, ESP32 diset semula, GREENLED dinyalakan dan pengimbasan dimulakan semula. Sekiranya kayu bedik tidak dijumpai dalam masa tiga puluh saat, pengimbasan berhenti dan GREENLED dimatikan. Selepas lima saat, pengimbasan dimulakan semula dan GREENLED dihidupkan.

Hasil akhirnya ialah ESP32 akan terus mencari kayu bedik sehingga ia menjumpainya. Setelah sambungan dibuat, jika terputus, ESP32 akan menetapkan semula dirinya dan mula mengimbas lagi. ESP32 ditetapkan semula kerana tidak ada fungsi ESP32 SDK untuk menetapkan semula stack Bluetooth untuk memulakan semula pengimbasan.

Langkah 3: Menguraikan Acara Joystick dan Butang

Satu peristiwa panggilan balik pada ESP32 menerima tiga paket data yang berbeza dari pelayan untuk tiga Karakteristik yang disiapkan untuk memberikan Pemberitahuan. Satu paket panjangnya empat bait. Tiga bait mengandungi kedudukan paksi X, kedudukan paksi Y dan butang pemicu, yang dipetakan sedikit dalam bait. Dua paket yang lain masing-masing dua bait dan mempunyai satu bait yang mempunyai keadaan butang yang dipetakan sedikit. Paket yang diterima disahkod dan disalin ke dalam array bait dalam memori. Data paksi kayu bedik masuk ke dalam bait data X dan Y dan setiap bait butang tiga bit yang dipetakan diarahkan ke bait yang sesuai untuk butang tersebut.

Tugas FreeRTOS dibuat untuk menangani data yang diterima oleh pemberitahuan. Satu tugas untuk butang kayu bedik dan pencetus, satu tugas untuk butang A & B dan satu tugas untuk butang C&D. Setiap tugas ini telah ditandai dengan jelas kawasan di mana anda harus menambahkan kod anda untuk melakukan apa yang anda mahukan dengan acara tersebut. Cari komen "// ===== tambahkan kod anda di sini =====" di bahagian utama tugas dan tambahkan kod anda selepasnya. Setiap tugas mempunyai komen yang menunjukkan apa yang digunakan dan menggunakan Serial.println () untuk mencetak mesej mengenai peristiwa yang berlaku.

Berikut adalah contoh dari tugas butang A / B;

void taskButtonAB (void * parameter) butang {uint8_t;

// ===== jika tugas memerlukan satu kali inisialisasi, letakkan di sini =====

sementara (benar) {// melepaskan CPU, tunggu data baru vTaskSuspend (NULL); // kami baru bangun, data baru ada butang = VrBoxData [VB_BTNAB]; Serial.printf (Butang "A / B:% 02X / n", butang); if (butang & VB_BUTTON_A) {// butang A ditekan atau ditahan Serial.println ("Butang A"); // ===== tambahkan kod anda di sini =====}

jika (butang & VB_BUTTON_B)

{// butang B ditekan atau ditahan Serial.println ("Butang B");

// ===== tambah kod anda di sini =====

}} // untuk} // taskButtonAB

Langkah 4: Operasi Kotak VR: Joystick

Sekiranya kayu bedik ditinggalkan di kedudukan tengah, tidak ada pemberitahuan kayu bedik yang dihantar. Setelah kayu bedik dipindahkan dari tengah, mesej pemberitahuan dengan data kayu bedik dan data butang pencetus dihantar kira-kira setiap 15mS. Apabila kayu bedik dipindahkan kembali ke tengah, pemberitahuan bahawa pindah ke pusat tidak akan dihantar. Dengan kata lain, ini memberitahu anda bahawa kayu bedik telah berpindah dari tengah, tetapi tidak bahawa ia telah berpindah ke tengah. Hasil akhirnya ialah anda menerima mesej yang menunjukkan kayu bedik bergerak ke arah pusat, tetapi tidak bahawa ia telah mencapai pusat. Sangat menjengkelkan. Dua butang pencetus disertakan dengan data kayu bedik. Menekan salah satu butang pemicu setelah mengembalikan kayu bedik ke tengah akan mengemas kini kedudukan kayu bedik ke sifar. Framework mempunyai timer timeout built-in untuk itu yang secara automatik mensimulasikan pesan pemberitahuan kayu bedik dalam masa yang singkat setelah semua mesej pemberitahuan butang joystick / pemicu berhenti tiba. Pemasa menetapkan kayu bedik ke sifar. Joystick mempunyai jarak kira-kira +/- 25 pada setiap paksi.

Langkah 5: Operasi Kotak VR: Butang Pencetus

Butang pemicu akan menghantar pesan pemberitahuan sekali apabila ditekan dan sekali lagi ketika dilepaskan. Mesej pemberitahuan ditekan akan menunjukkan butang yang ditekan. Mesej pemberitahuan pelepasan menunjukkan bahawa kedua-dua butang dilepaskan.

Memegang butang pemicu bawah akan menghalang pelayan mengesan bahawa butang pemicu atas telah ditekan. Memegang butang pemicu atas dan menekan butang pemicu bawah mengakibatkan pelayan menghantar mesej pemberitahuan bahawa butang pemicu bawah ditekan (butang pemicu atas akan menjadi nol!). Melepaskan butang pemicu bawah akan menyebabkan pelayan mengirim pemberitahuan bahawa butang pemicu atas ditekan dan pemicu bawah dilepaskan.

Dengan kata lain, butang pemicu bawah dominan di atas butang pencetus atas dan akan menimpanya apabila keduanya ditekan. Anda harus menentukan cara menangani kes kedua butang ditekan.

Langkah 6: Operasi Kotak VR: Butang A / B

Butang A dan B bertindak seperti kayu bedik dan terus menghantar mesej pemberitahuan semasa ditekan dan tahan. Mesej berhenti apabila butang dilepaskan. Butang A dan B berfungsi sama dengan butang Pemicu kerana butang A menguasai butang B sama seperti butang pencetus bawah menguasai butang pemicu atas.

Langkah 7: Operasi Kotak VR: Butang C / D

Butang C dan D menghantar mesej pemberitahuan sekali apabila ditekan dan sekali lagi ketika dilepaskan. Sekiranya ditahan, tidak ada lagi mesej yang dikirimkan hingga dilepaskan. Menekan salah satu butang C atau D akan menghalang pelayan daripada mengesan aktiviti pada butang yang lain.

Langkah 8: Kesimpulannya

Pengendalian butang pada pendapat saya agak aneh. Kerangka menyediakan tempat untuk meletakkan kod anda untuk bertindak ketika butang ditekan. Sekiranya anda juga perlu mengesan pelepasan butang, yang tinggal untuk anda mengetahui cara melakukannya.

Terpulang pada anda untuk menentukan apa yang anda mahu setiap butang lakukan dan apa yang harus dilakukan oleh tongkat Joystick. Bagaimana anda menangani perbezaan pemicu, butang A & B dan C & D terpulang kepada anda.

Lihat dalam kod untuk; taskJoyStick (), taskButtonAB (), taskButtonCD () berfungsi dan tambahkan kod anda selepas komen "// ===== tambahkan kod anda di sini =====".

Anda memerlukan hingga empat fungsi untuk mengendalikan kayu bedik (depan, belakang, kanan & kiri) dan hingga enam fungsi untuk mengendalikan pelbagai butang. Laksanakan semuanya atau hanya apa yang anda perlukan. Pilihan adalah milik anda.

Sekiranya anda menggunakan rangka kerja ini. Saya suka teriakan tentang apa yang anda gunakan dan jika anda senang menggunakannya.

Sekiranya anda mempunyai pertanyaan mengenai cara kerjanya atau memerlukan bantuan untuk membuatnya berfungsi, hubungi saya.

Kodnya terdapat di GitHub di sini.

Nikmati.

Disyorkan: