Arduino Nano - Sensor de Temperatura - OLED

Este tutorial ensina você a usar o Arduino Nano para obter a temperatura de um sensor one wire DS18B20 e mostrá-la em um display OLED.

Arduino Nano DS18B20 Temperature Sensor OLED

Hardware Necessário

1×Official Arduino Nano
1×Alternatively, DIYables Nano V3.0 Development Board
1×Cabo USB A para Mini-B
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×4.7 kΩ Resistor
1×Protoboard
1×Fios Jumper
1×(Recomendado) Placa de Expansão com Bornes de Parafuso para Arduino Nano
1×(Recomendado) Placa de Expansão Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentação para Arduino Nano

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: 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 funcionam, como programar ...), os tutoriais a seguir podem fornecer mais informações:

Diagrama de Ligação

  • Diagrama de ligação usando uma protoboard.
The wiring diagram between Arduino Nano and Temperature Sensor OLED

This image is created using Fritzing. Click to enlarge image

  • Diagrama de ligação usando um adaptador de bornes (recomendado).
The wiring diagram between Arduino Nano and DS18B20 Temperature Sensor OLED

This image is created using Fritzing. Click to enlarge image

Veja A melhor forma de alimentar o Arduino Nano e outros componentes.

Recomendamos comprar um sensor DS18B20 junto com o adaptador de ligação que o acompanha para uma montagem sem complicações. Esse adaptador inclui um resistor integrado, eliminando a necessidade de um resistor adicional na ligação.

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

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

  • Clique no ícone Libraries na barra à esquerda da Arduino IDE.
  • Pesquise por “SSD1306” e localize a biblioteca SSD1306 da Adafruit.
  • Em seguida, pressione o botão Install para concluir a instalação.
Arduino Nano OLED library
  • Você será solicitado a instalar algumas dependências de biblioteca adicionais.
  • Para instalar todas elas, clique no botão Install All.
Arduino Nano Adafruit GFX sensor library
  • Pesquise por “Dallas” e depois localize a biblioteca DallasTemperature criada por Miles Burton.
  • Pressione o botão Install para instalar a biblioteca DallasTemperature.
Arduino Nano Dallas Temperature library
  • Você será solicitado a instalar a dependência. Clique no botão Install All para instalar a biblioteca OneWire.
Arduino Nano onewire library
  • Copie o código e abra-o na Arduino IDE.
  • Clique no botão Upload na Arduino IDE para compilar e fazer o upload do código para o Arduino Nano.
  • Coloque o sensor em água quente e fria, ou segure-o na mão.
  • Confira o resultado no display OLED.

※ Nota:

O código em questão centraliza o texto horizontal e verticalmente 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!