Безпечна пайка

Вступ
Почну с того що: А ви знали що є техніка безпеки при пайці паяльником? Вона дійсно є, і написана вона не просто так. Окрім кумедних рядків типу не хвататись за жало бо воно гаряче, є і дуже толкові, наприклад: не слід паяти більше 1 год без зупину, треба перерва. І треба робити перерви через кожну годину хоча б на 5хв.
Так ось всі ці змінні жала мають свій ресурс і ціна у них не дуже маленька. І ще, чи траплялось у вас таке: що коли ви паяєте то вас погукали (або телефон подзвонив) терміново, прям місія №1 і ви все кинули і побігли кудись, а що у вас паяльник працює ви згадуєте в кращому випадку через 2год? Я впевнений було! А також це ще пожарна небезпека.
Щоб всі ці пункти зробити треба саморобка проста на чотири модуля та дві кнопки.
Що маємо зробити?
- Не працювати більше 1год без зупину
- Витягувати дим при пайці (про це буде наступна стаття)
- Берегти ресурс жала
- Контролювати час роботи паяльника та витяжки
Необхідні матеріали
Схема підключення

Я прийняв для себе і вам раджу, прийняти для себе настільне живлення, в мене це 24в. Чому 24в? Тому що всі модулі сучасні живляться від цієї напруги (лабороторний блок живлення, паяльник, модуль для зарядки телефону).
І це в тому випадку якщо у вас паяльник живляться від постійної напруги, якщо залишились ще люди які паяють паяльниками від 220в то треба переробити трохи схему, заміть поніжайки поставити блок живлення на 5в а замість входу 24в подавати 220в.
Скетч
#include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 32 #define OLED_RESET -1 #define SCREEN_ADDRESS 0x3C Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); #define RELAY_PIN 4 // Пін для реле #define ADD_TIME_BTN 5 // Кнопка додавання часу #define SUB_TIME_BTN 6 // Кнопка віднімання часу #define MAX_TIMER_DURATION 3600000 // Максимальна тривалість таймера (1 година) #define addTime 600000 // Додавання часу (10 хвилин) #define subtractTime 300000 // Віднімання часу (5 хвилин) unsigned long timerDuration = 150000; // Початкова тривалість (2:30) unsigned long startTime; bool timerRunning = false; void setup() { pinMode(RELAY_PIN, OUTPUT); pinMode(ADD_TIME_BTN, INPUT_PULLUP); pinMode(SUB_TIME_BTN, INPUT_PULLUP); digitalWrite(RELAY_PIN, HIGH); // Спочатку вимкнено Serial.begin(9600); if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) { Serial.println(F("SSD1306 allocation failed")); for(;;); // Не продовжуємо, якщо дисплей не ініціалізувався } display.clearDisplay(); display.setTextSize(1); display.setTextColor(SSD1306_WHITE); display.setCursor(0, 0); display.println("Ready to solder!"); display.display(); delay(2000); startTimer(); } void loop() { // Перевірка кнопок if (digitalRead(ADD_TIME_BTN) == LOW) { if (timerDuration < MAX_TIMER_DURATION) { timerDuration += addTime; if (timerDuration > MAX_TIMER_DURATION) { timerDuration = MAX_TIMER_DURATION; } } delay(200); // Дебаунсинг } if (digitalRead(SUB_TIME_BTN) == LOW) { if (timerDuration > subtractTime) { timerDuration -= subtractTime; } delay(200); // Дебаунсинг } // Перевірка таймера if (timerRunning) { unsigned long elapsedTime = millis() - startTime; if (elapsedTime >= timerDuration) { // Таймер закінчився timerRunning = false; digitalWrite(RELAY_PIN, LOW); displayTimeUp(); } else { // Оновлення дисплею updateDisplay(timerDuration - elapsedTime); } } } void startTimer() { startTime = millis(); timerRunning = true; digitalWrite(RELAY_PIN, HIGH); } void updateDisplay(unsigned long remainingTime) { display.clearDisplay(); // Показати залишок часу int minutes = remainingTime / 60000; int seconds = (remainingTime % 60000) / 1000; display.setTextSize(1); display.setCursor(0, 0); display.print("Time left: "); display.print(minutes); display.print(":"); if (seconds < 10) display.print("0"); display.println(seconds); // Анімація паяльника static int frame = 0; frame = (frame + 1) % 4; display.setCursor(0, 16); display.print("Soldering"); for (int i = 0; i < frame; i++) { display.print("."); } // Анімація витяжки display.setCursor(70, 16); display.print("Fan: ON"); display.display(); } void displayTimeUp() { display.clearDisplay(); display.setTextSize(2); display.setCursor(20, 8); display.println("TIME!"); display.display(); }
В коді можно змінити початкове значення після включення, в мене це 2хв 30сек. Це налаштування задається timerDuration. Кнопка на піні 5 додає 10хв addTime.
Кнопка на піні 6 віднімає 5хв subtractTime. Ну і максимально можно поставити час 1година MAX_TIMER_DURATION, потім перерва і можно знову запускати.
Інструкція зі збірки та налаштування
Нижче наведено покрокову інструкцію для збірки та налаштування нашого таймера для безпечної пайки. Слідуйте вказівкам у правильному порядку для успішного завершення проекту.
Підготовка компонентів — Переконайтеся, що маєте всі необхідні компоненти: Arduino Nano, OLED дисплей 0.91" (I2C), понижуючий DC-DC перетворювач, 2 кнопки та реле.
Підключення дисплея — Підключіть OLED дисплей до Arduino Nano:
• VCC дисплея → 5V Arduino
• GND дисплея → GND Arduino
• SCL дисплея → A5 Arduino
• SDA дисплея → A4 Arduino
Підключення кнопок — Підключіть кнопки до Arduino:
• Одна ніжка першої кнопки → пін 5
• Одна ніжка другої кнопки → пін 6
• Інші ніжки обох кнопок → GND
Підключення реле — Підключіть реле до Arduino:
• VCC реле → 5V Arduino
• GND реле → GND Arduino
• IN реле → пін 4 Arduino
Підключення DC-DC перетворювача — Налаштуйте DC-DC перетворювач:
• Вхід: 24В від вашого блоку живлення
• Вихід: налаштуйте на 5В для живлення Arduino
• Під'єднайте вихід перетворювача до Vin та GND Arduino
Встановлення бібліотек — Встановіть необхідні бібліотеки в Arduino IDE:
• Wire.h (стандартна бібліотека)
• Adafruit_GFX.h (через менеджер бібліотек)
• Adafruit_SSD1306.h (через менеджер бібліотек)
Налаштування скетча — Відкрийте скетч у Arduino IDE та налаштуйте параметри:
• timerDuration = 150000; — початковий час роботи (2:30)
• addTime = 600000; — додаємо 10 хвилин при натисканні кнопки
• subtractTime = 300000; — віднімаємо 5 хвилин при натисканні кнопки
• MAX_TIMER_DURATION = 3600000; — максимальний час роботи (1 година)
Завантаження скетча — Завантажте скетч на Arduino Nano:
• Підключіть Arduino до комп'ютера
• Виберіть правильну плату та порт в Arduino IDE
• Натисніть "Завантажити"
Тестування — Перевірте роботу пристрою:
• Після завантаження скетча та подачі живлення, на дисплеї має з'явитися привітання "Ready to solder!"
• Через 2 секунди таймер почне відлік
• Перевірте роботу кнопок додавання та віднімання часу
• Перевірте спрацювання реле після закінчення відліку
Фінальна збірка — Закріпіть компоненти у корпусі:
• Розмістіть всі компоненти в корпусі (можна використати коробку від будь-якого пристрою)
• Виведіть дисплей та кнопки на передню панель
• Забезпечте надійне з'єднання всіх компонентів
• Зафіксуйте дроти, щоб запобігти їх випадковому від'єднанню
Логіка роботи пристрою
Розберемо основну логіку роботи таймера для безпечної пайки згідно зі скетчем:
- Ініціалізація: При запуску Arduino відбувається налаштування пінів, ініціалізація дисплея та показ привітання "Ready to solder!" на 2 секунди.
- Запуск таймера: Після ініціалізації автоматично запускається таймер з початковим значенням timerDuration (2 хвилини 30 секунд).
- Керування реле: При запуску таймера реле активується (HIGH), вмикаючи паяльник та витяжку.
- Відображення інформації: На дисплеї показується залишок часу у форматі "хвилини:секунди", а також анімація роботи паяльника та витяжки.
- Керування часом: Кнопкою на піні 5 можна додати 10 хвилин до поточного відліку, але не більше MAX_TIMER_DURATION (1 година).
- Зменшення часу: Кнопкою на піні 6 можна зменшити час на 5 хвилин, але не менше ніж subtractTime.
- Завершення відліку: Коли час закінчується, реле деактивується (LOW), вимикаючи паяльник та витяжку, а на дисплеї з'являється напис "TIME!".
- Перезапуск: Для перезапуску таймера після його завершення необхідно перезавантажити Arduino (відключити та підключити живлення).
loop()
постійно перевіряється стан кнопок та час, що залишився. Якщо натиснуто кнопку, час додається або віднімається. Якщо час вийшов, реле вимикається.
Практична реалізація
Після того як скачали всі бібіліотеки для дисплея, зібрали все по схемі, на практиці це виглядає так:

Це поки не дороблена версія, зібрано на швидку руку для випробовування. Після збірки і вдалої прошивки на дісплеї повинні побачити наступне:

А також на дісплеї додав анімацію, що паяльник гріється, а витяжка крутиться. І час який залишився до відключення реле, якщо треба додати час то зажимаємо кнопку і час додається, якщо іншу кнопку то віднімається час. Коли час закінчиться реле вимикається і на дісплеї буде напис TIME!.
Пробував зробити данний девайс на датчику руху, і тут свої корективи вносить домашні питомці, діти, тощо. Тому краще вручну настройку часу, сама залізна безпека присутності.
Бажаю і вам зробити безпечну пайку разом з myproject.com.ua. А також слідкуй в телеграм каналі за анонсами нових публікацій.
© 2025 Мій Проект. Автор: Ardu_miha. Використання матеріалів дозволено лише з посиланням на джерело.
Написати коментар