Komunikasi Wi-Fi Client-Server ESP32 Antara Dua Papan

Panduan ini menunjukkan cara mengatur komunikasi HTTP antara dua papan ESP32 untuk bertukar data melalui Wi-Fi tanpa koneksi internet (router). Dengan kata sederhana, Anda akan belajar cara mengirim data dari satu papan ke papan lainnya menggunakan permintaan HTTP. Papan ESP32 akan diprogram menggunakan Arduino IDE.

Untuk tujuan demonstrasi, kami akan mengirimkan pembacaan sensor BME280 dari satu papan ke papan lainnya. Penerima akan menampilkan pembacaan pada layar OLED.

Jika Anda memiliki papan ESP8266, Anda dapat membaca panduan khusus ini: Komunikasi Wi-Fi Client-Server ESP8266NodeMCU.

Tonton Video Demonstrasinya

Untuk melihat bagaimana proyek ini bekerja, Anda dapat menonton video demonstrasi berikut:

Ulasan Proyek

Satu papan ESP32 akan bertindak sebagai server dan papan ESP32 lainnya akan bertindak sebagai klien. Diagram berikut menunjukkan gambaran umum tentang bagaimana semuanya bekerja.

    Server ESP32 membuat jaringan nirkabelnya sendiri (ESP32 Soft-Access Point). Jadi, perangkat Wi-Fi lain dapat terhubung ke jaringan itu (SSID: ESP32-Access-Point, Password: 123456789).

    • Klien ESP32 diatur sebagai stasiun. Jadi, dapat terhubung ke jaringan nirkabel server ESP32.

    • Klien dapat membuat permintaan HTTP GET ke server untuk meminta data sensor atau informasi lainnya. Itu hanya perlu menggunakan alamat IP server untuk membuat permintaan pada rute tertentu: /temperature, /humidity atau /pressure.

    • Server mendengarkan permintaan yang masuk dan mengirimkan respons yang sesuai dengan pembacaan.

    • Klien menerima bacaan dan menampilkannya di layar OLED.

Sebagai contoh, klien ESP32 meminta suhu, kelembaban dan tekanan ke server dengan membuat permintaan pada alamat IP server diikuti oleh /temperature, /humidity dan /pressure, masing-masing.

Server ESP32 mendengarkan rute tersebut dan ketika permintaan dibuat, ia mengirimkan pembacaan sensor yang sesuai melalui respons HTTP.

Bagian yang Diperlukan

Untuk tutorial ini, Anda memerlukan bagian-bagian berikut:

    2x Papan Pengembangan ESP32 – baca UlasanPapan ESP32 Terbaik

    Sensor BME280

    Layar OLED I2C SSD1306

    Kabel Jumper

    Breadboard

Menginstal Libraries

Untuk tutorial ini Anda perlu menginstal perpustakaan berikut:

Pustaka Server Web Asinkron

Kami akan menggunakan pustaka berikut untuk menangani permintaan HTTP:

    • Pustaka ESPAsyncWebServer (unduh pustakaESPAsyncWebServer)

    • Pustaka Async TCP (unduh pustakaAsyncTCP)

Pustaka ini tidak tersedia untuk diinstal melalui Manajer Perpustakaan. Jadi, Anda perlu meng-unzip library dan memindahkannya ke folder library instalasi Arduino IDE.

Atau, Anda dapat pergi ke Sketch > Include Library > Add .ZIP library… dan pilih library yang baru saja Anda unduh.

Libraries BME280

Library berikut dapat diinstal melalui Arduino Library Manager. Buka Sketsa > Sertakan Perpustakaan > Kelola Perpustakaan dan cari nama perpustakaan.

    Adafruit_BME280 library

    Adafruit library sensor terpadu

Libraries OLED I2C SSD1306

Untuk berinteraksi dengan tampilan OLED, Anda memerlukan pustaka berikut. Ini dapat diinstal melalui Arduino Library Manager. Buka Sketch > Include Library > Manage Libraries dan cari nama perpustakaan.

    Adafruit SSD1306

    Adafruit GFX Library

