ESP8266 - Sensor ultrasónico - OLED

Este tutorial te enseña cómo obtener la distancia de un sensor ultrasónico y mostrarla en una pantalla OLED.

Hardware Requerido

1×ESP8266 NodeMCU
1×Cable USB Tipo-A a Tipo-C (para PC USB-A)
1×Cable USB Tipo-C a Tipo-C (para PC USB-C)
1×Pantalla OLED I2C SSD1306 128x64
1×Pantalla OLED I2C SSD1306 128x32
1×Sensor Ultrasoníco
1×Protoboard
1×Cables Puente
1×(Recomendado) Placa de Expansión de Terminales de Tornillo para ESP8266
1×(Recomendado) Divisor de Alimentación para ESP8266 Tipo-C

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.

Acerca de OLED y el sensor ultrasónico

Si no estás familiarizado con OLED y con el sensor ultrasónico (incluido el pinout, funcionamiento, programación, etc.), los siguientes tutoriales pueden ayudarte:

Diagrama de Cableado

  • Si alimenta el ESP8266 a través del puerto USB:
Diagrama de cableado OLED para sensor ultrasónico ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Para obtener m\u00e1s informaci\u00f3n, consulte Pines del ESP8266 y c\u00f3mo alimentar ESP8266 y otros componentes.

  • Si alimentas el ESP8266 a través del puerto USB, pero la energía no es suficiente, utiliza una fuente de alimentación externa para la pantalla OLED y el sensor
Diagrama de cableado de alimentación externa para sensor ultrasónico OLED ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

  • Si alimenta ESP8266 a través del pin Vin:
Diagrama de cableado del pin Vin del ESP8266 NodeMCU Sensor ultrasónico OLED

This image is created using Fritzing. Click to enlarge image

Código ESP8266 - Sensor ultrasónico - OLED

/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-ultrasonic-sensor-oled */ #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define OLED_WIDTH 128 // OLED display width, in pixels #define OLED_HEIGHT 64 // OLED display height, in pixels #define TRIG_PIN D5 // The ESP8266 pin connected to Ultrasonic Sensor's TRIG pin #define ECHO_PIN D6 // The ESP8266 pin connected to Ultrasonic Sensor's ECHO pin Adafruit_SSD1306 oled(OLED_WIDTH, OLED_HEIGHT, &Wire, -1); // create SSD1306 display object connected to I2C String distance_str; void setup() { Serial.begin(9600); // initialize OLED display with address 0x3C for 128x64 if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("SSD1306 allocation failed")); while (true); } delay(2000); // wait for initializing oled.clearDisplay(); // clear display oled.setTextSize(2); // text size oled.setTextColor(WHITE); // text color oled.setCursor(0, 10); // position to display distance_str.reserve(10); // to avoid fragmenting memory when using String } void loop() { // Produce a 10-microsecond pulse to the TRIG pin. digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); // Measure the pulse duration from the ECHO pin long duration_us = pulseIn(ECHO_PIN, HIGH); // calculate the distance float distance_cm = 0.017 * duration_us; // print the value to Serial Monitor Serial.print("distance: "); Serial.print(distance_cm); Serial.println(" cm"); distance_str = String(distance_cm, 2); // two decimal places distance_str += " cm"; Serial.println(distance_str); // print the temperature in Celsius to Serial Monitor oled_display_center(distance_str); // display temperature on OLED } void oled_display_center(String text) { int16_t x1; int16_t y1; uint16_t width; uint16_t height; oled.getTextBounds(text, 0, 0, &x1, &y1, &width, &height); // center the display both horizontally and vertically oled.clearDisplay(); // clear display oled.setCursor((OLED_WIDTH - width) / 2, (OLED_HEIGHT - height) / 2); oled.println(text); // text to display oled.display(); }

Pasos R\u00e1pidos

Para empezar con ESP8266 en Arduino IDE, siga estos pasos:

  • Consulta el tutorial cómo configurar el entorno para ESP8266 en Arduino IDE si es la primera vez que usas ESP8266.
  • Conecta los componentes tal como se muestran en el diagrama.
  • Conecta la placa ESP8266 a tu computadora usando un cable USB.
  • Abre Arduino IDE en tu computadora.
  • Elige la placa ESP8266 correcta, como (p. ej. NodeMCU 1.0 (Módulo ESP-12E)), y su puerto COM respectivo.
  • Haz clic en el icono Bibliotecas en la barra izquierda del Arduino IDE.
  • Busca “SSD1306” y localiza la librería SSD1306 de Adafruit.
  • Luego, pulsa el botón Instalar para instalar la librería.
Librería OLED para ESP8266 NodeMCU
  • Se le pedirá que instale dependencias de bibliotecas adicionales.
  • Para instalarlas todas, haga clic en el botón Instalar todo.
Librería de sensores ESP8266 NodeMCU Adafruit GFX
  • Copia el código y ábrelo en el IDE de Arduino.
  • Haz clic en el botón Subir en el IDE para transferir el código al ESP8266.
  • Mueve tu mano frente al sensor.
  • Consulta el resultado en la pantalla OLED y en el Monitor Serial.

※ Nota:

El código a continuación permitirá el centrado automático horizontal y vertical del texto en una pantalla OLED. Para obtener más información, consulte Cómo centrar vertical y horizontalmente en OLED.

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!