Jeffrey Cross
Jeffrey Cross

Первый взгляд: микроконтроллеры Javascript для веб-разработчиков

Доска Tessel (слева) и доска Espruino (справа)

Espruino отгружен своим сторонникам Kickstarter, и Tessel планирует отгрузку к маю, и мы собираемся получить опытное оборудование Tessel, и вы можете ожидать подробного обзора в ближайшее время.

Несмотря на взрыв новых плат, появившихся на рынке - и из-за растущего вокруг них сообщества - я без колебаний рекомендую Arduino, если вам нужна 8-битная плата с микроконтроллером, или Raspberry Pi, если вам нужно одноплатный компьютер под управлением Linux.

Именно те сообщества делают Arduino и Raspberry Pi настолько полезными, что любая проблема, с которой вы можете столкнуться, вероятно, что кто-то уже сталкивался с ней, и решение, или, по крайней мере, ключ к решению, уже ждет вас и просто поиск в Google.

По логике вещей, единственный путь для успеха новой платы - это захватить одно из этих существующих сообществ, создать собственное сообщество или создать сообщество, которое уже существует, но не привязано к существующему микроконтроллеру.

Прямо сейчас есть две новые платы микроконтроллеров, которые ищут финансирование - одна на Kickstarter, а другая на новой платформе краудфандинга Dragon Innovation, - которые немного отличаются. Эти доски - не просто очередной клон Arduino или еще один возможный «Малиновый пи убийца». Эти две доски, Tessel из technical.io и Espruino из Pur3, намереваются пойти по пути, по которому пройдут меньше всего, и объединить существующее сообщество, традиционно не связанное с сообществом производителей.

Направленные прямо в промежуток между Arduino на нижнем конце и Raspberry Pi на верхнем, обе эти платы используют Javascript в качестве языка программирования, и обе используют его как можно ближе к металлу, насколько это возможно. Это аппаратный взлом для веб-программистов, и будет интересно посмотреть, принесет ли их прибытие сообщество Javascript, когда они появятся.

Пройдет конец месяца, пока усилия по краудфандингу для этих плат не закончатся, хотя они уже удвоили свои целевые показатели финансирования, и начало следующего года перед тем, как уличный торговец увидит окончательное производственное оборудование. Однако одно из преимуществ работы с Make состоит в том, что иногда вы можете попробовать аппаратное обеспечение раньше других людей, и у меня на рабочем столе прямо сейчас стоят опытные образцы плат Tessel и Espruino - один из двенадцати в случае Тессель и один из двух в случае с Эспруино.

Тессель

Tessel от technical.io был одним из восьми продуктов, которые запустили новую платформу краудфандинга Dragon Innovation на прошлой неделе, и первым достиг своей цели финансирования. Tessel нацелен на высокий разрыв между Arduino и Raspberry Pi, прямо на приложения, подключенные к Интернету, предназначенные для физических устройств, и имеет встроенный WiFi. Это означает не только то, что плата всегда подключена к сети, что позволяет использовать ее как в качестве сервера, так и клиента, но у вас есть возможность удаленно развернуть свой код на плате через сеть.

Наряду со стандартным банком GPIO на одном конце, который включает в себя возможности SPI, I2C и UART, а также 6 выводов ввода / вывода общего назначения, 6 аналого-цифровых преобразователей, вывод 5 В, вывод 3,3 В и вывод заземления. Плата поддерживает модульную систему, что упрощает добавление возможностей в проект без пайки. Существует два типа модулей, оба имеют одинаковый разъем. Модули класса A - платы реле, температуры / влажности, серво, акселерометра и карты micro-SD - и немного более дорогие модули класса B - платы RFID, Bluetooth LE, GPS и аудио.

Мой предсерийный Tessel поставлялся с сервомодулем, для которого требуется второй источник питания, предназначенный для сервоприводов.

Плата Tessel с сервомодулем управляет стандартным сервоприводом.

Код для управления сервомодулем довольно прост,

var servo = require ('servo-pca9685'); // Инициализация сервопривода. console.log ( "initalizing"); // Порт A, серво 1, калибровка мин / макс ШИМ 4-15 var cs61 = servo.port ('A'). Connect (1, 4, 15); cs61.on ('connected', function () {var pos = 0; setInterval (function () {console.log ("Вращение градуса:", pos); cs61.move (pos); // Увеличение на 45 градусов pos + = 45; if (pos> 180) {pos = 0;}}, 1500);});

Плата использует npm и обширное сообщество node.js - просто установите сервомодуль, используя npm, в вашу установку node.js, а затем отправьте свой код на плату Tessel с помощью пакета Tessel npm. Но не только их собственная инфраструктура использует npm, плата будет совместима с тысячами существующих модулей node.js, доступных через npm.

Тот факт, что он совместим с node.js, может стать важным фактором успеха платы Tessel, сообщество узлов является большим, увлеченным и - как видно из таких усилий, как nodecopter и Johnny Five - уже открыто для работы с оборудованием. Это большая победа для Tessel, у них за спиной мгновенное сообщество. Это многое значит.

Разговор с Тимом Райаном

Я разговаривал с Тимом Райаном, одним из соучредителей Technical Machine,

Какова цель проекта Tessel?

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

Какова основная архитектура платы Tessel?

Мы разработали собственный интерпретатор JavaScript, построенный на основе среды выполнения Lua, который совместим с API Node.js. Нет собственных модулей C ++, но легко управлять потоком и модулями HTTP. Наша ОС - это цикл событий на голом металле. Управление высокоскоростным сигналом и отклик контролируются асинхронно. Мы провели эксперименты по контролю светодиодных матриц с высокой скоростью обновления и периферийных устройств SPI, которые показали, что это доступная альтернатива коду в реальном времени, и при этом гораздо более интуитивно понятный для написания.

Например, большая часть нашего периферийного (в основном SPI и I2C) кода составляет примерно 50 или 100 строк закомментированного кода. Наша среда выполнения даже дает нам предложение выполнить симуляцию прямо в командной строке перед развертыванием кода, предоставляя веб-разработчикам еще один знакомый инструмент - автоматизированное тестирование. Чтобы начать работу с любым модулем, который мы производим, достаточно просто «npm install accelerometer-mma8542q» и указать его в коде. Наш опыт разработки и развертывания предназначен для того, чтобы всего за несколько шагов получить готовый пример - подключить библиотеку, загрузить инструмент командной строки, развернуть.

Почему яваскрипт?

Для Tessel мы полностью сосредоточены на создании одних и тех же инструментов для веб-разработки и разработки мобильных приложений на встроенных платах. Идея заключается в том, что между менеджером пакетов и API-интерфейсами Node и выбранным вами IDE должны использоваться те же навыки и рабочий процесс отправки на сервер. Существует много сотрудничества, связанного с созданием новых API «JavaScript-подобный»Так что, надеюсь, следующее поколение плат Javascript может использовать одни и те же библиотеки SPI, например.

Вы свернули свой собственный стек Javascript, почему это было?

Тессель определенно теряет в скорости, не используя современный движок JavaScript. Но по сравнению с Linux + V8, который требует 8-10 МБ памяти для запуска, наши накладные расходы благодаря Lua минимальны, менее 70 КБ.

Мы не собираемся конкурировать с микропроцессорами, такими как Raspberry Pi, мы больше заинтересованы в разработке, которая будет расширяться, а не уменьшаться, до менее мощных плат и SoC. В будущем есть место для микропроцессора Cortex-M3 за $ 3, который работает с JavaScript, потому что это естественное решение для подключенного к Интернету или интенсивного ввода-вывода кода, и это история, которую мы хотим донести до разработчиков, которую вы так много делаете больше, чем просто альтернатива C.

Какие у тебя планы на будущее?

Наша дорожная карта - начать с Tessel - «Высокая мощность» устройство - и работать на менее мощные устройства. У нас есть потенциал для таргетирования таких маленьких плат, как Espruino, с гораздо более быстрым временем выполнения, и мы прилагаем много усилий, чтобы убедиться, что время выполнения Tessel является опцией длялюбойподключенное к интернету устройство. И долгосрочные, «Tessel» вероятно, не останется платформой только для JavaScript, но станет простой платформой для загрузки прошивок с других языков - C / C ++, Lua, Rust, Go, и логически даже Python и Ruby. Наша ценность в простом рабочем процессе и библиотеках, а не только в самом JavaScript.

Таким образом, мы делаем ставку на доски разработки с поддержкой JavaScript, просто являясь первым шагом. Через год тенденция будет направлена ​​на доступную встроенную электронику, которая позволит вам программировать на любом языке, который вы пожелаете, если ваш ответ не «С»! Тессел собирается остаться прямо на вершине этой тенденции.

Эспруино

Запущенная за несколько дней до Tessel на Kickstarter, как раз в конце августа, плата Espruino от Pur3 значительно дешевле, чем Tessel. В 19 фунтов - это около 30 долларов - это на самом деле меньше, чем половина платы Tessel. Конечно, технические характеристики Espruino намного ниже. Хотя они оба имеют процессоры ARM Cortex-M3, Espruino имеет только 48 КБ SRAM по сравнению с 32 МБ SRAM в Tessel. В то время как Tessel нацелен на верхний предел разрыва между Arduino и Raspberry Pi, Espruino нацелен на нижний предел, но его цена соответствует.

Espruino - интересный отход от большинства современных досок. В отличие от Tessel или Arduino, вы не загружаете свой код на доску. Вместо этого у вас есть интерактивный переводчик. Подключите плату к вашему Mac или ПК и подключите к плате через последовательный порт USB, и вы получите интерактивную консоль.

Это позволяет вам очень быстро повторять и получать удовольствие от работы с тем, что вы делаете. - Гордон Уильямс

Вы можете использовать интерактивную консоль именно так, как вы ожидаете - и таким образом, который будет действительно знаком для тех из нас, кто вырос на компьютерах с ОСНОВНОЙ ОСНОВНОЙ СИСТЕМОЙ - просто введите свой код в командной строке.

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

Например, мы можем настроить простую функцию, которая будет следить за нажатием встроенной кнопки,

setWatch (function () {if (! digitalRead (BTN)) return; var led = 10; var flasher = setInterval (function () {led--; digitalWrite (LED1, led & 1); if (led <= 0) clearInterval ( мигалка);}, 200);}, BTN, правда);

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

Плата Espruino мигает светодиодом после нажатия кнопки

Точно так же Apple] [+ и, в меньшей степени, TRS-80, знакомые достопримечательностям в школах США, в Великобритании в 80-х и 90-х годах, имели BBC Micro. Это оставило прочное наследие, и, несмотря на то, что оно не было явно направлено на образование, я думаю, что этот совет должен быть обязательным для школ и для обучения людей программированию.

Espruino, возможно, даже больше, чем Raspberry Pi - еще один британский проект, направленный на школы и обучение детей программированию, - является достойным преемником BBC Micro.

Разговор с Гордоном Уильямсом

Я говорил с Гордоном Уильямсом, создателем Espruino, о доске и его кампании на Kickstarter,

В Espurino есть интерактивный переводчик, почему вы так поступили?

Мне действительно нравится C, но когда вы пишете скомпилированный код для микроконтроллеров, между вами и микроконтроллером возникает реальное разъединение - он работает в черном ящике, и единственный способ взаимодействия с программным обеспечением - это добавление еще большего количества программное обеспечение (или, возможно, с помощью отладчика).В качестве примера я сделал коробку для управления изменением фаз газораспределения двигателя моего автомобиля, но 90% усилий, затраченных на это, были на самом деле добавлением кода, чтобы я мог проверять, что он делал, и корректировать значения во время работы двигателя. , Если у вас есть интерактивный переводчик, то это все для вас.

Поэтому я хотел язык, который можно интерпретировать, проверять и изменять на лету, но он очень похож на C - и я хотел использовать что-то, что уже существовало, а не просто создавать свое собственное, как это сделали парни из Electric Imp с Squirrel , Я реализовал небольшую версию JavaScript, называемую TinyJS, для предыдущего проекта, поэтому имел смысл основывать Espruino на этом. Решение использовать модель, основанную на событиях, на самом деле пришло из-за JavaScript - и это, казалось, было очень кстати.

Почему модель на основе событий лучше, чем модель на основе циклов, которую используют Arduino и другие контроллеры?

Использование модели, основанной на событиях, имеет несколько существенных преимуществ. Это означает, что разные биты кода, выполняющие разные задания, могут работать вместе, не мешая друг другу, и вы можете редактировать код между обработками событий, вместо того, чтобы выходить из основного цикла. Он более интуитивный, потому что он имитирует способ, которым люди, естественно, описывают задачи в реальном мире, например«Когда темно, включи свет» скорее, чем, «Это темно? Темно ли? Темно ли? Да. Включи свет!" и он хорошо подходит для графической среды программирования, потому что он более модульный. Наконец, он резко снижает энергопотребление, поэтому он отлично подходит для работы от батареи.

Вы свернули свой собственный стек Javascript, почему это было?

Написание собственного переводчика было действительно необходимостью, а не выбором. Если вы посмотрите на требования к памяти основных интерпретаторов, таких как V8, используемых node.js и SpiderMonkey, они довольно велики - в области мегабайт. У них также есть зацепки с базовыми операционными системами, поэтому попытка запустить их на небольших устройствах, таких как микроконтроллер - с примерно в 1000 раз меньше оперативной памяти - без операционной системы, практически невозможна.

Espruino использует ARC, а не сборщик мусора, он просто отлично вписывается в работу интерпретатора и очень быстро распределяет / освобождает почти каждую память - особенно, если все блоки имеют одинаковый размер.

Это приводит к интересному моменту об этих ARM микроконтроллерах. Espruino работает на частоте 72 МГц с 48 КБ ОЗУ, поэтому, по весьма приблизительным оценкам, он может считывать каждый байт своей памяти примерно за 1 мс. Сравните это с Raspberry Pi с 800 МГц и 512 МБ ОЗУ со временем чтения около 1 секунды - это означает, что вам нужно думать о том, как вы обрабатываете данные совершенно по-разному, и это одна из причин, по которой я не мог легко использовать существующий интерпретатор ,

Многие проекты Kickstarter имеют проблемы с масштабированием. Если ваш проект безудержно успешен, вы готовы?

Да. У меня есть готовая доска для производства, которую я могу отправить в Seeed Studio, она готова к работе. В течение последних двух месяцев мы работали с Seeed, чтобы улучшить наш дизайн и, используя компоненты из библиотеки открытых деталей Seeed, гарантировать, что мы не идем на компромисс в отношении качества. Это позволило нам разработать дизайн для текущей версии Espruino Board. Однако, если бы проект получил значительно больше средств, чем ожидалось, было бы здорово пригласить кого-то, кто поможет с учебными пособиями и документацией на Kickstarter. Я думаю, что это все о том, чтобы дать людям места для начала, как, например, проект электронных кубиков на нашей странице Kickstarter.

Какие у тебя планы на будущее?

Если мы достигнем 50 000 фунтов стерлингов в нашей текущей кампании, мы добавим поддержку модуля WiFi CC3000 в плату Espruino. Мы не будем производить WiFi-щит - мы должны сосредоточиться на самом Espruino - но мы добавим поддержку CC3000 в программное обеспечение платы Espruino, прежде чем оно будет отправлено вам. Это означает, что вы сможете купить готовый модуль, подключить его и получить мгновенный доступ в Интернет. Но у меня также есть соблазн создать «щит-щит», который проскальзывал бы под доску Эспруино, чтобы придать ей совместимый с Arduino вывод. В дальнейшем я также заинтересован в создании гораздо меньшей версии платы Espruino.

Две доски создают тенденцию?

Сообщество Javascript уже заинтересовано в оборудовании - вам нужно только взглянуть на nodecopter - и появление не одной, а двух плат, которые являются как родными, так и основанными на событиях Javascript, будет встречать большой интерес. К счастью, тот факт, что доски на самом деле не конкурируют друг с другом: Tessel нацелен на high-end, а Espruino - на нижний, вероятно, означает, что обе стороны найдут свою нишу, и эта ниша будет довольно обширной.

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

 

Поделиться

Оставить комментарий