Управление вентилятором 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 и проверяем температуру на максимальное и минимальное значение, и в зависимости от состояния GPIO контакта 14, запускаем или останавливаем вентилятор: 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Г или на аналоге. Базу транзистора, через ограничивающий базовый ток резистор сопротивлением 1кОм(МЛТ-0,125), подключаем к GPIO14. Эммитер транзистора соединяем с GND платы. Коллектор транзистора к "минусу" вентилятора. "Плюс" вентилятора подключаем к +5V на плате. Проверяем соединение, помня, что "Правильно собранная схема начинает работать сразу" Перезагружать Raspberry Pi не требуется, все начинает работать сразу. Скачать программу Power.py Напишите свое мнение или предложения на email: info@mysaleout.ru