95

Асинхронная Arduino c JavaScript - Espruino

Всем доброго времени суток.


Начну с простого вопроса. Хотели бы вы иметь полностью асинхронную ардуинку с интерпретатором JavaScript и при том иметь возможность открывать скетч прямо с платы? Мне бы хотелось, например. Это дает невероятные возможности как в разработке так и в исполнении кода.


Сегодня при гуглении интерпретатора JS для ардуинки я забрел на сайт Espruino. Оказалось что я нашел нечто большее чем искал.

Очередной клон ардуино? Вовсе нет. В данных платах используются процессоры STM32F103RCT6 ARM Cortex M3 и STM32F401CDU6 ARM Cortex M4. Это дает неплохие возможности для разработки.


В первую очередь меня заинтересовала заявленная возможность использовать JS вместо C++. JS компактней и более ориентирован на простую и быструю разработку. К примеру кусок кода который будет моргать светодиодом будет выглядеть так:


var l;

setInterval( function () {

digitalWrite(LED1,l=!l); 

},200);


Никакого единого loop() и монструозных функций. Можно использовать объекты и цепочки вызовов с return.


Из того что на плате стоит интерпретатор выливается следующий огромный плюс. Можно использовать родные для JS setTimeout и setInterval вместо delay, а это дает нам асинхронность выполнения кода т.к. при delay плата тупо прерывает работу на заданное количество мс в случае с setInterval и setTimeout просто запускается таймер и продолжается работа процессора.


Но при чем тут Arduino хотите спросить вы? Да при том что небезызвестная нам Амперка выпускает Espruino в форм-факторе Arduino и большая часть шилдов и датчиков с ней совместима. Благо что все либы на C++.

Сама платка.

Распиновка.


Что хочется добавить. Плата интересная но стоит прилично в чем явно проигрывает ардуине. Из минусов языка это нестрогая типизация переменных. Из плюсов - проект опенсорсный и ядро шьется на другие микрухи. Еще одним минусом является конская стоимость этого чуда на али.


В ближайшее время постараюсь заказать это чудо "российской сборки" и запилить на нем что-нибудь.


Для желающих более подробно ознакомиться с Искрой или Espruino добавляю ссылки.

https://geektimes.ru/company/amperka/blog/273664/ - очень подробно про эспруино и искру.

http://www.espruino.com/ - родной сайт эспруино.


Надеюсь хоть кому-то этот пост будет интересен.)

Arduino & Pi

1.5K пост20.9K подписчиков

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу

0
Автор поста оценил этот комментарий

Там посту год уже почти. Могло многое поменяться с того времени. Правда я не следил.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Посмотрел на гитхабе. Первое что расстраивает - полное отсутствие Math, достаточно разрозненные методы (отчасти плюс конечно) да и в общем достаточно скудный набор методов. Достаточно сравнить референсы. Но у эспруино есть пара сильных минусов. Отсутствие регулярок и юникода что очень печально.
http://www.espruino.com/Reference
https://docs.cesanta.com/mongoose-iot/master/

З.ы. кстати у эспруино более комфортная поддержка нативного кода на С.
0
Автор поста оценил этот комментарий

А вот это уже лучше)) Я как раз хотел попробовать этот "фломастер", да все времени не было.. Тогда как будет возможность начну знакомство с JS вместе с этой платкой :) Возможно, у тебя есть какие нибудь ссылки на хорошие источники для начинающих?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Да, я посмотрел, на амперке ничего такие уроки по данной реализации JS ну и дока их тоже неплохая. Вроде, все функции и доступные либы рассмотрены. В остальном дока по JS. http://javascript.ru/ - хороший, старый ресурс. Все кроме работы с DOM и разного ненужного хлама вроде реализовано в интерпретаторе.


З.Ы. Кстати, как я понял оно еще и на ESP8266 шьется... Но нет pwm и i2c

показать ответы
3
Автор поста оценил этот комментарий

Блин это круто, спасибо, надо будет прикупить такую

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

У меня была абсолютно такая же первая мысль при прочтении описания) Интерпретатор JS, поддержка шилдов Arduino, совместимые либы я аж почти слюну пустил...

1
Автор поста оценил этот комментарий

Есть плата Red Bear Duo. Размер тот же. Цена та же. Есть вифи и блюпуп

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Загуглил. Интересная штука. Единственное непонятно что с интерпретатором JS у них.

показать ответы
1
Автор поста оценил этот комментарий

С такими ценами, можно немного доплатить, и купить микрокомпьютер. Профитнее будет)

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Смысл у платок разный и энергопотребление тоже. Тут все зависит от целей покупки платы.

показать ответы
6
Автор поста оценил этот комментарий

Две ненавистные мне вещи (ардуино и джаваскрипт) в одном!

Иллюстрация к комментарию
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Изврат и вправду достаточно адский) Но как говорится "Фломастеры, вкус, цвет, все дела..."


Но у это платки есть несомненные плюсы)

1
Автор поста оценил этот комментарий

@Vitaly48, почитайте это... вам будет интересно про JS и микрухи)

З.Ы. Я почему-то у @Dionisnation в игноре сижу...

показать ответы
0
Автор поста оценил этот комментарий

А можете вы за это взяться и сколько будет стоит, если да, то давайте я вам дам свою почту и там мы с вами решим всё конкретней . killmano32@yandex.ru  ( не обращайте внимание на старое название)

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Увы, могу сейчас помочь только советом или поиском инфы. Работа круглые сутки. :((

показать ответы
0
Автор поста оценил этот комментарий

А есть возможность подключения её через HomeKit( от яблока) без использования малинки?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

По идее вполне возможно. У Espruino есть MQTT а у ESP8266 хорошая поддержка WiFi. Т.ч. думаю в данном случае без малины можно обойтись.


З.Ы. Я сам не пробовал но нарытая инфа этому не противоречит.

показать ответы
0
Автор поста оценил этот комментарий

Простите, а вы не игрались/работали с ESP8266?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
игрался и ставил эту прошивку. в общем все хорошо но удручает отсутствие файловой системы и чтения с карты памяти.
показать ответы
0
Автор поста оценил этот комментарий

искра тянет wifi без регуляторов? на форуме они писали, что тянет, но как на практике?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Искру не тестил... Денег стоит конских, а вот есп8266 с той же прошивкой отлично тянет вафлю... Как на прием так и в качестве точки доступа. Отлично понимает все типы сетей.

показать ответы
0
Автор поста оценил этот комментарий

Я конечно поздно почти на месяц, но на копеечных ESP8266: http://pikabu.ru/story/esp8266__nedorogaya_alternativa_ardui... ставится прошивка Espruino: http://www.espruino.com/EspruinoESP8266 и еще есть Smart.js: https://geektimes.ru/post/259260/

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Я знаю. У меня как раз следующий пост на эту тему... жаль только под ESP32 еще не заточили интерпретатор Espruino.

З.ы. прочитал про смарт и честно этот интерпретатор не возбуждает.
показать ответы
0
Автор поста оценил этот комментарий
Да, на это я первым делом наткнулся. Там вообще все примеры без схем и не очень ясны, там более в рамках позиционирования эспруины как платы с низким порогом входа за счет того что джаваскрипт и все такое. Скорее наоборот, ты уже шаришь в ардуине и в данном случае ручной подаче питания на катушки шаговика и теперь можно поиграться с тем же на js.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Нене. тут все управление через драйвер идет.

Вот еще на сайте Амперки инфа http://wiki.amperka.ru/js:stepper

показать ответы
0
Автор поста оценил этот комментарий

или вот пришла мне сегодня искра, и как её подключать к шаговику?

вот инструкция

http://wiki.amperka.ru/js:stepper

что куда воткнуть? неясно. ясно что нужен какой-то драйвер L293D (http://ru.aliexpress.com/item/Big-Discount-Motor-Drive-Shield-L293D-for-Arduino-Duemilanove-Mega-UNO-Free-Shipping-Dropshipping/1877616176.html этот подойдет?) а у меня только такой набор http://ru.aliexpress.com/item/Smart-Electronics-28BYJ-48-5V-4-Phase-DC-Gear-Stepper-Motor-With-ULN2003-Driver-Board-for/32314913056.html , который с обычной ардуиной работает на раз и примеров тыща. вот и гадай методом тыка (

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Оф дока с примерами как к ULN2003 так и к L293D.
http://www.espruino.com/Stepper+Motors
показать ответы
0
DELETED
Автор поста оценил этот комментарий

Собственно скорость, с которой можно портами дергать - наиболее интересна, особенно в части прямого управления двигателями и пересылке радиосигналов. Последний код дает около 4 Мгц на уно, которая 16 мгц, то есть условно -  4 такта. Или возможно 4 мгц дает

while (1) PORTB=PORTB^1;
Не помню, что конкретно, а осцилка нет.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Кстати, только додумался. На сайте эспруино есть страница в бенчами. http://www.espruino.com/Performance

Ну и это может тоже будет интересно. http://forum.espruino.com/conversations/262232/

показать ответы
1
DELETED
Автор поста оценил этот комментарий

while (1)

{

PORTB=PORTB^32;

delay(200);

}

По-моему, не менее компактно) а вот скорость выполнения JS vs Cpp интересно было бы сравнить, меандр на осциллоскопе проверить например этой конструкции:

while (1)

{

PORTB=0;

PORTB=1;

}

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Я вот думаю сейчас платку заказать и сделать бенчмарки. Мне самому очень интересно как все это будет по производительности. Хотя по факту что есть в данном случае интерпретатор. Тот же си только с методами обозванными как в js +  фичи js типа чейнингов и объектов. Думаю сильной разницы в скорости исполнения кода не будет. Тут именно фишка в асинхроне, никакого прерывания потока, куча таймеров которые могут срабатывать одновременно и порознь, возможность реализации кучи всякой переферии одновременно без дополнительных регистров и черной магии. Плюсов много. Но бенчмарки я таки сделаю на нейтральном коде при использовании Cpp и JS.

показать ответы
0
Автор поста оценил этот комментарий

Никогда не прогал на JS, но платка очень интересная) правда и денег интересных стоит..

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Я нашел аналог за 400-500 рублей.))


