Программа контроля температуры вариатора
Функционал:
* Мониторинг текущей температуры вариатора
* Запуск оповещения при превышении установленного порога
* Сохранение истории температур
* Настройка параметров работы
Интерфейс:
* Главное окно: отображает текущую температуру, пороговое значение и статус оповещения.
* Настройки: позволяет задать пороговое значение, интервал опроса датчика и время сохранения истории.
* История: отображает график температуры в течение заданного периода.
Структура кода:
main.py — основная программа
«`python
import os
import time
import threading
from datetime import datetime
# Импорт необходимых модулей
import RPi.GPIO as GPIO
import matplotlib.pyplot as plt
# Создание объекта датчика температуры
sensor = MCP9808()
# Установка вывода GPIO для светодиода оповещения
led_pin = 21
GPIO.setmode(GPIO.BCM)
GPIO.setup(led_pin, GPIO.OUT)
# Установка порогового значения температуры
temperature_threshold = 90
# Установка интервала опроса датчика (в секундах)
poll_interval = 1
# Установка времени сохранения истории (в днях)
history_days = 7
# Флаг для запуска потока сбора данных
data_acquisition_running = False
# Список для хранения значений температуры
temperature_history = []
def main():
# Запуск потока сбора данных
start_data_acquisition()
# Основной цикл
while True:
# Получение текущей температуры
current_temperature = sensor.get_temperature()
# Обновление интерфейса
update_interface(current_temperature)
# Проверка превышения порогового значения
if current_temperature > temperature_threshold:
# Включение светодиода оповещения
GPIO.output(led_pin, GPIO.HIGH)
else:
# Выключение светодиода оповещения
GPIO.output(led_pin, GPIO.LOW)
# Добавление текущей температуры в список истории
temperature_history.append(current_temperature)
# Сохранение истории температур
save_history()
# Ожидание обновления данных
time.sleep(poll_interval)
def start_data_acquisition():
global data_acquisition_running
data_acquisition_running = True
threading.Thread(target=data_acquisition).start()
def data_acquisition():
while data_acquisition_running:
# Получение текущей температуры
current_temperature = sensor.get_temperature()
# Добавление текущей температуры в список истории
temperature_history.append(current_temperature)
# Ожидание обновления данных
time.sleep(poll_interval)
def update_interface(current_temperature):
# Обновление значения температуры
current_temperature_label.setText(f’Текущая температура: {current_temperature} °C’)
# Обновление статуса оповещения
if current_temperature > temperature_threshold:
alert_status_label.setText(‘Превышено пороговое значение’)
else:
alert_status_label.setText(‘Температура в норме’)
def save_history():
# Получение текущей даты и времени
now = datetime.now()
# Формирование имени файла истории
history_file = f’history_{now.strftime(«%Y-%m-%d_%H-%M-%S»)}.csv’
# Сохранение истории температур в файл CSV
with open(history_file, ‘w’) as f:
for temperature in temperature_history:
f.write(f'{temperature}n’)
if __name__ == ‘__main__’:
main()
«`
Требования к оборудованию:
* Датчик температуры MCP9808
* Светодиод
* Макетная плата
* Соединительные провода
Установка:
1. Подключите датчик MCP9808 к макетной плате.
2. Подключите светодиод к макетной плате.
3. Подключите Raspberry Pi к макетной плате и включите питание.
4. Загрузите код программы и запустите ее.
Использование:
* Запустите программу.
* Установите пороговое значение температуры в настройках.
* Программа будет постоянно отслеживать температуру и отображать ее на главном окне.
* Если температура превысит пороговое значение, загорится светодиод оповещения и программа сохранит историю температур в файл CSV.