Подробное руководство о том, как установить Espruino на ESP32 и управлять миром Интернета вещей, используя только JavaScript.

Несколько дней назад во время весенней уборки я обнаружил ESP32, который я купил для старого проекта (но никогда не использовал), спрятанный в шкафу. Я говорю о микроконтроллере, который очень дешевый, но с множеством замечательных функций, таких как встроенный модуль Wi-Fi.

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

Итак, я провел несколько часов на форумах и Stack Overflow в поисках способа исправить это, так что теперь у вас есть полное руководство по установке Espruino и JavaScript на ESP32 со всеми возможными решениями всех возможных проблем.

Во-первых, давайте начнем с вопроса новичка:

Что такое ESP32?

ESP32 - это микроконтроллер со встроенным Wi-Fi и Bluetooth Low Energy. По сути, это микросхема размером с ваш большой палец, которую вы можете использовать для доступа в Интернет и вызова API-интерфейсов или для связи со своим телефоном. Довольно круто, правда?

Вот некоторые из преимуществ, ради которых я использую / рекомендую микроконтроллер ESP32:

К тому же… это очень дешево! Вы можете найти один ESP32 по цене 3–4 доллара на Aliexpress или комплект по 2 доллара за штуку. Если вы хотите иметь его завтра, вы также можете найти их на Amazon Prime по цене ~ 10 долларов за штуку; что не так дешево по сравнению с другими, но все же дешевле, чем другие платы IoT!

ESP32 - это прямой преемник ESP8266написал об этом статью несколько лет назад), и он имеет гораздо более мощный двухъядерный процессор и больше оперативной памяти. Кроме того, он имеет несколько дополнительных PIN-кодов и несколько полезных встроенных датчиков.

Вы можете делать действительно крутые вещи со всей этой дополнительной мощностью, и, что самое приятное ... вы также можете установить на него JavaScript с Espruino!

Что такое Эспруино?

Espruino - это интерпретатор JavaScript для микроконтроллеров с открытым исходным кодом. Он позволяет использовать JavaScript в недорогих чипах, а это означает, что вы можете начать использовать его немедленно, даже если вы не знакомы с такими языками программирования, как Arduino, Lua и т. Д.

Да, после завоевания мира переднего плана (JavaScript, React, Angular…) и мира бэкенда (с Node.js) вы также можете использовать JavaScript в физическом мире с устройствами IoT и, наконец, иметь возможность использовать JavaScript Везде, буквально.

Как прошить Espruino на ESP32

Давайте начнем с первой настройки: когда вы впервые используете ESP32, он обычно поставляется без кода внутри или с некоторым кодом Lua для мигания внутреннего светодиода. Поэтому нам нужно установить Espruino, чтобы начать делать наши замечательные JS-материалы. Такой процесс называется мигание, но не волнуйтесь, обнажать гениталии в общественных местах необязательно! Пожалуйста, наденьте нижнее белье, спасибо.

Прежде всего: давайте скачаем Espruino!

Перейдите на страницу загрузки espruino.com и выберите двоичный файл для ESP32, затем щелкните первую ссылку для получения последней версии Espruino (v2.05 по состоянию на май 2020 г.)

Загрузите все 3 файла:

Мы воспользуемся ими чуть позже. Сначала нам нужно убедиться, что наш ESP32 виден нашим компьютером.

Найдите наш ESP32

Давайте подключим наш ESP32 к USB-кабелю и к нашему компьютеру. Если он новый, он должен начать мигать своим светодиодом, поскольку это программа, установленная по умолчанию (а также для нас это хороший способ убедиться, что устройство не повреждено).

Затем нам нужно местоположение, назначенное нашим ПК для ESP32, чтобы адресовать его, когда мы собираемся его прошить. Для этого нам нужно установить некоторые драйверы на наш компьютер, чтобы он мог успешно просматривать ESP32.

Установите эти драйверы, чтобы иметь возможность просматривать устройство с вашего ПК / Mac (просто найдите тот, который подходит для вашей операционной системы, загрузите исполняемый файл и запустите его).

В зависимости от вашего оборудования ESP32, возможно, вам придется установить только один из этих драйверов (я, например, установил только первый). Установите их оба на всякий случай :)





Установлены? Хороший.

Теперь откройте свой терминал и введите (если вы работаете в Linux)

ls /dev/tty*

Или если вы на Mac

ls /dev/cu*

Для пользователей Windows: перейдите в конец этого руководства, вы найдете хорошее руководство о том, как найти там свой ESP32!

Если вы видите что-то вроде

/dev/tty.SLAB_USBtoUART

Or

/dev/cu.SLAB_USBtoUART

Вы готовы к работе! Запомните этот путь, так как это место (порт), где находится наш ESP32 на нашем ПК.

Если вы используете Mac и не видите никаких устройств, это может быть связано с тем, что MacOS препятствует загрузке драйверов. Откройте Системные настройки - ›Безопасность и конфиденциальность -› Общие и проверьте, отображается ли здесь сообщение о «Системное программное обеспечение от разработчика…», где имя разработчика - Silicon Labs или FTDI, и нажмите «Разрешить» после ввода пароля администратора, когда его спросят. .

Установить Espruino

Мы будем использовать esptool для установки Espruino. Он написан на Python, поэтому убедитесь, что на вашем компьютере установлен Python 2.7 или ›3.4.

Затем с помощью pip запустите эту команду:

pip install esptool

Если это вызывает ошибку, попробуйте python -m pip install esptool или pip2 install esptool. Это установит esptool в каталог исполняемых файлов, и мы сможем запускать его из любого места.

Вы все еще помните те 3 файла, которые мы скачали несколько шагов назад, и куда мы их положили? Отлично, теперь перейдите в эту папку со своим терминалом и немного отредактируйте эту команду, чтобы добавить наше местоположение ESP32.

esptool.py                                          \
        --chip esp32                                \
        --port <INSERT HERE YOUR ESP32 LOCATION>    \
        --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

Просто замените после - перенесите найденное ранее местоположение. Заменил на ---port /dev/cu.SLAB_USBtoUART.

И… Теперь ваш ESP32 прошит Espruino! 💪

Настройка Espruino Web IDE

Самый простой способ написать (и выполнить) код на ESP32 - использовать Espruino Web IDE, приложение Chrome, которое позволяет:

  • Подключите ESP32 (или любые другие устройства Espruino);
  • напишите код JS, а затем выполните его на своем ESP32;
  • откройте интерактивную консоль, где вы можете отладить свой код или протестировать некоторые методы перед прошивкой кода.

Это доступно здесь:



Прежде всего, нам нужно установить связь с нашим Espruino. Для этого нам нужно изменить настройки Espruino Web IDE по умолчанию, иначе мы не сможем правильно подключить его. Поверьте, я потерял на этом 4 часа.

Нажмите шестеренку настроек в правом верхнем углу, откройте вкладку «Связь» и измените скорость передачи с 9600 на 115200. Она будет сохранена автоматически.

Хорошо, теперь закройте настройки и начните работать со своим ESP32!

Нажмите желтую кнопку «Plug» в верхнем левом углу и выберите порт, который мы нашли ранее (в моем случае: /dev/cu.SLAB_USBtoUART).

Если он станет зеленым, значит, мы подключены.

Давайте попробуем что-нибудь простое: Hello World (очевидно).

Как видите, в левой части среды IDE после подключения к Espruino теперь отображается запрос. Это интерактивная консоль, о которой я анонсировал ранее.

Напишем console.log('Hello ESP32!'); и нажмем Enter.

Этот код был выполнен на нашем ESP32, и он вернулся правильно. (console.log всегда возвращает undefined).

(Наконец-то) давайте напишем код!

В следующей части мы собираемся использовать весь потенциал Espruino, чтобы просто… включить светодиодный индикатор. (У нас хорошее, но простое начало, мы должны сосредоточиться в первую очередь на первых шагах. Обещаю, в следующих статьях мы сделаем кое-что более интересное! 🤞)

