Мониторинг параметров ПК на PIC

Данный проект представляет собой USB-устройство с LCD-дисплеем, на котором отображаются параметры компьютера в реальном времени.

Прошивка PIC-контроллера: Прошивка использует USB стек микроконтроллеров. Файлы, расположенные в USB папке, взяты из библиотеки «Microchip Libraries of Applications». Я использовал версию v2012-08-22 этой библиотеки. Файлы main.c, usb_descriptors.c, и usb_config.h были сформированы после «Device — HID — Custom Demos» файлов. Микропрограммное обеспечение обрабатывает команды в функции ProcessIO function в коде main.c. Прошивка PIC поддерживает следующие команды, передаваемые через USB HID:

0x10 — Очистить дисплей
0x11 — Перейти на строку 1, распечатать строковый параметр
0x12 — Перейти на строку 2, распечатать строковый параметр
0x13 — Перейти на строку 3, распечатать строковый параметр
0x14 — Перейти на строку 4, распечатать строковый параметр
0x20 — Выключить подсветку
0x21 — Включить подсветку
0x22 — Переключить подсветку
0x23 — Запросить состояние подсветки
0x30 — Обновить пользовательский параметр

Поддержка приложения ПК: приложение было написано на C#. Некоторые примечания… файл HIDInterface.cs представляет собой скрытую форму. Я создал это как форму, чтобы я мог получить указатель окна, используемого для вызовов функции RegisterDeviceNotification. Это позволяет мне определять, когда USB устройства подключены и не подключены. Это файл общего типа; специальные команды отображения находятся в файле HIDInterface_LcdDisplay.cs. Этот файл расширяет файл HIDInterface.cs и позволяет мне легко отправлять команды на дисплей. В LineOptionControl.cs вы найдете следующую функцию…

public string graphText(int percent)
{
string returnStr = «»;
for (int i = 0; i < percent; i += 5)
{
// Check to see if we need a fraction of a full block (0x10 -> 0x14)
if (i + 5 > percent)
{
returnStr += (char)(0x10 + (percent — i));
}
else
{
// Use a full block. (0x15)
returnStr += (char)0x15;
}
}

// Pad the graph out with empty blocks.
returnStr = returnStr.PadRight(20, (char)0x10);

return returnStr;
}

Эта функция определяет, как приложение отображает графы. Она требует целочисленный ввод в диапазоне 0 -> 100 и возвращает 20 символьную строку, представляющую целое число. Каждый символ представляет 5% графа. PIC интерпретирует символы 0x10 -> 0x15 в обычные символы, представляющие 0% -> 5%.

Настройки: Поддерживаемое приложение позволяет изменять значение скорости обновления информации. Это число означает, как часто ПК опрашивается для получения информации о состоянии. При этом на дисплее происходит обновление полученной информации. Вы также можете изменять время подсветки в режиме простоя. По истечении этого времени в режиме простоя компьютера (мышь не перемещалась, на клавиатуре не нажимались кнопки и т.д.) подсветка выключится. Если вы установите это время одинаково со временем отключения дисплея, тогда отключение будет выполняться синхронно. Если вы хотите деактивировать эту функцию, установите значение в 0.

Командная строка: Если вы выберите значение «min» либо «minimize» для программы в качестве аргумента, то она запустится в свернутом виде в системный трей. Это удобно выполнить путем изменения ярлыка, как показано далее …

«UCSD Application 1.0.exe» min

Example:
«C:UsersandrewDesktopUCSD Application 1.0.exe» min

Принципиальная схема:

Список используемых радиоэлементов:

  • LCD дисплей:
    • 1x NHD-0440WH-ATFH-JT [P1] — Модель не критичная. У меня используется 4×40 управляемый 2x SPLC780D микросхемами.
    • 1x 20KΩ потенциометр [R3] — Подстройка контрастности дисплея
    • 1x NPN FET [Q1] — Модель не критичная, я использовал MPSA42_D26Z FET.
    • 1x 1KΩ резистор [R5] — Ограничитель тока затвора.
    • 1x 22Ω резистор [R6] — Токоограничительный резистор подсветки LCD.
  • Микроконтроллер и обвязка:
    • 1x PIC18F2550 [U2] — PIC18F с поддержкой USB
    • 1x 10KΩ резистор [R4] — Для подтяжки MCLR
    • 1x SPST кнопка [S1] — Сброс. SKRGARD010.
    • 1x 20MHz кварц [Y1] — Я использовал ABL-20.000MHZ-B2.
    • 2x 18pF конденсаторы [C1] [C2] — Для 20МГц кварцевого резонатора
    • 1x 220nF конденсатор [C3] — Фильтрующий конденсатор для 3.3В USB порта МК
    • 1x 6 штыревой разъем [P2] — для программирования ICSP
    • 1x USB кабель [P3] — Питание устройства

Фото устройства:

Программное обеспечение ПК:

Список радиоэлементовОбозначение
Тип
Номинал
Количество
ПримечаниеМагазинМой блокнот

U2
МК PIC 8-битPIC18F25501
Q1
Биполярный транзисторMPSA421
С1, С2
Конденсатор18 пФ2
С3
Конденсатор220 нФ1
R3
Переменный резистор20 кОм1
R4
Резистор10 кОм1
R5
Резистор1 кОм1
R6
Резистор22 Oм1
Y1
Кварцевый резонатор20 МГц1
Р1
Разъем1
P2
Панелька6 штырьков1
P3
USB вход1
S1
Кнопка1

ИндикаторNHD-0440WH-ATFH-JT1
4×40Добавить все

Скачать список элементов (PDF)

Оригинал статьи

Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован.