Arduino - Sensor de Temperatura - OLED

Neste tutorial, vamos aprender como programar o Arduino para ler a temperatura do sensor one wire DS18B20 e exibi-la em um OLED.

Hardware Necessário

1×Arduino Uno R3
1×Cabo USB 2.0 tipo A/B (para PC com USB-A)
1×Cabo USB 2.0 tipo C/B (para PC com USB-C)
1×Display OLED I2C SSD1306 128x64
1×Display OLED I2C SSD1306 128x32
1×Sensor de Temperatura DS18B20 (con Adaptador)
1×Sensor de Temperatura DS18B20 (sin Adaptador)
1×Protoboard
1×Fios Jumper
1×(Recomendado) Shield com Bornes de Parafuso para Arduino Uno
1×(Recomendado) Sensors/Servo Expansion Shield for Arduino Uno
1×(Recomendado) Shield de Protoboard para Arduino Uno
1×(Recomendado) Case para Arduino Uno
1×(Recomendado) Placa Base de Prototipagem e Kit de Protoboard para Arduino Uno

Or you can buy the following kits:

1×DIYables STEM V3 Starter Kit (Arduino included)
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: Many DS18B20 sensors available in the market are unreliable. We strongly recommend buying the sensor from the DIYables brand using the link provided above. We tested it, and it worked reliably.

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

Sobre o OLED e o Sensor de Temperatura DS18B20

Se você não conhece o OLED e o sensor de temperatura DS18B20 (pinagem, como funciona, como programar...), aprenda sobre eles nos seguintes tutoriais:

Diagrama de Ligação

Diagrama de Ligação do Sensor de Temperatura e OLED com Arduino

This image is created using Fritzing. Click to enlarge image

Sugerimos comprar um sensor DS18B20 que vem com um adaptador de ligação para facilitar a conexão. O adaptador tem um resistor embutido, eliminando a necessidade de um resistor separado na ligação.

Diagrama de Ligação do Arduino com Sensor de Temperatura DS18B20 e OLED

This image is created using Fritzing. Click to enlarge image

Código Arduino - Temperatura do Sensor de Temperatura DS18B20 exibida no OLED

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-temperature-sensor-oled */ #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <OneWire.h> #include <DallasTemperature.h> #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels #define SENSOR_PIN 2 // Arduino pin connected to DS18B20 sensor's DQ pin Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); // create SSD1306 display object connected to I2C OneWire oneWire(SENSOR_PIN); // setup a oneWire instance DallasTemperature tempSensor(&oneWire); // pass oneWire to DallasTemperature library String tempString; 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 tempSensor.begin(); // initialize the sensor tempString.reserve(10); // to avoid fragmenting memory when using String } void loop() { tempSensor.requestTemperatures(); // send the command to get temperatures float tempCelsius = tempSensor.getTempCByIndex(0); // read temperature in Celsius tempString = String(tempCelsius, 2); // two decimal places tempString += char(247) + String("C"); Serial.println(tempString); // print the temperature in Celsius to Serial Monitor oledDisplayCenter(tempString); } void oledDisplayCenter(String text) { int16_t x1; int16_t y1; uint16_t width; uint16_t height; oled.getTextBounds(text, 0, 0, &x1, &y1, &width, &height); // display on horizontal and vertical center oled.clearDisplay(); // clear display oled.setCursor((SCREEN_WIDTH - width) / 2, (SCREEN_HEIGHT - height) / 2); oled.println(text); // text to display oled.display(); }

Passos Rápidos

  • Abra o Arduino IDE no seu PC.
  • Vá até o ícone Libraries na barra esquerda do Arduino IDE.
  • Pesquise “SSD1306” e, em seguida, encontre a biblioteca SSD1306 da Adafruit
  • Clique no botão Install para instalar a biblioteca.
Biblioteca OLED do Arduino
  • Será solicitado que você instale algumas outras dependências da biblioteca
  • Clique no botão Install All para instalar todas as dependências da biblioteca.
Biblioteca Adafruit GFX do Arduino
  • Pesquise “DallasTemperature” e, em seguida, encontre a biblioteca DallasTemperature de Miles Burton.
  • Clique no botão Install para instalar a biblioteca DallasTemperature.
Biblioteca Dallas Temperature do Arduino
  • Será solicitado que você instale a dependência da biblioteca
  • Clique no botão Install All para instalar a biblioteca OneWire.
Biblioteca OneWire do Arduino
  • Copie o código acima e abra-o no Arduino IDE
  • Clique no botão Upload no Arduino IDE para carregar o código no Arduino
  • Coloque o sensor em água quente e fria, ou segure o sensor com a mão
  • Veja o resultado no OLED

※ Nota:

O código acima centraliza automaticamente o texto na horizontal e na vertical no display 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!