
Apa yang terjadi adalah apa yang ditunggu-tunggu semua orang dan apa yang mereka bicarakan - modul ESP32 baru mulai dijual secara luas dan pergi ke orang-orang. Hari ini kita akan membicarakan modul-modul ini dari sudut pandang pengguna yang tidak profesional yang terbiasa bekerja dengan Arduino dan membuat proyek-proyek kecil untuk otomatisasi rumah atau hanya untuk bersenang-senang dan belajar sendiri.
Apakah ini berhasil? Apa yang ada dengan dukungan modul-modul ini di Arduino IDE? Apakah layak membayar lebih banyak atau lebih baik membatasi diri pada ESP8266 yang sudah akrab? Kami akan mencoba menjawab semua pertanyaan ini bersama-sama, dan di akhir artikel saya akan memberikan tautan ke perwujudan nyata karya ESP32 dengan Arduino - distribusi versi gratis
Arduino Mega Server untuk platform ESP32.
Spesifikasi
Saya tidak akan membahas spesifikasi ESP32 di sini secara rinci, Anda dapat dengan mudah menemukannya di Internet: setiap pengulas menganggap itu tugasnya untuk membawa selembar spesifikasi di awal ulasan ESP32. Saya hanya dapat mengatakan bahwa mereka mengesankan dan jika Anda mendekati masalah ini dengan serius dan penuh pertimbangan, Anda dapat menghabiskan lebih dari satu tahun mempelajari semua kemampuan modul dan bereksperimen dengannya.
Mari kita serahkan ini kepada para profesional (atau mereka yang menganggap diri mereka seperti itu) dan fokus pada sisi praktis dari masalah, dapat dipahami dan dapat diakses oleh manusia biasa.
Harga masalah
Mari kita mulai dengan harganya. Saat ini, modul ESP32 di toko online Cina berharga 350 rubel dan 500 dalam versi papan dengan pengikat dan antarmuka USB. Ini bertentangan dengan 100 dan 160 rubel untuk modul ESP8266, masing-masing. Seperti yang Anda lihat, perbedaannya lebih dari tiga kali, meskipun nilai absolutnya kecil, masing-masing, jika diinginkan, mampu menghabiskan 350 - 500 rubel pada mikrokontroler. Sebagai perbandingan, Arduino Mega 2560 di Cina yang sama harganya 600 rubel, dan di Rusia sekitar 1000 (ditambah biaya Ethernet Shield).
Tetap hanya untuk mengetahui apakah layak membayar tiga kali lebih banyak daripada ESP8266 dan apa yang akan kita dapatkan untuk itu. (Ke depan, saya akan mengatakan bahwa, menurut pendapat saya, itu sangat berharga.)
Dukungan dalam Arduino IDE
Untuk melakukan sesuatu dengan modul, Anda harus terlebih dahulu mendapat dukungannya di Arduino IDE. Saat ini, dukungan untuk ESP32 di Arduino IDE adalah pada tahap awal, tetapi cukup layak dan dapat diterapkan. Mereka yang takut menghadapi kesulitan yang tidak dapat diatasi di sini tidak dapat khawatir - fungsi utama berfungsi dengan baik dan Anda kemungkinan besar tidak akan melihat adanya perbedaan dibandingkan dengan bekerja pada pengontrol lain.
Hal-hal sedikit lebih buruk dengan driver perangkat, tetapi ini tentu saja merupakan fenomena sementara. Modul ini sangat populer sehingga dukungan untuk periferal apa pun pasti akan muncul dalam waktu dekat.
Menambahkan Dukungan ESP32 ke Arduino IDE
Sekarang beberapa informasi praktis tentang menginstal dukungan ESP32 di Arduino IDE. Internet penuh dengan instruksi tentang hal ini, Anda juga dapat menemukannya dengan berlimpah di dalamnya. Saya hanya mencatat bahwa semua instruksi dibagi menjadi "lama", di mana Python disebutkan dan "baru", di mana GIT disebutkan. Secara alami, Anda perlu dipandu oleh yang baru.
Dari sekian banyak instruksi, yang terbaik bisa disebut (anehnya) instruksi resmi dari pabrikan modul.
github.com/espressif/arduino-esp32Yang saya sarankan menggunakan. Satu-satunya peringatan: GIT adalah opsional, Anda cukup mengunduh paket distribusi dan unzip ke direktori yang diinginkan.
Catatan Semua yang berikut ini berlaku untuk instalasi di Windows 7 64-bit, karena saya melakukan semua percobaan di dalamnya, di sistem operasi lain jalur mungkin berbeda dari yang ditunjukkan.File distribusi harus ada di folder
C:\Users\User\Documents\Arduino\hardware\espressif\esp32
di mana C: adalah nama drive Windows Anda, dan Pengguna adalah nama pengguna dalam sistem operasi (keduanya mungkin berbeda dari yang ditentukan).
Poin Instalasi yang Tidak Jelas untuk ESP32
Banyak pengguna mengeluh bahwa tidak ada yang berfungsi untuk mereka dan dukungan ESP32 di IDE Arduino tidak muncul. Ini masalahnya: karena driver ESP32 hanya sedang dikembangkan, urutan lokasi direktori sistem telah sedikit berubah. Folder untuk lokasi sketsa dalam pengaturan Arduino IDE harus ditentukan folder
C:\Users\User\Documents\Arduino
(dengan perubahan yang sama pada drive dan nama pengguna), dan file distribusi harus berada di dalam folder ini seperti yang direkomendasikan oleh pabrikan. Jika titik ini tidak diperhitungkan, maka dukungan untuk ESP32 di IDE Arduino tidak akan muncul dan tidak ada yang berfungsi.
Versi Arduino IDE
Anda sering mendengar bahwa dukungan ESP32 hanya tersedia di versi terbaru Arduino IDE, itu tidak begitu - ESP32 berfungsi dengan baik di versi sebelumnya, misalnya, distribusi Arduino Mega Server untuk ESP32 dikembangkan di versi 1.6.5 r2.
Manfaat ESP32
Sekarang mari kita bicara tentang kelebihan ESP32 dibandingkan pendahulunya, ESP8266. Saya tidak akan memikirkan hal-hal yang jelas seperti kekuatan prosesor dan RAM, saya hanya bisa mengatakan bahwa Anda harus berusaha keras untuk memuat ESP32 sepenuhnya pada tugas-tugas DIY dan otomatisasi rumah.
Pin
Tumit Achilles dari pendahulunya, modul ESP8266, adalah (dan) adalah sejumlah kecil kesimpulan. Setelah bekerja dengan pengontrol seperti Arduino Mega dan Arduino Karena dengan puluhan pin digital dan analognya, bekerja dengan ESP8266 membingungkan: jumlah GPIO secara harfiah satu dan ini sangat membatasi penggunaan modul ini dalam proyek nyata.

ESP32, jika tidak sepenuhnya, sebagian besar tanpa kekurangan ini. Jumlah pin yang tersedia telah meningkat secara signifikan, dan banyak input analog juga muncul. 13 kesimpulan dapat disebut sepenuhnya gratis dan dapat diakses untuk digunakan.
GPIO 2, 4, 12, 14, 13, 15, 16, 17, 25, 25, 27, 32, 33
Jika perlu, mereka dapat ditambahkan dengan fungsi terbatas dan hanya bekerja pada input
GPIO 34, 35, 36, 39
Jika Anda mengorbankan beberapa fitur dan tidak menggunakan Serial, SPI atau I2C dalam proyek tertentu, maka Anda dapat menambahkan 8 pin lebih banyak ke nomor ini
GPIO 1, 3, 5, 18, 19, 21, 22, 23
Nah, dimungkinkan untuk menggunakan 6 pin lebih yang dirancang untuk bekerja dengan memori flash internal (misalnya, jika Anda menghubungkan kartu SD eksternal)
GPIO 6, 7, 8, 9, 10, 11
Seperti yang Anda lihat, tidak ada perbandingan dengan ESP8266 - modul baru terlihat baik dalam jumlah koneksi yang mungkin dan sangat berharga dalam proyek nyata di mana setiap pin mahal.
Kecepatan kerja
Saya sudah menyebutkan prosesor yang kuat, sekarang beberapa kata perlu dikatakan tentang kecepatan operasi jaringan. Saya merasa sulit untuk mengatakan apa yang terhubung dengan ini, mungkin dengan prosesor yang kuat, mungkin dengan optimalisasi tumpukan jaringan, tetapi modul ESP32 di bawah kendali Arduino Mega Server menunjukkan kinerja jaringan rekaman.

Memuat halaman dengan kode CSS dan JavaScript yang banyak dan banyak grafik hanya membutuhkan satu detik - lebih cepat daripada pengontrol yang diuji lainnya, termasuk pengontrol kabel dengan antarmuka Ethernet W5100 dan W5500.
Sehubungan dengan Arduino Mega Server, ini menghapus semua batasan pada penggunaan grafik dan semua pustaka JavaScript, baik dalam ukuran maupun jumlahnya.
Keuntungan lainnya
ESP32 adalah perangkat berteknologi sangat tinggi, hanya daftar kering dari fitur yang tersedia dapat mengambil lebih dari satu halaman, dan daftar keuntungan dan fitur dengan komentar akan mengambil volume keseluruhan. Oleh karena itu, saya akan membatasi diri untuk ini, agar tidak mengacaukan artikel dan memberikan beberapa contoh bekerja dengan kode ESP32 di lingkungan Arduino.
Contoh Kode
Memori tidak mudah menguap
Inilah yang kami sebut EEPROM untuk Arduino Mega. ESP32 tidak memiliki memori ini, tetapi modul ini memiliki analog dan pustaka yang sesuai untuk bekerja dengannya. Memori ini disebut "NVS" (Non-volatile storage).
Tetapi bagi kami tidak ada perbedaan - Anda dapat menyimpan nilai-nilai dengan cara yang sama dan membacanya setelah mematikan lalu menyalakan controller.
Contoh penggunaan. Kami menghubungkan perpustakaan:
#include <Preferences.h>
Buat objek prefs
Preferences prefs;
Kami menginisialisasi repositori dengan pengidentifikasi, misalnya, "nvs":
prefs.begin("nvs", false);
false mengacu pada pilihan mode baca / tulis, dalam hal ini, keduanya membaca dan menulis. Kami menyimpan byte dengan nama "addr":
prefs.putUChar("addr", 65);
Kami membaca byte yang disimpan:
byte b = prefs.getUChar("addr", 0);
Dengan cara yang sama, Anda dapat menyimpan dan membaca nilai dari tipe data lainnya. Sekarang hapus penyimpanannya.
prefs.remove("nvs");
Jika Anda melihatnya, itu bahkan lebih mudah daripada bekerja dengan memori EEPROM non-volatile standar pada pengontrol Arduino.
AnalogWrite ()
Inovasi lain yang dapat membingungkan pengguna pemula adalah bahwa fungsi AnalogWrite () yang familier tidak ada di ESP32. Pada awalnya, ini sangat tidak biasa, tetapi pada kenyataannya, fungsi ini hanya digantikan oleh rekan yang lebih fungsional.
Pertimbangkan sebuah contoh. Mari kita mulai dengan menghubungkan pustaka yang sesuai, meskipun ini tidak dapat disebut pustaka dalam arti kata yang lengkap, melainkan merupakan file khusus dengan deskripsi fungsi yang diperlukan. Faktanya adalah bahwa tidak semua fungsi hadir secara langsung di Arduino IDE, beberapa fungsi tersedia dalam file yang terletak di direktori
...\Documents\Arduino\hardware\espressif\esp32\cores\esp32
Dalam hal ini, kami tertarik pada file untuk bekerja dengan PWM dan LED, yang kami sambungkan dengan instruksi berikut:
#include "esp32-hal-ledc.h"
Selanjutnya, kita perlu mengatur nomor saluran (0), frekuensi PWM (misalnya, 50 Hz) dan resolusi (8 bit).
ledcSetup(0, 50, 8);
Nomor saluran dapat diatur dalam rentang dari 0 hingga 15, dan resolusi dari 1 hingga 16 bit. Jika Anda memilih resolusi 8 bit, rentang data yang mengontrol PWM akan berada dalam kisaran 0 hingga 255.
Selanjutnya, kita perlu mengikat saluran kita (0) ke beberapa pin GPIO, dalam hal ini, pin 22:
ledcAttachPin(22, 0);
Dan Anda jangan lupa untuk mengkonfigurasi pin ke-22 ke output dengan cara biasa.
pinMode(22, OUTPUT);
Itu saja, sekarang kita dapat mengontrol, misalnya, kecerahan LED, hanya menunjukkan nomor saluran dan nilai PWM (kecerahan) dari rentang 0 hingga 255.
ledcWrite(0, 50);
Contoh Kode ESP32 lainnya
Distribusi Arduino Mega Server, tautan yang akan saya berikan di akhir artikel, kecuali untuk sistem yang berfungsi penuh, adalah kumpulan luas kode terstruktur yang telah diuji dan diverifikasi untuk bekerja pada modul ESP32. Anda dapat menggunakannya sebagai tutorial untuk memasukkan topik pemrograman di bawah ESP32.
Stabilitas kerja
Arduino Mega Server untuk ESP8266 telah mengkonfirmasi waktu operasional beberapa bulan dan menunjukkan operasi yang benar-benar stabil dan saya tidak punya alasan untuk berpikir bahwa modul ESP32 mungkin memiliki masalah stabilitas. Setidaknya untuk seluruh waktu saya membuat distribusi AMS untuk ESP32, saya tidak melihat satu kegagalan atau reboot modul yang tidak sah. Semuanya bekerja dengan sangat jelas dan dapat diprediksi.
Arduino Mega Server untuk ESP32
Ini adalah perwakilan lain dari ekosistem AMS, yang mencakup pengontrol dan papan Arduino Mega, Due, 101, M0, AMS Home, ESP8266, Sonoff, ESP32, OLIMEX ESP32-EVB, dll. Berkat prosesor yang kuat dan operasi jaringan yang cepat dari modul ESP32, antarmuka Arduino Mega Server mengandung banyak grafik dan skrip dan ini tidak mempengaruhi kecepatannya sama sekali - halaman dimuat hampir secara instan.

Semuanya bekerja dengan stabil dan dapat diprediksi, tidak ada kegagalan atau perilaku yang tidak memadai dari sistem atau modul yang terdeteksi. Di bawah ini adalah log unduhan AMS, dari mana Anda dapat mengetahui beberapa detail tentang sistem.

Suhu modul, diukur dengan sensor suhu bawaan, berkisar dari 50 derajat Celcius saat startup hingga 55 derajat selama operasi. Selama operasi, konsumsi modul saat ini adalah sekitar 130 mA.
Prospek
Anda tidak perlu menjadi ahli khusus untuk memprediksi bahwa sekarang, seperti jamur setelah hujan, papan pada ESP32 dari berbagai format dan dengan berbagai fungsi akan mulai muncul. Berikut adalah salah satu tanda pertama OLIMEX
ESP32-EVB , papan yang sangat menarik yang dalam waktu dekat kit distribusi khusus Arduino Mega Server akan dirilis.

Kesimpulan
Sebenarnya, itulah yang bisa saya katakan tentang modul ESP32 baru dan kerjanya dengan Arduino. Dia meninggalkan kesan yang sangat positif, setidaknya itu sangat menyenangkan dan menarik bagi saya untuk bekerja dengannya. Kurangnya perpustakaan untuk mendukung sensor dan periferal merusak gambar sedikit, tetapi ini adalah fenomena sementara dan segera semuanya akan beres dengan ini.
Anda dapat mengunduh kit distribusi Arduino Mega Server untuk ESP32 di halaman
unduhan situs web resmi, segera dokumentasi yang relevan akan muncul di sana, dan untuk sekarang Anda dapat menggunakan instruksi singkat dari file readme.txt yang terdapat dalam kit distribusi.