Оглавление:

Индикатор загрузки процессора Raspberry Pi: 13 шагов
Индикатор загрузки процессора Raspberry Pi: 13 шагов

Видео: Индикатор загрузки процессора Raspberry Pi: 13 шагов

Видео: Индикатор загрузки процессора Raspberry Pi: 13 шагов
Видео: Первый взгляд на Raspberry Pi 5. Тест Памяти и CPU. Установка Home Assistant Operation System. 2024, Июль
Anonim
Индикатор загрузки процессора Raspberry Pi
Индикатор загрузки процессора Raspberry Pi

При запуске Raspberry Pi (RPI) в режиме безголового управления без монитора консоли отсутствуют какие-либо конкретные визуальные индикаторы, позволяющие определить, что RPI действительно что-то делает.

Несмотря на то, что удаленный терминал используется с SSH, время от времени требуется выполнение команды Linux, чтобы проверять, насколько нагрузка на систему сейчас нагружает ЦП.

Таким образом, эта схема предназначена для немедленного распознавания реальной активности ЦП (возможно, полуреальной или почти реальной) для выполнения текущих прикладных нагрузок на систему.

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

К тому же, как это ни парадоксально увеличилась сложность кода Python, будет больше нагружать ЦП из-за увеличения нагрузки на систему.

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

И эта схема добавит немного забавной функции к RPI, работающему без головы.

Шаг 1. Команда Linux для проверки загрузки процессора

Команда Linux для проверки загрузки процессора
Команда Linux для проверки загрузки процессора

Доступны различные команды Linux для проверки загрузки процессора, такие как top, iostat, sysstat и uptime.

Каждая команда имеет определенные преимущества с точки зрения разнообразия информации и простоты отображения данных.

Команда Top - это наиболее информативные и очень подробные данные, доступные для немедленного распознавания нагрузки на систему.

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

Команда iostat предоставляет подробную информацию о загрузке системы, разделяя пользовательские и системные задания очереди, которые в настоящее время загружают процессор.

Но также излишне сложно получить текущую нагрузку на ЦП так же быстро и интуитивно понятно.

В случае безотказной работы доступны очень простые данные о загрузке системы в виде среднего значения за 1 минуту, среднего за 5 минут и суммарного среднего за 15 минут.

Как упоминалось выше, упрощение кода Python необходимо, поскольку он должен выполняться довольно часто, например каждые 5 или 10 секунд.

Когда код Python становится сложным, он сильно нагружает процессор.

Это своего рода парадокс, что вы обременяете RPI следить за загрузкой системы.

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

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

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

Шаг 2: схемы

Схемы
Схемы

Эта схема будет получать 4 разных уровня (например, 00-> LOW, 01-> LIGHT, 10-> MEDIUM, 11-> HIGH) текущей загрузки ЦП от RPI через два входа оптопары.

74LS139 (декодер от 2 до 4 и демультиплексор) декодирует два битовых входа в один или один выход из 4 возможных способов, таких как 00 (LOW) -> B0, 01 (LIGHT) -> B1, 10 (MEDIUM) -> B2., 11 (ВЫСОКИЙ) -> B3.

Поскольку выход 74LS139 имеет обратный уровень (вход 00 -> B0 становится низким, а остальные 3 выхода - высоким), инвертор 74HC04 используется для повторного переключения выхода в обратном направлении.

Когда выходной сигнал 74LS139 является нормальным ВЫСОКИМ, 74HC04 не нужен.

Но почему-то 74LS139 так устроено. (Пожалуйста, проверьте таблицу истинности 74LS139)

Когда выбран любой из выходов 74LS139, он активирует один определенный аналоговый переключатель среди 4 переключателей, включенных в микросхему CD4066.

CD4066 может поддерживать 4 аналоговых переключателя, и каждый переключатель имеет 1 управляющий вход и 2 аналоговых выхода.

Когда управляющий вход становится ВЫСОКИМ, соединение двух выходов становится низким импедансом (сопротивление становится равным 0), а другие становятся ВЫСОКИМ сопротивлением (сопротивление между двумя выходными путями становится несколько сотен мегаом).

Просто управляйте 1 (вывод 13) CD4066 в ВЫСОКОЕ состояние, путь между выходом 1 (контакт 1) и выходом 2 (контакт 2) подключен, в то время как другие выходы не подключены (в состоянии высокого импеданса).

Точно так же ВЫСОКИЙ вход управления 2 (контакт 5) соединяет выход 1 (контакт 4) и выход 2 (контакт 3), в то время как другие выходы отключены.

Затем LM555 мигает двумя светодиодами с разной частотой мигания.

Как вы можете видеть на схеме выше, NE555 будет работать с одним из значений сопротивления из 4 (12k, 24k, 51k, 100k) возможных уровней сопротивления.

Шаг 3: NE555 Генерация другой тактовой частоты

NE555 Другая тактовая частота
NE555 Другая тактовая частота

Как показано на схеме, NE555 будет работать с одним из возможных значений сопротивления, таких как 12 кОм, 24 кОм, 51 кОм и 100 кОм.

Фактически, часть схемы синхронизации NE555 является основной визуальной индикацией, поддерживающей часть схемы.

Принципиальная схема работы следующая.

- Когда нет значительной загрузки процессора, программа python, установленная в RPI, отправит 00 выходных данных в схему индикатора. Затем активируются два выходных тракта CD4066 и NE555 работает с номиналом резистора 12 кОм. Поэтому светодиоды мигают 1,5 раза в секунду (мигают довольно быстро)

- ЦП слегка загружен (тогда длина очереди безотказной работы станет 0,1 ~ 0,9 уровня), python отправит 01 в схему. Затем CD4066 активируется с выходами, подключенными к резистору 24 кОм. В результате мигание светодиода уменьшилось в 1,2 раза в секунду (мигание светодиода немного уменьшилось, но все еще немного быстрее)

- Когда загрузка ЦП значительно увеличилась (тогда длина очереди выполнения становится 1,0 ~ 1,9 уровня), python выводит 10 в схему. Затем открывается путь подключения резистора 51 кОм, и NE555 работает 0,8 раза в секунду. Теперь частота мигания значительно снижается.

- Тяжелые нагрузки, отягощающие ЦП, и время безотказной работы становятся длиннее (более 2 заданий будут ожидать выполнения ЦП, а время безотказной работы будет составлять более 2,0). Если выбрано подключение резистора 100 кОм, NE555 будет мигать светодиодом 0,5 раза в секунду (скорость мигания становится очень низкой)

***

Наряду с увеличением нагрузки на систему, соответственно будет уменьшаться и скорость мигания светодиода.

Когда светодиод мигает довольно медленно, значит, RPI явно сильно перегружен.

Таким образом, схема индикации нагрузки сообщит вам текущий уровень нагрузки RPI.

Шаг 4: Детали

Для изготовления этой схемы используются различные микросхемы IC.

Хотя я упоминаю 74LSxx, тип CD40xx старых микросхем IC, вы можете использовать новейшие типы микросхем TTL и CMOS, такие как 74HC4066 и 74ASxx, если выбранная микросхема IC является типом DIP.

Крошечный корпус ИС для поверхностного монтажа также может использоваться, когда вы можете правильно припаять маленькие на универсальной печатной плате.

Остальные - это обычные детали, которые можно легко купить в интернет-магазинах.

- 74LS139 (от 2 до 4 декодеров, демультиплексор) x 1

- 74HC04 (6 инверторов) x 1

- CD4066 (4 аналоговых переключателя IC) x 1

- микросхема таймера NE555 x 1

- Конденсаторы: 10 мкФ x 1, 0,1 мкФ x 1

- Оптопара PC817 x 2 (можно использовать любой обычный 4-контактный оптрон)

- Резисторы: 220 Ом x 4 (ограничение тока светодиода), 4,7 кОм (интерфейс оптопары) x 2, 12 кОм, / 24 кОм / 51 кОм / 100 кОм (управление синхронизацией) x 1

- 2 светодиода (любые разные цвета, такие как желтый, зеленый или красный, зеленый)

- Универсальная плата размером 30 (W) на 20 (H) отверстий (вы можете вырезать универсальную плату любого размера, чтобы она соответствовала этой схеме)

- Оловянная проволока (для изготовления схем разводки на универсальной печатной плате)

- головка штифта (3 штифта) x 3

- Головка IC (4 контакта) x 4

- проводка красного / синего цвета

***

Шаг 5: Создание чертежа печатной платы

Создание чертежа печатной платы
Создание чертежа печатной платы

Хотя я показываю чертеж печатной платы в каждом проекте, схема проводки является лишь справочной, которая поможет вам правильно паять каждую часть на универсальной печатной плате.

Но совсем не обязательно придерживаться этой схемы подключения.

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

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

Используйте чертеж печатной платы только для проверки и подтверждения правильности пайки между частями.

Когда количество TTL или CMOS IC увеличивается, обычно чертеж печатной платы становится довольно сложным, за исключением надлежащей интеграции на одной стороне печатной платы.

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

Шаг 6: пайка

Пайка
Пайка

Я использую вместе оловянную проволоку и обычный проводной кабель, чтобы максимально уменьшить размер печатной платы.

При сравнении с чертежом печатной платы, расположение каждой части полностью изменено.

Но все же чертеж печатной платы используется для проверки правильности соединения между частями при пайке.

Вы можете видеть, что резисторы 12 кОм / 24 кОм / 51 кОм / 100 кОм вставляются в головку вывода IC без пайки.

Следовательно, вы можете заменить резисторы на другие номиналы для удобного изменения схемы работы схемы в дальнейшем.

Шаг 7: Сборка

Сборка
Сборка

Завершенная цепь индикатора нагрузки (далее ИНДИКАТОР) устанавливается в блок RPI музыкального проигрывателя, как показано на рисунке выше.

Этот музыкальный проигрыватель установлен с ЦАП, и я недавно использую его для воспроизведения музыкальных видео.

Об этом блоке RPI я объясню позже, а теперь давайте сосредоточимся на ИНДИКАТОРЕ, поскольку схема является основным предметом этого проекта.

Недавно я купил Raspberry Pi 4 Model B 2GB (далее RPI 4B) для поддержки приложения для воспроизведения видео.

Поскольку RPI 4B имеет повышенную производительность 4-ядерного ЦП, обработка системных нагрузок значительно улучшена по сравнению с RPI 3B +.

Таким образом, выходные данные длины очереди выполнения должны обрабатываться иначе, чем RPI 3B +.

- Для очень обычной загрузки системы, такой как воспроизведение видео, длина очереди выполнения обычно меньше 0,5 (таким образом, НИЗКАЯ загрузка системы будет составлять 0,0 ~ 0,5 уровня)

- Когда добавляется небольшая дополнительная нагрузка на систему, такая как воспроизведение видео и копирование файлов из локального каталога и в локальный каталог, это приводит к небольшой нагрузке на ЦП. (Таким образом, уровень нагрузки LIGHT будет 0,5 ~ 1,0)

- Когда применяются значительные нагрузки, такие как воспроизведение видео в браузере на сайте Youtube и веб-серфинг в другом браузере, скорость работы RPI 4 становится немного медленной (поэтому СРЕДНИЙ уровень нагрузки должен составлять 1.0 ~ 2.0)

- Наконец, загрузка системы RPI 4 становится ВЫСОКОЙ при запуске нескольких веб-браузеров и копировании большого объема файлов на другой сервер RPI через сеть (тогда длина очереди выполнения становится больше 2,0)

***

Эти данные об уровне нагрузки будут использоваться в следующем шаге, который будет разработан на языке Python.

Шаг 8: Пересмотр исходной схемы

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

Из-за нескольких дефектов оригинальной схемы я модифицирую схему, как показано на рисунке выше.

Причины изменения следующие.

- Тактовый импульс NE555 состоит из сигналов HIGH и LOW. Но обычно длительность сигнала HIGH и LOW (t = 1 / f) не одинакова (например, HIGH составляет 70%, а LOW - 30% в исходной схеме). Следовательно, частота мигания двух светодиодов (зеленый / желтый светодиод в оригинальном дизайне) не одинакова (один светодиод горит дольше, чем другой). По этой причине визуальную индикацию миганием светодиода не так легко распознать.

- Поэтому я добавляю больше светодиодов и делаю круговую итерацию с CD4017 для обеспечения легкого распознавания рабочего состояния.

- Также меняется схема мигания светодиода в обратном порядке, например, медленное мигание при НИЗКОЙ нагрузке и более быстрое мигание при ВЫСОКОЙ нагрузке. (Исходная схема заставляет мигать быстрее при НИЗКОЙ нагрузке и медленно мигать при ВЫСОКОЙ нагрузке). В ситуации ВЫСОКОЙ нагрузки любые действия RPI становятся вялыми. А медленное мигание светодиода вас не обрадует. (В психологическом плане выбираю более позитивную схему отображения)

***

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

Шаг 9: изменение исходной схемы

Исходное изменение схемы
Исходное изменение схемы

Добавление CD4017 и 8 светодиодов является серьезной модификацией.

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

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

Вся измененная часть схемы может быть выполнена как дочерняя печатная плата, к которой припаяны CD4017 и 8 светодиодов.

Дочернюю плату можно прикрепить к основной плате (материнской плате), как показано на рисунке в шаге 8.

Шаг 10: тестирование

Видео тестирования всех этапов работы (НИЗКОЕ, ЛЕГКОЕ, СРЕДНЕЕ и ВЫСОКОЕ состояние нагрузки) показано в файле, хранящемся на диске Google ниже.

***

drive.google.com/file/d/1CNScV2nlqtuH_CYSW…

***

В соответствии с текущей загрузкой системы, частота мигания будет изменяться в одном из 4 состояний, показанных на видео.

Шаг 11: код Python

Код Python
Код Python

Поскольку большая часть управляющей логики включена во внешнюю аппаратную схему, операционная логика кода Python относительно проста, включая следующие шаги.

- Получение данных о температуре процессора для сравнения относительности между загрузкой системы и повышением температуры

- Получение средней загрузки системы за 1 минуту из выходных данных времени безотказной работы

- Создание метки времени в формате гг-мм-дд чч: мм: сс

- Запись температуры, загрузки системы вместе с отметкой времени

- В соответствии с текущими выходными данными нагрузки системы (00, 01, 10, 11) на цепь ИНДИКАТОРА

- Спите за 5 секунд до начала шагов, упомянутых выше

Поскольку программе Python требуется строгий отступ в исходном коде, загрузите исходный файл с диска Google, перейдя по ссылке ниже.

***

drive.google.com/file/d/1BdaRVXyFmQrRHkxY8…

***

Поскольку я не использую RPI в качестве настольного компьютера, запускать офисные приложения Libre или веб-браузер очень редко.

Обычно я проигрываю музыкальное видео, копирую / перемещаю файлы или программирую на Python с недавно приобретенным RPI 4B 2GB.

Поэтому в моем случае средняя нагрузка обычно меньше 1.0, и, соответственно, я меняю уровни LOW / LIGHT / MEDIUM / HIGH в своем коде. (В противном случае вы можете изменить условия тестирования)

Но когда вы обычно просматриваете видео Youtube с RPI, обычно происходит более 2,0 загрузок системы.

Шаг 12: Относительность между загрузкой системы и температурой процессора

Относительность между загрузкой системы и температурой процессора
Относительность между загрузкой системы и температурой процессора

Обычно я предполагаю и уверен, что увеличение нагрузки на систему приведет к повышению температуры процессора.

Но до сих пор у меня нет четкого представления о взаимном взаимодействии между ними.

Как вы можете видеть на графике выше, между ними очень сильная взаимосвязь.

- Для удобства сравнения я умножаю 10 на среднюю загрузку системы. В противном случае масштаб загрузки системы очень мал (0,0 ~ 2,0), прямое сравнение затруднено.

- Поскольку охлаждающий вентиляторный контур установлен на проигрывателе музыки Pi, температура процессора никогда не превышает 50 ° C.

- Когда нагрузка на систему находится в диапазоне 0,0 ~ 1,0, температура в диапазоне 45 ~ 48 ° C (металлическая крышка процессора слегка нагревается)

- Но применяется большая нагрузка (обычно веб-браузер и воспроизведение видео на Youtube), резко возрастает нагрузка и, следовательно, температура

***

Поскольку RPI 4B установлен с 4-ядерным ЦП, теоретически производительность не сильно снизится до уровня нагрузки (очередь работоспособности) 4.

Но все же ниже среднего уровня нагрузки 4, потребуется соответствующий контроль температуры.

Шаг 13: Завершение

Доработка
Доработка

Я заканчиваю этот проект, устанавливая ИНДИКАТОР на блок Pi, как на картинке выше.

Во время случайного использования этого блока Pi ИНДИКАТОР редко показывает ВЫСОКИЙ уровень и динамическое мигание светодиода.

Обычно он оставался в состоянии медленного мигания светодиодов (например, НИЗКИЙ или СВЕТЛОЙ уровень).

В любом случае добавленный визуальный индикатор делает немного забавным, по крайней мере, он показывает, что RPI что-то делает прямо сейчас.

Спасибо, что прочитали эту историю…..

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