Capa do artigo Aquecedor de Caneca USB.

Aquecedor de canecas USB Deixe um comentário

O inverno já chegou e, por isso, o projeto da edição 10 da BlueBox não poderia ser diferente, um aquecedor de canecas USB para manter sua bebida quentinha enquanto trabalha, estuda, lê um livro ou assiste a uma série.

O projeto consiste em uma pastilha de Peltier que aquece o dissipador onde a caneca ficará apoiada. Além disso, o sensor DS18B20 é utilizado para monitorar a temperatura do aquecedor, que será mostrada no display de 7 segmentos, e leds posicionados na parte inferior da case irão mudar de cor conforme a temperatura do aquecedor. Tudo isso será controlado por uma placa Arduino Pro Mini!

Já está ansioso para montar seu aquecedor de canecas USB?

Materiais Necessários para o Aquecedor de Canecas USB

Para montar o projeto 10 da BlueBox você vai precisar dos seguintes componentes:

Além disso, você vai precisar de alguns materiais extras:

Instalação das Bibliotecas

Primeiro é preciso instalar as bibliotecas que são utilizadas no código. Na Arduino IDE, vá em Ferramentas > Gerenciador de Bibliotecas, procure pela biblioteca SevenSeg e clique em instalar.

Figura 1 – Instalação biblioteca SevenSeg

Repita o mesmo procedimento para as bibliotecas OneWire, DallasTemperature e Adafruit_NeoPixel.

Figura 2 – Instalação biblioteca Adafruit
Figura 3 – Instalação biblioteca DallasTemperature
Figura 4 – Instalação biblioteca OneWire

Código para o Aquecedor de Canecas USB

Após soldar os pinos na placa Arduino pro Mini como mostra a imagem abaixo, conecte o cabo USB da seguinte forma: jumpers branco, verde, vermelho e preto nos terminais TX, RX, VCC e GND.

Figura 5 – Conexão Arduino Pro Mini ao cabo USB

Copie e cole o código abaixo na Arduino IDE

//Programa: Aquecedor de canecas USB - BlueBox10
//Autor: FILIPEFLOP

/*--------Bibliotecas utilizadas-----------*/
#include "SevenSeg.h"
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Adafruit_NeoPixel.h>

/*----Display 7 segmentos 4 dígitos-------*/
SevenSeg disp (A0,10,7,5,4,13,8); // Define que os segmentos A-G estão conectados no pinos A0, D10, D7, D5, D4, D13 e D8 do Arduino, respectivamente
const int numOfDigits =4; // Define o número de dígitos do display 
int digitPins [numOfDigits]={A1,12,11,9}; // Define que os dígitos 1-4 estão conectados nos pinos A1, 12, 11 e 9 do Arduino, respectivamente
#define DP 6 // Define que o ponto digital está conectado no pino 6

/*-------Sensor de temperatura DS1820-------*/
#define TEMP_PIN 2 // Define que o sensor DS18B20 está conectado no pino D9 do Arduino
OneWire oneWire(TEMP_PIN); // Configura uma instância oneWire para se comunicar com o sensor de temperatura Onewire 
DallasTemperature sensors(&oneWire); // Passa a referência oneWire para Dallas Temperature.
DeviceAddress sensor1;

/*--------LEDS Endereçáveis WS2812----------*/
#define LED_PIN 3 // Define que a fita de LED está conectado no pino D3 do Arduino
#define LED_COUNT 6 // Define a quantidade de LEDs que vão ser controlados
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); // Configura uma instância para se comunicar com a fita de LED WS2812

/*------Variáveis utilizadas no código-------*/
String tempSensor;
int tempLED = 0;
String tempDisp;

/*----------------Setup--------------------*/
void setup() {
  Serial.begin(9600); // Inicia a comunicação serial com uma taxa de transmissão de 9600 
  
  sensors.begin(); // Inicia a comunicação com o o sensor de temperatura DS18B20 

  disp.setDigitPins(numOfDigits,digitPins); // Inicia a comunicação com o display 7 segmentos 4 dígitos
  disp.setCommonAnode(); // Define que o display utilizado é do tipo anodo comum
  disp.setDutyCycle(100); // Define o brilho do display. Valores entre 0 e 100
  disp.setDPPin(DP); // Define o ponto digital
  disp.setTimer(2);
  disp.startTimer();
  
  strip.begin(); // Inicia a comunicação com a fita de LED WS2812
  strip.show(); // Desliga todos os LED da fita de LED WS2812
  strip.setBrightness(255); //Define o brilho da fita de LED (valores aceitos de 0 a 255)
}

/*----------------Loop--------------------*/
void loop(){
  sensors.requestTemperatures(); // Faz a requisição de leitura ao sensor de temperatura DS1820 
  tempSensor = sensors.getTempCByIndex(0); // Realizada a leitura da temperatura

  int tempInt = tempSensor.toInt(); // Transforma a temperatura obtida pelo sensor em um número inteiro
  tempLED = 4.6*tempInt-69; // Transforma o número inteiro obtido anteriormente em um valor que varia de 0 a 255 
  strip.setPixelColor(0, tempLED, 0, 255-tempLED); // Define o valores das cores vermelho, verde, azul do 1° LED da fita
  strip.setPixelColor(1, tempLED, 0, 255-tempLED); // Define o valores das cores vermelho, verde, azul do 2º LED da fita
  strip.setPixelColor(2, tempLED, 0, 255-tempLED); // Define o valores das cores vermelho, verde, azul do 3º LED da fita
  strip.setPixelColor(3, tempLED, 0, 255-tempLED); // Define o valores das cores vermelho, verde, azul do 4º LED da fita
  strip.setPixelColor(4, tempLED, 0, 255-tempLED); // Define o valores das cores vermelho, verde, azul do 5º LED da fita
  strip.setPixelColor(5, tempLED, 0, 255-tempLED); // Define o valores das cores vermelho, verde, azul do 6º LED da fita
  strip.setPixelColor(6, tempLED, 0, 255-tempLED); // Define o valores das cores vermelho, verde, azul do 7º LED da fita
  strip.setPixelColor(7, tempLED, 0, 255-tempLED); // Define o valores das cores vermelho, verde, azul do 8º LED da fita
  strip.show(); //Aciona todos os LEDs da fita com os valores definidos anteriormente
  
  tempDisp = tempSensor.substring(0, tempSensor.length()-1); //Transforma o valor da temperatura com 2 dígitos após a virgula em um valor com apenas 1 dígito após a vírgula
  
  tempDisp.concat("C"); //Adiciona ao valor da temperatura a letra C(Celsius)

  disp.write(tempDisp); //Exibe no display o valor da temperatura

  Serial.println(tempSensor); // Exibe no monitor serial o valor da temperatura obtida pelo sensor
  Serial.println(tempInt); // Exibe no monitor serial o valor inteiro da temperatura
  Serial.println(tempLED); // Exibe no monitor serial o valor da temperatura recebido pelos LEDs da fita
  Serial.println(tempDisp); // Exibe no monitor serial o valor da temperatura apresentada no display

  delay(1000); // Aguarda 1 segundo para reiniciar o loop
}

ISR( TIMER2_COMPA_vect ){
disp.interruptAction ();
}

Vá em Ferramentas > Placa e selecione Arduino Pro or Pro Mini.

    Figura 6 – Seleção do Arduino Pro Mini na Arduino IDE

Agora vá em Ferramentas > Porta e selecione a porta que a placa Pro Mini está conectada.

Figura 7 – Seleção da porta de conexão do Arduino Pro Mini na Arduino IDE

Faça o upload do código para a placa e quando a mensagem “Carregando…” aparecer na tela, aperte o botão RESET do Arduino.

