Съдържание:

Индикатор за зареждане на процесор Raspberry Pi: 13 стъпки
Индикатор за зареждане на процесор Raspberry Pi: 13 стъпки

Видео: Индикатор за зареждане на процесор Raspberry Pi: 13 стъпки

Видео: Индикатор за зареждане на процесор Raspberry Pi: 13 стъпки
Видео: Home Assistant - first settings, File Editor, Maria DB, HACS - October 2023 2024, Юли
Anonim
Индикатор за зареждане на процесор Raspberry Pi
Индикатор за зареждане на процесор Raspberry Pi

Когато стартирате Raspberry Pi (RPI) като без глава без конзолен монитор, няма налични конкретни визуални индикации, които да разпознават, че RPI действително прави нещо.

Въпреки че отдалечения терминал се използва със SSH, от време на време се изисква изпълнение на Linux команда, за да се провери колко натоварване на системата натоварва процесора сега

Така че тази схема е направена, за да помогне незабавно да се разпознае реалната активност на процесора (може би полуреална или почти реална) за изпълнение на приложените в момента натоварвания на системата.

Въпреки че само програмирането на python и много по -опростената схема могат да поддържат същата функционалност, ще са необходими малко сложни кодове на python, за да се симулира сложната логика за управление на LED, необходима от тази схема.

Също така парадоксално увеличената сложност на кода на python ще натовари повече процесора с повишено натоварване на системата.

Следователно, максималното разтоварване на всяка функция за индикация към външната хардуерна верига ще бъде разумно, тъй като тази услуга трябва да работи постоянно и често, например на всеки 5 секунди.

И тази схема ще добави малко забавна функция към безглавния RPI.

Стъпка 1: Команда за проверка на натоварването на процесора

Команда за проверка на натоварването на процесора в Linux
Команда за проверка на натоварването на процесора в Linux

Налични са разнообразни команди за проверка на натоварването на процесора, като top, iostat, sysstat и ъптайм.

Всяка команда има специфични предимства по отношение на информационното разнообразие и показването на простотата на данните.

Командата Top е най -богатата на информация и са налични много подробни данни за незабавно разпознаване на натоварването на системата.

Но той работи като режим на итерация (непрекъснато показване на данни на екрана) и информационен формат е доста сложен, за да извлече само необходимите данни за натоварване на процесора.

Командата iostat предоставя задълбочена информация за зареждане на системата, като разделя потребителските и системните задания на опашката, които натоварват процесора в момента.

Но също така е излишно сложно да се получи текущото зареждане на процесора по бърз и интуитивен начин.

В случай на продължителност на работа, са достъпни много прости данни за натоварването на системата за период от средно 1 минута, 5 минути средно и 15 минути обобщена средна стойност.

Както бе споменато по -горе, опростяването на кода на python е необходимо, тъй като трябва да се изпълнява доста често, например на всеки 5 секунди или 10 секунди.

Когато кодът на python стане сложен, той ще натовари много процесора.

Парадокс е, че натоварвате RPI, за да следите натоварването на системата му.

Затова избирам команда за ъптайм за събиране на натоварване на процесора и взаимодействие с индикаторната верига, защото тя е най -простата.

Но тъй като ъптаймът показва средно 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 е нормален HIGH, 74HC04 няма да е необходим.

Но някак 74LS139 е направен по този начин. (Моля, проверете таблицата на истината на 74LS139)

Когато е избран някой от изходите 74LS139, той ще активира един определен аналогов превключвател сред 4 превключвателя, включени в CD4066 IC.

CD4066 може да поддържа 4 аналогови превключвателя и всеки превключвател се състои от 1 вход за управление и 2 аналогови изхода.

Когато управляващият вход стане ВИСОК, връзката на два изхода става с нисък импеданс (Съпротивлението става 0), а други стават ВИСОКИ импеданс (Съпротивлението между два изходни пътя стават няколко стотици мегаома) ниво.

Просто контролът 1 (щифт 13) на CD4066 става ВИСОК, път между изход 1 (пин 1) и изход 2 (пин 2) свързан, докато други изходи не са свързани (в състояние на висок импеданс).

По същия начин HIGH входът на управление 2 (пин 5) прави изход 1 (щифт 4) и изход 2 (щифт 3) свързани, докато другите изходи са изключени.

Тогава LM555 мига два светодиода с различна честота на мигане.

Както можете да видите на схемата по -горе, NE555 ще работи с една от стойностите на съпротивлението сред 4 (12k, 24k, 51k, 100k) възможни нива на съпротивление.

Стъпка 3: NE555 Различно генериране на часовници

NE555 Различно поколение часовници
NE555 Различно поколение часовници

Както е показано на схемата, NE555 ще работи с една от възможните стойности на съпротивление като 12k, 24l, 51k и 100k.

Всъщност частта за синхронизация на NE555 е основна визуална индикация, поддържаща част от веригата.

