Управление вентилятором Raspberry Pi 3

Вентилятор при подключении на разъем +5V, постоянно крутится, и продолжает работать даже тогда, когда вы подали команду выключить компьютер. Поэтому необходимо создать управление вентилятором. Для управления вентилятором воспользуемся, предустановленным в операционную систему Debian, языком программирования python3. В самом начале написания программы управления, столкнулся с тем, что не все модули языка python3 установлены. Вызовем все модули python3: $ python3 в коммандной строке python3 набрать: >>> help('modules') Ознакомившись со списком методов python3, решил писать программу используя только предустановленные методы. После старта программы проверяем, если файла file_log не существует, создаем его и прописываем шапку в первую строку файла 'CPU temperature:\n'. Современная запись создания файла "whith open(file_log, 'w') as f_log:" не сработала, проверив список модулей, решил использовать стандарную запись: def OpenLog(): f_log = open(file_log, 'w', encoding='utf-8') f_log.write('CPU temperature:\n') f_log.close() if not os.path.exists(file_log): OpenLog() При всех последующих запусках программы, проверяем длину файла file_log, если она больше max_size_log, то меняем имя файла на имя с приставкой '_old' и создаем новый файл. Таким образом, можно будет ограничить размер файла и в тоже время сохранить ранее снятые показания температуры процессора, для статистики: if os.stat(file_log).st_size > max_size_log: os.rename(file_log, file_log + '_old') OpenLog() Далее считываем температуру процессора и приводим ее к виду числа с двумя знаками после запятой: def get_temp(): f_sys = open(file_sys, 'r') temp = f_sys.read() temp = round(float(temp) / 1000, 2) return temp temp = get_temp() Инициализируем GPIO и проверяем температуру на максимальное и минимальное значение, и в зависимости от состояния GPIO18, запускаем или останавливаем вентилятор: init_start(stat) if temp > temp_max and not GPIO.input(pin_board): set_stat(1) elif temp < temp_min and GPIO.input(pin_board): set_stat(0) Прописываем данные температуры, состояния вентилятора, даты и времени в файл file_log и завершаем программу: line = 't={:<7} stat={} date={}'.format(temp, GPIO.input(pin_board), time.strftime(date_time, time.localtime(time.time()))) # print(line) f_log = open(file_log, 'a+', encoding='utf-8') f_log.write(line + '\n') f_log.close() sys.exit() Открываем crontab на редактирование: $ sudo crontab -e и в конце файла вписываем строку: */1 * * * * /usr/bin/python3.5 /home/pi/Power.py Перезапускаем службу: $ sudo service cron restart Используем для просмотра состояния: $ sudo service cron status Для просмотра файла file_log: $ cat /home/pi/Temperature/temperature.log Вентилятор расчитан на напряжение 5 Вольт и ток потребления 64 мА, а напряжение на контактах GPIO всего 3,3 Вольта и максимальный ток нагрузки менее 50 мА. Поэтому необходимо собрать усилитель на базе КТ817(с любой буквой), тогда радиатор не потребуется. power.png Проверяем соединение, помня, что "Правильно собранная схема начинает работать сразу" Перезагружать Raspberry Pi не требуется. Скачать программу Power.py Напишите свое мнение или предложения на email: info@mysaleout.ru