Esp8266 lib h: скачать и установить библиотеку для проектов

Где скачать библиотеку Esp8266 lib h для своих проектов?

16 марта в 14:18

Публикации /

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

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

Предлагаем кратко ознакомиться с дополнительными источниками функций и программным кодом, используемыми для программирования на Arduino. Библиотека, которая наиболее популярна при создании устройств, Esp8266 lib h, будет рассмотрена подробно. Также читатель найдет информацию о том, как в Arduino установить библиотеку, которая нужна для проекта. Итак, приступаем.

Что такое библиотека в Arduino

Для микроконтроллера Arduino библиотека – важный компонент при создании электронного устройства. Она автоматизирует работу с необходимым модулем. Убедиться в этом можно на примере:

  1. Нужно передать текстовое сообщение на LCD дисплей без использования функций.
  2. Передаем несколько байт, отведенных для функций и данных, используемых в программе. Для этого потребуется значительное время. Кроме того, потребуется выяснить, какой тип у микроконтроллера, который отдает команды дисплею.
  3. К дополнительным сведениям относится суть команд в программе, архитектура памяти, адресные ячейки и назначение регистров. Все эти действия необходимо выполнить путем перечитывания в datasheet.

Теперь сравним ту же операцию, но с подключенной LiquidCrystal_I2C.h. Здесь текстовое сообщение выводится на экран моментально, когда пользователь напечатает в теле программы следующую строчку кода: lcd.print(«my text»).

Нужно выполнить следующие действия, чтобы воспользоваться библиотеками Arduino:

  1. Скачать в одну из папок на персональном компьютере.
  2. Выполнить установку. Лучше заранее выбрать адрес хранения.
  3. При написании программы вначале прописать следующее #include . Среда разработки самостоятельно найдет файл.
  4. Теперь при компиляции видно, что библиотека включена и работает, если не возникнет ошибок.

Виды библиотек

На просторах интернета можно легко найти и скачать дополнительные библиотеки для Arduino. Ниже перечислено несколько источников для скачивания. В дополнительные источники функций и программных частей уже входят драйверы для периферии, функции и методы:

Многие начинающие электронщики нередко задаются вопросом, а кто же разрабатывает библиотеки? Чаще всего разработкой дополнительной «помощницы» занимаются компании, которые выпускают всякую периферию: сенсоры, печатные платы и датчики. Только один из многих, производитель Adafruit, выпустил не меньше 100 библиотек, которые удобно использовать, потому что они подходят ко всем моделям платформы Arduino.

Библиотеки можно разделить на следующие виды:

  • Arduino timer-библиотеки, помогают с функциями времени;
  • визуализаторы датчиков, к таким относится библиотека Arduino json;
  • для создания беспроводного управления, к таким относится esp8266, связь с Arduino обеспечивает протокол mqtt;
  • универсальные или комбинированные, содержат несколько функций, направленных на создание кода различных устройств, к таким относится Arduino библиотека ds1302.

ESP8266 WiFi модуль

Подробно о esp8266 lib h

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

Прошивка помогает реализовать работу с Wi-Fi модулем, выставив его в роли модема, с помощью команд АТ, которые передаются в последовательный порт.

Режим хорош тем, что управление ЕСП-кой осуществляется с помощью внешнего микроконтроллера – Ардуино. Однако некоторые пользователи жалуются на медленную производительность при обмене данных.

Вышепредставленная компания производит SDK специально для работы таких модулей. СДК помогает разрабатывать начинающему электронщику собственные прошивки. Возможности в таком случае огромны, но работать в среде разработки и программировать собственные части сложно.

Однако пользователю доступны готовые прошивки, в которые встроены интерпретаторы. Например, прошивка «NodeMCU» помогает соорудить логику управления модуля, работающего на встроенном интерпретаторе ЛУА. Также будет полезна прошивка, включающая в себя Javascript. Однако у таких прошивок есть ряд минусов:

  • требуется много оперативной памяти для работы встроенных интерпретаторов по отношению к ресурсам ESP;
  • работа растянута и занимает больше времени;
  • мизерное количество для создания электронного устройства.

Где скачать библиотеку Esp8266 lib h

Esp8266 lib h скачать можно на одном из ресурсов, перечисленных в разделе «Виды библиотек».

Самый простой вариант: файлы идут в составе библиотеки «blynk-library», которую лучше скачать по ссылке — https://github.com/blynkkk/blynk-library/releases/tag/v0.5.1.

Вы можете скачать архив «Blynk_Release_v0.5.1.zip» по ссылке выше или на нашем сайте ниже. Не забудьте нажать «download» (означает «скачать» по-русски) на GitHub.com.

Скачать Blynk_Release_v0.5.1.zip

В архиве есть папка BlynkESP8266_Lib, где и лежит библиотека.

Установка библиотеки

Мы уже писали о том, как подключаются библиотеки в Arduino IDE. Алгоритм установки ЕСП8266 такой:

  1. Подключаем usb-ttl к USB.
  2. Подключаем esp8266 к usb-ttl обычным способом. Если отсутствует подключение DTR и RTS, необходимо подсоединить GPIO0 к земле. Затем передернуть питание модуля.
  3. Запускаем бесплатную среду разработки – Arduino IDE.
  4. В появившемся меню кликаем на «Инструменты», далее «Плата», после – «Generic ESP8266 board». Последнее будет находиться на конечной строчке.
  5. В том же меню «Инструменты» кликаем на номер порта, к которому присоединен Юсб-ТТЛ.
  6. Здесь же указываем нужную частоту и вместимость флеш-памяти используемого модуля.
  7. Кликаем «Файл», потом «Образцы» – ESP8266WiFi — WiFiWebServer.
  8. В программном коде прописываем ССИД и пароль от Вай-фай точки.
  9. Нажимаем на кнопку компиляции.
  10. Дожидаемся окончания прошивки.
  11. Возвращаемся в «Инструменты», переходим на «Монитор последовательного порта».
  12. Устанавливаем скорость – 115200.
  13. Наблюдаем за реакцией в терминальном окне.
  14. Если подключение прошло удачно, в терминале появятся 2 строки «WiFi connected» и «Server started».
  15. В конце будет указан IP адрес подключенного модуля ЕСП8266. К примеру,168.1.247.
  16. Откроем новую вкладку любого браузера и напишем – «http://192.168.1.247/gpio/1».
  17. Следует понаблюдать за действиями последовательного порта – если подключенная светодиодная лента загорится, значит, все работает.

Напоминаем, что вы можете стать автором проекта Arduino+, со всеми условиями вы можете познакомиться на странице Сотрудничество.

Источник: https://ArduinoPlus.ru/gde-skachat-esp8266-lib-h/

Разрабатываем крутой GUI на esp8266 с библиотекой uGFX

В многих проектах для esp8266 я использую TFT экран с тачскрином. В зависимости, от проекта интерфейс может быть простым, например, текстовая консоль, выводящая лог работы приложения или просто график изменения входного сигнала. А в некоторых — сложный GUI, с несколькими экранами, графическими кнопками, строками ввода текста и даже виртуальной клавиатурой.

В этой статье хочу поделиться опытом, как можно подключить экран с тачскрином к esp8266 и реализовать графический интерфейс в среде Arduino.

Видео-тизер:

Итак, приступим

Первая часть, аппаратная

Выбор модели экрана

Сейчас на рынке, читай на aliexpress, продается огромное количество моделей TFT экранов — разных размеров, с разными разрешениями, с тачскрином или без.

TFT экраны отличаются способом подключения — есть экраны, которые подключаются по шине SPI, а другие по параллельной шине.

Минимально, для подключения по шине SPI, требуется всего 4 сигнальных вывода (GPIO), а для подключения по параллельной шине — минимум 10 (и это без учета контроллера тачскрина). Подключение по параллельной шине дает большую скорость, т.к. за один такт передается сразу 8 бит информации, а у SPI — только 1 бит.

Однако, у подключения по SPI, есть другое преимущество — меньшее количество задействованных выводов. У esp8266 количество требуемых выводов является решающим фактором: количество свободных GPIO ограничено.

Я бы выделил такие наиболее популярные модули TFT экранов с SPI интерфейсом:

  1. ili9341, 320×240, 2.4″, с контроллером тачскрина ссылка
  2. ili9225, 176×220, 2.2, без тачскрина ссылка
  3. st7735, 160×128, 1.8″, без тачскрина ссылка

Подключение TFT экрана к esp8266

У большинства SPI экранов похожие аппаратные интерфейсы, и поэтому, они подключаются к процессору по одинаковой схеме, с точностью до небольших вариаций в названиях. В табличке ниже список выводов — и описание что они обозначают:

ВыводАльтернативные названияПодключение к esp8266Назначение
SCLK SCK,SCL GPIO14 Тактирование шины SPI
SDA MOSI GPIO13 Передача данных SPI от процессора к экрану
CS SS GPIO5 Выбор чипа (к шине SPI может быть подключено несколько устройств)
A0 RS,D/C GPIO15 Выбор режима передача данных/команд
RESET RST VCC Аппаратный сброс
SDO MISO Передача данных от экрана к процессору (опционально)
LED+ LED VCC Включение подсветки
VSS VCC VCC Питание экрана, +3.3V
GND GND Земля

Выводы RESET и LED+ можно подключить к шине питания +3.3 вольта, однако, при желании их можно подключить к GPIO esp8266, и получить возможность программного управления сбросом и подсветкой экрана.

Выводы CS и A0 можно подключить к любым удобным GPIO esp8266.

Самая важная часть — выводы SCLK и SDA. Они отвечают за передачу данных по шине SPI. Их нужно подключить к соответствующим выводам контроллера SPI esp8266. Это GPIO14 и GPIO13 соответственно.

Если у экрана есть тачскрин контроллер, его так же следует подключить к шине SPI:

ВыводПодключение к esp8266Назначение
T_CLK GPIO14 Тактирование шины SPI
T_DIN GPIO13 Передача данных SPI от процессора к контроллеру тачскрина
T_CS GPIO16 Выбор чипа (к шине SPI может быть подключено несколько устройств)
T_DO GPIO12 Передача данных от контроллера к процессору
T_IRQ GPIO4 Признак нажатия на тачскрин

Обратите внимание, выводы esp8266 GPIO14 и GPIO13 подключены параллельно к экрану и контроллеру тачскрина. Дело в том, что к шине SPI можно подключить несколько устройств. Выбор устройства происходит установкой уровня логического 0 на выводе CS требуемого устройства.

Схема подключения экрана ili9341 к esp8266

Часть вторая, программная

Мы определились с экраном и схемой подключения, теперь пора перейти к программной части. В первую очередь — выберем графическую библиотеку, с которой мы будем реализовывать GUI.

Попробовав несколько десятков библиотек, я остановил свой выбор на библиотеке uGFX. На мой взгляд, это одна из лучших графических библиотек для микроконтроллеров.

Читайте также:  Делаем с помощью микроконтроллера arduino датчик движения

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

У библиотеки есть качественная документация, доступная на сайте проекта.

Большим плюсом библиотеки uGFX является развитый движок рендеринга шрифтов, с поддержкой utf8. В комплект входит программа генерации шрифтов из ttf файлов, в том числе и с кириллицей.

Библиотека кросс-платформенна — это означает, что GUI часть приложения можно собрать под любой процессор, в том числе и esp8266.

Драйвера экранов и тачскринов подключаются выделенными модулями, и в случае, если нужных драйверов нет в комплекте — их можно реализовать самостоятельно.

Кроме этого, в комплект uGFX входит uGFX studio — WYSWIG редактор интерфейса, в котором можно визуально подготовить макеты интерфейсы, а uGFX studio автоматически сгенерирует код и разложит ресурсы. К сожалению, сейчас uGFX studio еще в статусе beta версии, и чтобы получить бетку, нужно написать разработчикам на форуме.

И, финальная вишенка на торт: GUI код приложения, можно собрать под десктоп (Linux/Windows/OSX) и посмотреть прямо на компьютере, как будет выглядеть интерфейс.

