Isi kandungan:

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

Video: ESP8266 Komunikasi Data Langsung: 3 Langkah

Video: ESP8266 Komunikasi Data Langsung: 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

Pengenalan

Semasa melakukan beberapa projek dengan modul Arduinos dan nRF24l01, saya tertanya-tanya adakah saya dapat menjimatkan usaha dengan menggunakan modul ESP8266 sebagai gantinya. Kelebihan modul ESP8266 adalah bahawa ia mengandungi pengawal mikro di atas kapal, jadi tidak diperlukan papan Arduino tambahan. Selain itu, saiz memori ESP8266 jauh lebih besar dan berkaitan dengan kelajuan ESP8266 berjalan pada maksimum 160MHz dan bukannya 16MHz Arduino. Sudah tentu ada beberapa sisi negatif.

ESP8266 hanya berjalan pada 3.3V, mempunyai pin yang lebih sedikit dan tidak mempunyai input analog yang bagus yang dimiliki Arduino (ia mempunyai satu, tetapi hanya untuk 1.0V dan bukan 3.3V). Selain itu terdapat banyak lagi contoh kod untuk Arduino + nRF24l01 maka ada untuk ESP8266 terutama ketika melakukan pemindahan data secara langsung.

Oleh itu, dengan mempertimbangkan satu projek, saya melihat topik pemindahan data yang cepat dan ringan antara dua ESP8266 tanpa semua perkara WWW dan

Semasa mencari di internet untuk contoh (kebanyakan kod di bawah ini dipetik dari internet di berbagai tempat) saya menemui banyak persoalan bagaimana melaksanakan pemindahan data langsung tanpa contoh "lakukan seperti itu" yang bagus. Terdapat beberapa kod contoh, tetapi kebanyakannya dipersoalkan mengapa ia tidak berfungsi.

Oleh itu, setelah membaca dan cuba memahami, saya membuat contoh di bawah yang membolehkan pemindahan data cepat dan sederhana antara dua ESP8266.

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

Untuk sampai ke sana, beberapa batasan harus diperjelas berbanding dengan nRF24l01.

Untuk menggunakan ESP8266 dalam lingkungan Arduino, perpustakaan asas yang harus digunakan adalah ESP8266WiFi.h. Mungkin berbeza, tetapi kebanyakan contoh menggunakan yang disebutkan di. Semasa menggunakan ini, anda perlu mendapatkan komunikasi anda ke tahap WiFi.

Jadi, untuk berkomunikasi perlu ada sekurang-kurangnya pusat akses (AP) / pelayan dan pelanggan. AP memberikan nama rangkaian dan alamat IP dan pelanggan akan menyambung ke pelayan ini.

Oleh itu, dibandingkan dengan nRF24l01, di mana kod di kedua hujungnya lebih kurang sama (kecuali untuk saluran penghantaran), kod ESP8266 pada asasnya berbeza, kerana satu dikonfigurasikan sebagai AP dan yang lain sebagai pelanggan.

Topik seterusnya adalah, bahawa bukannya hanya menghantar beberapa bait ke nRF24l01, untuk protokol pemindahan ESP8266 perlu diperhatikan.

Terdapat dua protokol yang biasa digunakan: TCP dan UDP.

TCP (Transmission Control Protocol) adalah protokol yang membolehkan penghantaran tanpa kerugian antara pelayan dan klien. Protokol ini merangkumi "jabat tangan" (banyak bendera dan pengakuan yang dikirim antara kedua-dua pihak) dan penomboran dan pengesanan paket untuk mengenal pasti dan menghantar semula paket yang hilang. Selain itu, dengan menggunakan semua jabat tangan ini protokol mencegah data hilang kerana banyak paket dihantar pada masa yang sama dalam rangkaian. Paket data menunggu sehingga ia dapat diterima.

UDP (Protokol Datagram Pengguna) kekurangan semua jabat tangan, penomoran paket dan penghantaran semula. Oleh itu, overheadnya lebih kecil dan tidak perlu semua jabat tangan mengekalkan hubungan. UDP menggabungkan beberapa pengesanan ralat asas, tetapi tidak ada pembetulan (pakej yang rosak baru dijatuhkan). Data dihantar, tanpa pengetahuan jika pihak penerima bebas menerima data tersebut. Pada masa yang sama, beberapa paket dapat bertabrakan, karena setiap pihak mengirimkan data kapan pun diperlukan. Dengan menghilangkan semua jabat tangan, ada satu kelebihan UDP yang disebut "multicast" dan "siaran". Dalam kes "multicast" paket data dikirim ke sekumpulan anggota yang telah ditentukan, dalam paket data "siaran" dikirim ke semua anggota yang terhubung. Ini mengurangkan pemindahan data secara besar-besaran sekiranya aliran diterima oleh beberapa ahli (mis. Dengan mengirim umpan video ke beberapa penerima atau dengan menghantar waktu semasa ke beberapa peranti yang disambungkan).

Terdapat beberapa video bagus di Youtube yang menerangkannya dengan lebih baik lagi.

Oleh itu, semasa menghantar data, penting untuk mengetahui keperluan anda:

  • data yang tidak rosak, pengurusan beberapa rakan sebaya dengan jabat tangan → TCP
  • data masa nyata, sambungan pantas → UDP

Saya mula-mula memulakan dengan pelaksanaan komunikasi berasaskan TCP (antara satu Server dan satu Pelanggan). Semasa mengujinya, saya mengalami masalah dalam penghantaran. Pada awalnya data ditukar dengan cepat, kemudian setelah beberapa saat laju turun secara mendadak. Saya membuat kesimpulan bahawa ini adalah masalah khas dari pendekatan TCP (yang salah!), Jadi kemudian berubah menjadi penyelesaian berdasarkan UDP. Akhirnya saya berdua berjaya bekerja. Oleh itu, kedua-dua penyelesaian akan diberikan.

Lakaran di bawah mempunyai persamaan untuk TCP dan UDP bahawa mereka:

  • bebas dari rangkaian WiFi yang ada. Oleh itu, ia akan berfungsi di mana sahaja jauh dari internet dan penghala yang bersambung.
  • menghantar data ASCII untuk dicetak melalui monitor bersiri.
  • mengirim data yang diperoleh oleh fungsi milis () - untuk menganalisis kelajuan penghantaran.
  • tidak diuji untuk beberapa pelanggan (kerana mempunyai perkakasan untuk menyiapkan rangkaian sekarang)

Langkah 2: Perkakasan

Perkakasan
Perkakasan
Perkakasan
Perkakasan
Perkakasan
Perkakasan
Perkakasan
Perkakasan

Untuk menguji keseluruhan persediaan saya menggunakan dua modul ESP8266. Satu modul adalah penyesuai ESP-01 + USB-ke-UART. Modul lain adalah modul berasaskan ESP-12 yang menggabungkan sambungan USB, pengatur voltan dan beberapa keseronokan seperti suis, LDR dan LED pelbagai warna.

Modul USB-ke-UART untuk ESP-01 perlu sedikit diubahsuai untuk dapat menggunakannya sebagai pengaturcara (sekali lagi Youtube oleh Csongor Varga).

Untuk menjalankan lakaran, anda perlu memasang perpustakaan ESP8266 (seperti yang dijelaskan di banyak tempat di internet). Dalam kedua kes tersebut (TCP dan UDP) masing-masing terdapat sketsa pelayan dan pelanggan. Sketsa mana yang dimuat ke modul mana yang tidak penting.

Ucapan terima kasih

Seperti yang disebutkan, lakaran berdasarkan banyak potongan yang saya dapati di web. Saya tidak ingat lagi di mana saya menjumpai apa, dan apakah kod asal atau apa yang saya ubah. Oleh itu, saya hanya ingin mengucapkan terima kasih kepada masyarakat besar di luar sana kerana telah menerbitkan semua contoh hebat.

Langkah 3: Lakaran

Kod ini terdiri daripada dua lakaran masing-masing (seperti yang dijelaskan), lakaran pelayan dan sketsa pelanggan, masing-masing untuk TCP dan UDP.

Disyorkan: