Arduino Nano ESP32 - Módulo Termopar MAX6675
Todos os outros tutoriais de temperatura desta série - o DHT11/DHT22, o DS18B20, o TMP36 - têm a mesma fraqueza: nenhum deles sobrevive a ser colocado em algo realmente quente. Seus encapsulamentos de plástico e suas pastilhas de silício começam a ceder bem abaixo de 150°C, o que descarta torrar um lote de grãos de café, vigiar um forno de cerâmica ou conferir a temperatura da chaminé de um fogão a lenha.
A solução é uma tecnologia de medição totalmente diferente, chamada termopar, combinada com uma pequena placa breakout que transforma sua saída em um número que o Arduino Nano ESP32 consegue ler. Este tutorial mostra como ligar e programar o módulo termopar MAX6675 com o Arduino Nano ESP32.

Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o Módulo Termopar MAX6675
O que chega como "um módulo MAX6675" são na verdade duas coisas juntas: uma pequena placa breakout construída em torno do chip MAX6675 e uma sonda termopar Tipo K ligada a ela.

O Que É um Termopar?
Tirando o marketing, um termopar nada mais é do que dois fios de metais diferentes soldados em uma ponta, chamada de junção quente. Aqueça essa junção e uma pequena tensão aparece entre os fios, aumentando ou diminuindo conforme a temperatura muda. Não há chip, não há silício, nada para derreter - e é exatamente por isso que um termopar pode ser colocado em lugares que matariam na hora um sensor comum.
Os termopares vêm em vários tipos (J, K, E, T e outros), batizados com o nome do par de metais usado. O Tipo K - feito de Chromel e Alumel - é o que você mais vai encontrar, e cobre confortavelmente de cerca de -328°F a +2300°F.
Sozinho, porém, esse sinal na casa dos milivolts é difícil de trabalhar. Ele precisa ser amplificado, linearizado e convertido em um valor de temperatura de verdade antes que um Arduino Nano ESP32 possa fazer algo útil com ele - e esse trabalho de conversão fica por conta do MAX6675.
Pinagem do Módulo MAX6675
A placa breakout amostra constantemente a pequena tensão da sonda, passa por um conversor analógico-digital de 12 bits e entrega a leitura pronta ao Arduino Nano ESP32 por um link de 3 fios somente de leitura:
- VCC: entrada de alimentação, aceita de 3.0V a 5.5V.
- GND: referência de terra.
- SCK: clock serial, controlado pelo Arduino Nano ESP32 para deslocar cada leitura para fora.
- CS: chip select - o Arduino Nano ESP32 coloca este pino em nível baixo sempre que quer fazer uma leitura.
- SO: saída de dados serial, a linha MISO do módulo, que leva o resultado de 12 bits de volta ao Arduino Nano ESP32. Não existe pino MOSI, já que o chip nunca precisa receber dados.
Na borda oposta há Bornes de Parafuso de 2 pinos para a sonda: o fio vermelho entra no +, o fio azul entra no -.
A sonda que acompanha o módulo tem cerca de 18 polegadas de comprimento e é especificada apenas para 0°C a 80°C, embora o próprio chip MAX6675 consiga digitalizar leituras de 0°C até 1024°C. Para medir qualquer coisa acima de 80°C, é preciso trocar por uma sonda Tipo K com especificação de temperatura mais alta.
Especificações rápidas:
- Tensão de Operação: 3.0V - 5.5V
- Faixa Digitalizada: 0 - 1024°C (sonda incluída limitada a 0-80°C)
- Precisão: ±3°C
- Resolução: cerca de 0.25°C
Diagrama de Ligação
A lógica do próprio Arduino Nano ESP32 roda em 3.3V, e o módulo MAX6675 funciona bem entre 3.0V e 5.5V, então alimente o VCC pelo pino 3V3 da placa e ligue o GND ao GND. Escolha quaisquer três pinos digitais livres para SCK, CS e SO e depois encaixe os fios vermelho e azul da sonda nos terminais + e - do módulo.

This image is created using Fritzing. Click to enlarge image
Tabela de ligação do Módulo MAX6675 e do Arduino Nano ESP32
| Módulo MAX6675 | Arduino Nano ESP32 |
|---|---|
| VCC | → 3V3 |
| GND | → GND |
| SCK | → D4 |
| CS | → D3 |
| SO | → D2 |
Código Arduino Nano ESP32
Passos Rápidos
Para começar com o Arduino Nano ESP32, siga estes passos:
- Se você é novo no Arduino Nano ESP32, consulte o tutorial sobre como configurar o ambiente do Arduino Nano ESP32 no Arduino IDE.
- Ligue o módulo MAX6675 ao Arduino Nano ESP32 de acordo com a tabela e o diagrama acima.
- Conecte a placa Arduino Nano ESP32 ao seu computador usando um cabo USB.
- Abra o Arduino IDE no seu computador.
- Selecione a placa Arduino Nano ESP32 e a porta COM correspondente.
- Abra o Library Manager clicando no ícone Library Manager na barra de navegação esquerda do Arduino IDE
- Digite "MAX6675" na caixa de busca e procure a biblioteca MAX6675 da Adafruit.
- Clique no botão Install para instalar a biblioteca.
- Search for MAX6675 library created by Adafruit and click the Install button.
- Copie o código acima e cole no Arduino IDE.
- Compile e faça o upload do código para a placa Arduino Nano ESP32 clicando no botão Upload do Arduino IDE.
- Encoste a ponta do termopar no que você quiser medir - uma caneca de água quente funciona bem para um primeiro teste.
- Abra o Serial Monitor para ver as leituras chegando.
※ Nota:
Se o Serial Monitor continuar imprimindo o mesmo valor ou algo claramente errado, confira de novo a ligação de SCK/CS/SO com os pinos usados no sketch e verifique se os fios vermelho e azul da sonda estão realmente presos dentro do bloco de bornes, e não apenas encostando nele.
Explicação do Código
O sketch começa incluindo o cabeçalho da biblioteca MAX6675, que cuida da comunicação de baixo nível com o chip.
Em seguida, três números de pino são definidos para a conexão entre o Arduino Nano ESP32 e as linhas de clock, chip-select e saída de dados do módulo.
Depois é criado um objeto MAX6675 chamado thermocouple, informando à biblioteca qual pino tem qual função.
O setup() abre a conexão Serial e faz uma breve pausa, dando ao módulo um momento para se estabilizar antes que o sketch peça a primeira leitura.
Dentro do loop(), duas funções da biblioteca fazem todo o trabalho: thermocouple.readCelsius() e thermocouple.readFahrenheit() disparam cada uma uma nova conversão no chip e retornam o resultado na unidade pedida.
Os dois valores são então impressos em uma única linha do Serial Monitor, seguidos de um atraso de um segundo, no mesmo ritmo em que o MAX6675 consegue de fato produzir novas conversões.