www.diagram.com.ua
www.diagram.com.ua

Русский: Русская версия English: English version

Translate it!

+ Поиск по всему сайту
+ Поиск по журналам
+ Поиск по статьям сайта
+ Поиск по каталогу схем
+ Поиск по схемам СССР
+ Поиск по Библиотеке

ВСЕ СТАТЬИ А-Я

БЕСПЛАТНАЯ БИБЛИОТЕКА
ЭНЦИКЛОПЕДИЯ РАДИОЭЛЕКТРОНИКИ И ЭЛЕКТРОТЕХНИКИ
СПРАВОЧНИК
АРХИВ СТАТЕЙ

НОВОСТИ НАУКИ И ТЕХНИКИ, НОВИНКИ ЭЛЕКТРОНИКИ

ФОРУМЫ
ВАШИ ИСТОРИИ ИЗ ЖИЗНИ
ОБРАТНАЯ СВЯЗЬ
ОТЗЫВЫ О САЙТЕ

КАРТА САЙТА

Бесплатная техническая библиотека РАЗДЕЛЫ БЕСПЛАТНОЙ ТЕХНИЧЕСКОЙ БИБЛИОТЕКИ:
Архив и лента новостей
Книги и сборники
Технические журналы
Архив статей и поиск
Схемы и сервис-мануалы
Электронные справочники
Русские инструкции
Радиоэлектронные и электротехнические устройства

СКАЧАЙТЕ БЕСПЛАТНО:

ЭНЦИКЛОПЕДИЯ РАДИОЭЛЕКТРОНИКИ И ЭЛЕКТРОТЕХНИКИ БЕСПЛАТНО:
Автомобиль
Автомобильные электронные устройства
Аккумуляторы, зарядные устройства
Акустические системы
Альтернативные источники энергии
Антенны
Антенны КВ
Антенны телевизионные
Антенны УКВ
Антенные усилители
Аудио и видеонаблюдение
Аудиотехника
Блоки питания
Бытовая электроника
Бытовые электроприборы
Видеотехника
ВЧ усилители мощности
Галогенные лампы
Генераторы, гетеродины
Гирлянды
Гражданская радиосвязь
Детекторы напряженности поля
Дозиметры
Дом, приусадебное хозяйство, хобби
Зажигание автомобиля
Заземление и зануление
Зарядные устройства, аккумуляторы, батарейки
Защита электроаппаратуры
Звонки и аудио-имитаторы
Измерения, настройка, согласование антенн
Измерительная техника
Индикаторы, датчики, детекторы
Инструмент электрика
Инфракрасная техника
Кварцевые фильтры
Компьютерные интерфейсы
Компьютерные устройства
Компьютерный модинг
Компьютеры
Личная безопасность
Люминесцентные лампы
Медицина
Металлоискатели
Микроконтроллеры
Микрофоны, радиомикрофоны
Мобильная связь
Модернизация радиостанций
Модуляторы
Молниезащита
Музыканту
Начинающему радиолюбителю
Ограничители сигнала, компрессоры
Освещение
Освещение. Схемы управления
Охрана и безопасность
Охрана и сигнализация автомобиля
Охрана и сигнализация через мобильную связь
Охранные устройства и сигнализация объектов
Переговорные устройства
Передатчики
Передача данных
Предварительные усилители
Преобразователи напряжения, выпрямители, инверторы
Применение микросхем
Пускорегулирующие аппараты люминесцентных ламп
Работа с CAD-программами
Радиолюбительские расчеты
Радиолюбителю-конструктору
Радиоприем
Радиостанции портативные
Радиостанции, трансиверы
Радиоуправление
Разная бытовая электроника
Разные компьютерные устройства
Разные узлы радиолюбительской техники
Разные устройства гражданской радиосвязи
Разные электронные устройства
Разные электроустройства
Регуляторы мощности, термометры, термостабилизаторы
Регуляторы тембра, громкости
Регуляторы тока, напряжения, мощности
Сварочное оборудование
Светодиоды
Синтезаторы частоты
Смесители, преобразователи частоты
Спидометры и тахометры
Справочник электрика
Справочные материалы
Стабилизаторы напряжения
Студенту на заметку
Телевидение
Телефония
Теория антенн
Техника QRP
Технологии радиолюбителя
Технология антенн
Трансвертеры
Узлы радиолюбительской техники
Усилители мощности
Усилители мощности автомобильные
Усилители мощности ламповые
Усилители мощности транзисторные
Усилители низкой частоты
Устройства защитного отключения
Фильтры и согласующие устройства
Цветомузыкальные установки
Цифровая техника
Часы, таймеры, реле, коммутаторы нагрузки
Электрику
Электрику. ПТЭ
Электрику. ПУЭ
Электрические схемы автомобилей
Электрические счетчики
Электричество для начинающих
Электробезопасность, пожаробезопасность
Электродвигатели
Электромонтажные работы
Электронный впрыск топлива
Электропитание
Электроснабжение
Электротехнические материалы

СТАТЬИ БЕСПЛАТНО:
Батарейки и аккумуляторы
Большая энциклопедия для детей и взрослых
Биографии великих ученых
Важнейшие научные открытия
Детская научная лаборатория
Должностные инструкции
Домашняя мастерская
Жизнь замечательных физиков
Заводские технологии на дому - простые рецепты
Инструменты и механизмы для сельского хозяйства
Искусство аудио
Искусство видео
История техники, технологии, предметов вокруг нас
И тут появился изобретатель
Конспекты лекций, шпаргалки
Личный транспорт: наземный, водный, воздушный
Любителям путешествовать - советы туристу
Мобильные телефоны
Моделирование
Опыты по физике
Опыты по химии
Нормативная документация по охране труда
Основы безопасной жизнедеятельности (ОБЖД)
Основы первой медицинской помощи (ОПМП)
Охрана труда
Параметры, аналоги, маркировка радиодеталей
Радио - начинающим
Секреты ремонта
Советы радиолюбителям
Строителю, домашнему мастеру
Справочная информация
Типовые инструкции по охране труда (ТОИ)
Функциональный состав импортных ТВ
Функциональный состав, пульты, шасси, эквиваленты импортных телевизоров
Чудеса природы. Увлекательное путешествие вокруг земного шара
Шпионские штучки
Электрик в доме
Эффектные фокусы и их разгадки

ЖУРНАЛЫ БЕСПЛАТНО:
Блокнот Радиоаматора
Домашний компьютер
Домашний ПК
КВ журнал
КВ и УКВ
Квант
Компьютерра
Конструктор
Левша
Моделист-конструктор
М-Хобби
Наука и жизнь
Новости электроники
Новый Радиоежегодник
Популярная механика
Радио
Радио Телевизия Електроника
Радиоаматор
Радиодело
Радиодизайн
Радиокомпоненты
Радиоконструктор
Радиолюбитель
Радиомир
Радиосхема
Радиохобби
Ремонт и сервис
Ремонт электронной техники
Сам
Сервисный центр
Силовые машины
Схемотехника
Техника - молодежи
Химия и жизнь
ЭКиС
Электрик
Электроника
Юный техник
Юный техник для умелых рук
Я - электрик
A Radio. Prakticka Elektronika
Amaterske Radio
Chip
Circuit Cellar
Electronique et Loisirs
Electronique Pratique
Elektor Electronics
Elektronika dla Wszystkich
Elektronika Praktyczna
Everyday Practical Electronics
Evil Genius
Funkamateur
Nuts And Volts
QEX
QST
Radiotechnika Evkonyve
Servo
Stereophile

КНИГИ СЕРИЙНЫЕ БЕСПЛАТНО:
Библиотека по автоматике
Библиотека электромонтера
Библиотечка Квант
Библиотечка электротехника
Знай и умей
Массовая радиобиблиотека

КНИГИ ПО РАДИОТЕХНИКЕ И ЭЛЕКТРОНИКЕ БЕСПЛАТНО:
Автомобиль
Аппаратура СВЧ
Запись и воспроизведение звука
Ламповая аппаратура
Начинающему радиолюбителю
Охрана и безопасность
Радиолокация, навигация
Радиотехнические технологии
Радиоуправление, моделизм
Робототехника
Схемотехника
Теоретическая электроника, радиотехника
Усилители
Цифровая обработка сигналов
Электроника в быту
Электроника в медицине
Электроника в науке
Электроника для музыканта

КНИГИ ПО РЕМОНТУ БЕСПЛАТНО:
Ремонт аудиотехники
Ремонт бытовая техники
Ремонт видеотехники
Ремонт телевизоров ламповых
Ремонт телевизоров полупроводниковых
Ремонт мониторов
Ремонт оргтехники
Ремонт радиоприемников
Ремонт телефонов и факсов
Спутниковое телевидение
Теория телевидения
Теория ремонта электроники

КНИГИ ПО ИЗМЕРЕНИЯМ БЕСПЛАТНО:
Измерения и метрология
Измерительная аппаратура
Измерительная техника. Схемы и описания

КНИГИ ПО СВЯЗИ БЕСПЛАТНО:
Антенны
Аппаратура любительской радиосвязи
Линии связи, передача данных
Мобильные телефоны
Теория и практика радиосвязи

КНИГИ ПО ЭЛЕКТРИКЕ БЕСПЛАТНО:
Автоматика, автоматизация, управление
Аккумуляторы, элементы питания, зарядные устройства
Альтернативные источники энергии
Источники питания, стабилизаторы, преобразователи
Молниезащита
Осветительная аппаратура
Охрана труда, электробезопасность, пожаробезопасность
Релейная защита
Сварка, сварочное оборудование
Теория электротехники
Устройства телемеханики
Электрику, электромонтажнику, электромеханику
Электрические сети, воздушные и кабельные линии
Электродвигатели
Электрооборудование
Электропривод
Электростанции, подстанции
Электротехнические справочники
Энергетика, электроснабжение

СБОРНИКИ БЕСПЛАТНО:
В помощь радиолюбителю
Радиоаматор-лучшее
Радиоежегодник

СПРАВОЧНИКИ БЕСПЛАТНО:
Зарубежные микросхемы и транзисторы
Измерительная техника. Схемы и описания
Медицинская аппаратура
Механизмы импортной аудио и видеоаппаратуры
Прошивки зарубежной аппаратуры
Пульты ДУ импортных телевизоров
Радиокомпоненты Atmel
Радиокомпоненты Cirrus Logic
Радиокомпоненты Maxim
Радиокомпоненты Microchip
Радиокомпоненты Mitsubishi
Радиокомпоненты Motorola
Радиокомпоненты National Semiconductor
Радиокомпоненты Panasonic
Радиокомпоненты Philips
Радиокомпоненты Rohm
Радиокомпоненты Samsung
Радиокомпоненты Sharp
Радиокомпоненты Sony
Радиокомпоненты Toshiba
Соответствие моделей и шасси телевизоров
Строчные трансформаторы HR
Строчные трансформаторы Konig

СХЕМЫ И СЕРВИС-МАНУАЛЫ БЕСПЛАТНО:
Бытовая техника Beko
Бытовая техника Braun
Бытовая техника Candy
Бытовая техника Elenberg
Бытовая техника Elica
Бытовая техника Gorenje
Бытовая техника Hansa
Бытовая техника Merloni
Бытовая техника SEB
Бытовая техника Snaige
Бытовая техника Stinol
Бытовая техника Universal
Бытовая техника Whirpool

Зарубежные DVD-плееры
Зарубежные автомагнитолы
Зарубежная аудиоаппаратура
Зарубежные видеокамеры
Зарубежные видеомагнитофоны и видеоплееры
Зарубежные мониторы
Зарубежные моноблоки
Зарубежные телевизоры
Зарубежные телефоны
Зарубежные факсы

Мобильники Benq-Siemens
Мобильники Eastcom
Мобильники Ericsson
Мобильники Fly Bird
Мобильники LG
Мобильники Maxon
Мобильники Mitsubishi
Мобильники Motorola
Мобильники Nokia
Мобильники Panasonic
Мобильники Pantech
Мобильники Samsung
Мобильники Sharp
Мобильники Siemens
Мобильники Sony-Ericsson
Мобильники TCL
Мобильники Voxtel

Отечественные телевизоры
Отечественная аудиоаппаратура

Справочники по вхождению в режим сервиса

Схемы блоков питания импортных телевизоров и видеотехники

Телевизоры Avest
Телевизоры Beko
Телевизоры, аудио, видеотехника Elenberg, Cameron, Cortland
Телевизоры Erisson
Телевизоры Rainford
Телевизоры Roadstar
Телевизоры Rolsen
Телевизоры Vestel
Телевизоры Витязь
Телевизоры Горизонт
Телевизоры Рекорд
Телевизоры Рубин

Станки металлообрабатывающие
Электроинструмент Bocsh
Электроинструмент Makita

БЕСПЛАТНЫЙ АРХИВ СТАТЕЙ
(150000 статей в Архиве)

АЛФАВИТНЫЙ УКАЗАТЕЛЬ СТАТЕЙ:
Библиотечка Квант указатель
Библиотека по автоматике указатель
Библиотека электромонтера указатель
Библиотечка электротехника указатель
Блокнот Радиоаматора указатель
В помощь радиолюбителю указатель
Знай и умей указатель
Массовая радиобиблиотека указатель
КВ и УКВ указатель
КВ журнал указатель
Квант указатель
Конструктор указатель
Моделист-конструктор указатель
Наука и жизнь указатель
Новости электроники указатель
Новый Радиоежегодник указатель
Популярная механика указатель
Радио указатель
Радиоаматор указатель
Радиоаматор-лучшее указатель
Радиоежегодник указатель
Радиодело указатель
Радиодизайн указатель
Радиокомпоненты указатель
Радиоконструктор указатель
Радиолюбитель указатель
Радиомир указатель
Радиосхема указатель
Радиохобби указатель
Ремонт и сервис указатель
Ремонт электронной техники указатель
Сам указатель
Сервисный центр указатель
Силовая электроника указатель
Схемотехника указатель
Техника - молодежи указатель
Химия и жизнь указатель
ЭКиС (Электронные компоненты и системы) указатель
Электрик указатель
Электроника указатель
Юный техник указатель
Я - электрик указатель

СПРАВОЧНИК БЕСПЛАТНО

ПАРАМЕТРЫ РАДИОДЕТАЛЕЙ БЕСПЛАТНО

ДАТАШИТЫ БЕСПЛАТНО

ПРОШИВКИ БЕСПЛАТНО

РУССКИЕ ИНСТРУКЦИИ БЕСПЛАТНО


Стол заказов СТОЛ ЗАКАЗОВ:

СХЕМЫ ПОД ЗАКАЗ:
Импортные DVD
Импортные автоаудио
Импортные аудио
Импортные видеокамеры
Импортные видеомагнитофоны
Импортные кондиционеры
Импортные мониторы
Импортные моноблоки
Импортные проекторы
Импортные СВЧ-печи
Импортная спутниковая аппаратура
Импортные стиральные машины
Импортные телевизоры
Импортные телефоны
Импортные факсы
Импортные фотоаппараты
Импортные холодильники

Отечественные автоаудио
Отечественные видеомагнитофоны
Отечественные магнитофоны
Отечественные мониторы
Отечественные приборы
Отечественные радиолы
Отечественные радиоприемники
Отечественные усилители
Отечественные цветные телевизоры
Отечественные черно-белые телевизоры
Отечественные электрофоны


Бонусы БОНУСЫ:

НА ДОСУГЕ:
Интерактивные флеш-игры
Игры он-лайн
Ваши истории
Знаете ли Вы, что...
Зрительные иллюзии
Веселые задачки
Каталог Вивасан
Палиндромы

ИСТОРИИ ИЗ ЖИЗНИ

ССЫЛКИ

ДОБАВИТЬ В ЗАКЛАДКИ

Оставить отзыв о сайте

ДИАГРАММА
© 2000-2017

Дизайн и поддержка:
Александр Кузнецов

Техническое обеспечение:
Михаил Булах

Программирование:
Данил Мончукин

Маркетинг:
Татьяна Анастасьева

Перевод:
Наталья Кузнецова

Контакты

При использовании материалов сайта обязательна ссылка на http://www.diagram.com.ua

сделано в Украине
сделано в Украине

Диаграмма. Бесплатная техническая библиотека

Бесплатная техническая библиотека Бесплатная техническая библиотека Как скачивать файлы с сайта? Как скачивать файлы с сайта? Добавить в закладки, оставить отзывДобавить в закладки, оставить отзыв

Энциклопедия радиоэлектроники и электротехники. Большая подборка статей со схемами, иллюстрациями, комментариями Энциклопедия радиоэлектроники и электротехники

Бесплатная библиотека / Схемы радиоэлектронных и электротехнических устройств

USB-сигнализатор времени приема лекарств

Энциклопедия радиоэлектроники и электротехники / Медицина

Комментарии к статье Комментарии к статье

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

Многие пожилые люди по вполне понятным причинам испытывают затруднения в работе с современными программными продуктами. Что касается устройств-сигнализаторов, то большинство из них фактически представляют собой несколько модернизированные будильники, неспособные работать по расписанию даже с двумя-тремя видами препаратов и эргономически не приспособленные к использованию людьми пожилого возраста.

Общий вид разработанного автором сигнализатора, имеющего восемь независимых каналов (по числу ячеек для лекарств), каждый из которых может быть настроен на подачу до четырех напоминающих сигналов в сутки (всего может быть подано 32 сигнала), показан на рис. 1. Для ввода или корректировки расписания приема лекарств это устройство соединяют по интерфейсу USB с компьютером, на котором запускают специальную программу. Когда расписание загружено, сигнализатор работает автономно.

USB-сигнализатор времени приема лекарств
Рис. 1. Общий вид сигнализатора

Как аппаратная, так и программная части сигнализатора разработаны с учетом их использования людьми пожилого возраста, в том числе с ослабленным зрением. Обращение с устройством предельно упрощено, а в программе применены алгоритмические и интерфейсные решения, значительно повышающие удобство работы. Кроме того, в конструкции сигнализатора приняты меры электробезопасности.

Питают сигнализатор от сети ~230 В, а в случае пропадания в ней напряжения он автоматически переходит на питание от встроенной аккумуляторной батареи. Потребляемая от сети мощность не превышает 5 Вт, продолжительность работы от аккумуляторной батареи емкостью 800 мА·ч достигает трех суток. Этим обеспечена сохранность расписания даже при длительном отключении сетевого питания.

Схема сигнализатора изображена на рис. 2. Принцип его работы прост: значение текущего времени программа микроконтроллера ежесекундно сравнивает с заданным временем подачи сигналов. В случае совпадения устройство подает звуковой сигнал, представляющий собой одну из нескольких мелодий, выбираемую по желанию, и включает световой индикатор соответствующей ячейки с лекарством. В тот же момент происходит перевод времени подачи этого сигнала на сутки вперед. Для выключения звукового и светового сигналов достаточно нажать на кнопку подтверждения SB1.

USB-сигнализатор времени приема лекарств
Рис. 2. Схема сигнализатора

Использованный в сигнализаторе микроконтроллер ATmega8A-PU (DD1) способен работать при пониженном до 2,7 В напряжении питания. Тактовая частота микроконтроллера 12 МГц задана кварцевым резонатором ZQ1. Узел звуковой сигнализации собран на микросхеме музыкального синтезатора УМС8-08 (DD2). Микроконтроллер включает звуковой сигнал, подавая высокий уровень на вход S микросхемы синтезатора. Сигнал непрерывно звучит до нажатия на кнопку SB1. Источником звука служит пьезоизлучатель HA1. Громкость регулируют переменным резистором R16. Мелодии перебирают нажатиями на кнопку SB2 во время воспроизведения. Более подробная информация о микросхемах серии УМС приведена в [1].

В сигнализаторе имеется не показанный на схеме трансформаторный источник стабилизированного напряжения 5 В, собранный по традиционной схеме на интегральном стабилизаторе 7805. В случае пропадания напряжения в питающей сети устройство переходит на питание от аккумуляторной батареи GB1. Средний ток, потребляемый от нее, не превышает 5 мА. При наличии напряжения в сети батарея непрерывно подзаряжается благодаря цепи VD5, VD6, R18. Однако рекомендуется раз в месяц ее отключать и производить полный цикл разрядки до напряжения 3 В и зарядки с помощью внешнего зарядного устройства.

Микросхему музыкального синтезатора УМС8-08 можно заменить другой из серий УМС7 и УМС8. Они различаются лишь набором мелодий. Транзистор КТ3102Б допустимо заменить на КТ3102Г, КТ3102Е или импортный BC547, а также на КТ315Б или КТ315Г, если уменьшить сопротивление резистора R17 до 51 кОм. Вместо диодов КД522Б подойдут КД521А, КД521Б, КД522А, 1N4148 и аналогичные. Все постоянные резисторы - С2-33Н или МЛТ. Оксидные конденсаторы С3 и C6 - К50-83, К50-16 или импортные. Остальные конденсаторы - керамические К10-73-1б, К10-17в. Светодиоды пригодны любые в корпусах диаметром 5 мм желаемого цвета свечения. В авторском варианте в качестве HL1 установлен светодиод зеленого цвета свечения, чтобы не беспокоить больного попусту, остальные - красного цвета. Разъем XS1 - розетка USB-BF.

Аккумуляторная батарея GB1 составлена из трех Ni-Mh аккумуляторов типоразмера AA емкостью 80о мА·ч. Можно использовать аккумуляторы и другой емкости, но при этом желательно подобрать резистор R18 такого сопротивления, чтобы начальный ток зарядки разряженной до напряжения 3 В батареи был численно равен 0,1 ее номинальной емкости.

Сигнализатор собран на стандартной перфорированной монтажной плате размерами 70x50 мм с шагом перфорации 2,54 мм. Способ монтажа - навесной с фиксацией термоклеем. Ввиду простоты схемы печатный монтаж не применялся. Все элементы устройства, кроме светодиодов HL2-HL9, размещены в пластмассовой электротехнической распределительной коробке исполнения IP67 размерами 80x80x40 мм.

Разъем XS1 расположен на небольшой печатной плате, напротив него в стенке коробки вырезано отверстие соответствующих размеров. Элементы HA1, HL1, GB1, R16, SB1 зафиксированы на крышке коробки термоклеем. Кнопка SB2, не относящаяся к органам оперативного управления, находится на монтажной плате. На рис. 3 показано взаимное расположение монтажной платы и выносных элементов внутри распределительной коробки.

USB-сигнализатор времени приема лекарств
Рис. 3. Взаимное расположение монтажной платы и выносных элементов внутри распределительной коробки

Лекарственные препараты размещены в типовой кассетнице для радиодеталей из восьми ячеек с выдвижными ящиками. Каждая ее ячейка имеет размеры 112x55x120 мм. Общие габариты кассетницы - 224x110x120 мм. Поскольку ячейки негерметичны, но достаточно вместительны, лекарства следует хранить в заводских упаковках. Кассетница обеспечивает также защиту от света, необходимую для хранения некоторых видов лекарств. На лицевых панелях ячеек предусмотрены пазы для табличек с названиями лекарств.

Распределительная коробка закреплена на левой боковой стенке кассетницы винтами М3 с гайками. Светодиоды HL2-HL9 расположены по одному на лицевой панели каждой ячейки и соединены с устройством гибкими проводами, уложенными в трубки ПХВ внутри ячеек и сожгутованными на тыльной стороне кассетницы. Запас длины каждой пары проводов, идущих к светодиодам, должен обеспечивать свободное выдвижение ячейки на 75...80 % полностью открытого состояния.

Прилагаемый к статье файл USB_HID_ Note.hex следует загрузить в программную память микроконтроллера. Конфигурация микроконтроллера должна соответствовать показанной в табл. 1. Налаживания правильно собранное устройство не требует. Желаемую яркость светодиодов можно установить, изменяя их ток в пределах 5...10 мА подборкой резисторов R7-R15.

Таблица 1

Разряды Состояние
CKOPT 0
CKSEL[3:0] 1111
SUT[1:0] 10
BODEN 1
WDE 1
RSTDISBL 1

С точки зрения спецификации USB устройство относится к классу HID [2] с программной реализацией интерфейса USB на основе известного драйвера AVR V-USB [3]. Напомню, что в этом случае требуется переключить интерфейс в низкоскоростной режим USB 1.1, что согласно спецификации выполняют с помощью резистора, включенного между интерфейсными линиями D- и Vbus (в рассматриваемом случае это резистор R4).

Использован один из типовых вариантов подключения микроконтроллера с его питанием пониженным напряжением через диоды VD1 и VD2. Применение этих диодов желательно несмотря на наличие аккумуляторной батареи, поскольку исключает влияние ее напряжения на согласование логических уровней шины USB и микроконтроллера.

Микроконтроллер работает с тактовой частотой 12 МГц, одной из ряда допустимых для V-USB. Его программа написана на языке C в среде разработки AVR Studio 4. Текст программы (файл main.c) содержит подробный комментарий. Использованы релиз драйвера vusb-20100715 [4] и компилятор WinAVR-20100110 [5].

Библиотека V-USB хорошо документирована, поэтому здесь будут рассмотрены только моменты, непосредственно касающиеся реализации проекта или относящиеся к его особенностям. Пошаговый процесс создания программы на основе библиотеки V-USB подробно описан в [6].

Основные моменты, на которые следует обратить внимание при создании программы в AVR Studio:

- в папку проекта должны быть скопированы все файлы из папки usbdrv архива V-USB;

- к проекту AVR Studio следует добавить файлы usbdrv.c, usbdrvasm.S, oddebug.c (через пункт контекстного меню "Add Existing Source File(s)..." в дереве проекта);

- в настройках проекта (Projects → Configuration Options → General → Frequency, Hz) тактовая частота микроконтроллера должна быть задана равной 12000000 Гц. На основании этого значения AVR Studio определит для компилятора константу F_CPU, которую использует V-USB.

Необходимую конфигурацию V-USB содержит файл usbconfig.h, который тоже должен находиться в папке проекта. Штатный файл конфигурации следует заменить прилагаемым к статье. В табл. 2 перечислены наиболее важные константы, определенные в этом файле. Возможность свободной разработки USB HID устройств связана с важным моментом - в ней должны применяться пары идентификаторов VID/PID согласно документу USB-IDs-for-free.txt из библиотеки V-USB [3].

Таблица 2

Константа Значение Содержание
USB CFG IOPORTNAME D Порт подключения шины
USB CFG DMINUS BIT 4 Разряд порта, к которому подключена линия D-
USBCFGDPLUSBIT 2 Разряд порта, к которому подключена линия D+ (должна быть соединена с входом прерывания INTO)
USB CFG INTERFACE CLASS 3 (HID) Класс устройства
USB CFG MAX BUS POWER 100 Максимальный ток потребления от шины USB. мА
USB CFG HID REPORT DESCRIPTOR LENGTH 22* Длина дескриптора HID-репорта
USB CFG VENDOR ID OxCO, 0x16 Идентификатор производителя устройства
USB CFG DEVICE ID OxDF, 0x05 Идентификатор продукта

*) Это значение должно быть равно размеру символьного массива PROGMEM usbHidReportDescriptor в программе.

В программе использован формат времени UNIX, где значение времени представляет собой число секунд, прошедших с 00:00:00 UTC 01.01.1970 г. Сигнализатор не отображает время визуально, что позволяет избежать излишнего усложнения схемы и алгоритма его работы. Для передачи timestamps - четырехбайтных значений времени UNIX - служит переменная pdata.

Максимальное число подаваемых за сутки сигналов задано в программе константой NUM_ CALLS. Для хранения значений времени использован массив u_time размером NUM_CALLS+1. При этом элемент массива u_time[NUM_CALLS] содержит текущее время, а остальные - время подачи сигналов. Каждому каналу (ячейке кассетницы с лекарствами) отведено по четыре элемента массива. Например, первой ячейке - элементы c u_time[0] по u_time[3], второй - с u_time[4] по u_time[7] и т. д. Если значение элемента массива равно нулю, соответствующий сигнал считается неактивным. Такой подход позволяет упростить алгоритм передачи и обработки информации.

Описывающий структуру пакета дескриптор и процедуры передачи информации usbFunctionWrite и usbFunctionRead созданы на основе типовых решений. Базовые функции подробно описаны в заголовочном файле usbdrv.h из [3]. Процедуры дополнены условиями проверки числа обработанных каналов. Число элементов массива, получаемого устройством от компьютера, на единицу больше, чем отправляемого, поскольку для синхронизации компьютер всегда передает текущее время.

В начале главной процедуры main() происходит конфигурирование регистров ввода-вывода, установка коэффициента деления тактовой частоты равным 256 и начальная загрузка регистра таймера TCNT1 числом, нужным для формирования интервала времени длительностью 1 с. Прерывания по переполнению таймера по умолчанию выключены.

После этого программа входит в основной цикл. Если подключение к USB отсутствует, будут разрешены прерывания глобально и по переполнению таймера 1. В цикле for каждый элемент массива u_time[i] с ненулевым значением будет проверен на равенство текущему времени. Если равенство обнаружено, будут включены звуковой сигнал и светодиод соответствующей ячейки, а время срабатывания этого канала увеличено на 86400 с (на сутки).

Затем происходит проверка уровня на входе PB0. Если он низкий (кнопка SB1 нажата в подтверждение приема сигнала), на всех выходах будут установлены низкие логические уровни, что выключит сигналы.

Параллельно с этим ежесекундно по переполнению таймера 1 происходит запуск процедуры обработки прерывания TIMER1_OVF_vect. Она восстанавливает предустановку счетчика TCNT1, инкрементирует значение текущего времени в элементе массива u_time[NUM_ CALLS], изменяет состояние выхода PB1 (подключенный к нему светодиод HL1 мигает с периодом 2 с).

При подключении устройства к USB на вход PC5 поступает высокий уровень с линии Vbus шины USB. В этом случае выполнение условия if (PINC & (1<<5)) запрещает прерывания по переполнению таймера 1 и активизирует драйвер V-USB. Включается и непрерывно светит светодиод HL1.

После активизации драйвера V-USB становится возможным обмен информацией по USB. В цикле вызывается функция usbPoll(), поддерживающая интерфейс в активном состоянии при отсутствии обмена информацией. Подробнее процесс передачи информации описан в разделе статьи, касающемся программы для компьютера.

Перейдем к рассмотрению компьютерной программы ввода расписания в сигнализатор USB_HID_Note. Как видно уже по ее главному окну (рис. 4), особое внимание в процессе разработки было уделено оптимизации интерфейса для обеспечения удобства работы пользователям почтенного возраста. Программа работает под управлением ОС Windows XP, Windows Vista, Windows 7, Windows 8, Windows Server 2003, Windows Server 2008. Ее работоспособность под Windows 10 и Windows Server 2012 не проверена, но есть основания предполагать, что она будет работать нормально.

USB-сигнализатор времени приема лекарств
Рис. 4. Главное окно компьютерной программы ввода расписания в сигнализатор

После запуска программы с присоединенным к компьютеру сигнализатором нажмите на экранную кнопку "Подключить". Будет выведено сообщение о результате попытки подключения. Если она прошла успешно, станут доступны экранные кнопки "прочитать все" и "Сохранить".

Для ввода расписания достаточно выбрать номер ячейки из первого выпадающего списка (селектора), а номер сигнала для этой ячейки - из второго списка. Затем установить нужное время подачи сигнала, щелчком по флажку слева от номера разрешить или запретить выбранную комбинацию ячейки и сигнала (при этом изменяется цвет флажка) и написать название препарата в единственной доступной строке. Название препарата привязывается к номеру ячейки, поэтому содержимое строки изменяется только при переключении первого селектора. Флаг разрешения относится к выбранной комбинации номеров ячейки и сигнала.

Так заполняют все необходимые ячейки. Состояние ячеек по умолчанию - выключено, активировать их все нет необходимости. Если нужно, настройки ячеек можно изменять. Введенные значения сохраняются динамически.

По нажатию на экранную кнопку происходят передача расписания в сигнализатор и его запись в файл конфигурации. О результате передачи будет выведено сообщение. Хранящееся в сигнализаторе расписание можно прочитать из него нажатием на экранную кнопку . После этого в окне программы его можно просмотреть, при необходимости отредактировать и загрузить обратно в сигнализатор. Нажатие на экранную кнопку стирает название лекарства в соответствующем окне, давая возможность записать другое.

Важная особенность сигнализатора - остановка таймера текущего времени при подключении к USB. В момент закрытия компьютерной программы происходит автоматическая запись в сигнализатор расписания и текущего времени (синхронизация). Поэтому, закрыв программу, следует по возможности скорее отключить от сигнализатора USB-кабель, чтобы свести к минимуму разницу между истинным и "системным" временем.

Впрочем, даже разница в несколько минут в рассматриваемом случае некритична, поэтому никаких мер по устранению этой особенности не принято. Если же после завершения работы программы USB_HID_Note сигнализатор случайно остался надолго подключенным к компьютеру, достаточно запустить эту программу заново, нажать на экранную кнопку , затем на и тут же на или просто закрыть программу. Правильный отсчет времени сигнализатором будет восстановлен, после чего USB-кабель можно отсоединить.

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

Программа USB_HID_Note написана на языке C++ в среде программирования Qt 5.3.2. Выбор этой среды обусловлен ее бесплатностью, кроссплатформенностью, широкими возможностями и уникальными встроенными средствами для создания и отладки приложений любого уровня в сочетании с гибкостью интерфейсных решений. Тип реализации приложения - Qt Widget. Исходный текст виджета - файл widget.cpp. Полностью проект собран в архив USB_HID_Note_ pro.zip, приложенный к статье.

Особенность программы - прямое обращение к функциям библиотек SetupAPI и HID. Поэтому в компьютере, на котором происходит компиляция, необходимо наличие файлов setupapi.lib и hid.lib, соответствующих версии его операционной системы. Эти файлы обычно входят в пакет WinDDK. Чтобы не было необходимости полностью устанавливать весь пакет WinDDK, файлы различных версий из WinDDK 7600. 16385.1 собраны автором в одну папку winddk_libs, которая имеется на FTP-сервере редакции. Компиляция и отладка могут проводиться под ОС Windows 7, Windows Server 2008 R2, Windows Vista SP1, Windows Server 2003 SP1, Windows XP SP3 или более поздних. В файле .pro должны быть явно указаны полные пути к библиотекам, например, как в табл. 3.

Таблица 3

USB-сигнализатор времени приема лекарств

Откомпилированный исполняемый файл программы вместе с файлами конфигурации (.cfg) и стилей (.qss) находятся в приложенной к статье папке USB_HID_Note. Там же находятся необходимые динамические библиотеки Qt (файлы .dll). Как известно, это требование обязательно для любого приложения, разработанного в Qt. Список этих библиотек для рассматриваемого случая приведен в табл. 4.

Таблица 4

USB-сигнализатор времени приема лекарств

Все библиотеки копируют из папки ..ToolsQtCreatorin, за исключением двух последних, которые копируют из ..5.3mingw482_32pluginsplatforms и размещают в соответствующей подпапке рабочей папки программы. Можно также самостоятельно скопировать их с компьютера, на котором выполнялась компиляция программы, в рабочую или системную папку программы (размер архива - 126 Мбайт, в распакованном виде - 400 Мбайт).

