Esp8266 rtos что это

Немного о программировании ESP8266 на C под FreeRTOS

Тут должна быть КДПВ, но на нее не хватило бюджета.

Замотивировавшись ответом от Tarson на мой комментарий к Программирование и обмен данными с «ARDUINO» по WI-FI посредством ESP8266, решил написать про основы программирования ESP8266 на C под FreeRTOS. Подробности под катом.

Шаг 0 — устройство

Для начала надо обзавестись устройством c ESP8266, желательно, чтобы там был разведен USB to UART, чтобы не пришлось городить программатор. Я свои бесчеловечные опыты провожу на NodeMCU.

Итак, шаг 1 — собираем тулчейн

Для начала надо обзавестись компьютером с установленным на нем дистрибутивом Linux (у меня OpenSUSE Leap). Идем на гитхаб по ссылке тыц, читаем инструкцию по сборке, устанавливаем необходимые зависимости, клонируем репозиторий, и собираем. Я клонировал в /opt/ESP и перед сборкой правил Makefile, выставив переменные:

/.bashrc добавить в PATH путь к бинарникам тулчейна:

Шаг 2 — получаем SDK

Идем на гитхаб (тыньк), читаем инструкции, клонируем (например в /opt/ESP). Далее задаем любимым способом (например через

/.bashrc) переменную окружения ESP8266_SDK_PATH:

Шаг 3 — создаем проект

Заходим в директорию examples в директории с SDK и копируем любой понравившийся пример. Импортируем/открываем проект в любимой среде разработки, мазохисты могут использовать текстовый редактор. Я предпочитаю NetBeans — у него неплохая поддержка C/C++ проектов, в том числе на основе Makefile. Собирается проект с помощью make, прошивается с помощью make flash. В файле local.mk можно настроить параметры для прошивки своего устройства (размер и режим обращения к флеш памяти, например).

Шаг 4 — программируем

Проводим анализ требований, предметной области, составляем ТЗ согласно ГОСТ 34.602-89, после чего можно начинать писать код 🙂 Светодиодами мигать не буду, т. к. их у меня нет, поэтому в качестве HelloWorld будет чтение данных с датчика AM2302 (он же DHT22) и отправка их по протоколу MQTT на сервер.

Для того, чтобы использовать дополнительные модули, например MQTT или DHT, их необходимо добавить в Makefile:

Лирическое отступление по поводу наличия своего кода синхронизации времени по SNTP: в extensions из SDK уже есть такой модуль, но мне он почему-то не понравился (давно было, уже не помню почему), поэтому я тот код нагло скопипастил и доработал под себя.

Работает все просто: при старте контроллера запускается задача инициализации, которая подключается к точке доступа, синхронизирует время по SNTP, запускает задачи измерения температуры с влажностью и отправки данных на сервер, после чего самоубивается. Задачка измерения опрашивает датчик раз в 59 секунд и складывает результаты в очередь, задача отправки запускается раз в 2 минуты, читает данные из очереди и отправляет на MQTT сервер.

Теоретически, можно писать и на C++.

Шаг 5 — заключение, куда же без него

Таким вот нехитрым образом, с помощью языка C и рук с небольшим радиусом кривизны можно запрограммировать контроллер ESP8266. Основное преимущество данного подхода перед скриптовыми решениями (например LUA или MicroPython) в полном контроле над составом и ресурсами прошивки, и возможность впихнуть больше функциональности при ограниченных ресурсах контроллера. Так же есть вариант использования RTOS SDK или NONOS SDK от Espressif, но с первым у меня не срослось, а второй не пробовал использовать. Если кому-то будет интересно, а так же когда сам разберусь, могу написать следующий туториал про OTA (обновление прошивки по воздуху).

Источник

ESP8266 Урок 19. FreeRTOS. UART. Передача данных

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

На данном занятии мы также продолжим тему передачи данных по шине UART, но попытаемся мы передать данные на ПК уже с использованием ОС. В качестве ОС мы будем использовать операционную системы FreeRTOS.

FreeRTOS — многозадачная операционная система реального времени (ОСРВ) для встраиваемых систем. Использование данной ОС позволит нам организовать сразу несколько потоков и в любой момент уничтожить любой из них.