Подключаем uGFX к проекту

Библиотека использует свою систему сборки, которая «из коробки» не поддерживается системой сборки Arduino. Но это ограничение можно обойти. В качестве reference использовал эту статью

Текст ниже предполагает, что среда для разработки Arduino с поддержкой esp8266 уже установлена и настроена. Если еще нет, то про установку и настройку среды можно прочитать в этой статье на geektimes

Теперь по шагам, как подключить библиотеку:

  1. Найти папку Libraries от среды Arduino. В зависимости от платформы, она может располагаться в таких местах:

  • OSX — /Users//Documents/Arduino/libraries/
  • Windows — C:Users\My DocumentsArduinoLibraries
  • Linux -/home//Documents/Arduino/libraries

  1. Склонировать или скопировать uGFX в папку Libraries. Скачать можно отсюда — версию, с уже встроенными кириллическими шрифтами.

  2. Сделать библиотеку «обертку», которая будет содержать реализацию ввода/вывода для драйверов экрана и тачскрина, а так же подключать к сборке нужные нам компоненты uGFX. Для этого, в папке Libraries нужно создать подпапку uGFXesp, с примерно таким содержимым:

uGFXesp
├── library.properties
└── src ├── board_ILI9341.cpp ├── board_ILI9341.h ├── gdisp_lld_config.h ├── gdisp_lld_ili9341.c ├── gfxconf.h ├── gfxlib.c ├── gmouse_lld_ADS7843.c ├── gmouse_lld_ADS7843_board.cpp └── gmouse_lld_ADS7843_board.h

  • Файл library.properties — это описание библиотеки для среды Arduino:

Содержимое library.propertiesname=uGFXesp
version=1.0.0
author=Oleg V. Gerasimov
maintainer=Oleg V. Gerasimov
sentence=UI features of esp
paragraph=This library add support screen and touch panel of esp board
Requires uGFX library
category=Display
architectures=esp8266
includes=gfx.h
url=http://github.com

  • Файлы gdisp_lld_ili9341.c, gmouse_lld_ADS7843.c, gdisp_lld_config.h — подключение к сборке драйверов контроллера тачскрина и экрана.
  • Файл gfxlib.c — подключение к сборке самой библиотеки
  • Файл gfxconf.h — конфигурация, с которой собирается библиотека uGFX — в нем можно включать/отключать требуемую функциональность
  • Файл board_ILI9341.cpp — реализация ввода/вывода по SPI для драйвера экрана. Остновлюсь на нем подробнее, это самая важная часть интеграции графической библиотеки с esp8266

Содержимое board_ILI9341.cpp#include
#include extern «C» {
#include «user_interface.h»
}
// Pin, к которому подключен вывод RS экрана
#define ESP_LCD_RS 15
// Pin, к которому подключен вывод CS экрана
#define ESP_LCD_CS 5 // Скорость работы SPI с экраном в момент инициализации: 1мбит/сек
#define SPILOWSPEED 1000000 // Скорость работы SPI с экраном: 32мбит/сек
#define SPIHIGHSPEED 32000000 static SPISettings spiSettings(SPILOWSPEED, MSBFIRST, SPI_MODE0); // Включить режим команд экрана
static inline void cmdmode() { digitalWrite(ESP_LCD_RS, 0);
} // Включить режим данных экрана
static inline void datamode() { digitalWrite(ESP_LCD_RS, 1);
} // Инициализация драйвера
extern «C» void esp_lcd_init_board(void) { SPI.begin(); pinMode(ESP_LCD_CS, OUTPUT); digitalWrite(ESP_LCD_CS, 1); pinMode(ESP_LCD_RS, OUTPUT); datamode();
} // Пост-инициализации драйвера — переводим SPI на нормальную скорость
extern «C» void esp_lcd_post_init_board(void) { spiSettings = SPISettings(SPIHIGHSPEED, MSBFIRST, SPI_MODE0);
} static int aquire_count = 0; // Захватить шину SPI: устанавливаем 0 на выводе CS и начинаем транзакцию SPI на выбранной скорости
extern «C» void esp_lcd_aquirebus(void) { if (!aquire_count++) { SPI.beginTransaction(spiSettings); digitalWrite(ESP_LCD_CS, 0); }
} // Отпустить шину SPI: устанавливаем 1 на выводе CS и завершаем транзакцию SPI
extern «C» void esp_lcd_releasebus(void) { if (aquire_count && !—aquire_count) { digitalWrite(ESP_LCD_CS, 1); SPI.endTransaction(); }
} // Передать команду
extern «C» void esp_lcd_write_index(uint16_t cmd) { cmdmode(); SPI.write(cmd); datamode();
} // Передать байт данных
extern «C» void esp_lcd_write_data(uint16_t data) { SPI.write(data);
}

  • Файл gmouse_lld_ADS7843_board.cpp — реализация ввода/вывода по SPI для драйвера экрана. Так же остановлюсь на нем подробнее:

Содержимое gmouse_lld_ADS7843_board.cpp#include
#include extern «C» {
#include «user_interface.h»
} // Pin, к которому подключен вывод TC_IRQ контроллера тачскрина
#define ESP_TC_IRQ 4
// Pin, к которому подключен вывод CS контроллера тачскрина
#define ESP_TC_CS 16 // Скорость работы SPI с контроллером тачскрина 2Мбит/сек
#define SPISPEED 2000000 static SPISettings spiSettings(SPISPEED, MSBFIRST, SPI_MODE0); // Инициализация драйвера
extern «C» int esp_gmouse_init_board() { pinMode(ESP_TC_CS, OUTPUT); digitalWrite(ESP_TC_CS, 1); pinMode(ESP_TC_IRQ, INPUT); return 1;
} // Проверка состояния вывода TC_IRQ (признак нажатия на тачскрин)
extern «C» int esp_getpin_pressed() { // В этом месте мы сбрасываем watch dog, что бы esp8266 не перезагрузился system_soft_wdt_feed (); // Флаг нажатия инверсный return digitalRead (ESP_TC_IRQ)==0;
} static int aquire_count = 0; // Захватить шину SPI: устанавливаем 0 на выводе CS и начинаем транзакцию SPI на выбранной скорости
extern «C» void esp_aquire_bus() { if (!aquire_count++) { SPI.beginTransaction(spiSettings); digitalWrite(ESP_TC_CS, 0); }
} // Отпустить шину SPI: устанавливаем 1 на выводе CS и завершаем транзакцию SPI
extern «C» void esp_release_bus() { if (aquire_count && !—aquire_count) { digitalWrite(ESP_TC_CS, 1); SPI.endTransaction(); }
}
// Считать значение координаты из контроллера
extern «C» uint16_t esp_read_value(uint16_t port) { SPI.write (port); return SPI.transfer16(0);
}

Собственно, на этом подготовительные работы закончены. Набор файлов исходников есть на гитхабе

Теперь подготовка закончена, приступим к разработке программы или скетча с красивым и удобным GUI.

Разрабатываем скетч с GUI

В прошлой статье я написал про «умный» удлинитель для новодней елочки. GUI у скетча состоит из двух экранов

  • заставка с елочкой
  • экран с кнопками включения/выключения гирлянд:

Ниже по тексту несколько «снипетов» из кода, как реализовано GUI в этом проекте:

Определение переменных// Окно контейнер
GHandle ghContainerMain;
// Кнопки
GHandle ghButton1,ghButton2,ghButton3,ghButton4,ghButtonAll,ghButtonVoice,ghButtonTree;
// Картинки
gdispImage ballImg,bearImg,candleImg,microphoneImg,treeImg,bigTreeImg,lightsImg;
// Слушатель событий
GListener glistener; // Кастомная функция отрисовки кнопки с картинкой и подписью
extern «C» void gwinButtonDraw_ImageText(GWidgetObject *gw, void *param);

Функция инициализации GUIvoid guiCreate(void) { gfxInit(); // Создаем «слушателя» события geventListenerInit(&glistener); geventAttachSource(&glistener, ginputGetKeyboard(0), 0); gwinAttachListener(&glistener); // Устанавливаем дефолтные стили GUI gwinSetDefaultFont(gdispOpenFont(«DejaVuSans16»)); gwinSetDefaultStyle(&WhiteWidgetStyle, FALSE); gwinSetDefaultColor(HTML2COLOR(0x000000)); gwinSetDefaultBgColor(HTML2COLOR(0xFFFFFF)); // Загружаем картинки, они должны находиться в файловой системе SPIFFs gdispImageOpenFile(&ballImg, «ball.bmp»); gdispImageOpenFile(&bearImg, «bear.bmp»); gdispImageOpenFile(&candleImg, «candle.bmp»); gdispImageOpenFile(&microphoneImg, «music.bmp»); gdispImageOpenFile(&treeImg, «tree.bmp»); gdispImageOpenFile(&lightsImg, «lights.bmp»); gdispImageOpenFile(&bigTreeImg, «bigtree.bmp»); // Создаем сами элементы GUI GWidgetInit wi; gwinWidgetClearInit(&wi); wi.g.x = 0; wi.g.y = 0; wi.g.width = 176; wi.g.height = 220; wi.g.show = TRUE; ghContainerMain = gwinContainerCreate(0, &wi, 0); wi.g.parent = ghContainerMain; wi.customDraw = gwinButtonDraw_ImageText; wi.customStyle = 0; wi.customParam = &bigTreeImg; wi.g.x = 0; wi.g.y = 0; wi.text = «»; ghButtonTree = gwinButtonCreate(0, &wi); wi.g.show = FALSE; wi.customParam = &ballImg; wi.g.width = 88; wi.g.height = 73; wi.text = «Шарики»; ghButton1 = gwinButtonCreate(0, &wi); wi.customParam = &candleImg; wi.g.x = 88; wi.g.y = 0; wi.text = «Свечки»; ghButton2 = gwinButtonCreate(0, &wi); wi.customParam = &bearImg; wi.g.x = 0; wi.g.y = 73; wi.text = «Мишки»; ghButton3 = gwinButtonCreate(0, &wi); wi.customParam = &lightsImg; wi.g.x = 88; wi.g.y = 73; wi.text = «Огоньки»; ghButton4 = gwinButtonCreate(0, &wi); wi.customParam = &treeImg; wi.g.x = 0; wi.g.y = 146; wi.text = «Все»; ghButtonAll = gwinButtonCreate(0, &wi); wi.customParam = &microphoneImg; wi.g.x = 88; wi.g.y = 146; wi.text = «Музыка»; ghButtonVoice = gwinButtonCreate(0, &wi);
}
Обработка событийstatic bool screenSaver = false;
// Переключение экрана между кнопками и скринсэвером
void switchScreen (bool flag) { gwinSetVisible (ghButton1,flag); gwinSetVisible (ghButton2,flag); gwinSetVisible (ghButton3,flag); gwinSetVisible (ghButton4,flag); gwinSetVisible (ghButtonAll,flag); gwinSetVisible (ghButtonVoice,flag); gwinSetVisible (ghButtonTree,!flag); screenSaver = !flag;
} static unsigned long timeLastActivity =0;
void loop() { unsigned long now = millis(); // Проверяем наличие событий от библоитеки GEvent* pe = geventEventWait(&glistener, 2); if (pe && pe->type == GEVENT_GWIN_BUTTON) { GEventGWinButton *we = (GEventGWinButton *)pe; if (we->gwin == ghButton1) {/* Действие по кнопке */} if (we->gwin == ghButton2) {/* Действие по кнопке */} if (we->gwin == ghButton3) {/* Действие по кнопке */} if (we->gwin == ghButton4) {/* Действие по кнопке */} if (we->gwin == ghButtonAll) {/* Действие по кнопке */}; if (we->gwin == ghButtonVoice) {/* Действие по кнопке */}; if (we->gwin == ghButtonTree) {switchScreen (true); startRecognize();} timeLastActivity = now; } // Проверяем если ничего не нажимали 10 секунд, то запускаем скринсэйвер if (!screenSaver && now — timeLastActivity > 10000) { switchScreen (false); } delay (10);
}

