Pull to refresh

Comments 56

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

Должен признаться, бесконечного потока проблем не встречал. Впрочем, за 3 года работы я уже выработал кучу привычек, которые помогают избегать самые распространённые проблемы, да и вышеописанный софт неслабо помогает. Не поделитесь опытом?
Уже где только можно спамлю подобным коментом, но всё же. Кто-то уже щупал Android things? Интересует порог вхождения, опыта программирования на Java нет, немного знаю си, в контексте микроконтроллеров. Хочу задействовать raspberry pi для управления освещением с использованием Google assistant (голосовое управление) — тупо ногодрыг, иногда ШИМ. И ещё какой сенсорный экран для малины купить, за качество готов заплатить.
How to Setup Your Raspberry Pi Touchscreen
http://www.makeuseof.com/tag/setup-raspberry-pi-touchscreen/
image
А вам не кажется, что проблема надуманна? Зачем нужны клавиатура или монитор, если на свежую Raspberry можно сразу залогиниться по ssh?
Это только для Ethernet-подключения и когда знаешь IP. Если не знаешь — нужно как-то узнать до этого, в pyLCI это есть. Если Ethernet недоступен, но есть WiFi — можно подключиться к нему, в pyLCI это есть. WiFi с паролем? Пароль можно ввести из pyLCI, хоть кнопок и всего 5. (Кстати, надо будет ещё добавить возможность задать IP, должно быть тривиальным).

Далеко не всегда доступно всё необходимое, будь то монитор с клавиатурой, USB-UART или Ethernet-подключение. Сейчас я могу прийти в любое место с WiFi, нажать пару кнопок на своей портативной Pi и подключиться к ней через ноут, с телефона открыть какой-то вебсервис на ней или просто запустить какой-то скрипт через тот же интерфейс. Большинство решений для подключения к Pi такого не могут в принципе, дёшево — ещё меньше, удобно — ни одного. Так что проблема — не надумана и крайне актуальна.
Мне кажется, что проще уже приобрести USB-UART, и дальше работать с ним.
Здесь же приходится покупать дополнительный шилд (дороже USB-UART в несколько раз), а также устанавливать ПО.
С USB-UART большой проигрыш по удобству. Железо стоит 5$ вместо 2$ (да, в несколько раз математически, но разница смешная), но пользователю/клиенту/жене не скажешь «Подключись USB-UART и введи такую-то команду» — вы же понимаете, сколько действий за этим стоит? А вот с pyLCI работать быстро и удобно — подключение к WiFi для пользователя в обычном случае займёт от 10 секунд до минуты.
Ну, честно говоря, usb-uart дает все-таки нормальный контроль над бордой, в отличие от…
Не, я не спорю, что JTAG дает еще больший контроль, а его закупать для того, чтобы подключиться к wifi никто, очевидно, не будет.
Но как-то странно позиционирование решения — с одной стороны это «малинка», т.е. игрушка для «гика», как не крути. А ваше решение — это типа «для домохозяек». Но если «для домохозяек», то нафига нужна такая железка, пусть даже и подключенная к интернету, если у нее только кнопки да экран?
Нормальный контроль над бордой можно получить и по SSH. Другое дело — до него добраться. С pyLCI к нему легко добраться самому, а проинструктировать кого-то лишь немного труднее.

Моё решение и для гиков тоже. Я сам гик, и в какой-то момент меня задолбало каждый раз подключать UART/сканировать сеть/дебажить окольными путями. Уверен, меня можно понять. И я знаю, что я не один такой, кто хочет просто взять и начать работать, а не что-то искать.
В итоге у меня получилось создать хорошее решение этой проблемы. Более того, оно ещё и служит как интерфейс для разных приложений, которые гики могут писать для решения своих насущных гиковских проблем — и проблем других людей, менее гиков. Так что позиционирование нормальное =)
IP прописывается прямо на карту в файл /etc/network/interfaces (у вас же linux на десктопе ;-), wifi конфигурится в принципе так же. А как установить ваш фреймворк, не подключаясь к rpi?
Можно прописать IP, но он будет доступен, только пока не подключитесь к другой сетке с другим адресом — к примеру, с 192.168.1.0 на 192.168.8.0. Можно и WiFi прописать так же — почти такие же ограничения. Потом приносите вашу Pi куда-то ещё, говорите «Ой» и монтируете SD-карту, чтобы прописать IP. Впрочем, вдумайтесь — есть успешный краудфандинг на тему софта, который считывает данные сети с флешки и записывает IP. Если посмотреть со стороны — ужасный костыль. Моё решение позволяет делать очень юзер-френдли вещи.

