Daftar Isi:

Komunikasi Data Langsung ESP8266: 3 Langkah
Komunikasi Data Langsung ESP8266: 3 Langkah

Video: Komunikasi Data Langsung ESP8266: 3 Langkah

Video: Komunikasi Data Langsung ESP8266: 3 Langkah
Video: Part 1 - Trik Kirim Data Sensor Realtime dengan Komunikasi Serial Arduino Nodemcu ke Thinger.IO 2024, November
Anonim
ESP8266 Komunikasi Data Langsung
ESP8266 Komunikasi Data Langsung

pengantar

Saat telah melakukan beberapa proyek dengan modul Arduino dan nRF24l01, saya bertanya-tanya apakah saya dapat menghemat tenaga dengan menggunakan modul ESP8266. Kelebihan modul ESP8266 adalah didalamnya terdapat mikrokontroler on board, sehingga tidak diperlukan board arduino tambahan. Selain itu ukuran memori ESP8266 jauh lebih besar dan dalam hal kecepatan, ESP8266 berjalan pada maks 160MHz, bukan 16MHz Arduino. Tentu ada sisi negatifnya.

ESP8266 hanya berjalan pada 3.3V, memiliki lebih sedikit pin dan tidak memiliki input analog bagus yang dimiliki Arduino (memiliki satu, tetapi hanya untuk 1.0V dan bukan 3.3V). Selain itu masih banyak lagi contoh kode untuk Arduino + nRF24l01 kemudian ada untuk ESP8266 terutama dalam hal transfer data langsung.

Jadi dengan sebuah proyek dalam pikiran, saya melihat ke topik transfer data yang cepat dan ringan antara dua ESP8266 tanpa semua hal WWW dan

Saat mencari di internet untuk contoh (sebagian besar kode di bawah ini diambil dari internet di berbagai tempat) saya menemukan banyak pertanyaan bagaimana menerapkan transfer data langsung tanpa contoh "lakukan seperti itu". Ada beberapa contoh kode, tetapi kebanyakan dengan pertanyaan mengapa itu tidak berhasil.

Jadi setelah membaca dan mencoba memahami, saya membuat contoh di bawah ini yang memungkinkan transfer data yang cepat dan sederhana antara dua ESP8266.

Langkah 1: Batas dan Latar Belakang (TCP Vs. UDP)

Untuk sampai ke sana, beberapa batasan harus diklarifikasi dibandingkan dengan nRF24l01.

Untuk menggunakan ESP8266 dalam lingkungan Arduino, perpustakaan dasar yang digunakan adalah ESP8266WiFi.h. Yang mungkin berbeda, tetapi sebagian besar contoh menggunakan yang disebutkan di atas. Saat menggunakan ini, Anda perlu membuat komunikasi Anda ke tingkat WiFi.

Jadi, untuk berkomunikasi setidaknya harus ada access point (AP)/server dan client. AP memberikan nama jaringan dan alamat IP dan klien akan terhubung ke server ini.

Jadi dibandingkan dengan nRF24l01, di mana kode di kedua ujungnya kurang lebih sama (kecuali untuk saluran transmisi), kode ESP8266 pada dasarnya berbeda, karena yang satu dikonfigurasi sebagai AP dan yang lainnya sebagai klien.

Topik selanjutnya adalah, alih-alih hanya mengirim beberapa byte ke nRF24l01, untuk protokol transfer ESP8266 perlu diperhatikan.

Ada dua protokol yang umum digunakan: TCP dan UDP.

TCP (Transmission Control Protocol) adalah protokol yang memungkinkan transmisi bebas-rugi antara server dan klien. Protokol menggabungkan "jabat tangan" (banyak bendera dan pengakuan yang dikirim antara kedua belah pihak) dan penomoran dan deteksi paket untuk mengidentifikasi dan mentransmisikan kembali paket yang hilang. Selain itu, dengan menggunakan semua jabat tangan ini, protokol mencegah data hilang karena banyak paket yang dikirim secara bersamaan di jaringan. Paket data menunggu sampai dapat diterima.

