224   221     15   57    
09.01.2019   Публикации   Теги статьи #

Настройка программного обеспечения ESP8266 в Arduino IDE

В этом материале мы установим программное обеспечение платы ESP8266 на Arduino IDE, установим драйвер устройства для коммуникационного чипа платы и загрузим эскиз Arduino, который подключается к домашней беспроводной сети Wi-Fi.

Для начала работы понадобятся:

  • Компьютер с программным обеспечением Arduino IDE (бесплатно, доступно для Mac/Windows/Linux, к сожалению, в настоящее время веб-редактор не поддерживает ESP8266)
  • Плата ESP8266 (Adafruit Feather HUZZAH ESP8266, WiFi со встроенной зарядкой аккумулятора)
  • Кабель для программирования (micro USB для Adafruit Feather Huzzah, но для некоторых других требуется программирующее устройство FTDI 3 В)
  • Беспроводное подключение к Интернету (не ограничено веб-входом в систему / порталом авторизации или межсетевым экраном) с именем сети и паролем (если применимо)

Добавление поддержки платы ESP8266 в программное обеспечение Arduino

Скачайте и установите последнюю версию программного обеспечения Arduino IDE (скачать) на свой компьютер, если вы этого еще не сделали. Откройте приложение Arduino и перейдите к пункту меню:

Arduino -> Настройки (Arduino -> Preferences)

По умолчанию приложение Arduino поддерживает чипы, используемые на официальных платах Arduino, но не ESP8266.

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

Первым шагом этого процесса является предоставление URL-адреса менеджеру дополнительных плат. В текстовое поле в нижней части окна настроек (см. фото выше) вставьте именно этот текст:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Если поле не было пустым, когда вы открыли окно настроек, возможно, у вас уже установлены некоторые другие платы. Если это так, добавьте содержимое текстового поля к указанному выше URL-адресу, используя запятую для разделения нескольких URL-адресов.

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

Чтобы получить конкретную информацию, перейдите в пункт меню:

Инструменты -> Плата: (название платы) -> Диспетчер плат (Tools -> Board:(board name) -> Boards Manager)

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

Когда вы увидите «esp8266 от сообщества ESP8266» (англ. - esp8266 by ESP8266 Community), вы можете перестать вводить в поиске и нажать «Установить» (Install), чтобы получить последний пакет для платы, установленный внутри вашего приложения Arduino.

В Feather Huzzah имеется удобный USB-коммуникационный чип, но для его нормальной работы требуется бесплатный драйвер. Без него ваша плата не будет отображаться в списке доступных последовательных устройств. Перейдите на страницу SiLabs (Silicon Lab: CP210x USB to UART Bridge VCP Drivers) и скачайте/установите драйвер, соответствующий вашей операционной системе (доступны Mac/Windows/Linux).

Всё получилось? Отлично, давайте протестируем всё на следующем шаге.

Подключение к Wi-Fi

Пришло время добавить код на плату. Откройте новый эскиз Arduino:

Файл -> Создать (File -> New)

Удалите его содержимое по умолчанию. Скопируйте блок кода и вставьте его в пустой эскиз:

#define LED_PIN 0

void setup() {
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_PIN, HIGH);
  delay(500);
  digitalWrite(LED_PIN, LOW);
  delay(500);
}

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

Многие использовали этот блок кода в самый первый день знакомства с Arduino. Скажем так, на самом деле мы говорим "Привет, мир!" еще раз, но на этот раз, мигая встроенным светодиодом платы Adafruit Feather Huzzah (подключенного к контакту 0).

Этот код устанавливает переменную для вывода, подключенного к светодиоду, устанавливает этот вывод в качестве выхода, а затем в цикле повторяет схему включения/выключения.

Подключите плату к компьютеру с помощью USB-кабеля и проверьте свои настройки в меню "Сервис" (Tools).

  • Плата: (Adafruit Huzzah ESP8266) (или название вашей платы, выберите из списка)
  • Размер памяти: "4M (3M SPIFFS)"
  • Частота процессора: "80 МГц"
  • Скорость загрузки: "115200"
  • Порт должен соответствовать вашему последовательному устройству (COMx в Windows, /dev/cu.SLAB_USBtoUART в Mac / Linux), которое будет отображаться только после подключения
  • Программер: USBtinyISP

