Serial Monitor в .txt: Як Подружити Arduino та Python (Без СМС та Реєстрації!)
Вступ
Світ Arduino та DIY-електроніки сповнений способів візуалізації даних: яскраві LCD-дисплеї, власні веб-сервери, що транслюють показники на весь світ (або хоча б на ваш смартфон), і навіть повідомлення у Telegram чи Discord. Здається, що ваші дані можуть опинитися будь-де, крім... ну, простого текстового файлу на вашому комп'ютері. Дивно, правда?
Багато хто шукає шляхи, як зберегти логи з Serial Monitor, і часто натрапляє на складні рішення або платні програми. Але навіщо платити більше (або взагалі платити), коли у нас є друг – могутній та гнучкий Python? Саме про це й поговоримо.
Сьогодні ми покажемо простий, але ефективний спосіб записувати дані з Arduino прямо у текстовий файл на вашому ПК. Arduino буде старанно вимірювати та надсилати дані в послідовний порт, а хитрий Python-скрипт буде їх ловити "на льоту", додавати часову мітку і акуратно складати в .txt файл. У результаті ви отримаєте детальний лог подій, який можна переглянути будь-коли, навіть коли інтернет вирішив взяти вихідний.
Serial Monitor — як найкращий друг Arduino: завжди готовий вислухати. Але якщо не записати його мудрість, вона розтане, як код без loop()!
Що Нам Знадобиться? (Мінімальний Набір Юного Дата-Логера)
- Arduino Nano (1252 - код товару): Мозок нашої операції. Вона буде збирати дані. (Вибирайте ту, що лежить ближче або просто подобається!).
- Датчик температури і вологості DHT22 (1502 - код товару): Наш надійний інформатор погоди у кімнаті. Можна взяти і DHT11, якщо DHT22 пішов у відпустку.
- Комп'ютер з встановленим Python: Наш аналітичний центр та сховище даних.
- USB-кабель: Міст між Arduino та комп'ютером.
- Дроти для з'єднання: Кровоносна система нашого проєкту.
Перший "послідовний порт" (RS-232) був стандартизований ще у 1960 році! Він старший за більшість технологій, якими ми користуємося щодня, але досі залишається актуальним для мікроконтролерів та промислового обладнання. Справжній ветеран!
Схема підключення

Gnd до Gnd, VCC датчика до +3,3В (якщо це модуль DHT22, то до +5В), і сигнальний провід до піна 2. Більше нічого не потрібно. Далі переходимо до найцікавішого і познайомимось з Python.
Перед тим, як тикати дроти навмання, згадайте свій гаманець. Він любить, коли ви перевіряєте схему двічі (або тричі!). Бо кожна помилка з полярністю може перетворитися на незаплановану подорож до магазину радіодеталей та сумне прощання з купюрами.
Скетч Arduino
Перш ніж приступити до програмування, переконайтеся, що у вас встановлена бібліотека для роботи з датчиком DHT.
1. Відкрийте Arduino IDE.
2. Перейдіть до Sketch -> Include Library -> Manage Libraries...
3. У пошуку введіть "DHT sensor library" (зазвичай від Adafruit).
4. Знайдіть бібліотеку "DHT sensor library by Adafruit" та натисніть "Install".
Тепер завантажте наступний скетч на Arduino:
#include <DHT.h> #define DHT_PIN 2 #define DHT_TYPE DHT22 DHT dht(DHT_PIN, DHT_TYPE); unsigned long lastReadTime = 0; const unsigned long READ_INTERVAL = 2000; void setup() { Serial.begin(9600); dht.begin(); readAndPrintSensorData(); } void loop() { unsigned long currentTime = millis(); if (currentTime - lastReadTime >= READ_INTERVAL) { readAndPrintSensorData(); lastReadTime = currentTime; } } void readAndPrintSensorData() { float humidity = dht.readHumidity(); float temperature = dht.readTemperature(); if (isnan(humidity) || isnan(temperature)) { Serial.println("Помилка"); } else { Serial.print("Темп: "); Serial.print(temperature); Serial.print(" °C, Вологість: "); Serial.print(humidity); Serial.println(" %"); } }
Після завантаження заходимо в монітор порта і повинні побачити, що в монітор порта приходять значення температури та вологості з інтервалом 2 секунди.

Чому саме 9600 бод? Це класична, стабільна швидкість для простих завдань. Можна використовувати й вищі швидкості (115200 тощо), але тоді потрібно змінити Serial.begin(9600) в Arduino та відповідний параметр у Python-скрипті. Головне – щоб швидкість була однаковою з обох боків.
Знайомимось з Python (Час Великих Справ!)
Якщо у вас ще немає Python, саме час це виправити!
1. Встановлення Python:
- Зайдіть на офіційний сайт: https://www.python.org/downloads/
- Завантажте останню стабільну версію для вашої операційної системи.
- Під час встановлення ОБОВ'ЯЗКОВО поставте галочку біля "Add Python X.X to PATH". Це дуже важливо, щоб ви могли запускати Python з командного рядка. В інших опціях також можна сміливо ставити галочки (особливо біля "pip").
2. Встановлення бібліотеки pyserial:
- Відкрийте командний рядок (на Windows: Win+R, ввести cmd, Enter. На MacOS/Linux: відкрийте Terminal).
- Перевіримо, чи встановився Python та pip (менеджер пакетів Python):
python --version pip --version
Якщо команди видають версії, все гаразд.
- Тепер встановимо бібліотеку, яка дозволить Python спілкуватися через послідовний порт:
pip install pyserial
Ви повинні побачити повідомлення про успішне встановлення.
pip install ... – це як заклинання для Python-розробника. Промовив – і потрібна функціональність з'явилася з нізвідки (тобто з інтернету). Головне – не помилитись у назві заклинання, а то можна викликати не ту бібліотеку!
Створюємо Python-скрипт для запису даних
Переконайтеся, що монітор порта Arduino IDE закритий! Це дуже важливо, оскільки тільки одна програма може використовувати послідовний порт одночасно.
Тепер створіть текстовий файл з ім'ям serial_logger.py і додайте в нього наступний код:
import serial import datetime port = 'COM3' baudrate = 9600 ser = serial.Serial(port, baudrate, timeout=1) def write_to_file(data): with open("arduino1.txt", "a") as file: timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") file.write(f"[{timestamp}] {data}\n") try: while True: if ser.in_waiting > 0: line = ser.readline().decode('utf-8').strip() if line: print(line) write_to_file(line) except KeyboardInterrupt: print("Программа завершена.") finally: ser.close()
І в рядку port = 'COM3' треба вказати свій номер порта, такий самий, який був і в Arduino IDE. Збережіть файл і закрийте редактор.
Запускаємо логер
Тепер відкрийте командний рядок (Win+R, введіть cmd):

Перейдіть до директорії, де ви зберегли файл serial_logger.py, використовуючи команду cd. Наприклад:
cd C:\Users\YourUser\Documents\ArduinoProjects
Запустіть скрипт командою:
python serial_logger.py
Скрипт створить файл arduino1.txt у поточній директорії. Якщо все налаштовано правильно, ви побачите, що в консолі почнуть з'являтися дані з Arduino, які одночасно записуватимуться у файл.
Відкривши файл arduino1.txt у будь-якому текстовому редакторі, ви побачите записи з часовими мітками:

І якщо закрити цей файл та знову відкрити, то записи збільшаться, і ви нічого не пропустите.
Чому COM-порти так дивно нумеруються (COM1, COM3, COM8...)? Це спадок від старих систем, де фізичні порти мали фіксовані адреси. Сучасні USB-to-Serial перетворювачі отримують номери динамічно, і іноді система "губить" старі номери, призначаючи все вищі й вищі. Тому не дивуйтесь, якщо ваша Arduino раптом опиниться на COM21!
Щось пішло не так? (Швидка допомога)
Помилка "Serial Error" або "Could not open port COMx":
- Перевірте, чи правильно вказали номер COM-порту у Python-скрипті
- Переконайтеся, що Arduino підключена до комп'ютера і визначається системою
- Найголовніше: Перевірте, чи закритий Serial Monitor в Arduino IDE або будь-яка інша програма, що може використовувати цей порт
- Спробуйте відключити та знову підключити Arduino до USB
- Перезавантажте комп'ютер
У консолі Python нічого не з'являється:
- Перевірте, чи однакова швидкість порту (baudrate у Python та Serial.begin() в Arduino)
- Перевірте якість USB-кабелю та з'єднань на макетній платі
- Переконайтеся, що Arduino надсилає дані
Команда python або pip не знайдена:
- Ви забули поставити галочку "Add Python to PATH" під час встановлення Python
- Перевстановіть Python, не забувши про цю галочку
На цьому все! В монітор порта можна вивести що завгодно з Arduino IDE, а це дає змогу зберігати в текстовий файл що завгодно. +1 до виводу інформації.
© 2025 Мій Проект. Автор: Ardu_miha. Використання матеріалів дозволено лише з посиланням на джерело.
Написати коментар