В нашей стране примерно после 2010 года хобби радиолюбителей получило второе дыхание с появлением возможности программировать микроконтроллеры на высокоуровневых языках программирования, сильно удалённых от железа. Первым массовым проектом стало семейство плат Arduino . Мы неоднократно рассматривали эти микроконтроллеры в статьях, но сегодня речь пойдет о микроконтроллерах, которые программируются на javascript. Да! Том самом языке, который использовался в основном при написании WEB-страниц.
Содержание статьи
Сфера применения или нужны ли такие микроконтроллеры вообще?
Espruino Pico – микроконтроллер для javascript в формате USB-флешки
Сфера применения или нужны ли такие микроконтроллеры вообще?
Если рассмотреть с точки зрения электроники в тех устройствах что мы рассмотрим ниже используются стандартные микроконтроллеры. Отличие от изделий с завода-производителя лишь в том, что в них предустановлена программа-загрузчик, хотя называйте её как хотите, которая позволяет выполнять загруженный вам программный код, а в некоторых случаях и общаться с компьютером по USB, если это не реализовано аппаратно.
Для чего нужны микроконтроллеры под javascript и другие нетрадиционные для них языки? Среди любителей и профессионалов в разработке электроники на профильных форумах ведутся дебаты, где одни восхваляют проекты типа «Ардуино», а другие всячески унижают и высмеивают их за простоту и абстрагированность разработчика от большинства вопросов с железом.
Важно: В этой части статьи мы говорим: «Ардуино», потому как она стала отправной точкой для большинства любителей конструировать электронные устройства.
Программировать Ардуины можно на языке C. Но нужно ли это? Давайте рассмотрим почему в большинстве случае скорость реакции микроконтроллеров не нужна. Ардуинщики часто любят собирать контроллеры для автополива и включение освещения для «досветки» растений. Такое комбинированное устройство будет отличной помощью для любителей выращивать что-то в квартирах или теплицах.
Но какая здесь нужна скорость работы управляющего устройства? 15-20 лет назад никто бы не стал здесь использовать микроконтроллер – любитель-конструктор с успехом бы обошёлся парой операционных усилителей или логических элементов. Но если рассуждать о пригодности обсуждаемых микроконтроллеров для этих проектов, то здесь совершенно безразлично через сколько миллисекунд включится подсветка или землю начнет орошать вода.
Следующим популярным проектом является домашняя метеостанция, и здесь выясняется, что в таких целях хватает базовых возможностей ардуины для считывания информации с датчиков и вывода их на знакосинтезирующий дисплей.
В примерах управления RGB-светодиодной лентой обычной или с умными светодиодами с «попиксельным» управлением (пример такой SMART ленты и её маркировки вы видите на рисунке ниже) также хватает ресурсов.
Но где нужно быстродействие и не годятся для использования упрощенные языки для программирования, как Scratch или javascript? Всё очень просто:
В прецизионных схемах;
В сигнализациях и системах безопасности;
В высокоточных измерительных приборах с необходимостью быстро снимать данные с АЦП, в том числе для нормальных осциллографов;
В устройствах с требованием к долговременной автономной работе в спящем режиме;
В случаях, когда нужно «впихнуть» в микроконтроллер как можно больше функций и объём кода, но это стало не слишком актуальной задачей в последнее время в связи с уменьшением стоимости большинства устройств на рынке.
Во большей части подобных задач камнем преткновения является быстродействие и объём памяти. Для получения оптимальных результатов в этом случае разумнее использовать даже не C/C++, а Assembler (ASM). Ведь, если вы замахиваетесь на подобные проекты, значит у вас есть определённый багаж знаний, значит и нет необходимости.
Вывод?
Микроконтроллеры с простыми языками нужны там, где нет жёсткий требований типа быстродействия или точность измерений, но даже в некоторых ситуациях они обеспечат точность для неспециализированных устройств предназначенных для любительского использования.
Espruino – мощный микроконтроллер и простой язык javascript
Платформа Espruino представляет собой набор программных и аппаратных средств для программирования микроконтроллеров на языке javascript, в неё входит три элемента:
1. Прошивка для микроконтроллера с интерпретатором языка JS.
2. Среда для разработки Espruino Web IDE.
3. Плата с микроконтроллером с самой прошивкой для непосредственной работы с Espruino.
Идею разработал и реализовал Гордон Вильямс в 2013 году, а средства для неё он собрал с помощью краудфандинговой платформы (Kickstarter). Фактически суть разработки заключалась в разработке прошивки (движка) Espruino для загрузки его в микроконтроллеры. Он используется в основном на микроконтроллерах семейства STM32, с архитектурой ARM-cortex. Подробнее удобные для работы устройства мы рассмотрим ниже.
Чтобы писать программы для микроконтроллера на яваскрипте нужно установить Espruino Web IDE. Это программа или расширение для популярного интернет-браузера Google Chrome, которое устанавливается буквально в один клик.
После нажатия на кнопку «Установить» в меню «сервисы» появится приложение, и попасть в это меню можно набрав в адресной строке: chrome://apps/
При нажатии на значок с чашкой кофе открывается сама среда разработки, что примечательно не в браузере, а в отдельном окне.
Интересна данная среда и для детей, и для совсем начинающих пользователей, потому что вы можете вводить код вручную или пользоваться графическим редактором, по мотивам языка программирования Scratch. Для этого нажмите на значок на который указывает стрелка.
После этого правая часть экрана, которая с кодом, изменится на другое его представление:
В интерфейс интуитивно понятен, в центральной панели сверху вниз: открытие нового файла, сохранить скетч, загрузить в микроконтроллер.
Вывод
Платы «Espruino» и им подобные представляют собой печатную плату с необходимым навесным оборудованием и микроконтроллером, с прошитым интерпретатором языка javascript, который обрабатывает код и переводит его команды в язык единиц и нулей непосредственно во время выполнения. В то время как в классическом виде программа для микроконтроллеров загружается в последний уже в виде машинного кода.
Такой подход даёт во многих задачах производительность, как у Arduino.
Научитесь разрабатывать устройства на базе микроконтроллеров и станьте инженером умных устройств с нуля: Инженер умных устройств
Обзор официальной линейки Espruino
На официальном сайте проекта – espruino.com – представлено несколько вариантов готовых решений. Первой платой как исторически, так и в этом списке является Original Espruino. Но она не слишком популярна, поскольку работать с ней в большинстве случае не удобно. Это связано с тем, что продукция Epsruino конструктивно не совместима с шилдами для ардуино, да и плат расширения для этой модели либо не выпускается, либо найти их очень сложно.
Технические характеристики этого устройства:
54×41 мм (половина кредитки);
STM32F103RCT6 32-bit 72MHz ARM Cortex M3 CPU
256KB Flash-памяти, 48KB of RAM;
Micro USB-разъём;
Диапазон входных напряжений от 3.6 до 15В;
Battery connector (JST PHR-2 2 Pin);
Встроенный разъём для SD-карты;
Три светодиода (красный зеленый и синий);
Площадки для установки Bluetooth-модуля HC-05;
Расстояние между минами — 0.1″ (2.54 мм);
44 GPIO пина, из них: 26 PWM (шим), 16 ADC (АЦП), 3 USARTs, 2 SPI, 2 I2C и 2 DACs (ЦАПа);
Область на плате может быть использована для подключения ряда устройств, типа Wi-Fi модулей, сервоприводов, расширения до 14 выходов с током до 500 мА.
Внешний вид платы и условное деление её узлов на зоны
Многим плата может показаться непривлекательной и недоработанной, но это был лишь её первый вариант, далее они выглядят более привычно и прогрессивно. Puck.JS – это миниатюрная плата в корпусе, у неё на борту есть Bluetooth и ИК-передатчик.
Согласно информации с официального сайта, его технические характеристики и особенности следующие:
Bluetooth Low Energy;
Преустановленный Espruino javascript интерпретатор;
Сердцем платы является nRF52832 SoC — 64MHz ARM Cortex M4, 64kB RAM, 512kB Flash;
8 x 0.1″ GPIO портов (среди них PWM (ШИМ), интерфейсы SPI, I2C, UART, аналоговый вход);
9 x SMD GPIO портов (среди них PWM, SPI, I2C, UART);
Корпус-шайба из ABS-пластика;
Силиноковый чехол с клавишей;
MAG3110 Magnetometer – трёхосевой измеритель магнитного поля;
ИК-передатчик;
Термометр, датчик освещенности и уровня заряда батареи;
Три светодиода (красный, зеленый и синий);
Программируемая через JS NFC-метка.
Пины могут воспринимать касания по ёмкости (принцип работы сенсорных экранов смартфонов);
Вес 14 г;
Размеры пластикового корпуса: диаметр 36мм, толщина – 12.5мм;
Размеры платы: диаметр 29мм, толщина 9мм.
Демонстрация работы:
Следующая плата – Espruino Wi-Fi , как видно из названия её особенностью является встроенный модуль беспроводной связи по сети Wi-Fi.
Её технические характеристики:
Размеры платы: 30×23 мм;
На плате размещен разъём Micro USB;
21 GPIO: 8 аналоговых входов, 20 ШИМ, 1 Serial-порт, 3 SPI, 3 I2C;
На плате установлено 3 светодиода, 2 их них программируются пользователем, а 1 отображает активность Wi-Fi;
Порты совместимы с Ардуино по уровню напряжения и поддерживают сигнал в 5 Вольт;
1 кнопка;
Построена на микроконтроллере STM32F411CEU6 32-bit 100MHz ARM Cortex M4 CPU;
Память: 512kb flash, 128kb RAM;
Связь по Wi-Fi с помощью ESP8266 (802.11 b/g/n);
RTC (часы реального времени с внешним генератором).
На плате установлен стабилизатор на 3.3В с током до 250 мА, поддерживается напряжение питания от 3.5 до 5 В.
Потребление тока в спящем режиме – до 0.05 мА, что позволяет работать 2.5 года от аккумулятора ёмкостью в 2500mAh (хотя это скорее маркетинг, а сам аккумулятор скорее разрядится быстрее).
Демонстрация работы с платой:
Espruino Pico – микроконтроллер для javascript в формате USB-флешки
Её рассмотрим отдельным разделом, так как она наиболее распространена в России и ближнем зарубежье, возможно многим благодаря компании «Амперка». Плата удобна для обучения и реализации готовых проектов, миниатюрная плата, которая для программирования вставляется прямо в USB-порт вашего компьютера.
Технические характеристики:
Размеры: 33х15 – с учетом USB – штекера;
22 GPIO порта, среди которых: 9 аналоговых входов, 21 ШИМ, 2 Serial (последовательных порта), 3 SPI, 3 I2C;
GPIO пины поддерживают 5 В уровни сигнала, что позволяет совместить плату шилдами и устройствами для ардуино;
USB Type A штекер является частью платы.
Два светодиода и одна программируемая кнопка
Построен на микроконтроллере STM32F401CDU6 32-bit 84MHz ARM Cortex M4 CPU
Память: 384kb flash, 96kb RAM
На плате распаян стабилизатор напряжения на 3.3 В 250mA позволяет питать её от 3.5 до 16 В.
В спящем режиме потребляет ток до 0.05 мА, производитель и здесь заявляет о 2.5 годах работы от 1 аккумулятора на 2500mAh;
Встроенный полевой транзистор для управления цепями с высоким рабочим током.
Это самая маленькая плата из линейки. Вдоль её краёв расположены порты ввода-вывода. При этом слой металлизации есть как на самих отверстиях, так и вдоль торца печатной платы.
Шаг контактов стандартен, это позволяет припаять к ней стандартные PLS линейки (именно такое название они носят).
Подробный обзор этой платы:
Интернет-магазин «Амперка» и его линейка плат с Яваскриптом
Как не крути, но крупнейший популяризатор нетрадиционного программирования микроконтроллеров, в частности на языке javascript является сайт Амперка. У них есть канал на «ютубе» на котором они обучают пользоваться и программировать свою продукцию, а также показывают реализацию проектов с помощью собственной линейки плат с микроконтроллеров.
Фирменной линейкой отечественного производителя является ISKRA JS , в названии которой читается название обсуждаемого языка. Её технические характеристики:
Микроконтроллер: STM32F405RG (32-битный ARM Cortex M4) ;
Тактовая частота: 168 МГц ;
Флеш-память: 1024 кБ ;
SRAM-память: 192 кБ ;
Номинальное рабочее напряжение: 3,3 В ;
Рекомендуемое входное напряжение: 7–15 В или 3,6–12 В ;
Максимальный ток с шины 5V: 1000 мА ;
Максимальный ток с шины 3.3V: 300 мА (включая питание микроконтроллера) ;
Максимальный ток с пина или на пин: 25 мА ;
Максимальный суммарный ток с пинов или на пины: 240 мА ;
Портов ввода-вывода общего назначения: 26 ;
Портов с поддержкой ШИМ: 22 ;
Портов с АЦП: 12 (12 бит) ;
Портов с ЦАП: 2 (12 бит) ;
Доступные аппаратные интерфейсы: 4× UART/Serial, 3× I²C/TWI, 2× SPI ;
Габариты: 69×53 мм.
Конструктивно плата очень близка к Arduino Uno R3 – это значит, что вы можете использовать платы расширения для неё. Что интересного мы видим в технических характеристиках? Давайте сравним их со всеми любимой ардуиной.
Они разные, по объёму памяти и возможностям, и каждый найдет своё применение. Хотя ардуино в большинстве случаях предпочтительнее, потому что её можно купить за пару сотен рублей, а искру – нет.
«Амперка» также занимается реализацией микроконтроллеров и микрокомпьютеров типа Raspberry Pi , а также комплектов для обучения работы с ними. Также есть линейка плат расширения для микроконтроллеров, это так называемые Troyka-модули. Они выполнены в таком же белом цвете, как и остальная продукция этой компании.
Как и любые другие шилды, продукция от Амперки содержат на печатные платы как основной функциональный узел – датчик, коммутационный прибор, задающий орган или исполнительный механизм и необходимое навесное оборудование к нему. Примерный обзор типовых модулей для Ардуино мы уже делали — Самые популярные шилды для Ардуино , здесь всё по аналогии. На сайте или в сообществе Амперки можно найти библиотеки для использования с модулей с Iskra JS или Arduino.
Среди тройка-модулей есть:
Джойстик;
Энкодер;
Модуль с реле;
Платы расширений портов (Troyka-shield);
Акселерометры, и другие датчики положения;
Датчики освещенности, приближения, тока, температуры, Холла, шума, газа, спирта и прочего;
Приемники для чтения NFC-меток;
Оборудование для управления двигателями (H-мосты, драйвера) и прочее.
В продаже есть интересный комплект для начинающих «ЙОДО» .
Отдельное слово об отдельной позиции в комплектации — #структор. Это детали для сборки корпусов и несущих частей ваших конструкций, они соединяются подобно детскому конструктору и позволяют сделать как нормально устойчивый макет с возможностью безопасной переноски, так и готовое решение для повседневного использования.
Кстати вы можете собрать свой набор для обучения, а обучающий буклет из набора есть на официальном сайте в электронном виде и свободном доступе.
Заключение
Для программирования микроконтроллеров на языке javascript нужно всего лишь установить соответствующую оболочку на ваш образец. Однако не под каждый экземпляр есть соответствующая прошивка, тем не менее для популярных устройств можно найти на тематических форумах. Для примера на микрокомпьютер BBC Micro:bit процесс работы со средой изображен на следующем видео, а установка выполняется буквально в несколько шагов.
Нужен ли javascript на микроконтроллерах? Безусловно да! Для большинства задач любителей что-то сделать своими руками не нужна точность или скорость срабатывания, да и для ряда профессиональных задач возможностей подобных платформ достаточно.
Такой подход к программированию даёт возможность начать разрабатывать устройства практически без изучения структуры и команд микроконтроллера. А ведь в классическом способе программирования необходимо было учитывать ряд вещей, таких как различные типы переменных, адреса памяти и прочее.
Подборка статей про Арудуино. Все изложенное в этих статьях можно применить и к микроконтроллерам с javascript (Espruino, Iskra JS):
Как не спалить Ардуино — советы для начинающих
Какие бывают дисплеи Ардуино и как их подключить
Информация, опубликованная на данном веб-сайте, представлена исключительно в ознакомительных целях, за применение этой информации администрация сайта ответственности не несет.