Pull to refresh
13
0
Арсений @CRImier

Пользователь

Send message
Всё верно, на Pi Zero и с ESP, подрубленным через SDIO =) Скоро буду по-настоящему пилить и документировать на Hackaday, пока что собрал железо для мотивации закончить один проект побыстрее — всё работает на удивление хорошо. Кстати, будет open-source настолько, насколько возможно — двухслойные платы в KiCad, компоненты дешёвые и доступные, из своего кода всё с открытыми лицензиями.
Это только для Ethernet-подключения и когда знаешь IP. Если не знаешь — нужно как-то узнать до этого, в pyLCI это есть. Если Ethernet недоступен, но есть WiFi — можно подключиться к нему, в pyLCI это есть. WiFi с паролем? Пароль можно ввести из pyLCI, хоть кнопок и всего 5. (Кстати, надо будет ещё добавить возможность задать IP, должно быть тривиальным).

Далеко не всегда доступно всё необходимое, будь то монитор с клавиатурой, USB-UART или Ethernet-подключение. Сейчас я могу прийти в любое место с WiFi, нажать пару кнопок на своей портативной Pi и подключиться к ней через ноут, с телефона открыть какой-то вебсервис на ней или просто запустить какой-то скрипт через тот же интерфейс. Большинство решений для подключения к Pi такого не могут в принципе, дёшево — ещё меньше, удобно — ни одного. Так что проблема — не надумана и крайне актуальна.
Телефон — это отдельная тема, пока что это проект выходного дня just for fun. Сделаю v1.0, если будет заинтересованность, буду развивать дальше =) Плюсы в использовании RPi тоже есть, если интересно, могу рассказать.

Должен признаться, бесконечного потока проблем не встречал. Впрочем, за 3 года работы я уже выработал кучу привычек, которые помогают избегать самые распространённые проблемы, да и вышеописанный софт неслабо помогает. Не поделитесь опытом?
Можно подключиться через UART и смотреть nvram =)
Ну лично мне было интересно прочитать =) Сегодня доставал пароли из Asus роутера, подключившись к UART и выполняя nvram show|grep http_passwd. Так достаточно легко найти много интересных вещей (включая всякие логины и пароли), ну и можно даже немного конфигурировать роутеры, если не хочется подключаться к веб-интерфейсу. Тоже где-то описано, я уверен, но узнать про альтернативные способы полезно.
Жаль, что мой старый логин на Mail.ru я не могу восстановить из-за «техничной» техподдержки. Много чего на него завязано до сих пор — так и сижу на Яндексе =( Если у Вас тут есть живые люди из техподдержки, пожалуйста, откликнитесь — ящик старый, но до сих пор важный.
Тут прикол ещё и в системе приложений и дешёвом железе, которое можно прикрепить и оставить, как я сейчас делаю со своими девайсами =) А ещё — носимые устройства, встраиваемые интерфейсы, гибкость и тому подобное. Да, консоль — это круто. GUI — тоже. Но есть ниша, которую не занимает ни один, ни другой.
Да, я так давно делал сам с Raspberry Pi и HC-05 =) У этого своё применение и свои ограничения.
У меня есть несколько идей на этот счёт.
Прежде всего, есть LCDproc. Это похожее и давно существующее решение, которое пересекается с целью моего, но не совсем. Оно позволяет выводить на дисплеи всякую статистику, данные плеера и прочее. Если вам просто нужно выводить обновляющуюся информацию — для этого можно использовать LCDproc.
Ещё — используя pyLCI, можно выдавать отдельным приложениям отдельные дисплеи. Дисплей с меню — отдельный, для какого-то приложения — второй, для ещё какого-то — третий. Фича ещё не готова, но много времени не займёт — просто пока нет актуального юзкейса.
Нужна какая-то специфическая прошивка для Arduino или есть коммуникационный протокол?

Прошивка для Arduino и драйвер pyLCI для передачи команд по последовательному порту. На Arduino можно передавать команды HD44780, а принимать коды нажатых клавиш. Предельно просто =)
Как присваиваются имена найденным устройствам и субустройствам (кнопкам, экранам и т.д.)?

Конфиги, конфиги и ещё раз конфиги (на самом деле, всего один файл ;-) ) Автоматическое использование всех сколь-либо подходящих устройств, т.е., по сути, автоконфигурация — на первый взгляд звучит здорово, но не могу даже придумать ситуацию, где это доставило бы больше преимуществ, чем проблем. Захватывать автоматически HID устройства — катастрофа, захватишь основную клавиатуру и в систему нормально не войдёшь. Сканить GPIO — дохлый номер. I2C — по нему много что подключено, и выглядит в принципе одинаково. А софт, который у меня на Линуксе посылал AT во все доступные порты каждые 10 секунд, (modemmanager вроде) я прибил с особой жестокостью, врагу не пожелаю. Так что — whitelists и конфиги с чётко заданными параметрами.
экранам

В конфиге же указывается размер дисплея, если он больше 16x2 (значение по умолчанию). Дисплей пока поддерживается только один. По сути, работа с интерфейсом со стороны пользователя однопоточная =) Прикол в том, что много дисплеев — это дико широкая штука. У каждого своё представление, как оно работает, и мало у кого это представление легко перекладывается на реальность. Сделать универсальную многодисплейную среду — большая работа. И ещё — для просто вывода информации на дополнительные экраны давно есть LCDproc. Работает, проверено временем.
А вот возможность подключения больше одного устройства ввода будет в этом месяце =)
Этот язык прожорливее Явы и медленнее JS.

Уж точно не прожорливее Явы. Медленнее JS? Возможно, но в оптимизацию JS-движков вкладываются большие деньги. Кроме всего прочего, ядро использует стандартные библиотеки Python 2.7 и не занимает слишком много памяти — да и в случае необходимости можно пожертвовать отзывчивостью интерфейса =)
Отдельно хочу отметить, что установщик pyLCI заточен под apt, который есть не везде, а конфигурация службы под systemd — на роутерах с OpenWRT вроде как используется init.d

Да, я это указал в конце статьи. Но насчёт отсутствия фундаментальных несовместимостей я позаботился, насколько мог =)
Сюда уже смотрели? По сути, Hello World.
Он упрощает взаимодействие между пользовательскими приложениями и устройствами ввода-вывода, предоставляя hardware abstraction layer, элементы UI и возможность сосуществования приложений. Кроме всего прочего, для него не нужен МК. Достаточно GPIO, доступных из Linux, или I2C, или UART, или вообще HID. Всё благодаря HAL. Благодаря Python можно легко делать гибкий и мощный интерфейс, да ещё и язык достаточно простой и в то же время распространённый для того, чтобы иметь низкий порог вхождения.
Используя pyLCI, можно сконцентрироваться непосредственно на главной цели приложения.
… Таким образом перекинув наиболее сложную часть в код на МК. Это совсем не цель этого проекта. pyLCI — это фреймворк, легко расширяемый приложениями на Питоне, как и различными устройствами ввода и вывода. Он позволяет быстро добавлять новые функции, которые он может выполнять. Это немного больше "библиотеки", и не совсем влезает в МК — да и не место там ему, слишком много ограничений.
Да, на Ардуино можно сделать терминал через UART. Можно даже разговаривать с USB через Bash. Но в данном случае Arduino+шилд работают как просто мост USB->LCD&кнопки. Не в последнюю очередь потому, что такая комбинация — простой способ поддерживать компьютеры только с USB, а ещё она есть у некоторых людей, которые интересуются pyLCI.
Да, что-то типа алгоритма expect в железе с HID input =) Это, конечно, идея со своими закавыками, но это одна из моих целей для носимого компьютера — использовать Arduino Pro Micro как UART2HID адаптер, чтобы иметь пассворд-менеджер, управление компьютером и тому подобное — и всё по USB/wireless с компьютера на теле.
Для простых задач по администрированию всё можно уложить в две-четыре строки =) А так — да, согласен. Потом буду экспериментировать с TFT и OLED.
Это отдельный проект, но тоже достаточно неплохой. С другой стороны, как терминал для UART я использую Asus EEE PC. Клавиатура лучше, экран большой, ещё и SSH поддерживает ;-)
Секретов… Оно всё Open-source =) А вот слой для спецфункций на клавиши уже в планах. С разными ОС немного сложнее, но тоже возможно.
Никто не мешает, в принципе, продавать готовые устройства для подключил-и-консоль. Если оно будет более-менее успешным, буду делать Кикстартер для распространения таких устройств. Ну а пока что просто постараюсь поддерживать как можно больше уже существующих =)
Комбинация из HD44780-совместимого экрана и кнопок. Могут висеть на как одном интерфейсе (экран I2C + кнопки I2C, или Ардуино с шилдом), так и на разных (кнопки USB + экран GPIO). Как оба подключены, так и сойдёт — главное, чтобы можно было получать информацию с кнопок и передавать её на дисплей =)
Проблема с не-текстовыми дисплеями — нужно написать драйвер со слоем абстракции для трансляции текста в пиксели, а это время, которого у меня пока что не так много. Ещё встревает то, что у меня пока нет таких OLED =) А вот 16х2 дисплеев у всех навалом. И ещё — я сейчас стараюсь сделать HD44780 дисплеи до конца — отловить баги, проверить с разными размерами, добавить драйверов для различных шилдов, потом уже можно думать.
Объединять в группы, конечно, тоже хорошая идея, но, как и с предыдущим пунктом, нужно сначала хорошо всё распланировать. Кстати, можете чуть поподробнее описать, как Вы себе представляете такое объединение? А то вариантов больше, чем один =)
Насчёт логики — у меня есть код для создания меню (ui/menu.py), к примеру. Не проверял, но по результатам последнего рефакторинга должен растягиваться на неограниченное кол-во строк. Так что — используйте на здоровье =)
Заметили же где-то =) У меня таких много, в этой просто наиболее часто используемые детали.

Information

Rating
Does not participate
Location
Рига, Латвия, Латвия
Date of birth
Registered
Activity