суббота, 25 августа 2018 г.

LCD2USB - подключение LCD индикатора к компьютеру через USB

LCD2USB - проект с открытым исходным кодом и описанием железа (open source/open hardware). Цель LCD2USB - подсоединить текстовые дисплеи на основе контроллера HD44780 к персональным компьютерам (PC) через USB. LCD2USB разрабатывался как дешевый проект, который можно просто изготовить из доступных запчастей. Поэтому он основан на недорогом микроконтроллере Atmel AVR ATmega8 (из памяти программ flash 8 кбайт используется ~3 кбайт), который легко достать. LCD2USB поставляется с программой-демо, работающей на LinuxMacOS X и Windows.
Dстатье описан проект, который позволяет легко и недорого подключить к компьютеру LCD-индикатор. Оригинал статьи на Github - https://github.com/harbaum/LCD2USB
В настоящий момент LCD2USB поддерживается lcd4linux (поддержка LCD2USB встроена), LCD Smartie (требуется отдельный драйвер) и LCDProc (поддержка LCD2USB встроена).
LCD2USB базируется на следующих проектах:
  •  LCD4LINUX [1], отличный фреймворк для использования маленьких LCD вместе с Линукс
  •   V-USB [2], полная программная реализация протокола USB для платформы AVR
  •      USBtiny [3], другая программная реализация протокола USB для AVR
  •     LCD library for HD44870 based LCD [9], подпрограммы LCD от Peter Fleurys для AVR




Интерфейс USB

USB интерфейс LCD2USB основан на программной реализации протокола USB с использованием трех ножек AVR (PC0, PC1 и PD2). Эта программная реализация поддерживает только low speed USB, о которой PC информируется резистором R1. Текущая версия 1.1 LCD2USB работает с сигналами USB на 3.6V, и в этом отношении она больше соответствует стандарту USB, чем старая версия 1.0.
Соединение с USB может происходить через коннектор типа USB B. Это квадратный коннектор, обычно используемый для USB-устройств (в отличие от коннекторов типа flat A, используемый для USB хостов). USB коннектор монтируется на обратной стороне PCB. Другой способ подключения - прямая напайка кабеля к обратной стороне, как показано на рисунке.

Питание

Для дисплеев с подсветкой нужно предпринять специальные меры для их питания. LCD2USB разработан так, что потребляет в большинстве случаев 75 мА, что нормально для LCD с подсветкой на LED. Эта величина также сообщается PC при конфигурировании подключения USB. Интерфейс LCD2USB может предоставить до 100 мА с помощью программного управления подсветкой. Это ограничение транзистора T1. Если подсветка потребляет более 100 мА, необходимо заменить T1 (см. секцию "Примечания к списку деталей" далее). Также необходимо предотвратить перегрузку шины USB, которая не может предоставить ток более 500 мА для bus powered device. Увеличение потребления тока подсветкой необходимо отразить в конфигурации устройства USB путем настройки константы USB_CFG_MAX_BUS_POWER в файле usbconfig.h исходного кода прошивки (firmware), и перекомпилировать проект. Это изменение firmware может не потребоваться для всех PC, но некоторые могут отключать источник питания для устройства, которое потребляет ток больше, чем заказано в дескрипторах USB.

Схема

На основе этой схемы изготавливаем печатную плату. От себя добавлю, что я убрал ДУВ1бК5бД1бК4бС7,S1 и S2. И без них работает нормально.

Прошивка

avrdude -c stk200 -p atmega8 -U lfuse:w:0x9f:m -U hfuse:w:0xc9:m -U flash:w:firmware-avrusb.hex
или
avrdude -c usbasp -p atmega8 -U lfuse:w:0x9f:m -U hfuse:w:0xc9:m -U flash:w:firmware-avrusb.hex

Сборка и настройка

Свой экран я собрал на макетке:
В системе он определился сразу как LCD2USB. Далее, если необходимо ставим драйвер...
Экран работает как с Smartie, так и с AIDA  64: 

Возможности, конечно, ограничены этими программами, но всеравно достаточно обширны. Smartie позволяет выводить базовую eyae о железе, новых Email, получать RSS, печатать все что угодно на экране. AIDA 64 может выводить более обширную инфу о компьютере, которую удобно мониторить при тестах.

Пара фото моего экрана


вторник, 21 августа 2018 г.

Wake On Lan в Debian

Удалённое выключение Linux не представляет особого труда, лишь бы был доступ ssh. А вот с аппаратным включением системы дело обстоит несколько иначе.
Итак, поговорим о том, что и как необходимо сделать, чтобы удалённо включить компьютер, поддерживающий технологию Wake On Lan.
Wake On Lan поддерживается практически во всех современных материнских платах. Для того, чтобы иметь возможность разбудить компьютер удалённо, необходимо, чтобы на нём был установлен источник питания ATX версии не ниже 2.01, материнская плата, поддерживающая Wake On Lan (сокращённо WOL), а также сетевая плата с поддержкой этой технологии.
Настройка:
Определить, поддерживает ли материнская плата Wake On Lan, можно зайдя в настройки CMOS Setup в раздел настроек управления питанием. Найдите там опцию «Wake On Lan» и убедитесь, что она включена.
После загрузки системы установите, если необходимо, пакет ethtool, при помощи которого можно в том числе и переключать сетевую плату в режим пробуждения по сигналу WOL от других машин:
# apt-get install ethtool
Далее, необходимо определить, поддерживает ли установленная сетевая плата WOL, и включена ли эта опция:
# ethtool eth0 | grep -i wake-on
    Supports Wake-on: pumbg
    Wake-on: d
В строке Supports Wake-On перечислены механизмы, поддерживаемые сетевой платой.
Для удаленного включения используется отправка Magic Packet ("волшебного пакета") на MAC адрес сетевой карты через широковещательный адрес сети.

Убедитесь, что в Supports Wake On присутствует буква «g». Буква «d» в строке Wake-on обозначает, что WOL для данного сетевого интерфейса отключён. Чтобы включить его в режим распознавания Magic Packet, необходимо:
# ethtool -s eth0 wol g
Имейте ввиду, что после включения компьютера, вероятней всего, опция Wake-on опять перейдёт в состояние «d» и, если вам нужно, добавьте приведённую выше команду куда-нибудь в автозагрузку.
Теперь всё готово для пробуждения системы по получению Magic Packet. Для того, чтобы его отправить, необходимо знать MAC-адрес сетевого интерфейса включаемого компьютера, поэтому прежде, чем выключать систему, запишите его:
# ifconfig eth0 | grep -i hwaddr
eth0      Link encap:Ethernet  HWaddr 00:00:2e:b9:cb:ad
Теперь можно выключать систему:
# poweroff
Включение:
Теперь с любого другого компьютера, находящегося в том же сегменте сети (в принципе, это необязательно, но тогда необходимо, чтобы в вашей сети маршрутизаторы корректно пробрасывали широковещательные пакеты), можно включить ранее сконфигурированную удалённую систему. Для этого понадобится утилита wakeonlan, которую необходимо установить, если её ещё нет в вашей системе:
# apt-get install wakeonlan

Разбудить выключенную систему теперь можно командой (обратите внимание, wakeonlan не требует прав суперпользователя):
$ wakeonlan -p 8 00:0e:2e:b9:cb:ad
Опцией -p указывается номер UDP-порта, с которого будет отправлен Magic Packet. Указание этой опции обязательно, поскольку по умолчанию wakeonlan использует девятый порт, помеченный в /etc/services как discard, что означает то, что пакет с этого порта отправить не получится. В принципе, можно использовать любой незанятый в системе UDP-порт.