ESP8266으로 나만의 Wi-Fi 연결 버튼을 만드는 방법

ESP8266으로 나만의 Wi-Fi 연결 버튼을 만드는 방법

사물 인터넷은 방대한 DIY 잠재력을 가지고 있습니다. 충분한 노하우와 저렴한 부품 몇 개만 있으면 연결된 장치의 복잡한 시스템을 구축할 수 있습니다.





그러나 때로는 간단한 것을 원합니다. 종소리나 휘파람이 없고 단일 작업을 수행하는 버튼만 있습니다. Amazon Dash 버튼을 사용하여 일상적인 가정 용품을 재정렬한 적이 있다면 이와 같은 기능에 이미 익숙할 것입니다.





오늘 우리는 NodeMCU를 사용하여 Wi-Fi 활성화 버튼을 만들고 IFTTT를 사용하여 무엇이든 하도록 프로그래밍할 것입니다. 원하는 경우 비디오 다음에 작성된 지침.





필요한 것

필요할 것이예요:

  • 1 x NodeMCU(ESP8266) 보드, 사용 가능 알리익스프레스에서 -3
  • 1 x 푸시 버튼
  • 1 x LED(옵션)
  • 1 x 220옴 저항(옵션)
  • 브레드보드 및 연결 와이어
  • 프로그래밍용 마이크로 USB
  • Arduino IDE가 설치된 컴퓨터

NodeMCU 외에도 Arduino 스타터 키트에서 이러한 부품의 대부분을 찾을 수 있어야 합니다. 이 튜토리얼에서는 옵션 LED와 저항을 사용한다고 가정하지만 필수는 아닙니다.



1단계: 회로 설정

이 프로젝트의 하드웨어 설정은 매우 간단합니다. 이 다이어그램에 따라 보드를 설정하십시오.

보라색 와이어가 연결됩니다. 핀 D0 버튼의 한쪽에. 녹색 와이어는 버튼의 다른 쪽을 RST 핀 . 파란색 와이어는 다음에서 실행됩니다. 핀 D1 저항과 LED에. LED의 음극 다리는 접지 핀 NodeMCU의.





브레드보드가 설정되면 다음과 같아야 합니다.

Google Play에서 노래를 다운로드하는 방법

작은 케이블 조각을 사용하여 LED를 접지 핀으로 연결하는 방법이 궁금하시다면 브레드보드 크래시 코스 그것을 해결하는 데 도움이되어야합니다! 설정을 확인하고 USB를 통해 NodeMCU를 컴퓨터에 연결합니다.





2단계: IDE 설정

코딩을 시작하기 전에 몇 가지 준비가 필요합니다. 아직 설정하지 않았다면 NodeMCU 보드를 인식하도록 Arduino IDE를 설정하십시오. 다음을 통해 보드 목록에 추가할 수 있습니다. 파일 > 기본 설정 .

NodeMCU 소개 기사에서 이 단계에 대한 자세한 설명을 찾을 수 있습니다.

이 프로젝트에는 두 개의 라이브러리가 필요합니다. 로 이동 스케치 > 라이브러리 포함 > 라이브러리 관리 . 검색 ESP8266와이파이 Ivan Grokhotkov가 작성하여 설치하십시오. 이 라이브러리는 NodeMCU 보드와 Wi-Fi 연결을 위해 작성되었습니다.

다음 검색 IFTTT웹훅 John Romkey에 의해 최신 버전을 설치하십시오. 이 라이브러리는 웹훅을 IFTTT로 보내는 프로세스를 단순화하도록 설계되었습니다.

이것이 우리가 필요로 하는 모든 준비입니다. 코딩을 합시다!

코드 작동 방식

우리는 사용할 것입니다 ESP8266와이파이 라이브러리에서 Wi-Fi 연결을 설정합니다. NS IFTTT웹훅 라이브러리는 IFTTT에 요청을 합니다. 이 경우에는 Twitter에 게시합니다. 그런 다음 전원을 절약하기 위해 사용하지 않을 때 NodeMCU 보드를 절전 모드로 설정합니다.

버튼을 누르면 연결됩니다 D0 그리고 RST 다리. 이것은 보드를 재설정하고 프로세스가 다시 발생합니다.

이 튜토리얼의 대부분의 코드는 초보자에게 충분히 간단합니다. 즉, 처음 시작하는 경우 다음을 수행하면 훨씬 더 쉽게 이해할 수 있습니다. 아두이노 초보자 가이드 .

이 자습서는 이해를 돕기 위해 코드를 청크로 살펴봅니다. 바로 비즈니스를 시작하고 싶다면 다음을 찾을 수 있습니다. 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'

여기에 스케치에 필요한 몇 가지 변수를 정의하는 것과 함께 라이브러리를 포함합니다. 위의 Fritzing 다이어그램과 비교하여 여기에서 ledPin 및 wakePin의 번호가 다르게 지정되었음을 알 수 있습니다. 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에 버튼이 연결될 때까지 깊은 절전 모드로 들어가도록 지시합니다. 웨이크핀 ~로 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의 전송 속도로 직렬 연결을 시작할 것을 제안합니다. 나는 많은 조합을 시도했고 직렬 메시지 전후에 모두 다양한 정도의 횡설수설을 했습니다. 다양한 포럼 게시물에 따르면 이는 보드 결함이나 소프트웨어 호환성 문제일 수 있습니다. 프로젝트에 크게 영향을 미치지 않기 때문에 일어나지 않는 척하기로 했습니다.

