Графический калькулятор

Хотя смартфоны повсюду, графические калькуляторы по-прежнему незаменимы у студентов и преподавателей. Для клиента из образовательной сферы, который мечтает оснастить учебные учреждения современной техникой, мы создали мощный и удобный калькулятор с улучшенными характеристиками.
Графический калькулятор давно перестал быть просто вычислительным прибором. Он позволяет строить сложные графики, работать с таблицами и вычислять интегралы, что значительно расширяет возможности обучения математике. Пользователи могут создавать собственные программы и последовательности операций для решения сложных задач.

Преподаватели используют эти устройства для подключения к компьютерам и организации сетевого взаимодействия в классе.

Хотя рынок таких приборов меняется, это открывает возможности для создания современных и функциональных моделей, способных вдохновлять и поддерживать учебу на новом уровне.

Запрос

К нам обратился заказчик из сферы образовательной электроники с амбициозной целью – разработать графический калькулятор, который бы успешно конкурировал с лучшими устройствами, существующими на рынке.

Главные требования клиента включали:
  • Расширенные функции: естественный ввод формул, работа со статистическими функциями, матрицами, графиками, а также возможность программирования.
  • Интеграция с ПК, объединение в сеть для обмена данными и проверки заданий.
  • Кроссплатформенное ПО для управления и обновления устройства.
  • Эмулятор калькулятора для выполнения вычислений без физического устройства.
  • Удобный интерфейс, а также большой яркий цветной дисплей, чтобы легко интегрировать приборы в учебный процесс.
  • Специальный экзаменационный режим, исключающий несанкционированный доступ к некоторым функциям.
  • Высокая точность вычислений и надежность работы – обязательные условия для использования в учебном процессе.
  • Соответствие стандартам электромагнитной совместимости для сертификации FCC.

Решение

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

Мы выбрали надежную компонентную базу и технические решения, изначально планируя использовать микроконтроллер STM32F4 с Cortex-M4. Пандемия COVID-19 внесла свои коррективы: перебои с поставками заставили искать альтернативы. Вместе с заказчиком наши специалисты выбрали GD32F470ZKT6 – китайский микроконтроллер, близкий по характеристикам к STM32.
Аппаратная архитектура графического калькулятора, созданного командой КЕДР Solutions.
Блок-схема аппаратной платформы калькулятора.
Наш калькулятор получился компактным и удобным: 190х80х12 мм, с 2,8-дюймовым цветным дисплеем. Питание от литий-полимерного аккумулятора обеспечивает длительную автономность. Мы сознательно исключили Bluetooth, Wi-Fi и игры, чтобы не отвлекать студентов. Для экзаменов предусмотрен специальный режим с ограничениями, который включается на устройстве, а отключается только через компьютер преподавателя.

Особенно гордимся поддержкой естественного ввода – формулы и символы отображаются привычно для пользователей. Экран имеет светлый и темный режимы, что бережет зрение и экономит заряд.

Мы разработали собственный язык программирования IS Basic, добавили MicroPython и встроенный редактор. Пользователи могут писать программы как на самом калькуляторе, так и на компьютере. Команда создала кроссплатформенные приложения для ПК, которые позволяют обмениваться с устройством файлами и обновлять прошивку.

Инженеры КЕДРа разработали эмуляторы для Windows, Linux, macOS и веб-версию, чтобы пользователи могли решать задачи без физического калькулятора. Веб-версия будет размещена на сайте заказчика с надежной защитой и платным доступом, что позволит охватить более широкую аудиторию.

Сложности проекта и их решение

Устройство графического калькулятора.
Ошибка округления чисел с плавающей запятой
Команда столкнулась с классической проблемой округления чисел с плавающей запятой, которая часто приводит к неточностям из-за двоичного формата хранения. Для графического калькулятора это было недопустимо, и мы решили использовать библиотеку decimal из Boost, обеспечивающую точные десятичные вычисления, пусть и с небольшим снижением скорости.

Множество математических функций
Реализация широкого спектра математических функций – от простых вычислений до сложных интегралов и производных – стала масштабной задачей. Особое внимание уделялось удобству ввода формул и стабильной работе калькулятора без ошибок, что критично для обучения.

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

