English Click this button for the international website

WEMOS D1 Esp-Wroom-02 met Arduino IDE

De “WEMOS D1 Esp-Wroom-02” van VNG Systems is een microcontroller-ontwikkelbord gebaseerd op de ESP8266 WiFi chip. Dit bord heeft daarnaast ook een OLED scherm, laadcircuit voor een 18650 batterij en een joystick ingebouwd. Dit maakt het bord een goede keuze voor mobiele applicaties. En zoals alle andere borden gebaseerd op de ESP8266 kan deze eenvoudig geprogrammeerd worden met de vertrouwde Arduino IDE.

Wemos D1 ESP-Wroom-02 and Arduino IDE: VNG systems unboxing
Wemos D1 ESP-Wroom-02 met Arduino IDE: VNG systems unboxing

WEMOS D1 Esp-Wroom-02 eigenschappen

Laten we eerst het bord zelf eens nader bekijken. Het zwarte ontwikkelbord komt met een 10 pin header die je er op kunt solderen, indien nodig. De achterkant van het bord heeft een batterijhouden voor een 18650 batterij met platte kop. Andere eigenschappen van het bord zijn:

  • Afmetingen: 102x30x20mm
  • Voltage input range: 5V-12V
  • Micro USB aansluiting
  • Laadstroom: 500 mA
  • Batterrij laad- en beschermingscircuit

Ik kwam er achter dat de informatie die je over dit bord op internet kunt vinden meestal onjuist is. Bijvoorbeeld de naam impliceert dat het bord uitgerust is met de ESP-WROOM-02 WiFi chip. In plaats daarvan heeft het een ESP-12E/F module. Bovendien vermelden de meeste websites de verkeerde OLED-libraries en GPIO pinouts. Dus in dit artikel zal ik mijn eigen ervaringen en bevindingen beschrijven.

ESP-Wroom-02 ESP8266+0,96inch OLED+18650 Batterijhouder
Getest en aanbevolen door OneGuyOneBlog.com:

ESP-Wroom-02 ESP8266+0,96inch OLED+18650 Batterijhouder
VNGsystems.nl

Inputs en outputs

Op het bord zijn de volgende inputs en outputs beschikbaar:

  • 1 Analoge input AD (A0)
  • 5 Digitale inputs/outputs met interrupt/PWM/I2C/one-wire ondersteuning: D3 (GPIO0), D4 (GPIO2), D8 (GPIO15), D9 (GPIO3), D10 (GPIO1)

Ingebouwde LEDs

De beschrijving stelt dat het bord één programmeerbare LED heeft, op pin D0. Echter kwam ik op het bord twee programmeerbare LEDs tegen. Eén is de blauwe LED op de ESP8266 module, de andere is een additionele groene LED op het ontwikkelbord zelf.

  • Programmeerbare blauwe LED op GPIO2 (LED_BUILTIN)
  • Programmeerbare groene LED op GPIO16

OLED scherm

Het ingebouwde OLED-scherm heeft de volgende specificaties:

  • Controller: SSD1306
  • Resolutie: 128 x 64 pixels, grootte: 0.96 Inch, kleur: wit
  • I2C (GPIO5: SDA; GPIO4: SCL)
  • Adres: 0x3C

Het wordt ondersteund door de ThingPulse ESP8266 OLED SSD1306 library.

Joystick

Het bord heeft een joystick-achtige knop die de volgende 5 functies heeft::

  • Omhoog (GPIO13), omlaag (GPIO12)
  • Links (RESET) , rechts (GPIO0)
  • Ingedrukt (GPIO14)

Helaas is het contact voor de richting naar links van de knop hardwarematig met de RESET pin van de ESP8266 verbonden, dus dit kan niet veranderd worden zonder wijzigingen aan het bord zelf aan te brengen.

GPIO samenvatting

Samenvattend, nader onderzoek wees uit dat de GPIOs van de ESP als volgt in gebruik zijn:

GPIO Functie
0 D3 / Knop rechts
1 D10
2 D4 / Blauwe LED (LED_BUILTIN)
3 D9
4 OLED SCL
5 OLED SDA
12 Knop omlaag
13 Knop omhoog
14 Knop ingedrukt
15 D8
16 Groene LED
A0 AD (ADC)

18650 Batterijhouder

De batterijhouder ondersteund een enkele 18650 batterij met platte kop. Het laad- en beschermingscircuit beschermt de batterij tegen over-laden en over-ontladen. Let op: het circuit beschermt niet tegen onjuiste polariteit. Zorg er dus voor dat je de batterij er niet in de verkeerde richting in de houder stopt, want dan zal het bord beschadigen. De plus en min zijn op het bord aangegeven met een wit-gedrukte + en -. Het laadcircuit heeft twee LEDs om de status weer te geven. De groene LED geeft het laden van de batterij aan en de rode LED (“standby”) gaat branden als er wel spanning is maar de batterij niet opgeladen wordt. Wanneer je een sketch naar de ESP-Wroom-02 wilt gaan uploaden, dat moet je eerst de batterij verwijderen en de aan/uit-schakelaar op “ON” zetten.

De Esp-Wroom-02 gebruiken met de Arduino IDE

Ten eerste moet je natuurlijk de Arduino IDE op je computer geïnstalleerd hebben. Gebruikers van Windows 10 kunnen het artikel “De Arduino IDE installeren op Windows 10” lezen om te lezen hoe dat te doen. Linux-gebruikers kunnen het artikel “Installeer of upgrade nieuwste Arduino IDE op Linux” raadplegen.

Ten tweede moet de “Arduino core for ESP8266 WiFi chip” geïnstalleerd zijn in de Arduino IDE. Zie het hoofdstuk “De ESP8266  Arduino core installeren” in het artikel “ESP8266 NodeMcu met Arduino IDE op Linux“. De procedure is voor Linux en Windows hetzelfde.

Ten derde moet je een geschikt ESP8266-gebaseerd bord selecteren in de Arduino IDE. Voor mij werkte de optie “WeMos D1 R1” prima. Zie onderstaande afbeelding voor de instellingen.

Wemos D1 ESP-Wroom-02 and Arduino IDE: Board settings
Wemos D1 ESP-Wroom-02 en Arduino IDE: Board instellingen

Ten vierde moet je een library installeren om het OLED-scherm aan te kunnen sturen. Je kunt de ThingPulse ESP8266 OLED SSD1306 library direct downloaden van GitHub of via de bibliotheekbeheerder van de Arduino IDE installeren. Zie onderstaande afbeelding.

Wemos D1 ESP-Wroom-02 and Arduino IDE: OLED library
Wemos D1 ESP-Wroom-02 en Arduino IDE: OLED library

Als laatste moet je op dezelfde manier de Brzo I2C Library (https://github.com/pasko-zh/brzo_i2c) installeren: ga naar Schets > Bibliotheek gebruiken > Bibliotheken beheren > Zoeken naar “Brzo I2C” en kies “installeren”.

Uiteindelijk kun je je Esp-Wroom-02 bord testen met de onderstaande demo-sketch. Het OLED-scherm geeft de status van de joysick aan. De LEDs worden aan- of uitgeschakeld als de knop ingedrukt wordt. Het display geeft ook de status van de analoge input aan, de waarde zal veranderen als je die met je vinger aanraakt.

/**

     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
}

VNG Systems

ESP-Wroom-02 ESP8266+0,96inch OLED+18650 Batterijhouder
Getest en aanbevolen door OneGuyOneBlog.com:

ESP-Wroom-02 ESP8266+0,96inch OLED+18650 Batterijhouder
VNGsystems.nl

Voeg een reactie toe

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *