Как сделать свою собственную кнопку подключения к Wi-Fi с помощью ESP8266

Как сделать свою собственную кнопку подключения к Wi-Fi с помощью ESP8266

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





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





Сегодня мы сделаем кнопку с включенным Wi-Fi с помощью NodeMCU и запрограммируем ее на использование IFTTT для ... ну, чего угодно! Письменные инструкции после видео, если хотите.





Что вам понадобится

Тебе понадобится:

  • 1 плата NodeMCU (ESP8266), доступная для 2-3 доллара на AliExpress
  • 1 х кнопка
  • 1 х светодиод (опционально)
  • 1 резистор 220 Ом (опционально)
  • Макетная плата и соединительные провода
  • Micro USB для программирования
  • Компьютер с установленной Arduino IDE

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



Шаг 1: Настройка схемы

Аппаратная установка для этого проекта очень проста. Установите свою доску в соответствии с этой схемой.

Фиолетовый провод прикрепляется штифт D0 сбоку от кнопки. Зеленый провод соединяет другую сторону кнопки с Штифт RST . Синий провод идет от штифт D1 к резистору и светодиоду. Отрицательная ножка светодиода присоединяется к Контакт GND из NodeMCU.





Когда макет установлен, он должен выглядеть примерно так:

как прочистить таран windows 10

Если вам интересно, как мне удалось подключить светодиод к заземляющему контакту с помощью этих крошечных кусочков кабеля, наш быстрый ускоренный курс по макетированию должно помочь прояснить это! Проверьте настройки и подключите NodeMCU к компьютеру через USB.





Шаг 2: Настройка IDE

Перед тем, как приступить к кодированию, вам нужно немного подготовиться. Если вы еще этого не сделали, настройте IDE Arduino для распознавания вашей платы NodeMCU. Вы можете добавить его в свой список досок через Файл> Настройки .

Вы можете найти более подробное объяснение этого шага в нашей вводной статье о NodeMCU.

Для этого проекта требуются две библиотеки. Перейдите к Sketch> Включить библиотеку> Управление библиотеками . Ищи ESP8266WIFI Ивана Грохоткова и установите его. Эта библиотека написана для создания соединений Wi-Fi с платой NodeMCU.

Следующий поиск IFTTTWebhook Джона Ромки и установите последнюю версию. Эта библиотека предназначена для упрощения процесса отправки веб-перехватчиков в IFTTT.

Это все, что нам нужно, давайте писать код!

Как будет работать код

Мы будем использовать ESP8266WIFI библиотека для установки соединения Wi-Fi. В IFTTTWebhooks библиотека делает запрос к IFTTT --- в данном случае для публикации в Twitter. Затем проинструктируйте плату NodeMCU перейти в спящий режим, когда она не используется, для экономии энергии.

Когда кнопка нажата, она свяжет D0 а также RST булавки. Это сбрасывает плату, и процесс повторяется снова.

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

В этом руководстве код разбивается по частям, чтобы облегчить понимание. Если вы хотите сразу перейти к делу, вы можете найти полный код на Pastebin . Обратите внимание, что вам все равно нужно будет ввести свои учетные данные Wi-Fi и IFTTT в этот код, чтобы он работал!

Шаг 3: Проверка глубокого сна

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

#include
#include
#define ledPin 5
#define wakePin 16
#define ssid 'YOUR_WIFI_SSID'
#define password 'YOUR_WIFI_PASSWORD'
#define IFTTT_API_KEY 'IFTTT_KEY_GOES_HERE'
#define IFTTT_EVENT_NAME 'IFTTT_EVENT_NAME_HERE'

Здесь мы включаем наши библиотеки, а также определяем несколько переменных, которые нам понадобятся в нашем скетче. Вы заметите, что ledPin и wakePin здесь пронумерованы по-другому, чем на диаграмме Fritzing выше. Распиновка NodeMCU отличается от распиновки плат Arduino. Однако это не проблема, благодаря удобной диаграмме:

Теперь создайте функцию настройки:

void setup() {
Serial.begin(115200);
while(!Serial) {
}
Serial.println(' ');// print an empty line before and after Button Press
Serial.println('Button Pressed');
Serial.println(' ');// print an empty line
ESP.deepSleep(wakePin);
}

Здесь мы настраиваем наш последовательный порт и используем цикл while, чтобы дождаться его начала. Поскольку этот код сработает после нажатия кнопки сброса, мы печатаем 'Кнопка нажата' к серийному монитору. Затем мы говорим NodeMCU перейти в глубокий сон, пока кнопка, соединяющая wakePin к RST штифт нажат.

Наконец, для тестирования добавьте это в свой петля() метод:

void loop(){
//if deep sleep is working, this code will never run.
Serial.println('This shouldn't get printed');
}

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

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

Замечание о последовательном мониторе

Возможно, вы заметили какие-то бессмысленные символы на мониторе серийного номера во время некоторых ваших проектов. Обычно это происходит из-за того, что в последовательном мониторе не установлена ​​та же скорость передачи, что и для Serial.begin (XXXX) темп.

Многие руководства предлагают запускать последовательное соединение со скоростью 115200 бод для такого проекта. Я пробовал много комбинаций, и все они имели разную степень тарабарщины до и после последовательных сообщений. Согласно различным сообщениям на форуме, это могло быть связано с неисправной платой или проблемой совместимости программного обеспечения. Поскольку это не слишком сильно влияет на проект, я предпочитаю делать вид, что этого не происходит.

Windows 10 не просыпается

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

Шаг 4. Подключение к Wi-Fi

Теперь создайте функцию для подключения к вашей сети Wi-Fi.

void connectToWifi() {
Serial.print('Connecting to: SSID NAME'); //uncomment next line to show SSID name
//Serial.print(ssid);
WiFi.begin(ssid, password);
Serial.println(' ');// print an empty line
Serial.print('Attempting to connect: ');
//try to connect for 10 seconds
int i = 10;
while(WiFi.status() != WL_CONNECTED && i >=0) {
delay(1000);
Serial.print(i);
Serial.print(', ');
i--;
}
Serial.println(' ');// print an empty line
//print connection result
if(WiFi.status() == WL_CONNECTED){
Serial.print('Connected.');
Serial.println(' ');// print an empty line
Serial.print('NodeMCU ip address: ');
Serial.println(WiFi.localIP());
}
else {
Serial.println('Connection failed - check your credentials or connection');
}
}

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

Шаг 5: вызов метода подключения

Прямо сейчас connectToWifi () никогда не называется. Добавьте вызов вашей функции настройки между сообщением «Кнопка нажата» и отправкой платы в спящий режим.

connectToWifi();

Если вам интересно, где это подходит, это должно выглядеть так:

Вверху эскиза замените SSID а также пароль переменные с вашими учетными данными Wi-Fi. Сохраните свой набросок и загрузите на доску.

Теперь, когда плата загружается, она попытается подключиться к вашей сети Wi-Fi, прежде чем вернуться к функции настройки. Теперь давайте настроим интеграцию IFTTT.

Шаг 6: Настройка интеграции IFTTT

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

Перейдите к Мои Апплеты страницу и выберите Новый апплет

Нажмите на + это и подключиться к Вебхуки . Выбирать 'Получить веб-запрос' и назовите свое мероприятие. Будь проще ! Запишите название события, вам нужно будет добавить его в свой код NodeMCU позже. Нажмите 'Создать триггер' .

Теперь выберите + это . Искать Твиттер сервис и подключитесь к нему --- вам нужно будет авторизовать его для публикации в вашей учетной записи Twitter. Выбирать 'Опубликовать твит' и выберите свое сообщение.

На следующем экране вас попросят просмотреть апплет. Нажмите 'Готово'. Вот и все!

Шаг 7. Добавление учетных данных IFTTT в код

Вернувшись в IDE Arduino, вам нужно будет добавить ключ IFTTT API и имя события к определенным вами переменным. Чтобы найти ключ API, перейдите к Мои Апплеты и выберите Вебхуки под Услуги таб. Выбирать Документация чтобы получить доступ к вашему ключу.

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

#define IFTTT_API_KEY 'IFTTT_KEY_GOES_HERE'
#define IFTTT_EVENT_NAME 'IFTTT_EVENT_NAME_HERE'

Обратите внимание, кавычки должны остаться, только заменить текст.

Между вызовом connectToWifi () и отправив доску в спящий режим, создайте экземпляр объекта библиотеки IFTTTWebhook. Светодиод сигнализирует о завершении задачи, прежде чем снова начнется глубокий сон.

что такое выемка на телефоне
//just connected to Wi-Fi
IFTTTWebhook hook(IFTTT_API_KEY, IFTTT_EVENT_NAME);
hook.trigger();
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);
delay(200);
digitalWrite(ledPin, LOW);
//now sending board to sleep

Вызов триггера на крюк объект запускает апплет IFTTT и должен публиковать сообщения в вашей учетной записи Twitter. Сохраните свой эскиз и загрузите его. Теперь у вас должна быть полнофункциональная кнопка для твитов.

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

Выполнено! Как вы могли бы улучшить его дальше?

Это базовая версия кнопки Wi-Fi, но есть много способов ее улучшить. Для простоты здесь используется USB-соединение. Аккумулятор сделает его полностью мобильным, а чехол для схемы станет идеальным проектом для 3D-печати для новичков.

Несмотря на режим глубокого сна, вы можете обнаружить, что батарея быстро разряжается. Здесь очень много Советы по энергосбережению Arduino которые помогают в подобных проектах. Хотя это и сложнее, чем это руководство, если вы сделаете свой собственный энергосберегающий Arduino с нуля, кнопка Wi-Fi с питанием от батареи может прослужить несколько месяцев!

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

Кредит изображения: Вадмари / Depositphotos

Делиться Делиться Твитнуть Эл. адрес 6 звуковых альтернатив: лучшие бесплатные или дешевые аудиокниги

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

Читать далее
Похожие темы
  • Сделай сам
  • Ардуино
  • Руководства по проектам DIY
Об авторе Ян Бакли(Опубликовано 216 статей)

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

Ещё от Ian Buckley

Подписывайтесь на нашу новостную рассылку

Подпишитесь на нашу рассылку технических советов, обзоров, бесплатных электронных книг и эксклюзивных предложений!

Нажмите здесь, чтобы подписаться