- Google Assistant로 제어되는 홈 오토메이션의 회로도
- Blynk 애플리케이션 설정
- Google Assistant 및 Blynk로 IFTTT를 설정하여 문자열 읽기
- Blynk 홈 자동화를위한 Arduino 프로그래밍
- PCBGoGo를 사용하여 PCB 제작
- PCB 조립
- AC 전원 장치 / 확장 보드와 보드 연결
Google Assistant 및 Alexa와 같은 가상 비서의 발전으로 홈 자동화 및 음성 제어 애플리케이션이 정상화되고 있습니다. 이제 우리는 간단한 자동 계단 조명에서 Raspberry Pi를 사용하는 IoT 기반 웹 제어 홈 자동화에 이르기까지 많은 홈 자동화 프로젝트를 구축했습니다. 하지만 여기서이 프로젝트는 다릅니다. 여기서 아이디어는 벽에있는 AC 전원 장치에 맞고 내부에 숨겨져있는 실용적인 홈 자동화 보드를 만드는 것입니다. 보드는 전원 장치 스위치의 정상적인 작동을 방해해서는 안됩니다. 즉, 수동 스위치로도 켜거나 꺼야합니다. 그리고 구글 어시스턴트를 사용하여 음성으로 동일한 부하를 제어 할 수 있어야하며, 하루 중 미리 설정된 시간 동안 모든 부하가 자동으로 켜지거나 꺼 지도록 타이머를 설정할 수 있어야합니다.
이 프로젝트는 ESP8266 스마트 Wi-Fi 플러그와 매우 유사하지만 여기서는 ESP12를 사용할 것이므로 더 많은 GPIO 핀을 사용하여 4 개의 AC 부하를 동시에 제어 할 수 있습니다. 또한 Blynk와 Google Assistant를 통합했기 때문에 프로젝트가 흥미롭고 실용적으로 사용됩니다. 이 프로젝트를 위해 우리는 PCBGOGO PCB 제조 서비스를 사용하여 회로 기판을 구축했습니다. 기사의 뒷부분에서 회로 용으로 설계된 Gerber 파일을 제공하고 PCBGOGO에서 PCB를 주문하는 전체 절차를 설명했습니다.
경고: 이 프로젝트에는 AC 주전원 전압 작업이 포함됩니다. 높은 AC 전압으로 작업 할 때는 극도의주의를 기울여야합니다. 당신이 처음이라면 경험이 풍부한 사람의 감독을 받아야합니다.
Google Assistant로 제어되는 홈 오토메이션의 회로도
홈 자동화를위한 전체 회로도는 아래에서 찾을 수 있습니다.
보시다시피 회로는 매우 간단합니다. ESP12E Wi-Fi 모듈에서 설명을 시작하겠습니다. 자세한 프로젝트 설명은 아래 비디오를 확인하십시오. 이 모듈은 nodeMCU 개발 보드처럼 프로그래밍 할 수 있으며 많은 공간을 절약합니다. 기본적으로 전원이 켜지면 ESP12E는 작동 모드로 들어갑니다. 프로그래밍하려면 재설정 및 플래시 버튼을 사용해야합니다. 즉, ESP12를 프로그래밍 모드로 전환하고 재설정 및 플래시 버튼을 모두 누른 상태에서 재설정 버튼을 놓습니다. 그러면 플래시 버튼을 누른 상태에서 ESP12E가 부팅되고 이제 플래시 버튼에서 손을 떼면 ESP12E가 프로그래밍 모드로 들어갑니다. 프로그래밍 후, 업로드 된 프로그램을 실행하기 위해서는 정상 작동 모드에서 ESP12E를 부팅하기 위해 리셋 버튼을 다시 눌러야합니다. 프로그래밍 핀 Rx, Rx,FTDI 보드 또는 USB to TTL 변환기와 연결할 수 있도록 접지가 확장됩니다. ESP12의 Tx 핀을 프로그래머의 Rx 핀에 연결하고 그 반대도 마찬가지입니다.
다른 플래그 핀 I1 ~ I4 및 R1 ~ R4는 스위치와 릴레이를 연결하는 데 사용됩니다. 핀 I1 ~ I4는 입력 핀을 나타냅니다. 이 모든 핀은 내부 풀업 저항을 지원하므로 아래 그림과 같이 풀다운 저항을 통해 확장 박스의 스위치를 입력 핀에 연결하기 만하면됩니다.
마찬가지로 릴레이 출력 핀 R1 ~ R4는 릴레이를 제어하는 데 사용됩니다. 아래 그림과 같이 BC547 및 IN4007 다이오드와 함께 표준 릴레이 드라이버 회로를 사용했습니다. 릴레이는 5V로 트리거되어야하지만 ESP12E 출력 핀은 3.3V에 불과합니다. 따라서 릴레이를 구동하기 위해 트랜지스터를 사용해야합니다. 또한 트랜지스터의 기본 경로에 LED를 배치하여 트랜지스터가 트리거 될 때마다 LED도 켜집니다.
마지막으로 모든 회로에 전원을 공급하기 위해 Hi-Link AC-DC 컨버터를 사용하여 220V AC를 5V DC로 변환했습니다. 이 5V DC는 AMS117-3.3V 전압 조정기를 사용하여 3.3V로 변환됩니다. 5V는 릴레이를 트리거하는 데 사용되며 3.3V는 ESP21 Wi-Fi 모듈에 전원을 공급하는 데 사용됩니다.
Blynk 애플리케이션 설정
이전에 Wi-Fi 제어 Arduino 로봇과 같은 많은 Blynk 프로젝트를 구축 했으므로 blynk 응용 프로그램 설정에 대한 세부 사항은 다루지 않을 것입니다. 그러나 간단하게 말하면 애플리케이션을 설치하고 NodeMCU에 대한 새 프로젝트를 만들고 아래와 같이 위젯 배치를 시작하면됩니다.
프로젝트에서 릴레이 1 ~ 4를 제어하기 위해 가상 핀 V1 ~ V4를 사용했습니다. 전환 할 버튼 유형을 변경해야합니다. 타이머 옵션은 전화기가 꺼져 있어도 설정된 시간 동안 가상 핀을 자동으로 트리거하는 데 사용할 수도 있습니다. 예를 들어 여기에서는 가상 핀 V1에만 타이머를 사용했지만 필요한 경우 4 개의 핀 모두에 사용할 수 있습니다.
프로젝트 페이지에서 blynk 인증 토큰 값을 가져와야합니다. 너트 아이콘 (위 그림에서 빨간색 원)을 클릭하고 모두 복사 옵션을 사용하여 인증 토큰을 복사하고 안전한 곳에 붙여 넣으면 Arduino 보드를 프로그래밍 할 때 필요합니다.
Google Assistant 및 Blynk로 IFTTT를 설정하여 문자열 읽기
홈 자동화를 위해 Google Assistant를 사용하는 가장 쉬운 방법은 IFTTT를 사용하는 것입니다. 또한 이전에 NodeMCU 및 Raspberry Pi를 사용하여 많은 IFTTT 프로젝트를 구축했습니다. 이 프로젝트에서는 Blynk 앱 을 사용하여 Google 어시스턴트를 사용하여 웹훅 을 트리거합니다. 그것은 우리의 음성 제어 홈 자동화 및 음성 제어 FM 라디오 프로젝트와 매우 유사합니다. 제외하고, 여기서는 IFTTT와 함께 blynk를 사용하여 문자열을 전송하여 훨씬 쉽고 재미있게 만들 것입니다.
기본적으로 blynk에서 가상 핀 V5 및 V6을 사용하여 트리거 명령을 보냅니다. V5는 켜기 명령에 사용되며 V6은 끄기 명령에 사용됩니다. 예를 들어 TV와 램프를 켜십시오. 여기서 "TV and Lamp"문자열 명령은 API를 사용하여 NodeMCU로 전송됩니다. API의 구문은 다음과 같습니다.
http://188.166.206.43//update/V5?value=TV 및 램프
이제 IFTTT에서해야 할 일은 Google 어시스턴트를 IF로 사용하고 웹 후크를 사용하는 것이므로이 명령을 수신하고 위에서 언급 한 API를 사용하여 NodeMCU에 정보를 보내는 것입니다. 동일한 켜기 애플릿 양식이 아래에 나와 있습니다.
당신이 선택해야합니다 텍스트 성분이있는 문구라고 구글 지원에 대한 조리법을 만들 때 옵션을 선택합니다. 마찬가지로 릴레이를 끄려면 가상 핀 V6에 대해 동일한 작업을 반복해야합니다. 자세한 내용은이 페이지 하단의 동영상을 확인하세요.
Blynk 홈 자동화를위한 Arduino 프로그래밍
이 프로젝트의 전체 Arduino 코드는이 페이지 하단에서 찾을 수 있습니다. 이에 대한 설명은 다음과 같습니다. 그 전에 Arduino IDE에서 Blynk 및 Program NodeMCU를 사용할 수 있는지 확인하십시오. 그렇지 않은 경우 ESP12 시작하기 문서를 따르십시오. 또한 보드 관리자를 사용하여 blynk 라이브러리를 Arduino IDE에 추가하십시오.
항상 그렇듯이 입력 및 출력 핀을 정의하여 코드를 시작합니다. 여기서 입력은 스위치에서, 출력은 릴레이에서 발생합니다. 아래에서 볼 수 있듯이 4 개의 스위치 모두에 대한 핀 이름을 sw로, 릴레이를 rel로 정의했습니다.
#define sw1 13 #define sw2 12 #define sw3 14 #define sw4 16 #define rel1 4 #define rel2 5 #define rel3 9 #define rel4 10
다음 단계에서는 blynk 인증 토큰과 같은 자격 증명과 nodeMCU가 연결되어야하는 Wi-Fi 라우터의 사용자 이름과 암호를 입력해야합니다. 깜박임 인증 토큰은 blynk 애플리케이션에서 얻을 수 있습니다. 이에 대해서는 blynk 응용 프로그램 설정 섹션에서 자세히 알아볼 것입니다.
char auth = "Fh3tm0ZSrXQcROYl_lIYwOIuVu-E"; // blynk 응용 프로그램에서 가져 오기 char ssid = "home_wifi"; char pass = "fakepass123";
다음으로 read_switch_toggle () 이라는 함수에 대한 정의를 제공했습니다. 이 함수에서는 스위치의 현재 상태와 이전 상태를 비교합니다. 스위치가 켜져 있거나 꺼져있는 경우, 즉 스위치가 토글 된 경우. 스위치 상태가 변경되면 기능이이 변경 사항을 모니터링하고 스위치 번호를 반환합니다. 변경이 감지되지 않으면 0을 반환합니다.
int read_switch_toggle () {int 결과 = 0; // (int i = 0; i <= 3; i ++)에 대한 이전 값을 모두 기록합니다. pvs_state = crnt_state; // 스위치의 현재 상태 읽기 crnt_state = digitalRead (sw1); crnt_state = digitalRead (sw2); crnt_state = digitalRead (sw3); crnt_state = digitalRead (sw4); // 현재 및 pvs 상태 비교 (int i = 0; i <= 3; i ++) {if (pvs_state! = crnt_state) {result = (i + 1); // 스위치가 토글되면 결과 반환 결과로 스위치 번호를 얻습니다. } 그렇지 않으면 결과 = 0; // 변경 결과가 없으면 0} return result; // 결과 반환}
다음으로 blynk 응용 프로그램에 대한 코드가 있습니다. 우리는 스마트 정션 박스를 제어하기 위해 가상 핀 V1 ~ V6을 사용할 것입니다. 핀 V1 ~ V4는 blynk 애플리케이션에서 직접 릴레이 1 ~ 4를 각각 제어하는 데 사용됩니다. 아래 코드는 blynk 응용 프로그램에서 V1이 트리거 될 때 발생하는 상황을 보여줍니다. 상태 (HIGH 또는 LOW)를 읽고 그에 따라 릴레이를 제어합니다.
BLYNK_WRITE (V1) {digitalWrite (rel1, param.asInt ()); Serial.println ("V1"); }
마찬가지로, 가상 핀은 blynk 애플리케이션에서 문자열을 읽는데도 사용할 수 있습니다. 나중에 IFTTT 및 Google Assistant를 사용하여 Google Assistant에서 NodeMCU 로 문자열 을 보내는 방법을 배우 겠지만 지금은 NodeMCU 코드가이 문자열을 읽고 특정 키워드를 검색하고 그에 따라 릴레이를 트리거하는 방법을 살펴 보겠습니다.
아래 코드에서 가상 핀 V5가 트리거되면 문자열이 ON_message 라는 문자열 변수로 전달되는 것을 볼 수 있습니다. 그런 다음이 문자열 변수와 inderOf 메소드를 사용하여 "lamp", "LED", "music", "TV"와 같은 키워드가 있는지 검색하고, 그렇다면 해당 특정 부하를 켭니다. 키워드 "모든 것"이 감지되면 모든 기능을 켭니다. V6에서도 릴레이를 끌 수 있습니다. IFTTT 섹션에 들어가면 이에 대해 더 많이 이해할 것입니다.
BLYNK_WRITE (V5) {문자열 ON_message = param.asStr (); Serial.println (ON_message); if (ON_message.indexOf ("lamp")> = 0) digitalWrite (rel1, HIGH); if (ON_message.indexOf ("LED")> = 0) digitalWrite (rel2, HIGH); if (ON_message.indexOf ("music")> = 0) digitalWrite (rel3, HIGH); if (ON_message.indexOf ("TV")> = 0) digitalWrite (rel4, HIGH); if (ON_message.indexOf ("everything")> = 0) {digitalWrite (rel1, HIGH); digitalWrite (rel2, HIGH); digitalWrite (rel3, HIGH); digitalWrite (rel4, HIGH); }}
마지막으로 루프 기능 내에서 스위치 위치가 변경된 버튼이 있는지 확인하기 만하면됩니다. 그렇다면 아래 그림과 같은 스위치 케이스를 사용하여 특정 릴레이의 위치를 전환합니다.
switch (toggle_pin) {case 0: break; 사례 1: Serial.println ("Toggling Relay 1"); digitalWrite (rel1, relay_state); 단절; 사례 2: Serial.println ("Toggling Relay 2"); digitalWrite (rel2, relay_state); 단절; 사례 3: Serial.println ("Toggling Relay 3"); digitalWrite (rel3, relay_state); 단절; 사례 4: Serial.println ("Toggling Relay 4"); digitalWrite (rel4, relay_state); 단절; }}
PCBGoGo를 사용하여 PCB 제작
이제 회로도가 어떻게 작동하는지 이해 했으므로 홈 자동화 프로젝트를 위한 PCB 구축을 진행할 수 있습니다. 위 회로의 PCB 레이아웃은 링크에서 Gerber로 다운로드 할 수도 있습니다.
- Google Assistant를 사용하여 음성 제어 홈 자동화 용 GERBER 다운로드
이제 디자인이 준비되었으므로 Gerber 파일을 사용하여 제작할 때입니다. PCBGOGO에서 PCB를 수행하는 것은 매우 쉽습니다. 아래 단계를 따르십시오.
1 단계: www.pcbgogo.com에 접속하여 처음이라면 가입하십시오. 그런 다음 PCB 프로토 타입 탭에서 PCB 치수, 레이어 수 및 필요한 PCB 수를 입력합니다. PCB가 80cm × 80cm라고 가정하면 아래와 같이 치수를 설정할 수 있습니다.
2 단계: 지금 견적 버튼 을 클릭하여 진행 합니다. 트랙 간격 등을 사용하는 재료와 같이 필요한 경우 몇 가지 추가 매개 변수를 설정할 수있는 페이지로 이동합니다. 그러나 대부분의 경우 기본값이 잘 작동합니다. 여기서 고려해야 할 유일한 것은 가격과 시간입니다. 보시다시피 빌드 시간은 2 ~ 3 일이며 PCB 비용은 5 달러입니다. 그런 다음 요구 사항에 따라 선호하는 배송 방법을 선택할 수 있습니다.
3 단계: 마지막 단계는 Gerber 파일을 업로드하고 결제를 진행하는 것입니다. 프로세스가 원활한 지 확인하기 위해 PCBGOGO는 지불을 진행하기 전에 Gerber 파일이 유효한지 확인합니다. 이렇게하면 PCB가 제작에 친숙하고 약속 된대로 도달 할 수 있습니다.
PCB 조립
보드를 주문한 후 며칠 후 깔끔하게 잘 포장 된 상자에 택배를 통해 내게 도착했고, 언제나처럼 PCB의 품질이 굉장했습니다. 제가받은 PCB는 아래와 같습니다. 보시다시피 상단 및 하단 레이어가 예상대로 나타납니다.
비아와 패드는 모두 적절한 크기였습니다. 작동 회로를 얻기 위해 PCB 보드에 조립하는 데 약 15 분이 걸렸습니다. 조립 된 보드는 아래와 같습니다.
AC 전원 장치 / 확장 보드와 보드 연결
보드는 가정의 AC 전원 소켓 내부에 고정되도록 설계되었습니다. 그러나이 프로젝트를 위해 확장 상자를 사용할 것입니다. 보다 영구적 인 솔루션을 원한다면 PCB의 길이가 AC 전원 소켓 내부에 배치 될 수있을만큼 컴팩트하다는 것을 알 수 있으므로 AC 전원 소켓 내부에 연결하십시오.
AC 주전원으로 작업하는 동안 안전 예방 조치를 따르십시오. 릴레이 및 스위치를 PCB 보드에 연결하는 방법을 이해하려면 아래 회로도를 따르십시오.
연결 다이어그램은 하나의 릴레이와 스위치에 대해서만 다운되었지만 나머지 세 개에 대해서도 동일하게 복제 할 수 있습니다. 연결이 완료되면 보드가 다음과 같이 보일 것입니다.
연결이 완료되면 나사 단자로 단단히 고정하고 추가 안전을 위해 핫 글루를 사용하십시오. 모든 것을 상자에 다시 포장하면 테스트 준비가 완료됩니다. 이 프로젝트의 전체 작업은 아래 비디오에서 찾을 수 있습니다.
기사를 즐겁게 읽고 유용한 것을 배웠기를 바랍니다. 질문이 있으시면 아래 댓글란에 남겨 주시거나 포럼을 이용 해주세요.