Схемата на работа на веригата е както следва.

- Когато няма значително натоварване на процесора, инсталираната в RPI програма на python ще изпрати 00 изхода към веригата на индикатора. След това два изходни пътя на CD4066 се активират и NE555 работи с 12k стойност на резистора. Следователно светодиодите мигат 1,5 пъти в секунда (мигат доста бързо)

- Процесорът е леко зареден (Тогава дължината на опашката за ъптайм става на ниво 0,1 ~ 0,9), python ще изпрати 01 към веригата. След това CD4066 се активира с изходи, свързани с 24k резистор. В резултат на това мигането на LED намалява 1,2 пъти в секунда (мигането на светодиода леко намалява, но все пак малко бързо)

- Когато натоварването на процесора се увеличи значително (Тогава продължителността на продължителността на продължителността на времето за изпълнение е 1,0 ~ 1,9 ниво), python ще изведе 10 към веригата. След това се отваря 51k резисторен път за връзка и NE555 работи 0,8 пъти в секунда. Сега скоростта на мигане значително намалява.

- Тежки натоварвания, натоварващи процесора и продължителността на продължителността на опашката за изпълнение, стават по-дълги (повече от 2 задачи ще чакат да бъдат изпълнени от процесора, а ъптаймът ще отчита повече от 2,0). Когато е избрана 100k резисторна връзка, NE555 ще мига светодиод 0,5 пъти в секунда (скоростта на мигане става много бавна)

***

Заедно с увеличените натоварвания на системата, скоростта на мигане на LED ще бъде съответно намалена.

Когато LED мига доста бавно, тогава RPI със сигурност се претоварва значително.

По този начин веригата за индикация на натоварването отчита текущото ниво на натоварване на RPI.

Стъпка 4: Части

За направата на тази схема се използват различни IC чипове.

Въпреки че споменавам 74LSxx, CD40xx тип стари IC чипове, можете да използвате последните типове TTL и CMOS чипове като 74HC4066 и 74ASxx, когато избраният IC чип е DIP тип.

Тип повърхностен монтаж на малък IC пакет също може да се използва, когато можете да запоите малките правилно на универсалната печатна платка.

Други са общи части, които лесно можете да закупите от интернет електронните магазини.

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

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

- CD4066 (4 аналогови ключа IC) x 1

- NE555 Таймер IC x 1

- Кондензатори: 10uF x 1, 0.1uF x 1

-опто-разклонител PC817 x 2 (може да се използва всеки общ 4-пинов оптичен съединител)

- Резистори: 220ohm x 4 (ограничаване на тока на LED), 4.7K (интерфейс на опто-съединителя) x 2, 12K,/24K/51K/100K (управление на синхронизацията на часовника) x 1

- LED x 2 (всякакви различни цветове като жълто, зелено или червено, зелено)

- Универсална дъска 30 (W) на 20 (H) размер на отворите (Можете да изрежете всякакъв размер на универсална дъска, за да пасне на тази схема)

- Тенекиена тел (За направа на схеми за окабеляване на универсалната печатна платка)

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

- IC щифтова глава (4 пина) x 4

- червени/сини кабели за окабеляване

***

Стъпка 5: Изготвяне на печатни платки

Изготвяне на печатни платки
Изготвяне на печатни платки

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

Но не е задължително да се придържате към тази схема на окабеляване.

Както можете да видите електрическата схема по -горе, тя е доста сложна и изисква значително голяма печатна платка.

Можете да използвате общ кабел за свързване на части вместо тенекиена тел, за да намалите размера на запоената печатна платка.

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

Когато броят на TTL или CMOS ICs се увеличи, обикновено рисуването на печатни платки става доста сложно извън правилната интеграция от едната страна на печатната платка.

Следователно многослойната печатна платка обикновено се използва за индустриални цифрови схеми, които включват много TTL, CMOS и микропроцесор.

Стъпка 6: Запояване

Запояване
Запояване

Използвам тенекиена жица и общ кабел за свързване, за да минимизирам максимално размера на печатната платка.

При сравнение с чертежа на печатни платки, местоположението на всяка част се променя напълно.

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

Можете да видите, че 12k/24k/51k/100k резистори са поставени на IC щифтовата глава без запояване.

Следователно, можете да замените резистори с други стойности за удобна промяна на схемата на работа на веригата по -късно.

Стъпка 7: Сглобяване

Сглобяване
Сглобяване

Завършената верига на индикатора за натоварване (наричана по -долу INDICATOR) е инсталирана в RPI кутията на музикалния плейър, както е показано на снимката по -горе.

Този музикален плейър е инсталиран с DAC и наскоро използвам този за възпроизвеждане на музикален видеоклип.

За тази RPI кутия ще обясня по -късно и сега нека се съсредоточим върху INDICATOR, тъй като схемата е основната тема на този проект.