http://ru.aliexpress.com/item/STM32F103RCT6-small-systems-de...


Проц идентичный Espruino Original. Значит шиться должно легко.

Про JS скажу что он достаточно простой и компактный. Хотя на вкус и цвет...

показать ответы
1
Автор поста оценил этот комментарий

Для тех, кому интересно, небольшой обзор от амперки: https://www.youtube.com/watch?v=Q5bT34Lf4gY

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Что сам то по поводу платки думаешь?)

показать ответы
1
DELETED
Автор поста оценил этот комментарий
Сила ардуино в огромном количестве библиотек для любых девайсов на все случаи жизни, в сообществе. А тут сообщество явно проигрывает.
Я сейчас заморачиваюсь управлением ардуины через серийный порт из node.js
Мне нравится такая идея, так как так не теряется сила ардуино (мне там очень нужна либа для управления шаговиками в полушаговом режиме) и прибавляется сила асинхронного ЖС
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Да, сообщество у них еще достаточно молодое но почти под каждую, более-менее, задачу есть решение на сайте espruino. На тему шаговиков кстати там есть faq. А микрошагом занимается драйвер. На тему node.js и порта, хорошо когда платка подключена к компу. Но в отсутствии коннекта это все та же однопоточная ардуина. Отсутствующие либы можно и самому адаптировать и вынести методы для обработки.

показать ответы
0
Автор поста оценил этот комментарий

а не встречалось соединение юсб вебкамеры с ардуино для передачи данных по вай фаю?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Первое что нашел гуглением. Немного не то т.к. через gprs/gsm шилд передается но думаю можно замутить и через вифи шилд по аналогии

http://chrisbird.synthasite.com/remote-camera.php

показать ответы
0
Автор поста оценил этот комментарий

некоторая засада в том, что сторонних библиотек не так много пока. на тот же LCD keypad shield нету аналога LiquidCrystal ну и т.д. Да, наверное есть аналог, тот же LCD можно без кнопок простой заюзать, но всё же добавляет рамки.


ЗЫ: заказал от амперки их Troyka Shield, уж больно видится подключение переферии без макеток(на али такого не нашёл)

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Как я понял тройка шилд это макетка + пины от ардуины. Если так то есть proto shield с бредбордом и пинами от ардуины и sensor shield если нужны все выводы в качестве шилда.


На тему библиотек конечно скажу то что еще не все либы адаптированы для работы с этим интерпретатором. Но если поковырять родные либы и вытащить хвосты для этого интерпретатора то все будет ок.


На тему LCD вот пост на оф сайте http://www.espruino.com/Onboard+LCD

На тему клавиатур http://www.espruino.com/KeyPad

показать ответы
0
Автор поста оценил этот комментарий
https://github.com/espruino/Espruino

Можно попробовать собрать этот интерпретатор под что-нибудь более дешевое.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Покопался на Али. Нашел вот такую вот платку на чипе STM32F103RCT6. Формфактор хреновый конечно, куча лишнего навесного но попробовать стоит...

http://ru.aliexpress.com/item/STM32F103RCT6-RBT6-51-AVR-deve...

0
Автор поста оценил этот комментарий
Открывать скетч на любой машине - это она в USB-HDD умеет?


Почитал. Прикольная штука, хоть и выливается это в требования к железу, армы - это уже не атмеги...

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Я так понял что она умеет в USB HID а скетч открывает через свое Web IDE. Но судя по тому что на старшей версии Espruino стоит слот для SD карт то может и в качестве флеш накопителя тоже открывается.


Штука прикольная да больно конских денег стоит, конечно.(

показать ответы
0
Автор поста оценил этот комментарий

Хотели бы вы иметь полностью асинхронную ардуинку с интерпретатором JavaScript и при том иметь возможность открывать скетч прямо с платы?

Там какая-то аппаратная интерпретация джаваскрипта или нам пытаются продать прошивку под видом программно-аппаратного комплекса? И что означает "возможность открывать скетч прямо с платы"?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Смысл в том что на проце крутится интерпретатор джаваскрипта на сях. сам скетч находится в пзу и если ядро находит скетч то исполняет его.

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

показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества