Авторизация:


Сообщество людей и технологий
Сегодня у нас: год

Уже есть аккаунт? Войти
Присоединяйся к нашему гик сообществу!

Создай свой блог, делись интересной информацией из мира высоких технологий.

JavaScript для умного дома. Arduino устарел, да здравствует ESP32!
Статьи, 12-02-2018, 03:42

JavaScript для умного дома. Arduino устарел, да здравствует ESP32!

Содержание статьи

  • Какую плату выбрать?
  • Начинаем программирование
  • Установка
  • IDE
  • Hello world
  • RGB-лампочка, управляемая по MQTT
  • MQTT-сервисы
  • Система контроля состояния комнаты
  • Заключение

Интерес к интернету вещей растет с каждым днем, свои курсы по технологии IoT запустили и Cisco, и Samsung. Но большинство этих курсов базируются на собственном железе компаний, довольно дорогом, в то время как практически все то же самое можно сделать на гораздо более дешевом железе самостоятельно, получив при этом массу удовольствия и полезных навыков.

Какую плату выбрать?

Когда неофит от IoT полезет в интернет, одним из первых модулей, которые он найдет, будет ESP8266. И действительно, он обладает массой достоинств: дешевый, много различных плат на его основе, позволяющих использовать его как самостоятельное устройство и подключать к сложным Arduino-based проектам. Но ESP8266, выпущенный в 2014 году, довольно быстро перестал удовлетворять запросы пользователей, и в 2015 году компания-разработчик Espressif выпускает новый микроконтроллер — ESP32.

Различия между ESP8266 и ESP32

Точно так же, как и в случае с ESP8266, разработчики создали довольно много плат, базирующихся на новом микроконтроллере. В данной статье все примеры тестировались и проверялись на плате MH-ET LIVE ESP32 DevKit. Плата для обзора была любезно предоставлена интернет-магазином Amperkot.

Pinoutmap платы

Сколько процессорных ядер у ESP32?

  • Одно, зачем ему больше?
  • Два, меньше уже не делают
  • ESP32 — это серия из четырех чипов с одним и двумя ядрами

Загрузка …

Начинаем программирование

Как и у любой платы, основанной на ESP32, у MH-ET LIVE ESP32 DevKit есть достаточно большой набор языков программирования. Во-первых, это Arduino C, во-вторых, Lua, а в-третьих и в-четвертых — MicroPython и Espruino. Про Espruino — сборку JS для программирования микроконтроллеров — уже рассказывалось в ][, но в той статье разбиралась работа только на плате Espruino Pico, заточенной под Espruino.

INFO

К сожалению, портирование Espruino на ESP32 еще не до конца завершено. Часть возможностей, например обновление по воздуху и Bluetooth, недоступна. Но так как Espruino — open source проект, любой может добавить свою функциональность.

Установка

  1. Скачиваем на официальном сайте свежую сборку Espruino. А если не доверяешь готовым сборкам, то можно собрать прошивку самостоятельно:

    # Get the Espruino source code git clone https://github.com/espruino/Espruino.git cd Espruino # Download and set up the toolchain ('source' is important here) source scripts/provision.sh ESP32 # Clean and rebuild make clean && BOARD=ESP32 make 
  2. Несмотря на то что мы будем программировать на JS, для установки все равно нужен Python, а конкретно esptool.py. Повторяя свою предыдущую статью, скажу, что для его установки, при условии, что Python уже установлен, достаточно набрать в консоли/терминале: pip install esptool.

  3. В терминале перейти в папку с прошивкой. Кроме самого файла Espruino, здесь лежат файлы bootloader.bin и partitions_espruino.bin. Это необходимые компоненты, но в некоторых сборках их может не быть, тогда их придется скачать отсюда.
  4. Запускаем процесс прошивки, не забыв изменить порт, указанный в данном примере, на свой, а также при необходимости указать другое имя прошивки. Здесь она называется espruino_esp32.bin.

    esptool.py    --chip esp32                        --port /dev/ttyUSB0                 --baud 921600                       --after hard_reset write_flash      -z                                  --flash_mode dio                    --flash_freq 40m                    --flash_size detect                 0x1000 bootloader.bin               0x8000 partitions_espruino.bin      0x10000 espruino_esp32.bin 

Процесс прошивки

IDE

Разработчики Espruino создали свою IDE, Espruino Web IDE. Эта программа распространяется через Chrome Web Store, также существуют нативные приложения для Windows (32 и 64).

Espruino Web IDE

Перед первым запуском нужно залезть в настройки, вкладка COMMUNICATIONS, и убедиться, что скорость общения выставлена на 115200, а также изменить поле Save on Send с No на Yes, иначе все программы после перезапуска слетят.

Теперь достаточно запустить IDE, подключиться к плате и набрать в консоли 1+2: если ты получил 3, значит, все настроено правильно и можно начинать полноценную работу.

Какую платформу для разработки прошивок ESP32 рекомендуют использовать Espressif, AWS IoT и Google Cloud IoT?

  • Ubuntu LTS
  • Mongoose OS
  • Kolibri OS

Загрузка …

Hello world

Во всех языках программирования, предназначенных или модифицированных для программирования микроконтроллеров, самая простая программа — так называемый Blink, мигание встроенным светодиодом. Но это как-то скучно. Поэтому нашей первой программой станет программа для управления светодиодом с помощью веб-страницы. И действительно, JS — это же язык веба.

var wifi = require("Wifi");  wifi.startAP('EspruinoAP', { password: '0123456789', authMode: 'wpa2' },function() {   console.log(`AP started`); });  function onPageRequest(req, res) {   var a = url.parse(req.url, true);   if (a.pathname=="/") {     res.writeHead(200, {'Content-Type': 'text/html'});     res.end("

Hello, ][aker!

"); } else if (a.pathname=="/on") { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end("Enable"); digitalWrite(D2, false); } else if (a.pathname=="/off") { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end("Disable"); D2.write(true); } else { res.writeHead(404, {'Content-Type': 'text/plain'}); res.end("404: Page "+a.pathname+" not found"); } } require("http").createServer(onPageRequest).listen(80);

Можно заметить, что синтаксис практически ничем не отличается от обычного JS. Давай разбираться, что же происходит в этой программе.

  • var wifi = require("Wifi") — для начала мы подгрузили необходимый нам модуль для работы с Wi-Fi. Логично будет задаться вопросом: а откуда мы его взяли? Допустим, есть встроенные в прошивку модули. А если нам нужно загрузить с какого-нибудь внешнего сайта? Функция require поддерживает синтаксис вида require("https://github.com/espruino/EspruinoDocs/blob/master/devices/PCD8544.js");, а WebIDE для поиска модулей онлайн, по умолчанию используется https://www.espruino.com/modules.
  • Следующий блок кода отвечает за поднятие точки доступа с именем EspruinoAP и паролем 0123456789. В случае успешного запуска в консоль выводится соответствующее сообщение.
  • Функция onPageRequest — собственно сам веб-сервер. В этой функции разбирается адрес и проверяется, что нужно сделать, в зависимости от запроса:
    • если загружается первая страница — /, то вернуть 200-й заголовок и сообщение типа text/html «Hello, ][aker!», в обрамлении HTML-тегов;
    • если загружается страница включения — /on, то вернуть 200-й заголовок и сообщение Enable, а также включить светодиод. Заметим, что используется привычная Arduin’щикам функция digitalWrite(pin, value);
    • небольшое отличие в случае страницы выключения — /off, для выключения светодиода используется не функция digitalWrite(pin, value), а метод write(value);
    • во всех остальных случаях возвращаем ошибку «404 — Page Not Found».
  • А последняя строка собственно поднимает сервер, с внутренней функцией onPageRequest, на 80-м порте.

Важно заметить, что мы можем возвращать различный контент: обычный текст, HTML, XML и так далее.

Продолжение доступно только подписчикам

Материалы из последних выпусков можно покупать отдельно только через два месяца после публикации. Чтобы продолжить чтение, необходимо купить подписку.

Подпишись на «Хакер» по выгодной цене!

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

1 год

6790 р.

Экономия 1400 рублей!

1 месяц

720 р.

25-30 статей в месяц

Уже подписан?


Добавьте комментарий, Ваше мнение очень важно:

Имя:*
E-Mail:
Комментарий:
Вопрос:
rgjrg
Ответ:*
Введите код: *


Самое интересное:
    Гику на заметку:
    Не iPhone самый продаваемый телефон в истории
    Новый планшет BlackBerry PlayBook
    Особенности ремонта айфонов своими руками
    Переделка дачи
    Как выбрать недорогой смартфон
    Зависимость от... мобильного телефона и телевизора
    Востребованные чехлы для ipone 4
    Apple. Истинный лидер или дань моде?
    Чехлы для смартфонов и айфонов
    Вопрос:

    Какую мобильную ОС Вы предпочитаете?

    Android
    iOS
    Windows Phone
    Другая
    Нет ОС

     


    2024 © Cig-bc.ru - Сообщество людей и технологий.

    Все права защищены.

    При цитировании любых материалов, публикуемых в журнале, обязательна ссылка, помещенная не ниже первого абзаца текста. При копировании новостных материалов для интернет-изданий обязательна прямая открытая для поисковых систем гиперссылка, размещаемая вне зависимости от объема используемых материалов (полного или частичного). По вопросам рекламы пишите на sales@cig-bc.ru !

    Категории:

    Новости IT
    Гаджеты
    Железо
    Софт
    Игры
    Информация:

    О проекте
    Регистрация
    Статистика
    Карта сайта
    RSS
    Контакт:

    Обратная связь
    Email: admin@cig-bc.ru