Как результат — разумное количество строчек кода дает полноценный, и на мой вкус, красивый GUI. На гитхабе полная версия скетча

Исходники на гитхабе: сам скетч

Реализация отрисовки графиков

Tetris

Исходники на гитхабе: tetris

исходники скетча с первого видео

Итого, в этой статье у нас получилось сделать удобное и красивое GUI решение, с использованием доступных в Open Source библиотек.

Источник: https://habr.com/post/346276/

Библиотеки Ардуино

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

Рано или поздно, любой ардуинщик сталкивается с необходимостью использования той или иной библиотеки. Ведь использование готового кода сильно сокращает время на программирование.

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

Что такое библиотеки в Arduino?

Библиотека ардуино – это некий программный код, хранящийся не в скетче, а во внешних файлах, которые можно подключить к вашему проекту.

В библиотеке хранятся различные методы и структуры данных, которые нужны для упрощения работы с датчиками, индикаторами, модулями и другими компонентами.

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

Сегодня создано огромное количество библиотек, которые можно легко найти и скачать в интернете.  Подавляющее большинство библиотек распространяются по свободной лицензии, поэтому необходимости в поиске «пиратских» версий нет. Главное, это научиться искать нужные библиотеки, подходящие к вашей Arduino IDE, подключать их и правильно использовать.

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

Начать знакомство с библиотеками лучше с официального сайта, на котором можно найти внушительный список стандартных модулей и ссылки на официальные библиотеки партнеров.

Список встроенных библиотек (они поставляются вместе с дистрибутивом Arduino IDE):

  • EEPROM
  • Ethernet / Ethernet 2
  • Firmata
  • GSM
  • LiquidCrystal
  • SD
  • Servo
  • SPI
  • SoftwareSerial
  • Stepper
  • TFT
  • WiFi
  • Wire

Официальная страница на сайте Arduino

Подборка библиотек в одном архиве

Библиотеки для экранов, индикаторов и дисплеев

Библиотека I2C

Скачать: https://github.com/g4lvanix/I2C-master-lib

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

Пример использования:

#ifndef I2C_MASTER_H

#define I2C_MASTER_H

void I2C_init (void) – создание объекта, настройка на правильную частоту для шины.

uint8_t I2C_start () – установка соединения с новым устройством.

uint8_t I2C_write() – запись данных на текущее устройство.

uint8_t I2C_read_ack() – считывание байта с устройства, запрос следующего байта.

Библиотека  LiquidCrystal

Скачать: https://github.com/mk90/LiquidCrystalRus

Стандартная библиотека, установленная в Arduino IDE. Предназначена для управления жидкокристаллическими дисплеями LCD.

Пример использования:

#include . Также, чтобы не ошибиться при написании, можно подключить через меню Sketch — Import Library – LiquidCrystal.

Конструктор класса —  LiquidCristal(…). Аргументами являются rs, rw, en, do…d7. Первые 3 соответствую выводам сигналов RS, RW и Enable. Выводы d соответствуют номерам шин данных, к которым подключен дисплей.

void begin(cols, rows) – метод, который инициализирует интерфейс дисплея. Аргументами являются количество знаков в строке (cols) и число строк (rows). Этот метод должен задаваться первым.

void createChar(num, data) – метод, необходимый для создания пользовательских символов.

Библиотека UTFT

Скачать: https://github.com/amperka/UTFT

Стандартная библиотека, необходимая для работы Ардуино с TFT экранами разных типов. Все поддерживаемые дисплеи представлены в сопроводительном документе с библиотекой.

Пример использования:

#include<\p>

UTFT(); — создание экземпляра UTFT.

textRus(char*st, int x, int y); — метод, позволяющий выводить строку из указателя. Например, char *dht = «Температура,С»;

textRus(string st, int x, int y); — вывод строки с указанием в параметре. Например, g.textRus(«Температура, С», 0, 20);

Библиотека LedControl

Скачать: https://github.com/wayoda/LedControl

Позволяет управлять семисегментными дисплеями, объединять массив из светодиодов в одну матрицу.

Пример использования:

#include<\p>

LedControl  lc1= LedControl( );

— требуется для инициализации библиотеки. Должна состоять из четырех аргументов – номера пинов, к которым подключен дисплей (первые 3 аргумента) и количество подключенных чипов.

writeArduinoOn7Segment() – отображение на дисплее всех чисел от 0 до 15. Использует функции setChar() для символов a и d и setRow() для создания макета пропущенных символов.

LedControl.shutdown() – отключение изображения.

setIntensity() – контроль яркости.

Библиотеки для работы с датой и временем ардуино

Библиотека RTClib

Скачать: https://github.com/adafruit/RTClib

Библиотека для работы с часами реального времени, упрощающая взаимодействие с Ардуино.

Пример использования:

#include<\p>

RTC_DS1307 RTC; — выбор датчика (в данном случае DS1307).

rtc.adjust(DateTime( Date, Time)); — настройка времени и календаря.

dayOfTheWeek () – вывод дня недели. Аргумент от 0 до 6, 0 – воскресенье.

Библиотека Timelib

Скачать: https://github.com/PaulStoffregen/Time

Позволяет Ардуино получать информацию о дате и времени в данный момент.

Пример использования:

#include<\p>

Time(); — создание экземпляра.

setTime (t); — установка времени. Аргумент t – час, минута, секунда, день, месяц и год.

timeStatus(); — показывает, установлено ли время.

adjustTime(adjustment); — настройка времени.

Библиотека Ds1307

Скачать: https://github.com/PaulStoffregen/DS1307RTC

Библиотека для удобного взаимодействия часов DS1307 с Ардуино c использованием библиотеки Wire.

Пример использования:

#include<\p>

class DS1307RTC – создание объекта DS1307.

SetTime() – установка времени.

get() – считывает RTC, возвращает полученную дату в формате POSIX.

Set(time_t t) – запись даты в RTC

Библиотека DS 3231

Скачать: https://github.com/rodan/ds3231

Предназначена для управления датой и временем в модуле ds3231.

#include «ds3231.h»

DS3231  Clock(SDA, SCL); — создание объекта DS3231, подключение к линии тактирования и линии данных.

getTime(); — считывание даты и времени с часов.

setDate(date, mon, year); — установка даты.

Системные библиотеки ардуино

Библиотека EEPROM

Скачать: https://github.com/aterentiev/EEPROM2

Стандартная библиотека. Предназначена для работы с энергонезависимой памятью (запись данных, их чтение).

Пример использования:

#include<\p>

EEPROM.read(); — создание объекта, считывание байта по адресу из энергонезависимой памяти.

EEPROM.write(address, value)– запись байта в энергонезависимую память.

EEPROM.put() – запись строк чисел с плавающей запятой.

EEPROM.get() – чтение строк и чисел с плавающей запятой.

Библиотека SoftwareSerial

Скачать: https://github.com/PaulStoffregen/SoftwareSerial

Библиотека, которая позволяет реализовывать последовательные интерфейсы с любых цифровых пинов. Также позволяет создавать несколько последовательных портов, которые работают на скорости до 115200 бод.

#include<\p>

SoftwareSerial mySerial(RX, TX) – создание объекта, аргументы — выводы, к которым подключены RX и TX.

Serial.begin( ); — устанавливает скорость порта для связи ардуино и компьютера.

mySerial.overflow() – проверка входного буфера на переполнение.

Библиотека Math

Скачать: http://www.nongnu.org/avr-libc/user-manual/group__avr__math.html

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

Пример использования:

#include<\p>

Math(); — создание экземпляра Math.

Serial.print(«cos num = «); — возвращает косинус числа.

Serial.println (fmod (double__x, double__y)); — возвращает числа по модулю.

Библиотека Scheduler

Скачать: https://www.arduino.cc/en/Reference/Scheduler

Предназначена для работы с Arduino Due, позволяет работать в режиме многозадачности. Пока является экспериментальной библиотекой.

Пример использования:

#include<\p>

Scheduler; — создание экземпляра.

Scheduler.startLoop() – позволяет добавить функцию, которая будет выполняться вместе с loop().

yield() – позволяет передать управление другим задачам.

Библиотеки серво моторов и шаговых двигателей

Библиотека Servo

Скачать: https://github.com/netlabtoolkit/VarSpeedServo

Стандартная библиотека. Необходима для управления серводвигателями  и часто используется в робототехнических проектах с манипуляторами.

Пример использования:

#include<\p>

Servo myservo; — создание объекта для серводвигателя..

myservo.attach(); — номер выхода, к которому подключен серводвигатель.

myservo.write(180, 30, true); — движение на 180 градусов, скорость 30, ожидание окончания движения.

Библиотека Stepper

Скачать: https://www.arduino.cc/en/Reference/Stepper?from=Tutorial.Stepper

Небходима для управления шаговым униполярным и биполярным двигателем.

#include<\p>

const int stepsPerRevolution =  ; — количество шагов, за которое двигатель проходит полный поворот.

Stepper myStepper = Stepper(steps, pin1, pin2) – создает экземпляр класса с указанным количеством шагов и выводами, к которым подключается двигатель.

Библиотеки датчиков ардуино

Библиотека DHT

Скачать: https://github.com/adafruit/DHT-sensor-library

Библиотека, которая позволяет считать данные с температурных датчиков DHT-11 и DHT-22.

#include < DHT.h>

DHT dht(DHTPIN, DHT11); — инициализирует датчик (в данном случае DHT11).

dht.begin(); — запуск датчика.

float t = dht.readTemperature(); — считывание текущего значения температуры в градусах Цельсия.

Библиотека DallasTemperature

Скачать: https://github.com/milesburton/Arduino-Temperature-Control-Library

Предназначается для работы с датчиками Dallas. Работает совместно с библиотекой OneWire.

#include<\p>

DallasTemperature dallasSensors(&oneWire); — передача объекта oneWire для работы с датчиком.

requestTemperatures() – команда считать температуру с датчика и

положить ее в регистр.

printTemperature(sensorAddress); — запрос получить измеренное значение температуры.

Библиотека Ultrasonic

Скачать: https://github.com/JRodrigoTech/Ultrasonic-HC-SR04

Обеспечивает работу Ардуино с ультразвуковым датчиком измерения расстояния HC-SR04.

#include<\p>

Ultrasonic ultrasonic (tig , echo) – объявление объекта, аргументы – контакт Trig и контакт Echo.

dist = ultrasonic.distanceRead(); — определение расстояния до объекта. Агрумент – сантиметры(СМ) или дюймы (INC).

Timing() – считывание длительности импульса на выходе Echo, перевод в необходимую систему счисления.

Библиотека ADXL345

Скачать: https://github.com/adafruit/Adafruit_ADXL345

Предназначается для работы с акселерометром ADXL345.

Пример использования:

#include<\p>

ADXL345_ADDRESS – создание объекта, указание его адреса.

ADXL345_REG_DEVID  — идентификация устройства.

ADXL345_REG_OFSX – смещение по оси Х.

ADXL345_REG_BW_RATE – управление скоростью передачи данных.

Библиотека BME280

Скачать: https://github.com/adafruit/Adafruit_BME280_Library

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

Пример использования:

#include<\p>

BME280_ADDRESS  — создание объекта BME280, указание его адреса.

begin(uint8_t addr = BME280_ADDRESS); — начало работы датчика.

getTemperature – получение измеренной температуры.

getPressure – получение измеренного давления.

Библиотека BMP280

Скачать: https://github.com/adafruit/Adafruit_BMP280_Library

Требуется для работы с датчиком атмосферного давления BMP280.

Пример использования:

#include<\p>

BMP280_CHIPID – создание экземпляра, указание его адреса.

getTemperature(float *temp); — получение измеренной температуры.

getPressure(float *pressure); — получение измеренного значения давления.

Библиотека BMP085

Скачать: https://github.com/adafruit/Adafruit-BMP085-Library

Требуется для работы с датчиком давления BMP085.

Пример использования:

#include<\p>

Adafruit_BMP085 bmp; — создание экземпляра BMP085.

dps.init(MODE_ULTRA_HIGHRES, 25000, true); — измерение давления, аргумент 25000 – высота над уровнем моря (в данном случае 250 м. над уровнем моря).

dps.getPressure(&Pressure); — определение давления.

Библиотека FingerPrint

Скачать: http://iarduino.ru/file/263.html

Требуется для работы со сканером отпечатков пальцев.

Пример использования:

#include<\p>

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); — объявление объекта Finger. Параметр – ссылка на объектр для работы с UART, кокторому подключен модуль.

finger.begin();  – инициализация модуля отпечатков пальцев.

Func_sensor_communication(); — вызов модуля отпечатков пальцев.

Библиотеки коммуникации

Библиотека Wire

Скачать: https://github.com/czukowski/Wire.h

Требуется для работы с двухпроводным интерфейсом I2C.

Пример использования:

#include<\p>

Wire.begin() – инициализация библиотеки, подключение к шине I2C.

Wire.requestFrom() – запрос мастером байтов от ведомого устройства.

Wire.beginTransmission() – начало передачи на ведомое устройство.

Библиотека Irremote

Скачать: https://github.com/z3t0/Arduino-IRremote

Требуется для работы ардуино с ИК приемником.

Пример использования:

#include<\p>

IRrecv irrecv(RECV_PIN); — пин, к которому подключен ИК приемник.

SetPinAndButton(int ir1,int ir2,int pin) – позволяет настроить определенный выход на срабатывание при заданных значениях ir1, ir2.

Библиотека GSM

Скачать: https://github.com/jt5/GSM

Источник: https://ArduinoMaster.ru/biblioteki-arduino/skachat-biblioteki-arduino/

Установка и подключение библиотек Arduino

Стандартные библиотеки Arduino хранятся в папке:

«C:Program Files (x86)Arduinolibraries»

Дополнительные библиотеки устанавливаются в папку:

«C:Users*Имя Пользователя*DocumentsArduinolibraries»

В вашем случае эти пути могут быть другими из-за другой буквы основного жесткого диска и другого имени пользователя. Если у вас установлена 32х битная операционная система то папка «Program Files (x86)» будет называться «Program Files».

Установка библиотек Arduino

Установить библиотеки в Arduino IDE очень просто. Можно сделать это двумя способами. Через интерфейс программы или копированием скачанной библиотеки в папку «libraries». Рассмотрим подробнее оба варианта:

Установка библиотек через Arduino IDE

Первый вариант — это установка библиотек Ардуино из официального репозитория. Для этого необходимо запустить Arduino IDE, в верхнем меню выбрать «Скетч -> Подключить библиотеку -> Управлять библиотеками».

Установка библиотек ардуино

После этого откроется окно со списком доступных библиотек. Для того что бы найти нужную библиотеку можно воспользоваться поиском или выбрать необходимый раздел. Для установки библиотеки необходимо выбрать ее из списка, нажав на название, и кликнуть по появившейся кнопке «Установить».

Библиотеки Arduino установить

Второй вариант — это установка библиотеки из скачанной .zip папки. Через интерфейс Arduino IDE это можно сделать всего за пару кликов. В верхнем меню программ выбираем «Скетч -> Подключить библиотеку -> Добавить .ZIP библиотеку». Откроется окно файлового менеджера, где необходимо выбрать папку или .zip архив с вашей библиотекой.

Еще один способ установки библиотек Ардуино

Вы можете просто перенести папки библиотек по пути:

«C:Program Files (x86)Arduinolibraries»

После того как вы добавили свои библиотеки необходимо перезапустить Arduino IDE. Теперь вы можете использовать сторонние библиотеки в своих проектах.

Подключение библиотеки Arduino

Мало установить библиотеку. Для использования ее необходимо подключить в скетч. Сделать это очень просто. Можно в начале скетча вручную написать подобную строчку:

Обратите внимание, что после этой инструкции не ставится точка с запятой. Так же можно подключить библиотеку ардуино через меню программы Arduino IDE. «Скетч -> Подключить библиотеку -> Название необходимой библиотеки». После этого в начало вашего скетча автоматически добавится нужная строчка. Теперь вы можете использовать библиотеки Arduino в своих проектах.

Источник: https://all-arduino.ru/rabota-s-bibliotekami-arduino/

ESP8266 — простейшее приложение

Попробуем написать простейшее приложение для SoC ESP8266 с помощью экосистемы PlatformIO.

В качестве «железной» части удобно взять NodeMCU любой версии или любую другую плату основанную на модуле ESP12E.

Я предполагаю, что вы уже установили себе PlatformIO.

Создание проекта

Создадим каталог для нашего будущего приложения и перейдём в него:mkdir esp-simple
cd esp-simple

Далее создадим шаблон проекта с помощью PlatformIO:platformio init -d ./ -b esp12e —ide vscode

Здесь мы указываем команду init — создать новый проект или удалить существующий.

Ключи:

  • -d ./ — каталог, в котором следует создать проект. В данном случае каталог текущий и ключ можно было не указывать.
  • -b esp12e — для какой отладочной платы мы создаём проект.

    В данном случае — для абстрактного модуля ESP12E.

  • —ide vscode — этот ключ указывает команды создать дополнительные файлы для работы с конкретной IDE. Я использую VS Code, но это не принципиально.

Быструю подсказку по команде всегде можно получить указав ключ -h.

pio init -h Usage: pio init [OPTIONS] Options: -d, —project-dir DIRECTORY -b, —board ID —ide [atom|clion|codeblocks|eclipse|emacs|netbeans|qtcreator|sublimetext|vim|visualstudio|vscode] -O, —project-option TEXT —env-prefix TEXT -s, —silent -h, —help Show this message and exit.

<\p>

Но вернёмся к новосозданному проекту. После выполнения команды pio init мы получили подробный отчёт, о результате выполнения.The current working directory /home/ivan/Projects/esp-simple will be used for project.

You can specify another project directory via
`platformio init -d %PATH_TO_THE_PROJECT_DIR%` command. The next files/directories have been created in /home/ivan/Projects/esp-simple
platformio.