Язык IS Basic
Создание собственного языка программирования – отдельный вызов. Мы разработали гибкий и удобный язык IS Basic, на котором можно писать любые программы в рамках возможностей калькулятора.

Переход на микроконтроллер GD32
Когда мы приступили к работе с GD32, заменившим STM32 из-за ограничений поставок, команда столкнулась с необходимостью изучить новую платформу. Особенность GD32 – разделение флеш-памяти на быструю и медленную области – потребовала пересмотра архитектуры прошивки.

Мы решили хранить наиболее часто используемый код в быстрой памяти, а остальной – в медленной, чтобы сохранить производительность и обеспечить стабильную работу калькулятора. Такой подход позволил нам эффективно использовать возможности микроконтроллера.

Соответствие стандартам FCC
В процессе сертификации по стандарту FCC мы столкнулись с проблемой: первая версия платы не прошла испытания по электромагнитному излучению.

Команда инженеров сосредоточилась на улучшении работы микроконтроллера, в частности, на регулировке скорости нарастания сигнала на выводах, отвечающих за связь с внешней оперативной памятью. В результате сигналы стали более плавными и стабильными, что позволило новой версии калькулятора успешно пройти тесты и получить соответствие FCC.
Выполненные работы
  • Создание принципиальной схемы
  • Проектирование и сборка печатной платы
  • Тестирование прототипа
  • Отладка
  • Разработка прошивки
  • Разработка кроссплатформенного десктоп приложения и программ-эмуляторов
  • Разработка веб-версии эмулятора

Использованные технологии

  • Altium Designer для проектирования печатной платы.
  • Для написания прошивки – язык C++, среда разработки Visual Studio IDE, кроссплатформенная утилита CMake, набор компиляторов GCC, библиотека для небольших встроенных систем FatFs.
  • Микроконтроллер GD32F470ZKT6 на основе ядра Arm® Cortex®-M4 с тактовой частотой 240 МГц от компании GigaDevice.
  • Питание от перезаряжаемой батареи LiPo (3,7 В, 2000 мА·ч).
  • Дисплей с диагональю 2,8", разрешением 320x240 пикселей и плотности 140 DPI.
  • Графическая библиотека LVGL для создания графического интерфейса.
  • Набор С++ библиотек Boost для решения проблемы ошибки округления чисел с плавающей запятой.
  • Для разработки кроссплатформенного десктоп приложения – язык C++, фреймворк Qt.
  • Флеш-память на 8 МБ для архивирования данных и хранения приложений.

Итоги

Мы разработали для клиента графический калькулятор, который по производительности и объему памяти превосходит конкурентные модели. Опытная партия уже внедрена в учебных заведениях и получила высокие оценки от преподавателей и студентов.

Благодаря разработанным эмуляторам и веб-версии клиент получил дополнительные каналы монетизации и расширил охват аудитории.

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

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

Разработка графического калькулятора оказалась интересной и сложной задачей, которая потребовала глубоких знаний. Этот проект не только украсил наш портфолио, но и стал примером успешного партнерства с КЕДР Solutions – мы реализовали все задуманное и помогли клиенту выйти на новый уровень с инновационным продуктом, готовым к серийному производству.
Наш заказчик отметил высокий уровень коммуникации и прозрачность работы команды КЕДР Solutions:
"Впечатлен тем, как много ребята знают и умеют. Это первый мой большой проект, поэтому у меня было мало представления об объеме работ и тонкостях процесса.

Команда КЕДР Solutions разъясняла мне ключевые моменты разработки, и, таким образом, я не оставался в неведении относительно того, на каком этапе мы находимся.

Разница во времени не мешала нам быть на связи, я всегда получал исчерпывающую информацию в удобное для меня время".
Проект или Имя Клиента
Должность заказчика.
Размер устройства:
190x80x12 мм

Разрешение экрана:
320x240 пикселей

Тактовая частота процессора:
240 МГц

Флеш-память ROM:
8 МБ