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:
- 1 un x Placa Pro Mini ATmega328P 5V 16MHz
- 1 un x Cabo Conversor USB TTL PL-2303HX
- 1 un x Pastilha Termoelétrica Peltier TEC1-12706 Cooler
- 1 un x Display Led 7 Segmentos 4 dígitos
- 8 un x Resistor 1KΩ 1/4W
- 1 un x Resistor 4.7KΩ 1/4W
- 1 un x Fita de LED RGB WS2812 5050 com 4 LEDs
- 1 un x Sensor de Temperatura Digital DS18B20
- 1 un x Chave 3 Terminais Toggle Switch SPDT
- 1 un x Jumpers Fêmea-Fêmea x40 Unidades
- 1 un x Dissipador de Alumínio
- 4 un x Adesivos Anti Impacto
- 50 cm x Tubo Termo Retrátil Ø 2mm
- 4 cm x Tubo Termo Retrátil Ø 3mm
- 1 un x Case do aquecedor impressa em 3D (download dos arquivos aqui)
Além disso, você vai precisar de alguns materiais extras:
- Cola quente
- Cola instantânea
- Alicate de corte
- Fita isolante
- Ferro de solda
- Estanho
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.
Repita o mesmo procedimento para as bibliotecas OneWire, DallasTemperature e Adafruit_NeoPixel.
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.
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.
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.
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.
Na janela seguinte, clique em Procurar drivers no meu computador.
Selecione a pasta do driver PL2303, clique em Permitir que eu escolha em uma lista de drivers disponíveis em meu computador.
Selecione Prolific USB-to-Serial Comm Port Versão 3.3.2.105 e clique em Avançar.
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”.
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.
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.
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.
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.
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.
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.
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.
Perceba que os terminais do sensor de temperatura são contados da seguinte maneira:
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.
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.
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.
Cole o display de 7 segmentos na base. Passe o cabo USB pelo furo na parte traseira do aquecedor.
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.
Cole o Arduino na base, feche a tampa e seu aquecedor está pronto!
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.
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 😉