Купих наскоро 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 (t = 1/f) не е еднаква (например HIGH е 70%, а LOW е 30% в оригиналната верига). Следователно скоростта на мигане на два светодиода (зелен/жълт светодиод в оригинален дизайн) не е еднаква (един светодиод се включва по -дълго от други). Поради тази причина визуалната индикация чрез мигащ светодиод не е много лесно разпознаваема. “

- Затова добавям още светодиоди и правя кръгова итерационна схема с CD4017 за осигуряване на лесно разпознаване на работното състояние

- Също промяна на схемата на мигане на LED обратно, като бавно мигане при НИСКО натоварване и по -бързо мигане при ВИСОКО натоварване. (Оригиналната верига е направена да мига по -бързо при НИСКО натоварване и бавно мига при ВИСОКО натоварване). В ситуацията с високо натоварване всички действия на RPI стават бавни. И показването на бавно LED мигане няма да ви направи щастливи. (В психологически аспект избирам по -положителна схема на показване)

***

Въпреки че частта на LED дисплея е значително променена, общото ниво на промяна с оригиналната верига не е много, както можете да видите в следващата стъпка.

Стъпка 9: Промяна на оригиналната схема

Оригинална промяна на схемата
Оригинална промяна на схемата

Добавянето на CD4017 и 8 светодиода са основна модификация.

Също така, за да промените тактовата честота на NE555 и схемата за мигане на обратно LED, стойностите на резисторите се променят, както е показано на схемите по -горе.

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

Всички променени части на веригата могат да бъдат направени като дъщерна печатна платка, към която са споени CD4017 и 8 светодиода.

Дъщерната платка може да бъде прикрепена към дънната платка (дънната платка), както е показано на снимката в стъпка 8.

Стъпка 10: Тестване

Тестовото видео на всички етапи на работа (НИСКО, ЛЕКО, СРЕДНО и ВИСОКО натоварване) се показва от файла, съхраняван в google устройството по -долу.

***

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

***

Според текущото натоварване на системата скоростта на мигане ще се промени сред едно от 4 състояния, показани във видеото.

Стъпка 11: Python код

Код на Python
Код на Python

Тъй като повечето от управляващите логики са включени във външна хардуерна верига, оперативната логика на кода на python е сравнително проста, включваща следните стъпки.

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

- Събиране на 1 минутно средно натоварване на системата от изхода за ъптайм

-Изработка на времева маркировка като формат yy-mm-dd hh: mm: ss

- Температура на писане, натоварване на системата заедно с времева маркировка

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

- Спете 5 секунди, преди да започнете горепосочените стъпки

Тъй като програмата python се нуждае от строго отстъпване в изходния код, моля, изтеглете изходния файл от google drive, като следвате връзката по -долу.

***

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

***

Тъй като не използвам RPI като настолен компютър, стартирането на офис приложения на Libre или уеб браузър е много рядко.

Обикновено пускам музикално видео, копиране/преместване на файлове или програмиране на python с новозакупени RPI 4B 2GB.

Следователно средното натоварване обикновено е по -малко от 1,0 в моя случай и съответно променям ниски/светли/средни/високи нива в кода си. (Можете да промените условията на теста по друг начин)

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

Стъпка 12: Относителност между натоварването на системата и температурата на процесора

Относителност между натоварването на системата и температурата на процесора
Относителност между натоварването на системата и температурата на процесора

Обикновено предполагам и съм сигурен, че увеличаването на натоварването на системата ще повиши температурата на процесора.

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

Както можете да видите на графиката по-горе, те са много силни взаимоотношения, както следва.

- За лесно сравнение, умножавам 10 към средното натоварване на системата. В противен случай мащабът на натоварване на системата е много малък (0.0 ~ 2.0), директното сравнение става трудно.

- Тъй като охлаждащата вентилаторна верига е инсталирана към Pi box, която играе музика, температурата на процесора никога не надвишава 50C

- Когато натоварването на системата е в диапазона от 0.0 ~ 1.0, температурата в диапазона от 45 ~ 48C (металния капак на процесора леко се затопля)

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

***

Тъй като RPI 4B е инсталиран с 4 ядрен процесор, теоретично производителността няма да се влоши много до ниво на зареждане (продължителност на работа без прекъсване) 4.

Но все пак по -малко от средното ниво на натоварване 4, ще бъде необходим подходящ контрол на температурата.

Стъпка 13: Финализиране

Финализация
Финализация

Завършвам този проект, като инсталирам INDICATOR към Pi box, както е показано на снимката по -горе.

По време на случайна употреба на тази кутия Pi, INDICATOR рядко показва ВИСОКО ниво и динамично LED мигане.

Обикновено той остава в бавно мигащи състояния на светодиодите (така че ниско или светло ниво).

Във всеки случай добавеният визуален индикатор прави малко смешно, поне показва RPI, който прави нещо в момента.

Благодаря ви, че прочетохте тази история ….

Препоръчано: