Программирование BASCOM
Меню сайта
Категории каталога
Мои статьи [115]
Наш опрос
Оцените мой сайт
Всего ответов: 1292
Главная » Статьи » Мои статьи

"USB-розетка" для ноутбука
Это моя первая статья, поэтому пишу, как умею. 
[Пиши дальше, хорошо умеешь (администратор сайта)]

Устройство будет полезно владельцам ноутбуков, нетбуков и, возможно, планшетов и принадлежит к классу USB-HID (Human Interface Device).

 

   "USB-розетка" "следит" за уровнем заряда АКБ и включает/выключает зарядное устройство (ЗУ) по заранее выставленным порогам. 
Если по каким либо причинам ЗУ не включится, то управляющая программа об этом сообщит.

Об истории создания.

   Наблюдая за женой, как она "судорожно" пытается успеть подключить ЗУ к ноутбуку, пока он не перешел в "спящий режим" или после полного заряда АКБ забывает ее отключить (как известно, постоянное подключение ЗУ негативно влияет на АКБ), в голову пришла мысль: "А возможно ли программно "вытащить" значение заряда АКБ из системы? " Как оказалось, возможно.

О функционале.

    Так уж сложилось, что к моменту создания девайса WINDOWS XP осталась только на "большом" ПК. На нетбуке стоит WINDOWS 8, а на ноутбуке - WINDOWS 7. По этой причине программа в полном объеме тестировалась только на этих системах. Но, использовав маленькие хитрости, скриншоты привожу именно с WINDOWS XP. Вот так выглядит окно программы:

 

   Если говорить честно, то эта уже вторая версия программы и устройства, но об этом чуть позже.
   "USB-розетка" "следит" за уровнем заряда АКБ и включает/выключает зарядное устройство (ЗУ) по заранее выставленным порогам. Если по каким либо причинам ЗУ не включится, то управляющая программа об этом сообщит:

 

   Вывод окна сопровождается звуковым сигналом. Он повторяется каждые 15 секунд. При устранении неисправности, окно само закроется.

   Все кнопки и выпадающие списки имеют всплывающие подсказки. При запуске программы, она сразу сворачивается в системный трей. Если программа уже запущенна и ее пытаются запустить еще раз, то выводится такое сообщение:

 

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



   Так же идет постоянное считывание из системы уровня заряда АКБ в процентах. Если батарея не обнаружена, то программа так и "напишет":

 

   Экранный светодиод дублирует основные режимы работы: ЗУ выключено, ЗУ включено (зеленый), ошибка ЗУ (красный). 
   




   Имеются кнопки добавления/удаления автостарта программы после старта операционной системы.  
   Иконка в трее имеет меню, вызывается нажатием правой кнопки мыши:

 

Развернуть - Развернуть окно программы из трея. 
Свернуть - Свернуть программу в трей.
Язык/Language - Выбор языка интерфейса.
Выход - Выход из программы, при этом все настройки сохраняются.

   Как видно языка пока только три. Добавить новый язык просто. В папке Files/Language копируем и вставляем любой язык, например Русский. Переименовываем его в соответствии с названием нового языка. Открываем новый язык в любом текстовом редакторе с возможностью выбора кодировки сохранения файла, например AkelPad.  Заменяем в каждой строчке после равно слова из нового языка. Обязательно сохраняем файл в кодировке Юникод (UNICODE). 

О конструкции.

   За основу был взят Demo – device Петра.
   Были убраны кнопки, лишние светодиоды и переделана питающая часть. В итоге получилась такая схема:

 

                     Перечень элементов:

