Калькуляторы

Я интересовался электроникой и микроконтроллерами. Я всю жизнь хотел разработать маленькое компактное устройство, и таким устройством стал программируемый калькулятор на микроконтроллере Arduino.

Аккумулятор от нокии.

Затем я перешёл на МК STM32, поскольку не хватало мощностей ардуины.

Корпус очень долгое время был из картона, потому что под рукой ничего больше не было.

Далее я перешёл на ESP32, потому что захотелось ещё прикрутить Wi-Fi. К тому моменту я уже обзавёлся 3D принтером.

Мне хотелось сделать устройство максимально компактным, поэтому я разработал и заказал печать платы, чтобы можно было аккуратно и компактно разместить все детали калькулятора. Получилось не сразу – с 5 раза. Я научился красиво паять SMD компоненты вручную. SMD компоненты – это чип-компоненты электронной схемы, нанесённые на печатную плату с использованием технологии монтирования на поверхность.

Я очень хотел написать аналог операционной системы. Поскольку в моих калькуляторах используется микроконтроллер ESP32 без защиты памяти на не слишком известной архитектуре Xtensa, я принял решение написать интерпретатор команд процессора ARM. Я изучил ассемблер ARM и написал виртуальную машину, способную исполнять команды ARM, изучил структуру файлов формата ELF, написал загрузчик и линковщик. Теперь можно было разрабатывать программы для калькулятора не только на процедурном динамически типизированном модульном языке с автоматическим управлением памятью Lua, но и на любом языке, способном компилироваться в исполняемый файл. Благодаря этому на калькуляторе получилось запустить интерпретатор языка программирования Python, просто скачав его сборку под linux-arm.

Также написан эмулятор калькулятора для Windows, что позволяет ещё проще разрабатывать приложения.

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

CCalc_6.pdf Скачать
AUI Watch

Кроссплатформенный фреймворк для разработки графических приложений на C++17 build badge

"
Трудность работы с программистом заключается в том, что вы не можете понять, что он делает, до тех пор, пока не стало слишком поздно.
- Цитаты великих программистов