Construir seu termômetro DIY Arduino é uma maneira divertida e prática de expandir suas habilidades de mexer, mas por onde você deve começar? Junte-se a nós enquanto investigamos a fiação e a codificação que transformam um Arduino, uma sonda de temperatura DS18B20, e um display OLED em um termômetro digital preciso que pode funcionar bem em salas, tanques de peixes e até ao ar livre.

O que você precisa para fazer um termômetro digital Arduino DIY?

Todos esses componentes podem ser encontrados em sites como eBay e Amazon.

Uma placa Arduino

Você pode usar praticamente qualquer Arduino com uma saída de 5V para este projeto. Estamos usando um Arduino Pro Micro para que nosso termômetro finalizado seja compacto, mas você pode usar uma placa maior como um Arduino Uno se quiser evitar soldas para este projeto.

Sonda de Temperatura DS18B20

Os sensores de temperatura DS18B20 podem ser encontrados como pequenos sensores autônomos, PCBs com sensores conectados ou como sondas à prova d'água em fios longos. Escolhemos o último, pois isso nos permite usar nosso termômetro dentro de um tanque de peixes, mas você pode escolher qualquer variante do sensor de temperatura DS18B20. Ao contrário de outros tipos de sensores de temperatura, os DS18B20s fornecem um sinal direto para o seu Arduino, em vez dos sinais analógicos que vêm de opções como sensores de temperatura LM35.

Uma tela OLED/LCD

A tela que você escolher para o seu termômetro terá um grande impacto no produto final. Escolhemos uma tela OLED branca monocromática de 1,3 polegadas compatível com I2C para nosso termômetro, mas você pode escolher o que quiser, desde que suporte I2C.

Peças Pequenas Adicionais

  • Resistor de 4,7 K (quiloohm)
  • Fio isolado de silicone/PVC de 28 a 22 AWG
  • Uma placa de ensaio (opcional para quem não deseja soldar)

Fiação do seu termômetro DIY

A fiação para este projeto é muito mais simples do que você imagina. Usando o diagrama de circuito acima, você pode criar seu próprio termômetro digital DIY com pouco esforço, mas também dividimos o diagrama abaixo para facilitar o acompanhamento.

Fiação da Sonda de Temperatura DS18B20

A fiação correta da sonda de temperatura DS18B20 é vital para este projeto, e você precisa ter certeza de usar o resistor de 4,7 K mencionado anteriormente ou sua sonda não funcionará corretamente. A sonda vem com três fios: Terra (geralmente preto), VCC (geralmente vermelho) e Dados.

  • VCC se conecta a um pino de 5V no seu Arduino
  • O terra se conecta a um pino GND no seu Arduino
  • Os dados podem se conectar a qualquer pino digital no seu Arduino (escolhemos o pino digital 15)
  • Os fios de dados e VCC também precisam ser conectados um ao outro com um resistor de 4,7 K

Fiação do display OLED I2C

Como estamos usando uma conexão I2C entre nosso display OLED e nosso Arduino, precisamos conectar apenas quatro fios antes de podermos começar a usar nosso display: VCC, Ground, SDA e SCL. Praticamente todo Arduino moderno possui pinos SDA e SCL integrados, fornecendo a capacidade de conectar até 128 componentes I2C exclusivos a uma única placa.

Nosso Arduino Pro Micro tem SDA no pino digital 2 e SCL no pino digital 3, mas talvez seja necessário procurar um diagrama de pinagem da placa específica que você escolheu antes de começar.

  • VCC se conecta a um pino de 5V no seu Arduino
  • O terra se conecta a um pino GND no seu Arduino
  • SDA se conecta ao pino SDA em seu Arduino
  • SCL se conecta ao pino SCL em seu Arduino

Testando seu circuito

É crucial que você teste o circuito que você criou antes de começar a escrever o código final para ele, mas você pode usar os projetos de exemplo que vêm com as bibliotecas discutidas abaixo para testar o circuito que você tem fez.

Codificando seu sensor de temperatura e display OLED

Codificar seu termômetro digital DIY é mais complicado do que conectá-lo, mas o Arduino IDE pode ser usado para facilitar.

Escolhendo as bibliotecas corretas

  • Biblioteca de exibição OLED: Estamos usando a biblioteca Adafruit_SH1106.h para nossa exibição, pois esta é a biblioteca com a qual ela foi projetada para trabalhar. Outros monitores OLED podem usar suas próprias bibliotecas, como a biblioteca Adafruit_SSD1306.h, e normalmente você pode descobrir qual delas você precisa na página do produto de onde você tirou sua tela.
  • Sonda de Temperatura DS18B20: Precisamos de duas bibliotecas para nossa sonda de temperatura. O DallasTemperature.h é usado para coletar dados de temperatura e o OneWire.h para possibilitar nossa conexão de fio único.

Depois que essas bibliotecas forem instaladas e incluídas em seu projeto, seu código deverá se parecer com o snippet abaixo. Observe que também incluímos código para definir os pinos para nossos componentes.

#incluir  //Exibir biblioteca
#incluir
#incluir //Biblioteca de sondas temporárias
#define OLED_RESET -1
Exibição Adafruit_SH1106 (OLED_RESET);
#define ONE_WIRE_BUS 15 //Pino do fio de dados da sonda de temperatura
OneWire oneWire (ONE_WIRE_BUS); //Informa ao OneWire qual pino estamos usando
Sensores de temperatura Dallas(&oneWire); //Referência OneWire à temperatura de Dallas

Construindo as funções

  • configuração nula: Estamos usando o padrão configuração função para inicializar nosso display e nossa sonda de temperatura.
  • loop vazio: Nosso padrão ciclo função só será usada para chamar nosso Tela função.
  • void Exibir: Adicionamos um Tela função que chama nosso Temp função e fornece informações ao nosso display.
  • int Temp: Nosso Temp função é usada para obter uma leitura de temperatura para o nosso Tela função.

Depois de concluído, isso deve se parecer com o snippet abaixo.

void configuração() {
}
void loop() {
}
void Exibir() {
}
intTemp(){
}

Codificando a tela OLED

Antes de podermos adicionar código ao nosso Tela função, precisamos ter certeza de que o painel OLED é inicializado em nosso configuração nula função. Primeiro, usamos um exibir.começar comando para iniciar a exibição, seguido por um display.clearDisplay comando para certificar-se de que a exibição está clara.

void configuração() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C); //Muda com base na sua biblioteca de exibição
display.clearDisplay();
}

A partir daqui, podemos adicionar código ao nosso Tela função. Isso começa com outro display.clearDisplay comando, antes de declarar uma nova variável inteira com um valor que chama o Temp função (vamos abordar isso mais tarde). Podemos então usar essa variável para exibir a temperatura no visor usando o código a seguir.

void Exibir() {
display.clearDisplay();
int Temp = Temp(); //Chama nossa função Temp
display.setTextSize (3); //Define o tamanho do nosso texto
display.setTextColor (BRANCO); //Define a cor do nosso texto
display.setCursor (5, 5); //Define nossa posição de texto no display
display.print (intTemp); // Imprime o valor fornecido pela função Temp
display.drawCircle (44, 7, 3, BRANCO); //Desenha um símbolo de grau
display.setCursor (50, 5);
display.print("C"); //Adiciona C para indicar que nossa temperatura está em Celsius
}

Codificando a Sonda de Temperatura DS18B20

Assim como nosso display, nossa sonda de temperatura também precisa de um código de configuração para inicializar o componente.

void configuração() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
sensores.begin();
}

Em seguida, é hora de programar a própria sonda e precisamos adicionar código ao nosso Temp função. Primeiro, solicitaremos a temperatura de nossa sonda, seguida de registrar o resultado como uma variável flutuante e convertê-lo em um inteiro. Se este processo for bem sucedido, a temperatura é devolvida ao Tela função.

intTemp(){
sensores.requestTemperatures(); //Envia o comando para obter as temperaturas
float tempC = sensores.getTempCByIndex (0); //Isso solicita a temperatura em Celsius e a atribui a um float
int intTemp = (int) tempC; //Isto converte o float para um inteiro
if (tempC != DEVICE_DISCONNECTED_C) //Verifica se nossa leitura funcionou
{
return intTemp; //Retorna nosso valor de temperatura para a função Display
}
}

Terminando

Finalmente, só precisamos dizer ao nosso principal ciclo função para chamar nosso Tela função com cada ciclo do código, deixando-nos com um projeto que se parece com isso.

#incluir  //Exibir biblioteca
#incluir
#incluir //Biblioteca de sondas temporárias
#define OLED_RESET -1
Exibição Adafruit_SH1106 (OLED_RESET);
#define ONE_WIRE_BUS 15 //Pino do fio de dados da sonda de temperatura
OneWire oneWire (ONE_WIRE_BUS); //Informa ao OneWire qual pino estamos usando
Sensores de temperatura Dallas(&oneWire); //Referência OneWire à temperatura de Dallas
void configuração() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
sensores.begin();
}
void loop() {
Tela(); //Chama nossa função de exibição
}
void Exibir() {
display.clearDisplay();
int Temp = Temp(); //Chama nossa função Temp
display.setTextSize (3); //Define o tamanho do nosso texto
display.setTextColor (BRANCO); //Define a cor do nosso texto
display.setCursor (5, 5); //Define nossa posição de texto no display
display.print (intTemp); // Imprime o valor fornecido pela função Temp
display.drawCircle (44, 7, 3, BRANCO); //Desenha um símbolo de grau
display.setCursor (50, 5);
display.print("C"); //Adiciona C para indicar que nossa temperatura está em Celsius
}
intTemp(){
sensores.requestTemperatures(); //Envia o comando para obter as temperaturas
float tempC = sensores.getTempCByIndex (0); //Isso solicita a temperatura em Celsius e a atribui a um float
int intTemp = (int) tempC; //Isto converte o float para um inteiro
if (tempC != DEVICE_DISCONNECTED_C) //Verifica se nossa leitura funcionou
{
return intTemp; //Retorna nosso valor de temperatura para a função Display
}
}

Construindo um termômetro digital DIY

Este projeto deve ser divertido e informativo, além de dar a você a chance de fazer um item prático. Projetamos este código para ser o mais simples possível, mas você pode usá-lo como base para um projeto mais complicado à medida que aprende.

15 ótimos projetos Arduino para iniciantes

Interessado em projetos Arduino, mas não sabe por onde começar? Esses projetos para iniciantes ensinarão como começar.

Leia a seguir

ParticipaçãoTweetE-mail
Tópicos relacionados
  • faça você mesmo
  • Arduino
  • Eletrônicos
Sobre o autor
Samuel L. Garbett (35 Artigos Publicados)

Samuel é um escritor de tecnologia baseado no Reino Unido com uma paixão por todas as coisas de bricolage. Tendo iniciado negócios nas áreas de desenvolvimento web e impressão 3D, além de trabalhar como escritor por muitos anos, Samuel oferece uma visão única do mundo da tecnologia. Concentrando-se principalmente em projetos de tecnologia DIY, ele adora compartilhar ideias divertidas e emocionantes que você pode experimentar em casa. Fora do trabalho, Samuel geralmente pode ser encontrado andando de bicicleta, jogando videogame para PC ou tentando desesperadamente se comunicar com seu caranguejo de estimação.

Mais de Samuel L. Garbett

Assine a nossa newsletter

Junte-se à nossa newsletter para dicas de tecnologia, análises, e-books gratuitos e ofertas exclusivas!

Clique aqui para assinar