WEMOS D1 Esp-Wroom-02 dan Arduino IDE
|
“WEMOS D1 Esp-Wroom-02” yang saya dapatkan dari VNG Systems adalah papan pengembangan mikrokontroler lain dengan chip WiFi ESP8266. Papan ini juga memiliki layar OLED, sirkuit pengisian baterai 18650, dan tombol arah bawaan. Ini menjadikan board pilihan yang sangat baik untuk aplikasi seluler. Dan seperti semua papan berbasis ESP8266 lainnya, yang satu ini dapat diprogram dengan IDE Arduino familar.


Fitur WEMOS D1 Esp-Wroom-02
Pertama, mari kita perhatikan papan itu sendiri. Papan sirkuit hitam dilengkapi dengan header 10 pin yang dapat Anda solder, jika perlu. Bagian belakang papan memiliki tempat baterai yang mendukung baterai 18650 atas datar. Karakteristik lain dari dewan adalah:
- Ukuran papan: 102x30x20mm
- Rentang Input Tegangan: 5V-12V
- Koneksi micro USB
- Mengisi Sekarang: 500 mA
- Sirkuit perlindungan pengisian berlebih dan pengisian berlebih baterai
Saya menemukan bahwa informasi tentang papan yang diterbitkan secara online biasanya tidak benar. Misalnya, nama papan tersebut menyiratkan bahwa papan tersebut dilengkapi dengan chip WiFi ESP-WROOM-02. Sebagai gantinya, ia memiliki modul ESP-12E/F. Juga, sebagian besar situs menyebutkan perpustakaan OLED yang salah dan pinouts GPIO. Jadi di bawah ini saya akan menulis tentang temuan dan pengalaman saya sendiri.
Wemos D1 Esp-Wroom-02 Masukan dan keluaran
Di papan tulis ada input dan output berikut yang tersedia:
- 1 input analog AD (A0)
- 5 Input / output digital dengan interupsi / PWM / I2C / dukungan satu kawat D3 (GPIO0), D4 (GPIO2), D8 (GPIO15), D9 (GPIO3), D10 (GPIO1)
LED bawaan
Deskripsi menyatakan bahwa papan memiliki satu LED yang dapat diprogram, pada pin D0. Tetapi saya menemukan bahwa papan memiliki 2 LED yang dapat diprogram. Salah satunya adalah LED biru pada modul ESP8266, yang lainnya adalah led hijau tambahan di papan breakout.
- LED biru yang dapat diprogram pada GPIO2 (LED_BUILTIN)
- LED hijau yang dapat diprogram pada GPIO16
Layar OLED
Layar OLED bawaan memiliki spesifikasi sebagai berikut:
- Pengendali: SSD1306
- Resolusi: 128 x 64 piksel, ukuran: 0,96 Inch, Warna: Putih
- I2C (GPIO5: SDA; GPIO4: SCL)
- Alamat: 0x3C
Ini dapat digunakan dengan perpustakaan ThingPulse ESP8266 OLED SSD1306.
Tombol arah
Papan memiliki tombol arah bawaan yang mendukung 5 fungsi:
Atas (GPIO13), Bawah (GPIO12)
Kiri (RESET), Kanan (GPIO0)
Push (GPIO14)
Sayangnya, kontak tombol arah kiri bawaan ke pin RESET dari ESP8266, jadi ini tidak dapat diubah tanpa memodifikasi papan.
Ringkasan GPIO
Meringkas, saya menemukan GPIO ESP ditransfer sebagai berikut:
GPIO | Function |
0 | D3 / Button right |
1 | D10 |
2 | D4 / LED blue (LED_BUILTIN) |
3 | D9 |
4 | OLED SCL |
5 | OLED SDA |
12 | Button down |
13 | Button up |
14 | Button push |
15 | D8 |
16 | LED green |
A0 | AD (ADC) |
Tempat baterai 18650
Dudukan baterai mendukung sel 18650 rata atas tunggal. Sirkuit pengisian daya akan melindungi baterai Anda dari pengisian berlebih dan juga pengisian berlebih. Peringatan: sirkuit tidak memiliki perlindungan polaritas terbalik. Jadi berhati-hatilah untuk memasukkan baterai dengan cara yang benar. Jika Anda memasukkannya terbalik, maka papan Anda akan rusak. Polaritas ditunjukkan dengan tanda + dan – dicetak di papan tulis. Sirkuit pengisian daya memiliki dua indikator LED: LED hijau menunjukkan pengisian daya, LED merah (“standby”) menyala bila ada daya tetapi baterai tidak mengisi. Saat Anda mengunggah sketsa ke ESP-Wroom-02, Anda harus menghapus battry terlebih dahulu, dan mengatur sakelar daya ke posisi “ON”.
Menggunakan WEMOS Esp-Wroom-02 dengan Arduino IDE
Pertama, Anda harus menginstal IDE Arduino di komputer Anda. Untuk pengguna Windows 10, lihat posting blog “Arduino IDE: Menginstal di Windows 10” tentang cara melakukan itu. Pengguna Linux harus melihat posting blog “Arduino IDE: Instal atau tingkatkan di Linux“.
Kedua, Anda perlu menginstal “Arduino core for ESP8266 WiFi chip” di IDE Arduino Anda. Lihat bagian “Installing the ESP8266 Arduino core” di posting blog “ESP8266 NodeMcu and Arduino IDE on Linux“. Prosedur ini sama untuk Windows dan Linux.
Ketiga, pilih papan berbasis ESP8266 yang sesuai di de Arduino IDE. Bagi saya, pilihan “WeMos D1 R1” bekerja dengan baik. Lihat gambar di bawah untuk pengaturan yang saya gunakan.