Figura 8 – Mensagem na Arduino IDE antes de carregar o código para o Arduino Pro Mini
Figura 9 – Botão reset do Arduino Pro Mini
Figura 10 – Mensagem na Arduino IDE após clicar no botão reset do Arduino Pro Mini
Figura 11 – Mensagem na Arduino IDE depois que o carregamento do código é concluido

Esse procedimento de reset deve ser feito logo após o início do carregamento, senão não vai funcionar. Caso tenha problemas em carregar o código para o Arduino Pro Mini, siga o procedimento descrito abaixo.

Problemas ao carregar o código para a placa

Caso não consiga carregar o código para a placa, será necessário atualizar o driver PL2303HX. Para isso faça o download do instalador, conecte o cabo USB no seu computador, execute o instalador e proceda com a instalação normalmente.

Depois, abra o Gerenciador de Dispositivos, vá até Portas (COM e LPT). Com o lado direito do mouse, clique na Porta COM que o cabo USB está conectado e clique em Propriedades.

Clique no aba Driver e depois em Atualizar Driver.

Figura 12 – Atualização do driver PL2303 através do Gerenciador de Dispositivos

Na janela seguinte, clique em Procurar drivers no meu computador.

Figura 13 – Instalação do driver manualmente através do Gerenciador de Dispositivos

Selecione a pasta do driver PL2303, clique em Permitir que eu escolha em uma lista de drivers disponíveis em meu computador.

Figura 14 – Seleção do driver PL2303 no Gerenciador de Dispositivos

Selecione Prolific USB-to-Serial Comm Port Versão 3.3.2.105 e clique em Avançar.

Figura 15 – Instalação do driver PL2303 através do Gerenciador de Dispositivos
Figura 16 – Confirmação do driver PL2303 através do Gerenciador de Dispositivos

Pronto! O driver está atualizado e provavelmente você não terá mais problemas para carregar o código para a placa

Display 7 Segmentos 4 dígitos

Separe 6 jumpers nas cores marrom, laranja, amarelo, verde, azul e cinza e corte todos eles na metade. Pegue todos os jumpers nas cores marrom, laranja, amarelo e verde e corte novamente na metade. Depois decape e estanhe as pontas de todos os jumpers.

Dica: Você tem alguma dúvida sobre como soldar componentes? Então acesse o post “Como soldar componentes eletrônicos”.

Figura 16 – Preparação dos jumpers para o display 7 segmentos 4 dígitos

Corte 12 partes de 1 cm e 8 partes de 3 cm do tubo termo retrátil Ø 2 mm. Separe os 8 resistores de 1kΩ e corte os terminais na metade. Agora solde os resistores na metade dos jumpers marrom, laranja, amarelo e verde. Posicione os tubos termo-retráteis de 3 cm acima dos resistores e esquente.

Figura 17 – Solda do resistores no jumpers para o display 7 segmentos 4 digítos

Passe os termo-retráteis de 1 cm por todos os jumpers que preparamos. A contagem dos pinos do display começa na parte debaixo dele, mais à esquerda e termina na parte de cima, também à esquerda.

Figura 18 – Pinos do display 7 segmentos 4 dígitos

Solde um jumper marrom no pino 1, amarelo no 2, laranja no 3, verde no 4, novamente um marrom no 5, azul no 6, amarelo no 7, cinza no 8, azul no 9, laranja no 10, verde no 11 e cinza no 12. Posicione todos os termo-retráteis acima da solda e esquente usando o ferro de solda.

Figura 19 – Solda dos jumpers no display 7 segmentos 4 dígitos

Fita de LED RGB WS2812 5050

Separe jumpers nas cores preto, vermelho e azul. Corte os jumpers na metade e separe 3 deles para utilizar depois. Corte novamente na metade os 3 jumpers que sobraram, decape e estanhe todas as pontas. Corte a fita de LED na metade, onde está a indicação.

Figura 20 – Corte do jumpers e da fita de LED WS2812 5050