#1 ESP32 Server (Access Point)

ESP32 SeServer ESP32 adalah Access Point(AP), yang mendengarkan permintaan pada /temperature, /humidity dan /pressure URL. Ketika mendapat permintaan pada URL tersebut, ia mengirimkan pembacaan sensor BME280 terbaru.

Untuk tujuan demonstrasi, kami menggunakan sensor BME280, tetapi Anda dapat menggunakan sensor lain dengan memodifikasi beberapa baris kode.

Diagram Skematik

Hubungkan ESP32 ke sensor BME280 seperti yang ditunjukkan pada diagram skema berikut. rver (Titik Akses)

Sketsa Arduino untuk Server ESP32 #1

Unggah kode berikut ke papan Anda.

Cara kerja kode

Mulailah dengan menyertakan perpustakaan yang diperlukan. Sertakan perpustakaan WiFi.h dan perpustakaan ESPAsyncWebServer.h untuk menangani permintaan HTTP yang masuk.

Sertakan perpustakaan berikut untuk berinteraksi dengan sensor BME280.

Dalam variabel berikut, tentukan kredensial jaringan titik akses Anda:

Kami menyetel SSID ke ESP32-Access-Point, tetapi Anda dapat memberikan nama lain apa pun. Anda juga dapat mengubah kata sandi. Secara default, disetel ke 123456789.

Buat instance untuk sensor BME280 yang disebut bme.

Buat server web asinkron pada port 80.

Kemudian, buat tiga fungsi yang mengembalikan suhu, kelembapan, dan tekanan sebagai variabel String.

Dalam setup(), inisialisasi Serial Monitor untuk tujuan demonstrasi.

Tetapkan ESP32 Anda sebagai titik akses dengan nama SSID dan kata sandi yang ditentukan sebelumnya.

Kemudian, tangani rute di mana ESP32 akan mendengarkan permintaan yang masuk.