В английской версии программы выглядеть всё будет так:

  • Board: Adafruit Huzzah ESP8266
  • Flash Size: "4M (3M SPIFFS)"
  • CPU Frequency: "80 MHz"
  • Upload Speed: "115200"
  • Port: COMx
  • Programmer: USBtinyISP

Чтобы запрограммировать вашу плату с помощью эскиза мигающего светодиода, нажмите кнопку «Загрузить» (Upload, круглая кнопка в левом верхнем углу со значком стрелки).

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

Этот процесс будет казаться медленнее, чем вы привыкли, по сравнению с другими Arduino-совместимыми платами. Следите за баром (точки) состояния и терпеливо подтверждайте, что в строке состояния отображается текст «Готово к загрузке» (Done Uploading).

Если вместо этого получите сообщение об ошибке, прочитайте его и попытайтесь выяснить, в чем проблема (выбран неверный порт, плата не подключена, опечатка в коде). Если ваша плата или порт не отображаются в меню, попробуйте эти советы по устранению неполадок и не продолжайте, пока не будут выполнены все шаги настройки программного обеспечения:

  • В меню Arduino -> Настройки (Arduino -> Preferences), есть ли какие-либо случайные символы или ошибки в URL внешних плат?
  • Вы видите пакет платы ESP8266 в менеджере плат?
  • Если вы используете Feather Huzzah, успешно ли вы закончили установку драйвера SiLabs?
  • Если вы используете другую плату, например, с кабелем программирования FTDI, изучали ли вы необходимые шаги установки/настройки? (Некоторые платы требуют комбинации нажатий кнопок для входа в режим загрузчика)
  • Ваш кабель USB data + power или только питание?

Если все идет хорошо, красный светодиод на плате должен мигать. Если вы используете другую плату, ваш светодиод может быть подключен к другому выводу или его может не существовать вообще. Код все равно будет успешно загружен, но может не привести к желаемому результату. Благодаря следующему эскизу, который вы загрузите, ваша плата будет подключена к сети Wi-Fi.

Следующий пример кода поставляется с пакетом плат ESP8266 и уже доступен в вашем программном обеспечении Arduino. Получите доступ к нему, перейдя в:

Файл -> Примеры -> ESP8266WiFi -> WifiClientBasic
File -> Examples -> ESP8266WiFi -> WifiClientBasic

Кроме того, вы можете скачать файл ниже и открыть его с помощью программного обеспечения Arduino. Однако, если вы не видите скетч в меню вашего программного обеспечения, вам, вероятно, также не хватает необходимых библиотек для его компиляции - вернитесь к шагу настройки программного обеспечения и дважды проверьте, что вы установили необходимый пакет.

/*
 *  Этот эскиз отправляет сообщение на сервер TCP
 *
 */

#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>

ESP8266WiFiMulti WiFiMulti;

void setup() {
    Serial.begin(115200);
    delay(10);

    // Начнем с подключения к сети WiFi
    WiFiMulti.addAP("SSID", "passpasspass");

    Serial.println();
    Serial.println();
    Serial.print("Wait for WiFi... ");

    while(WiFiMulti.run() != WL_CONNECTED) {
        Serial.print(".");
        delay(500);
    }

    Serial.println("");
    Serial.println("WiFi connected");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());

    delay(500);
}

void loop() {
    const uint16_t port = 80;
    const char * host = "google.com"; // ip или dns
    
    Serial.print("connecting to ");
    Serial.println(host);

    // Используйте класс WiFiClient для создания TCP-соединений
    WiFiClient client;

    if (!client.connect(host, port)) {
        Serial.println("connection failed");
        Serial.println("wait 5 sec...");
        delay(5000);
        return;
    }

    // Это отправит запрос на сервер
    client.print("Send this data to server");

    // перечитать одну строку с сервера
    String line = client.readStringUntil('\r');
    client.println(line);

    Serial.println("closing connection");
    client.stop();
    
    Serial.println("wait 5 sec...");
    delay(5000);
}
void loop() {
  digitalWrite(LED_PIN, HIGH);
  delay(500);
  digitalWrite(LED_PIN, LOW);
  delay(500);
}

Отредактируйте переменные, описывающие имя (имена) и пароль (пароли) беспроводной сети («SSID» и «passpasspass»). Если в вашей сети нет пароля, оставьте аргумент пароля пустым (""), но не опускайте его. Сохраните эскиз и загрузите его на свою плату.

// Начнем с подключения к сети WiFi
    WiFiMulti.addAP("SSID", "passpasspass");

Нажмите кнопку в правом верхнем углу окна Arduino, чтобы запустить Serial Monitor, и выберите 115200 в качестве скорости передачи. Нажмите кнопку сброса на плате Feather Huzzah, чтобы запустить программу с самого начала, и посмотрите, как информация о беспроводном соединении появляется на последовательном мониторе.

Вы должны увидеть сообщение об успешном подключении, а затем IP-адрес, назначенный вашему устройству. Если у вас не получается, дважды проверьте свои учетные данные Wi-Fi на опечатки и попробуйте снова. После подключения вы увидите сообщение: «Попытка подключения к 192.168.1.1» (Trying to connect to 192.168.1.1).

Поскольку 192.168.1.1 является локальной сетью, которая может существовать или не существовать, соединение, скорее всего, не будет установлено.

Обновите переменную хоста для любого понравившегося вам сайта, например "google.com", просто чтобы проверить ваше соединение. Загрузите новый эскиз на свою плату и откройте Serial Monitor, чтобы увидеть другой результат. Поздравляю, ваша плата только что пообщалась с интернетом.

Установка дополнительных библиотек

Теперь, когда у вас есть базовая настройка ESP8266, давайте установим несколько дополнительных библиотек Arduino, которые будут использоваться для последующих уроков. В вашем программном обеспечении Arduino перейдите в:

Sketch-> Включить библиотеку -> Управление библиотеками
Sketch-> Include Library -> Manage Libraries

Затем найдите и установите последние версии следующих библиотек:

Вы также можете установить библиотеки вручную, скачав их и поместив в папку с библиотеками Arduino. Узнайте больше о библиотеках Arduino в нашем разделе Библиотеки и в статье Установка и подключение библиотек в Arduino IDE.

Подписка на (бесплатные) облачные сервисы

В конце нам необходимо создать бесплатные учетные записи на двух веб-сайтах облачных сервисов: Adafruit IO и IFTTT.

Adafruit IO - это облачная служба данных, которая позволяет вам настраивать потоки данных, называемые каналами, для сбора информации, поступающей от ваших проектов в области электроники. Вы можете визуализировать и использовать эти каналы в Adafruit IO или расширить его функции, связав его с IFTTT.

IFTTT - это сайт, который объединяет и предоставляет интерфейс для множества приложений и поэтому называется шлюзом API.

Перейдите на io.adafruit.com и нажмите «Войти» (Sign In), затем «Зарегистрироваться» (Sign Up), чтобы создать учетную запись. Вы должны использовать надежные, уникальные пароли. Вас могут попросить подтвердить ваш адрес электронной почты.

На IFTTT.com нажмите кнопку «Зарегистрироваться» (Sign up), чтобы создать учетную запись.

Я настоятельно рекомендую включить двухфакторную аутентификацию в вашей учетной записи IFTTT, так как вы, скорее всего, захотите связать ее с другими вашими личными учетными записями, такими как Twitter, Instagram, Fitbit и т.д.

Защитите свои учетные записи от хакеров и спам-ботов! Вам также нужно будет связать свои аккаунты Adafruit и IFTTT, что вы можете сделать через любой сайт. Пока вы на нем, установите приложение IFTTT, если у вас есть устройство iOS или Android.

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

Ардуино+