ESP8266 - Sensor Ultrassônico - OLED

Este tutorial ensina como obter a distância de um sensor ultrassônico e exibi-la em um OLED.

Hardware Necessário

1×ESP8266 NodeMCU ESP-12F
1×Alternatively, ESP8266 D1 Mini NodeMCU ESP-12F
1×Alternatively, ESP8266 NodeMCU ESP-12E (Uno-form)
1×Micro USB Cable
1×Alternatively, ESP8266 NodeMCU ESP-12F (SMD-form)
1×Cabo USB Tipo-A para Tipo-C (para PC com USB-A)
1×Cabo USB Tipo-C para Tipo-C (para PC com USB-C)
1×Display OLED I2C SSD1306 128x64
1×Display OLED I2C SSD1306 128x32
1×Sensor Ultrassônico
1×Protoboard
1×Fios Jumper
1×(Recomendado) Placa de Expansão com Bornes de Parafuso para ESP8266

Or you can buy the following kits:

1×DIYables Sensor Kit (18 sensors/displays)
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.

Buy Note: If you want a bigger OLED display, use the 2.42 inch OLED Display 128x64 .

Sobre o OLED e o Sensor Ultrassônico

Se você não está familiarizado com o OLED e o Sensor Ultrassônico (incluindo pinagem, funcionamento, programação etc.), os tutoriais a seguir podem ajudar:

Diagrama de Ligação

  • Se você alimentar o ESP8266 pela porta USB:
The wiring diagram between ESP8266 NodeMCU and Ultrasonic Sensor OLED

This image is created using Fritzing. Click to enlarge image

Para mais informações, veja Pinagem do ESP8266 e como alimentar o ESP8266 e outros componentes.

  • Se você alimentar o ESP8266 pela porta USB, mas a energia não for suficiente, use uma fonte de alimentação externa para o display OLED e o sensor
The wiring diagram between ESP8266 NodeMCU and Ultrasonic Sensor OLED external power

This image is created using Fritzing. Click to enlarge image

  • Se você alimentar o ESP8266 pelo pino Vin:
The wiring diagram between ESP8266 NodeMCU and Ultrasonic Sensor OLED Vin pin

This image is created using Fritzing. Click to enlarge image

Código ESP8266 - Sensor Ultrassônico - OLED

/* * Este código de ESP8266 NodeMCU foi desenvolvido por pt.newbiely.com * Este código de ESP8266 NodeMCU é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.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(); }

Passos Rápidos

Para começar com o ESP8266 no Arduino IDE, siga estes passos:

  • Confira o tutorial como configurar o ambiente para o ESP8266 no Arduino IDE se esta for a sua primeira vez usando o ESP8266.
  • Ligue os componentes como mostrado no diagrama.
  • Conecte a placa ESP8266 ao seu computador usando um cabo USB.
  • Abra o Arduino IDE no seu computador.
  • Escolha a placa ESP8266 correta, como (por exemplo, NodeMCU 1.0 (ESP-12E Module)), e a respectiva porta COM.
  • Clique no ícone Libraries na barra à esquerda do Arduino IDE.
  • Pesquise por “SSD1306” e localize a biblioteca SSD1306 da Adafruit.
  • Em seguida, pressione o botão Install para instalar a biblioteca.
ESP8266 NodeMCU OLED library
  • Você será solicitado a instalar dependências adicionais da biblioteca.
  • Para instalar todas elas, clique no botão Install All.
ESP8266 NodeMCU Adafruit GFX sensor library
  • Copie o código e abra-o no Arduino IDE.
  • Clique no botão Upload no IDE para transferir o código para o ESP8266.
  • Mova a mão na frente do sensor.
  • Confira o resultado no display OLED e no Serial Monitor.

※ Nota:

O código abaixo permite a centralização horizontal e vertical automática do texto em um display OLED. Para saber mais, consulte Como centralizar vertical/horizontalmente no OLED.

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!