UDP (User Datagram Protocol) tidak memiliki semua handshake, penomoran paket, dan transmisi ulang. Oleh karena itu, overheadnya lebih kecil dan tidak perlu semua jabat tangan untuk mempertahankan koneksi. UDP menggabungkan beberapa deteksi kesalahan dasar, tetapi tidak ada koreksi (paket yang rusak baru saja dijatuhkan). Data dikirim, tanpa sepengetahuan pihak penerima jika pihak penerima bebas menerima data tersebut. Pada saat yang sama, beberapa paket dapat bertabrakan, karena masing-masing pihak mengirimkan data kapan pun dibutuhkan. Dengan menghilangkan semua jabat tangan, ada satu fitur bagus tambahan dari UDP yang disebut "multicast" dan "broadcast". Dalam kasus "multicast" paket data dikirim ke grup anggota yang telah ditentukan, dalam paket data "broadcast" dikirim ke semua anggota yang terhubung. Ini sangat mengurangi transfer data jika aliran diterima oleh banyak anggota (misalnya dengan mengirimkan umpan video ke beberapa penerima atau dengan mengirimkan waktu saat ini ke beberapa perangkat yang terhubung).

Ada beberapa video bagus di Youtube yang menjelaskannya dengan lebih baik.

Jadi saat mengirim data, penting untuk mengetahui kebutuhan Anda:

  • data yang tidak rusak, pengelolaan beberapa rekan dengan jabat tangan → TCP
  • data waktu nyata, koneksi cepat → UDP

Saya pertama kali memulai dengan implementasi komunikasi berbasis TCP (antara satu Server dan satu Klien). Saat mengujinya, saya mengalami masalah kemacetan dalam transmisi. Pada awalnya data dipertukarkan dengan cepat, kemudian setelah beberapa saat kecepatannya menurun drastis. Saya menyimpulkan bahwa ini adalah masalah tipikal dari pendekatan TCP (yang salah!), Jadi kemudian diubah menjadi solusi berdasarkan UDP. Akhirnya saya mendapatkan keduanya didekati bekerja. Jadi kedua solusi akan diberikan.

Sketsa di bawah ini memiliki kesamaan untuk TCP dan UDP yaitu:

  • independen terhadap jaringan WiFi yang ada. Jadi itu akan bekerja di mana saja jauh dari internet dan router yang terhubung.
  • mengirimkan data ASCII untuk dicetak melalui monitor serial.
  • mengirim data yang diperoleh dengan fungsi milis(), untuk menganalisis kecepatan transmisi.
  • tidak diuji untuk banyak klien (karena memiliki perangkat keras untuk mengatur jaringan sekarang)

Langkah 2: Perangkat Keras

Perangkat keras
Perangkat keras
Perangkat keras
Perangkat keras
Perangkat keras
Perangkat keras
Perangkat keras
Perangkat keras

Untuk menguji seluruh pengaturan saya menggunakan dua modul ESP8266. Satu modul adalah adaptor ESP-01 + USB-to-UART. Modul lainnya adalah modul berbasis ESP-12 yang menggabungkan koneksi USB, pengatur Tegangan dan beberapa hal menyenangkan seperti sakelar, LDR, dan LED multi-warna.

Modul USB-to-UART untuk ESP-01 perlu dimodifikasi sedikit agar dapat digunakan sebagai programmer (lagi-lagi Youtube oleh Csongor Varga).

Untuk menjalankan sketsa, Anda perlu menginstal perpustakaan ESP8266 (seperti yang dijelaskan di banyak tempat di internet). Dalam kedua kasus (TCP dan UDP) ada sketsa server dan klien masing-masing. Sketsa mana yang dimuat ke modul mana yang tidak masalah.

Ucapan Terima Kasih

Seperti disebutkan, sketsa didasarkan pada banyak potongan yang saya temukan di web. Saya tidak ingat lagi di mana saya menemukan apa, dan apa kode asli atau apa yang saya ubah. Jadi saya hanya ingin berterima kasih kepada komunitas besar secara umum di luar sana karena telah menerbitkan semua contoh hebat.

Langkah 3: Sketsa

Kode terdiri dari dua sketsa masing-masing (seperti yang dijelaskan), sketsa server dan sketsa klien, untuk TCP dan UDP masing-masing.

Direkomendasikan: