IT News: Digital Camera, OS, Laptop, Smartphone, Smart TV, Sound...

The Author's Project by Valeri N.Kravchuk
Сайт проверен Dr.Web
Меню сайта
  • Главная страница
  • Информация о сайте
  • Дневник
  • Каталог файлов
  • Обратная связь
  • Каталог сайтов
  • FAQ
  • Доска объявлений
  • Форум
  • Фотоальбом
  • Категории раздела
    Автомобильные гаджеты, ремонт... [220]
    Безопасность IT [484]
    Блоки питания, Power Banks, зарядки... [490]
    Видеорегистраторы [220]
    Гаджеты для спорта и здоровья... [190]
    Гаджеты, аксессуары... [625]
    Измерительная техника, инструменты [449]
    Накопители данных [226]
    Нетбуки, Ноутбуки, Ультрабуки [680]
    Мультиварки, блендеры и не только... [158]
    Планшеты [758]
    Радар-детекторы [26]
    Роботы-пылесосы [37]
    Своими руками [357]
    Сети, сетевые технологии, оборудование... [269]
    Смартфоны [4966]
    Фотокамеры, объективы, искусство фотографии.. [543]
    Умный дом [47]
    Электронные книги [96]
    CB, LPD, PMR- связь... [171]
    DECT, IP-телефоны [18]
    Drones, boats, cars... [108]
    electric cars [35]
    GPS-навигаторы, трекеры... [51]
    Linux и не только [4380]
    mini computers и не только... [409]
    News IT, Это интересно, ликбез... [1113]
    Smart TV, UltraHD, приставки, проекторы... [414]
    Smart Watch [263]
    Sound: наушники, плееры, усилители... [616]
    Windows 10... [298]
    Windows 11 [28]
    Погода

  • Метеорадар БРЕСТ
  • Погода в Бресте от www.yr.no

    Яндекс.Погода БРЕСТ

  • Интересные ссылки

    COMPIZOMANIA

    Наш опрос
    Оцените мой сайт
    Всего ответов: 1340
    Статистика
    Анализ веб сайтов

    Яндекс.Метрика

    Рейтинг@Mail.ru Яндекс цитирования

    Russian America Top. Рейтинг ресурсов Русской Америки.

    eXTReMe Tracker

    Правильный CSS!


    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Locations of visitors to this page
    Форма входа
    Главная » 2013 » Декабрь » 16 » Дешевая USB кнопка для PC
    06:29
    Дешевая USB кнопка для PC

    Дешевая USB кнопка для PC

    Идея — запускать скриптик по нажатию физической кнопки, подключенной к компьютеру.

    кнопка

    Варианты:
    • Arduino nano — 1400р (ориг), 300р(не ориг). (плюсы: можно навесить много кнопок на 1 usb порт; минусы: надо паять + понять как она работает и на компьютере придется держать постоянно программу, которая будет ждать нажатия кнопки)
    • USBbutton — 780р (плюсы: все красиво оформлено и сделано; минусы: высокая цена и она win-only)
    • U-HID Nano — 1150р (плюсы: есть софт; минусы: высокаяя цена + необходимо паять)
    • Usb устройство (почти любое) — 0-100р (плюсы: почти 0 себестоимость, не надо программировать; минусы: linux, возможная пайка, повреждение usb кабеля)



    Все эксперименты я проводил на Raspberry PI с debian на борту (точнее прошивка raspbmc).
    Для реализации подойдет любой дистрибутив, испльзующий udev для отслеживания системных устройств.

    Устройство, на основе которого будет делаться кнопка может быть любым: старая полусломаная usb клавиатура, мышка, камера да и вообще все что цепляется по USB и может быть опознано системой.
    На маркете нашел мышь за 70 руб, что может служить кнопкой и вполне конкурентоспособно с другими вариантами.

    Делаем кнопку


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


    Пока кнопка нажата — вся цепь замкнута, на устройство подается питание и система видит, что подключено новое устройство.
    Когда кнопку отжимаем, то происходит разрыв цепи и устройство пропадает из системы.
    Эта логика и есть ключевая во всем процессе создании кнопки.

    Я разобрал старую клавиатуру и добыл из нее
    микросхему


    Проверка работоспособности кнопки:


    Кратчайшая теория udev


    Процесс udevd отслеживает подключение/отключение девайса и создает файл устройства в директории /dev/ (совсем образное объяснение, для любителей подробностей смотри ссылки в конце статьи)
    Во время подключения устройств udevd проверяет список правил в директории /etc/udev/rules.d/
    Правила могут жить как и в одном файле так и в нескольких.
    Создадим файл и добавим правило:
    pi@raspbmc:~$ cat /etc/udev/rules.d/20-usb_button.rules
    ATTRS{name}=="LITEON Technology USB Multimedia Keyboard", ATTRS{phys}=="usb-bcm2708_usb-1.2/input0", ACTION=="add", RUN+="/bin/sh /home/pi/usb.sh"
    

    в debian нет необходимсто перезапускать udev после изменения правил, все происходит автоматически.

    Это правило выполняется только когда соблюдаются все условия:

    ATTRS{name}==«LITEON Technology USB Multimedia Keyboard» (имя подключенного устройства совпадает)
    ATTRS{phys}==«usb-bcm2708_usb-1.2/input0» (устройство подключено в конкретный USB порт. Мне это необходимо, тк использую 2 кнопки, сделанные из одинаковых клавиатур)
    ACTION==«add» (правило работает только когда устройство тольок что добавлено, есть еще параметр "remove". Если не указать Action, то скрипт будет постоянно запускаться, пока подключено устройство)
    RUN+="/bin/sh /home/pi/usb.sh" (собственно наш скрипт, который запускается по нажатию кнопки, без /bin/sh так и не запустился, также см P.S.01 ниже)

    Список атрибутов можно узнать следующим образом:
    pi@raspbmc:~$ udevadm info -a -p $(udevadm info -q path -n /dev/input/by-path/platform-bcm2708_usb-usb-0\:1.2\:1.0-event-kbd)
    
     looking at device '/devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2:1.0/input/input107/event0':
     KERNEL=="event0"
     SUBSYSTEM=="input"
     DRIVER==""
    
     looking at parent device '/devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2:1.0/input/input107':
     KERNELS=="input107"
     SUBSYSTEMS=="input"
     DRIVERS==""
     ATTRS{name}=="LITEON Technology USB Multimedia Keyboard"
     ATTRS{phys}=="usb-bcm2708_usb-1.2/input0"
     ATTRS{uniq}==""
     ATTRS{properties}=="0"
    ....
    

    где /dev/input/by-path/platform-bcm2708_usb-usb-0\:1.2\:1.0-event-kbd — адрес устройства

    адрес устройства в системе можно узнать в момент подключения устройства:
    pi@raspbmc:~$ udevadm monitor --env |grep DEVLINKS
    DEVLINKS=/dev/input/by-id/usb-LITEON_Technology_USB_Multimedia_Keyboard-event-kbd /dev/input/by-path/platform-bcm2708_usb-usb-0:1.2:1.0-event-kbd
    


    для дебага я использовал правило:
    SUBSYSTEM=="usb", ATTRS{ID_MODEL_ID}=="c312", SYMLINK+="ABC"
    

    и проверял создался ли симлинк устройства /dev/ABC

    Итог



    Вот и все. Мы получили кнопку, по нажатию которой запускается скрипт в системе.

    стоимость:
    старая клавиатура — 0р
    кнопка — 10р
    корпус — 0 р

    И самое главное что такая кнопка не требует знаний микроконтроллеров и особого умения паять, удобна и доступна каждому :)

    P.S.00 про мой корпус для кнопки.

    P.S.01 Наткнулся на интересный баг и не смог забороть: скрипт указанный в правиле запускается 2 раза. Может кто подскажет?
    P.S.10 Кнопку необходимо держать около 2х секунд, так как необходимо дождаться инициализации устройства в системе
    P.S.11 Если решите повторить проект с какими либо измененими, настоятельно рекомендую хотя бы пролистать список литературы
    P.S.100 Скрипт на python для работы с udev github.com/bockro/misc usb_checker.py

    http://habrahabr.ru/post/206122/
    Категория: Linux и не только | Просмотров: 777 | Добавил: laptop | Рейтинг: 0.0/0
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Волк слабее льва и тигра, но в цирке волк не выступает!
    Волк слабее льва и тигра, но в цирке волк не выступает!
    Волк - единственный из зверей, который может пойти в бой на более сильного противника.
    Если же он проиграл бой, то до последнего вздоха смотрит в глаза противника. После этого умирает...

    Праздники сегодня

    Поиск
    Календарь
    Архив записей
    Друзья сайта
  • Официальный блог
  • JEEP - the best! Mercedes - the best! Автомобильный портал города Бреста: технические характеристики с фото, авторынок, автоспорт...
    Наша кнопка
    IT новости с моего лаптопа...

    Внимание!
    Администратор сайта laptop.ucoz.ru не несет ответственности за содержание рекламных объявлений. Все используемые на сайте зарегистрированные товарные знаки принадлежат своим законным владельцам! Используемая со сторонних источников информация публикуется с обязательными ссылками на эти источники.
    Copyright Valeri N.Kravchuk © 2007-2024