Один раз подключиться — на самом деле не такая большая проблема, можно, и установить pyLCI при этом. Большая проблема тогда, когда нужно подключаться много раз в разных условиях — или хотя бы один раз. Тогда подход с прописыванием IP и WiFi и ломается.

Я вот делаю образы Pi со своими настройками — устанавливаю на карточку Raspbian, запускаю Pi, устанавливаю нужный софт (в том числе и pyLCI), делаю настройки, вырубаю Pi и клонирую карточку. Проблем минимум =)

Хотите установку, ни разу не подключаясь к Pi, но при этом карточку подключать нормально? Извращение, но можно. Монтируете карточку, кладёте в /opt/pylci скачанный pyLCI с GitHub, перекидываете systemd unit в /etc/systemd/system, в /etc/rc.local пишете systemctl daemon-reload, enable pylci.service, start pylci.service. С железом сложнее — для I2C шилда smbus-библиотека по умолчанию не установлена, но можно подключить экран и кнопки через GPIO и записать в конфиг. Да немного сложнее, учитывая, но я на самом деле хорошо поработал над тем, чтобы зависимости были только там, где ну никак иначе — поэтому только одна библиотека зависимости.
Не совсем понятна проблема с IP. Разве малинка по-умолчанию не использует DHCP? А если использует, то достаточно посмотреть логи DHCP-сервера, затем приколотить нужный IP к Мак-адресу или же вовсе назначить имя.
Использует, но 1) не всегда доступны логи DHCP 2) не везде можно задать статический адрес 3) к WiFi таким способом не подключишься. Как только пришёл куда-то показать свой проект — всё, запускай nmap и надейся на лучшее =)
Мы же про первичную настройку говорим.
А для демонстрации малинку проще через смартфон пустить.
В случае с Raspberry Pi первичная настройка чаще всего теряет актуальность, если ты переместил её в другое место с другим WiFi (тогда как с другими компьютерами, которые мы используем это признаётся неудобным и недопустимым). Вот эту проблему я и решаю =)

Через смартфон можно, но решение ограниченное (нужно и другие девайсы подрубать через смартфон, всё равно нужно знать IP и так далее).
Тоже верно. Хорошо, а почему бы не взять смартфон с OTG и не использовать коммуникацию по serial? Как бы решение дешевое и выглядит круто )
Можно и тоже очень классная идея — просто три года назад, когда я разрабатывал это, у меня не было смартфона с OTG, но была необходимость сделать что-то с дисплеями =)
на последней прошивке Volumio организовано подключение по WIFI
при первом включении на малинке создается открытая точка доступа (нужен USB WIFI dongle) — подключаешься к точке доступа, а дальше все что хочешь
«Это только для Ethernet-подключения и когда знаешь IP. Если не знаешь — нужно как-то узнать до этого,» Посмотреть что записано в конфигурационном файле или записать туда какой хочется адрес
На последнюю, ноябрьскую версию raspbian уже нельзя сразу залогиниться по SSH. Он по умолчанию отключен, не знаю с какого перепугу. Надо запускать raspi-config и включать там. Через монитор с HDMI.
Но да, SSH + RDP over SSH (в Bitwise SSH, например) решают массу проблем с подключением чего-либо к Raspberry
Очень странно, но, видимо, правда. =( Кстати, на офсайте сказали, что можно сделать touch /boot/ssh (на первом разделе с загрузчиком создать файл ssh) и будет работать.
Телефон на RPI zero? Где можно почитать о том как вы его пилите.? И мне не показалось, там используется esp8266 в качестве wifi чипа?
Всё верно, на Pi Zero и с ESP, подрубленным через SDIO =) Скоро буду по-настоящему пилить и документировать на Hackaday, пока что собрал железо для мотивации закончить один проект побыстрее — всё работает на удивление хорошо. Кстати, будет open-source настолько, насколько возможно — двухслойные платы в KiCad, компоненты дешёвые и доступные, из своего кода всё с открытыми лицензиями.
Вот по поводу платы интересно, особенно платы клавиатуры, ибо мне как раз не помешает вариант платы на ~ 21 телефонную кнопку для очень похожего проекта который конечно еще в стадии разработки — espgui (надеюсь картинка не отвалится) Это открыт таскменеджер, а работает всё это на ESP8266.
Клёво выглядит! Что за предназначение, если не секрет? Какие библиотеки используешь с экраном и какой отзыв о них?

У меня клавиатура — матрица 5х6, 30 кнопок, считывается отдельным МК для разгрузки процессора Zero и экономии GPIO. Кнопки отдельным слоем, теоретически, можно на одной плате и кнопки и нижнюю плату развести, но не хотелось. Кстати, плата разводится очень просто — на одном слое только вертикальные дорожки, на другом только горизонтальные и всё вмещается без единой проблемы при разводке.
Что за предназначение, если не секрет? Какие библиотеки используешь с экраном и какой отзыв о них?

Предназначение — 4fun, ну и заодно делаю тоже что то вроде мобильного телефона, только специально без линуксов — так как на линуксе практически всё уже есть готовое, так что не покостылишь. А тут раздолье — Захотел отрисовать гуи? А ничего такого тут нет, придумывай свой класс прослойку и получай гуи! Многозадачность? Сам придумывай как будешь разделять время для процессов и выполнять их «параллельно» друг с другом. Никто за тебя это не придумает, и это прекрасно. В качестве дисплея используется ST7735 на 128x160 пикселей и библиотечка для него с поддержкой HSPI, так что отрисовка мгновенная. LINK
UFO just landed and posted this here
1) Есть, o.enable_backlight() и o.disable_backlight(), более того, в pyLCI есть функция автоматического гашения подсветки через какое-то время неактивности, её нужно включить в конфиге. Это пока не задокументировано (не протестировано на всех экранах), но присутствует уже какое-то время.
2) Есть, o.set_rgb(red, green, blue)

Код драйвера для этого дисплея здесь, если что =)
UFO just landed and posted this here
Я както аналогичное пилил, но на Bash'е, т.к. не требует вообще никаких зависимостей акромя тулзы для вывода текста на экран (Хотя и это можно реализовать через Bash, но будет шибко медленно).
Было бы прикольно портировать хотя бы частично на C и использовать очень простую версию для роутеров =) Там, если интерфейсы повисли после изменения конфига, вообще иногда приходится сбрасывать настройки — очень неудобно.
Как роутер девайс дорогой, проще готовый купить обычный роутер вдвое дешевле и не мучиться.
Имеет смысл его использовать как роутер с контент-фильтром, например, dansguardian, но тормоза страшные — я у себя сделал. Даже на RPi3 3 тормозит
Не, я имею в виду — использовать такой интерфейс на настоящих роутерах из роутерного железа =) Pi — это Pi, действительно несравнимо с даже домашним роутером. Я о том, что роутерам порой такого интерфейса не хватает =)
На роутере вебморда обязательна, если нельзя подключиться по ней или по SSH, или по консоли — роутера, по сути, просто нет :)
Понимаете, роутер — это штука массового применения. Если такой дисплей стоит, скажем, 1$ (ну не такой, конечно, а то, что в корпус роутера можно поставить) то в массовом производстве миллиона роутеров это будут затраты в лишний миллион долларов. Может, стоит лучше этот миллион программистам-кастомизаторам отдать, чтобы они веб-интерфейс допилили до ума?
Я уж не говорю про мелочи типа дополнительных точек отказа, разъемов, щлейфов, потребления энергии и прочего.
Массовое производство имеет очень много неочевидных тонкостей :)
Это я очень хорошо понимаю. Идея была не о массовом производстве, а о самодельном интерфейсе, который можно сделать для своих роутеров. Впрочем, Микротик встраивает такие интерфейсы в некоторые из своих девайсов и не жалуется — естественно, проблема в том, что они не open-source и нельзя на какой-нибудь свой домашний роутер поставить такое же =)
Можно на консоль роутера подключить bluetooth и работать с терминалом с телефона.
А питание брать от USB? :) Да и не во всех роутерах UART или RS232 есть
Обычно в роутерах есть 3.3В на плате. А UART есть в абсолютном большинстве роутеров =) Другой вопрос — что через него можно удобно поменять…
По крайней мере можно дистанционно экспериментировать и восстанавливать прошивку не снимая роутер со стены
>>Как роутер девайс дорогой