Операционная система реального времени позволяет нам добиться организации процессов, также многозадачности, причём часть работы по данной организации система берёт на себя, но некоторая часть данной организации вопросов также ложится и на разработчика приложения.

С системой FreeRTOS мы с вами уже хорошо знакомы, так как использовали её для написания наших проектов для контроллера STM32. Поэтому теоретическую часть по работе с данной системой мы смело можем пропустить, так как мы уже знаем, что представляют собой такие механизмы данной операционной системы, как семафоры, задачи, очереди и т.д. Тем не менее код для контроллера ESP8266 будет отличаться, так как имена функций, структур, макросов для STM32 мы использовали специфические для используемых библиотек порта для контроллера STM32, а для написания кода для ESP8266 принято использование классического интерфейса. Но разница здесь не столь велика, так что я думаю вместе мы с этим разберёмся без особого труда.

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

Схема для начала у нас будет простейшая – отладочная плата, подключенная к ПК по USB

Esp8266 rtos что это. Смотреть фото Esp8266 rtos что это. Смотреть картинку Esp8266 rtos что это. Картинка про Esp8266 rtos что это. Фото Esp8266 rtos что это

А проект мы создадим из проекта прошлого занятия с именем I2C_LCD2004_REMAP и назовём его UART_TX_RTOS.

С настройкой проекта придётся повозиться, так как для работы с системой FreeRTOS используется совсем другой SDK. За основу был взят официальный комплект ESP8266_RTOS_SDK-2.0.0.

Для использования в наших проектах данного комплекта SDK создадим каталог (или папку) с именем ESP8266_RTOS_SDK в каталоге ESP8266, в котором у нас хранится обычный подключаемый комплект и скопируем в данный каталог содержимое каталога ESP8266_RTOS_SDK-2.0.0 официального комплекта.

Во-первых, во всех путях заменим имя каталога ESP8266_NONOS_SDK на UART_TX_RTOS. Также добавим ещё 2 пути: D:\ESP8266\ESP8266_RTOS_SDK\include\espressif и D:\ESP8266\ESP8266_RTOS_SDK\include\freertos.

В результате получится вот так

Esp8266 rtos что это. Смотреть фото Esp8266 rtos что это. Смотреть картинку Esp8266 rtos что это. Картинка про Esp8266 rtos что это. Фото Esp8266 rtos что это

Сохраним изменения и перейдём к файлу сценария Makefile. Принцип построения данного файла остаётся прежним, только в него было внесено несколько новых переменных, также изменились имена подключаемых библиотек и путей, поэтому не будем его собирать по крупицам, а лучше я сразу дам всё его содержимое

Источник

ESP8266 Урок 20. FreeRTOS. Переходник для LCD 20×4

Продолжаем учиться писать код для микроконтроллера ESP8266 и уже с использованием операционной системы реального времени FREEFTOS, с которой мы начали работу в прошлом занятии.

А на данном уроке мы, используя данную операционную систему, попробуем подключить к нашему контроллеру символьный дисплей разрешением в 4 строки по 20 символов с использованием шины I2C через специальный переходник.

С данным переходником мы знакомы, мы его уже подключали в уроке 10, а также смогли переопределить ножки SDA и SCL в уроке 18.

Теперь мы накопленные знания должны применить уже к использованию данного переходника в системе FreeRTOS, так как дисплей порой нам очень помогает в работе, а работа с ним в операционной системе несколько отличается от работы в автономном режиме.

Схему оставим с переопределёнными контактами из урока 18, хотя бы для того, чтобы не мигал постоянно при обмене по I2C светодиод

Esp8266 rtos что это. Смотреть фото Esp8266 rtos что это. Смотреть картинку Esp8266 rtos что это. Картинка про Esp8266 rtos что это. Фото Esp8266 rtos что это

Проект за основу мы возьмём из прошлого урока с именем UART_TX_RTOS и назовём его I2C_LCD2004_RTOS.

Откроем наш проект в Eclipse и начнём добавлять в проект файлы для работы с переходником.

