Самодельные калькуляторы

Глядя на STM32 платку за 100 рублей...
stm32 board

Ядро: ARM 32 Cortex-M3
Частота: 72 МГц
Flash-память: 64К
Static-память: 20K

можно любой калькулятор сэмулировать

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Проблема была в том где взять клавиатуру и корпус с креплениями для плат. Клавиатуру делать на силиконовой подложке любителям нереально (хотя был и такой план, отливать в формочке и прикручивать токопроводящие пятаки), я подумал, что достаточно напаять на плату SMD мемраны или низкопрофильные тактовые кнопки (они уже в наличии) и толкать их клавишами висящими на паре усиков как в DM42 и HP Prime. Попробую напечатать клавиатуру от Numworks и верхнюю часть.

Наверное, самая "любитель-friendly" клавиатура - это как в DM42. При наличии 3Д принтера, конечно

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Вообще всё красиво, даже проще чем в Прайме, её и возьму за основу. Я купил пока низкопрофильных SMD кнопок 1.5мм, мембраны никак не доедут из Китая, вот думаю сделать какой то урезанный вариант для проверки идеи. Похоже желательно всё печатать прямо, без наклонов, а если что наклонно вставляется делать разъемным, принтер не любит никаких скосов, получается много поддержек и всяких сопл...неровностей. В общем пластика извёл, но вроде подобрал параметры печати для корпуса и клавиатуры. Может быть клавиатуру вообще сделать вставным модулем, чтобы можно было использовать в разных проектах, корпусах ???

Два дня бился с 3д принтером, наконец всё заработало, напечатал белым пластиком корпус для e-Ink экранчика. Подходит он туда хорошо, да вот беда - я забыл спереди закрыть части платки, чтобы торчал только экранчик. И вообще конструкция какая то толстенная вышла, надо доработать. Модуль экранчика по задумке втыкается спец.ножками в модуль клавиатуры (или ещё куда). То есть я пробую соорудить модульный калькулятор из стоковых компонентов + самодельная клавиатура (толкатели и сами кнопки на 3d принтере, шелкография из УФ отвердевающих масок или по настоящему через сеточку), а внизу плата с SMD мембранами из Китая (гадкая Почта России сто лет доставляет) и ЛУТ пока что. Плата процессора - STM32L432KC т.е. Nucleo-32. Она компактнее платки STM32F103, что на снимке. Думаю выпаять с неё гребёнку контактов и всунуть куда то под клавиатуру или под экранчик, так чтобы micro-USB оказался напротив специальной прорези.

Для топовой модели экранчик:
264x176, 2.7 дюймовый дисплей E-Ink шляпа для Raspberry Pi, Дисплей Цвет: красный, Черный, SPI Интерфейс, без Подсветка, Ультра низкое потребление

И Nucleo-144 c STM32L496ZG, где 320Кб оперативки и всякие другие вкусности вроде FSMC, куда можно подцепить дополнительной оперативки прозрачно отображая её в общее адресное пространство. Платка правда широковата, но для топовой модели наверное будет ОК.
Можно оставить ST-LINK (от отламывается при необходимости), владелец легко сможет перепрошить калькулятор на что захочет.

Вот смотрю, что есть в STM32L4. Во-первых там много режимов сна, неплохо бы уметь включать все.
Есть например режим Standby в котором у STM32L432 (64Кб ОЗУ) выживают верхние 16Кб и обещают потребление ~200 nA, вполне на уровне этих ваших MSP430 :-) Потом в STM32L4 встроена чуть ли не FPGA - это у них называется Matrix Interconnect. Оно позволяет разные части периферии связывать друг с другом минуя процессор, который на время работы можно вообще погружать в сон.
Допустим отдали команду скопировать блок памяти на SD карту, связывается DMA и SPI, пока идёт передача процессор спит и ждёт нажатия клавиши. Если клиент нажимает клавишу, процессор просыпается, обрабатывает нажатие и падает сначала в один из режимов STOP, а если ничего не происходит, погружается в Standby (хватит лет на 20, если e-Ink экранчик тоже вырубить). Есть специальный режим получения данных, чтобы тащить данные, пока процессор спит. Есть всякие low-power (экономичные) режимы, на случай когда работать надо, а жрать почти нечего, тогда оно теплится на уровне 2Mhz и жрёт очень мало. Есть ещё экономичный режим когда нельзя тактироваться выше 26Mhz, там тоже какой то уровень экономии.

Интересная задача, написать такую ОС, которая учтёт, что сейчас идёт операция копирования и не вырубит необходимую периферию. Хотелось бы, чтобы как в HP 50g была возможность по расписанию просыпаться и делать какую то работу, я бы эту штуку пользовал как органайзер :-)

На бета-форуме тоже похожие мысли высказывают про DM42 :)

If SM could add a simple note taking feature with markdown functionality that can interface with the stack/printing engine, the DM42 would contain enough functionality to act as the ultimate calculator.

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Загружается ядро Форт системы в плату и исследуются все варианты работы железа.
Ядро ОС, на базе Форт кода и Ассемблера может быть как вытесняющим так и кооперативным.
В качесте интерфейса с платой Уарт на Сом порту (через USB или напрямую)

P.S. Надо как то видео записать соединения платы с STM32L100 (внутри VFX Forth) и компьютера с USB-последовательный_порт.

