MYCSS

Показ дописів із міткою cpu. Показати всі дописи
Показ дописів із міткою cpu. Показати всі дописи

2017-04-06

Контроль освітлення за допомогою ультразвукового сенсору. Програма v2.0.0. Кнопка "Людина присутня" з світловою і звуковою індикацією.

Після доопрацювання апаратної частини схеми "Контроль освітлення у туалетній кімнаті за допомогою ультразвукового сенсору, кнопка "Людина присутня"" з'явилася наступна версія програмного забезпечення для реалізацій цих та додаткових функцій.

Release v2.0.0. Кнопка "Людина присутня" з світловою і звуковою індикацією.

Після двох років експлуатації, зроблено модифікації як апаратної частини, так і програмної. Головна модифікація це додавання можливості показувати стан роботи ультразвукового сенсора, і за необхідністю відключати логіку визначення за сенсором.

Зміни. Що це дає.

По-перше, показ стану дозволяє полегшити правильне позиціювання сенсора, у малому приміщенні. По-друге, якщо сенсор не може явно визначити наявність людини, людина може заявити про себе натисканням кнопки "Людина присутня". При цьому світло не вимкнеться до тієї пори поки двері не відчиняться.

Логіка роботи.

У разі визначення відсутності людини у приміщені, індикація, котра вбудована у кнопку "Людина присутня", починає періодично мигати. Якщо протягом 45 секунд людина не визначиться знову, то світло автоматично вимкнеться. Індикація продовжуватиме мигати, щоб у темряві можна було натиснути на кнопку для вмикання світла і заявити про те що "Людина присутня".
Після автоматичного вимкнення світла ще протягом 1 хвилини очікується натискання кнопки, або  очікується автоматичне визначення людини ультразвуковим сенсором.
Якщо змін у стані визначення не має, індикатор та ультразвуковий сенсор вимикаються, а схема переходить до пониженого споживання енергії - сну. Якщо людина натиснула кнопку "Людина присутня" у любий період часу, то індикатор у кнопці починає світитися постійно, світло вмикається, до тієї пори поки не зміниться стан відчинення дверей, або не спрацює аварійний таймер.

Додаткове доопрацювання.

Це додавання звукового сповіщення до візуального, у разі проблеми з визначенням присутності людини ультразвуковим датчиком, кожні 5 секунд, лунає короткий сигнал - "біп", попереджуючи про проблеми. Кількість "біпів" постійно збільшується пропорційно від 1 до 3х. Після останнього 3х кратного "біпу" буде вимкнення автоматичне вимкнення світла.

Аварійний таймер.

До схеми введено механізм аварійного відключення світла за таймером часу. Максимальний час постійно ввімкнено світла при:
  • зачинених дверях, становить приблизно 1 годину.
  • відчинених дверях, становить приблизно 15 хвилин.
Відновити роботу після аварійного вимкнення, можливо циклом відкриттям та закриттям дверей.

Особливості реалізації пристрою.

Програма не використовує точний лічильник часу. Для пауз, між циклами опитування, програма використовує режим сну, і програмований аварійний таймер "WatchDog" який виводить програму з режиму сну, на наступну команду.

2017-03-20

Контроль освітлення у туалетній кімнаті за допомогою ультразвукового сенсору, кнопка "Людина присутня"

Два роки тому я створив проект що контролює освітлення у туалетній кімнаті за допомогою ультразвукового сенсору.
Основа проекту ультразвуковий сенсор HC-SR04, котрий вимірює відстань, а програма аналізує умови і контролює вмикання або вимикання лампочки освітлення. Умови це: відкрити двері чи ні, присутня людина чи ні, і час. У схемі використано мікроконтролер PIC12F675.
Схема використовує "Green mode", це коли не потрібні компоненти вмикаються тільки за потребою. Так ультразвуковий модуль працює коли  в тому необхідність. Навіщо шукати чорну кішку у темній кімнаті, а особливо коли її там не має.
Цей проект був реально застосований у туалетній кімнаті і весь час, був у тестовому режимі. Але до нього так звикли усі члени сім'ї що без нього вже не дуже подобається використовувати звичайну кнопку вмикання вимикання світла.

 

Попередньо були відео публікації тестування роботи схеми.

Без лампи.
Та з лампою.
Моделювалось відкриття дверей та присутність об'єкту.

 

Зараз подано доопрацювання

Бо інколи, сенсор не "бачить" людину і сенсор вимикає освітлення. Тому до схеми додано, кнопку з вбудованим світлодіодом. Ця кнопка повинна використовуватися коли спрацьовує не правильне визначення об'єкту у приміщені. Натиснувши її, коли вона мигає червоним кольором, ми даємо знати що людина присутня. Цей стан відключить логіку визначення присутності до тої пори коки двері не відчиняться.
Для економії проводів, і використання поточного схемного рішення, сигнал TRIG використовується як на передачу так і прийом.
Світлодіод кнопки, зазвичай, не встигає засвітитися  тому що довжина імпульсу TRIG має коротку довжину, 10 мс, що потрібна тільки для запуску процесу вимірювання відстані модулем HC-SR04. Якщо треба засвітити світлодіод  треба просто збільшити час сигналу TRIG, а вимірювання заборонити.
Програмне рішення не реалізовано поки що.
Схема сенсора з додатковою кнопкою "людина присутня"

