Как да направите свой собствен бутон за Wi-Fi свързване с ESP8266

Как да направите свой собствен бутон за Wi-Fi свързване с ESP8266

Интернет на нещата има огромен DIY потенциал. С достатъчно ноу-хау и няколко евтини компонента бихте могли да изградите сложна система от свързани устройства.





Понякога обаче искате нещо просто. Без камбани или свирки, само бутон, който изпълнява една задача. Може би вече сте запознати с нещо подобно, ако някога сте използвали бутон на Amazon Dash, за да пренаредите ежедневните предмети от бита.





Днес ще направим бутон с активиран Wi-Fi, използвайки NodeMCU, и ще го програмираме да използва IFTTT, за да ... добре, всичко! Писмени инструкции след видеото, ако предпочитате.





Какво ще ви трябва

Ще имаш нужда:

  • 1 x платка NodeMCU (ESP8266), налична за $ 2-3 на AliExpress
  • 1 x Бутон
  • 1 x LED (по избор)
  • 1 x 220 ома резистор (по избор)
  • Кабелни платки и свързващи проводници
  • Микро USB за програмиране
  • Компютър с инсталирана Arduino IDE

Освен NodeMCU, би трябвало да можете да намерите повечето от тези части във всеки стартов комплект на Arduino. Този урок ще приеме, че използвате допълнителния светодиод и резистор, но те не са от съществено значение.



Стъпка 1: Настройка на веригата

Хардуерната настройка е много проста за този проект. Настройте дъската си според тази диаграма.

Лилавата тел се прикрепя щифт D0 от едната страна на бутона. Зеленият проводник свързва другата страна на бутона с RST щифт . Синият проводник тече от щифт D1 към резистора и светодиода. Отрицателният крак на светодиода се прикрепя към GND щифт на NodeMCU.





Когато макетът е настроен, той трябва да изглежда така:

как да промените мрежовата парола windows 10

Ако се чудите как моят светодиод отива към заземяващия щифт, използвайки само тези малки парченца кабел, нашият бърз курс за катастрофа на макет трябва да помогне да се изясни! Проверете настройките си и свържете вашия NodeMCU към компютъра чрез USB.





Стъпка 2: Настройване на IDE

Преди да започнете кодирането, трябва да направите някои подготовки. Ако все още не сте, настройте Arduino IDE да разпознава вашата NodeMCU платка. Можете да го добавите към списъка с дъски чрез Файл> Предпочитания .

Можете да намерите по -подробно обяснение на тази стъпка в нашата статия за въвеждане на NodeMCU.

За този проект са необходими две библиотеки. Придвижете се до Скица> Включване на библиотека> Управление на библиотеки . Търся ESP8266WIFI от Иван Грохотков и го инсталирайте. Тази библиотека е написана за осъществяване на Wi-Fi връзки с платката NodeMCU.

Следващото търсене на IFTTTWebhook от John Romkey и инсталирайте най -новата версия. Тази библиотека е предназначена да опрости процеса на изпращане на уеб куки до IFTTT.

Това е цялата подготовка, от която се нуждаем, нека кодираме!

Как ще работи кодексът

Ще използваме ESP8266WIFI библиотека за установяване на Wi-Fi връзка. The 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 за такъв проект. Опитах много комбинации и всички те имаха различна степен на глупости преди и след серийни съобщения. Според различни публикации във форума това може да се дължи на грешен борд или проблем със съвместимостта на софтуера. Тъй като това не се отразява твърде лошо на проекта, избирам да се преструвам, че не се случва.

как да играете местни игри онлайн

Ако имате проблеми със серийния монитор, опитайте различни скорости на предаване и вижте кой работи най -добре за вас.

Стъпка 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 позволява интеграция с огромен набор от уеб услуги. Използвахме го в нашия урок за LED кула за Wi-Fi компютър, за да изпратим предупреждение всеки път, когато се получи нов имейл. Днес ще го използваме за изпращане на туит с натискане на бутон.

Придвижете се до Моите ябълки страница и изберете Нов аплет

Кликнете върху +това и се свържете с Уеб куки . Изберете „Получаване на уеб заявка“ и дайте име на вашето събитие. Не го усложнявай ! Запишете името на събитието, ще трябва да го добавите към кода на NodeMCU по -късно. Щракнете „Създаване на тригер“ .

Сега изберете +това . Търсене на Twitter услугата и да се свържете с нея --- ще трябва да я упълномощите да публикува във вашия акаунт в 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. Светодиодът сигнализира за приключване на задачата, преди дълбокият сън да започне отново.

какво означава rng в игрите
//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. След като разберете основните неща, можете да използвате почти всеки сензор или превключвател, за да задействате практически всяка услуга, която можете да си представите.

Кредит на изображението: Vadmary / Depositphotos

Дял Дял Туит електронна поща 6 Звукови алтернативи: Най -добрите безплатни или евтини приложения за аудиокниги

Ако не искате да плащате за аудиокниги, ето няколко страхотни приложения, които ви позволяват да ги слушате безплатно и законно.

Прочетете Напред
Свързани теми
  • Направи си сам
  • Arduino
  • Уроци за проекти „направи си сам“
За автора Иън Бъкли(216 статии са публикувани)

Иън Бъкли е журналист на свободна практика, музикант, изпълнител и видео продуцент, живеещ в Берлин, Германия. Когато не пише или е на сцената, той се занимава с „направи си сам“ електроника или код с надеждата да стане луд учен.

Още от Иън Бъкли

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, рецензии, безплатни електронни книги и изключителни оферти!

Щракнете тук, за да се абонирате