ini — Project Configuration File
src — Put your source files here
lib — Put here project specific (private) libraries Project has been successfully initialized!
Useful commands:
`platformio run` — process/build project from the current directory
`platformio run —target upload` or `platformio run -t upload` — upload firmware to embedded board
`platformio run —target clean` — clean project (remove compiled files)
`platformio run —help` — additional information

Были созданы:

  • Файл platform.ini содержащий необходимую для проекта конфигурацию.
  • Каталог src для исходных кодов вашего приложения.
  • Каталог lib для специфичных для проекта библиотек отсутствующих в реестре библиотек PlatfromIO.

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

Если заглянуть в файл platformio.ini, то увидим минимально необходимые настройки проекта.[env:esp12e]
platform = espressif8266
board = esp12e
framework = arduino

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

Первый код

Создадим в каталоге src/ файл Main.cpp со следующим содержимым:#include void setup() { pinMode(LED_BUILTIN, OUTPUT);
} void loop() { digitalWrite(LED_BUILTIN, LOW); delay(100); digitalWrite(LED_BUILTIN, HIGH); delay(900);
}

Те кто уже имел дело с Arduino наверняка узнали полезнейшую вещь — мигалку светодиодом. Этакий «Hello world» в мире электроники.

Скомпилируем его:pio run

И если всё было сделано правильно, то увидим много информации о процессе сборки:[Thu Sep 28 17:56:26 2017] Processing esp12e (platform: espressif8266; board: esp12e; framework: arduino)
———————————————————————————————————
Verbose mode can be enabled via `-v, —verbose` option
Collected 23 compatible libraries
Looking for dependencies…
No dependencies
Compiling .pioenvs/esp12e/src/Main.o
… очень много информации о сборке …
Linking .pioenvs/esp12e/firmware.elf
Calculating size .pioenvs/esp12e/firmware.elf
text data bss dec hex filename
221232 888 29408 251528 3d688 .pioenvs/esp12e/firmware.elf
Building .pioenvs/esp12e/firmware.bin

Такие длинные простыни вы будете получать не каждый раз, а только при первой сборке, изменении файла platformio.ini или после выполнения команды pio run -t clean, поскольку сборщику приходится собрать объектные файлы из всех необходимых исходников.

В дальнейшем сборщик пересобирает только изменённые файлы.

Готовый к прошивке файл у нас попал в скрытую служебную директорию .pioenvs/esp12e/firmware.bin и может быть от туда без труда скопирован для дальнейшего распространения. Наличие чётко определённого места очень удобно, особенно по сравнению с Arduino IDE, где приходится играть в квест «Найди куда я собрал бинарник в этот раз».

Прошивка железа

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

Процесс прошивки не сложнее процесса сборки, главное не забыть подключить плату к компьютеру по USB (ну или по последовательному порту, если у вас собственная разработка без преобразователя USB->Serial).pio run -t upload

После запуска этой команды пойдёт процесс загрузки:[Thu Sep 28 18:08:40 2017] Processing esp12e (platform: espressif8266; board: esp12e; framework: arduino)
———————————————————————————————————
Verbose mode can be enabled via `-v, —verbose` option
Collected 23 compatible libraries
Looking for dependencies…
No dependencies
Looking for upload port…
Auto-detected: /dev/ttyUSB0
Uploading .pioenvs/esp12e/firmware.bin
Uploading 226272 bytes from .pioenvs/esp12e/firmware.bin to flash at 0x00000000
…………………………………………………………………….. [ 36% ]
…………………………………………………………………….. [ 72% ]
……………………………………………………. [ 100% ]
==== [SUCCESS] Took 25.99 seconds ====<\p>

На платах подобных NodeMCU как правило установлена схема сброса и перевода SoC ESP8266 в режим загрузчика и в этом случае загрузка пройдёт автоматически.

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

Для этого следует подтянуть выход GPIO0 к земле через резистор 1-10 Ком, и произвести сброс контроллера кратковременной подачей низкого уровня на вход RESET.

После этого модуль готов к прошивке.

Если же у вас голый модуль ESP12E или ему подобный, то помните, что для нормальной работы модуля вывод CH_PD должен быть подтянут к питанию через резистор 1-10 Ком, вывод GPIO15 должен быть подтянут к земле через резистор 1-10 Ком.

Скорость загрузки

Поскольку прошивка для ESP8266 даже в таком минимальном варианте получается достаточно тяжелой загрузка длится долго. В моём случае почти 26 секунд.

Поправить это достаточно просто. Дело в том, что по умолчанию скорость последовательного порта при загрузке устанавливается 115200 baud, но сам ESP8266 прекрасно работает и на скорости 921600 baud, что в восемь раз выше скорости по умолчанию.

Для явного указания скорости загрузки добавьте в platform.ini в конец секции [env:esp12e] строчку:upload_speed = 921600

После этого соберите приложение заново pio run и прошейте устройство pio run -t upload.

У меня после этого время загрузки сократилось до 12.8 секунд. Это меньше чем в 2 раза, а ожидали 8!

Но следует иметь в виду, что на скорость загрузки влияет не только скорость канала обмена данными но и скорость записи во Flash-память устройства, устойчивать канала связи — на больших скоростях могут быть потери пакетов или сам микроконтроллер не будет успевать обрабатывать всё свалившееся на него счастье.

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

СкоростьВремя

921600 12.8
460800 10.5
230400 15.8
115200 25

В общем сложно дать единый рецепт по выбору скорости. В некоторых случаях (длинные провода например), может потребовать ещё больше снизить скорость.

Порт загрузчика

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

Для того, что бы помочь ему с выбором, можно указать порт явно прописав в platformio.ini какое устройство необходимо.upload_port = /dev/ttyUSB1

Или указать диапазон возможных имён последовательных портов, на которых следует искать ESP8266.; Любой порт имя которого начинается с /dev/ttyACM
upload_port = /dev/ttyACM*

Для пользователей Windows:; COM5 или COM7
upload_port = COM[57]

Источник: https://tuxotronic.org/post/esp8266-platformio-simple/

Ссылка на основную публикацию