Espruino:Примеры/Часто задаваемые вопросы: различия между версиями
Myagkij (обсуждение | вклад) (Новая страница: «{{Espruino/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} =<ref>[ www.espruino.com - ]</ref>= <syntaxhighlig...») |
Myagkij (обсуждение | вклад) Нет описания правки |
||
Строка 3: | Строка 3: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=<ref>[ www.espruino.com - ]</ref>= | =Часто задаваемые вопросы<ref>[https://www.espruino.com/FAQ www.espruino.com - Frequently Asked Questions]</ref>= | ||
==Что такое Espruino?== | |||
Espruino – это JavaScript-интерпретатор для микроконтроллеров, заметно упрощающий разработку встроенного ПО. Интерпретатор Espruino – это прошивка с открытым кодом, запускаемая на множестве различных микроконтроллеров. Кроме того, в продаже есть [https://www.espruino.com/Order платы Espruino], где этот интерпретатор уже предустановлен по умолчанию, что облегчает первые этапы работы с ними. | |||
Но Espruino – это не только интерпретатор и платы, но и [https://www.espruino.com/ide/ Web IDE], инструменты командной строки, документация, руководства и модули, вместе составляющие оптимальное решение для разработки встроенного ПО. | |||
==Возникли проблемы с платой Espruino?== | |||
Ознакомьтесь с [https://www.espruino.com/Troubleshooting этой статьёй]. Если там нет решения вашей проблемы, обратитесь на [http://forum.espruino.com/ форум]. | |||
== Я подключил Espruino к ПК/Mac – что делать дальше? == | |||
Загляните на [https://www.espruino.com/Quick+Start страницу «быстрого старта»], выберите там своё устройство и следуйте пошаговым инструкциям – они объяснят вам, что делать. | |||
== Есть ли форум, где я могу попросить помощи? == | |||
Да! [http://forum.espruino.com/ Вот он]. | |||
== Espruino имеет какое-нибудь отношение к ESP8266/ESP32/Espressif? == | |||
Общие буквы «esp» – это просто совпадение. ESP8266 была выпущена в 2014 году, а сайт espruino.com был создан в 2012 году. | |||
У прошивки Espruino есть порты, которые можно запускать на чипах ESP8266 и ESP32, но эти порты – плод работы комьюнити. Во-первых, Espressif никак не поддерживает Espruino, и во-вторых, ни одна из официальных плат Espruino не использует ESP8266/ESP32 как платформу. | |||
== Espruino – это проект с открытым кодом? == | |||
Да! И он [https://github.com/espruino весь есть на GitHub]. Главная прошивка распространяется по лицензии MPLv2. Если вы планируете использовать Espruino в коммерческих целях, разработчики просят связаться с ними для [https://www.espruino.com/Business взаимовыгодного сотрудничества]. | |||
== Почему JavaScript? == | |||
Нам нужен был язык программирования, который: | |||
* Имеет ту же базовую форму, что и C, благодаря чему простой код похож на Arduino-код. | |||
* Подталкивает к событийному программированию (для снижения энергопотребления). | |||
* Широко используется и у которого много обучающих онлайн-руководств. | |||
* Интерпретируется и позволяет модифицировать функции при запущенном интерпретаторе (в отличие от некоторых других языков, JavaScript воспринимает функции как переменные). | |||
== Я сделал кое-что крутое при помощи Espruino, хотите взглянуть? == | |||
Разработчики посмотрят с удовольствием! Показать свой проект можно в [http://forum.espruino.com/microcosms/139/ этом разделе форума]. | |||
== Как Espruino отличается от Arduino / Raspberry Pi / встраиваемых Linux-плат? == | |||
=== Espruino vs Raspberry Pi / встраиваемые Linux-платы === | |||
* Raspberry Pi – это очень мощные и гибкие платы, но в состоянии покоя потребляющие относительно много электричества, из-за чего их проблематично питать от батареи. В режиме покоя Raspberry Pi потребляет минимум около 50 мА, а Puck.js – 0.003 мА. | |||
* На Raspberry Pi ненадёжная планировка действий в реальном времени, из-за чего синхронизация особой точностью не отличается. | |||
* Raspberry Pi хорошо подходит для работы с видео, тогда как Espruino недостаточно мощна для этого. | |||
* Espruino работает на JavaScript. Это делает эту платформу более доступной и лёгкой для использования для начинающих. С другой стороны, Raspberry Pi даёт больше выбора в языках, что хорошее качество, но может отпугнуть некоторых пользователей. | |||
* У Raspberry Pi нет аналогового ввода/вывода, а у Espruino есть. | |||
* Для Raspberry Pi нужна SD-карта, содержащая операционную систему (для Espruino – нет). | |||
=== Espruino vs Arduino === | |||
* Espruino меньше, чем большинство Arduino, и гораздо дружелюбнее для начинающих. | |||
* На ПК или Mac необязательно предустанавливать какое-либо ПО. | |||
* Хотя Arduino потребляет меньше электричества, платы Espruino разработаны с прицелом на энергоэффективность и потребляют более чем в 10 раз меньше в режиме сна. | |||
* Использование JavaScript-интерпретатора означает, что вам не придётся выполнять сброс Espruino после внесения изменений в код, но это также значит, что скорость выполнения будет чуть ниже. | |||
== Когда я печатаю команду, почему Espruino пишет =undefined? == | |||
После выполнения команды Espruino печатает =, а затем возвращаемое значение. Например: | |||
<syntaxhighlight lang="javascript" enclose="div"> | <syntaxhighlight lang="javascript" enclose="div"> | ||
>1+2 | |||
=3 | |||
>analogRead(A0) | |||
=0.0324 | |||
</syntaxhighlight> | |||
Но если вызвать функцию, которая ничего не возвращает, она вернёт undefined – это именно то, что вы видите у себя: | |||
<syntaxhighlight lang="javascript" enclose="div"> | |||
>digitalWrite(D0,1) | |||
=undefined | |||
</syntaxhighlight> | |||
'''Примечание:''' Начиная с версии 1v99 =undefined уже не печатается. | |||
== Когда я печатаю функцию, почему Espruino печатает =function ...? == | |||
Смотрите ответ в предыдущем вопросе – когда вы задаёте функцию, Espruino также возвращает саму эту функцию в качестве значения. Она печатает её в консоль аналогично всем прочим командам, которые вы печатаете. | |||
== Мой код стёрся, когда я отключил питание от Espruino. Что можно сделать? == | |||
Чтобы более надёжно сохранить код, просто впишите save() в левой части Web IDE. Когда питание снова будет подключено, Espruino восстановится в том же состоянии, которое было сохранено при использовании save(), запомнив таймеры, прерывания и даже состояния контактов. Наличие какого-то работающего кода с самого запуска Espruino может пригодиться, например, если вам нужно инициализировать какие-то подключенные к Espruino устройства вроде дисплеев. В этом случае вы просто можете добавить функцию onInit() – она будет выполняться при каждом запуске Espruino. Более подробно читайте в [http://wikihandbk.com/wiki/Espruino:Примеры/Сохранение_кода_на_Espruino этой статье]. | |||
== Могу ли я использовать Espruino для управления устройствами при помощи программы на ПК? == | |||
Да! Если у вас есть возможность отправлять данные по последовательному порту с ПК на Espruino, то делается это очень просто. Всё, что вам нужно – это отправить команду echo(0). Она останавливает работу, назовём это так, «пользовательского интерфейса» Espruino. После этого вы сможете отправлять и получать данные при помощи команд вроде print(analogRead(A0)). | |||
Более подробно читайте в [https://www.espruino.com/Interfacing этой статье]. | |||
== Насколько быстро работает Espruino? == | |||
Espruino достаточно быстро работает для всего, что касается взаимодействия с реальным миром (серводвигатели, моторы, светильники и так далее). События вроде setWatch имеют временную отметку, благодаря чему вы можете измерить продолжительность импульса с точностью до одной микросекунды (1 / 1.000.000 секунды). | |||
Чтобы вы примерно понимали скорость работы Espruino, вот этот код создаёт квадратную волну с частотой 1.5 КГц. | |||
<syntaxhighlight lang="javascript" enclose="div"> | |||
setInterval("digitalWrite(LED1,l=!l)",1000/3000); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
То есть он выполняется 3000 раз в секунду, в то же время позволяя фоном выполнять и какие-то другие задачи. Но вы можете генерировать и ещё более высокочастотные квадратные волны при помощи [https://www.espruino.com/PWM ШИМ-функционала] Espruino. Более подробно читайте в [https://www.espruino.com/Performance этой статье]. | |||
А есть вещи, для которых Espruino не подходит? Да – рендеринг/обработка видео и анализ данных большого размера. Впрочем, если вам нужно, чтобы какая-то часть вашего проекта работала очень быстро, вы всегда можете воспользоваться [https://www.espruino.com/Assembler ассемблерной вставкой], [https://www.espruino.com/InlineC C-вставкой] и [https://www.espruino.com/Compilation предварительно скомпилированным C-кодом]. | |||
== Насколько энергоэффективен язык Espruino? == | |||
Очень. Espruino – это событийный язык программирования, и поэтому интерпретатор Espruino может переходить в режим сна, если будет знать, что ему не нужно выполнять никаких действий. | |||
Это значит, что код на Espruino будет гораздо более энергоэффективным, чем тот же код на C, разве что в этом C-коде не задан явно переход в более энергоэффективный режим сна. | |||
[https://www.espruino.com/Power+Consumption Энергопотребление] зависит от используемой платы, но для устройств вроде [https://www.espruino.com/Puck.js Puck.js] энергопотребление в состоянии покоя может составлять всего 3 мкА (0.000003 А). | |||
== Как много питания могут давать контакты Espruino? == | |||
См. таблицу ниже: | |||
{| | |||
|- | |||
|| '''Тип платы''' | |||
|| '''Сила тока на одном IO-контакте''' | |||
|| '''Суммарная сила тока на всех IO-контактах''' | |||
|- | |||
|| Original | |||
|| 25 мА | |||
|| 120 мА | |||
|- | |||
|| <div style="color:#000000;">Pico</div> | |||
<div style="color:#000000;">WiFi</div> | |||
|| 20 мА | |||
|| 120 мА | |||
|- | |||
| | <div style="color:#000000;">Puck.js</div> | |||
<div style="color:#000000;">Pixl.js</div> | |||
<div style="color:#000000;">MDBT42Q</div> | |||
|| 15 мА | |||
|| 15 мА (см. [https://devzone.nordicsemi.com/f/nordic-q-a/15800/gpio-sink-current-on-nrf52832 тут]) | |||
|- | |||
|} | |||
== Язык Espruino на 100% совместим с JavaScript? == | |||
В Espruino реализована (значительная) часть спецификации JavaScript, но не 100%. По словам разработчиков, они стараются делать так, чтобы функционал Espruino максимально соответствовал стандартам JavaScript. | |||
Список функций языка JavaScript, поддерживаемых в Espruino, смотрите [https://www.espruino.com/Features тут]. | |||
Наименее используемые части JavaScript в Espruino не вошли, потому что для них не хватает памяти. Справочник по Espruino можно найти [http://wikihandbk.com/wiki/Espruino:Справочник_по_API тут]. | |||
'''Но, по сути, если вы будете программировать обычным JavaScript-кодом, то вряд ли заметите какую-нибудь разницу между Espruino и обычным JavaScript.''' Если у вас возникли какие-нибудь проблемы, то можете описать их на [http://forum.espruino.com/ форуме] (но не забудьте приложить проблемный фрагмент кода) – разработчики пишут, что постараются исправить этот баг, а если окажется, что это какая-то интересная функция, то попробуют сделать так, чтобы её смогли использовать другие люди. | |||
== Будет ли Espruino работать на моей плате? == | |||
Если она есть в [https://www.espruino.com/Other+Boards этом списке], то да. Если нет, но если она оснащена похожим процессором с таким же (или похожим) количеством RAM- и flash-памяти, то не факт, но попробовать всё равно можно – инструкции по сборке смотрите на [https://github.com/espruino/Espruino GitHub]. | |||
На нашем форуме есть [http://forum.espruino.com/microcosms/1085/ специальная секция], где вы можете задавать вопросы на эту тему или рассказывать о том, как у вас получается заставить свою плату работать на Espruino. | |||
'''Примечание:''' Из-за большого количества поддерживаемых плат (более 50) разработчики уже не могут добавлять поддержку новых плат в главную кодовую базу Espruino. Но вы всегда можете разработать и поддерживать такой форк сами или же мы можем заняться поддержкой вашей платы за [https://www.espruino.com/Business небольшую месячную плату]. | |||
=См.также= | =См.также= |
Версия от 16:07, 25 июля 2021
Часто задаваемые вопросы[1]
Что такое Espruino?
Espruino – это JavaScript-интерпретатор для микроконтроллеров, заметно упрощающий разработку встроенного ПО. Интерпретатор Espruino – это прошивка с открытым кодом, запускаемая на множестве различных микроконтроллеров. Кроме того, в продаже есть платы Espruino, где этот интерпретатор уже предустановлен по умолчанию, что облегчает первые этапы работы с ними.
Но Espruino – это не только интерпретатор и платы, но и Web IDE, инструменты командной строки, документация, руководства и модули, вместе составляющие оптимальное решение для разработки встроенного ПО.
Возникли проблемы с платой Espruino?
Ознакомьтесь с этой статьёй. Если там нет решения вашей проблемы, обратитесь на форум.
Я подключил Espruino к ПК/Mac – что делать дальше?
Загляните на страницу «быстрого старта», выберите там своё устройство и следуйте пошаговым инструкциям – они объяснят вам, что делать.
Есть ли форум, где я могу попросить помощи?
Да! Вот он.
Espruino имеет какое-нибудь отношение к ESP8266/ESP32/Espressif?
Общие буквы «esp» – это просто совпадение. ESP8266 была выпущена в 2014 году, а сайт espruino.com был создан в 2012 году.
У прошивки Espruino есть порты, которые можно запускать на чипах ESP8266 и ESP32, но эти порты – плод работы комьюнити. Во-первых, Espressif никак не поддерживает Espruino, и во-вторых, ни одна из официальных плат Espruino не использует ESP8266/ESP32 как платформу.
Espruino – это проект с открытым кодом?
Да! И он весь есть на GitHub. Главная прошивка распространяется по лицензии MPLv2. Если вы планируете использовать Espruino в коммерческих целях, разработчики просят связаться с ними для взаимовыгодного сотрудничества.
Почему JavaScript?
Нам нужен был язык программирования, который:
- Имеет ту же базовую форму, что и C, благодаря чему простой код похож на Arduino-код.
- Подталкивает к событийному программированию (для снижения энергопотребления).
- Широко используется и у которого много обучающих онлайн-руководств.
- Интерпретируется и позволяет модифицировать функции при запущенном интерпретаторе (в отличие от некоторых других языков, JavaScript воспринимает функции как переменные).
Я сделал кое-что крутое при помощи Espruino, хотите взглянуть?
Разработчики посмотрят с удовольствием! Показать свой проект можно в этом разделе форума.
Как Espruino отличается от Arduino / Raspberry Pi / встраиваемых Linux-плат?
Espruino vs Raspberry Pi / встраиваемые Linux-платы
- Raspberry Pi – это очень мощные и гибкие платы, но в состоянии покоя потребляющие относительно много электричества, из-за чего их проблематично питать от батареи. В режиме покоя Raspberry Pi потребляет минимум около 50 мА, а Puck.js – 0.003 мА.
- На Raspberry Pi ненадёжная планировка действий в реальном времени, из-за чего синхронизация особой точностью не отличается.
- Raspberry Pi хорошо подходит для работы с видео, тогда как Espruino недостаточно мощна для этого.
- Espruino работает на JavaScript. Это делает эту платформу более доступной и лёгкой для использования для начинающих. С другой стороны, Raspberry Pi даёт больше выбора в языках, что хорошее качество, но может отпугнуть некоторых пользователей.
- У Raspberry Pi нет аналогового ввода/вывода, а у Espruino есть.
- Для Raspberry Pi нужна SD-карта, содержащая операционную систему (для Espruino – нет).
Espruino vs Arduino
- Espruino меньше, чем большинство Arduino, и гораздо дружелюбнее для начинающих.
- На ПК или Mac необязательно предустанавливать какое-либо ПО.
- Хотя Arduino потребляет меньше электричества, платы Espruino разработаны с прицелом на энергоэффективность и потребляют более чем в 10 раз меньше в режиме сна.
- Использование JavaScript-интерпретатора означает, что вам не придётся выполнять сброс Espruino после внесения изменений в код, но это также значит, что скорость выполнения будет чуть ниже.
Когда я печатаю команду, почему Espruino пишет =undefined?
После выполнения команды Espruino печатает =, а затем возвращаемое значение. Например:
>1+2
=3
>analogRead(A0)
=0.0324
Но если вызвать функцию, которая ничего не возвращает, она вернёт undefined – это именно то, что вы видите у себя:
>digitalWrite(D0,1)
=undefined
Примечание: Начиная с версии 1v99 =undefined уже не печатается.
Когда я печатаю функцию, почему Espruino печатает =function ...?
Смотрите ответ в предыдущем вопросе – когда вы задаёте функцию, Espruino также возвращает саму эту функцию в качестве значения. Она печатает её в консоль аналогично всем прочим командам, которые вы печатаете.
Мой код стёрся, когда я отключил питание от Espruino. Что можно сделать?
Чтобы более надёжно сохранить код, просто впишите save() в левой части Web IDE. Когда питание снова будет подключено, Espruino восстановится в том же состоянии, которое было сохранено при использовании save(), запомнив таймеры, прерывания и даже состояния контактов. Наличие какого-то работающего кода с самого запуска Espruino может пригодиться, например, если вам нужно инициализировать какие-то подключенные к Espruino устройства вроде дисплеев. В этом случае вы просто можете добавить функцию onInit() – она будет выполняться при каждом запуске Espruino. Более подробно читайте в этой статье.
Могу ли я использовать Espruino для управления устройствами при помощи программы на ПК?
Да! Если у вас есть возможность отправлять данные по последовательному порту с ПК на Espruino, то делается это очень просто. Всё, что вам нужно – это отправить команду echo(0). Она останавливает работу, назовём это так, «пользовательского интерфейса» Espruino. После этого вы сможете отправлять и получать данные при помощи команд вроде print(analogRead(A0)).
Более подробно читайте в этой статье.
Насколько быстро работает Espruino?
Espruino достаточно быстро работает для всего, что касается взаимодействия с реальным миром (серводвигатели, моторы, светильники и так далее). События вроде setWatch имеют временную отметку, благодаря чему вы можете измерить продолжительность импульса с точностью до одной микросекунды (1 / 1.000.000 секунды).
Чтобы вы примерно понимали скорость работы Espruino, вот этот код создаёт квадратную волну с частотой 1.5 КГц.
setInterval("digitalWrite(LED1,l=!l)",1000/3000);
То есть он выполняется 3000 раз в секунду, в то же время позволяя фоном выполнять и какие-то другие задачи. Но вы можете генерировать и ещё более высокочастотные квадратные волны при помощи ШИМ-функционала Espruino. Более подробно читайте в этой статье.
А есть вещи, для которых Espruino не подходит? Да – рендеринг/обработка видео и анализ данных большого размера. Впрочем, если вам нужно, чтобы какая-то часть вашего проекта работала очень быстро, вы всегда можете воспользоваться ассемблерной вставкой, C-вставкой и предварительно скомпилированным C-кодом.
Насколько энергоэффективен язык Espruino?
Очень. Espruino – это событийный язык программирования, и поэтому интерпретатор Espruino может переходить в режим сна, если будет знать, что ему не нужно выполнять никаких действий.
Это значит, что код на Espruino будет гораздо более энергоэффективным, чем тот же код на C, разве что в этом C-коде не задан явно переход в более энергоэффективный режим сна. Энергопотребление зависит от используемой платы, но для устройств вроде Puck.js энергопотребление в состоянии покоя может составлять всего 3 мкА (0.000003 А).
Как много питания могут давать контакты Espruino?
См. таблицу ниже:
Тип платы | Сила тока на одном IO-контакте | Суммарная сила тока на всех IO-контактах |
Original | 25 мА | 120 мА |
Pico
WiFi
|
20 мА | 120 мА |
Puck.js
Pixl.js
MDBT42Q
|
15 мА | 15 мА (см. тут) |
Язык Espruino на 100% совместим с JavaScript?
В Espruino реализована (значительная) часть спецификации JavaScript, но не 100%. По словам разработчиков, они стараются делать так, чтобы функционал Espruino максимально соответствовал стандартам JavaScript. Список функций языка JavaScript, поддерживаемых в Espruino, смотрите тут.
Наименее используемые части JavaScript в Espruino не вошли, потому что для них не хватает памяти. Справочник по Espruino можно найти тут.
Но, по сути, если вы будете программировать обычным JavaScript-кодом, то вряд ли заметите какую-нибудь разницу между Espruino и обычным JavaScript. Если у вас возникли какие-нибудь проблемы, то можете описать их на форуме (но не забудьте приложить проблемный фрагмент кода) – разработчики пишут, что постараются исправить этот баг, а если окажется, что это какая-то интересная функция, то попробуют сделать так, чтобы её смогли использовать другие люди.
Будет ли Espruino работать на моей плате?
Если она есть в этом списке, то да. Если нет, но если она оснащена похожим процессором с таким же (или похожим) количеством RAM- и flash-памяти, то не факт, но попробовать всё равно можно – инструкции по сборке смотрите на GitHub.
На нашем форуме есть специальная секция, где вы можете задавать вопросы на эту тему или рассказывать о том, как у вас получается заставить свою плату работать на Espruino.
Примечание: Из-за большого количества поддерживаемых плат (более 50) разработчики уже не могут добавлять поддержку новых плат в главную кодовую базу Espruino. Но вы всегда можете разработать и поддерживать такой форк сами или же мы можем заняться поддержкой вашей платы за небольшую месячную плату.
См.также
Внешние ссылки