- PVSM.RU - https://www.pvsm.ru -

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

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

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

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

  • StickPi [2]: очень маленькое устройство, основанное на Raspberry Pi Zero с e-paper-дисплеем, но без клавиатуры и без батареи, к которому можно подключаться с компьютера по SSH.
  • PocketPi [3]: устройство, основанное на Raspberry Pi Zero, питающееся от батарей, оснащённое 4-дюймовым экраном HyperPixel [4] (800x480 пикселей) и миниатюрной клавиатурой.
  • PsionPi [5]: мой свежий проект, основанный на Raspberry Pi 3a+, работающий от батарей, оснащённый клавиатурой от Psion 5 Series, в состав которого входит Arduino-контроллер клавиатуры и 7-дюймовый дисплей с разрешением 800x480.
  • Ещё один проект [6], подробностей о котором я пока не публиковал, представляющий собой устройство, в состав которого входит 5-дюймовый дисплей, Raspberry Pi 3 и миниатюрная клавиатура.

Собственно говоря, все эти проекты объединяет то, что в них используются разные варианты платы Raspberry Pi. Когда же вышел Adafruit PyPortal Titano [7], я тут же влюбился в это устройство, так как оно объединяет в себе много интересного «железа» и 3,5-дюймовый дисплей с разрешением 320x480, который я, кроме того, «примерял» к своему проекту PocketPi.

Я, кроме того, недавно узнал о существовании электронных компонентов производства M5Stack [8], и об их миниатюрной и недорогой QWERTY-клавиатуре CardKB Mini [9] с поддержкой I2C, которая меня прямо-таки «зацепила». Эта клавиатура использует Arduino для чтения данных с массива клавиш и для перевода информации о нажатии на клавиши в коды, которые можно передать во внешний мир. В результате это — моя третья клавиатура, в которой используется Arduino (первая [10] — это механическая клавиатура, вторая — клавиатура для моего недавнего проекта PsionPi [5]). У Adafruit PyPortal Titano имеется поддержка I2C. Поэтому я решил попробовать «подружить» это устройство и CardKB Mini.

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

Adafruit PyPortal Titano, CardKB Mini и источник питания

Первым делом мне хотелось соединить устройства и посмотреть на то, как пользоваться клавиатурой для ввода текста без применения компьютера или USB-клавиатуры. Клавиатура видна по адресу 0x5f, для наладки работы с ней нужно просто транслировать коды клавиш в буквы. Конечно, нужно привязать к соответствующим действиям разные специальные клавиши, вроде Delete, Backspace и Return. В результате получится нечто вроде минималистичного текстового редактора.

Вот [11] видеодемонстрация совместной работы Adafruit PyPortal Titano и CardKB Mini.

Теперь нужно было спроектировать корпус. Я никогда не занимался разработкой корпусов-раскладушек. Поэтому корпус мне хотелось сделать как можно более простым — просто чтобы узнать о том, будет ли мне удобно писать код на устройстве, находящемся в этом корпусе. Я начал с обычных монолитных корпусов и исследовал разные устройства.

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

Карманный калькулятор Casio, моё устройство, Nokia E61

Карманный калькулятор Casio с предыдущего рисунка, на самом деле, обладает корпусом-раскладушкой. А вот мой любимый Nokia E61 [12], в плане дизайна, гораздо ближе к тому, что получилось у меня. Размеры чёрного основания устройства составляют 125x100 мм, что хорошо, да и, в любом случае, сильнее уменьшить готовое устройство не получится. В общем-то, монолитный корпус надоел мне сразу же после того, как завершилась его печать…

С другой стороны, логичным развитием идеи разработки корпуса, в плане его форм-фактора, является движение в сторону корпуса-раскладушки. Когда я держал в руках старый Game Boy Advance SP, я чувствовал, что хочу слышать приятный звук закрывания такого корпуса, и что мне хочется, чтобы у меня был бы миниатюрный компьютер, напоминающий этот Game Boy.

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

Модель корпуса в Tinkercad и Game Boy

Теперь размер основания составлял 100x80 мм, да и шарнир получился хороший. Я, кроме того, добавил магниты по углам корпуса для того чтобы зафиксировать его части, но эти магниты оказались не очень сильными и занимали много ценного пространства.

В этом [13] видео показано сравнение Game Boy и моего корпуса-раскладушки.

Я, из интереса, попробовал разместить в новом корпусе экран из моего проекта PocketPi.

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

Экран от PocketPi в новом корпусе

Для того чтобы этой конструкцией можно было бы пользоваться, нужно поместить под экран Raspberry Pi Zero, подключить к экрану и к плате питание и соединить их друг с другом (не по WiFi).

Теперь пришло время заняться проектированием источника питания. В этот раз я решил не пользоваться платой Adafruit PowerBoost. Мне кажется, что она слишком дорогая, да и греется она очень сильно. У меня была пара подобных плат — более дешёвых, но и более крупных. Поэтому я решил попробовать воспользоваться ими. Для того чтобы сделать всю конструкцию тоньше и сэкономить место, я убрал USB-порт.

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

Работа над системой питания

Я, опять же, чтобы устройство было тоньше, убрал разъёмы с PyPortal и подключил питающий кабель напрямую, используя соответствующую схему [14].

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

Подключение питания к PyPortal

И, наконец, я убрал разъём с клавиатуры и просто спаял компоненты моего компьютера.

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

Компоненты компьютера, подключённые друг к другу

Мне пришлось кое-что изменить в корпусе и сделать в нём отверстия для USB-C-разъёма PyPortal, для выключателя питания и Micro-USB-порта, используемого для зарядки устройства. Потом я разместил в корпусе подсистему питания.

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

Размещение компонентов в корпусе

Клавиатуру я закрепил с помощью двустороннего скотча.

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

Готовое устройство

Тут [15] можно посмотреть на мой компьютер в деле. Я, после съёмки этого видео, доработал корпус, сделал так, чтобы он нормально закрывался бы, и убрал магнитные держатели, что позволило выделить больше места для внутренних компонентов. Файлы [16] для печати корпуса можно найти на Thingiverse.

Я написал на Python небольшую утилиту для работы с файлами и минималистичный редактор. Сейчас проблема заключается в невозможности записи данных во флэш-память платы при подключении её к компьютеру по USB-C. И мне ещё надо разобраться с тем, можно ли писать во флэш-память при работе устройства от батареи. Я продолжаю заниматься этим проектом, и, вполне возможно, ещё что-нибудь о нём расскажу.

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

Автор: ru_vds

Источник [17]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/razrabotka/360952

Ссылки в тексте:

[1] Image: https://habr.com/ru/company/ruvds/blog/537900/

[2] StickPi: https://assadollahi.de/stickpi-a-raspberry-pi-zero-w-with-gpio-buttons-and-an-e-paper-display/

[3] PocketPi: https://assadollahi.de/pocketpi/

[4] HyperPixel: https://shop.pimoroni.com/products/hyperpixel-4?variant=12569539706963

[5] PsionPi: https://assadollahi.de/psionpi/

[6] проект: https://www.youtube.com/watch?reload=9&v=7MtBNnwIpPg

[7] Adafruit PyPortal Titano: https://learn.adafruit.com/adafruit-pyportal-titano

[8] M5Stack: https://m5stack.com/

[9] CardKB Mini: https://m5stack.com/products/cardkb-mini-keyboard

[10] первая: https://assadollahi.de/my-first-working-mechanical-keyboard/

[11] Вот: https://youtu.be/V2-epYNLpMc

[12] Nokia E61: https://en.wikipedia.org/wiki/Nokia_E61

[13] этом: https://youtu.be/osU-jsOoGdk

[14] схему: https://learn.adafruit.com/assets/72170

[15] Тут: https://youtu.be/8W6p8-zu-yc

[16] Файлы: https://www.thingiverse.com/thing:4697279

[17] Источник: https://habr.com/ru/post/537900/?utm_source=habrahabr&utm_medium=rss&utm_campaign=537900