Как мы уже видели несколько параграфов назад, ESP32 имеет внутренний светодиод, и этот светодиод подключен к контакту № 5. Здесь, в Espruino, контакты обозначены D1, D2, D3 ... 'D' как цифровым контактом, поэтому мы ПИН № 5 можно найти в переменной D5. Все пины уже инициализированы Espruino, поэтому нам не нужно объявлять D5 перед тем, как начать его использовать.

Мы можем использовать метод Espruino digitalWrite, чтобы записать PIN-код D5 и изменить его состояние с ВЫКЛ на ВКЛ. Просто примечание: для включения светодиода необходимо передать значение 0. По умолчанию (светодиод не горит) значение равно 1. Я знаю, что это не самая интуитивно понятная вещь в мире, но, пожалуйста, имейте это в виду, поскольку мы также собираемся использовать ее в будущем. Вот хорошее объяснение этому.

Давай попробуем! Просто напишите в консоли digitalWrite(D5, 0) или digitalWrite(D5, false) и нажмите Enter. Вы увидите, что теперь горит внутренний светодиод ESP32! 🥳

Если вы хотите выключить его, просто выполните digitalWrite(D5, 1).

К настоящему времени мы дали нашему ESP32 простые однострочные инструкции, которые выполнялись немедленно. А как насчет кода, который можно выполнять бесконечно?

Мы собираемся написать код для включения и выключения нашего внутреннего светодиода D5 каждые 500 миллисекунд. Самое приятное то, что ... мы собираемся использовать для этого все основные инструкции JavaScript, так как нам не нужно изучать какие-либо новые команды или язык.

Вот код, скопируйте / вставьте его в правую (белую) часть Espruino Web IDE:

Выглядит знакомо? Это потому, что это почти тот же код JavaScript, который вы можете запустить в своем браузере! В этом вся прелесть Espruino: это всего лишь JavaScript 😉

Мы собираемся расширить prototype объекта Pin, чтобы добавить новый метод, blink. Этот метод имеет внутреннюю переменную для текущего состояния ПИН-кода (вкл. / Выкл.), И мы собираемся использовать setInterval для переключения состояния и digitalWrite его для ПИН-кода.

Чтобы загрузить этот код в наш ESP32, нам нужно нажать третью кнопку в центре IDE: кнопку «Отправить в Espruino».

Через несколько секунд вы заметите мигание светодиода. Отлично!

Прямо сейчас наш код находится в памяти ESP32, но если вы отключите его, а затем снова подключите кабель USB, он потеряет все инструкции и останется бездействующим.

Чтобы навсегда сохранить наши инструкции, чтобы каждый раз при включении устройства выполнялся код, вам необходимо перейти в консоль и ввести save (). Вот и все, через мгновение код будет сохранен, и теперь вы также можете подключить его к адаптеру питания USB или к внешнему аккумулятору USB, и он будет работать должным образом.

Что дальше

Эта статья была введением в:

  • Что такое Espruino и что такое устройство ESP32;
  • Как установить Espruino и как избежать головной боли, связанной с первоначальной настройкой;
  • Как использовать Espruino Web IDE и подключить его к нашему ESP32;
  • Запустите на нем базовый код и сохраните его.

Но есть еще много интересных вещей, которые мы можем сделать с помощью этого дешевого и небольшого устройства и Javascript.

В ближайшие недели я опубликую новую статью о том, как подключить наш ESP32 к сети WI-FI, как создать точку доступа и как использовать ее в качестве узла IoT для отправки некоторых данных во внешнюю службу и просмотреть это данные в браузере.

Если у вас есть какие-либо вопросы, не стесняйтесь напишите мне в Twitter!

Дополнительные ресурсы

Примечание команды Plain English

Вы знали, что у нас четыре публикации? Проявите немного любви, предложив им следующие слова: JavaScript на простом английском, AI на простом английском, UX на простом английском , Python на простом английском - спасибо и продолжайте учиться!

Кроме того, мы всегда заинтересованы в продвижении хорошего контента. Если у вас есть статья, которую вы хотели бы отправить в какую-либо из наших публикаций, отправьте электронное письмо на адрес [email protected] с вашим именем пользователя Medium и тем, о чем вы хотите написать, и мы вернуться к вам!