- 전제 조건 :
- 작업 개념 :
- ESP8266 용 Arduino IDE 프로그램 :
- 회로도 및 하드웨어 :
- ESP8266 IP 포트 포워딩 :
- Moni Android 애플리케이션 설치 :
- IFTTT 서비스를 사용하여 애플릿 생성 :
- 프로젝트 테스트 :
ESP8266 Wi-Fi 모듈을 사용하여 음성 제어 홈 자동화 시스템을 구축 할 또 다른 흥미로운 프로젝트에 오신 것을 환영합니다 . 여기에서 전 세계 어디에서나 Android 앱을 통해 음성을 사용하여 홈 AC 기기를 제어 할 수 있습니다. 예, 단순히 음성 명령을 사용하여 부하 (Light / Fans)를 켜거나 끄는 꿈은이 프로젝트가 끝날 때 실현 될 것입니다. 이 프로젝트는 네트워크를 통해 웹 서버를 사용하여 가전 제품을 제어 한 이전 프로젝트 Smart Junction Box for Home Automation의 변형입니다.
이 IOT 기반 음성 제어 홈 자동화 프로젝트는 구축하기가 매우 쉬우 며 값 비싼 음성 모듈을 구입할 필요가 없기 때문에 많은 비용이 들지 않습니다. 전체 프로젝트를 만드는 데 약 500INR (8 USD)가 소요되었습니다. 또한 이것은 마이크로 컨트롤러 독립 프로젝트 이므로 Arduino 또는 Raspberry pi와 같은 MCU / MP가 필요하지 않습니다. 전체 프로젝트는 ESP8266 모듈에서 실행됩니다. 여기에서 ESP8266에 대해 자세히 알아보십시오. 자, 이야기를 시작하겠습니다….
이전에는 다음 과 같은 다양한 기술을 사용하여 다양한 유형의 홈 자동화 를 다루었습니다.
- DTMF 기반 홈 자동화
- Arduino를 사용한 GSM 기반 홈 자동화
- Arduino를 사용한 PC 제어 홈 자동화
- 8051을 사용하는 Bluetooth 제어 홈 자동화
- Arduino를 사용한 IR 원격 제어 홈 자동화
- MATLAB 및 Arduino를 사용한 가정 자동화 프로젝트
- Raspberry Pi를 사용하는 RF 원격 제어 LED
- Arduino를 사용한 스마트 폰 제어 홈 자동화
전제 조건:
이 프로젝트는 ESP8266을 사용하는 이전 프로젝트 Smart Junction Box for Home Automation의 연속이므로 대부분의 하드웨어 부분은 이미 해당 튜토리얼에서 다루었습니다. 이 튜토리얼에서 다루는 정보를 건너 뛸 것이므로 이것을 계속하기 전에 친절하게 읽으십시오. 이전 프로젝트를 간략히 요약하기 위해 해당 튜토리얼에서 두 개의 릴레이와 ESP8266 모듈로 구성된 성능 보드를 콘솔 할 수있는 정션 박스 (확장 보드)를 수정했습니다. 두 개의 릴레이 (AC 부하)는 ESP8266에서 만든 웹 페이지 (웹 서버 역할을 함)를 사용하여 전환 할 수 있습니다. 이 튜토리얼에서는 스마트 폰을 통해 음성 명령을 사용하여 AC 부하를 제어 할 수 있도록 몇 가지 기능을 추가 할 것입니다.이 튜토리얼에서 하드웨어 부분을 다루지 않을 것입니다. 하드웨어와 코드는 이전 튜토리얼과 동일하게 유지됩니다.
또한 www.IFTTT.com을 사용하는 방법을 알면이 프로젝트에서 우위를 점할 수 있습니다. IFTTT에 익숙하지 않은 경우에도이 특정 튜토리얼에서 IFTTT를 사용하는 방법을 설명하여 작동하도록 할 것입니다.
작업 개념:
나는 당신이 이전 튜토리얼을 읽었다 고 가정합니다.이 경우에는 이제 그 접속 함을 만드는 방법과 웹 브라우저에서 원격으로로드를 토글하는 방법을 알아야합니다. 이를 가능하게하기 위해 ESP8266에 할당 된 IP 주소를 공개적으로 사용할 수 있도록했습니다. 이것은 "포트 포워딩 기술"로 수행 할 수 있습니다. 그런 다음 Android / IPhone 모바일 장치에 "Moni"라는 모바일 응용 프로그램을 설치합니다. 이 응용 프로그램은 우리의 음성을 인식하고 정보를 IFTT 애플릿에 전달하며 이는 차례로 Maker 웹 후크를 통해로드를 제어합니다.
약간 지루하게 들릴지 모르지만이 모든 것은이 튜토리얼에서 명확하게 설명되었으며 몇 번의 클릭만으로 위의 모든 것을 만들 수 있습니다. 이 튜토리얼은 사진과 비디오의 도움으로 가능한 최선의 방법으로 당신을 도울 것입니다. 이 튜토리얼이 끝나면 전 세계 어디에서나 음성을 통해 가전 제품을 켜거나 끌 수 있습니다. 튜토리얼 끝에서 전체 코드 및 데모 비디오 를 확인하십시오.
또한 16x2 LCD에서 Raspberry Pi 및 음성 입력을 사용하여 음성 제어 조명을 확인하십시오.
ESP8266 용 Arduino IDE 프로그램:
이전 프로젝트에서와 마찬가지로 Arduino IDE의 도움으로 ESP8266 모듈을 프로그래밍 할 것입니다. 프로그램에 약간의 수정이 있습니다. 이 수정은 ESP8266이 라우터와의 연결을 설정할 때마다 일정한 IP 주소에 연결되도록 만들어졌습니다. 이 프로그램은이 네 줄을 제외하고 이전 코드와 정확히 동일합니다.
// 매번 상수 IP 얻기 IPAddress ip (192, 168, 0, 104); // 이것은 내 ESP 모듈의 IP 여야합니다. IPAddress gateway (192, 168, 0, 1); // 네트워크와 일치하도록 게이트웨이 설정 대부분의 게이트웨이는 기본적으로 동일합니다. Serial.print (F ("Setting static ip to:")); Serial.println (ip); IPAddress 서브넷 (255, 255, 255, 0); // 네트워크와 일치하도록 서브넷 마스크 설정 WiFi.config (ip, gateway, subnet);
여기서 IPAddress 대신 ip (192, 168, 0, 104); 원하는 IP 주소를 입력하십시오. 이 경우 내 ESP는 항상 192.168.0.104에 연결되며 브라우저에서이 IP를 사용하여 간단히 액세스 할 수 있습니다. 이 튜토리얼의 끝에 제공된 전체 코드입니다.
회로도 및 하드웨어:
이 IoT 기반 음성 제어 가전 제품의 회로도 및 하드웨어는 이전의 Smart Junction 프로젝트와 동일하며 거기에서 회로도를 설명 했으므로 친절하게 진행합니다. 여기에서 전체 회로도를 참조 할 수 있습니다.
ESP8266 IP 포트 포워딩:
첫 번째 단계는 라우터 (모뎀)에서 포트 포워딩을 활성화하여 공용 IP를 입력하기 만하면 전 세계 어디에서나 ESP에 액세스 할 수 있도록하는 것입니다. ESP8266이 가정 / 사무실 라우터에 연결될 때마다 고유 IP 주소가 부여되며이 IP 주소는 웹 브라우저를 통해 ESP8266에 액세스하는 데 사용됩니다. 이 IP 주소는 가정 / 사무실 네트워크 내에서 제한되므로 전역 적으로 액세스 할 수 없습니다. 라우터에 연결된 장치에서만 액세스 할 수 있습니다. 포트 포워딩 은이 웹 페이지를 전 세계적으로로드 할 수있는 기술입니다. 포트 포워딩 후 공용 IP를 사용하여 전 세계 어디에서나이 웹 페이지에 액세스 할 수 있습니다. 멋지다! 우리가 이것을 어떻게 할 수 있는지 보자. 이를 위해 다음 사항을 미리 알고 있어야합니다.
1. 라우터의 제조업체 이름과 IP 주소. 라우터를 보면 쉽게 찾을 수 있습니다. IP 주소는 스티커에도 표시됩니다. Google이 아닌 경우 라우터 IP를 알 수 있습니다.
2. 라우터 로그인 페이지의 사용자 이름과 비밀번호. 대부분의 라우터는 사용자 이름이 "admin"이고 암호가 "admin"입니다.
3. ESP8266 모듈에 할당 된 IP 주소. ESP 모듈의 웹 페이지에 액세스하는 데 사용하는 주소입니다.
4. 인터넷 서비스 공급자의 IP 주소 (공용 IP 주소). 이것은 단순히 "내 IP는 무엇인가"를 Goggling하여 찾을 수 있습니다.
모든 것이 준비되면 아래 단계에 따라 포트 포워딩을 수행 할 수 있습니다. 무언가를 찾는 데 어려움이 있다면 아래의 주석 섹션을 사용하십시오. 내가 도와 줄게.
1 단계: 라우터의 IP 주소 (일반적으로 192.168.1.1)를 사용하여 라우터 웹 관리 유틸리티 페이지에 로그인합니다. 내 화면은 다음과 같습니다.
2 단계: 기본적으로 사용자 이름 "admin"을 입력하고 기본적으로 암호 "admin"을 입력하고 로그인을 클릭합니다. 아래와 같은 유틸리티 페이지로 이동합니다.
여기에 표시되는 대부분의 정보는 매우 기밀이므로 인터넷 보안을 위험에 빠뜨릴 수있는 알려지지 않은 정보와 공유하지 마십시오.
3 단계: 위에 표시된대로 페이지의 왼쪽 하단에 모든 옵션이 나열됩니다. 우리의 목표는 "가상 서버"라는 이름을 찾는 것입니다. 전달 옵션에 내 목록이 있습니다. 대부분의 라우터는 6, 7 또는 8 번째 옵션 으로 나열됩니다 (대부분 DHCP 설정 아래). 그것을 찾아 클릭하십시오
4 단계: 이제 ESP 모듈에 할당 된 IP 주소와 IP를 전달하기위한 포트 번호를 입력해야합니다. 제 경우에는 새로 추가 를 클릭 하고 세부 정보를 입력해야합니다. 당신에게는 약간 다를 수 있습니다. IP 주소는 ESP 모듈의 웹 페이지에 액세스하는 데 사용하는 주소입니다. 포트 번호는 사용자가 선택할 수 있지만 단순화를 위해 "80"을 사용하겠습니다. 내 ESP8266 모듈에 할당 된 IP는 192.168.0.104이므로 내 전달은 다음과 같습니다.
5 단계: 이제 공용 IP 주소를 알아야합니다. "What is my IP"에 대한 내 Goggling을 찾을 수 있습니다. ISP IP는 매우 기밀로 유지되어야합니다. 이 자습서에서는 내 IP 주소가 987: 654: 321: 123이라고 가정하겠습니다. 나머지 자습서에서는이 주소를 ISP IP로 사용하겠습니다.
참고: ISP에서 고정 / 동적 IP를 제공했을 수 있습니다. 동적 IP 인 경우 모뎀 / 라우터를 다시 시작할 때마다 IP가 변경됩니다. 이 경우 DynDNS와 같은 것을 사용해야합니다. 그러나 이것은이 튜토리얼의 범위를 벗어납니다. 동적 IP라도 라우터를 재설정하지 않는 한 작동합니다.
즉, 포트 포워딩이 성공한 것입니다. ISP IP: portname (987: 654: 321: 123: 80)을 브라우저에 입력하여 ESP 웹 페이지가로드되는지 확인할 수 있습니다. 모든 것이 예상대로 진행되면 ISP IP 주소를 사용하여 전 세계 어디에서나로드를 전환 할 수 있습니다.
Moni Android 애플리케이션 설치:
Moni 는 Android, Windows, iTunes 및 Skype에서도 사용할 수있는 응용 프로그램입니다. 이 애플리케이션을 모바일로 다운로드 할 수 있습니다. Moni.ai는 음성 명령에 응답하는 것 외에 훨씬 더 많은 기능을 제공하며 개발자 친화적이며 시각적으로 대화를 빠르게 정의하고 서비스에 연결할 수 있습니다. Moni.ai는 쉽게 보이스 채널을 생성하고 비즈니스 / 프로젝트를위한 자체 Chabot (AI) 시스템을 구축하고 자연어로 자동화 할 수있는 Node-Red라는 애플리케이션을 사용합니다. 가장 좋은 점은 Moni가 비상업적 용도로 완전히 무료라는 것입니다.
Android 휴대 전화를 사용하고 있으므로 Google Play 스토어에서 Moni를 직접 다운로드합니다. 설치 후 무료 계정을 만들고 로그인하면 앱이 다음과 같이 보일 것입니다.
날씨, 시간 등을 묻는 것과 같은 다른 가상 비서처럼 사용할 수 있습니다. 그러나 추가로 Ifttt 서비스에서 만든 애플릿에 응답 할 수 있습니다. 지금 애플리케이션에 대한 애플릿을 만드는 방법을 살펴 보겠습니다.
IFTTT 서비스를 사용하여 애플릿 생성:
우리는이 프로젝트를 완료하는 데 한 걸음 남았습니다. 마지막 단계는 IFTTT 웹 사이트에서 애플릿을 만드는 것입니다. 여기에서 Moni 에게 가정에서 다양한 가전 제품을 제어하기 위해 다양한 음성 명령을 지시 합니다.
이 음성 제어 정션 박스를 사용하여 아래 비디오와 같이 수족관 부하 (라이트 / 필터) 를 전환하고 있습니다. 따라서 해당 요구 사항에 맞게 애플릿을 사용자 정의하고 있으며 사용자의 목적에 맞게 사용자 정의 할 수 있습니다. 아래 단계를 따르십시오.
1 단계: www.IFTTT.com을 방문하여 계정으로 로그인합니다. 새로운 경우 가입하십시오.
2 단계: 이제 "검색"을 클릭하고 Make Webhooks를 입력합니다. 그것을 선택하고 "연결"을 클릭하십시오. 연결하는 단계를 따릅니다.
3 단계: 이제 다시 "검색"을 클릭하고 Moni를 입력합니다. Moni를 선택하고 "연결"을 클릭합니다. 연결을 활성화하려면 IFTTT 계정으로 로그인하십시오.
4 단계: "Maker Webhooks"및 "Moni"서비스에 연결했습니다. 이제 이러한 서비스로 애플릿을 만들 수 있습니다. 내 애플릿을 클릭 한 다음 "새 애플릿"을 클릭합니다. 다음과 같은 내용이 표시되어야합니다.
이 화면에서 "this"를 클릭하고 "Moni"를 선택해야합니다. 그런 다음“Ask Moni to perform an action”을 클릭하면 아래 화면으로 이동합니다.
5 단계: 위 이미지를 작성한대로 세부 사항을 입력하십시오. 여기서 내 임무는 "Turn on Aquarium Lights"라고 말하면 Aquarium Lights (Load 1)를 켜는 것입니다. 그런 다음 "트리거 생성"을 클릭합니다.
6 단계: "이것이 그 이상인 경우"화면으로 돌아갑니다. 이제 "that"을 클릭하고 "Maker Webhooks"를 입력하고 선택합니다. 그런 다음 "웹 요청 만들기"를 클릭합니다. 아래 화면으로 이동합니다.
이것은 실수 할 가능성이 가장 높은 중요한 단계입니다. 이 페이지에서로드 할 URL을 입력하십시오. 제 경우에는 switch1에 연결된 부하를 켜고 싶으므로 http: // 987: 654: 321: 123 / switch1On 라인을 사용하여 내 IP를 공용 IP 주소로 대체해야합니다. 이것은 이전 튜토리얼에서 내 코드를 사용한 경우에만 작동합니다. 로드 전환을위한 전체 URL 목록은 다음과 같습니다.
URL |
프로그램의 키워드 |
동작 |
http: // 987: 654: 321: 123 / switch1On |
Switch1On |
GPIO_0을 높게하여 Load 1을 ON |
http: // 987: 654: 321: 123 / switch1Off |
Switch1Off |
GPIO_0을 낮게 설정하여 부하 1을 끕니다. |
http: // 987: 654: 321: 123 / switch2On |
Switch2On |
GPIO_2를 높게 설정하여 부하 2를 켭니다. |
http: // 987: 654: 321: 123 / switch2Off |
Switch2Off |
GPIO_2를 낮게 설정하여 부하 1을 끕니다. |
원하는 URL을 입력 한 후 "작업 생성"을 클릭합니다. 그런 다음 마침을 클릭하십시오. 마찬가지로 4 개의 애플릿을 생성하여 정션 박스의 두 부하를 모두 켜거나 끌 수 있습니다.
즉, 애플릿이 작동 할 준비가되었으며 아래와 같이 "내 애플릿"아래에 나타나야합니다.
코드를 테스트 할 시간입니다…….
프로젝트 테스트:
마지막으로 프로젝트 준비가되었습니다. 테스트 해 보겠습니다. 전원을 켜고 휴대폰에서 Moni 애플리케이션을 엽니 다. 마이크 아이콘을 클릭하고 명령을 말하십시오. 제 경우에는“Turn on Aquarium Lights”이고“OK”라고 응답하고 조명을 켜야합니다. 아래의 전체 코드와 데모 비디오를 확인하십시오.
프로젝트가 마음에 들고 제대로 작동하기를 바랍니다. 어딘가에 갇혀 있다면 아래 댓글 섹션을 사용하면 반드시 도와 드리겠습니다. 그때까지 또 다른 흥미로운 프로젝트로 당신을 만날 것입니다.
여기에서 다른 IoT 기반 프로젝트도 확인하세요.