ESP8266

ЧАСТЬ 3

ДИСТАНЦИОННОЕ ВКЛЮЧЕНИЕ СВЕТОДИОДА С ПОМОЩЬЮ ARDUINO

Сейчас мы начнем учиться управлять светодиодами (или чем-нибудь еще) удаленно через WiFi. Кстати, кто-то однажды сказал: «Если вы заставите мигать светодиод, то  вы сможете делать все». В этом важность третьей и последней инструкции о ESP8266.

Тем,  кто присоединился к нам на этой статье, я рекомендую прочесть два моих предыдущих поста:

ESP8266 Часть 1 – Последовательный WIFI модуль для Arduino

ESP8266 Часть 2 – Arduino вебсервер

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

Шаг 1: Схема

Схема очень  проста. Соединение ESP8266  с Arduino точно такое же, как в предыдущих публикациях, только добавлены 3 светодиода к GPIO (в этот раз я использую плату UNO вместо MEGA, для того чтобы показать, что все, что мы изучили ранее, одинаково работает на обоих устройствах).

  • GPIO 11: голубой светодиод
  • GPIO 12: красный светодиод
  • GPIO 11: зеленый светодиод

ШАГ 2: HTML КОД

Основная часть HTMLкода используется для генерации «кнопок»: “ON” и “OFF”. Обратите внимание, что для каждой кнопки (всего их 6, по две для каждого GPIO), генерируется специальный “id”. Например, если кнопка “ON”, связанная с GPIO 11,  нажата, то сгенерированный ID– “111”, т.е. первые две цифры для идентификации GPIO (в нашем случае "11"), а третья цифра для записи состояния, в нашем случае «1» для «ON». Если это кнопка «OFF», то ID будет 110. В этом случае пин цифрового выхода № 11 соединен с голубым светодиодом.

Сгенерировав  “ID”, функция на странице отвечает за его отправку на IPадрес ESP8266.  Примите во внимание, что адрес, который устанавливается для ESP8266, должен быть включен в строку ==> $ .get ( " http://10.0.1.14:80/” ; {pin: p});

Первые несколько раз, когда я тестировал программу, было множество проблем, и самое важное, что я заметил, это невозможность послать более 5 команд на светодиоды. Это происходило потому, что каждый раз, когда отправляются данные, ESP8266 открывал новое соединение (CONNECT 0, 1, 2, 3, 4), а их не может быть более 5.

Также я выяснил, что когда перезагружаешь страницу, счетчик соединений сбрасывается на 0. Решением было добавление нового HTML кода, который бы инициировал автоматическую перезагрузку страницы (код типа "META").  Я решил делать перезагрузку каждые 15 секунд, что не должно слишком раздражать пользователя.  Это сработало без проблем:

ШАГ 3: ARDUINO КОД

Код очень похож на предыдущий:

Инициализация производит установку GPIO, «перезагрузку» и инициализацию ESP8266 и т.д.,  используя те же функции, которые были определены в предыдущей публикации.

Считывая «id», например «111», код отделяет первые две цифры и создает переменную "pinNumber". Третья цифра показывает состояние светодиода" statusLed". Функция digitalWrite посылает светодиоду статус, в нашем случае, например, «1» на связанный с ним GPIO (или “pinNumber”), в нашем примере - это 11.

На видео вы можете увидеть пример удаленной активации светодиодов