Orange же ж можно использовать. Я на них все собираю.
Данное решение полезно для первичной диагностики, если девайс автономен — например, работает в качестве контроллера полива на даче, жене же не скажешь «ну зайди ты по SSH на девайс, посмотри dmesg, что там случилось» — кинется чем-нибудь тяжелым :)
У меня для подобных целей используется готовый I2C графический дисплей, но на вкус и цвет, как говорится…
https://ru.aliexpress.com/item/3-5-inch-26P-SPI-TFT-LCD-Display-Screen-with-Touch-Panel-320-480-for-RPi1/32746328272.html

Суть понятна, а вот реальная область применения не очень. Все таки в домашних условиях Raspberry не требует регулярных замен IP, и прочего. Один раз подключил к Wi-Fi и забыл. Если вдруг захочется поменять — у каждого гика дома найдется патчкорд. Разве что использовать как элемент управления для запуска собственных скриптов, тут еще могу понять.

То в домашних условиях — и то не всегда, по моему опыту. Иногда бывает так, что и патчкордом некуда подсоединить.

А если перестать ограничивать себя домашними условиями, то работать с Pi становится ещё интереснее =)
У меня бывало ни IPScanner, ни cmd arp -a не обнаруживал малину в домашней сети, приходилось подключать монитор и смотреть ifconfig.
Кстати, если будешь пробовать pyLCI со своим шилдом и будут какие-то проблемы — пиши, помогу =)
Хорошо. Пока правда в планах нет, но думаю в дальнейшем пригодиться. Пока малину прикрутил в качестве медиацентра =)
Автору зачет! Я вот тоже играюсь со своей малиной. Попробовал wiringpi: LCD, GPIO, 1Wire (DS18B20), UART. Даже медиаплеер на ней делал. Пол года назад сделал шилд с дисплеем, который вы применяете — Link Чем шилд хорош, экономит GPIO.
Да, I2C и такие дисплеи — клёвое комбо: пины не занимает, проц не нагружает, для интерфейса хватает. Правда, первый шилд по ссылке почти полностью повторяет шилд за 5 долларов от китайцев, но второй — прикольный пример того, что можно сделать, если экспериментировать.

Единственный минус таких шилдов — на каждый символ для дисплея нужно обновить данные на экспандере 6 раз, что занимает время. Мне больше нравятся серьёзные дисплеи, которые всё ещё символьные, но сразу принимают символы через I2C и вывод данных просто мгновенный. Правда, вот шилдов на них не так много и они не такие дешёвые, да и не так распространены =(
> Простой ответ — берите такой шилд с Китая

Подскажите, пожалуйста, какую конкретно модель или у какого поставщика можно взять такой шилд?
Такой сгодится: https://ru.aliexpress.com/item/Free-Shipping-LCD-Keypad-Shield-LCD1602-LCD-1602-Module-Display-for-arduino-ATMEGA328-ATMEGA2560-raspberry-pi/32458411471.html?spm=2114.03010208.3.1.m6Od0Q&ws_ab_test=searchweb0_0,searchweb201602_5_10065_10068_10000009_10084_10083_10080_10082_10081_10060_10061_10062_10056_10055_10037_10054_10059_10032_10099_10078_10079_10077_427_10093_426_10103_10073_10102_10096_10052_10107_10050_10106_10051,searchweb201603_1,afswitch_5&btsid=60fa8fd4-1598-450d-bad1-4af26bd81303?
К сожалению, нет. Эти шилды хоть и очень похожи визуально, но предназначены для Arduino — pinout, как видно, преназначен для Arduino, плюс все пять кнопок повешены на один аналоговый канал через резисторный делитель, что делает считывание кнопок с такого нетривиальной задачей. Я нашёл такой шилд на Али: https://ru.aliexpress.com/item/I2C-IIC-16x2-RGB-LCD-Display-Shield-1602-Blue-Backlight-For-Raspberry-Pi-B-B/32772412372.html, можно видеть, что у него есть соответствующие надписи и коннектор для Raspberry Pi.

Кстати выше я увидел семидюймовый дисплей с тачскрином. Хорошая вещь, я даже успел поиграться с ним. Как раз было под прошлый НГ. 7 inch RPi Display
И ссылка с подобным шилдом, что использует автор, правда самодельным (оффтоп, но там битая ссылка) Adafruit Clone
Тачскрин дороговат, но работает очень шустро. Преимущество еще в том, что подключается к DSI шине самого RPi.

Sign up to leave a comment.

Articles