Оглавление:

Интеллектуальное управление вентилятором Raspberry Pi с помощью Python и Thingspeak: 7 шагов
Интеллектуальное управление вентилятором Raspberry Pi с помощью Python и Thingspeak: 7 шагов

Видео: Интеллектуальное управление вентилятором Raspberry Pi с помощью Python и Thingspeak: 7 шагов

Видео: Интеллектуальное управление вентилятором Raspberry Pi с помощью Python и Thingspeak: 7 шагов
Видео: Скорость вращения вентилятора Raspberry Pi Pico с контролем температуры | ШИМ 2024, Июль
Anonim
Интеллектуальное управление вентилятором Raspberry Pi с помощью Python и Thingspeak
Интеллектуальное управление вентилятором Raspberry Pi с помощью Python и Thingspeak

Краткий обзор

По умолчанию вентилятор напрямую подключен к GPIO - это подразумевает его постоянную работу. Несмотря на относительно тихую работу вентилятора, его непрерывная работа не является эффективным использованием активной системы охлаждения. При этом постоянная работа вентилятора может просто раздражать. Кроме того, если Raspberry Pi выключен, вентилятор все равно будет работать при подключении питания.

В этой статье будет показано, как с помощью простых и несложных манипуляций превратить имеющуюся систему охлаждения в умную, которая будет включаться только тогда, когда это действительно нужно процессору. Вентилятор будет включаться только при интенсивной эксплуатации, что снижает энергопотребление вентилятора и уровень шума. Также продлевает срок службы вентилятора, отключая его, когда он не нужен.

Что вы узнаете

Как реализовать скрипт Python для управления вентилятором в зависимости от текущей температуры процессора Raspberry с помощью двухпозиционного управления с температурным гистерезисом. Как передать данные с вашего RaspberryPi в Things Speak Cloud.

Запасы

Компоненты, которые вам потребуются для этого проекта, следующие:

  • Компьютер Raspberry Pi 4, модель B, 4 ГБ
  • NPN транзистор S8050330ohms резистор
  • Бронированный алюминиевый металлический корпус с двумя вентиляторами для Raspberry Pi
  • Соединительные кабели
  • Макетная плата

Шаг 1: построение схемы

Построение схемы
Построение схемы
Построение схемы
Построение схемы

Схема довольно простая. Питание вентилятора отключается с помощью NPN-транзистора. В этой конфигурации транзистор действует как переключатель нижнего уровня. Резистор нужен только для ограничения тока через GPIO. Максимальный выходной ток GPIO Raspberry Pi составляет 16 мА. Я использовал 330 Ом, что дает нам базовый ток около (5-0,7) / 330 = 13 мА. Я выбрал NPN-транзистор S8050, поэтому переключить нагрузку 400 мА от обоих вентиляторов не проблема.

Шаг 2. Зарегистрируйте температуру процессора с помощью ThingSpeak

Регистрировать температуру процессора с помощью ThingSpeak
Регистрировать температуру процессора с помощью ThingSpeak

ThingSpeak - это платформа для проектов, основанных на концепции Интернета вещей. Эта платформа позволяет создавать приложения на основе данных, собранных с датчиков. Основные возможности ThingSpeak включают: сбор данных в реальном времени, обработку и визуализацию данных. ThingSpeak API не только позволяет отправлять, хранить и получать доступ к данным, но также предоставляет различные статистические методы их обработки.

ThingSpeak может интегрировать популярные устройства и сервисы, такие как:

  • Ардуино
  • Малиновый пии
  • oBridge / RealTime.io
  • Электрический чертенок
  • Мобильные и веб-приложения
  • Социальные сети
  • Анализ данных в MATLAB

Прежде чем мы начнем, вам понадобится учетная запись на ThingSpeak.

  1. Перейдите по следующей ссылке и зарегистрируйтесь в ThingSpeak.
  2. После активации учетной записи войдите в систему.
  3. Перейдите в "Каналы" -> "Мои каналы".
  4. Нажмите кнопку «Новый канал».
  5. Введите название, описание и поля данных, которые вы хотите загрузить
  6. Нажмите кнопку «Сохранить канал», чтобы сохранить все свои настройки.

Нам нужен ключ API, который мы позже добавим в код Python, чтобы загрузить температуру нашего процессора в облако Thingspeak.

Щелкните вкладку Ключи API, чтобы получить Ключ API записи.

Когда у вас есть ключ API записи, мы почти готовы загрузить наши данные.

Шаг 3. Получение температуры процессора от Raspberry Pi с помощью Python

Сценарий основан на получении температуры процессора, которое происходит каждую секунду. Его можно получить из терминала, запустив команду vcgencmd с параметром measure_temp.

vcgencmd measure_temp

Библиотека Subprocess.check_output () использовалась для выполнения команды, а затем с использованием регулярного выражения для извлечения фактического значения из возвращаемой строки.

из подпроцесса импорта check_output

из повторного импорта findalldef get_temp (): temp = check_output (["vcgencmd", "measure_temp"]). decode () temp = float (findall ('\ d + \. / d +', temp) [0]) return (temp) печать (get_temp ())

После получения значения температуры данные необходимо отправить в облако ThingSpeak. Используйте свой ключ API записи, чтобы изменить переменную myApi в приведенном ниже коде Python.

из запроса на импорт urllib

from re import findall from time import sleep from subprocess import check_output myAPI = '###############' baseURL = 'https://api.thingspeak.com/update?api_key=% s '% myAPIdef get_temp (): temp = check_output (["vcgencmd", "measure_temp"]). decode () temp = float (findall (' / d + \. / d + ', temp) [0]) return (temp) try: while True: temp = get_temp () conn = request.urlopen (baseURL + '& field1 =% s'% (temp)) print (str (temp)) conn.close () sleep (1) за исключением KeyboardInterrupt: print ("Выход нажал Ctrl + C")

Шаг 4: Управление вентилятором в зависимости от температуры

Скрипт Python, показанный ниже, реализует логику, которая включает вентилятор, когда температура поднимается выше tempOn, и выключается только тогда, когда температура опускается ниже порогового значения. Таким образом, вентилятор не будет быстро включаться и выключаться.

импортировать RPi. GPIO как GPIO

import sys from re import findall from time import sleep from subprocess import check_output def get_temp (): temp = check_output (["vcgencmd", "measure_temp"]). decode () temp = float (findall ('\ d + \. / d + ', temp) [0]) return (temp) try: GPIO.setwarnings (False) tempOn = 50 threshold = 10 controlPin = 14 pinState = False GPIO.setmode (GPIO. BCM) GPIO.setup (controlPin, GPIO. OUT, initial = 0), а True: temp = get_temp (), если temp> tempOn, а не pinState или temp <tempOn - threshold и pinState: pinState = not pinState GPIO.output (controlPin, pinState) print (str (temp) + "" + str (pinState)) sleep (1) за исключением KeyboardInterrupt: print («Exit нажат Ctrl + C») except: print («Other Exception») print («--- Start Exception Data:») traceback.print_exc (limit = 2, file = sys.stdout) print ("--- End Exception Data:") наконец: print ("CleanUp") GPIO.cleanup () print ("Конец программы")

Шаг 5: окончательный код Python

Основной код Python можно найти в моей учетной записи GitHub по следующей ссылке. Не забудьте указать свой собственный ключ API записи.

  1. Войдите в свою доску Raspberry PI
  2. Выполните следующую команду на терминале

python3 cpu.py

Шаг 6. Мониторинг данных через Thingspeak Cloud

Мониторинг данных через Thingspeak Cloud
Мониторинг данных через Thingspeak Cloud

Через некоторое время откройте свой канал на ThingSpeak, и вы увидите, как температура загружается в облако Thingspeak в режиме реального времени.

Шаг 7. Запустите скрипт Python при запуске

Для этого в конце файла /etc/rc.local:

sudo nano /etc/rc.local

Вам нужно поместить команду запуска скрипта перед строкой exit 0:

sudo python /home/pi/cpu.py &

Наличие символа & в конце команды обязательно, так как это флаг для запуска процесса в фоновом режиме. После перезагрузки скрипт автоматически запустится и вентилятор включится при выполнении заданных условий.

Рекомендуемые: