ESP32 MQTT клієнт з термопарою K-типу та модулем MAX6675
У цьому проєкті ми розглянемо, як зібрати просту систему вимірювання високої температури з використанням термопари K-типу, модуля MAX6675 та мікроконтролера ESP32. Дані передаватимуться на MQTT-брокер, що дозволяє інтегрувати систему в проєкти інтернету речей та віддалений моніторинг.
Необхідне обладнання та компоненти
- Мікроконтролер ESP32
- Модуль термопари MAX6675
- Термопара K-типу
- Блок живлення 5 В (USB або адаптер)
- З'єднувальні дроти
- Базовий MQTT-брокер (наприклад, Mosquitto або хмарний сервіс HiveMQ, EMQX)
Схема підключення та принцип роботи
Модуль MAX6675 перетворює аналоговий сигнал від термопари K-типу в цифровий та передає дані через інтерфейс SPI. ESP32 отримує значення температури й надсилає їх на MQTT-брокер через Wi-Fi. Далі ці дані можна переглядати у Home Assistant, Node-RED чи будь-якій іншій IoT-платформі.
| MAX6675 | ESP32 |
|---|---|
| VCC | 3.3V |
| GND | GND |
| SCK | GPIO18 |
| CS | GPIO5 |
| SO | GPIO19 |
Приклад коду для ESP32
// Підключаємо необхідні бібліотеки
#include <WiFi.h>
#include <PubSubClient.h>
#include <max6675.h>
// Піни підключення MAX6675
int thermoSO = 19; // MISO
int thermoCS = 5; // CS
int thermoSCK = 18; // SCK
MAX6675 thermocouple(thermoSCK, thermoCS, thermoSO);
// Дані для Wi-Fi
const char* ssid = "Ваш_SSID";
const char* password = "Ваш_Пароль";
// Дані для MQTT
const char* mqtt_server = "broker.hivemq.com"; // можна використати локальний брокер
const int mqtt_port = 1883;
const char* mqtt_topic = "esp32/temperature";
WiFiClient espClient;
PubSubClient client(espClient);
void setup_wifi() {
delay(10);
Serial.println();
Serial.print("Підключення до ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi підключено");
Serial.print("IP адреса: ");
Serial.println(WiFi.localIP());
}
void reconnect() {
// Перепідключення до MQTT у разі розриву
while (!client.connected()) {
Serial.print("Спроба підключення до MQTT...");
if (client.connect("ESP32Client")) {
Serial.println("Підключено");
} else {
Serial.print("Помилка, код=");
Serial.print(client.state());
Serial.println(" Повтор через 5 секунд");
delay(5000);
}
}
}
void setup() {
Serial.begin(115200);
setup_wifi();
client.setServer(mqtt_server, mqtt_port);
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
// Зчитуємо температуру
double celsius = thermocouple.readCelsius();
Serial.print("Температура: ");
Serial.println(celsius);
// Надсилаємо дані в MQTT
char msg[50];
dtostrf(celsius, 6, 2, msg);
client.publish(mqtt_topic, msg);
delay(3000); // надсилання кожні 3 секунди
}
Застосування та розширення проєкту
- Моніторинг температури печей, котлів та нагрівачів.
- Віддалене вимірювання температури в промисловому обладнанні.
- Інтеграція в розумний дім через Home Assistant або Node-RED.
- Створення системи багатоканального вимірювання з кількома модулями MAX6675.
- Передача даних не лише в MQTT, але й у бази даних або хмарні сервіси.
Висновок
Використовуючи ESP32 та модуль MAX6675 з термопарою K-типу, можна легко побудувати систему вимірювання температури з передачею даних через MQTT. Такий проєкт стане у пригоді як для навчальних завдань, так і для реальних промислових чи побутових застосувань.
Модуль реле 4-канальний 5В 10А
4-канальный модуль реле для підключення напряму до дискретного виходу контролера. Світлодіодна індик..
143.14грн.
Мотор безщіточний A2212 1000KV
Мотор трьохфазний безколекторний для мультикоптерів 1000KVKV: 1000 обертів на вольтМаксимальна ..
360.40грн.
Цикли 2 — Цикл for
Цикли 2 — Цикл for Вступ Цикл for — один із найчастіше використовуваних інструментів в A..
Уроки Arduino константи для початківців
Привіт, друзі! Я радий презентувати вам новий урок під назвою Arduino константи! Конста..
Arduino SIM800 GPRS HTTP GET запит
Привіт друзі! Ми з кожним разом знаємо все більш цікаві застосування GSM-модуля SIM800. На цей раз н..




