company_banner

PortablePy: компьютер-раскладушка для MicroPython

Автор оригинала: Ramin Assadollahi
  • Перевод
Признаю: мне очень нравится та невероятная скорость, с которой загружаются домашние компьютеры 1980-х годов. Я какое-то время пытался оптимизировать время загрузки Raspberry Pi, но особенно далеко в этом деле не продвинулся. Я, кроме того, большой поклонник специализированных устройств, в которых аппаратное обеспечение используется для решения какой-то одной задачи. Такие системы тоже работают очень быстро. MicroPython — это очень интересная разработка, попадающая в сферу моих интересов. Это, с одной стороны — «язык высокого уровня», а с другой — программный комплекс, который без особых сложностей работает на весьма скромных аппаратных ресурсах.



У меня, вдобавок, есть одна мечта. Заключается она в том, чтобы у меня была бы возможность писать программы на ходу, используя минималистичное специализированное устройство. Вот какие попытки добраться до этой мечты я уже делал:

  • 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. И мне ещё надо разобраться с тем, можно ли писать во флэш-память при работе устройства от батареи. Я продолжаю заниматься этим проектом, и, вполне возможно, ещё что-нибудь о нём расскажу.

Хотите сделать себе миниатюрный узкоспециализированный компьютер?

RUVDS.com
VDS/VPS-хостинг. Скидка 10% по коду HABR

Комментарии 18

    +2
    С микропитоном есть несколько программируемых калькуляторов:
    — Casio FX-9860 GIII
    — Casio fx-9750GIII
    — NumWorks
    — TI-84 Plus CE-T
    Не раскладушки, но всё же.
      +2

      Я конечно понимаю, что это не совсем то, но на iOS есть приложение Pythonista. Возможностей хватает для написания кода, есть встроенные модули для нативного iOS GUI. Простые приложения писать без проблем. Есть интеграция с iOS Shortcuts, то есть большой задел для автоматизаций. Ну и смартфон всегда в кармане. И результаты работы скрипта очень легко и удобно расшаривать (все что предлагает стандартное расшаривание iOS). Думаю, под Android есть примерно то же самое.

        +4
        Где-то видел ответ американского учителя на предложение осовременить процесс обучения: «Но детям так нравится нажимать на кнопки!».

        От себя добавлю, что не только детям.
        Есть что-то такое в примитивном гаджете с кнопками и без лишнего функционала. Особенно без почты, ВК, FB и т.п.
          0

          Согласен полностью, коммент был больше мимо проходящим, кто тоже испытывает необходимость в питоньем интерпретаторе на мобильном устройстве. Кстати, насчёт кнопок: есть ещё на рынке остатки более менее современных Blackberry на Android. Key 1, Key 2. Но эти аппараты на любителя. Зато актуальный Android и питон.

            0

            Я даже в прошлом году купил себе по объявлению старый BlackBerry Bold 9900, без андроида ещё который. Куча кнопок, доволен, как слон ))

            0
            Это как с книгами. Киндл с тысячами книг круто, и читается для глаз хорошо, но бумажненький Гарри Поттер или Таинственный Остров с детства читаются как то поприятнее. И странички шуршат, и бумага пахнет.
              0
              Где-то видел ответ американского учителя на предложение осовременить процесс обучения: «Но детям так нравится нажимать на кнопки!».
              Дело не только в этом. В США на ряде экзаменов разрешается использовать калькуляторы. И там есть ряд условий которыми они должны удовлетворять в зависимости от экзамена. Смартфоны не допустят, так как очень сложно проследить, чтобы не использовали их в качестве шпаргалки.
                0
                У нас на ЕГЭ по физике тоже вроде бы можно использовать непрограммируемые калькуляторы. По крайней мере, десять лет назад точно можно было.
                При этом проверка калькулятора часто проводилась так:
                — Скажите, у Вас калькулятор программируемый?
                — Нет, не программируемый.
                — Хорошо. Можете использовать.
            +1
            Тогда лучше TI-Nspire CX II — там и экран не маленький цветной и клавиатура с буквами есть и Python поддерживается. Это вообще самая крутая серия калькуляторов из всех существующих в настоящее время. Цена где-то 175$

            +2
            Время от времени хочется сделать подобную штуку, только на несколько другом железе. ESP32 как центральный процессор, e-ink экранчик с разрешением по горизонтали от 480 до 800 пикселей, какой-нибудь AVR на чтение клавиатуры и контроль питания, аккумулятор плоский от планшета от 4000 мА*ч, Micro-SD карточка и клавиатура в стиле Psion Revo, только с тактовыми кнопками вместо контактных площадок. ESP при беспроводной передаче ест зверски много, но в простое при отключённой сети можно потребление работающей системы уложить в 50-100 мА и почти в ноль при ожидании, и пугать близко подошедших хипстеров временем работы от батареи. Ещё бы сотовый модем хоть на 2G с внешней антенной, они сейчас дешёвые, китайцы чуть ли не за бакс с доставкой продают снятые с какого-то оборудования. Такая походная карманная печатная машинка с функцией читалки для книг и SSH-терминала.
              0

              Для ssh потребуется немного помощнее железо, скорее всего. На стадии хендшейка, оно, afaik, довольно много математики делает тяжёлой

                0

                У меня в голове витает та же идея :) Вместо ssh можно просто tty-терминал до телефона по bluetooth.

              +2
              миниатюрный узкоспециализированный компьютер

              так же это за специализации такие узкие?
              так и не понятно из статьи…
              выглядит как устройство ради устройства… какого-то хипстера погонять…
                0
                Недавно у меня появилась идея, которую я пока отложил:
                Взять исходники TWRP recovery и на их основе написать свою собственную ОС на старый смартфон.
                Или хотя бы приложение… как-нибудь потом.
                Даже не знаю, почему после прочтения этой статьи вспомнил об этом.
                  0
                  а зачем, если не секрет?
                    0
                    Хотел запускать OctoPrint на смартфоне (многие недавно устаревшие поддерживают USB OTG), потом понял, что в recovery не будет вайфая и не придумал как это обойти пока.
                  0
                  мне очень нравится та невероятная скорость, с которой загружаются домашние компьютеры 1980-х годов.

                  5-10 минут? Понятно, что речь идёт про время готовности встроенного ПО типа интерпретатора Бейсика к работе, но оно и не загружается, оно — встроено. А если не встроено, то загружается, но тогда медленно и печально.
                    0
                    Красиво! Прям энтузиазмом из 80-ых запахло)

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое