Как настроить ESP8266 для работы с Arduino IDE. Как прошить ESP8266 и обновить прошивку. Как программировать ESP8266 в среде Arduino IDE. Какие особенности у ESP8266 по сравнению с обычным Arduino.
Особенности и преимущества ESP8266
ESP8266 — это популярный микроконтроллер с интегрированным WiFi-модулем. Основные особенности и преимущества ESP8266:
- Низкая стоимость (от $2 за модуль)
- Встроенный WiFi-модуль стандарта 802.11 b/g/n
- 32-битный процессор с тактовой частотой до 160 МГц
- Оперативная память до 160 КБ
- Флэш-память до 4 МБ
- Поддержка протоколов TCP/IP
- До 16 GPIO выводов
- Низкое энергопотребление
- Возможность программирования в Arduino IDE
Благодаря этим характеристикам ESP8266 отлично подходит для создания IoT-устройств и систем «умного дома». Встроенный WiFi-модуль позволяет легко подключать устройства к сети без дополнительных компонентов.
Подготовка Arduino IDE для работы с ESP8266
Чтобы начать программировать ESP8266 в среде Arduino IDE, необходимо выполнить несколько шагов по настройке:
- Установите последнюю версию Arduino IDE с официального сайта
- Откройте Arduino IDE и перейдите в меню «Файл» -> «Настройки»
- В поле «Дополнительные ссылки для менеджера плат» вставьте ссылку: http://arduino.esp8266.com/stable/package_esp8266com_index.json
- Нажмите «ОК» для сохранения настроек
- Перейдите в меню «Инструменты» -> «Плата» -> «Менеджер плат»
- Найдите «esp8266» в строке поиска и установите поддержку плат esp8266
- После завершения установки перезапустите Arduino IDE
Теперь в меню выбора плат появятся модули на базе ESP8266. Можно приступать к программированию!
Прошивка и обновление ESP8266
Для корректной работы ESP8266 важно использовать актуальную версию прошивки. Процесс прошивки состоит из нескольких этапов:
- Скачайте последнюю версию прошивки с официального сайта Espressif
- Подключите ESP8266 к компьютеру через USB-TTL адаптер
- Переведите ESP8266 в режим прошивки, замкнув GPIO0 на GND
- Запустите утилиту ESP8266 Download Tool
- Укажите COM-порт и скорость 115200 бод
- Выберите файлы прошивки и адреса для их загрузки
- Нажмите кнопку Start для начала прошивки
- После завершения отключите GPIO0 от GND и перезагрузите модуль
Регулярное обновление прошивки позволяет использовать новые функции и исправления ошибок. Рекомендуется проверять наличие обновлений каждые несколько месяцев.
Программирование ESP8266 в Arduino IDE
После настройки Arduino IDE для работы с ESP8266, процесс программирования мало отличается от обычного Arduino:
- Выберите нужную плату ESP8266 в меню «Инструменты» -> «Плата»
- Укажите правильный COM-порт в меню «Инструменты» -> «Порт»
- Напишите скетч или откройте пример для ESP8266
- Нажмите кнопку «Загрузка» для компиляции и загрузки скетча
- Откройте монитор порта для отладки
Большинство стандартных функций Arduino работает и на ESP8266. Однако есть некоторые отличия и дополнительные возможности, связанные с WiFi:
- Для работы с WiFi используется библиотека ESP8266WiFi
- Доступны функции для подключения к WiFi-сети, создания веб-сервера и т.д.
- Можно использовать SPIFFS для хранения файлов во флэш-памяти
- Доступно OTA-обновление прошивки по WiFi
При программировании ESP8266 важно учитывать особенности работы с WiFi и более ограниченные ресурсы по сравнению с обычным компьютером.
Особенности программирования ESP8266
При разработке проектов на базе ESP8266 следует учитывать некоторые особенности этого микроконтроллера:
- Питание модуля должно быть стабильным 3.3В
- Не все GPIO пины можно использовать одновременно
- Некоторые пины имеют двойное назначение (например, RX/TX)
- Ограниченный объем оперативной памяти (около 80 КБ доступно)
- Возможны спонтанные перезагрузки при нехватке памяти
- Требуется периодическая перезагрузка для стабильной работы WiFi
Правильный учет этих особенностей позволяет создавать надежные устройства на базе ESP8266. При возникновении проблем рекомендуется обратиться к документации и сообществу разработчиков.
Создание проектов на базе ESP8266
ESP8266 отлично подходит для создания различных IoT-устройств и систем «умного дома». Вот несколько популярных идей для проектов:
- Метеостанция с отправкой данных в облако
- Система удаленного управления освещением
- Автоматическая система полива растений
- Датчик открытия двери/окна с уведомлениями
- Web-сервер для управления устройствами
- Беспроводной датчик температуры и влажности
- Система мониторинга энергопотребления
При разработке проектов на ESP8266 важно продумать энергопотребление, надежность WiFi-соединения и обработку ошибок. Рекомендуется использовать режимы глубокого сна для экономии энергии и настроить систему автоматического перезапуска при сбоях.
Отладка и устранение неполадок
При работе с ESP8266 могут возникать различные проблемы. Вот несколько советов по отладке и устранению неполадок:
- Используйте монитор порта в Arduino IDE для вывода отладочной информации
- Проверьте правильность подключения и питания модуля
- Убедитесь, что выбрана правильная плата и настройки в Arduino IDE
- При проблемах с WiFi проверьте параметры подключения и уровень сигнала
- Используйте сторожевой таймер для автоматического перезапуска при зависаниях
- Оптимизируйте код для экономии памяти и предотвращения утечек
- При необходимости обновите прошивку до последней версии
Большинство проблем с ESP8266 можно решить, внимательно изучив документацию и форумы разработчиков. При необходимости можно обратиться за помощью к сообществу.
Программируем ESP8266 в Arduino IDE
В предыдущей статье про «народные» WiFi модули я делал обзор купленных почти за $2.6 ES-07 с платами адаптерами.
Сейчас расскажу о программировании модулей в среде Arduino IDE. Заодно в этой статье можно узнать, как сделать часы с синхронизацией времени по NTP протоколу.
Короткий экскурс по программированию ESP-шек
Изначально с завода ESP8266 идут с прошивкой от компании Espressif. В данной прошивке реализована работа с WiFi модулем как с модемом, через AT команды, подаваемые в последовательный порт. В таком режиме хорошо управлять ESP-шкой с внешнего контроллера, тем же Arduono, правда интерфейс обмена данными с контроллером, на мой взгляд, довольно тормозной.
Компания Espressif выпускает SDK для этих модулей, позволяющей разрабатывать собственные прошивки. Здесь подробно описано о данном процессе. Здесь все хорошо по возможностям, но довольно сложно по среде разработки и программировании.
Можно воспользоваться готовыми прошивками со встроенными интерпретаторами.
Например, в этой статье я экспериментировал с прошивкой NodeMCU, позволяющей реализовывать логику работы модуля на встроенном интерпретаторе LUA. Можно использовать прошивку со встроенным JavaScript. К недостаткам таких прошивок я бы отнес «прожорливость» встроенных интерпретаторов к ресурсам ESP, в первую очередь ОЗУ, медленную работу и небольшое количество готовых библиотек.
Есть еще ряд прошивок, которые позволяют настроить работу модуля через WEB-интерфейс. Например коммерческая HOME-SMART, работа с которой описана мною здесь. Данная прошивка дает быстрый старт на ряд применений, но, к сожалению, никаких возможностей к расширению и созданию собственных алгоритмов работы не имеет. Хотя авторы очень быстро развивают возможности данной прошивки и в новой версии недавно появилась возможность разработки собственных модулей на Си к ней.
И, наконец, я подошел к еще одному способу программирования ESP8266 — из среды Arduino IDE. Мне, реализовавшему десятки проектов в этой среде, такой способ работы очень понравился.
К тому же, большая часть библиотек для Arduino, не использующий внутренние порты и прочие аппаратные возможности микроконтроллера, отлично работают и на ESP-модулях.
Подключение и настройка ESP8266 в среде Arduino IDE
Очень хорошо работа с ESP8266 в среде Ардуино IDE описана в этой статье.
Хочу немного добавить, что купленные мною модули ESP-07 распаянные на платы-адаптеры уже практически готовы к использованию. Подключаем TX/RX и GND к TTL-USB конвертеру, например, такому. Подключаем питание 3.3В к VCC. Для загрузки прошивки GPIO0 присоединяем к земле. Собственно и все. Подключить GPIO0 и RESET к данному конвертеру у меня не получилось, но это оказалось не сильно нужно. При подсоединенном GPIO0 к земле ESP находится в режиме загрузки прошивки во флэш-память, но после загрузки происходит запуск программы без отсоединения данного GPIO. Это позволяет вполне комфортно отлаживать свою программу. Нужно перед загрузкой только перезагрузить модуль передергиванием питания или кратковременно подав на вывод RESET на землю.
Я припаял для этого специальную кнопку
На снимке виден еще и припаянный конденсатор, так как были подозрения неустойчивой работы ESP-шки от пульсаций по питанию. Два последних модуля вполне стабильно работают без этого конденсатора.
Итак модуль подключен, среда настроена. Для ES07 все настройки ESP8266 ставятся «по умолчанию»:
Пример разработки прошивки для ESP8266 в Ardiuno IDE
Итак, среда установлена и настроена. Модуль подключен и тестовое «Hello, World!» грузится.
Теперь разработаем что-нибудь полезное. Например, часы на четырехразрядном семисегментном индикаторе с микросхемой TM1637.
Для работы с этим модулем я взял готовую библиотеку для Ардуино DigitalTube. «По умолчанию», дополнительные библиотеки устанавливаются в каталог: «Мои документы\Arduino\libraries\». Чтобы оправдать использование WiFi-модуля, эти часы буду синхронизировать время с NTP сервером в интернете.
Подключаем ESP, дисплей к CLK -> GPIO4, DIO ->GPIO5, стабилизатор 3.
3В и USB-TTL конвертер макетными проводами
Загружаем прошивку: Скетч для ESP8266 часов NTP.
Настраиваем параметры своей точки доступа: AP_SSID и AP_PASS, свою таймзону TIMEZONE. У меня установлена TIMEZONE 5 для Перми/Екатеринбурга. Для Москвы будет TIMEZONE 3.
Функцией tm1637.set(2) устанавливаем необходимую яркость индикатора от 0 до 7.
Получаем готовые часы:
Собирать все это в корпусе я не буду, так как это заготовка для будущего проекта.
Пока работал, кот следил за процессом через зеркало
характеристики, с чего начать или первый опыт. Настройка программного обеспечения ESP8266 в Arduino IDE
Автор Vic На чтение 19 мин Просмотров 273 Опубликовано
Содержание
- ESP8266 и прочее Arduino
- ESP8266 ESP-07 вместе с Adapter Plate
- Добавление поддержки платы ESP8266 в программное обеспечение Arduino
- Проверка собранной схемы
- Перевод ESP-8266 в режим загрузки обновления
- Цели и причины
- Подключение оборудования
- Установка прошивки
- Последовательность шагов для прошивки ESP8266
- Что такое OTA программирование ESP8266?
- Программируем ESP8266 в Arduino IDE
ESP8266 и прочее Arduino
ESP8266 — это микроконтроллер китайского производителя Espressif с интерфейсом Wi-Fi.
Помимо Wi-Fi, микроконтроллер отличается отсутствием флеш-памяти в SoC, программы пользователя исполняются из внешней флеш-памяти с интерфейсом SPI.
У устройства есть ряд особенностей:
Он не имеет корпуса, но при этом имеет малые габариты.- На его борту порядка десяти управляемых пинов (контактов) для подключения внешней периферии.
- Нет встроенного блока питания, питание осуществляется от 5В.
ESP8266 ESP-07 вместе с Adapter Plate
Инструкция подключения ESP-07 (ESP-12) через UART-конвертер:
- Красный — питание 3,3в;
- Черный — GND;
- Желтый — на стороне ESP8266 — RX, на стороне USB-TTL — TX;
- Зеленый — на стороне ESP8266 — TX, на стороне USB-TTL — RX;
- Оранжевый — CH_PD (CHIP ENABLE) — должен быть всегда подтянут к питанию;
- Синий — GPIO0 — подключен через выключатель к земле для включения режима перепрошивки модуля. Для обычного старта модуля GPIO0 можно оставить никуда не подключенным;
- Серый — GPIO15 (MTDO, HSPICS) этот пин необходимо притянуть к земле;
- Если подключаете к Ардуино, то RX-RX, а TX-TX.
С помощью паяльника были объединены ESP-07 и адаптер. Адаптер рекомендую поскольку он в дальнейшем облегчает соединение беспаечным методом с помощью макетной платы и проводов. В данном случае для питания я использовал понижающий DC-DC преобразователь из Китая. В наличии были датчики DS18B20, их и было решено подключать.
HomesSmart сразу ставить не хотелось и выбор пал на такой вот пример. Не буду перепечатывать схему и код — они практически такие же. Заработало не сразу, но с гуглом и бубном завелось и полетели данные на Народный мониторинг.
Загружал скрипт через ESplorer.
Было на Ардуино
Стало на ESP8266
Жду компактный модуль питания 220AC — 3,3DC чтобы оптимизировать количество проводов.
Добавление поддержки платы ESP8266 в программное обеспечение Arduino
Скачайте и установите последнюю версию программного обеспечения Arduino IDE (скачать) на свой компьютер, если вы этого еще не сделали. Откройте приложение Arduino и перейдите к пункту меню:
Arduino -> Настройки (Arduino -> Preferences)
По умолчанию приложение Arduino поддерживает чипы, используемые на официальных платах Arduino, но не ESP8266.
Эти платы могут быть запрограммированы «из коробки», потому что приложение Arduino уже знает о каждой и ее свойствах. Одна из замечательных особенностей Arduino заключается в том, что вы можете добавить поддержку других плат, и все, что вам нужно сделать, это сообщить Arduino, где можно найти их свойства.
Первым шагом этого процесса является предоставление URL-адреса менеджеру дополнительных плат. В текстовое поле в нижней части окна настроек (см. фото выше) вставьте именно этот текст:
Если поле не было пустым, когда вы открыли окно настроек, возможно, у вас уже установлены некоторые другие платы. Если это так, добавьте содержимое текстового поля к указанному выше URL-адресу, используя запятую для разделения нескольких URL-адресов.
Нажмите кнопку ОК, чтобы закрыть окно настроек. Теперь наше приложение Arduino знает, где найти информацию о платах ESP8266 в целом.
Чтобы получить конкретную информацию, перейдите в пункт меню:
Инструменты -> Плата: (название платы) -> Диспетчер плат (Tools -> Board:(board name) -> Boards Manager)
Подождите некоторое время, пока менеджер плат загрузит содержимое, а затем начните вводить «ESP8266» в строку поиска.
Когда вы увидите «esp8266 от сообщества ESP8266» (англ. — esp8266 by ESP8266 Community), вы можете перестать вводить в поиске и нажать «Установить» (Install), чтобы получить последний пакет для платы, установленный внутри вашего приложения Arduino.
В Feather Huzzah имеется удобный USB-коммуникационный чип, но для его нормальной работы требуется бесплатный драйвер. Без него ваша плата не будет отображаться в списке доступных последовательных устройств. Перейдите на страницу SiLabs (Silicon Lab: CP210x USB to UART Bridge VCP Drivers) и скачайте/установите драйвер, соответствующий вашей операционной системе (доступны Mac/Windows/Linux).
Проверка собранной схемы
Перед тем как переводить ESP-8266 в режим отновления прошивки, проверим работу собранной схемы:
- Убедимся, что GIO0 отключена от GND. Иначе AT команды отправить в модуль нельзя.
- Включим питание модуля.
- Подключим USB-to-RS232 конвертер к ПК.
- Зайдем в Control Panel -> System -> Device manager -> Ports (COM & LPT).
- Если устройство Prolific USB-to-Serial Comm Port работает с ошибкой — нужно установить fix.
- Если USB конвертер работает без ошибок — смоттри на каком COM порту он работает.
- Запускаем ESPlorer и выставляем в настройках правильный COM порт и скорость. Жмем «Open».
- Переходим на закладку «AT-based» и жмем кнопку «AT». Отправится команда AT, в ответ должна прийти «ОК». Хначит устрйоство работает нормально. То-же самое можно сделать любой терминальной программой работающей с последовательным портом, вроде PuTTY.
- Далее жмем кнопку»RST». Отправится команда AT+RST для рестарта модуля.
- Отправка команды AT+RST в ESP-8266.
AT+RST AT+RST OK WIFI DISCONNECT ets Jan 8 2013,rst cause:2, boot mode:(3,6) load 0x40100000, len 1396, room 16 tail 4 chksum 0x89 load 0x3ffe8000, len 776, room 4 tail 4 chksum 0xe8 load 0x3ffe8308, len 540, room 4 tail 8 chksum 0xc0 csum 0xc0 2nd boot version : 1.4(b1) SPI Speed : 40MHz SPI Mode : DIO SPI Flash Size & Map: 8Mbit(512KB+512KB) jump to run user1 @ 1000 тn’t use rtc mem data rlЋ‚rlМя Ai-Thinker Technology Co.
,Ltd. ready WIFI CONNECTED WIFI GOT IP
- Сохраним полученные параметры чипа. Они могут пригодится в дальнейшем.
- Отправим AT+GMR для получения информации о текущей версии прошивки ESP-8266.
- Отправка команды AT+GMR в ESP-8266
Получили следующую информацию о чипе:
- SPI Speed : 40MHz
- SPI Mode : DIO
- SPI Flash Size & Map: 8Mbit(512KB+512KB)
- AT version:0.40.0.0(Aug 8 2015 14:45:58)
- SDK version:1.3.0
- Build:1.3.0.2 Sep 11 2015 11:48:04
Для прошивки нужно скачать следующее ПО от разработчика чипа, компании Espressif:
- Flash Downloads Tool.
- Прошивка ESP8266 AT. Если нужны исходники, то ESP8266 NONOS SDK.
- Документация по ESP8266.
Перевод ESP-8266 в режим загрузки обновления
Для перевода ESP-8266 в режим загрузки прошивки нужно:
- Отключить питание модуля и извлечь из USB порта USB-to-RS-232 конвертер.
- Замкнуть PIN GPIO0 на GND.
Я использовал Dupont кабель. Кнопку нет смысла использовать. Вот здесь есть тонкий момент. На некоторых схемах используют две кнопки Flash и Reset и нажимают их попеременно для ввода в режим заливки обновления. В официальной документации дан вариант, который я описал. Но при этом я брикнул ESP8266 и пока не нашел способа восстановить. - Включить питание модуля.
- Немного подождать и подключить USB-to-RS-232 конвертер.
Если нарушить последовательность, то программатор не найдет ESP-8266 модуль!
- Запускаем ESP8266 Flash Download Tool.
- Выбираем ESP8266 и задаем правильный порт и скорость.
- Ничего не вводим и нажимаем Start
- Если ESP 8266 корректно переведен в режиме скачивания прошивки, то практически мгновенно будет выдан статус Finish. И в «detected info» отобразится информация:
- flash vendor: E0h : N/A
- flash devID: 4016h
- QUAD;
- 32Mbit crystal;
- 26 Mhz
В некоторых случаях брикнутые ESP 8266 удается восстановить с использованием инстурмента XTCOM_UTIL.
Статья на эту тему.
Но здесь есть такой момент. Прошивки подходящие под эту утилиту неофициальные (специально сделанные) и очень древние. Хотя, можно «лить» и официальные, указав правильные адреса. Я не пробовал, но в статье пример.
У меня была ситуация, когда не мог залить официальную прошивку на купленный на Aliexpress ESP 8266 модуль. Но после того как залил древнюю прошивку через XTCOM_UTIL, залилась и прошивка через официальный ESP8266 Download Tool.
Но это довольно рискованный подход. Один чип я брикнул, причем на каждом из этапов заливки все было успешно. Возможно, просто неаккуратно извлек модуль после завершения прошивки, забыв отключить питание.
Если конвертер USB — RS-232 плохого качества, либо плохое качество соединений, то ESP8266 Download Tool может выдавать ошибку синхронизации. В Интернет рекомедуют снижать скорость до 9600, но это нельзя сделать с помощью этой утилиты. У неё минимальная скорость 115200. В этом случае можно воспользоваться консольной утилитой ESPTool от официального разработчика чипа компании Espressif.
Я пробовал прошивать с помощью этой утилиты брикнутый чип, но безуспешно.
Таблицу адресов для заливки лучше брать в официальной документации, поскольку адреса завсят от чипа. Этот вопрос нужно смотреть тщательно, поскольку в Интернет адреса заданы для того чипа, который шил автор статьи. Адреса и схема распайки для программирования есть в ESP8266_SDK_Getting_Started_Guide, и адреса есть также в ESP8266_AT_Instructions_Set.
Сразу отмечу, что у меня нет достоверной информации, что если в ESP8266 Download Tool выставить флаг SpiAutoSet, то действительно производится проверка параметров чипа. Адреса точно никак не проверяются.
Например, у меня брикнулся чип после заливки бинарников, хотя утилита после прошивки написала, что всё прошло успешно. Нет никаких гарантий. Можно ошибится с адресом или выбрать не тот бинарник. Поэтому если вы планируете использовать ESP8266 в реальных проектах, лучше заказывать их с запасом, стоят недорого.
В Интернете не раз проскакивала информация, что ESP-8266 невозможно вывести из строя кривой прошивкой.
Мне удавалось. После этого чип даже при повторном переводе в режим заливки образа не откликается на запросы. Пробовал скорость и 9600 и 115200 использовать и разные другие шаманства со всеми возможными утилитами
Если после прошивки ESP-8266 не получается подключиться к модулю на скорости 115200, нужно попробовать скорость 9600. В некоторых прошивках эта скорость выставлена по-умолчанию.
В некоторых случаях из-за качества соединений могут возникать проблемы с синхронизацией. Одно из решений — уменьшить скорость с 115200 до 9600:
- AT+UART_DEF=,,,,
- AT+UART_DEF=9600,8,1,0,0
- AT+UART_DEF=115200,8,1,0,3
В некоторых случаях при переходе на другую скорость отклики от модуля в терминальной программе становятся очень медленными. Пока не разобрался с чем это связано. Помогает сброс к заводским настройкам командой AT+RESTORE.
Цели и причины
Это вторая статья автора об интегральной микросхеме ESP8266, содержащей полнофункциональный 32-битный RISC микроконтроллер и встроенную Wi-Fi схему 802.
11 b/g/n. Первая статья описывала использование Arduino IDE для программирования ESP8266 и содержит важную информацию, которая здесь повторяться не будет. Если вы не читали её, то рекомендуем сделать это.
В интернете нет недостатка в информации об ESP8266; на самом деле, может быть из неё слишком много… неправильной. Разработчики микросхемы, Espressif, по-видимому, решили не только не заниматься производством на стороне, но и избегать непосредственного участия в разработке линейки модулей ESP, которые используют микросхему ESP8266. Вместо этого, они предлагают информацию и услуги поддержки через форум для тех, кто готов с упорством и терпением ходить по лабиринту. Добавление к путанице – это существование другого форума, который, несмотря на то, что назван esp8266.com, не управляется компанией Espressif. Кроме того, существует множество перепродавцов, видеоблоггеров, и писателей, которые также предлагают информацию от качественной до спутанной настолько, что она может быть полностью неправильной.
ESP модули доступны в различных источниках, а прошивки, содержащиеся в чипах ESP8266 на модулях, почти всегда являются устаревшими и часто вызывают подозрения относительно их происхождения. Также иногда подозрительны «обновления» и инструменты, которые доступны в тех же источниках. Следовательно, целью этой статьи является документирование процедуры загрузки последней доступной прошивки непосредственно от Espressif и её установка с использованием инструмента программирования, предоставляемого Espressif.
Подключение оборудования
Чтобы обновить прошивку на любом ESP8266, необходимо правильно подать на него питание и подключить его к компьютеру. Кроме того, необходимо добавить средства сброса микросхемы и перевода её в режим загрузки. На приведенной ниже схеме и фотографии показано рекомендуемое подключение; обратите внимание, что цвета проводов на схеме соответствуют цветам на фотографии. Как вы видите, я буду обновлять прошивку на модуле ESP-01, но ти же самые соединения будут работать и с другими модулями, если используются те же входы/выходы ESP8266, как показано на схеме.
Установка прошивки
Запустите ESP flash download tool и убедитесь, что ни в одном чекбоксе в левом верхнем углу окна GUI не поставлена галка. Введите COM порт, который вы используете, и скорость передачи 115200 в полях ввода в нижней части окна. Обратите внимание, что при вводе данных они записываются в окне журнала.
Подайте питание на свою сборку для программирования ESP и подключите её к компьютеру. Нажмите и удерживайте кнопку Reset, а затем нажмите и удерживайте кнопку Flash. Отпустите кнопку Reset, а затем отпустите кнопку Flash. Нажмите кнопку START окне GUI инструмента прошивки ESP. Программа загрузки флэш-памяти должна проверить ESP8266 в вашей сборке и создать отчет, похожий на тот, что приведен ниже. Нажмите и отпустите кнопку Reset на вашем макете, чтобы выйти из режима прошивки ESP8266 и возобновить нормальную работу.
Окно графического интерфейса ESP Flash Download Tool. Вывод информации о микросхеме ESP8266
Терминальное окно ESP Flash Download Tool.
Вывод информации о микросхеме ESP8266
Обратите внимание, что теперь окно GUI содержит информацию об ESP8266, включая размер флэш-памяти (в примере 8 Мбит), тактовую частоту (в примере 26 МГц) и два MAC-адреса для чипа. Такая же информация содержится в окне журнала.
Затем кликните в окне GUI по чекбоксу с надписью «SpiAutoSet», что заставит инструмент загрузки автоматически выбрать правильные размер флэш-памяти и тактовую частоту.
Теперь нам нужно выбрать файлы для установки в ESP8266 и установить начальный адрес памяти для каждого файла. Чтобы обновить ESP чип, необходимо правильно установить четыре файла. Откройте «Руководство пользователя Espressif IOT SDK» и найдите раздел о записи образов во флэш-память. В версии 1.4 руководства он начинается со страницы 20. Затем найдите подраздел, который описывает версию поддерживаемую Cloud Update (FOTA), и в этом подразделе найдите таблицу о размере флэш-памяти в вашем ESP8266. В этом примере размер флэш-памяти составляет 8 Мбит, что равно 1024 килобайт, следовательно, в таблице 2 на странице 25 руководства содержится информация, необходимая для примера.
Посмотрим на рисунок ниже.
Таблица адресов флэш-памяти для загрузки файлов прошивки ESP8266
Необходимы эти четыре файла: esp_init_data_default.bin, blank.bin, boot.bin и user1.bin. Адрес, по которому должен быть установлен каждый из файлов, отображается рядом с именем файла. Первые три из необходимых файлов находятся в каталоге esp_iot_sdk_v1.4.1_15_10_22, ранее скачанном с bbs.espressif.com, а четвертый расположен в AT_v0.50 bin files. Перейдите туда, где находятся эти загруженные файлы, и скопируйте пути к ним в поля ввода в верхней части окна GUI программы Flash Download Tool; введите правильный адрес для каждого файла в поле рядом с именем файла. Выполните следующие шаги для каждого файла:
- кликните внутри поля ввода «set firmware path»;
- кликните по кнопке … справа от поля ввода;
- перейдите к месту хранения файла и кликните по файлу. GUI автоматически введет путь к файлу в поле ввода;
- введите правильный адрес (из таблицы) для каждого файла.
Обратите внимание, что файлы, которые должны быть загружены, могут быть не такими, как те, что указаны в таблице в этом примере, но будут близки к ним.
Теперь кликните на четыре флажка слева от имени каждого из файлов. Окно графического интерфейса программы Flash Download Tool должно быть похоже на рисунок ниже. Дважды проверьте адреса по таблице.
Настройка параметров прошивки ESP8266 в программе Flash Download Tool
На своем макете прошивки ESP нажмите и удерживайте кнопку Reset, а затем нажмите и удерживайте кнопку Flash. Отпустите кнопку Reset, а затем отпустите кнопку Flash. Нажмите кнопку START окне GUI инструмента прошивки ESP. Должна начаться загрузка, и её прогресс должен быть показан в окне графического интерфейса и окне журнала Flash Download Tool, как показано ниже.
Отображение процесса загрузки прошивки ESP8266 в терминальном окне Flash Download Tool
Как показано выше, успешная операция прошивки флэш-памяти приведет к тому, что все файлы будут отправлены в ESP8266, а COM порт будет закрыт.
Последовательность шагов для прошивки ESP8266
- Подключите модуль к компьютеру согласно схеме подключения в этой статье.
- Запустите монитор последовательного порта. Выполните AT команды AT+RST и AT+GMR для определения текущей версии прошивки и размера памяти модуля. Этот шаг так же позволяет проверить правильность подключения модуля.
- Запустите программу прошивки Flash Download Tools, правильно настройте загружаемые файлы, установите настройки.
- Отключите питание модуля ESP8266.
- Соедините контакт CPIO0 на землю.
- Подайте питание на модуль ESP8266.
- Нажмите в программе прошивки кнопку START
- Дождитесь окончания прошивки модуля. По окончании прошивки появится надпись FINISH зеленого цвета.
- Отсоедините питание модуля ESP8266. Отсоедините землю с контакта CPIO0.
- Включите модуль, запустите монитор последовательного порта. Убедитесь в работоспособности модуля и новой версии прошивки выполнив AT команду AT+GMR.
Что такое OTA программирование ESP8266?
OTA программирование позволяет обновлять/загружать новую программу в ESP8266 с помощью Wi-Fi вместо того, чтобы требовать от пользователя подключить ESP8266 к компьютеру через USB.
Функциональность OTA чрезвычайно полезна в случае отсутствия физического доступа к модулю ESP. Это помогает сократить время, затрачиваемое на обновление каждого модуля ESP при технической поддержке.
Одной из важных особенностей OTA является то, что один центральный объект может отправлять обновления нескольким модулям ESP, использующим одну и ту же сеть.
Единственным недостатком является то, что вам нужно для OTA добавлять дополнительный код в каждый загружаемый скетч, чтобы в следующем обновлении вы смогли снова использовать OTA.
- Установка Python версии 2.7.x. Первый шаг – установите на компьютер Python версии 2.7.x.
- Загрузка базовой OTA прошивки через последовательный интерфейс. Загрузите скетч, содержащий прошивку OTA.
Этот шаг обязателен шаг, чтобы вы могли выполнять следующие обновления/загрузки через беспроводную сеть. - Загрузка нового скетча по воздуху. Теперь вы можете загружать новые скетчи в ESP8266 из Arduino IDE по воздуху.
Чтобы использовать функциональность OTA, вам необходимо установить Python версии 2.7.x, если он еще не установлен на вашем компьютере.
Перейдите на официальный сайт Python и загрузите 2.7.x (конкретный релиз) для Windows (установщик MSI).
Откройте установщик и следуйте указаниям мастера установки.
В разделе настройки Python 2.7.x убедитесь, что включен последний параметр «Add python.exe to Path» (добавить python.exe в путь).
Заводской образ в ESP8266 не поддерживает возможность обновления через OTA. Поэтому вам нужно сначала загрузить на ESP8266 прошивку OTA через последовательный интерфейс.
Этот шаг обязателен для первой прошивки, чтобы вы могли выполнять следующие обновления/загрузки по беспроводной сети.
Дополнение ESP8266 для Arduino IDE поставляется с библиотекой OTA и примером BasicOTA.
Вы можете получить к нему доступ через Файл → Примеры → ArduinoOTA → BasicOTA.
А теперь давайте загрузим новый скетч по воздуху, т.е. через Wi-Fi.
Помните! Вам нужно добавлять код для OTA в каждый загружаемый вами скетч. В противном случае вы потеряете возможность прошивки через OTA и не сможете выполнять следующие загрузки через беспроводную сеть. Поэтому рекомендуется изменять приведенный выше код, включая в него ваш новый код.
В качестве примера мы включим простой скетч Blink в код BasicOTA. Не забудьте изменить переменные SSID и пароля на учетные данные вашей сети.
Изменения в программе BasicOTA выделены номерами строк.
Программируем ESP8266 в Arduino IDE
В предыдущей статье про «народные» WiFi модули я делал обзор купленных почти за $2.6 ES-07 с платами адаптерами.
Сейчас расскажу о программировании модулей в среде Arduino IDE. Заодно в этой статье можно узнать, как сделать часы с синхронизацией времени по NTP протоколу.
Изначально с завода ESP8266 идут с прошивкой от компании Espressif. В данной прошивке реализована работа с WiFi модулем как с модемом, через AT команды, подаваемые в последовательный порт. В таком режиме хорошо управлять ESP-шкой с внешнего контроллера, тем же Arduono, правда интерфейс обмена данными с контроллером, на мой взгляд, довольно тормозной.
Компания Espressif выпускает SDK для этих модулей, позволяющей разрабатывать собственные прошивки. Здесь подробно описано о данном процессе. Здесь все хорошо по возможностям, но довольно сложно по среде разработки и программировании.
Можно воспользоваться готовыми прошивками со встроенными интерпретаторами. Например, в этой статье я экспериментировал с прошивкой NodeMCU, позволяющей реализовывать логику работы модуля на встроенном интерпретаторе LUA. Можно использовать прошивку со встроенным JavaScript. К недостаткам таких прошивок я бы отнес «прожорливость» встроенных интерпретаторов к ресурсам ESP, в первую очередь ОЗУ, медленную работу и небольшое количество готовых библиотек.
Есть еще ряд прошивок, которые позволяют настроить работу модуля через WEB-интерфейс. Например коммерческая HOME-SMART, работа с которой описана мною здесь. Данная прошивка дает быстрый старт на ряд применений, но, к сожалению, никаких возможностей к расширению и созданию собственных алгоритмов работы не имеет. Хотя авторы очень быстро развивают возможности данной прошивки и в новой версии недавно появилась возможность разработки собственных модулей на Си к ней.
И, наконец, я подошел к еще одному способу программирования ESP8266 — из среды Arduino IDE. Мне, реализовавшему десятки проектов в этой среде, такой способ работы очень понравился. К тому же, большая часть библиотек для Arduino, не использующий внутренние порты и прочие аппаратные возможности микроконтроллера, отлично работают и на ESP-модулях. Очень хорошо работа с ESP8266 в среде Ардуино IDE описана в этой статье.
Хочу немного добавить, что купленные мною модули ESP-07 распаянные на платы-адаптеры уже практически готовы к использованию.
Подключаем TX/RX и GND к TTL-USB конвертеру, например, такому. Подключаем питание 3.3В к VCC. Для загрузки прошивки GPIO0 присоединяем к земле. Собственно и все. Подключить GPIO0 и RESET к данному конвертеру у меня не получилось, но это оказалось не сильно нужно. При подсоединенном GPIO0 к земле ESP находится в режиме загрузки прошивки во флэш-память, но после загрузки происходит запуск программы без отсоединения данного GPIO. Это позволяет вполне комфортно отлаживать свою программу. Нужно перед загрузкой только перезагрузить модуль передергиванием питания или кратковременно подав на вывод RESET на землю. Я припаял для этого специальную кнопку
На снимке виден еще и припаянный конденсатор, так как были подозрения неустойчивой работы ESP-шки от пульсаций по питанию. Два последних модуля вполне стабильно работают без этого конденсатора.
Итак модуль подключен, среда настроена. Для ES07 все настройки ESP8266 ставятся «по умолчанию»:
Источники
- https://sprut.
ai/client/article/1545 - https://habr.com/ru/post/394535/
- https://ArduinoPlus.ru/programmnoe-obespechenie-esp8266-na-arduino-ide/
- https://www.bizkit.ru/2018/12/25/11272/
- https://radioprog.ru/post/212
- https://remotexy.com/ru/help/esp8266-firmware-update/
- https://radioprog.ru/post/885
- http://samopal.pro/esp8266-4/
Краткий справочник по ESP8266 — Последняя документация MicroPython
Доска Adafruit Feather HUZZAH (атрибуция изображения: Adafruit).
Ниже приведен краткий справочник по платам на базе ESP8266. Если это ваш первый раз работая с этой платой, сначала прочтите следующие разделы:
- Общая информация о порте ESP8266
- Руководство по MicroPython для ESP8266
Установка MicroPython
См. соответствующий раздел руководства: Начало работы с MicroPython на ESP8266. Он также включает подраздел устранения неполадок.
Общая плата управления
MicroPython REPL подключен к UART0 (GPIO1=TX, GPIO3=RX) со скоростью 115200 бод.
Завершение с помощью табуляции полезно, чтобы узнать, какие методы есть у объекта.
Режим вставки (ctrl-E) удобен для вставки большого фрагмента кода Python в
РЕПЛ.
Машина Модуль :
импортная машина machine.freq() # получить текущую частоту процессора machine.freq(160000000) # установить частоту процессора на 160 МГц
Модуль esp :
импорт esp esp.osdebug(None) # отключить отладочные сообщения поставщика операционной системы esp.osdebug(0) # перенаправить отладочные сообщения операционной системы поставщика на UART(0)
Сеть
Модуль сети :
импортная сеть
wlan = network.WLAN(network.STA_IF) # создаем интерфейс станции
wlan.active(True) # активировать интерфейс
wlan.scan() # сканирование точек доступа
wlan.isconnected() # проверяем, подключена ли станция к точке доступа
wlan.connect('ssid', 'key') # подключиться к точке доступа
wlan.config('mac') # получаем MAC-адрес интерфейса
wlan.
ifconfig() # получить IP/сетевую маску/gw/DNS-адреса интерфейса
ap = network.WLAN(network.AP_IF) # создаем интерфейс точки доступа
ap.active(True) # активируем интерфейс
ap.config(ssid='ESP-AP') # устанавливаем SSID точки доступа
Полезная функция для подключения к локальной сети WiFi:
определение do_connect():
сеть импорта
wlan = сеть.WLAN(сеть.STA_IF)
wlan.active(Истина)
если не wlan.isconnected():
print('подключение к сети...')
wlan.connect('ssid', 'ключ')
пока не wlan.isconnected():
проходить
print('конфигурация сети:', wlan.ifconfig())
После того, как сеть установлена, можно использовать модуль socket .
для создания и использования сокетов TCP/UDP как обычно.
Задержка и синхронизация
Используйте модуль time :
время импорта time.sleep(1) # сон на 1 секунду time.sleep_ms(500) # сон на 500 миллисекунд time.sleep_us(10) # сон на 10 микросекунд start = time.ticks_ms() # получить счетчик миллисекунд delta = time.ticks_diff(time.ticks_ms(), start) # вычислить разницу во времени
Таймеры
Поддерживаются виртуальные (на основе RTOS) таймеры. Используйте класс machine.Timer с идентификатором таймера -1:
от таймера импорта машины Тим = Таймер (-1) tim.init (период = 5000, режим = Timer.ONE_SHOT, обратный вызов = lambda t: print (1)) tim.init (период = 2000, режим = Timer.PERIODIC, обратный вызов = lambda t: print (2))
Период в миллисекундах.
контактов и GPIO
Используйте машину. Класс булавки:
от штифта импорта машины p0 = Pin(0, Pin.OUT) # создать выходной контакт на GPIO0 p0.on() # установить вывод на «включенный» (высокий) уровень p0.off() # установить вывод на "выключенный" (низкий) уровень p0.value(1) # установить вывод на вкл/высокий уровень p2 = Pin(2, Pin.IN) # создать входной контакт на GPIO2 print(p2.value()) # получить значение, 0 или 1 p4 = Pin(4, Pin.IN, Pin.PULL_UP) # включить внутренний подтягивающий резистор p5 = Pin(5, Pin.OUT, value=1) # установить высокий уровень контакта при создании
Доступные контакты: 0, 1, 2, 3, 4, 5, 12, 13, 14, 15, 16, которые соответствуют к фактическим номерам контактов GPIO чипа ESP8266. Обратите внимание, что многие конечные пользователи платы используют собственную специальную нумерацию контактов (например, D0, D1, …). Как MicroPython поддерживает различные платы и модули, физическую нумерацию контактов был выбран как наименьший общий знаменатель. Для сопоставления между платой логических выводов и выводов физического чипа см. в документации к плате.
Обратите внимание, что контакты (1) и (3) являются REPL UART TX и RX соответственно.
Также обратите внимание, что контакт (16) — это специальный контакт (используется для пробуждения из режима глубокого сна).
режим) и может быть недоступен для использования с классами более высокого уровня, такими как
Неопиксель .
Существует машина абстракции более высокого уровня.
Сигнал
который можно использовать для инвертирования булавки. Полезно для подсветки светодиодов с активным низким уровнем
используя on() или значение(1) .
UART (последовательная шина)
См. машина.UART.
от машинного импорта UART
UART = UART (0, скорость = 9600)
uart.write('привет')
uart.read(5) # прочитать до 5 байт
Доступны два UART. UART0 подключен к контактам 1 (TX) и 3 (RX). UART0 есть двунаправленный и по умолчанию используется для REPL. UART1 на контакте 2 (TX) и 8 (RX), однако контакт 8 используется для подключения микросхемы флэш-памяти, поэтому UART1 только для передачи.
Когда UART0 подключен к REPL, все входящие символы на UART(0) идут
прямо на стандартный ввод, поэтому uart.read() всегда будет возвращать None. Использовать
sys.stdin.read(), если необходимо прочитать символы из UART(0)
в то время как он также используется для REPL (или отсоединить, прочитать, а затем снова подключить).
Отсоединенный UART(0) можно использовать для других целей.
Если нет объектов ни в одном из слотов dupterm, когда REPL запущен (при аппаратном или программном сбросе), то UART(0) автоматически подключается. Без этого единственным способом восстановить плату без REPL было бы полностью стереть и перепрошить (что установит boot.py по умолчанию, который прикрепляет REPL).
Чтобы отсоединить REPL от UART0, используйте:
импорт ОС os.dupterm(Нет, 1)
REPL подключен по умолчанию. Если вы отсоединили его, чтобы снова прикрепить он использует:
импорт ОС, машина UART = машина.UART(0, 115200) os.dupterm(uart, 1)
ШИМ (широтно-импульсная модуляция)
PWM может быть включен на всех контактах, кроме контакта (16). Есть одна частота для всех каналов в диапазоне от 1 до 1000 (измеряется в Гц). Обязанность цикл находится в диапазоне от 0 до 1023 включительно.
Используйте машину . Класс PWM :
от импорта машины Pin, PWM pwm0 = PWM(Pin(0)) # создать объект PWM из вывода pwm0.freq() # получить текущую частоту pwm0.freq(1000) # установка частоты pwm0.duty() # получить текущий рабочий цикл pwm0.duty(200) # установить рабочий цикл pwm0.deinit() # отключаем ШИМ на выводе pwm2 = PWM(Pin(2), freq=500, duty=512) # создать и настроить за один раз
АЦП (аналогово-цифровое преобразование)
АЦПдоступен на выделенном выводе. Обратите внимание, что входное напряжение на выводе ADC должно быть в пределах от 0 В до 1,0 В.
Используйте машину. Класс ADC:
из АЦП импорта машины adc = ADC(0) # создать объект ADC на выводе ADC adc.read() # прочитанное значение, 0-1024
Программная шина SPI
Имеется два драйвера SPI. Один реализован программно (bit-banging) и работает на всех контактах, и доступ к нему осуществляется через машину.SoftSPI класс:
от машинного импорта Pin, SoftSPI # построить шину SPI на заданных пинах # полярность - состояние ожидания SCK # фаза=0 означает выборку по первому фронту SCK, фаза=1 означает второй spi = SoftSPI (скорость передачи = 100000, полярность = 1, фаза = 0, sck = контакт (0), mosi = контакт (2), мисо = контакт (4)) spi.init(baudrate=200000) # установить скорость передачи spi.read(10) # прочитать 10 байт на MISO spi.read(10, 0xff) # прочитать 10 байт при выводе 0xff на MOSI buf = bytearray(50) # создаем буфер spi.readinto(buf) # чтение в заданный буфер (в данном случае считывается 50 байт) spi.readinto(buf, 0xff) # прочитать в указанный буфер и вывести 0xff на MOSI spi.write(b'12345') # записать 5 байт в MOSI buf = bytearray(4) # создаем буфер spi.write_readinto(b'1234', buf) # запись в MOSI и чтение из MISO в буфер spi.write_readinto(buf, buf) # записать buf в MOSI и прочитать MISO обратно в buf
Аппаратная шина SPI
Аппаратный SPI быстрее (до 80 МГц), но работает только на следующих контактах:
MISO — это GPIO12, MOSI — это GPIO13, а SCK — это GPIO14. Он имеет то же самое
методы, как класс SPI для битовых ударов, описанный выше, за исключением параметров вывода для
конструктор и инициализация (поскольку они исправлены):
от машинного импорта Pin, SPI hspi = SPI (1, скорость передачи = 80000000, полярность = 0, фаза = 0)
( SPI(0) используется для FlashROM и недоступен для пользователей.
)
Шина I2C
Драйвер I2C реализован программно и работает на всех выводах, и доступ к нему осуществляется через класс machine.I2C (который является псевдоним машины.SoftI2C):
от машинного импорта Pin, I2C # построить шину I2C i2c = I2C (scl = контакт (5), sda = контакт (4), частота = 100000) i2c.readfrom(0x3a, 4) # прочитать 4 байта с периферийного устройства с адресом 0x3a i2c.writeto(0x3a, '12') # запись '12' на периферийное устройство с адресом 0x3a buf = bytearray(10) # создаем буфер размером 10 байт i2c.writeto(0x3a, buf) # записать данный буфер на периферийное устройство
Часы реального времени (RTC)
См. станок.RTC
из машинного импорта RTC РТК = РТК() rtc.datetime((2017, 8, 23, 1, 12, 48, 0, 0)) # устанавливаем конкретную дату и время rtc.datetime() # получить дату и время # синхронизировать с нтп # нужно подключиться к Wi-Fi импортировать ntptime ntptime.settime() # установить дату и время rtc с удаленного сервера rtc.datetime() # получить дату и время в формате UTC
Примечание
Не все методы реализованы: RTC.now() , RTC.irq(обработчик=*)
(с использованием специального обработчика), RTC.init() и RTC.deinit()
в настоящее время не поддерживается.
WDT (сторожевой таймер)
См. станок.WDT.
из машинного импорта WDT # включить ВДТ ВДТ = ВДТ() wdt.feed()
Режим глубокого сна
Подключите GPIO16 к контакту сброса (RST на HUZZAH). Затем следующий код можно использовать для сна, пробуждения и проверки причины сброса:
импортная машина
# настроить RTC.ALARM0, чтобы иметь возможность разбудить устройство
rtc = машина.RTC()
rtc.irq(триггер=rtc.ALARM0, пробуждение=machine.DEEPSLEEP)
# проверяем, не вышло ли устройство из глубокого сна
если machine.reset_cause() == machine.DEEPSLEEP_RESET:
print('Пробудился от глубокого сна')
# установить RTC.ALARM0 на срабатывание через 10 секунд (пробуждение устройства)
rtc.
alarm(rtc.ALARM0, 10000)
# перевести устройство в спящий режим
машина.глубокий сон()
Драйвер OneWire
Драйвер OneWire реализован программно и работает на всех выводах:
от штифта импорта машины
импортировать onewire
ow = onewire.OneWire(Pin(12)) # создаем шину OneWire на GPIO12
ow.scan() # вернуть список устройств на шине
ow.reset() # сбросить шину
ow.readbyte() # прочитать байт
ow.writebyte(0x12) # записать байт на шину
ow.write('123') # запись байтов на шину
ow.select_rom(b'12345678') # выбрать конкретное устройство по его коду ПЗУ
Для устройств DS18S20 и DS18B20 существует специальный драйвер:
время импорта, ds18x20
ds = ds18x20.DS18X20(вл)
ромы = ds.scan()
ds.convert_temp()
время.sleep_ms(750)
для рома в ромах:
печать (ds.read_temp (ПЗУ))
Обязательно установите нагрузочный резистор 4,7 кОм на линию передачи данных. Обратите внимание, что
метод convert_temp() должен вызываться каждый раз, когда вы хотите
попробуй температуру.
Драйвер NeoPixel
Используйте модуль neopixel :
от штифта импорта машины из неопикселя импорт NeoPixel pin = Pin(0, Pin.OUT) # установить GPIO0 для вывода для управления NeoPixels np = NeoPixel(pin, 8) # создаем драйвер NeoPixel на GPIO0 для 8 пикселей np[0] = (255, 255, 255) # делаем первый пиксель белым np.write() # записываем данные во все пиксели r, g, b = np[0] # получаем цвет первого пикселя
Предупреждение
По умолчанию NeoPixel настроен на управление более популярным 800 кГц
единицы измерения. Можно использовать альтернативное время для управления другими (обычно
400 кГц) устройств, пройдя time=0 при построении
Объект NeoPixel .
Для низкоуровневого управления NeoPixel см. machine.bitstream .
Драйвер APA102
Используйте модуль apa102 :
от штифта импорта машины из apa102 импортировать APA102 clock = Pin(14, Pin.OUT) # установить GPIO14 на выход для управления часами data = Pin(13, Pin.OUT) # установить GPIO13 для вывода данных apa = APA102(clock, data, 8) # создаем драйвер APA102 на часы и вывод данных на 8 пикселей apa[0] = (255, 255, 255, 31) # устанавливаем первый пиксель в белый цвет с максимальной яркостью 31 apa.write() # записываем данные во все пиксели r, g, b, яркость = apa[0] # получить цвет первого пикселя
Для вождения APA102 на малых высотах:
импорт esp esp.apa102_write(clock_pin, data_pin, rgbi_buf)
Драйвер DHT
Драйвер DHT реализован программно и работает на всех выводах:
импортная дхт импортная машина d = dht.DHT11(машина.Pin(4)) д.мера() d.температура() # например. 23 (°С) d.влажность() # например. 41 (% относительной влажности) d = dht.DHT22(машина.Pin(4)) д.мера() d.температура() # например. 23,6 (°С) d.влажность() # например. 41,3 (% относительной влажности)
Драйвер SSD1306
Драйвер для монохромных OLED-дисплеев SSD1306.
См. руководство Использование OLED-дисплея SSD1306.
от машинного импорта Pin, I2C
импорт ssd1306
i2c = I2C (scl = контакт (5), sda = контакт (4), частота = 100000)
дисплей = ssd1306.SSD1306_I2C(128, 64, i2c)
display.text('Привет, мир', 0, 0, 1)
дисплей.показать()
WebREPL (интерактивная подсказка веб-браузера)
WebREPL (REPL через WebSockets, доступный через веб-браузер) — это экспериментальная функция доступна в порте ESP8266. Скачать веб-клиент с https://github.com/micropython/webrepl (доступна размещенная версия на http://micropython.org/webrepl) и настройте его, выполнив:
импортировать webrepl_setup
и следуйте инструкциям на экране. После перезагрузки он будет доступен для подключения. Если вы отключили автоматический запуск при загрузке, вы можете запускать настроенный демон по запросу, используя:
импорт вебрепл webrepl.start()
Поддерживаемый способ использования WebREPL — подключение к точке доступа ESP8266,
но демон также запускается на интерфейсе STA, если он активен, поэтому, если ваш
маршрутизатор настроен и работает правильно, вы также можете использовать WebREPL при подключении
к вашей обычной точке доступа в Интернет (используйте метод подключения ESP8266 AP
если вы столкнулись с какими-либо проблемами).
Помимо доступа к терминалу/командной строке, WebREPL также позволяет
передача (как загрузка, так и загрузка). Веб-клиент имеет кнопки для
соответствующие функции, или вы можете использовать клиент командной строки webrepl_cli.py
из репозитория выше.
См. форум MicroPython для других альтернатив, поддерживаемых сообществом для передачи файлов на ESP8266.
Поиск и устранение неисправностей | OpenMQTTGateway v1.5.1
Ошибка компиляции/сборки
Этот значок (открывается в новом окне) показывает состояние компиляции мастера и этого (открывается в новом окне) для ветки разработки.
Если вы видите зеленый значок, это означает, что компиляция кода прошла успешно с конфигурацией, указанной в документы/platformio.ini .
Проверьте версию вашей среды IDE, версию плат, версию библиотек, прежде чем отправлять вопрос или проблему.
В частности, убедитесь, что библиотеки, представленные на странице выпуска (открывается в новом окне), находятся в вашей «папке Sketchbook»/библиотеках, если вы используете Arduino IDE.
Если вы получаете одну или несколько из следующих ошибок:
ошибка: «WIFI_STA» не была объявлена в этой области
ошибка: «класс WiFiClass» не имеет члена с именем «режим»
ошибка: нет соответствующей функции для вызова 'WiFiClass::macAddress()
У вас есть конфликт между библиотекой Wi-Fi по умолчанию Arduino и библиотекой ESP32. Чтобы решить эту проблему, вы должны переместить или удалить библиотеку Wi-Fi Arduino (папка Arduino Sketchbook\libraries\WiFi), чтобы среда IDE могла использовать библиотеку из ESP32 (папка Arduino Sketchbook\hardware\espressif\arduino-esp32\libraries). \Wi-Fi) Дополнительная информация по этой теме (открывается в новом окне)
Не удается отправить или получить РЧ или ИК
→ Проверьте напряжение источника питания с помощью мультиметра, оно должно быть 5 В (может быть 12 В для эмиттера FS1000A), обратите внимание, что на NodeMCU V3 Vin не подает 5 В, в отличие от NodeMCU V1
→ Проверьте электропроводку
→ Чтобы устранить проблемы с OpenMQTTGateway или вашим домашним контроллером, попробуйте напрямую загрузить базовые примеры из библиотек (например, SendDemo (opens new window) для RF или IRSendDemo для IR) и выполнить их.
Если это не работает, это означает, что у вас в основном проблема, связанная с вашим оборудованием или из-за используемой версии IDE/библиотеки.
Что касается ИК-излучателя, вы можете заменить его обычным светодиодом и посмотреть, загорается ли он при отправке команды MQTT. активен):
попробуйте с D2 вместо D3
и положи
#define RF_RECEIVER_GPIO 4 // D2 на nodemcu
в config_rf.h
вместо
#define RF_RECEIVER_GPIO 0 // D3 на nodemcu
Исключение видно на последовательном мониторе:
Эй, я получил обратный вызов маллок memcpy 7 Исключение (2):
→ Вы не используете последнее обновление ESP8266 в диспетчере плат, перейдите в Arduino IDE и обновите его, оно должно быть не ниже 2.3.0
Повторяющиеся отключения MQTT и/или команды, отправленные на шлюз, не учитываются
Скорее всего, проблема с сетью, не используйте гостевую сеть, а если проходите через брандмауэр, проверьте его правила. Чтобы отложить проблему шлюза, попробуйте подключиться к локальному брокеру в той же сети.
Вы не видите сообщений, появляющихся на вашем брокере, но они появляются на последовательном мониторе
Это связано со слишком маленьким размером пакета MQTT, откройте User_config.h и установите:
#define mqtt_max_packet_size 1024
Плата Arduino с Ethernet-шилдом w5100 не подключается к сети, пока вы не нажмете кнопку «Сброс». хорошо, если вы подключите Arduino с помощью USB-кабеля к компьютеру/ноутбуку с запущенной Arduino IDE и откроете Serial Monitor, проблема, скорее всего, заключается в плате Ethernet и/или источнике питания, который вы используете. Судя по этому видео (открывается в новом окне), клоны w5100 иногда не могут инициализироваться из-за того, что контакт сброса не удерживался в низком положении достаточно долго. Решение простое — добавьте конденсатор 0,1 мкФ (100 нФ) между контактами переключателя сброса. Вы можете получить более подробную информацию здесь (открывается в новом окне). Но даже с этим исправлением ваша плата может не работать с определенным блоком питания.

