Елена Булыгина предлагает Вам запомнить сайт «Ленусик»
Вы хотите запомнить сайт «Ленусик»?
Да Нет
×
Прогноз погоды

Сам себе инженер: домашняя автоматика и роботы на JavaScript

развернуть

Собирайте умные вещи и радиоуправляемые игрушки с подключением к домашней сети Wi-Fi, исследуйте мир летающими и подводными зондами, дайте развернуться вашей инженерной мысли!

На базе Arduino, Espruino и их аналогов можно создавать технику без инженерного образования и навыков низкоуровневого программирования. Для работы с Espruino и Tessel даже С/С++ знать не обязательно — весь код вы пишете на JavaScript. Сегодня мы расскажем об Arduino-подобных платах с поддержкой JS и о том, что можно делать с их помощью.

Что такое Arduino, Espruino и аналоги?

Это платформы для создания умных вещей и роботов в домашних условиях. У платформ есть:  

Аппаратная часть  — плата с микропроцессором, к которой можно подключать внешние модули: датчики, дисплеи, электродвигатели, адаптеры Bluetooth, WiFi и Ethernet и др.

Программная часть:

  • прошивка — движок платформы, который позволяет запускать JS на микропроцессоре;

  • среда разработки (IDE), где мы пишем код и откуда загружаем его на плату;

  • стандартная библиотека, которая обеспечивает базовый функционал: работу с интерфейсами, светодиодами, таймерами, форматами данных (типа JSON) и т.д.

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

А ещё у производителей наготове наборы-конструкторы: плата + функциональные модули и заготовки кода под конкретные задачи.

Принципиальная особенность uino-платформ в том, что вы не только делаете что-то по рецепту, но и создаёте новые устройства для своих задач.

15 идей для проектов на базе Arduino, Espruino и Iskra JS

Сам себе инженер: домашняя автоматика и роботы на JavaScript

Если вы раньше не инженерили, первая мысль: «Что с этим делать?» Это может на мгновение ввести в ступор. Но стоит посмотреть на чужие проекты, обзоры плат и модулей  — тут же возникает громадьё идей и планов.

Вот подборка проектов, которые могут разжечь ваше воображение  — со ссылками на примеры или описание реализации:

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

  2. — пульт дистанционного управления для техники и игр.

  3. , управляемые по Bluetooth с планшета или мобильного устройства, в том числе голосом.

  4. Металлоискатель или .

  5. (в том числе ) или кодовый замок.

  6. для ЖК-телевизора или монитора.

  7. : , управляемая с телефона и др.

  8. предметов по цвету.

  9. для дачных грядок.

  10. .

  11. для управления оттенком освещения.

  12. с детализацией по городам мира.

  13. Портативные устройства на солнечной батарее, например, .

  14. Система сбора данных о чём угодно: о погоде, статистике вашего сайта, группы в соцсети или youtube-канала.

  15. с реакцией на прикосновения или .

Arduino и JS — это совместимо?

Если у вас есть плата Arduino, но вы хотите писать код на JS, выход есть. Фреймворки типа Johnny-Five позволяют исполнять JavaScript на Arduino и других платформах:  Raspberry Pi, Tessel 2, pcDuino, Linio One, BeagleBone, BlendMicro, Particle Photon, Intel Galileo и других.

«Костыль!» — скажет кто-то. Отчасти да. Но для маленьких проектов и прототипирования это может быть удобно.

Почему JavaScript

Сам себе инженер: домашняя автоматика и роботы на JavaScript

Опытные программисты микроконтроллеров скажут, что C/С++ быстрее и ближе к «железу». Да, это мощные, но сложные и не самые лаконичные языки. Если вы их уже знаете — отлично. Но не всем они нужны, особенно в начале. Пусть выполнение JS-кода займёт на 10-15 миллисекунд дольше — для любительского проекта это не критично. Новичку важнее получать быстрые результаты и читать интуитивно понятный код.

Основные преимущества JS:

  1. Этот язык востребован: за последние 5 лет он —  самый популярный ЯП на StackOverflow. В рейтинге TIOBE за апрель 2018 JavaScript   — восьмой по популярности.

  2. Это один из самых простых в изучении языков, в отличие от С/C++.

  3. JS ускоряет разработку: с ним код бывает в 4 раза короче, чем на Arduino (Си)  — можно быстро реализовывать и тестировать новые задумки. Краткий и понятный синтаксис упрощает знакомство с чужими наработками и их переделку под ваши задачи.

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

  5. У JavaScript есть ясные перспективы развития, в том числе благодаря фреймворкам Node.js и Vue.js. Противостояние адептов AngularJS и React — один из увлекательных эпизодов истории языка, и сколько еще таких эпизодов нас ждёт! Пока web-разработка на подъёме, знание JS будет приносить доход.

Если вы недавно увлеклись робототехникой и ещё толком не умеете программировать, JavaScript — добрый помощник.

Бонусы JS-платформ

Большинство плат Arduino по умолчанию работают с урезанной версией C++, которую мало где применишь. Платформы Espruino и Iskra JS работают со стандартным JS, так что синтаксис и изученные приёмы можно использовать в других направлениях разработки.

Ещё один плюс Espruino и JS — автоматическое подключение библиотек. Сторонние С-библиотеки нужно компилировать и подключать вручную, что отнимает время. На платформе Espruino и Iskra JS библиотеки подхватываются по команде require в коде. Указываете имя библиотеки, и при запуске программы начинается её поиск: сначала на локальном устройстве, затем в интернет-репозиториях, в т.ч. на GitHub.

Консоль в  Espruino IDE позволяет отлаживать код в интерактивном режиме: вы видите результат выполнения программы и можете тут же вводить команды и экспериментировать.

Hello, LED! Простейший код для Espruino

Сам себе инженер: домашняя автоматика и роботы на JavaScript

Вместо "Hello, World" для Arduino-совместимых устройств первым пишут программу мигания светодиодом. Примерно такую:

// Светодиод мигает с интервалом полсекунды (500 мс)

const LED = 2; //номер ввода (пина) для обращения к компоненту платы

var on = false;

setInterval(function() { // Задаём интервал мигания

   on = !on;

   digitalWrite(LED, on);

}, 500);

Выбор платформы и платы

Сам себе инженер: домашняя автоматика и роботы на JavaScript

Платы различаются по форм-фактору, числу пинов (интерфейсов для встроенных и периферийных устройств), входному напряжению и, в итоге,  — по функционалу.

Espruino

Это полностью открытая (open source) платформа: на её базе можно создавать новые платы, прошивки, средства разработки. По назначению она схожа с Arduino, но не совместима с последней технически. Нельзя комбинировать модули двух платформ или писать код для Espruino в Arduino IDE. Программы на JS вы пишете в среде Espruino IDE, которая доступна как:

В  Espruino IDE встроена консоль, где можно отлаживать код в интерактивном режиме. Вы видите результат выполнения программы, можете тут же вводить команды и экспериментировать.

Espruino поддерживает фреймворки Node.js и Electron. Первый позволяет использовать JavaScript на стороне сервера, второй  — создавать нативные приложения на JS.
Варианты плат:

  • Оригинальная Espruino — универсальна по функционалу плата размером меньше кредитки (54 мм x 41 мм). Изначально работает как проводное устройство, но вы можете добавить модули Wi-Fi и Bluetooth. По умолчанию на плате есть разъём MicroUSB, слот для SD-карт и 44 пина.

Сам себе инженер: домашняя автоматика и роботы на JavaScript

 

  • Espruino Pico — мини-плата (33 мм x 15 мм), похожая на USB-флешку. Её можно воткнуть в компьютер напрямую, удобно носить с собой, встраивать в корпуса разной формы. На её основе удобно делать измерительные приборы. Примеры проектов  — .

Сам себе инженер: домашняя автоматика и роботы на JavaScript

 

  • Espruino WiFi — плата с быстрым доступом в интернет и беспроводную сеть. Позволяет быстро запустить свой веб-сервис, собрать и обработать данные из интернета и/или наоборот  — отправлять данные исследований на сервер.

Сам себе инженер: домашняя автоматика и роботы на JavaScript

 

  • Puck.js  — плата-таблетка в пластиковом корпусе, которая позволяет создавать миниатюрные беспроводные устройства с низким энергопотреблением. Например, можно сделать в автосалоне телефона. Вы пролистываете музыку, не отрывая взгляда от дороги.

Сам себе инженер: домашняя автоматика и роботы на JavaScript

 

  • Iskra JS от российской компании «Амперка»  — логическое развитие оригинальной Espruino c дополнительными плюшками, о которых стоит рассказать подробнее.

Iskra JS

Сам себе инженер: домашняя автоматика и роботы на JavaScript

Плата на ядре Espruino и в форм-факторе Arduino. Вы можете использовать комплектующие Arduino и управлять полученной системой с помощью JavaScript!  Средой разработки служит уже знакомая Espruino WEB IDE. Плюс Iskra JS имеет собственные модули и платы расширения. Энтузиаст, которому понравилась одна платформа, рано или поздно захочет попробовать другую, и возможность комбинировать модули будет очень кстати.

Когда платы нет под рукой, вы можете тестировать код в онлайн-эмуляторе Iskra JS.

Подключить больше модулей поможет плата расширения, такая как Troyka Shield. Она позволяет перестановкой джампера выбирать напряжение на одной из линий питания, причем напряжение управляющей платы не важно.Вы можете  комбинировать пятивольтовые модули с трёхвольтовыми платами Arduino (Due, M0).

Tessel 2  

Плата работает с JavaScript, поддерживает фреймворк Node.js и менеджер пакетов NPM, из коробки обеспечивает работу с HTTP и web-сервером, отправку сообщений в Twitter, цветное освещение. Имеет два USB-порта для подключения внешних модулей, таких как:

  • камера,

  • средства воспроизведения звука,

  • модуль сотовой связи (GSM),

  • модуль Bluetooth LE,

  • слот MicroSD.

Ещё целый арсенал модулей можно цеплять к свободным пинам на плате.

Arduino

Сам себе инженер: домашняя автоматика и роботы на JavaScript

Все варианты плат Arduino рассматривать сейчас не будем  — всё же они заточены под C++. Скажем только о нескольких интересных и компактных решениях, которые дружат с Python, а через Johnny-Five ладят и с JS.

Arduino Yún  — плата для тех, кто увлечён интернетом вещей. Может получать доступ к Google-почте, Twitter, Facebook, Dropbox и ещё сотне популярных веб-сервисов через библиотеку Temboo. Управляемый через Yún умный дом может связаться с вами, где бы вы ни находились.

Arduino Tian — плата на базе Arduino Yun, но более производительная, с Wi-Fi, Bluetooth, Ethernet-модулями и ОС Linux на борту. Поддерживает Node.js, чтобы вы могли писать на JS и front-end и back-end. Позволяет быстро развернуть сервер для видеотрансляций или оригинальный веб-сервис для дома.

Мозги  — решают!

Сам себе инженер: домашняя автоматика и роботы на JavaScript

Какую бы платформу вы ни выбрали, поведение устройства будет зависеть от кода, который вы напишете. И здесь для программиста начинается самое увлекательное творчество. Ведь один и один и тот же механизм будет лучше или хуже справляться с задачами  — в зависимости от качества вашего кода. Попробуйте! Дайте машине мозги и почувствуйте себя Великим Гудвином! :)


Опубликовано 25.05.2018 в 19:48
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Комментарии

Показать предыдущие комментарии (показано %s из %s)
Показать новые комментарии
Читать

Поиск по блогу

Люди

7 пользователям нравится сайт lena2018.mirtesen.ru

Последние комментарии

нет комментариев