Ядро ESP8266 для ArduinoIDE. Установка и обзор библиотек.
В данной статье вы узнаете как добавить поддержку ESP8266 в ArduinoIDE. Также рассмотрены библиотеки входящие в пакет ядра и особенности их использования.
Ядро ESP8266 для ArduinoIDE. Установка и обзор библиотек.
02.05.2024 в 11:26   1213 0
Версия для печати

Ядро ESP8266 для ArduinoIDE. Установка и обзор библиотек.

logo
В данной статье вы узнаете как добавить поддержку ESP8266 в ArduinoIDE, Также мы рассмотрим стандартные библиотеки входящие в пакет ядра и особенности их использования. И дополнительно приведу список сторонних библиотек совместимых с микроконтроллером ESP8266. 

Установка ядра ESP8266 в Arduino IDE

Запустите Arduino IDE и отройте окно настроек. Найдите пункт меню Дополнительные ссылки для менеджера плат и нажмите кнопку рядом с ним. Откроется новое окно.

addcore

Введите http://arduino.esp8266.com/stable/package_esp8266com_index.json в текстовое поле. Вы можете добавить несколько URL-адресов, вводя каждый с новой строки. Нажмите Ок.

Теперь перейдите в Инструменты>Плата>Менеджер плат и введите ESP8266

boardadd

Выберите нужную версию из выпадающего списка и нажмите кнопку Установить

Не забудьте выбрать свою плату ESP8266 в меню Инструменты> Плата после установки.

При желании вы можете использовать ссылку на пакет тестовых сборок ядра: http://arduino.esp8266.com/staging/package_esp8266com_index.json. В нем могут появится некоторые новые функции, но также возможны ошибки в работе и всевозможные баги.

На этом установка ядра ESP8266 для Arduino IDE завершена.

Стандартные библиотеки ядра

В пакете с ядром также устанавливаются и некоторые библиотеки для полноценной работы со всеми функиями ESP8266. Рассмотрим некоторые из них более подробно.

 

WiFi (библиотека ESP8266WiFi)

По функциям в основном похожа на библиотеку WiFi shield. Но есть некоторые отличия:

  • WiFi.mode(m): установка режима WIFI_APWIFI_STAWIFI_AP_STA или WIFI_OFF.
  • вызов WiFi.softAP(ssid)для настройки открытой сети
  • вызов WiFi.softAP(ssid, password)для настройки сети WPA2-PSK (пароль должен быть не менее 8 символов)
  • WiFi.macAddress(mac) для STA, WiFi.softAPmacAddress(mac)для AP.
  • WiFi.localIP() для STA, WiFi.softAPIP()для AP.
  • WiFi.printDiag(Serial) вывод в серийный порт диагностической информации
  • WiFiUDP класс поддерживает отправку и прием многоадресных пакетов по интерфейсу STA. При отправке многоадресного пакета замените udp.beginPacket(addr, port)на udp.beginPacketMulticast(addr, port, WiFi.localIP()). При прослушивании многоадресных пакетов замените udp.begin(port)на udp.beginMulticast(WiFi.localIP(), multicast_ip_addr, port). Вы можете использовать udp.destinationIP(), чтобы указать, был ли полученный пакет отправлен на многоадресный или одноадресный адрес.

WiFiServerWiFiClient, и WiFiUDPведут себя в основном так же, как с библиотекой WiFi shield. Для этой библиотеки предоставлены четыре образца. Вы можете увидеть больше команд здесь: http://www.arduino.cc/en/Reference/WiFi

Ticker

Библиотека для повторного вызова функций с определенным периодом. Включены два примера.

В настоящее время не рекомендуется выполнять блокирующие операции ввода-вывода (сетевые, последовательные, файловые) из функций обратного вызова тикера. Вместо этого установите флаг внутри обратного вызова ticker и проверьте наличие этого флага внутри функции цикла.

Вот библиотека для упрощения использования Ticker и предотвращения сброса WDT: TickerScheduler

EEPROM

Это немного отличается от стандартного класса EEPROM. 
EEPROM.begin(size) Перед началом чтения или записи необходимо выполнить вызов, размер которого соответствует количеству байтов, которые вы хотите использовать. Размер может составлять от 4 до 4096 байт.

EEPROM.write не записывает flash сразу, вместо этого вы должны вызывать EEPROM.commit()всякий раз, когда хотите сохранить изменения во flash. 
EEPROM.end()также сохраняет изменения, но при этом очищает копию EEPROM в ОЗУ.

Библиотека EEPROM использует один сектор флэш-памяти, расположенный сразу после SPIFFS.

Включены три примера.

I2C (Библиотека Wire)

В настоящее время библиотека Wire поддерживает  режим Master примерно до 450 кГц. Перед использованием I2C необходимо установить контакты для SDA и SCL путем вызова Wire.begin(int sda, int scl), т. е. Wire.begin(0, 2)
На ESP-01 контакты имеют другую нумерацию. Это 4 (SDA) и 5 (SCL).