Misalnya, ketika server ESP32 menerima permintaan pada URL /temperature, ia mengirimkan suhu yang dikembalikan oleh fungsi readTemp() sebagai char (itulah sebabnya kami menggunakan metode c_str() .

Hal yang sama terjadi ketika ESP menerima permintaan pada /humidity dan /pressure URL.

Baris berikut menginisialisasi sensor BME280.

Akhirnya, mulai server.

Karena ini adalah server web asinkron, tidak ada apa pun di loop().

Menguji Server ESP32

Unggah kode ke papan Anda dan buka Serial Monitor. Anda harus mendapatkan sesuatu sebagai berikut:

Ini berarti bahwa titik akses telah berhasil diatur.

Sekarang, untuk memastikannya mendengarkan permintaan suhu, kelembapan, dan tekanan, Anda perlu menyambungkan ke jaringannya.

Di ponsel cerdas Anda, buka pengaturan Wi-Fi dan sambungkan ke ESP32-Access-Point. Kata sandinya adalah 123456789.

Saat terhubung ke titik akses, buka browser Anda dan ketik 192.168.4.1/temperature

Anda harus mendapatkan nilai suhu di browser Anda:

Coba jalur URL ini untuk kelembapan 192.168.4.1/humidity:

Terakhir, buka URL 192.168.4.1/tekanan:

Jika Anda mendapatkan bacaan yang valid, itu berarti semuanya berfungsi dengan baik. Sekarang, Anda perlu menyiapkan papan ESP32 (klien) lain untuk membuat permintaan itu untuk Anda dan menampilkannya di layar OLED.

#2 ESP32 Klien (Stasiun)

Klien ESP32 adalah stasiun Wi-Fi yang terhubung ke Server ESP32. Klien meminta suhu, kelembapan, dan tekanan dari server dengan membuat permintaan HTTP GET pada rute URL /temperature, /humidity, dan /pressure. Kemudian, ini menampilkan pembacaan pada layar OLED.

Diagram skematik

Hubungkan ESP32 ke layar OLED seperti yang ditunjukkan pada diagram skema berikut.

Arduino Sketch untuk #2 ESP32 Client

Unggah kode berikut ke ESP32 lainnya:

Cara kerja kode

Sertakan perpustakaan yang diperlukan untuk koneksi Wi-Fi dan untuk membuat permintaan HTTP:

Masukkan kredensial jaringan server ESP32. Jika Anda telah mengubah kredensial jaringan default di server ESP32, Anda harus mengubahnya di sini agar sesuai.

Kemudian, simpan URL tempat klien akan membuat permintaan HTTP. Server ESP32 memiliki alamat IP 192.168.4.1, dan kami akan membuat permintaan pada /temperature, /humidity dan /pressure URL.

Sertakan perpustakaan untuk berinteraksi dengan tampilan OLED:

Atur ukuran tampilan OLED:

Buat objek tampilan dengan ukuran yang telah Anda tentukan sebelumnya dan dengan protokol komunikasi I2C.

Inisialisasi variabel string yang akan menahan pembacaan suhu, kelembaban dan tekanan yang diambil oleh server.

Atur interval waktu antara setiap permintaan. Secara default, ini diatur ke 5 detik, tetapi Anda dapat mengubahnya ke interval lain.

Di setup(), inisialisasi tampilan OLED:

Catatan: jika layar OLED Anda tidak berfungsi, periksa alamat I2C-nya menggunakan sketsa pemindai I2C dan ubah kode yang sesuai.

Hubungkan klien ESP32 ke jaringan server ESP32.

 

Di loop() adalah tempat kami membuat permintaan HTTP GET. Kami telah membuat fungsi yang disebut httpGETRequest() yang menerima sebagai argumen jalur URL tempat kami ingin membuat permintaan dan mengembalikan respons sebagai String.

Anda dapat menggunakan fungsi berikutnya dalam proyek Anda untuk menyederhanakan kode Anda:

Kami menggunakan fungsi itu untuk mendapatkan pembacaan suhu, kelembaban dan tekanan dari server.

Cetak bacaan tersebut di Serial Monitor untuk debugging.

Kemudian, tampilkan suhu di layar OLED:

Kelembaban:

Akhirnya, pembacaan tekanan:

Kami menggunakan penghitung waktu alih-alih penundaan untuk membuat permintaan setiap x jumlah detik. Itu sebabnya kami memiliki variabel PreviousMillis, currentMillis dan menggunakan fungsi millis(). Kami memiliki artikel yang menunjukkan perbedaan antara pengaturwaktu dan penundaan yang mungkin berguna bagi Anda (atau baca Pengatur WaktuESP32).

Unggah sketsa ke #2 ESP32 (klien) untuk menguji apakah semuanya berfungsi dengan baik.

Menguji Klien ESP32

Dengan kedua papan cukup dekat dan bertenaga, Anda akan melihat bahwa ESP #2 menerima pembacaan suhu, kelembaban, dan tekanan baru setiap 5 detik dari ESP #1.

Inilah yang seharusnya Anda lihat di Monitor Serial Klien ESP32.

Pembacaan sensor juga ditampilkan di OLED.

Itu dia! Dua papan Anda berbicara satu sama lain.

Membungkus

Dalam tutorial ini Anda telah belajar cara mengirim data dari satu ESP32 ke papan ESP32 lain melalui Wi-Fi menggunakan permintaan HTTP tanpa perlu terhubung ke internet. Untuk tujuan demonstrasi, kami telah menunjukkan cara mengirim pembacaan sensor BME280, tetapi Anda dapat menggunakan sensor lain atau mengirim data lainnya. Sensor lain yang direkomendasikan:

    ESP32 DHT11 atau DHT22 (Panduan)

    ESP32 DS18B20 (Panduan)

    DHT11 vs DHT22 vs DS18B20 vs BME280

Kami memiliki tutorial serupa untuk ESP8266 yang mungkin berguna bagi Anda:

    Komunikasi Wi-Fi Client-Server ESP8266NodeMCU Antara Dua Papan

 Sumber : randomnerdtutorials.com 

Posting Komentar

0 Komentar