- PVSM.RU - https://www.pvsm.ru -
Несколько дней назад в сети появилась информация о проекте по созданию DIY устройства на Lisp c очень высокой автономностью. При условии регулярного использования девайса (не круглосуточного, но все же несколько часов в день) автор обещает автономность на уровне двух лет. Что это за проект, с чего все началось и с какой целью он был создан? Давайте посмотрим.
По словам автора проекта, ему надоело, что ноутбук разряжается быстрее, чем хотелось бы. Притом, что он часто работает над небольшими проектами, для которых не нужно большое количество ресурсов, т.е. современные лэптопы ему особо ни к чему. Андреас, так зовут автора идеи, признался, что для большинства его рабочих задач нужен лишь девайс с очень низким энергопотреблением, возможно, небольшим, но четким монохромным экраном и эргономической клавиатурой.
Ну а поскольку такого девайса в природе не нашлось, то Андреас решил сделать его сам. Начал он с прототипа на плате Adafruit NRF52840 Express. По его словам, все работало неплохо, нажатия кнопок клавиатуры считывались без особых проблем. Но все же возможностей этой платы не хватало для задуманного проекта, поэтому было решено перейти на Sparkfun Artemis ATP с 48 пинами GPIO, благодаря чему функциональность резко расширилась. А энергопотребление после оптимизации — сильно снизилось.

На данный момент девайс в собранном виде потребляет 13,2 мВт, что крайне мало — заряда батареи действительно должно хватит на несколько лет при таком раскладе. Во многом это удалось именно благодаря плате SparkFun RedBoard Artemis ATP на базе SoC Ambiq Apollo3.
Список относительно небольшой. Вот характеристики девайса:
• Sharp Memory in Pixel LS044Q7DH01
• Процессор Arm Cortex-M4F с частотой работы 96 МГЦ.
• Объем ОЗУ — 364 КБ.
• Накопитель — 1 МБ.
• Кавиатура — Happy Hacking Keyboard Lite 2.
• Аккумулятор — 12000 мА*ч.
• Допонительные возможности — солнечная батарея, целый ряд коннекторов и разъемов.
Автор замечает, что на старте возникла проблема с работой SPI, а именно — с разъемом камеры. Он опробовал букльвано сотни различных комбинаций параметров, но успеха не достиг. Лишь спустя время решение пришло само собой — сканирование нажатий клавиатуры с определенным паттерном.
Часть кода для решения этой задачи автор одолжил у создателей Lisp, его можно найти по вот этому адресу [1].

Ну а что касается ОС, то автор решил использовать [2] PotatOS — модифицированный порт uLisp (Lisp, разработанный специально для микроконтроллеров). Программы для PotatOS можно писать прямо на девайсе. Например, Эриксен уже написал и запустил игру Змейка. Она прекрасно работает.
Спустя какое-то время проект усовершенствовали — автор добавил возможность отображать слова и фразы, набранные на клавиатуре. Ранее текст тоже можно было набирать, но при этом набор текста был весьма глючным.

Проблем изначально было много, но основная — невозможность считывать нажатия кнопок. Откуда проблема? Непонятно. В итоге автор опробовал Arduino pinMode и вызовы digitalWrite / digitalRead, но все это работало медленно, крайне медленно, хотя и верно. В частности, автор планировал сканировать нажатия клавиш с с частотой примерно 500 раз в секунду. Но ничего не получилось.
Сохранение ссылок и прямой их вызов помог решить эту проблему. Так, автор сократил время сканирования до 1 мс на сканирование. Сейчас сканирование занимает примерно 25% загрузки процессора.
Стоит отметить, что с самого начала автору сильно мешало отсутствие проверки ошибок. Если в коде, который он вводил, возникала какая-либо проблема, REPL аварийно завершал работу, и все приходилось перезапускать из консоли. К счастью, он наткнулся на сообщение на форуме uLisp. Там коллектив расширил более раннюю версию uLisp, добавив некоторую базовую обработку ошибок.

В целом, компания достаточно быстро решила все «детские проблемы», включая энергопотребление

Какие изменения введены в новой версии?

На данный момент все более-менее неплохо работает. Автор выложил свой YouTube ролик, который быстро стал популярным (он чуть выше по тексту). Многие зрители его канала сейчас — добровольные помощники.
Возможно, эти тексты тоже вас заинтересуют:
→ Как геймифицировать аренду серверов со скидкой, связав сайт с внутренней панелью администрирования [5]
→ Как эффективно делиться результатами своей работы? О «хвастовстве» здорового человека [6]
→ Как разработать Telegram-бота для генерации сложных паролей [7]
Сам автор говорит, что сейчас удалось сделать многое. Но он продолжает работу — планирует еще сильнее снизить энергопотребление, а также установить дополнительные солнечные батареи.
Автор: Михаил
Источник [8]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/diy/383372
Ссылки в тексте:
[1] вот этому адресу: http://www.technoblogy.com/show?2AEE
[2] решил использовать: https://habr.com/ru/news/t/721256/
[3] исходный код: https://github.com/andreer/PotatoP
[4] странице проекта: https://hackaday.io/project/184340/logs
[5] Как геймифицировать аренду серверов со скидкой, связав сайт с внутренней панелью администрирования : https://habr.com/ru/company/selectel/blog/719520/
[6] Как эффективно делиться результатами своей работы? О «хвастовстве» здорового человека : https://habr.com/ru/company/selectel/blog/712760/
[7] Как разработать Telegram-бота для генерации сложных паролей : https://habr.com/ru/company/selectel/blog/717690/
[8] Источник: https://habr.com/ru/post/721534/?utm_source=habrahabr&utm_medium=rss&utm_campaign=721534
Нажмите здесь для печати.