Алгоритм программы основан на стандартных решениях, приведенных в [7]. Особенности реализации связаны, в первую очередь, с использованием разных языков программирования (в отличие от описанных в источнике Delphi и C#). Для использования функций HID API и SetupAPI необходимо подключить заголовочные файлы hidsdi.h и setupapi.h соответственно.

Обработчик нажатия на экранную кнопку - процедура on_Connect Button_clicked(). Сначала с помощью функции драйвера HidD_GetHidGuid определяется GUID, связанный с HID. Затем вызываются функции SetupAPI для создания перечислителя интерфейса и получения HID-имени устройства. Подробно это описано в [7] на с. 333. В рассматриваемом случае намеренно не использованы функции определения имени продукта или его серийного номера. Производится только проверка пары VID/PID. Так сделано, чтобы избежать возможности коммерческого использования устройства. Значения VID/PID заданы константой Dev_VID_PID в файле global_vars.h.

После обнаружения устройства управление снова передается драйверу HID. Функция CreateFile запрашивает его дескриптор, HidD_GetPreparsedData возвращает указатель на буфер, содержащий информацию о параметрах устройства, а HidP_GetCaps возвращает структуру со значениями этих параметров.

В отличие от обычно используемого способа с размером репорта, присваиваемым непосредственно в программе, здесь его значение определяет элемент структуры Caps.FeatureReportByteLength, получаемый из дескриптора. Это позволяет создать более универсальное решение, не требующее внесения изменений в программу и повторной ее компиляции при изменении размера репорта в дескрипторе устройства.

Собственно обмен информацией происходит с помощью функций HidD_Get Feature (чтение) и HidD_SetFeature (запись), вызываемых в соответствующих процедурах data_read() и data_transfer() в циклах в соответствии с числом ячеек. Как уже отмечалось, число элементов массива, принимаемых сигнализатором, на единицу больше, чем отправляемых, поскольку для синхронизации компьютер всегда передает текущее время.

Подробный комментарий с описанием назначения наиболее важных процедур имеется в тексте программы. Назначение остальных процедур либо стандартное, либо интуитивно понятное, например, on_comboBox_ currentIndexChanged() - обработчик события изменения индекса comboBox. Закомментированные строки qDebug и им сопутствующие были предназначены только для отладки программы. При необходимости отладки и просмотра в окне встроенного отладчика Qt хода обмена информацией все эти инструкции следует раскомментировать.

Общую конфигурацию программа хранит в файле settings.cfg. Он имеет обычный текстовый формат, при необходимости его можно редактировать вручную. Его секция [General] содержит число ячеек NUM_BOX=8 и число сигналов на ячейку NUM_BOX_CALL=4, в секции [view] целыми числами задано положение окна программы на экране. Секция [names] содержит наименования препаратов по ячейкам, секция [used] - флаги активности ячеек, секция [times] - значения времени срабатывания в формате UNIX timestamp. Последние носят в основном информационный характер, поскольку рабочие значения находятся в памяти микроконтроллера сигнализатора. При ручном редактировании файла следует учесть, что параметры name имеют формат C/C++/Java source code (например, u3256).

И в заключение несколько рекомендаций тем, кто желает самостоятельно изменить число сигналов, подаваемых устройством. Если число ячеек фиксировано, число сигналов на ячейку изменить сравнительно несложно. В программе микроконтроллера для этого необходимо, во-первых, изменить константу NUM_CALLS. Ее значение должно быть равно произведению числа ячеек на максимальное число сигналов на каждую ячейку. В рассмотренном в статье случае оно равно 8x4=32. Во-вторых, в процедуре switch... case... число операторов case в каждой строке должно быть равно числу сигналов на одну ячейку. При этом аргументы операторов case должны образовывать непрерывную последовательность от 0 до NUM_CALLS-1. Тело функции и оператор break остаются без изменений. Затем программу необходимо сохранить и заново откомпилировать.

В программе для компьютера никаких корректировок не требуется. Достаточно изменить значение константы NUM_BOX_CALL (число сигналов на ячейку) в файле settings.cfg. Оно должно строго соответствовать заложенному в программу микроконтроллера.

Программы для микроконтроллера и компьютера можно скачать с ftp://ftp.radio.ru/pub/2017/01/signal.zip.

Литература

  1. Дриневский В., Сироткина Г. Музыкальные синтезаторы серии УМС. - Радио, 1998, № 10, с. 85.
  2. Universal Serial Bus. HID Information. - URL: http://www.usb.org/developers/ hidpage/.
  3. V-USB. - URL: https://www.obdev.at/ products/vusb/index.html.
  4. Архивдрайвераvusb-20100715. - URL: https://www.obdev.at/downloads/vusb/vusb-20100715.tar.gz.
  5. Компилятор WinAVR-20100110. - URL: https://sourceforge.net/projects/winavr/ files/WinAVR/20100110/WinAVR-201 0 0110-install.exe/download.
  6. USB для AVR. Часть 2. HID Class на V-USB. - URL: http://we.easyelectronics.ru/electro-and-pc/usb-dlyaavr-chast-2-hid-class-na-v-usb.html.
  7. Агуров П. Практика программирования USB. - С.-Пб.: "БХВ-Петербург", 2006.

Автор: Д. Панкратьев

Смотрите другие статьи раздела Медицина.

Читайте и пишите полезные комментарии к этой статье.

Рекомендуем скачать в нашей Бесплатной технической библиотеке:

журналы A Radio. Prakticka Elektronika 2007 (архив за год)

журналы Силовые машины 2007 (архив за год)

книга Монтаж асинхронных двигателей до 100 кВт. Черепенин П.Г., 1964

книга Советские радиолюбители. Бурлянд В.А. (сост), 1976

статья SE усилитель на лампах 6Ж52П и 6П43П

статья Работа на мазутном хозяйстве тепловой электрической станции. Типовая инструкция по охране труда

справочник Сервисные меню зарубежных телевизоров. Книга №1

Оставьте свой комментарий к этой статье:

Имя:

E-mail (не обязательно):

Комментарий:

[lol][;)][roll][oops][cry][up][down][!][?]