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

comp128-1.jpg

Цей проект являє собою 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:\Users\andrew\Desktop\UCSD Application 1.0.exe" min

Схема принципова:

Принципова схема пристрою для моніторингу параметрів ПК

Список використовуваних радіоелементів:

  • LCD дисплей:
    • 1x NHD-0440WH-ATFH-JT [P1] - Модель не критична. У мене використовується 4x40 керований 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] - Живлення пристрою

Фото пристрою:

comp128-2.jpg

comp128-3.jpg

comp128-4.jpg

Програмне забезпечення ПК:

UCSD_Software_1_4.png

Список радіоелементів

Обозначення Тип Номінал Кількість Примітка
U2 МК PIC 8-біт
PIC18F2550
1
Q1 Біполярний транзистор
MPSA42
1
С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-JT 1 4x40
Додати все

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

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

Top