Чтобы нам полностью не писать данные файлы, добавим их из проекта урока 18 с именем I2C_LCD2004_REMAP. Также мы, благодаря тому, что будем эти файлы изменять, заодно и узнаем их отличие для операционной системы. Это файлы с именами i2c_user.h, lcd.h, i2c_user.c и lcd.c. Скопируем их в соответствующие папки нового проекта inc и src.

Причём в Makefile нам ввиду его универсальности теперь никак подключать эти библиотеки не нужно, они подключатся сами.

Начнем с файла i2c_user.h.

Первым делом удалим подключение данной библиотеки, так как такой в SDK RTOS нет

Источник

Обзор платы NodeMCU ESP8266 и ее использование в Arduino IDE

Интернет вещей (IoT) является одной из самых популярных областей в мире технологий. Физические объекты и цифровой мир связаны сейчас как никогда. Помня об этом, компания Espressif Systems (шанхайская компания по производству полупроводниковых устройств) выпустила крутой микроконтроллер с поддержкой Wi-Fi, ESP8266, по невероятной цене! С помощью него менее чем за 3 доллара можно контролировать и управлять устройством из любой точки мира – идеально подходит практически для любого проекта IoT.

Esp8266 rtos что это. Смотреть фото Esp8266 rtos что это. Смотреть картинку Esp8266 rtos что это. Картинка про Esp8266 rtos что это. Фото Esp8266 rtos что это Характеристики платы NodeMCU ESP8266 и ее использование в Arduino IDE

Модуль ESP-12E

Отладочная плата оснащена модулем ESP-12E, содержащим микросхему ESP8266 с RISC микропроцессором Tensilica Xtensa® 32-bit LX106, который работает с регулируемой тактовой частотой от 80 до 160 МГц и поддерживает RTOS.

Характеристики ESP-12E

Также данный модуль имеет 128 КБ ОЗУ и 4 МБ флеш-памяти (для хранения программ и данных), достаточных, чтобы справиться с большими строками, которые составляют веб-страницы, данными в JSON/XML и всем, что мы сегодня добавляем на устройства IoT.

ESP8266 содержит встроенный приемопередатчик Wi-Fi 802.11b/g/n HT40, поэтому он может не только подключаться к сети Wi-Fi и взаимодействовать с интернетом, но и устанавливать собственную сеть, позволяя другим устройствам подключаться напрямую к нему. Это делает ESP8266 NodeMCU еще более универсальным.

Требования к питанию

Поскольку диапазон рабочего напряжения ESP8266 составляет от 3 В до 3,6 В, данная плата для поддержания постоянного напряжения на уровне 3,3 В поставляется с LDO стабилизатором напряжения. Он может надежно обеспечивать ток до 600 мА, чего должно быть более чем достаточно, поскольку ESP8266 во время радиочастотных передач потребляет до 80 мА. Выход стабилизатора также выводится на выводы на сторонах платы и обозначен как 3V3. Эти выводы можно использовать для подачи питания на внешние компоненты.

Требования к питанию

Питание к ESP8266 NodeMCU подается через встроенный USB-разъем MicroB. В качестве альтернативы, если у вас есть стабилизированный источник напряжения 5 В, можно использовать вывод VIN для непосредственного питания ESP8266 и его периферии.

Предупреждение

ESP8266 требует 3,3 В для питания и логические уровни 3,3 В для связи. Контакты GPIO не допускают напряжение 5 В! Если вы хотите соединить плату со схемами 5 В (или выше), то необходимо реализовать согласование логических уровней.

Периферия и ввод/вывод

ESP8266 NodeMCU имеет в общей сложности 17 выводов GPIO, выведенных на разъемы с обеих сторон отладочной платы. Эти выводы могут использоваться для выполнения различных периферийных задач, в том числе:

Мультиплексируемые выводы ввода/вывода

В ESP8266 используется функция мультиплексирования выводов (несколько периферийных устройств мультиплексируются на один вывод GPIO). Это означает, что один вывод GPIO может действовать как PWM/UART/SPI.

Кнопки и светодиодный индикатор на плате

На плате ESP8266 NodeMCU находятся две кнопки. Одна из них, помеченная как RST, расположенная в верхнем левом углу, представляет собой кнопку сброса, которая, конечно же, используется для сброса микросхемы ESP8266. Другая кнопка, FLASH, в левом нижнем углу – это кнопка загрузки, используемая при обновлении прошивки.

