У меня, вдобавок, есть одна мечта. Заключается она в том, чтобы у меня была бы возможность писать программы на ходу, используя минималистичное специализированное устройство. Вот какие попытки добраться до этой мечты я уже делал:
- StickPi: очень маленькое устройство, основанное на Raspberry Pi Zero с e-paper-дисплеем, но без клавиатуры и без батареи, к которому можно подключаться с компьютера по SSH.
- PocketPi: устройство, основанное на Raspberry Pi Zero, питающееся от батарей, оснащённое 4-дюймовым экраном HyperPixel (800x480 пикселей) и миниатюрной клавиатурой.
- PsionPi: мой свежий проект, основанный на Raspberry Pi 3a+, работающий от батарей, оснащённый клавиатурой от Psion 5 Series, в состав которого входит Arduino-контроллер клавиатуры и 7-дюймовый дисплей с разрешением 800x480.
- Ещё один проект, подробностей о котором я пока не публиковал, представляющий собой устройство, в состав которого входит 5-дюймовый дисплей, Raspberry Pi 3 и миниатюрная клавиатура.
Собственно говоря, все эти проекты объединяет то, что в них используются разные варианты платы Raspberry Pi. Когда же вышел Adafruit PyPortal Titano, я тут же влюбился в это устройство, так как оно объединяет в себе много интересного «железа» и 3,5-дюймовый дисплей с разрешением 320x480, который я, кроме того, «примерял» к своему проекту PocketPi.
Я, кроме того, недавно узнал о существовании электронных компонентов производства M5Stack, и об их миниатюрной и недорогой QWERTY-клавиатуре CardKB Mini с поддержкой I2C, которая меня прямо-таки «зацепила». Эта клавиатура использует Arduino для чтения данных с массива клавиш и для перевода информации о нажатии на клавиши в коды, которые можно передать во внешний мир. В результате это — моя третья клавиатура, в которой используется Arduino (первая — это механическая клавиатура, вторая — клавиатура для моего недавнего проекта PsionPi). У Adafruit PyPortal Titano имеется поддержка I2C. Поэтому я решил попробовать «подружить» это устройство и CardKB Mini.
Adafruit PyPortal Titano, CardKB Mini и источник питания
Первым делом мне хотелось соединить устройства и посмотреть на то, как пользоваться клавиатурой для ввода текста без применения компьютера или USB-клавиатуры. Клавиатура видна по адресу
0x5f
, для наладки работы с ней нужно просто транслировать коды клавиш в буквы. Конечно, нужно привязать к соответствующим действиям разные специальные клавиши, вроде Delete, Backspace и Return. В результате получится нечто вроде минималистичного текстового редактора.Вот видеодемонстрация совместной работы Adafruit PyPortal Titano и CardKB Mini.
Теперь нужно было спроектировать корпус. Я никогда не занимался разработкой корпусов-раскладушек. Поэтому корпус мне хотелось сделать как можно более простым — просто чтобы узнать о том, будет ли мне удобно писать код на устройстве, находящемся в этом корпусе. Я начал с обычных монолитных корпусов и исследовал разные устройства.
Карманный калькулятор Casio, моё устройство, Nokia E61
Карманный калькулятор Casio с предыдущего рисунка, на самом деле, обладает корпусом-раскладушкой. А вот мой любимый Nokia E61, в плане дизайна, гораздо ближе к тому, что получилось у меня. Размеры чёрного основания устройства составляют 125x100 мм, что хорошо, да и, в любом случае, сильнее уменьшить готовое устройство не получится. В общем-то, монолитный корпус надоел мне сразу же после того, как завершилась его печать…
С другой стороны, логичным развитием идеи разработки корпуса, в плане его форм-фактора, является движение в сторону корпуса-раскладушки. Когда я держал в руках старый Game Boy Advance SP, я чувствовал, что хочу слышать приятный звук закрывания такого корпуса, и что мне хочется, чтобы у меня был бы миниатюрный компьютер, напоминающий этот Game Boy.
Модель корпуса в Tinkercad и Game Boy
Теперь размер основания составлял 100x80 мм, да и шарнир получился хороший. Я, кроме того, добавил магниты по углам корпуса для того чтобы зафиксировать его части, но эти магниты оказались не очень сильными и занимали много ценного пространства.
В этом видео показано сравнение Game Boy и моего корпуса-раскладушки.
Я, из интереса, попробовал разместить в новом корпусе экран из моего проекта PocketPi.
Экран от PocketPi в новом корпусе
Для того чтобы этой конструкцией можно было бы пользоваться, нужно поместить под экран Raspberry Pi Zero, подключить к экрану и к плате питание и соединить их друг с другом (не по WiFi).
Теперь пришло время заняться проектированием источника питания. В этот раз я решил не пользоваться платой Adafruit PowerBoost. Мне кажется, что она слишком дорогая, да и греется она очень сильно. У меня была пара подобных плат — более дешёвых, но и более крупных. Поэтому я решил попробовать воспользоваться ими. Для того чтобы сделать всю конструкцию тоньше и сэкономить место, я убрал USB-порт.
Работа над системой питания
Я, опять же, чтобы устройство было тоньше, убрал разъёмы с PyPortal и подключил питающий кабель напрямую, используя соответствующую схему.
Подключение питания к PyPortal
И, наконец, я убрал разъём с клавиатуры и просто спаял компоненты моего компьютера.
Компоненты компьютера, подключённые друг к другу
Мне пришлось кое-что изменить в корпусе и сделать в нём отверстия для USB-C-разъёма PyPortal, для выключателя питания и Micro-USB-порта, используемого для зарядки устройства. Потом я разместил в корпусе подсистему питания.
Размещение компонентов в корпусе
Клавиатуру я закрепил с помощью двустороннего скотча.
Готовое устройство
Тут можно посмотреть на мой компьютер в деле. Я, после съёмки этого видео, доработал корпус, сделал так, чтобы он нормально закрывался бы, и убрал магнитные держатели, что позволило выделить больше места для внутренних компонентов. Файлы для печати корпуса можно найти на Thingiverse.
Я написал на Python небольшую утилиту для работы с файлами и минималистичный редактор. Сейчас проблема заключается в невозможности записи данных во флэш-память платы при подключении её к компьютеру по USB-C. И мне ещё надо разобраться с тем, можно ли писать во флэш-память при работе устройства от батареи. Я продолжаю заниматься этим проектом, и, вполне возможно, ещё что-нибудь о нём расскажу.
Хотите сделать себе миниатюрный узкоспециализированный компьютер?
koshi
С микропитоном есть несколько программируемых калькуляторов:
— Casio FX-9860 GIII
— Casio fx-9750GIII
— NumWorks
— TI-84 Plus CE-T
Не раскладушки, но всё же.
nomorewar
Я конечно понимаю, что это не совсем то, но на iOS есть приложение Pythonista. Возможностей хватает для написания кода, есть встроенные модули для нативного iOS GUI. Простые приложения писать без проблем. Есть интеграция с iOS Shortcuts, то есть большой задел для автоматизаций. Ну и смартфон всегда в кармане. И результаты работы скрипта очень легко и удобно расшаривать (все что предлагает стандартное расшаривание iOS). Думаю, под Android есть примерно то же самое.
koshi
Где-то видел ответ американского учителя на предложение осовременить процесс обучения: «Но детям так нравится нажимать на кнопки!».
От себя добавлю, что не только детям.
Есть что-то такое в примитивном гаджете с кнопками и без лишнего функционала. Особенно без почты, ВК, FB и т.п.
nomorewar
Согласен полностью, коммент был больше мимо проходящим, кто тоже испытывает необходимость в питоньем интерпретаторе на мобильном устройстве. Кстати, насчёт кнопок: есть ещё на рынке остатки более менее современных Blackberry на Android. Key 1, Key 2. Но эти аппараты на любителя. Зато актуальный Android и питон.
S0mbre
Я даже в прошлом году купил себе по объявлению старый BlackBerry Bold 9900, без андроида ещё который. Куча кнопок, доволен, как слон ))
loltrol
Это как с книгами. Киндл с тысячами книг круто, и читается для глаз хорошо, но бумажненький Гарри Поттер или Таинственный Остров с детства читаются как то поприятнее. И странички шуршат, и бумага пахнет.
DaneSoul
mingl
У нас на ЕГЭ по физике тоже вроде бы можно использовать непрограммируемые калькуляторы. По крайней мере, десять лет назад точно можно было.
При этом проверка калькулятора часто проводилась так:
— Скажите, у Вас калькулятор программируемый?
— Нет, не программируемый.
— Хорошо. Можете использовать.
DaneSoul
Тогда лучше TI-Nspire CX II — там и экран не маленький цветной и клавиатура с буквами есть и Python поддерживается. Это вообще самая крутая серия калькуляторов из всех существующих в настоящее время. Цена где-то 175$