2015-05-14

Перші спроби багатопотокового програмування Qt5 + OpenMP +MS Visual Studio

 Продовжуючи вивчати багатопотоковість з'ясував що бібліотека libraw має підтримку багатопотокового програмування - OpenMP.

Для використання потрібно дозволити компілятору використовувати OpenMP у  випадку MS  Visual Studio це вмикається так : OpenMP in Visual C++, /openmp (Enable OpenMP 2.0 Support)


Перші спроби багатопотокового програмування Qt5

Існує задача обробки зображень, по пікселям обробляється у циклі. 
Наприклад:
for (int i = 0; i < numPixels; i++, data += pixelSize) {
 if (output->colors == 3) {
  pixels[i * 4] = data[2 * colorSize];
  pixels[i * 4 + 1] = data[1 * colorSize];
  pixels[i * 4 + 2] = data[0];
 }
 else {
  pixels[i * 4] = data[0];
  pixels[i * 4 + 1] = data[0];
  pixels[i * 4 + 2] = data[0];
 }
}
З метою оптимізації розрахунку, спробую використати можливості багатопроцесорного комп'ютера.
Використовуючи фрейморк Qt 5.4.0. Створив новий клас IncTask. Вхідні дані до потоку можливо передати тільки під час ініціалізації класу. А надалі використовувати приватні змінні.

2014-01-13

Програмування мікроконтролерів. PIC12F675. Timer1,Sleep,Clock,RS232


Вивчаю програмування мікроконтролерів PIC. Маю програматор PICkit 2 та макетну плату.
Вивчаю крок за корком. Почав від класичних завдань з світлодіодом.
Мигання світлодіоду класично робиться за допомогою внутрішньої затримки пустими циклами NOP.
Пройшовши ці завдання, я став оптимізувати і заодно вивчати роботу з таймерами та перериваннями.

2013-03-07

Скрипт для моніторингу завантаження процесорів системи з FreeBSD та попередження про критичний стан поштою

Отримав завдання щодо попередження про можливе перенавантаження сервера одного або декількох процесорів або ядер . У пошуках готових рішень скриптів знайшов повідомлення від Rahul.Patil, допрацював його і отримав наступне рішення:
Про стан навантаження процесорів збирається програмою top з параметром -P, робиться два цикли для заміру навантаження процесорів, параметр -d2 , тому витрачається 2 секунди.
Відфільтровується значення IDLE кожного з процесорів. Результат виводиться одним рядком на кожен з процесорів, цілим числом відсоткового значення  простою процесора.
Далі значення порівнюється з пороговим значенням моніторингу простою процесора - змінна "THRESHOLD".  Якщо завантаження (простій) процесора нижче порогового значення, то починається підрахування терміну коли процесор знаходиться у критичному стані, зменшенням значення змінної WINDOW[CPU], де CPU номер процесора. Якщо рівень завантаження процесору стане вище порогового значення, то значення  змінної WINDOW[CPU] скидається до початкового значення (INITWINDOW), і у випадку нового завантаження відлік починається спочатку.
Коли завантаження одного з процесорів незмінне протягом певного часу (INITWINDOW), то відсилається повідомлення адміністратору системи поштою, про стан певного процесора і  перелік 10-ти перших процесів, з найбільшим відскоком завантаження.  Потім програма робить паузу на час визначеним значенням змінної WAITMAIL.
Кожен цикл перевірки стану  супроводжується паузою визначеним значенням змінної WAIT, повний цикл дорівнює значення змінної WAIT плюс 2 секунди що витрачаються програмою top.
Приклад скрипту з використанням bash shell для 4х процесорної системи.

2013-02-12

Overclocking Intel Core i7 LGA1366 processors

На сьогодні публікація є дещо застарілою, але для мене дуже цікавий опис методології розгону процесорів Intel i7 першого покоління.


Preface

With the Core i7 900 series processors, all frequencies originate in a Base Clock (BCLK) with a default frequency of 133.33 MHz. From this base frequency, all other frequencies are derived by applying various multipliers.

The purpose of this text is mainly to bring an understanding of how to work with the Core i7 900 systems and how different BIOS settings relate to each other, and not so much to present a list of overclocking settings. Hopefully this will help you in finding an overclocking solution for your particular components.
Коли забув ти рідну мову, біднієш духом ти щодня...
When you forgot your native language you would become a poor at spirit every day ...

Д.Білоус / D.Bilous
Рабів до раю не пускають. Будь вільним!

ipv6 ready