Кнопки и индикаторы

На плате также имеется светодиодный индикатор, который программируется пользователем и подключен к выводу D0 платы.

Последовательная связь

На плате установлен контроллер USB-UART CP2102 от Silicon Labs, который преобразует USB сигнал в сигнал последовательного порта и позволяет компьютеру программировать и взаимодействовать с микросхемой ESP8266.

Последовательная связь

Если на вашем компьютере установлена старая версия драйвера CP2102, рекомендуем выполнить обновление прямо сейчас.

Распиновка ESP8266 NodeMCU

С внешним миром ESP8266 NodeMCU соединяют всего 30 выводов. Ниже показана распиновка отладочной платы.

Esp8266 rtos что это. Смотреть фото Esp8266 rtos что это. Смотреть картинку Esp8266 rtos что это. Картинка про Esp8266 rtos что это. Фото Esp8266 rtos что это Рисунок 6 – Распиновка ESP8266 NodeMCU

Для простоты мы сгруппируем выводы с аналогичными функциями.

Выводы питания – на плате расположено четыре вывода питания, а именно: один вывод VIN и три вывода 3.3V. Если у вас есть стабилизированный источник напряжения 5 В, вывод VIN можно использовать для непосредственного питания ESP8266 и его периферии. Выводы 3.3V – это выходы встроенного стабилизатора напряжения. Эти выводы могут использоваться для подачи питания на внешние компоненты.

GND – это вывод земли отладочной платы ESP8266 NodeMCU.

Выводы I2C используются для подключения всех видов датчиков и периферийных устройств на шине I2C в вашем проекте. Поддерживаются и I2C Master, и I2C Slave. Работа интерфейса I2C может быть реализована программно, а тактовая частота составляет максимум 100 кГц. Следует отметить, что тактовая частота I2C должна быть выше самой низкой тактовой частоты из ведомых устройств.

Выводы GPIO На ESP8266 NodeMCU имеется 17 выводов GPIO, которые можно назначать программно на различные функции, такие как I2C, I2S, UART, PWM, дистанционное инфракрасное управление, светодиодный индикатор и кнопка. Каждый включенный вывод GPIO может быть настроен либо на внутреннюю подтяжку к земле или к шине питания, либо установлен на высокоимпедансное состояние. При конфигурировании на вход для генерирования прерываний процессора он может быть настроен на срабатывание либо по фронту, либо по спаду.

Вывод ADC подает сигнал на имеющийся в NodeMCU, встроенный 10-разрядный прецизионный аналого-цифровой преобразователь последовательного приближения (SAR ADC). С помощью этого АЦП могут быть реализованы две функции: проверка напряжения питания на выводе VDD3P3 и проверка входного напряжения на выводе TOUT (но не одновременно).

Выводы SPI ESP8266 имеет два интерфейса SPI (SPI и HSPI), поддерживающих и ведомый (slave), и ведущий (master) режимы. Эти интерфейсы SPI также поддерживают следующие функции SPI:

Выводы SDIO ESP8266 имеет защищенный цифровой интерфейс ввода/вывода (SDIO, Secure Digital Input/Output Interface), который используется для прямого подключения карт SD. Поддерживаются 4-битный 25 МГц SDIO v1.1 и 4-битный 50 МГц SDIO v2.0.

Выводы PWM На плате имеется 4 канала широтно-импульсной модуляции (PWM). Выход ШИМ может быть реализован программно и использован для управления двигателями и светодиодами. Частотный диапазон ШИМ регулируется от 1000 мкс до 10000 мкс, то есть от 100 Гц до 1 кГц.

Платформы разработки для ESP8266

Теперь перейдем к интересным вещам!

Существует множество платформ разработки, которые могут быть оснащены для программирования ESP8266. Вы можете использовать Espruino – JavaScript SDK и прошивка, эмулирующая Node.js, или использовать Mongoose OS – операционную систему для устройств IoT (рекомендуемая платформа от Espressif Systems и Google Cloud IoT), или использовать комплект разработки программного обеспечения (SDK), предоставляемый Espressif. или любую из платформ, перечисленных на Википедии.

К счастью, крутое сообщество ESP8266 сделало выбор IDE на шаг вперед, создав дополнение к Arduino IDE. Если вы только начинаете программировать для ESP8266, мы рекомендуем начать с этой среды разработки, и ее мы опишем в данном руководстве.

Это дополнение ESP8266 для Arduino IDE основано на работе Ивана Грохоткова и остальной части сообщества ESP8266. Для получения дополнительной информации смотрите репозиторий GitHub ESP8266 Arduino.

Установка ядра ESP8266 на ОС Windows

Давайте приступим к установке ядра ESP8266 Arduino.

Во-первых, на вашем компьютере должна быть установлена последняя версия Arduino IDE (Arduino 1.6.4 или выше). Если у вас ее нет, рекомендуем сейчас обновиться.

Для начала нам нужно обновить менеджер плат с помощью пользовательского URL. Откройте Arduino IDE и выберите ФайлНастройки. Затем скопируйте приведенный ниже URL в текстовое поле Дополнительные ссылки для менеджера плат, расположенное в нижней части окна:

Esp8266 rtos что это. Смотреть фото Esp8266 rtos что это. Смотреть картинку Esp8266 rtos что это. Картинка про Esp8266 rtos что это. Фото Esp8266 rtos что это Рисунок 7 – Установка платы ESP8266 в Arduino IDE с помощью json URL

Отлично. Затем перейдите к Менеджеру плат, выбрав ИнструментыПлатыМенеджер плат. Там, в дополнение к стандартным платам Arduino, должна быть пара новых записей. Отфильтруйте результаты поиска, введя esp8266. Нажмите на эту запись и выберите Установить.

Esp8266 rtos что это. Смотреть фото Esp8266 rtos что это. Смотреть картинку Esp8266 rtos что это. Картинка про Esp8266 rtos что это. Фото Esp8266 rtos что это Рисунок 8 – Установка ядра ESP8266 в менеджере плат Arduino IDE

Определения и инструменты для платы ESP8266 включают в себя полностью новый набор gcc, g++ и других достаточно больших скомпилированных двоичных файлов, поэтому загрузка и установка могут занять несколько минут (заархивированный файл весит

110 МБ). После завершения установки рядом с записью появится надпись INSTALLED. Теперь можно закрыть менеджер плат.

Пример Arduino: мигалка

Чтобы убедиться, что ядро ESP8266 Arduino и NodeMCU правильно настроены, мы загрузим самый простой скетч – The Blink!

Для этого теста мы будем использовать встроенный светодиод. Как упоминалось ранее в этом руководстве, вывод платы D0 подключен к встроенному синему светодиоду и программируется пользователем. Отлично!

Прежде чем мы перейдем к загрузке скетча и игре со светодиодом, мы должны убедиться, что в Arduino IDE выбрана правильная плата. Откройте Arduino IDE и выберите пункт NodeMCU 0.9 (ESP-12 Module) в меню ИнструментыПлата.

Esp8266 rtos что это. Смотреть фото Esp8266 rtos что это. Смотреть картинку Esp8266 rtos что это. Картинка про Esp8266 rtos что это. Фото Esp8266 rtos что это Рисунок 9 – Выбор отладочного модуля NodeMCU в Arduino IDE

Теперь подключите ESP8266 NodeMCU к компьютеру через USB-кабель micro-B. Как только плата будет подключена, ей должен быть назначен уникальный COM-порт. На компьютерах с Windows это будет что-то вроде COM#, а на компьютерах Mac/Linux он будет в виде /dev/tty.usbserial-XXXXXX. Выберите этот последовательный порт в меню Инструменты → Порт. Также выберите скорость загрузки: 115200

Esp8266 rtos что это. Смотреть фото Esp8266 rtos что это. Смотреть картинку Esp8266 rtos что это. Картинка про Esp8266 rtos что это. Фото Esp8266 rtos что это Рисунок 10 – Выбор COM порта в Arduino IDE

Предупреждение

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

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

После загрузки кода светодиод начнет мигать. Возможно, чтобы ваш ESP8266 начал работать со скетчем, вам придется нажать кнопку RST.

Esp8266 rtos что это. Смотреть фото Esp8266 rtos что это. Смотреть картинку Esp8266 rtos что это. Картинка про Esp8266 rtos что это. Фото Esp8266 rtos что это Рисунок 11 – Рабта тестового скетча Blink на ESP8266 NodeMCU

Источник

Esp8266 rtos что это

Версия прошивки ESP8266 на базе нового SDK RTOS производителя чипа. Прошивка использует исходный код от ESP32 и имеет те же особенности и возможности.

Обновление прошивки со старой версии только по кабелю! Рекомендуется очистка бланком (стирание чипа) перед прошивкой.

Ключ PRO используется тот же.

Недостатки и преимущества RTOS прошивки над NoOS:

— Могут работать не стабильно датчики, использующие точные тайминги(ds1820, dht11/22)

Рекомендуется включать опции NVS настройки 2 и Экспорт/Импорт настроек.

Идет портирование и адаптация опций из ESP8266 (старой) и ESP32. Не все опции проверены в работе.

НЕ ПРОВЕРЕНЫ: ADC KEY, IR передатчик, MCP3201, MPR121, UART bridge, VirtualWire 433/315, iButton.

В UART на скорости 115200 отображается отладка, если выбран SDK Debug. В этом случае опции использующие UART использовать затруднительно.

Прошивка чипа через программатор

Прошивка через сторонние флешеры:

Конструктор выдает 4 файла с адресами в имени, по которым требуется их прошить.

Esp8266 rtos что это. Смотреть фото Esp8266 rtos что это. Смотреть картинку Esp8266 rtos что это. Картинка про Esp8266 rtos что это. Фото Esp8266 rtos что это

Или прошить 3 файла по указанным адресам:

Рекомендуется прошить перед прошивкой в зависимости от объема флеш памяти бланк 4mb или бланк 1mb.

Для работы с диском SPIFFS требуется загрузить по адресу 0x8000 файл partitions_two_ota_storage.bin (прошивается по умолчанию).

Esp8266 rtos что это. Смотреть фото Esp8266 rtos что это. Смотреть картинку Esp8266 rtos что это. Картинка про Esp8266 rtos что это. Фото Esp8266 rtos что это

Запуск модуля.

Первоначальная настройка требует запустить режим Safe mode. В эфире должна появится точка доступа WiFi-IoT

Safe mode можно запустить замыканием GPIO rx и tx и перезапуском модуля. Другие способы не поддерживаются, но возможно использовать опцию safe gpio.

После подключения к точке доступа необходимо зайти через браузер по адресу 192.168.4.1 и настроить там параметры доступа к своему роутеру.

Прошивка через OTA или через веб интерфейс.

Функция ОТА сразу включена в прошивку и не выключается.

Обновление прошивки ничем не отличается от других конструкторов проекта.

Требуется зайти на вкладку Firmware update модуля и выбрать варианты обновления:

Esp8266 rtos что это. Смотреть фото Esp8266 rtos что это. Смотреть картинку Esp8266 rtos что это. Картинка про Esp8266 rtos что это. Фото Esp8266 rtos что это

Esp8266 rtos что это. Смотреть фото Esp8266 rtos что это. Смотреть картинку Esp8266 rtos что это. Картинка про Esp8266 rtos что это. Фото Esp8266 rtos что это

Ошибки обновления по OTA

Если на главной ошибка:

Не забываем, что в UART можно посмотреть более точную причину и состояние обновления.

Откат загруженной прошивки

С помощью команды http://[ip адрес]/configpartion?st=x можно переключится на предыдущую прошивку, где x- это номер партиции, на которую нужно переключится (1 или 2). Текущую партицию можно посмотреть в debug.

Режим PRO

Режим PRO дает возможность использовать модуль в полную силу. Активация модуля происходит на вкладке лицензий личного кабинета. Ключ тот же, что и на обычной(NoOS) прошивке ESP8266.

Отладочная информация на UART порте

Через UART на скорости 115200 при включенном SDK Debug выводится отладочная информация модуля. Здесь видно все ошибки. При проблемах работы прошивки просьба сообщать эту информацию разработчику.

При включенной отладке использование опций совместно с uart проблематично.

Для вывода данных подходит приложение Putty в режиме uart монитора.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *