Текущее время: 19 мар 2024, 12:24

Калининград & ХОББИ

Занятие любимым хобби - это путь к счастливой жизни!

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

Тут собраны схемы различных устройств сделанных на контроллерах Ардуино, Лазерный гравер на Ардуино, Металлоискатель на Ардуино, Метеостанция, Кодовый замок, и множество других устройств и изобретений
Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

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

Сообщение -=dp=- » 10 авг 2015, 10:20

Всем добрый день!
В очередной раз загорелся я новой идеей создания внешнего LED индикатора загрузки процессора ПК.
Раньше я имел опыт создания программ для взаимодействия с операционной системой, чтения и записи в COM порт и исходя из имеющегося опыта я все таки решился воплотить идею создания внешнего индикатора загрузки процессора на Ардуино.

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

В качестве аппаратной составляющей я остановил свой выбор на контроллере Ардуино ПРО мини 5в 16 МГц.
Итак для создания данного девайса нам понадобятся следующие детали:

Контроллер Ардуино ПРО мини 5в 16 МГц. - 1шт
USB RS232 адаптер на чипе CH340 - 1шт.
Макетная плата 20х10 - 1 шт.
Светодиоды - 90 шт (я решил сделать 10 рядов по 9 светодиодов, можно конечно использовать и меньшее количество светодиодов или специализированный LED индикатор)
Резисторы - 560 Ом - 100 шт.
Транзисторы любые малогабаринтный N-P-N (я использовал 2N2222) - 10 шт

Все необходимые детали и контроллер Ардуино ПРО мини покупаются на Алиэкспресс с доставкой.

Если использовать по одному светодиоду или специализированный LED индикатор то можно упростить конструкцию и транзисторные ключи не использовать.
Ну и запастись припоем, монтажными проводами, терпением и усидчивостью :D

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

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

Затем зачистил кусок кабеля UTP - 5CAT, убрал изоляцию с проводов, отделил один проводник и очистил его от изоляции и залудил.
Этим луженым проводником я распаял параллели светодиодов.
В итоге у меня получился один общи вывод - плюса и 10 выводов минусов, идущих к каждой параллели светодиодов.
Затем в нижней части макетной платы я разместил транзисторы, заведомо узнав их распиновку, эмитеры транзисторов я запараллелил , к базап припаял резисторы 560 Ом, коллекторы припаял к каждому из 10 выводов минусов, идущих к каждой параллели светодиодов.

Далее разместил на макетной плате контроллер Ардуино ПРО мини и распаял его цифровые выходы от 2 до 11 к резисторам припаянным к базам транзисторов.

Итак , все почти готово, следующий этап - разработка программы для Ардуино или как сейчас модно называть - СКЕТЧА :D


Вложения
1.jpg
Монитор загрузки процессора на Ардуино
2.jpg
LED индикатор загрузки процессора
3.jpg
Индикатор загрузки процессора на Ардуино

Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

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

Сообщение -=dp=- » 10 авг 2015, 10:41

Скетч для создания индикатора загрузки процессора довольно простой, его элементы есть даже в Ардуино ИДЕ.
За основу взяты примеры LED Blink - управление светодиодами и Serial Read - считывание данных с COM порта.
Всего нам понадобится управлять 10 светодиодами (линейками из светодиодов)
Так как Ардуина не может сама узнать какая у процессора загрузка, естественно ей нужно дать команду для включения той или иной линейки светодиодов, в зависимости от состояния загрузки процессора ПК, поэтому ничего навороченного в скетче у нас не будет.
Просто прописываем команды считывания COM порта для включения светодиодов в следующем порядке:
SerialRead (in);
if (in=='1') {
DigitalWrite(DP,HIGHT) где DP - номер цифрового выхода.
};
Для команд на включение светодиодов определены значения от 0 до 9.

Далее то же самое делаем для выключения светодиодов:
if (in=='a') {
DigitalWrite(DP,LOW) где DP - номер цифрового выхода.
};
Для команд на выключение светодиодов определены значения от a до j.

Собственно проверяем реагирование на команды через COM монитор встроенный в Ардуино ИДЕ.
при подаче в порт команды 1 должен включиться светодиод 1,
при подаче в порт команды a должен выключиться светодиод 1.
И так далее проверяем включение и выключение всех 10 светодиодов или линеек из светодиодов.
Если все работает то двигаемся дальше.

Изготовление корпуса.
В качестве корпуса было решено создать небольшой плоский короб из куска фанеры и парочки деревянных брусков.
Корпус тоже получился очень простым и оригинальным.
Брус клеил к фанере обычным ПВА клеем.
Нижнюю подставку прикрутил двумя шурупами.
А вот над лицом всей конструкции - передней панелью пришлось немного по мозговать :D
Но идея не заставила себя долго ждать.
В итоге переднюю панель я выгравировал лазером на покрашенном куске акрилового стекла.


Вложения
4.jpg
Отображение загрузки процессора
5.jpg
LED индикатор загрузки процессора ПК
6.jpg
внешний индикатор загрузки процессора

Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

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

Сообщение -=dp=- » 10 авг 2015, 10:51

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

Далее, следующая немаловажная часть проекта - Индикатор загрузки процессора на Ардуино.

Драйвер управления VISUALLED.
Программу управления индикатором загрузки процессора я разработал довольно быстро, за 3-4 часа, благо опыт разработки имеется за плечами :ugeek:
В итоге программа получилась простая и имеет всего 1 настройку - для ее работы необходимо распаковать архив с программой на диск C\visualled\ прописать в файле conf.ini номер COM порта, и все!
Запускаем, ставим в автозагрузку и наслаждаемся :D

Драйвер протестирован в Windows XP, Windows 7, 8, 10 и не требует никаких разрешений безопасности!

Программа во вложении.


Вложения
visualled.7z
Драйвер VISUALLED
(191.82 KiB) Скачиваний: 2249
9.jpg
Индикатор загрузки процессора
10.jpg
аппаратный индикатор загрузки процессора

Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

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

Сообщение -=dp=- » 10 авг 2015, 10:54

Еще одна немаловажная особенность данного девайса -
Внешний индикатор загрузки процессора работает от USB порта и ему не требуется дополнительного источника питания!


Вложения
8.jpg
индикатор загрузки процессора
7.jpg
Внешний индикатор загрузки процессора

Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

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

Сообщение -=dp=- » 10 авг 2015, 13:13

Схема внешнего LED индикатора загруженности процессора ПК.

Набросал схему вручную, чтот в CAD программах лень изголяться было :D


Вложения
vl_shem.jpg
схема индикатора загрузки процессора

Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

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

Сообщение -=dp=- » 10 авг 2015, 15:54

Выкладываю видео о работе LED




Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

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

Сообщение -=dp=- » 13 янв 2019, 12:06

Значения о загрузке процессора берутся из системы.
На ПК устанавливается программа, которая считывает значения из ОС о загрузке ЦП (среднее для всех ядер ЦП) и передает это значение в виртуальный COM порт по USB на Ардуино.
Про диспетчер задач слышали, там есть индикатор загрузки ЦП, вот аналогично работает и эта программа.
Программу, или как я назвал ее выше - драйвер VISUALLED можно скачать тут download/file.php?id=621



Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

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

Сообщение -=dp=- » 15 фев 2020, 08:42

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


Выкладываю упрощенную схему индикатора загрузки процессора

processor_load.jpg
Схема индикатора загрузки процессора


Монтаж Ардуино НАНО и 11 светодиодов с резисторами на панели заглушки системного блока

processor_load_indikator_2.jpg
индикатор загрузки процессора на Ардуино Версия 2.0


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

processor_load_indikator_2.0.jpg
индикатор загрузки процессора на Ардуино Версия 2.0



Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

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

Сообщение -=dp=- » 19 фев 2020, 20:42

Тестовый скетч для проверки распайки светодиодов

Код: выделить все

void setup() {
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}

void loop() {
  digitalWrite(3, HIGH);
   delay(100);
  digitalWrite(4, HIGH);
   delay(100);   
  digitalWrite(5, HIGH);
  delay(100);     
  digitalWrite(6, HIGH);
  delay(100);   
  digitalWrite(7, HIGH);
  delay(100);   
  digitalWrite(8, HIGH);
  delay(100);   
  digitalWrite(9, HIGH);
  delay(100);   
  digitalWrite(10, HIGH);
  delay(100);   
  digitalWrite(11, HIGH);
  delay(100);   
  digitalWrite(12, HIGH);
  delay(100);
    digitalWrite(13, HIGH);
  delay(100);   

  //
   digitalWrite(3, LOW);
  delay(100);
  digitalWrite(4, LOW);
  delay(100);
  digitalWrite(5, LOW);
  delay(100);   
  digitalWrite(6, LOW);   
  delay(100);
  digitalWrite(7, LOW);
  delay(100);
  digitalWrite(8, LOW);
  delay(100);   
  digitalWrite(9, LOW);   
  delay(100);
  digitalWrite(10, LOW);
  delay(100);
  digitalWrite(11, LOW);
  delay(100); 
  digitalWrite(12, LOW);
  delay(100); 
  digitalWrite(13, LOW);   
  delay(100);


}




Скетч для Индикатора загрузки процессора на Ардуино - Версия 2.0

Код: выделить все

// Processor load ver.2.0
char inf = 0;

void setup() {
 Serial.begin(9600);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}

void loop() {
  if (Serial.available() > 0) {
 inf = Serial.read();
 if (inf=='0') {digitalWrite(3, HIGH);};
 if (inf=='1') {digitalWrite(4, HIGH);};
 if (inf=='2') {digitalWrite(5, HIGH);}; 
 if (inf=='3') {digitalWrite(6, HIGH);};
 if (inf=='4') {digitalWrite(7, HIGH);};
 if (inf=='5') {digitalWrite(8, HIGH);};
 if (inf=='6') {digitalWrite(9, HIGH);}; 
 if (inf=='7') {digitalWrite(10, HIGH);};
 if (inf=='8') {digitalWrite(11, HIGH);};
 if (inf=='9') {digitalWrite(12, HIGH);};
 if (inf=='9') {digitalWrite(13, HIGH);};

 if (inf=='a') {digitalWrite(3, LOW);};
 if (inf=='b') {digitalWrite(4, LOW);};
 if (inf=='c') {digitalWrite(5, LOW);}; 
 if (inf=='d') {digitalWrite(6, LOW);};
 if (inf=='e') {digitalWrite(7, LOW);};
 if (inf=='f') {digitalWrite(8, LOW);};
 if (inf=='g') {digitalWrite(9, LOW);}; 
 if (inf=='h') {digitalWrite(10, LOW);};
 if (inf=='i') {digitalWrite(11, LOW);};
 if (inf=='j') {digitalWrite(12, LOW);};
 if (inf=='j') {digitalWrite(13, LOW);};   
   
  } ;

}




Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

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

Сообщение -=dp=- » 22 фев 2020, 21:14

Выкладываю видео о работе индикатора загрузки процессора на АРДУИНО





Вернуться в Устройства на Ардуино

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1