Мікроконтролери програмовані на JavaScript: який вибрати, характеристики і можливості

У нашій країні приблизно після 2010 року хобі радіоаматорів отримало друге дихання з появою можливості програмувати мікроконтролери на високорівневих мовах програмування, сильно віддалених від заліза. Першим масовим проектом стало сімейство плат Arduino. Ми неодноразово розглядали ці мікроконтролери в статтях, але сьогодні мова піде про мікроконтролерах, які програмуються на javascript. Так! Том самій мові, який використовувався в основному при написанні WEB-сторінок.

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

Якщо розглянути з точки зору електроніки в тих пристроях що ми розглянемо нижче використовуються стандартні мікроконтролери. Відмінність від виробів з заводу-виробника лише в тому, що в них встановлена ​​програма-завантажувач, хоча називайте її як хочете, яка дозволяє виконувати завантажений вам програмний код, а в деяких випадках і спілкуватися з комп’ютером по 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 на мікроконтролерах? Безумовно так! Для більшості завдань любителів щось зробити своїми руками не потрібна точність або швидкість спрацьовування, так і для ряду професійних завдань можливостей подібних платформ досить. Такий підхід до програмування дає можливість почати розробляти пристрої практично без вивчення структури і команд мікроконтролера. А адже в класичному способі програмування необхідно було враховувати ряд речей, таких як різні типи змінних, адреси пам’яті та інше.

Олексій Бартош

Ссылка на основную публикацию