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.
На видео вы можете увидеть пример удаленной активации светодиодов