ticks_ms() # получить счетчик миллисекунд
delta = time.ticks_diff(time.ticks_ms(), start) # вычислить разницу во времени
PULL_UP) # включить внутренний подтягивающий резистор
p5 = Pin(5, Pin.OUT, value=1) # установить высокий уровень контакта при создании
freq() # получить текущую частоту
pwm0.freq(1000) # установка частоты
pwm0.duty() # получить текущий рабочий цикл
pwm0.duty(200) # установить рабочий цикл
pwm0.deinit() # отключаем ШИМ на выводе
pwm2 = PWM(Pin(2), freq=500, duty=512) # создать и настроить за один раз
init(baudrate=200000) # установить скорость передачи
spi.read(10) # прочитать 10 байт на MISO
spi.read(10, 0xff) # прочитать 10 байт при выводе 0xff на MOSI
buf = bytearray(50) # создаем буфер
spi.readinto(buf) # чтение в заданный буфер (в данном случае считывается 50 байт)
spi.readinto(buf, 0xff) # прочитать в указанный буфер и вывести 0xff на MOSI
spi.write(b'12345') # записать 5 байт в MOSI
buf = bytearray(4) # создаем буфер
spi.write_readinto(b'1234', buf) # запись в MOSI и чтение из MISO в буфер
spi.write_readinto(buf, buf) # записать buf в MOSI и прочитать MISO обратно в buf
datetime() # получить дату и время в формате UTC
OUT) # установить GPIO14 на выход для управления часами
data = Pin(13, Pin.OUT) # установить GPIO13 для вывода данных
apa = APA102(clock, data, 8) # создаем драйвер APA102 на часы и вывод данных на 8 пикселей
apa[0] = (255, 255, 255, 31) # устанавливаем первый пиксель в белый цвет с максимальной яркостью 31
apa.write() # записываем данные во все пиксели
r, g, b, яркость = apa[0] # получить цвет первого пикселя