ESP8266:Прошивки/Arduino/Библиотеки для работы с аддоном ESP8266 для IDE Arduino

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Черновик


Библиотеки для работы с аддоном ESP8266 для IDE Arduino[1]

Эта статья содержит список библиотек для работы с аддоном ESP8266 для IDE Arduino.

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

Библиотека ESP8266WiFi разработана на базе SDK ESP8266 с использованием соглашения о названиях и прочих принципов, использовавшихся при создании Arduino-библиотеки WiFi Shield. Со временем объем WiFi-функций, портированных из SDK в библиотеку ESP8266WiFi, перерос объем функций «родной» Arduino-библиотеки WiFi. В результате разработчики решили создать отдельную страницу о новом функционале, появившемся в ESP8266WiFi.

Ticker

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

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

Есть также библиотека TickerScheduler, которая упрощает использование объекта Ticker и позволяет избежать сброса WDT (от «watchdog timer», что значит «сторожевой таймер»).

EEPROM

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

Если вы хотите выполнить немедленную запись данных на flash-память, то нужно вызывать не EEPROM.write(), а EEPROM.commit(). Функция EEPROM.end() делает то же самое, что и EEPROM.commit(), но также удаляет из оперативной памяти содержимое EEPROM.

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

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

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

SPI

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

По умолчанию контактами для SPI являются...

  • GPIO13 (MOSI)
  • GPIO12 (MISO)
  • GPIO14 (SCLK)

Также есть расширенный режим, позволяющий перенести шину SPI на аппаратные контакты SPI0. Для этого сначала вызовите функцию SPI.begin(), а затем SPI.pins(6, 7, 8, 0). В результате контакты изменятся на...

  • SD1 (MOSI)
  • SD0 (MISO)
  • CLK (SCLK)
  • GPIO0 (HWCS)

Этот режим использует те же контакты, что и контроллер, который считывает из flash-памяти программный код и управляется аппаратным арбитром (у flash-памяти всегда более высокий приоритет). В этом режиме линия CS будет управляться не вами, а самим устройством. У вас нет возможности узнать, когда арбитр дает доступ к шине, поэтому вы не можете управлять линией CS при помощи GPIO-контакта, т.е. вы должны позволить ему управлять линией CS автоматически.

SoftwareSerial

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

Специальные функции чипа ESP8266

Чип ESP8266 поддерживает объект ESP, для которого несколько специальных функций, связанных со спящим режимом, часами реального времени (RTC) и flash-памятью.

  • Функция ESP.deepSleep(microseconds, mode) переключает чип ESP8266 в спящий режим. Для аргумента mode доступны значения WAKE_RF_DEFAULT, WAKE_RFCAL, WAKE_NO_RFCAL и WAKE_RF_DISABLED. Чтобы вывести ESP8266 из спящего режима, контакт GPIO16 должен быть подключен к линии RST.
  • Функции ESP.rtcUserMemoryWrite(offset, &data, sizeof(data)) и ESP.rtcUserMemoryRead(offset, &data, sizeof(data)) позволяют записывать и считывать данные из пользовательской RTC-памяти ESP8266. Общий размер пользовательской RTC-памяти чипа составляет 512 байт, поэтому сумма значений в аргументах offset и sizeof(data) не должна превышать «512». Данные должны быть выровнены под 4 байта. Сохраненные данные могут быть считаны между циклами спящего режима. Впрочем, из-за включения/выключения ESP8266 данные могут быть утеряны.
  • Функция ESP.restart() перезапускает ESP8266.
  • Функция ESP.getResetReason() возвращает строку, описывающую причину последнего сброса (в удобочитаемом формате).
  • Функция ESP.getFreeHeap() возвращает размер свободной памяти.
  • Функция ESP.getChipId() возвращает ID чипа ESP8266 в виде целого 32-битного значения.
  • Функция ESP.getCoreVersion() возвращает строку с версией аддона.
  • Функция ESP.SdkVersion() возвращает версию SDK в виде данных типа char.
  • Функция ESP.CpuFreqMHz() возвращает частоту процессора в виде 8-битного беззнакового целочисленного значения (в МГц).
  • Функция ESP.getSketchSize() возвращает размер скетча, в данный момент загруженного на ESP8266, в виде 32-битного целочисленного значения.
  • Функция ESP.getFreeSketchSpace() возвращает свободное место для загрузки скетча в виде 32-битного целочисленного значения.
  • Функция ESP.getSketchMD5() возвращает строку (с символами в нижнем регистре), содержащую MD5-хэш скетча, в данный момент загруженного на ESP8266.
  • Функция ESP.getFlashChipId() возвращает ID флэш-памяти чипа в виде 32-битного целочисленного значения.
  • Функция ESP.getFlashChipSize() возвращает размер flash-памяти чипа (в байтах), каким его видит SDK (может быть меньше настоящего размера).
  • Функция ESP.getFlashChipRealSize() возвращает настоящий размер flash-памяти (в байтах), основанный на ID flash-памяти чипа.
  • Функция ESP.getFlashChipSpeed(void) возвращает частоту flash-памяти чипа (в Гц).
  • Функция ESP.getCycleCount() возвращает количество командных циклов процессора в момента запуска чипа. Возвращаемое значение имеет вид 32-битного беззнакового значения. Эта функция полезна для точной синхронизации очень коротких действий (вроде тех, что используются при использовании техники «bit-banging»).
  • Функцию ESP.getVcc() можно использовать для измерения питающего напряжения. Для использования этой функции необходимо, чтобы ESP при запуске нужным образом перенастроил АЦП. Для этого добавьте в верхнюю часть скетча строчку...
