Поиск сообщества
Показаны результаты для тегов 'уроки ESP32'.
Найдено: 4 результата
-
Введение. Цель данного урока – объяснить, как подключить ESP32 к беспроводной сети Wi-Fi, используя MicroPython. Процедура, показанная здесь, основана на руководстве к ESP8266 и документации к MicroPython, которую рекомендуем прочесть. Мы будем отправлять в консоль MicroPython команды и по шагам наблюдать за тем, что происходит. Если же MicroPython на ESP32 у вас ещё не установлен, то сделать это можно по шагам, описанным в этом посте. Подключаться к последовательному порту будем через PuTTy, но и любая другая аналогичная программа тоже подойдёт. Код. Сначала загружаем модуль network для работы с сетью, чтобы иметь доступ ко всем функциям, необходимым для установки сетевого соединения по Wi-Fi. import network При этом в консоль будет выведена информация, как показано на Рисунке 1. Рисунок 1. Загрузка модуля network Так как мы собираемся подключаться к сети Wi-Fi, наше устройство будет работать в режиме беспроводной станции. Значит, нам надо создать объект станции с интерфейсом Wi-Fi. Для этого просто вызовем конструктор класса WLAN и передадим ему в качестве аргумента идентификатор того интерфейса, который будем использовать. В нашем случае это интерфейс network.STA_IF. station = network.WLAN(network.STA_IF) Теперь активируем сетевой интерфейс. Для этого у созданного нами объекта вызовем метод active с аргументом True, потому что аргументами могут быть только значения типа Boolean. station.active(True) После этой команды в консоль будет выведена информация о том, что мы сейчас в режиме станции и что интерфейс запущен. Рисунок 2. Активация режима базовой станции. Наконец, воспользуемся методом connect, чтобы подключиться к Wi-Fi сети. Аргументами этого метода являются SSID (имя сети) и пароль. station.connect(“YourNetworkName”, “YourNetworkPassword”) И снова в консоль будет выведена информация о подключении. Подключение может занять некоторое время, но, когда оно установится, строка “>>>>” автоматически не напечатается. Чтобы зря не ждать, когда в консоль выведется последняя строка, просто нажмите Enter. Рисунок 3. Подключение к Wi-Fi. И последнее, подтвердим, что подключение установлено. Для этого вызовем метод isconnected, который возвращает True, если устройство подключено к WiFi. Мы также можем вызвать метод ifconfig, который возвращает IP-адрес, маску подсети, шлюз и DNS. station.isconnected() station.ifconfig() На Рисунке 4 показан результат работы этих команд, из которого видно, что мы корректно подключились к сети Wi-Fi. Рисунок 4. Подтверждение подключения к сети Wi-Fi Заметим, что IP-адрес, привязанный к ESP32, – локальный, и мы не можем использовать его для получения сообщений не из нашей локальной сети без изменения дополнительных настроек роутера. Важно: Этот пост - перевод статьи, написанной Nuno Santos из Лиссабона (Португалия), инженером в области электроники и компьютерной техники. Можно познакомиться с его оригинальными статьями здесь. Он написал ещё много полезных уроков и проектов про ESP32, ESP8266, и, если интересно, можно почитать его блог. У DFRobot есть много других обучающих статей по ESP32 и готовых проектов на основе ESP32.
-
Введение. Цель данного урока - научиться запускать на 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. Рис.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. Рис.2. Результат работы скрипта, запущенного на ESP8266 и на ESP32. Важно: в той версии утилиты ampy, которая установлена у меня, выполнение любого скрипта сразу после подключения контроллеров выдаёт ошибку подобную той, что показана на Рис. 3. Это случается как на ESP8266, так и на RSP32. Но после этой первой ошибки последующие запуски скриптов выполняются нормально. Я пока не нашёл причины этого, но поделюсь, если найду. Рис. 3. Пожалуйста, напишите в комментариях, наблюдается ли такая ошибка у вас. Важно: Этот пост - перевод статьи, написанной Nuno Santos из Лиссабона (Португалия), инженером в области электроники и компьютерной техники. Можно познакомиться с его оригинальными статьями здесь. Он написал ещё много полезных уроков и проектов про ESP32, ESP8266, и, если интересно, можно почитать его блог. У DFRobot есть много других обучающих статей по связке ESP32 с ардуино и готовых проектов на основе ESP32.
-
Введение. Цель данного поста – объяснить, как сформировать сообщение в формате 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.
-
Введение. Цель данного урока - объяснить, как разбирать (парсить) JSON-строку с помощью MicroPython, запущенного на ESP32. В предыдущем уроке мы подробно рассказали про установку MicroPython на ESP32 и подключение к его консоли. Чтобы разобрать JSON-строку, воспользуемся библиотекой uJSON для MicroPython. Вся документация к ней лежит на гитхабе. Так как будем работать в командной строке, нужно перевести всё содержимое JSON в одну строку, например, при помощи этого сайта. Получившуюся строку можно просто скопировать и вставить в терминальное окно PuTTy. Код. Подключившись к консоли Python, можно начинать программировать. Первое, что нам надо сделать - это загрузить библиотеку uJSON. Вводим в консоль команду import ujson и нажимаем Enter. В результате мы должны получить объект типа ujson, дающий доступ к методу с именем "loads". Этот метод получает в качестве аргумента JSON-строку, а возвращает объект, соответствующий распознанному JSON. Начнём с простой структуры JSON: { "name":"John" }, После сжатия в одну линию получим JSON строку вида: {"name":"John"}, Передадим эту строку в качестве аргумента методу loads. Обратите внимание, слева и справа от строки стоят тройные кавычки “””. Это сделано для верного распознавания кавычек внутри JSON-структуры. Распознанный объект сохраним в переменной parsed. parsed = ujson.loads("""{"name":"John"}""") Проверим, что содержание JSON записано в переменную parsed правильно, для чего напечатаем его, а также имя типа, к которому принадлежит parsed, используя функцию type(). print(parsed) print(type(parsed)) Когда запустим весь код, приведённый выше, мы должны получить в результате то же, что показано на Рисунке 1. Обратите внимание, наш объект с разобранным содержимым JSON относится к типу словарь в Python (ссылка на английском здесь), который идеально подходит для доступа типа ключ-значение. Рисунок 1. Разбор строки JSON Теперь мы можем получить значение по ключу “name”, и оно должно быть “John”. Чтобы получить из словаря значение по ключу, отправим команду: print(parsed["name"]) Такое обращение очень похоже на доступ к элементу массива по индексу, но только вместо численного индекса здесь выступает ключ в формате строки. Должен получиться результат такой же, как и на Рис. 2, где значение “John”выведено в консоль. Рисунок 2. Доступ к разобранным значениям объекта типа словарь. Теперь разберём более сложную структуру. Она может представлять собой, например, сообщение, отправленное IoT устройством: { "device":"temperature", "id":543, "values":[1,2,3] } После сжатия получим следующую строку: {"device":"temperature","id":543,"values":[1,2,3]} Теперь разберём её и напечатаем все ключи, имеющиеся в нашей JSON-структуре. Также напечатаем тип значений, получаемых по ключу, чтобы понять, как они распознались. parsed = ujson.loads("""{"device":"temperature","id":543,"values":[1,2,3]}""") print(parsed["device"]) print(parsed["id"]) print(parsed["values"]) print(type(parsed["values"])) Результат работы кода показан на Рис. 3. Как видно, все значения по каждому ключу напечатаны верно. Заметьте, что ключу "values" соответствует список, а не строки. Естественно, это намного удобнее, так как нам гораздо легче обрабатывать полученные численные значения, используя все функции, доступные для списков. Рисунок 3. Результат разбора содержания JSON. Важно: Этот пост - перевод статьи, написанной Nuno Santos из Лиссабона (Португалия), инженером в области электроники и компьютерной техники. Можно познакомиться с его оригинальными статьями здесь. Он написал ещё много полезных уроков и проектов про ESP32, ESP8266, и, если интересно, можно почитать его блог. У DFRobot есть много других обучающих статей по ESP32 и готовых проектов на основе ESP32.