Все электролитические танталовые чип-конденсаторы типоразмера B, керамические чип-конденсаторы и чип-резисторы типоразмера 0805.
C1, C5  =  47µ, 10В.
C2, C3, C6, C9, C10 = 0,1 мкФ, 50В. 
C4 = 1 мкФ, 50В.
C7, C8 = 22 пФ, 50В.
DA1 = 1117S33 
FU1 = 250mA, предохранитель интегральный N05.
FU2 = 1A*, держатель предохранителя ZH266 5x20 на плату с предохранителем. 
HL1 = L-937EGW, светодиод с держателем Corpus 9004 с заманенным на L-937EGW или LC-03.
K1 = 845HN-2A-C-05VDC 
R1 = 1,5 кОм. 
R2 = 1 МОм. 
R3, R4 = 68 Ом. 
R5 = 0 Ом. 
R6, R8 = 10 кОм.  
R7 = 470 Ом.
R9 = 330 Ом. 
VD1 = LL4148 
VT1 = IRLML2502 
ZQ1 = 12,000 МГц, резонатор кварцевый HC-49S или 3852.
IC1 = ATMEGA8A или ATMEGA48-20PU (эти МК проверялись).
XS1 = Кабель USB2.0 A (вилка). Не жалейте денег, купите хороший.
XP1 = DG306-5.0-2P

   Как я уже говорил, эта уже вторая версия устройства. Придя с работы, я услышал, что моя "штуковина" не включила ЗУ и не видно работает она или нет. Изначально, при подключении, устройство мигало три раза светодиодом, показывая, что контроллер стартовал, а программа запускалась и была поверх всех открытых окон, но при тестировании мой самый главный тестер машинально закрыл окно, нажав на "крестик". Было принято решение о модернизации устройства. В результате программу можно закрыть либо через ALT+F4, либо через меню в трее, появилась индикация основных режимов, как в программе, так и в устройстве.

   Была разработана плата:

 

   В качестве корпуса была использована плинтусная розетка серии "Прима" - RA16-003-2M-B
 


Правильно собранное устройство начинает сразу работать. Несколько фото готового устройства:

 

 

 

 

 
 

 


   Вот так выглядит наклейка:

 

   Код практически без изменений. Изменил VID и PID: PID=2112 , VID=2012 (ну не верю я в конец света!). Изменил прием данных, дескриптор продукта. При первом подключении к компьютеру система обнаружит новое устройство - "USB-розетка для ноутбука", и сама установит для него стандартные драйверы HID.
 


Вот небольшая программка для создания строковых дескрипторов в формате юникода. 
Просто вводим текст и нажимаем на кнопку "Преобразовать". Программа преобразует текст в формат юникода и создаст код для BASCOM'а. Спасибо говорим Петру.

Фьюзы.




 

   Программа для ПК написана на языке PUREBASIC 4.61. Для компиляции потребуются библиотеки Droopy Library и HID_Lib. Код программы занимает 563 строки, поэтому достаточно demo-версии.

   В итоге цель достигнута, жена спокойно работает за ноутбуком.

Полезные ссылки:

http://www.purebasic.com — сайт разработчика PUREBASIC.  
http://pure-basic.narod.ru  — русскоязычный сайт о PUREBASIC. 
http://www.mcselec.com/ — сайт разработчика BASCOM AVR.
http://bascomavr.3bb.ru/ — русскоязычный форум о BASCOM AVR. 
http://pure-basic.narod.ru/libs.html — библиотеки Droopy Library и HID_Lib.

   Устройство разработано по принципу «КАК ЕСТЬ» и автор не несёт ответственности за явный или не явный ущерб, причинённый в результате повторения девайса!

   Скачать ПО, исходники, прошивки, фьюзы, печатную плату в формате LAY, схему в формате Splan7, наклейку.

   Выражаю огромную благодарность: Петру за перевод программы на украинский язык и помощь в написании программы; Mrshilov за перевод программы на английский язык; админу портала за возможность опубликовать статью.


Илюшкин Максим (max), Барнаул, 2012г.

[Администратор поздравляет автора с почином и желает больших творческих успехов и острого пера!]

Категория: Мои статьи | Добавил: bascom (19.12.2012)
Просмотров: 6697 | Комментарии: 4
Всего комментариев: 4
4 Djonny  
0
Полезная вещь..собрал,подключил,работает...

3 Alma  
0
Класная штука, спасибо автору.

2 ma35tr0  
0
Молодец!
Очень полезный девайс.
И написано хорошо.
Надо бы попробовать

1 max50  
0
Большое спасибо.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Поиск
Друзья сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Copyright Radan Studio © 2024