ADC_MODE(ADC_VCC);

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

Обратите внимание, что по умолчанию АЦП настроен на считывание данных с контакта TOUT при помощи функции analogRead(A0), а функция ESP.getVcc() недоступна.

Запросы mDNS и DNS-SD (библиотека ESP8266mDNS)

Эта библиотека позволяет скетчу отвечать на многоадресные DNS-запросы с доменных имен вроде «foo.local», а также на запросы DNS-SD (последние две буквы – от «service discovery», что значит «обнаружение сервисов»). Более подробно смотрите в скетче-примере, который идет в комплекте с библиотекой.

Запросы SSDP (библиотека ESP8266SSDP)

SSDP – это еще один протокол для обнаружения сервисов, по умолчанию поддерживаемый Windows. Более подробно смотрите в скетче-примере, идущем в комплекте с библиотекой.

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

Эта библиотека реализует простой DNS-сервер, который можно использовать как в стационарном режиме (STA), так и в режиме точки доступа (AP). В данный момент DNS-сервер поддерживает только одно доменное имя, а для всех других доменов он будет отвечать сообщением «NXDOMAIN» (от «non-existent domain», что значит «несуществующий домен») или каким-то другим ответом, который задал сам пользователь. Эта библиотека позволяет клиентам открывать веб-сервер, запущенный на ESP8266, при помощи доменного имени, а не IP-адреса.

Servo