И вообще наделать для целевых платок, включая ту что в сабже (она у меня есть), примеров как приделать туда Форт, как в Форте делать разные дела, дрыгнуть ногой по GPIO, как перейти в спящий режим и изменить тактирование, как пасти вачдогов и т.п. Всем заинтересованным пополнять примеры, чтобы все могли что то своё слепить. Операционку тоже можно складывать всем миром. Например один пишет поддержку калькуляторной арифметики (вероятно необходима поддержка BCD), другой реализует типы: вектора, матрицы, списки и операции над ними, третий драйверы для работы с SD картами и т.д.

А какие форты на STM32 вообще работают (желательно на всех моделях) ? Я конечно сам начну через некоторое время изучать вопрос, но может быть вы мне дадите наводку. VFX Forth писан на Си ? По идее полезно иметь возможность дописывать что то на Си к ядру, иначе цеплять стандартные функции придётся долго и муторно по даташитам. В идеале, чтобы сократить время разработки взять бы полностью готовый Форт и дописать всё необходимое. Но в таком Форте всё должно быть открыто, например формат словарных статей и прочая кухня, чтобы можно было написать всякие разные примочки для миграции словарей туда сюда, расширения вроде пространств имён и всякие другие вкусности (сборщик мусора ???).

в Lite версии на сайте mpe ltd ограничение вроде в 64Кб кода, но на Форте это легко обойти
и не включены какие то библиотечные файлы, что тоже не проблема. А так он коммерческий
и как оптимизируется код при генерации целевой прошивки не ясно. Интересно свой иметь оптимизатор в коде системы. В VFX, вроде, сделана возможность вызова С функций.
Из популярных свободных с поддержкой и STM32 Mecrisp (Stellаris) Есть ещё какие то но это уже нужно вспоминать и делать подборку. Есть реализации и на С (IAR) и можно гибридно (взаимовозовы) С<->Forth делать.
GCC компилятор тоже можно для этого использовать. Наработки, наверное, лучше оформлять в рамках Вики.

Буду курить эту тему. Хотелось бы часть писать на Си, а часть на Форте. Наверное Форт написанный на Си лучше подходит, но неплохо было бы генерировать код, где всякие сложения выполняются не 10 вызовами (перенаправлением к слову #'+), а одной машинной инструкцией, а результат записывается в регистр служащий нижним уровнем стека, таким образом сложное арифметическое выражение будет составлено из загрузок в регистры и вызовов операций на машинном коде, естественно за пределами этого кода оно должно вести себя как Форт выражение, оставлять стек в правильном состоянии и т.п. Оптимизирующий кодогенератор на борту, это же вполне возможно ???

Заказал сабж. Потребление подкупает. 27 миллиампер при 50 Мгц, и 33 микроампера на торможении. На одном мегагерце 430 микроампер. В общем на уровне чипов, что в МК-161. 256 макроячеек. Посмотрел есть какие то проекты вроде TinyCPU специальное под это дело, может быть что то вроде J1 фортпроцессор влезет. Хотя с жирным аккумулятором можно попробовать вклячить какой нибудь Spartan-6. Нравится идея обновлять железную часть программно, исправлять ошибки и т.п. Кто то может захотеть специализированные операции (не знаю влезет ли туда поддержка BCD арифметики).

Нашёл питерскую фирму в которой вроде годный пластик можно купить с разумной доставкой. По идее корпус и эту кучу кнопочек лучше не печатать 10 раз, а напечатать 1 раз, обработать, а потом сделать силиконовую форму и отливать, тогда можно будет наборы всем желающим разослать, не у всех есть доступные 3d принтеры и не так легко на них сразу напечатать хорошую модель не требующую обработки. Говорят эта форма выдерживает минимум 1000 отливок. Затраты пластика вроде небольшие получатся. Конечно вопрос со стандартизацией размеров экранчиков. Может быть правильней заточить всё под одну конкретную модель и штамповать готовый или полуготовый набор для сборки. Получается ещё один путь удешевления по сравнению с СЕМИКО. Собери себе ПМК сам из набора готовых деталей, может быть в самом бюджетном наборе надо будет компоненты на плату самостоятельно напаивать или даже ЛУТовать её самому (или заказывать у китайцев). Софт будет рождаться по системе "базар" по ходу пьесы, у кого пока нет набора смогут участвовать с дешёвыми STM32F103 как в сабже темы, остальные будут отрабатывать новые прошивки прямо на калькуляторах. Может быть сколько угодно вариаций прошивки, я не боюсь, что шпиёны испортят синусы :-)

Я голосую за самый дешевый вариант, дающий максимальное качество выхода: ничего не распаяно, а сложено в пакетики рядом с платой, изготовленной в Китае. Корпус и силиконовые кнопки прилагаются.
Пациент, получив драгоценную посылку, сам все распаивает и присоединяется к шаманству с коллективным гитхабом.

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Вот силиконовые кнопки я делать не умею, мой план напаять SMD мембраны или кнопки и толкать их пластиковыми кнопками, качающимися на пластиковых усиках (цельно-печатное изделие).
Если научите как недорого заказывать силиконовые замыкатели пятаков на плате, буду очень признателен :-)

Не, я не в курсе, как это делается. Видимо, 3D-printed клавиатура как в DM42 и SMD мембраны это самое доступное по домашней технологии.

У меня пакетик таких мембран валяется со времен экспериментов с MK61msp430

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/