====== Что такое Espruino: история возникновения, теория и практика ====== Espruino — экосистема программирования микроконтроллеров на языке JavaScript. В нее входят: * прошивка для микроконтроллера с интерпретатором JavaScript; * среда разработки Espruino Web IDE; * [[amp>collection/espruino?utm_source=man&utm_campaign=what-is-espruino&utm_medium=wiki | платы Espruino]] и совместимые с ними устройства. Официальный сайт платформы — http://www.espruino.com/. ===== Видеообзор платформы Espruino и JS ===== {{youtube>EsC9xBMojHM?large}} ===== История ===== Основатель и идеолог проекта Гордон Вильямс выпустил первую Espruino в 2013 году. Платформа быстро завоевала популярность, в том числе благодаря [[https://www.kickstarter.com/projects/gfw/espruino-javascript-for-things|кампании на Kickstarter]]. Название Espruino пародирует Arduino, самую известную на тот момент хобби-платформу, но Espruino не совместима с ней ни механически, ни программно. Общая черта — архитектура стандартной библиотеки Espruino, в которой функция работы с пинами похожа на библиотеку Arduino. Благодаря этому разобраться с альтернативной платформой тем, [[для_тех_кто_переходит_с_arduino|кто знаком с Arduino]], не составляет труда. Составляющие проекта Espruino опубликованы в открытом доступе по лицензии [[https://en.wikipedia.org/wiki/Mozilla_Public_License|MPL]]. ===== Роль Амперки ===== Мы использовали свободную лицензию и улучшили экосистему: * Выпустили плату [[Iskra JS|Iskra JS]], которая работает на ядре Espruino и механически совместима с Arduino. Это позволяет использовать платы расширения для Arduino. * Возвели идею о библиотеках в абсолют. У каждого периферийного модуля и компонента свой модуль-библиотека с интуитивно понятными методами и объектами. Разрабатывать устройства можно быстрее и проще. * Выпустили подробную документацию на русском языке, сняли цикл видеоуроков и делаем проекты на JS с подробным описанием. * Продаём оригинальные [[amp>collection/espruino?utm_source=man&utm_campaign=what-is-espruino&utm_medium=wiki|контроллеры Espruino]]. ===== Отличия JavaScript от стандарта ===== По большей части интерпретатор Espruino следует стандарту языка. Однако, есть ряд нюансов: * Точки с запятыми не расставляются автоматически на месте переноса строк. * Отсутствуют метки для инструкций ''break''. * Отсутствуют регулярные выражения. * Символы строк хранятся в кодировке UTF-8, поэтому символы вне ASCII-диапазона занимают по 2 байта: ''"SWD".length === 3; "ЫЙЦ".length === 6; "SWЙ".length === 4;'' Встроенные объекты JavaScript следуют стандарту ECMA Script 5, но некоторые функции не реализованы из соображений экономии памяти. Также как и в браузере, проблема решается с помощью полифиллов: добавлением реализации нужных функций «на лету». ===== Что почитать ===== * Обзор экосистемы [[https://geektimes.ru/company/amperka/blog/273664/|Espruino]] на habr * Раздел wiki с [[/js:start|подробной документацией]] по Espruino * Быстрый старт [[/js:для_тех_кто_переходит_с_arduino|для ардуинщиков]] * [[https://www.youtube.com/watch?v=_1Zd4QLJx6U&list=PLfDmj22jP9S6eAG6KaceNViNvu7F8PPLs|Видеоуроки]] по программированию контроллеров на JavaScript * Подключение и настройка [[/js:ide|Iskra JS]] ==== Описание проектов на Iskra JS и Espruino Pico ==== * [[/projects:maze|умный лабиринт]] для крыс * [[/projects:radiatorbang|как достать соседа]] с перфоратором * [[/projects:parktronic|гаражный парктроник]] * [[/projects:barrel|капельный полив]] на дачном участке * [[/projects:duel|танцевальная битва]] * [[/projects:pov-speedometr|POV-спидометр]] для велосипеда * [[/projects:trafficlight|виджет из светофора]]: мониторим Travis CI * [[/projects:barmen|робот-бармен]] ===== Как запустить Espruino на других платах ===== Запустить интерпретатор JavaScript можно не только на платах Espruino или Iskra JS. Установка на разные платы заметно отличается, поэтому мы собрали ссылки на пошаговые инструкции для популярных платформ. * [[js:espruino:bbc-microbit|BBC micro:bit]] * [[js:espruino:stm32-nucleo|STM32 nucleo]] * [[js:espruino:esp8266|ESP8266]] * [[js:espruino:esp32|ESP32]]