Эта библиотека позволяет управлять радиоуправляемыми сервоприводами. Поддерживается использование до 24 сервоприводов на любом выходном контакте. По умолчанию первые 12 сервоприводов используют таймер Timer0, и в данный момент это никак не мешает другим функциям ESP8266. Сервоприводы после 12-ого используют таймер Timer1, и это может помешать функциям, которые тоже используют этот таймер. Хотя есть радиоуправляемые сервомоторы, которые совместимы с 3,3-вольтовой логикой, на которой работают GPIO-контакты ESP8266, есть и такие, у которых такой совместимости нет (для их использования понадобится дополнительный источник питания, который соответствует их характеристикам). Не забудьте подключить друг к другу заземляющие контакты ESP8266 и линии, питающей сервомотор.

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

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

  • Adafruit_ILI9341 – порт Adafruit ILI9341 для ESP8266
  • arduinoVNCVNC-клиент для Arduino
  • arduinoWebSockets – сервер и клиент WebSocket, совместимые с ESP8266 (RFC6455)
  • aREST – библиотека, позволяющая использовать REST API на ESP8266 и Arduino
  • Blynk – платформа для управления проектами на базе Arduino, Raspberry Pi и пр. при помощи смартфонного приложения (смотрите также на Kickstarter)
  • DallasTemperature – библиотека для температурных датчиков DS18B20, MAX31820 и т.д.
  • DHT-sensor-libraryArduino-библиотека для датчиков температуры и влажности DHT11/DHT22. Если загрузить последнюю версию (1.1.1), никаких изменений в коде не потребуется. Если использовать старую версию, объект DHT нужно инициализировать следующим образом: DHT dht(DHTPIN, DHTTYPE, 15)
  • DimSwitch – дистанционное управление электронными балластами для люминесцентных ламп
  • EncoderArduino-библиотека для энкодеров. Версия 1.4 поддерживает ESP8266
  • esp8266mdns – запросы и ответы mDNS на ESP8266. Другими словами, клиент mDNS или Bonjour на ESP8266.
  • ESPAsyncTCP – асинхронный TCP на ESP8266 и ESP32/31B
  • ESPAsyncWebServer – асинхронный веб-сервер на ESP8266 и ESP32/31B
  • Homie for ESP8266ESP8266-версия Homie (в виде аддона для IDE Arduino); Homie – это соглашение о названиях, используемых в топиках протокола MQTT при работе над проектами в сфере интернета вещей
  • NeoPixel – библиотека Neopixel от Adafruit, теперь с поддержкой ESP8266 (используйте версию 1.0.2 или выше в менеджере библиотек IDE Arduino)
  • NeoPixelBus – библиотека Neopixel, совместимая с ESP8266. Для работы с ESP8266 предназначены ветки DmaDriven или UartDriven. В комплекте – цветовая модель HSL
  • PubSubClient – библиотека для работы с протоколом MQTT (от @Imroy)
  • RTCArduino-библиотека для Ds1307 и Ds3231, совместимая с ESP8266
  • Souliss – фреймворк для технологий «умного дома» на базе Arduino, Android и openHAB
  • ST7735 – библиотека ST7735 от Adafruit, модифицированная для совместимости с ESP8266. Только не забудьте изменить номера контактов в скетче, т.к. они по-прежнему соответствуют процессорам AVR
  • TaskArduino-библиотека для невытесняющей многозадачности. Функционально похожа на библиотеку Ticker, но ее главная особенность – это совместимость с разными моделями Arduino
  • TickerScheduler – простой планировщик для таймера Ticker, позволяющий избежать сброса сторожевого таймера (WDT или «watchdog timer»)
  • Teleinfo – библиотека для работы с французским протоколом Teleinfo, который используется в «умных» электросчетчиках для считывания данных вроде энергопотребления, тарифа и т.д. Это кроссплатформенная библиотека, совместимая с ESP8266, Arduino, Particle и простым C++. Более подробно читайте в блоге автора: по этой ссылке находится отдельный пост, рассказывающий о библиотеке, а по этой – список постов, посвященных библиотеке (все на французском).
  • UFTF-ESP8266 – библиотека для ESP8266, предназначенная для работы с UFTF-дисплеями. На данный момент поддерживаются только дисплеи с интерфейсом SPI (поддержки 8-битного параллельного режима нет). Также поддерживается аппаратный порт ESP8266
  • WiFiManager – управление WiFi-соединением при помощи портала авторизации. При неудачном подключении к WiFi эта библиотека запускает режим точки доступа , а затем – портал авторизации, где можно ввести данные своей WiFi-сети
  • OneWire – библиотека для чипов Dallas/Maxim, работающих через шину 1-Wire
  • Adafruit-PCD8544-Nokia-5110-LCD-Library – порт библиотеки Adafruit PCD8544 для ESP8266
  • PCF8574_ESP – очень простая библиотека для использования I2C-расширителя на 8 GPIO-контактов PCF857/PCF8574A
  • Dot Matrix Display Library 2 – библиотека для работы с простыми и DMD-матрицами 16 х 32 с расстоянием между пикселями P10
  • SdFat-beta – библиотека для работы с SD-картами, поддерживающая длинные имена файлов, программный/аппаратный SPI и многое другое
  • FastLED – библиотека для упрощенного управления светодиодными чипсетами вроде Neopixel (WS2812B), DotStar, LPD8806 и т.д. Включает функции для затухания, градиента, преобразования цвета и т.д.
  • OLED – библиотека для управления OLED-дисплеями, работающими через шину I2C. Тестировалась с 0,96-дюймовыми графическими OLED-дисплеями
  • MFRC522 – библиотека для использования модуля Mifare RC522 для программирования/считывания RFID-карт
  • Ping – пинг дистанционной машины при помощи ESP8266
  • AsyncPing – асинхронный пинг (полная статистика пинга и аппаратный MAC-адрес)

См.также

Внешние ссылки