Keempat, Anda perlu menginstal perpustakaan OLED. Anda dapat mengunduh perpustakaan ThingPulse ESP8266 OLED SSD1306 langsung dari GitHub atau menginstalnya menggunakan manajer perpustakaan IDE Arduino. Lihat gambar di bawah.


Terakhir, Anda harus menginstal Perpustakaan Brzo I2C Library (https://github.com/pasko-zh/brzo_i2c) dengan cara yang sama: buka Sketsa > Gunakan Perpustakaan > Kelola Perpustakaan> Cari “Brzo I2C” dan pilih “instal” .
Sekarang, Anda dapat menguji papan Esp-Wroom-02 Anda dengan sketsa demo di bawah ini. Saat tombol ditekan, layar OLED akan menunjukkan arah tombol. Ini juga menampilkan nilai input analog, Ini akan berubah ketika Anda menyentuhnya dengan jari Anda.
/** GPIO 0 - Button right / D3 GPIO 1 - D10 GPIO 2 - LED blue (LED_BUILTIN) / D4 GPIO 3 - D9 GPIO 4 - OLED SCL GPIO 5 - OLED SDA GPIO 12 - Button down GPIO 13 - Button up GPIO 14 - Button push GPIO 15 - D8 GPIO 16 - LED green GPIO A0 - ADC **/ #include "SSD1306Brzo.h" // Include OLED Library SSD1306Brzo display(0x3c, 5, 4); // Initialize OLED display int blueLed = LED_BUILTIN; // Blue LED is on GPIO 2 (LED_BUILTIN) int greenLed = 16; // Green LED is on GPIO 16 int analogPin = A0; // Analog input is A0 int analogValue = 0; volatile byte state = LOW; String button = "Waiting..."; void setup() { display.init(); // Initialise the display pinMode(blueLed, OUTPUT); // Initialize digital pin LED_BUILTIN as an output. pinMode(greenLed, OUTPUT); // initialize digital pin 16 as an output. pinMode(0, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(0), interrupt0, HIGH); // Right pinMode(12, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(12), interrupt12, HIGH); // Down pinMode(13, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(13), interrupt13, HIGH); // Up pinMode(14, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(14), interrupt14, HIGH); // Push } void drawText() { // Fuction to draw the text display.setTextAlignment(TEXT_ALIGN_LEFT); display.setFont(ArialMT_Plain_16); display.drawString(0, 0, "Button:"); display.setFont(ArialMT_Plain_24); display.drawString(0, 16, button); // Print button press display.setFont(ArialMT_Plain_16); analogValue = analogRead(analogPin); display.drawString(0, 48, "ADC: " + String(analogValue)); // Print value of analog input } void interrupt0() // Right { button = "Right"; blink(); } void interrupt12() // Down { button = "Down"; blink(); } void interrupt13() // Up { button = "Up"; blink(); } void interrupt14() // Push { button = "Push"; blink(); } void blink() { state = !state; // Reverse LED state } void loop() { display.clear(); // Clear OLED display drawText(); // Draw the text display.display(); // Write the buffer to the display digitalWrite(blueLed, state); // Turn the blue LED on/off digitalWrite(greenLed, !state); // Turn the green LED on/off }