Jump to content
DFRobot

Уроки ESP32: запуск скриптов с компьютера

Recommended Posts

Введение.

Цель данного урока - научиться запускать на ESP32 скрипты MicroPython, написанные на компьютере, используя программу ampy. Этот урок был опробован и на ESP8266, и на ESP32.

Ampy - это утилита от Adafruit, и его исходники можно скачать отсюда. На Adafruit есть подробнейшая документация по этой утилите, и рекомендуем с ней ознакомиться. Однако, самым простым способом начать использовать ampy - это загрузить его через pip.

В отличие от того, как мы поступали на предыдущих уроках, отправляя в консоль по одной команде, ampy позволит запустить скрипты на microPython из файла. На этом уроке мы по умолчанию считаем, что на вашем компьютере уже установлены Python и pip, а на плате с ESP32/ESP8266 установлен MicroPython.

Процедура.

Первым делом устанавливаем ampy. Для этого открываем командную строку и вводим следующую pip-команду:

pip install adafruit-ampy

Мы используем версию Python 2.7 на операционной системе Windows, и результат выполнения команды показан на Рис. 1. У вас может выводиться что-то другое в зависимости от ОС и версии Python.

5be8956b98803_Figure1Installingtheampymodule..png.4efc08f8028043be3c0f96e0e2603678.png

Рис.1 Установка ampy.

Очень детальное руководство по установке ampy есть и на Adafruit.

Ну и теперь запуск кода из скриптов станет очень простым. Для этого надо всего лишь создать файл с именем script.py в папке на Вашем компьютере и ввести код ниже. Естественно, название файла может быть любым другим. Также и расширение не обязательно должно быть *.py ( я пробовал с расширением *.txt, и всё прекрасно работало), но раз уж файл содержит скрипт, написанный на языке Python, то хорошим тоном будет использование именно расширения *.py. 

Для примера в файле запишем строку:

print("Hello from my script!")

В командной строке переходим в ту папку, куда сохранили файл. Отправляем команду, изменив значения в квадратных скобках на подходящие:

ampy --port [YourDevicePort] run [YourFileName]

В нашем случае ESP8266 подключен к порту COM7, а ESP32 к порту COM5, и команды для проверки каждого из них показаны ниже, также с правильным именем файла:

ampy --port COM5 run script.py
ampy --port COM7 run script.py

Если всё в порядке, вы получите примерно то же, что и на Рис. 2, где виден результат работы скрипта на ESP32 и ESP8266.

5be8982b814dd_Figure2OutputofthescriptrunningbothontheESP8266andontheESP32..png.98581468bb3db22f8649ec0373fec7e0.png

Рис.2. Результат работы скрипта, запущенного на ESP8266 и на ESP32.

Важно: в той версии утилиты ampy, которая установлена у меня, выполнение любого скрипта сразу после подключения контроллеров выдаёт ошибку подобную той, что показана на Рис. 3. Это случается как на ESP8266, так и на RSP32. Но после этой первой ошибки последующие запуски скриптов выполняются нормально. Я пока не нашёл причины этого, но поделюсь, если найду.

5be89854462ae_Figure3Erroronfirstattemptofexecutingascript..png.6a010d6a13d9c0b9eb21e1be06176559.png

Рис. 3.

Пожалуйста, напишите в комментариях, наблюдается ли такая ошибка у вас.

 

Важно: Этот пост - перевод статьи, написанной Nuno Santos из Лиссабона (Португалия), инженером в области электроники и компьютерной техники. Можно познакомиться с его оригинальными статьями здесь. Он написал ещё много полезных уроков и проектов про ESP32ESP8266, и, если интересно, можно почитать его блог.

У DFRobot есть много других обучающих статей по связке ESP32 с ардуино и готовых проектов на основе ESP32.

Share this post


Link to post
Share on other sites

У меня тоже есть ошибка как на рис. 3

Она похоже связана с инициализацией последовательного порта т.к. возникает поле того как подключаюсь терминальной программой (Zoc)

 

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By DFRobot
      Введение.
      Цель данного поста – объяснить, как сформировать сообщение в формате JSON, используя MicroPython и библиотеку ujson на ESP32. О том, как запустить MicroPython на ESP32 рассказано здесь, а как разобрать/распарсить JSON, смотрите предыдущий пост.
       
      Код.
      Подключаем модуль ujson при помощи следующей команды:
      import ujson Ниже показан пример сообщения, которое мы постараемся в итоге сформировать. В данном примере мы моделируем возможное сообщение от IoT устройства некоторого типа (например, датчика температуры), передающего какие-то измеренные значения:
      { "deviceType": "Temperature", "values": [23,22,25] } Нам надо сохранить структуру этого сообщения в одной переменной, потому будем использовать объект типа словарь (англ. версия здесь). Он позволяет получать значение по ключу и очень хорошо подходит для структуры JSON.
      Начнём с создания пустого объекта типа словарь в переменной dict. После присвоим ключу “deviceType” в качестве значения строку “Temperature”, а ключу  “values” присвоим список со значениями, показанными в JSON. Обратите внимание на то, что значением в словаре Python может быть даже такой объект, как список.
      После присвоения выведем содержимое переменной dict, чтобы убедиться, что значения присвоены верно.
      dict = {} dict["deviceType"] = "Temperature" dict["values"] = [23,22,25] print(dict) На Рисунке 1 показано, что должно получиться в результате. Как видим, у нас есть структура словаря с некоторыми парами ключ-значение. Выведенное строковое представление словаря Python уже очень похоже на JSON.

      Рисунок 1. Содержание словаря Python.
      Остаётся перевести словарь в JSON-строку, используя функцию dumps из модуля ujson. Этот метод принимает в качестве аргумента словарь, а возвращает его представление в формате JSON. Выведем то, что возвращает эта функция.
      encoded = ujson.dumps(dict) print(encoded) Окончательный результат показан на Рис. 2. То, что получилось, очень похоже на строковое представление словаря, которое показано на Рис.1, но теперь ключи и значения заключены в двойные кавычки, а не в одинарные. То есть в полном соответствии с форматом JSON.

      Рисунок 2. Окончательный результат работы программы расшифровки JSON.
      Важно: Этот пост - перевод статьи, написанной Nuno Santos из Лиссабона (Португалия), инженером в области электроники и компьютерной техники. Можно познакомиться с его оригинальными статьями здесь. Он написал ещё много полезных уроков и проектов про ESP32, ESP8266, и, если интересно, можно почитать его блог.
      У DFRobot есть много других обучающих статей по связке ESP32 с ардуино и готовых проектов на основе ESP32.

       
  • Сообщения

  • Покупай!

×
×
  • Create New...