Firefox에서 자동 재생을 중지하는 방법

직렬 모니터에 문제가 있는 경우 다른 전송 속도를 시도하고 어떤 것이 가장 적합한지 확인하십시오.

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');
}
}

이 방법은 네트워크 연결을 1초 간격으로 10번 시도합니다. 연결 성공 또는 실패는 직렬 모니터에 인쇄됩니다.

5단계: 연결 방법 호출

바로 지금, 와이파이 연결() 호출되지 않습니다. 'Button Pressed' 메시지와 보드를 절전 모드로 보내기 사이에 설정 기능에 대한 호출을 추가합니다.

connectToWifi();

이것이 어디에 맞는지 궁금하다면 다음과 같아야 합니다.

스케치 상단에서 대체 ssid 그리고 비밀번호 Wi-Fi 자격 증명으로 변수. 스케치를 저장하고 보드에 업로드합니다.

이제 보드가 부팅되면 설정 기능으로 돌아가기 전에 Wi-Fi 네트워크에 연결을 시도합니다. 이제 IFTTT 통합을 설정하겠습니다.

6단계: IFTTT 통합 설정

IFTTT를 사용하면 광범위한 웹 서비스와 통합할 수 있습니다. Wi-Fi PC 타워 LED 자습서에서 새 이메일이 수신될 때마다 알림을 보내는 데 사용했습니다. 오늘 우리는 버튼을 눌러 트윗을 보내는 데 사용할 것입니다.

다음으로 이동합니다. 내 애플릿 페이지를 선택하고 새 애플릿

클릭 +이 에 연결 웹훅 . 선택하다 '웹 요청 받기' 이벤트 이름을 지정합니다. 간단하게 유지 ! 이벤트 이름을 기록해 둡니다. 나중에 NodeMCU 코드에 추가해야 합니다. 딸깍 하는 소리 '트리거 생성' .

이제 선택 +그 . 검색 트위터 서비스에 연결하고 트위터 계정에 게시하려면 권한을 부여해야 합니다. 선택하다 '트윗 올리기' 메시지를 선택합니다.

다음 화면에서 애플릿을 검토하라는 메시지가 표시됩니다. 마침을 클릭합니다. 그게 다야!

7단계: 코드에 IFTTT 자격 증명 추가

Arduino IDE로 돌아가서 IFTTT API 키와 이벤트 이름을 정의된 변수에 추가해야 합니다. API 키를 찾으려면 내 애플릿 그리고 선택 웹훅 아래의 서비스 탭. 선택하다 선적 서류 비치 키에 액세스합니다.

키와 이벤트 이름을 코드에 복사하여 설정한 임시 이름을 바꿉니다.

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

반전된 쉼표는 그대로 있어야 하며 텍스트만 교체해야 합니다.

전화하는 사이 와이파이 연결() 보드를 절전 모드로 보내고 IFTTTWebhook 라이브러리 개체의 인스턴스를 만듭니다. LED는 딥 슬립이 다시 시작되기 전에 작업 완료를 알립니다.

Snapchat에서 위치를 끄는 방법
//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를 처음부터 만들었다면 배터리로 작동되는 Wi-Fi 버튼은 몇 달 동안 지속될 수 있습니다!

이 프로젝트는 스마트 홈 애플리케이션을 위한 리모컨에 적합합니다. 이미 상당한 양의 홈 오토메이션 애플릿 IFTTT에서 사용할 수 있습니다. 기본 사항을 숙지하고 나면 거의 모든 센서나 스위치를 사용하여 상상할 수 있는 거의 모든 서비스를 트리거할 수 있습니다.

이미지 크레디트: Vadmary / Depositphotos

공유하다 공유하다 트위터 이메일 6가지 대안: 최고의 무료 또는 저렴한 오디오북 앱

오디오북 비용을 지불하고 싶지 않다면 무료로 합법적으로 들을 수 있는 몇 가지 훌륭한 앱이 있습니다.

다음 읽기
관련 항목
  • DIY
  • 아두이노
  • DIY 프로젝트 튜토리얼
저자 소개 이안 버클리(216건의 출판물)

Ian Buckley는 독일 베를린에 거주하는 프리랜스 저널리스트, 음악가, 공연자 및 비디오 프로듀서입니다. 글을 쓰지 않거나 무대에 오르지 않을 때는 미친 과학자가 되기 위해 DIY 전자 제품이나 코드를 만지작거리고 있습니다.

이안 버클리가 참여한 작품 더보기

뉴스레터 구독

뉴스레터에 가입하여 기술 팁, 리뷰, 무료 전자책 및 독점 거래를 확인하십시오!

구독하려면 여기를 클릭하세요.