SPI

Библиотека SPI поддерживает весь API Arduino SPI, включая транзакции, включая фазу настройки (CPHA). Настройка полярности синхронизации (CPOL) пока не поддерживается (SPI_MODE2 и SPI_MODE3 не работают).

SoftwareSerial

Порт ESP8266 библиотеки SoftwareSerial, созданный Питером Лерупом (@plerup), поддерживает скорость передачи данных до 115200 бод и многократно увеличивает экземпляры SoftwareSerial. 

API, специфичные для ESP

API, связанные с глубоким сном и сторожевым таймером, доступны в ESP объекте.

ESP.deepSleep(microseconds, mode) переведет чип в глубокий спящий режим.
 mode может принимать одно из следующих значений  WAKE_RF_DEFAULTWAKE_RFCALWAKE_NO_RFCALWAKE_RF_DISABLED. (GPIO16 должен быть привязан к RST, чтобы выйти из глубокого сна.)

ESP.rtcUserMemoryWrite(offset, &data, sizeof(data)) и ESP.rtcUserMemoryRead(offset, &data, sizeof(data))позволяют сохранять данные в пользовательской памяти RTC микросхемы и извлекать их из нее соответственно. Общий размер пользовательской памяти RTC составляет 512 байт, поэтому offset + sizeof (данные) не должны превышать 512. Данные должны быть выровнены по 4 байта. Сохраненные данные могут сохраняться между циклами глубокого сна. Однако данные могут быть потеряны после включения питания чипа.

ESP.restart() перезапускает процессор.

ESP.getResetReason() возвращает строку, содержащую последний reset resaon в удобочитаемом формате.

ESP.getFreeHeap() возвращает размер свободной кучи(heap).

ESP.getChipId() возвращает идентификатор чипа ESP8266 в виде 32-разрядного целого числа.

Для получения информации о флэш-чипе можно использовать несколько API-интерфейсов:

ESP.getFlashChipId() возвращает идентификатор флэш-чипа в виде 32-разрядного целого числа.

ESP.getFlashChipSize() возвращает размер флэш-чипа в байтах, как видно из SDK (может быть меньше фактического размера).

ESP.getFlashChipSpeed(void) возвращает частоту микросхемы флэш-памяти в Гц.

ESP.getCycleCount() возвращает количество циклов команд процессора с момента запуска как 32-разрядный беззнаковый. Это полезно для точного определения времени очень коротких действий, таких как битовый удар.

ESP.getVcc() может использоваться для измерения напряжения питания. ESP необходимо перенастроить АЦП при запуске, чтобы эта функция была доступна. Добавьте следующую строку в начало скетча, чтобы использовать getVcc:

ADC_MODE(ADC_VCC);

В этом режиме вывод TOUT должен быть отключен.

Обратите внимание, что по умолчанию АЦП настроен на чтение с помощью TOUT pin analogRead(A0)и ESP.getVCC()недоступен.

MDNS и DNS-SD-ответчик (библиотека ESP8266mDNS)

Позволяет  отвечать на многоадресные DNS-запросы для доменных имен, таких как "foo.local", и DNS-SD (service dicovery) запросы. Подробности см. в прилагаемом примере.

Ответчик SSDP (ESP8266SSDP)

SSDP - это еще один протокол обнаружения служб, который поддерживается в Windows из коробки. Смотрите прилагаемый пример для справки.

DNS-сервер (библиотека DNSServer)

Реализует простой DNS-сервер, который можно использовать как в режимах STA, так и AP. DNS-сервер в настоящее время поддерживает только один домен (для всех остальных доменов он будет отвечать с помощью NXDOMAIN или пользовательского кода состояния). С его помощью клиенты могут открывать веб-сервер, работающий на ESP8266, используя доменное имя, а не IP-адрес. Подробности см. в прилагаемом примере.

Servo

Эта библиотека предоставляет возможность управления серводвигателями. Она  поддерживает до 24 сервоприводов на любом доступном выходном пине. По умолчанию первые 12 сервоприводов будут использовать Timer0, и это не накладывает никаких ограничений. Если сервоприводов больше, то 12 используется Timer1, и будут задействованы функции, которые его используют. Так как напряжение на пинах ESP8266 3,3 В, большинство сервоприводов не смогут работать и потребуют другого источника питания, соответствующего их спецификациям. Обязательно подключите заземление между ESP8266 и источником питания серводвигателя.

Другие библиотеки (не входят в состав IDE)

Библиотеки, которые не полагаются на низкоуровневый доступ к регистрам AVR, должны работать хорошо. Вот несколько библиотек, которые были проверены на работоспособность:

  • Adafruit_ILI9341 - Порт Adafruit ILI9341 для ESP8266
  • arduinoVNC - VNC-клиент для Arduino
  • arduinoWebSockets - сервер и клиент WebSocket, совместимые с ESP8266 (RFC6455)
  • aREST - библиотека обработчиков API REST.
  • Blynk - простая платформа Интернета вещей для производителей (ознакомьтесь со страницей Kickstarter).
  • Низкая температура
  • DHT-sensor-library - Библиотека Arduino для датчиков температуры и влажности DHT11 / DHT22. Загрузите последнюю версию библиотеки v1.1.1, и никаких изменений не требуется. Более старые версии должны инициализировать DHT следующим образом: DHT dht(DHTPIN, DHTTYPE, 15)
  • DimSwitch - дистанционное управление электронными регулируемыми балластами для ламп дневного света, как при использовании настенного выключателя.
  • Encoder - библиотека Arduino для поворотных энкодеров. Версия 1.4 поддерживает ESP8266.
  • esp8266_mdns - запросы и ответы mDNS на esp8266. Или, чтобы описать это по-другому: клиент mDNS или клиентская библиотека Bonjour для esp8266.
  • ESPAsyncTCP - асинхронная TCP-библиотека для ESP8266 и ESP32 / 31B
  • ESPAsyncWebServer - библиотека асинхронного веб-сервера для ESP8266 и ESP32 / 31B
  • Homie для ESP8266 - Arduino framework для ESP8266, реализующий Homie, соглашение MQTT для Интернета вещей.
  • NeoPixel - библиотека NeoPixel от Adafruit, теперь с поддержкой ESP8266 (используйте версию 1.0.2 или выше из менеджера библиотек Arduino).
  • NeoPixelBus - библиотека Arduino NeoPixel, совместимая с ESP8266. Используйте ветки "DmaDriven" или "UartDriven" для ESP8266. Включает поддержку цвета HSL и многое другое.
  • PubSubClient - библиотека MQTT от @Imroy.
  • RTC - библиотека Arduino для Ds1307 и Ds3231, совместимая с ESP8266.
  • Souliss, умный дом - фреймворк для умного дома на базе Arduino, Android и OpenHAB.
  • ST7735 - Библиотека Adafruit ST7735 модифицирована для совместимости с ESP8266. Просто не забудьте изменить контакты в примерах, поскольку они по-прежнему зависят от AVR.
  • Задача - библиотека Arduino для многозадачной работы. Хотя по функциональности эта библиотека похожа на включенную библиотеку Ticker, она предназначалась для совместимости с Arduino.
  • TickerScheduler - библиотека предоставляет простой планировщик для Tickerпредотвращения сброса WDT
  • Teleinfo - универсальная французская библиотека измерителей мощности для чтения данных мониторинга энергии Teleinfo, таких как потребление, контракт, мощность, период, ... Эта библиотека является кроссплатформенной, ESP8266, Arduino, Particle и simple C ++. Также доступен специальный пост на французском языке в блоге автора и вся связанная с ним информация о Teleinfo.
  • UTFT-ESP8266 - библиотека отображения UTFT с поддержкой ESP8266. На данный момент поддерживаются только дисплеи с последовательным интерфейсом (SPI) (нет 8-разрядного параллельного режима и т. Д.). Также включает поддержку аппаратного SPI-контроллера ESP8266.
  • WifiManager - менеджер соединений Wi-Fi с веб-порталом. Если он не может подключиться, он запускает режим точки доступа и портал конфигурации, чтобы вы могли выбрать и ввести учетные данные WiFi.
  • OneWire - библиотека для 1-проводных микросхем Dallas / Maxim.
  • Adafruit-PCD8544-Nokia-5110-LCD-Библиотека - Порт Adafruit PCD8544 - библиотека для ESP8266.
  • PCF8574_ESP - очень упрощенная библиотека для использования 8-контактного GPIO-расширителя PCF8574/PCF8574A I2C.
  • Библиотека точечных матричных дисплеев 2 - Freetronics DMD и универсальная библиотека точечных матричных дисплеев в стиле 16 x 32 P10
  • SdFat-бета-версия - библиотека SD-карт с поддержкой длинных имен файлов, программного и аппаратного SPI и многое другое.
  • FastLED - библиотека для простого и эффективного управления широким спектром светодиодных чипсетов, таких как Neopixel (WS2812B), DotStar, LPD8806 и многими другими. Включает в себя функции затухания, градиента, преобразования цвета.
  • OLED - библиотека для управления OLED-дисплеями, подключенными к I2C. Протестировано с 0,96-дюймовым OLED-графическим дисплеем.
  • MFRC522 - библиотека для использования считывателя/записи RFID-меток Mifare RC522.
  • Ping - позволяет ESP8266 выполнять пинг на удаленном компьютере.
 
Материал также доступен на моем канале: Яндекс Дзен и в группе ВК
Категория: Обзоры библиотек | Добавил: :, (30.01.2023)
Просмотров: 1213 | Теги: Arduino IDE, ESP8266 ядро, ESP8266 | Рейтинг: 0.0/0
Поделиться:
Всего комментариев: 0
avatar