Led индикатор загруженности цп

ИНДИКАТОР ЗАГРУЗКИ ПК И SSD

USB монитор загрузки компьютера — это устройство на базе PIC18F2550, которое показывает производительность вашего компьютера с помощью двух аналоговых стрелочных измерителей и индикатора RGB LED. Конструкция основана на стандартном VU-метре, который управляется с помощью ШИМ от микроконтроллера.

Вместо одноцветного мигающего светодиода (как в типовом ПК) в этом проекте используется RGB-светодиод, интенсивность которого изменяется в зависимости от уровня использования загрузки процессора, а цвет — от чтения / записи HDD. Также была добавлена кнопка, позволяющая быстро включать и отключать устройство без необходимости делать это мышкой на экране.

Управляющая программа для PIC18F2550 написана на языке Hi-Tech C, а программное обеспечение хоста Windows на C # с использованием Open Source Framework для устройств USB Generic HID на основе PIC18F и Windows.

Аппаратная часть

Аппаратное обеспечение основано на микроконтроллере PIC18F2550, который имеет встроенный USB. Минимальное количество компонентов использовалось для подключения устройства к порту USB, а также к коммутатору, стрелочным индикаторам и LED RGB. Общая принципиальная схема приведена далее.

Два потенциометра включены в конструкцию, чтобы провести быструю калибровку мощности полного отклонения, требуемой VU-метром (поскольку это может меняться на разных стрелочниках). Резисторы RGB LED были выбраны в соответствии с техническими данными светодиодов, чтобы обеспечить максимальную яркость, так как будем контролировать выход с помощью ШИМ. МК PIC работает на частоте 20 МГц, что позволяет использовать полную частоту ФАПЧ 48 МГц (это полезно, поскольку плавное ШИМ-управление светодиодом требует максимально возможной скорости процессора).

Плата печатная монитора загрузки

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

Обратите внимание, что разъем USB направлен вниз, это позволяет подключить соединение внутри корпуса, позволяя проложить кабель по задней панели устройства. Возможно заменить кабель USB, если требуется, на более длинный или короткий, либо вообще напрямую припаять кабель к печатной плате.

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

Светодиод RGB тут с прозрачными линзами, это означает что смешение цветов трудно увидеть крупным планом, чтоб поправить это можете рассеять свет линзы, отполировав ее до молочно-белой. Например протерев её тонкой наждачной бумагой.

Чтобы изменить шкалу VU-метра, снимите пластиковую крышку с передней части и используйте острый нож, чтобы срезать существующую.

После удаления наклейки отсканируйте изображение в Фотошопе и проведите замену логарифмической линейной процентной шкалой.

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

Прошивка контроллера

Управляющая программа контролирует положение двух индикаторов с помощью двух встроенных модулей генератора ШИМ, включенных в PIC18F2550. Это обеспечивает точную ШИМ с 10-битным разрешением без нагрузки на сам процессор. Программа принимает процент от 0 до 100 и устанавливает соответствующий рабочий цикл для перемещения стрелок.

Единственная проблема здесь заключается в том, что измерители VU являются в основном логарифмическими (посмотрите на расстояния на исходной маркировочной панели, вы увидите, что разметка дБ не ровная, с правой стороны измерителя наблюдается гораздо большее деление на дБ). Это означает, что при рабочем цикле 50% стрелка будет указывать чуть вправо, а не прямо, как здесь нужно.

Для перевода из линейной шкалы в логарифмическую требуется немного работы и математики. Сначала настроим устройство и подключим мультиметр к выходу ШИМ от PIC, чтобы измерить эффективный выход в мВ. По мере увеличения рабочего цикла измерим выходную мощность в мВ, чтобы получить 25%, 50%, 75% и 100% по новой шкале. Это позволяет построить график, показывающий взаимосвязь между входным напряжением и отображаемым процентом:

Как видите на рисунке, когда была получена аппроксимация кривой логарифмического выхода, использовалась функция линии тренда в Excel, чтобы вычислить аппроксимацию полинома для кривой. Затем этот расчет был скопирован в программу, что позволило МК рассчитать правильную базу рабочих циклов ШИМ на желаемом процентном соотношении.

Для светодиода RGB устройству потребовалось еще 3 канала ШИМ, поскольку VU-метр использует 2 встроенных генератора ШИМ. Цикл широтно-импульсной модуляции светодиодных цветов составляет 60 Гц и дает 128 уровней яркости.

Чтобы получить правильное смешение цветов на LED индикаторе, важно учитывать относительные уровни яркости цветов, так как светодиод RGB не выдает одинаковую яркость для разных цветов. Это приведет к плохо согласованным уровням, когда попытаемся получить определенные комбинации RGB.

Чтобы обойти эту проблему, установил фототранзистор на макетке, подключенный к мультиметру. Фототранзистор выдает переменное напряжение в зависимости от количества света, которое он получает — как простейший экспонометр. Связав светодиод RGB и фототранзистор вместе с помощью черной изоленты, получилось установить ШИМ каждого цвета на разных уровнях. Выходное напряжение фототранзистора для каждого цвета и уровня было затем нанесено на график с использованием Excel. На графике видно что красный — самый яркий цвет, затем синий, а затем зеленый:

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

Выход каждого цвета измеряется с помощью фототранзистора, подключенного к источнику питания 5 В и мультиметра. К светодиоду применяется 256-шаговое разрешение ШИМ, а яркость выводится от 0 до 255 с шагом 32 уровня. Выходное напряжение красного, зеленого и синего измеряется отдельно. Все три цвета показывают линейный вывод.

Исходя из результатов, от 0 до 255 показаны линейные линии тренда, показывающие прогнозируемый уровень освещенности на всех выходных мощностях. Цвет с наименьшей максимальной интенсивностью (зеленый) используется с 0, представляющим выкл, и 255, представляющим максимальную яркость. Два других цвета масштабируются в соответствии с множителем линии тренда:

Красный = 0,0071 * х

Синий = 0,0064 * х

Где х — это шаг ШИМ. Затем надо должны масштабировать результат в соответствии с диапазоном цвета самой низкой интенсивности (зеленого), то есть для красного цвета, если x = 187:

Масштабная интенсивность = (255 / 1,1985) * (0,0047 * x)

Где 1,1985 — максимальная яркость зеленого светодиода, а 255 — количество шагов в шкале.

Затем, чтобы получить требуемый выход ШИМ (x) из масштабированной интенсивности (y), просто решаем уравнение и упрощаем:

х = 47 * у / 71

Таким образом, если яркость по отношению к зеленому равна 255, фактический выход ШИМ для красного должен быть 168,8.

Синий рассчитывается точно так же:

х = 47 * у / 64

Чтобы настроить шкалу, просто меняем последний номер (71 или 64). Если вы увеличиваете число, выходная линия тренда становится более плоской (меньше светоотдачи), а если уменьшаете — линия тренда становится круче (больше светоотдачи). Это можно использовать для настройки на ваш индивидуальный светодиод.

Программное обеспечение индикатора

Программа для Windows написана на C # и позволяет настроить USB-устройство для отображения нескольких индикаторов производительности. Вы можете контролировать следующие элементы:

  1. Загрузка процессора (всего или на ядро)
  2. Использование жесткого диска (всего или на физический диск)
  3. Использование памяти
  4. Использование сети (на карту / устройство)

Вот скриншот приложения в действии:

Кроме того, мониторинг сети позволяет сменить полосу пропускания по умолчанию (которая была бы 1000 Мбит / с для высокоскоростной карты Ethernet) и установить ее на более низкий уровень. У меня обычно это значение 15 Мбит / с, что является максимальной пропускной способностью моего широкополосного соединения.

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

Приложение также поддерживает отображение статуса индикатора жесткого диска на панели задач. Это полезно если вы хотите чтобы и USB-устройство, и рабочий стол показывали, что происходит с жесткими дисками.

Программа также позволяет установить функцию аппаратной кнопки на устройстве. Вы можете использовать это дело чтобы отключить стрелочники, светодиод или оба сразу. Существует дополнительная опция «отключить USB», которая заставляет PIC контроллер вообще отключить порт USB. Файлы скачать можно тут

Индикатор загрузки процессора

11.07.2011 0 комментариев

Необходимость знать текущую загрузку процессора иногда возникает при запуске нескольких программ, требовательных к системным ресурсам. Использовать для этой цели различные утилиты (например, «Диспетчер задач» в Windows XP) не всегда представляется возможным, поскольку некоторые программы (в основном игры) занимают весь экран монитора. Наиболее оптимальным в этом случае, будет вывод информации о загрузке процессора через один из портов компьютера. Предпочтительней использовать COM порт, поскольку LPT порт, обычно занят принтером. Об одной из таких программ далее пойдёт речь.

Читайте также  Арифметические и логические команды

Програма постоянно находится в трее (скриншот ниже)

Для того чтобы программа запускалась при каждом включении компьютера, её следует помесить в папку «Автозагрузка». После запуска программы «CPU.exe», в трее (возле часов) появится иконка в виде небольшого квадратика, цвет которого будет зависеть от текущей загрузки процессора. При минимальной загрузке, цвет будет зелённым, по мере увеличения загрузки, он плавно изменяется до красного. Если навести указатель «мыши» на эту иконку, появится всплывающее сообщение, в котором будет указана в процентах текущая загрузка процессора. Для того чтобы выбрать порт, который будет использоваться этой программой, следует щёлкнуть правой кнопкой «мыши» по иконке и в появившемся меню, выбрать порт Рис. 1. При попытке выбрать недоступный порт (занятый другой программой или отсутствующий), появится сообщение об ошибке Рис. 2. В качестве текущего останется порт, который был выбран до этого. Если в меню будет выбран пункт «нет», ни один из портов использоваться не будет. Для того чтобы завершить работу программы, в меню следует выбрать пункт «выход».

С порта, информация о текущей загрузке поступает на устройство индикации. Схема индикатора приведена на рисунке:

На входе установлен оптрон, обеспечивающий гальваническую развязку порта от индикатора. Он в первую очередь, предназначен для защиты порта от повреждения при ошибках в схеме. Транзистор VT1 усиливает и инвертирует сигнал, прошедший через оптрон. К его коллектору подключён вход приёмника USART, PIC-контроллера.
Микроконтроллер принимает байт и в первую очередь проверяет, равен ли он числу «255». Если равен, тогда на индикатор будет выведено слово «OFF». Если в течение нескольких секунд не поступит данных от компьютера, на индикатор также будет выведено слово «OFF». Программа «CPU.exe» может передать код «255», только в случае смены порта или при завершении своей работы. Если же принятый байт не равняется этому числу, он после двоично-десятичного преобразования будет выведен на индикатор, на котором будет отображаться текущая загрузка процессора в процентах.
В устройстве были использованы резисторы МЛТ-0.125; оксидные конденсаторы К50-35, остальные – К10-17, КТ-1 или аналогичные импортные. Транзистор VT1 – любой из серий КТ315, КТ342, КТ3102, с коэффициентом усиления не менее 100. Диод VD1 – любой из серий КД521, КД522. Интегральный стабилизатор напряжения DA1, можно заменить на КР142ЕН5В или на её импортный аналог – 7805.
Для питания этого устройства был использован блок питания «Электроника Д2-10М, от отечественного микрокалькулятора. В место него можно использовать любой источник питания с выходным напряжением 7…15 вольт при токе нагрузки 50 миллиампер. Допустимо питать устройство непосредственно от компьютера, например, с разъёма USB. Для этого необходимо исключить конденсатор C1 и интегральный стабилизатор DA1, а напряжения питания подавать на конденсатор C2.

— прошивка для микроконтроллера PIC16F628A в HEX формате: cpu_hex_cod

— прошивка для микроконтроллера PIC16F628A в формате программы ProgCode: cpu.sfr

— Программа CPU.exe : cpu_exe

— Рисунок платы под 1 и 3 индикатор, формат LAY

Индикатор загрузки процессора и винчестера своими руками

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

Эта статья состоит из двух независимых частей: индикатор загрузки процессора и винчестера.

Индикатор загрузки винчестера

Перед началом создания индикатора я решил поискать наиболее оптимальную схему. Пролистав ряд сайтов, я обнаружил относительно небольшое разнообразие схем. Один из самых главных критериев – получить качественный мод за сравнительно малые деньги. В большинстве схем применяются микросхемы LM3914, которые не так уж дешевы. Поэтому я стал искать микросхему индикатора уровня с выводом на 5-8 светодиодов. Выбор пал на AN6884 по причине своей малой цены и широкой доступности. Эта микросхема имеет на выходе пять светодиодов, и пропускает через каждый ток 7mA.

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

При нулевой загрузке – фототранзистор внутри оптрона заперт – при этом С6 разряжается через R11. При повышении загрузки винчестера — фототранзистор открыт, и через него начинает заряжаться С6. Напряжение на С6 изменяется пропорционально уровню загрузки. В зависимости от емкости С6 изменяется скорость изменения уровня загрузки.

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

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

Схема индикатора винчестера

Настройка индикатора сводится к установке его чувствительности при помощи R14.

Индикатор загрузки процессора

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

В процессе поисков было найдено два варианта – через LPT и через COM.

Я выбрал COM порт только потому, что он не был задействован, в отличие от LPT. В процессе поисков нашел статью Clear66, в которой он рассказывал о подключении автомобильного тахометра к COM порту. Эта идея мне понравилась больше всего тем, что не нужно делать специальные схемы преобразования цифровых значений в аналоговый сигнал. Для управления используется программа PCTach (ссылка на скачивание — в конце статьи).

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

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

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

Для изготовления индикатора я использовал оргстекло 4-5мм и два светодиода: красного и синего цвета свечения. Из оргстекла вырезается полоска размерами 150мм на 15мм. После этого по краям полоски вырезаются места под светодиоды. Торцы и одну сторону полоски нужно зашкурить нулевой наждачной бумагой до равномерного матового состояния. Это нужно для равномерного рассеивания света. К обратной стороне (которая не обработана наждачной бумагой) и по бокам полоски приклеивается полоска из фольги для отражения лучей светодиодов. Когда полоска готова – приклеиваются светодиоды.

Расположение светодиодов в полоске оргстекла

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

Синий сверху символизирует холод, т.е. низкую загрузку процессора. Красный снизу символизирует нагрев, т.е. большую загрузку. Загрузка процессора пропорциональна переходу цветов между собой. Провода, идущие к плате, и резистор 68-100 Ом фиксируется с одного края полоски при помощи термоклея.

Для плавного изменения яркости светодиодов используется схема формирования ШИМ сигнала. При таком способе управления яркость светодиодов изменяется от отношения времени свечения и времени, когда он не горит. Такой способ лучше управления напряжением тем, что яркость светодиодов изменяется пропорционально напряжению.

Схема состоит из следующих блоков:

формирователь напряжения на DA1.1

генератор пилообразного сигнала на DA2

блок сравнения напряжений на DA1.2 DA1.3

Резисторный делитель R4,R3 устанавливает напряжение равное 1,2 вольт, которое приблизительно равно минимальному напряжению пилообразных импульсов DA2. Импульсы снимаются с третьего вывода COM порта компьютера. При высоком входном уровне конденсатор C1 заряжается через резистор R1 и диод D1. При низком входном уровне конденсатор C1 разряжается через R2. На C1 формируется напряжение пропорциональное уровню загрузки процессор. Так как амплитуда этого напряжения меньше амплитуды пилообразных импульсов DA2 в схеме присутствует усилитель на DA1.1. Регулировка максимального уровня индикатора производится путем изменения коэффициента усиления при помощи R6. Цепочка R7,C3 окончательно сглаживает пульсации напряжения с выхода усилителя. ШИМ формируется посредством сравнения измеряемого напряжения и пилообразных импульсов.

Читайте также  Поставь соседа на запись

DA1.2 формирует прямой, а DA1.3 инвертированный сигнал ШИМ. Эти два сигнала далее поступают на светодиоды, предварительно усиленные ключами на транзисторах T3,T4.

Схема индикатора процессора

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

Индикатор загрузки процессора с различными уровнями загрузки:

Загрузка и температура процессора

В данном разделе собраны гаджеты, которые показывают уровень загрузки процессора (CPU). Эти небольшие мини-приложения помогут вам без проблем контролировать загрузку процессора, а некоторые гаджеты даже показывают температуру процессора. Вся информация в удобном виде выводится на рабочий стол как таблица с данными или в виде спидометра или в других видах, в зависимости от интерфейса выбранного вами гаджета.

Набор из двух гаджетов, выполненных в стиле Карателя (The

Отличный индикатор загрузки процессора, выполненный в стиле, посвященном

Гаджет, позволяющий оценить степень загрузки вашего компьютера.

Данный гаджет представляет собой качественную стильную модификацию стандартного

Данный гаджет отображает ТОП процессов, которые больше всего нагружают

Красивый индикатор загрузки центрального процессора и физической памяти

Antique CPU Meter является великолепным индикатором, который выполнен

Данное мини-приложение отображает общую нагрузку на центральный процессор

Гаджет для индикации нагрузки на процессор (в том числе и по ядрам) и

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

Simple Cpu Meter — оригинальный и очень симпатичный индикатор загрузки

Набор из четырех разноцветных индикаторов загрузки процессора (CPU) и

Простое мини-приложение для индикации нагрузки на процессор и оперативную

Симпатичный индикатор использования процессора и памяти для Windows 7.

Данный гаджет показывает историю загрузки процессора по ядрам.

Симпатичный гаджет, предназначенный для индикации загрузки процессора и памяти.

Индикатор уровня загрузки центрального процессора и оперативной памяти,

Яркий скин стандартного индикатора загрузки процессора и физической памяти

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

Простое приложение, предназначенное для определения текущего уровня загрузки

Оригинальная модификация стандартного индикатора загрузки процессора и

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

Гаджет для мониторинга процессора (в том числе и по ядрам), оперативной памяти,

Данный гаджет показывает уровень загрузки центрального процессора (по ядрам), а

Обрети финансовую свободу

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

Эта статья есть логическим продолжением для применения кода, обрисованного в третьем видеоуроке о mikroPascal.

Исходя из того, что у меня нет лазерного принтера (ЛУТ отпадает), двухъядерный процессор и один светодиод стоит приблизительно 0.8 гривны, было решено делать 3 строки светодиодов по 10 штук в каждой. Две — под индикацию загрузки процессора, и оставшаяся под память либо третье ядро (не сталкивался, но слышал).

Главная информация об устройстве:

  1. Напряжение питания: 5 V
  2. Потребляемый ток: 50 mA
  3. Частота обновления данных: 0,5

Сейчас возможно перейти к схеме.

Как видите, она достаточно несложная. База схемы — микроконтроллер ATmega8 (в корпусе DIP-28). Общее число подробностей — 40 шт. из них. светодиодов — 31, транзисторов — 5, другое обвязка и микроконтроллер генератора.

Не столько для экономии выводов, сколько для удобства обращения к портам я применял такое включение светодиодов для динамической индикации:

Таким методом мне удалось уложиться в два порта МК (PORTB — 6 пин, PORTC — 5 пин). Возможно было само собой разумеется применять сдвиговые регистры, но это повлекло бы за собой усложнение программы, конечно занятое место на плате. По-этому решил обойтись без них.

На схеме нет токоограничительных резисторов (применительно к светодиодам), так как они трудятся в импульсном режиме. Я применял светодиоды красного, желтого и белого цветов. Красный и желтый — ЦП, белый же для дополнительной строчка.

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

В итоге она оказалась двухсторонней.

Как видите, разводка платы не самая несложная. В этом виновата в первую очередь динамическая индикация. Из-за нее было нужно часть проводников перенести на обратную сторону платы, конечно применять много переходных отверстий (по большей части для подключения светодиодов). Но, однако эту плату вероятно сделать и без ЛУТа.

И последнее относительно платы — я применял текстолит толщиной 0,5 мм, поскольку другого с двухсторонним покрытием в наличии не выяснилось.

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

Программу для МК я как постоянно писал в среде mikroPascal for AVR (v 6.01). Так как в микропаскале нет библиотеки для микроконтроллера Atmega8, которая разрешает трудиться с USB, то выбор пал на UART. Но так как последний видеоурок по mikroPascal был про прерывания, то решил и ко мне их всунуть. И вот что в итоге оказалось:

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

  1. Разбираем принятые эти, если они соответствуют /, то разрешаем в следующий раз программе пройти дальше.
  2. Расшифровываем из ANCII кодировки.
  3. Рассчитываем и записываем в переменную

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

Вот и целый метод программы.

В случае если вас интересует, как эти отображаются, то все так же :

  1. , какая строка на данный момент обязана обновиться.
  2. Выбираем из массива dat необходимый элемент.
  3. В случае если необходимо зажечь пять либо меньше светодиодов в строчке, то значение в порт. В случае если же больше пяти (число n), то сперва зажигаем первые пять, а позже то что осталось (n-5). Все это крутится в цикле.

Из фузов необходимо выставить лишь внешний кварц (8 MHz).

В Khazama AVR Programmer это выглядит следующим образом:

Вот и все! Но в случае если у вас нет каких-то подробностей, но имеется их аналоги. Светодиоды возможно забрать каждые, подходящие по размерам и току. Микроконтроллер заменить запрещено.

Лишь забрать такой же но с любым вторым индексом (к примеру, вместо ATmega8 — ATmega8L и т.д.). Транзисторы так же возможно забрать каждые маломощные структуры p-n-p. Я применял КТ361Г (трудятся нормально, не смотря на то, что еще 1987 г. выпуска ). Резисторы — с разбросом от указанного номинала до +/- 20 %.

И напоследок, о программе для Windows, которая руководит индикацией. Она написана в Delphi xe5 и именуется iCPU.

Запланирована на 2 ядра. В настройках выбирается порт, к которому подключено устройство. Вероятно применять как встроенный COM порт (через преобразователь уровней на MAX232 ), так и через виртуальный COM порт, с применением переходника на базе PL2303 и аналогичных.

У меня в городе возможно приобрести таковой кабель для ветхих моделей NOKIA.

В платка, которая с успехом может употребляться как USB-COM переходник.

Вот пара фотографий готового устройства.

Обновление от 20.07.2014:

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

Обновление от 01.05.2015:

Всецело переписан код как firmware для МК, так и программы для Windows. Сейчас имеется отдельная версия для Windows x64.

Для МК firmware писалась в WinAVR (Cpp).

ВНИМАНИЕ! Ветхая firmware + новая версия программы НЕСОВМЕСТИМЫ, как и новая firmware + ветхая версия программы.

При firmware фузы показывать те же, что и для ветхой версии, за исключением (выставлять как на скрине):

  • Возможность использовать выравнивание (по левому краю, по центру и по правому краю).
  • Автоматическое отключение индикации через 10с (к примеру, в случае если комп загрузили в сон).
  • Сейчас имеется тестовый режим, в котором включаются все светодиоды (к примеру, при первых включениях уст-ва, для обнаружения неполадок).
  • В случае если у вас в совокупности многоядерный процессор, то будут отображаться лишь первые 2 ядра (на уст-ве, в программе будет видно загрузку всех ядер). В другом случае, на уст-ве будут активными лишь 1-я и 3-я строки (1 память и ядро соответственно).
Читайте также  Сигнализация с сиреной и оповещением через сотовый телефон

Так же желаю подметить, что перед первым запуском программы, впишите номер ком порта, к которому подключено устройство, в файл settings.ini. Он лежит в папке с exe-шником. В противном случае, вероятнее, станете через каждые 0.5с приобретать окна с неточностями!

В аппаратную часть устройства никакие правки не вносились.

Обновление от 16.05.2015:

Оптимизирован код. Добавлена возможность регулировки яркости (программный ШИМ на таймере T2). Внесены кое-какие правки в программу для Windows (сейчас, в случае если COM порт выбран неверно (порта с таким номером в совокупности нет), не будет +100500 окон с неточностями).

Индикатор загрузки винчестера

Важное на сайте:

  • Лекции по макрокономике
  • Лучшие букмекерские конторы онлайн
  • Лучшие книги по forex
  • Маркетинговые ходы для привлечения клиентов
  • Маржинальная торговля

Самые интересные результаты статей, подобранные именно по Вашим интересам:

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

Содержание Само слово «Стохастик» происходит от заглавия целой науки, имя которой «стохастика». У нас она не есть каким-то популярным предметом, не…

17 мая 2014 Сейчас наметилась тенденция нередкого обновления МТ4, что сулит проблеме из-за скриптов индикаторов и несовместимости/программы/советников…

Апплет панели Gnome, что отображает текущую раскладку клавиатуры, в качестве индикатора применяет надписи вида США либо Рус. Я поведаю, как сделать так,…

23.06.2010 / admin Светодиодный индикатор низкочастотных сигналов не только информативен, но и весьма привлекательно смотрится в любой аппаратуре, исходя…

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

Визуализируй это: LED-куб на базе Raspberry Pi показывает уровень загрузки процессора

На днях в сети появилось описание оригинального DIY-проекта на основе Raspberry Pi и светодиодных панелей. Цель проекта — визуализировать уровень загрузки процессора ПК. Для этого используются анимация на LED-панелях самодельного устройства.

Чем выше нагрузка на CPU, тем выше температура чипа и тем более «горячими» становятся цвета светодиодных панелей. Минимальная нагрузка — голубой и синий цвета, максимальная — оранжевый и красный. Общее количество задействованных светодиодов достигает 12 000. Под катом — описание проекта, его элементов, плюс исходный код ПО, которое обеспечивает работу гаджета.

Вот как все это выглядит:

Как возникла идея проекта

В прошлом году автор принял участие в 36th Chaos Communication Congress (36C3), где увидел огромное количество DIY-проектов, включая светодиодные кубы. Его это очень впечатлило.

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

Себастиан Стаакс (Sebastian Staacks) решил разработать собственный проект — устройство, которое сможет показывать уровень нагрузки процессора ПК. Особого практического смысла нет, это проект just for fun.Общая стоимость системы в сборке составила $150.

Реализация проекта

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

Автор говорит, что постарался сделать цвета и анимацию максимально нейтральными, чтобы не отвлекать внимание пользователя ПК во время работы (или игры).

Железо и ПО

Конструкция устройства очень простая. Вот, что увидит человек, который захочет разобрать девайс.

У «куба» только три грани. Это сделано для того, чтобы удешевить и несколько упростить конструкцию. Если бы работали все грани, проект получился бы слишком дорогим.

Светодиодные панели автор заказал с Aliexpress, выбрав лучшее сочетание цены и качества. По его словам, это было непросто, поскольку поставщики редко прописывали подробные технические характеристики своего товара. Соответственно, не всегда было понятно, подходят ли эти панели для проекта. В итоге разработчик купил панели с 64×64 RGB LED и 5В питанием.

Для питания этих панелей был использован 50W блок с 10А и 5В. Адаптер питает драйвер матрицы Adafruit, который подключен к панелям через Raspberry Pi. Главное — чтобы характеристики блока питания перекрывали потребление системы.

Управление панелями

Что касается «малинки», разработчик использовал Raspberry Pi 2. На данный момент этот одноплатник нельзя считать слишком устаревшим морально, для подобных целей его вполне хватает. Кроме того, он почти не нагревается в процессе работы, чего нельзя сказать о третьем и четвертом поколениях.

К плате был подключен внешний WiFi-модуль, чтобы избавиться от кабелей для подключения к сети. Паять почти ничего не нужно было, за исключением пары операций с Adafruit RGB Matrix Bonnet.

Вот так финальная конструкция выглядит в собранном виде. Для того, чтобы придать всему этому форму, автор использовал корпус, распечатав его на 3D-принтере.

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

Теперь о программном обеспечении. С «железом» все проще, а вот с управляющим ПО придется повозиться. Для анимации используется OpenGL-шейдер. Кроме того, на ПК запущен скрипт, который передает характеристики работы процессора на «малинку».

Самый важный элемент программного обеспечения — небольшая программа на С++, которая управляет кубом. Она использует специальную библиотеку rpi-rgb-led-matrix. В частности, она нужна для открытия UDP-порта, чтобы получить характеристики работы процессора с ПК, а также OpenGL для рендеринга анимации. Подробности работы библиотеки — здесь.

Для установки нужен скрипт от Adafruit. Инструкция по установке доступна по указанной ссылке.

Вот параметры для настройки панелей

//LED Matrix settings
RGBMatrix::Options defaults;
rgb_matrix::RuntimeOptions runtime;
defaults.hardware_mapping = «adafruit-hat-pwm»;
defaults.led_rgb_sequence = «RGB»;
defaults.pwm_bits = 11;
defaults.pwm_lsb_nanoseconds = 50;
defaults.panel_type = «FM6126A»;
defaults.rows = 64;
defaults.cols = 192;
defaults.chain_length = 1;
defaults.parallel = 1;

Обратите внимание, pwm_bits и pwm_lsb_nanoseconds выглядят не слишком важными, но они критичны — в первую очередь для качества изображения. В частности, pwm_bits определяет количество битов ШИМ, которое задает количество цветовых шагов. Обратной стороной увеличения этого значения является уменьшение частоты обновления светодиодной панели. Улучшить параметр можно, уменьшив настройки pwm_lsb_nanoseconds — если ваши панели поддерживают такие низкие значения. Если собираетесь снимать куб на камеру, лучше увеличить частоту обновления, чтобы все выглядело красиво.

Важно, чтобы Pi непрерывно работал с RGB Bonnet, в противном случае могут появиться артефакты. Для этого рекомендуется зарезервировать целое ядро процессора.

В проекте можно найти cpu-stats-gl.cpp, чтобы использовать это в собственном проекте. Для использования потребуются библиотеки g++ -g -o cpu-stats-gl cpu-stats-gl.cpp -std=c++11 -lbrcmEGL -lbrcmGLESv2 -I/opt/vc/include -L/opt/vc/lib -Lrpi-rgb-led-matrix/lib -lrgbmatrix -lrt -lm -lpthread -lstdc++ -Irpi-rgb-led-matrix/include/. Ну а для того, чтобы добавить поддержку OpenGl, стоит воспользоваться инструкциями от Matus Novak.

Шейдер OpenGl

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

Анимация, которая отображает статус процессора, реализуется путем фрагментного шейдера, т.е. небольшого участка кода, который работает параллельно с «коллегами». Такие участки нужны для каждого пикселя панели.

Чтобы правильно спроецировать изображение на куб, автор визуализирует три пары треугольников, каждый из которых покрывает одну грань куба. Дело в том, что если вы смотрите на куб как на трехмерный объект и хотите показать двухмерную форму, такую как круг, вы можете назначить координаты воображаемого двухмерного холста перед вашим лицом на каждый край куба.

Если мы теперь «развернем» куб в прямоугольный массив пикселей, который мы фактически адресуем, мы можем покрыть этот массив несколькими треугольниками. Мы также можем сопоставить координаты «виртуального холста» с каждой вершиной, чтобы получить отображение координат нашего холста на фактические пиксели в массиве панели.

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

Получаем статус процессора

Информацию о режиме работы процессора можно получить по протоколу UDP скриптом на питоне.

На ПК автора скрипт запускается автоматически, для работы используется статический IP, зарезервированный под светодиодный куб.

На этом этапе все должно работать так, как и задумано.

Понравился ли вам этот проект? Возможно, вы разрабатывали нечто похожее или, наоборот, уникальное? Расскажите об этом в комментариях.