Skip to content

2. Начало работы

AlexGyver edited this page Mar 2, 2024 · 15 revisions

Начало работы

Платформы, версии

Библиотека должна работать на любой Arduino-совместимой платформе, тестировалась на AVR, ESP8266 v3.1.2, ESP32 v2.0.14 (dev, S2, S3, C3). На старых версиях esp32 (ниже 2.x) не работает!

Arduino IDE

Ссылки для менеджера плат. Рекомендуются актуальные версии:

Platformio

Мой .ini файл для всех платформ. Указана платформа, файловая система и все нужные зависимости:

platformio.ini
[env:d1_mini]
framework = arduino
monitor_speed = 115200
platform = espressif8266
board = d1_mini
upload_speed = 921600
monitor_filters = esp8266_exception_decoder, default
build_type = debug
board_build.filesystem = littlefs
lib_deps =
    knolleary/PubSubClient
    links2004/WebSockets
    ;GyverLibs/GyverHub
    https://github.com/GyverLibs/GyverHub.git
    GyverLibs/StringUtils
    GyverLibs/Pairs
    GyverLibs/GSON

[env:esp32dev]
framework = arduino
monitor_speed = 115200
platform = espressif32
board = esp32dev
upload_speed = 921600
board_build.filesystem = littlefs
lib_deps =
    knolleary/PubSubClient
    links2004/WebSockets
    ;GyverLibs/GyverHub
    https://github.com/GyverLibs/GyverHub.git
    GyverLibs/StringUtils
    GyverLibs/Pairs
    GyverLibs/GSON

[env:esp32cam]
framework = arduino
monitor_speed = 115200
platform = espressif32
board = esp32cam
board_build.mcu = esp32
upload_speed = 921600
board_build.f_cpu = 240000000L
board_build.filesystem = littlefs
lib_deps =
    knolleary/PubSubClient
    links2004/WebSockets
    ;GyverLibs/GyverHub
    https://github.com/GyverLibs/GyverHub.git
    GyverLibs/StringUtils
    GyverLibs/Pairs
    GyverLibs/GSON

[env:esp32-c3]
framework = arduino
monitor_speed = 115200
platform = espressif32
board = esp32dev
board_build.mcu = esp32c3
upload_speed = 921600
board_build.f_cpu = 80000000L
lib_deps =
    knolleary/PubSubClient
    links2004/WebSockets
    ;GyverLibs/GyverHub
    https://github.com/GyverLibs/GyverHub.git
    GyverLibs/StringUtils
    GyverLibs/Pairs
    GyverLibs/GSON

[env:s2_mini]
framework = arduino
monitor_speed = 115200
platform = espressif32
board = lolin_s2_mini
board_build.mcu = esp32s2
board_build.f_cpu = 240000000L
lib_deps =
    knolleary/PubSubClient
    links2004/WebSockets
    ;GyverLibs/GyverHub
    https://github.com/GyverLibs/GyverHub.git
    GyverLibs/StringUtils
    GyverLibs/Pairs
    GyverLibs/GSON

[env:nano328]
framework = arduino
monitor_speed = 115200
platform = atmelavr
board = nanoatmega328new
lib_deps =
    ;GyverLibs/GyverHub
    https://github.com/GyverLibs/GyverHub.git
    GyverLibs/StringUtils
    GyverLibs/Pairs
    GyverLibs/GSON

Зависимости

Для работы GyverHub необходимы библиотеки:

При установке GyverHub из реестра все библиотеки установятся автоматически!

Основные понятия

  • Устройство - микроконтроллер (далее МК) с программой на базе библиотеки GyverHub. МК является сервером, к которому подключаются клиенты
  • Клиент - сайт или приложение GyverHub, которое подключено к устройству
  • Имя сети (префикс) - уникальное имя сети "клиент-устройство", используется клиентом для поиска устройств и по сути является паролем, без которого не получится обнаружить устройство

Минимальный код

Библиотека имеет минималистичный API: для начала работы достаточно создать объект GyverHub, вызвать у него begin() в блоке setup и вызывать tick() в блоке loop. Также нужно создать функцию вида void build(gh::Builder& b) и подключить её через hub.onBuild() - в ней будет собираться панель управления.

#include <GyverHub.h>
GyverHub hub("MyDevices", "ESP8266", "");  // имя сети, имя устройства, иконка

// билдер
void build(gh::Builder& b) {
}

void setup() {
    // подключение к WiFi..
    // настройка MQTT/Serial/Bluetooth..
    hub.onBuild(build); // подключаем билдер
    hub.begin();        // запускаем систему
}

void loop() {
    hub.tick();         // тикаем тут
}

Иконки Font Awesome v5 Solid, бесплатный пак:

  • Список иконок
  • Вставлять в "строку" сам символ (глиф) "" или его код "f6ad"
  • Пустая строка "" - отключить иконку

Настройка WiFi

Для подключения к WiFi роутеру можно использовать стандартный код для ESP:

void setup() {
    WiFi.mode(WIFI_STA);
    WiFi.begin("SSID", "PASS");
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }
    // ...
}

Система может работать и с ESP в режиме точки доступа:

void setup() {
    WiFi.mode(WIFI_AP);
    WiFi.softAP("My Device");
    // ...
}

Настройка MQTT

Для работы через встроенный MQTT нужно указать хост (адрес или IP) и TCP порт, опционально логин-пароль и qos/retain:

config(const String& host, uint16_t port, const String& login = "", const String& pass = "", uint8_t qos = 0, bool ret = 0)
void setup() {
    // настройка на сервер, установленный в приложении по умолчанию
    hub.mqtt.config("test.mosquitto.org", 1883);

    // другие примеры
    hub.mqtt.config(IPAddress(12, 34, 56, 78), 1883);
    hub.mqtt.config("m8.wqtt.ru", 13448, "user", "pass");
}

Настройка Serial/Bluetooth

Библиотека имеет встроенную поддержку Serial/Bluetooth в виде Arduino Stream. К библиотеке можно подключить один Stream-объект, который обеспечивает связь. В большинстве случаев это будет Serial или SoftwareSerial, к которому в случае с Bluetooth подключен Bluetooth модуль по UART. В программе нужно указать его и тип связи, который обеспечивается подключением:

void setup() {
    hub.stream.config(&Serial, gh::Connection::Serial);
    // ...
}
SoftwareSerial bt(3, 4);

void setup() {
    hub.stream.config(&bt, gh::Connection::Bluetooth);
    // ...
}