Solde os jumpers vermelho, azul e preto com o terminal fêmea nos pinos 5V, DI e GND, respectivamente. No mesmo pedaço da fita de LED, solde os jumpers vermelho, azul e preto nos pinos 5V, D0 e GND, respectivamente. Por fim, solde novamente os jumpers vermelho, azul e preto nos pinos 5V, DI e GND do outro pedaço de fita.

Figura 21 – Solda da fita de LED WS2812 5050

Chave 3 terminais Toggle

Separe dois jumpers vermelhos. Corte os terminais de um dos lados dos dois jumpers, decape e estanhe todas as pontas. Solde um jumper no terminal do meio e outro em uma das pontas da chave.

Importante! Na imagem abaixo aparece um jumper vermelho e um jumper preto. No entanto, devem ser utilizados dois jumpers vermelhos e nenhum jumpers preto durante esse processo.

Figura 22 – Solda dos jumpers na chave 3 terminais toggle

Sensor de temperatura digital DS18B20

Separe jumpers vermelho, preto e roxo, o resistor de 4.7 kΩ e 6 pedaços de tubo termo retrátil Ø 2 mm. Corte os terminais de um dos lados dos jumpers e corte os jumpers vermelho e roxo na metade. Passe os tubos retráteis pelo jumper preto e pelos jumpers vermelho e roxo sem terminal.

Figura 23 – Preparação dos jumpers para o sensor de temperatura DS18B20

Perceba que os terminais do sensor de temperatura são contados da seguinte maneira:

Figura 24 – Pinos do sensor de temperatura digital DS18B20

Solde o jumper preto, roxo e vermelho nos terminais 1, 2 e 3 respectivamente. Corte os terminais do resistor na metade. Passe os tubos termo-retráteis pelos jumpers vermelho e roxo e também pelo resistor. Solde como mostra a imagem abaixo. Por fim, aqueça os tubos retráteis.

Figura 25 – Solda dos jumpers no sensor de temperatura DS18B20

Pastilha Termoelétrica Peltier

Utilize os jumpers preto e vermelho que foram separados quando preparamos a fita de LED e solde nos cabos vermelho e preto da pastilha. Não esqueça de usar os tubos retráteis.

Figura 26 – Solda dos jumpers na pastilha de Peltier

Circuito e Montagem Final do Aquecedor de Canecas USB

Vamos à montagem! Posicione a pastilha na tampa do aquecedor e depois cole o dissipador na pastilha. Usando uma fita isolante, cole o sensor de temperatura no dissipador. Cole as fitas de LED na canaleta. Conecte a chave toggle na base do aquecedor.

Figura 27 – Montagem do aquecedor de canecas USB

Cole o display de 7 segmentos na base. Passe o cabo USB pelo furo na parte traseira do aquecedor.

Figura 28 – Montagem do aquecedor de canecas USB

Solde o jumper vermelho da extremidade da chave no jumper vermelho do cabo USB. Depois solde o jumper vermelho do meio da chave no jumper vermelho da pastilha Peltier.

Faça a conexão dos jumpers no Arduino como mostra o esquemático abaixo.

Figura 29 – Esquemático eletrônico do aquecedor de canecas USB

Cole o Arduino na base, feche a tampa e seu aquecedor está pronto!

Figura 30 – Montagem do aquecedor de canecas USB

Funcionamento do Aquecedor de Canecas USB

Para utilizar o aquecedor de canecas, basta conectar o cabo USB que foi utilizado para programar a placa em uma porta USB do seu computador ou em uma fonte 5V com entrada USB. Acione a chave toggle para que a base comece a esquentar e a temperatura seja mostrada no display. Perceba que, conforme a temperatura aumenta, os LEDs vão mudando de cor.

Figura 31 – Resultado do aquecedor de canecas USB

E então, gostou do projeto da 10ª edição da BlueBox? Conte o que achou nos comentários abaixo. Se tiver alguma sugestão de projeto, pode escrever também 😉

Faça seu comentário

Acesse sua conta e participe