리모컨 대신 스마트 폰으로 에어컨을 제어하는 ​​방법은 무엇입니까?

현대 사회에서 주변을 둘러 보면 전자를 포함한 모든 것이 어느 정도 자동화되어 있음을 알 수 있습니다. 집에있는 소수의 사람들이 최신 자동화 기술을 채택하고 있습니다. 이 현대 시대에 사람들은 삶을 편하게 만들기 위해 최신 자동화 기술을 선택해야합니다. 일반적으로 우리 집에서는 의 위에 , 떨어져서 에어컨에서 수동으로 온도를 설정합니다. 요즘에는 릴레이 모듈과 같은 단일 구성 요소를 사용하여 가전 제품 전환, 보안 경보 모니터링, 차고 문 자동화 등과 같은 집의 다양한 전자 매개 변수를 제어 할 수 있습니다.이 기사에서는 리모컨 대신 모바일 애플리케이션을 사용하여 에어컨을 제어 할 수있는 시스템입니다. 안드로이드 모바일은 사람들 사이에서 가장 흔하기 때문에 안드로이드 애플리케이션은 에어컨을 제어하는 ​​가장 좋은 옵션입니다.



에어컨 제어

ESP32로 필요한 모든 주변 장치를 설정하는 방법은 무엇입니까?

프로젝트를 만들려면 프로젝트를 완료하는 데 필요한 기본 구성 요소가 무엇인지 알아야합니다. 따라서 작업을 시작하기 전에 훌륭한 접근 방식은 모든 구성 요소의 전체 목록을 작성하여 시간을 절약하고 프로젝트 중간에 갇힐 가능성을 피하는 것입니다. 시장에서 쉽게 구할 수있는 모든 구성 요소의 전체 목록은 다음과 같습니다. 하드웨어 구성 요소를 배치 한 후 에어컨을 제어하기위한 자체 Android 애플리케이션을 설계합니다.



1 단계 : 사용 된 구성 요소 (하드웨어)

  • ESP32
  • MakerFocus I2C OLED 디스플레이 모듈
  • 빛 의존 저항기
  • 푸시 버튼 스위치
  • IR 수신기
  • 1K 옴 저항기 (x4)
  • BC 338 NPN 트랜지스터
  • 점퍼 케이블
  • TSOP 수신기
  • 브레드 보드
  • 안드로이드 충전기

2 단계 : 사용 된 구성 요소 (소프트웨어)

우리가 만들 것이므로 무선 스위치 , 켜고 끄려면 버튼이 필요합니다. 이 버튼을 조작하기 위해 휴대폰을 사용하고 싶으므로이를위한 애플리케이션을 개발해야합니다. 가장 편리한 애플리케이션은 Android 애플리케이션이며 해당 애플리케이션에 연결하려면이 두 소프트웨어를 설치해야합니다. 둘 다 아래에 나열되어 있습니다.



  • 안드로이드 스튜디오
  • JAVA JDK

3 단계 : Android Studio 설치

설치하기 전에 안드로이드 스튜디오 , 먼저 JAVA JDK를 설치합니다. 이것을 설치하려면 exe 파일 위 링크에서 다운로드 한 다음 성공적으로 설치 될 때까지 다음을 클릭합니다. 이제 다음 단계를 수행하여 명령 프롬프트가 자바 외부 또는 내부 명령으로.



  1. 열다 제어판 그리고 클릭 시스템과 보안 .
  2. 클릭 체계.

    체계

  3. 클릭 고급 시스템 설정 그런 다음 환경 변수. 고급 시스템 설정

    고급 시스템 설정

  4. 시스템 변수 섹션에서 경로를 클릭 한 다음 편집을 클릭합니다. 새로운 환경 변수 편집 상자가 나타납니다.

    경로 편집



  5. 이제 이동 C : Program Files Java PC에서. JDK 폴더를 열고 bin 폴더를 클릭 한 다음 해당 폴더의 경로를 복사합니다.

    빈 폴더의 경로

  6. 이제 환경 변수 편집 상자로 이동하여 새로 만들기를 클릭하여 새 변수를 만듭니다. 위 단계에서 복사 한 경로를 새 변수에 붙여넣고 저장하십시오.
  7. 이제 확인을 위해 완전히 설치 되었으면 명령 프롬프트를 열고 다음을 입력하십시오. java – 버전.

    JAVA 버전

이제 컴퓨터에 Java JDK를 성공적으로 설치했습니다. 이제 컴퓨터에 Android Studio를 설치하겠습니다. 이 소프트웨어를 설치하는 것은 매우 쉽습니다. 다운로드 한 파일을 열고 소프트웨어가 완전히 설치 될 때까지 다음을 클릭해야합니다.

4 단계 : Firebase에 연결

이제 Android Studio를 설치 했으므로이를 시작하고 Firebase에 연결할 새 프로젝트를 만듭니다. 이렇게하려면 다음 단계를 따르십시오.

  1. Android Studio를 시작하고 클릭하여 새 프로젝트를 만듭니다. 빈 활동 .
  2. 이제 프로젝트 이름을 computerSwitc, 고르다 Kotlin 언어로 설정하고 휴대폰에 따라 최소 API 레벨을 선택하십시오.
  3. 라즈베리 파이의 핀을 제어하기 위해 인터넷을 사용할 것이므로. 앱에서 로컬 Wi-Fi에 액세스 할 수있는 권한을 설정합니다. 이렇게하려면 다음으로 이동하십시오. 앱> 매니페스트> AndroidManifest.xml 다음 명령을 추가하십시오.

    인터넷 권한

  4. 이제 n을 클릭하십시오. 도구. 드롭 다운 메뉴가 나타납니다. 중포 기지.

    Firebase 연결

  5. Firebase가 제공하는 거의 모든 서비스의 메뉴를 제공하는 큰 메뉴가 화면 오른쪽에 나타납니다. 하지만 현재 우리의 주요 초점은 실시간 데이터베이스입니다. 따라서 실시간 데이터베이스를 클릭하십시오. '에 대한 링크 데이터 저장 및 검색 ' 나타날거야. 해당 링크를 클릭하십시오.

    Firebase Assistant

  6. 연결 Firebase에 연결 단추. 기본 웹 브라우저로 이동합니다. 먼저 Gmail 계정에 로그인하라는 메시지가 표시됩니다. 그런 다음 앱에 실시간 데이터베이스 추가 변경 사항을 수락합니다.
  7. 이제 이동 Firebase 콘솔 . 이미 만들어진 프로젝트가 표시됩니다. 해당 프로젝트 아이콘의 Android 로고는 이미 Android 애플리케이션에 속해 있음을 의미합니다.
  8. 로부터 나타나게 하다 화면 왼쪽에 나타나는 메뉴에서 데이터 베이스. 버튼 데이터베이스 생성 오른쪽에 나타납니다. 그 버튼을 클릭하십시오.
  9. 데이터베이스 모드를 설정하라는 메뉴가 나타납니다. 클릭 시험 모드 그런 다음 활성화 .

    시험 모드

  10. 이제 기억해야 할 정말 중요한 단계는 Cloud Firestore ...에 실시간 데이터베이스. 이렇게하려면 아래 이미지에 표시된 버튼을 클릭하고 원하는 옵션을 변경하십시오.

    실시간 Firebase

  11. 이제 규칙 탭을 클릭하고 구성을 진실 . 모든 것이 완료되면 게시 .

    구성 변경

  12. Firebase를 연결하는 것 외에 수행해야 할 한 가지는 데이터베이스 버전을 업데이트하는 것입니다. 이를 위해 문서로 이동 . 이제 클릭 가이드 그리고 선택 Android 가이드 화면에 나타나는 목록에서. 표가 나타날 때까지 아래로 스크롤합니다. 해당 테이블에서 실시간 데이터베이스를 찾아 해당 버전을 찾으십시오. 제 경우에는 19.1.0.

    버전

  13. . 클릭 Gradle 스크립트, 화면 왼쪽에 메뉴가 있습니다. 그런 다음 세워짐. gradle (모듈 : 앱). 이제 코드에서 Real-Time 데이터베이스의 버전을 검색하고 새 데이터베이스로 바꿉니다.

    Firebase 버전

  14. 이제 화면 상단에 나타나는 동기화 버튼을 클릭하여 프로젝트를 동기화하십시오.

5 단계 : 레이아웃 만들기

이제 Android 애플리케이션이 firebase에 연결되었으므로 사용자가 컴퓨터를 켜거나 끄는 데 사용할 앱의 레이아웃을 만들어 보겠습니다. 레이아웃을 만들려면 app> res> 레이아웃> activity_main.xml. 레이아웃을 디자인 할 곳입니다. 아래에 제공된 코드를 복사하여 텍스트보기를 만드십시오.

 

앱의 레이아웃은 다음과 같습니다.

애플리케이션 레이아웃

6 단계 : ESP32 시작하기

이전에 Arduino IDE에서 작업 한 적이 없더라도 Arduino IDE 설정 단계가 아래에 나와 있으므로 걱정하지 마십시오.

  1. 다음에서 최신 버전의 Arduino IDE를 다운로드합니다. Arduino.
  2. Arduino 보드를 PC에 연결하고 제어판을 엽니 다. 클릭 하드웨어와 사운드. 지금 열다 장치 및 프린터 보드가 연결된 포트를 찾으십시오. 제 경우에는 COM14 하지만 컴퓨터마다 다릅니다.

    포트 찾기

  3. 파일을 클릭 한 다음 기본 설정을 클릭합니다. 다음 링크를 추가 이사회 관리자의 URL. “ https://dl.espressif.com/dl/package_esp32_index.json '

    환경 설정

  4. 이제 Arduino IDE와 함께 ESP32를 사용하려면 ESP32에서 코드를 굽고 사용할 수있는 특수 라이브러리를 가져와야합니다. 이 두 라이브러리는 아래 링크에 첨부되어 있습니다. 라이브러리를 포함하려면 스케치> 라이브러리 포함> ZIP 라이브러리 추가 . 상자가 나타납니다. 컴퓨터에서 ZIP 폴더를 찾고 확인을 클릭하여 폴더를 포함합니다.

    도서관 포함

  5. 이제 이동 스케치> 라이브러리 포함> 라이브러리 관리.

    도서관 관리

  6. 메뉴가 열립니다. 검색 창에 Arduino JSON. 목록이 나타납니다. 설치 Benoit Blanchon의 Arduino JSON.

    Arduino JSON

  7. 이제 도구. 드롭 다운 메뉴가 나타납니다. 보드를 다음으로 설정 ESP 개발 모듈.

    보드 설정

  8. 도구 메뉴를 다시 클릭하고 이전에 제어판에서 확인한 포트를 설정합니다.

    포트 설정

  9. 이제 아래 링크에 첨부 된 코드를 업로드하고 업로드 버튼을 클릭하여 ESP32 마이크로 컨트롤러에 코드를 굽습니다.

    업로드

따라서 이제 코드를 업로드 할 때 오류가 발생할 수 있습니다. 새 버전의 Arduino IDE 및 Arduino JSON을 사용하는 경우 발생할 수있는 가장 일반적인 오류입니다. 다음은 화면에 나타날 수있는 오류입니다.

C :  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h : 8 : 0, C :  Users  Pro  Desktop  airconditioner  code  code.ino : 2 : C에서 포함 된 파일 :  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h : 14 : 11 : error : StaticJsonBuffer는 ArduinoJson 5의 클래스입니다. 프로그램을 ArduinoJson으로 업그레이드하는 방법을 알아 보려면 arduinojson.org/upgrade를 참조하세요. 버전 6 StaticJsonBuffer jsonBuffer; ^ C :  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h : 8 : 0, C :  Users  Pro  Desktop  airconditioner  code  code.ino : 2에 포함 된 파일 : C :  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h : 65 : 11 : error : StaticJsonBuffer는 ArduinoJson 5의 클래스입니다. 프로그램을 업그레이드하는 방법을 알아 보려면 arduinojson.org/upgrade를 참조하세요. ArduinoJson 버전 6은 StaticJsonBuffer (). parseObject (_data);를 반환합니다. ^ 'WiFi.h'에 대해 여러 라이브러리를 찾았습니다. 사용 : C :  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  WiFi 사용되지 않음 : C :  Program Files ( x86)  Arduino  libraries  WiFi 폴더에서 버전 1.0의 라이브러리 WiFi 사용 : C :  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  WiFi 라이브러리 IOXhop_FirebaseESP32-master 사용 폴더 : C :  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master (레거시) 버전 1.2의 라이브러리 HTTPClient 사용 폴더 : C :  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  HTTPClient 폴더에서 버전 1.0의 라이브러리 WiFiClientSecure 사용 : C :  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  WiFiClientSecure 라이브러리 ArduinoJson 사용 폴더의 버전 6.12.0 : C :  Users  Pro  Documents  Arduino  libraries  ArduinoJson 종료 상태 1 보드 ESP32 Dev Module에 대한 컴파일 오류.

몇 가지 간단한 단계를 따르면 이러한 오류를 제거 할 수 있으므로 걱정할 필요가 없습니다. 이러한 오류는 Arduino JSON의 새 버전에 대신 다른 클래스가 있기 때문에 발생합니다. StaticJsonBuffer. 이것은 실제로 JSON 5의 클래스입니다. 따라서 Arduino IDE의 Arduino JSON 버전을 다운 그레이드하여이 오류를 간단히 제거 할 수 있습니다. 간단히 이동 스케치> 라이브러리 포함> 라이브러리 관리. 검색 Benoit Blanchon의 Arduino JSON 이전에 설치 한 적이 있습니다. 먼저 제거하고 버전을 5.13.5. 이제 이전 버전의 Arduino JSON을 설정 했으므로 다시 설치하고 코드를 다시 컴파일하십시오. 이번에는 코드가 성공적으로 컴파일됩니다.

7 단계 : 코드 이해

이 프로젝트의 코드는 매우 간단하며 아래에 간략하게 설명되어 있습니다. 또한 필요한 라이브러리가 포함 된 코드는 여기.

1. 처음에는 코드를 Firebase 데이터베이스에 연결하는 데 사용할 라이브러리 2 개와 마이크로 컨트롤러와 함께 IR 센서를 사용하는 두 번째 라이브러리를 포함해야합니다. 그런 다음 firebase의 호스트와 인증을 추가 할 것입니다. ESP32 우리를 찾을 수있을 것입니다 데이터 베이스 . 그런 다음 로컬 인터넷 연결의 SSID와 암호를 제공합니다. 그런 다음 클라우드에서 데이터를 푸시하고 팝할 수 있도록 개체를 만들어야합니다. 그런 다음 센서가 연결될 핀을 정의하고 IR 센서에서 오는 데이터를 처리 할 개체도 만듭니다.

#include #include #include #define FIREBASE_HOST 'coma-patient.firebaseio.com'#define FIREBASE_AUTH 'UrzlDZXMBNRhNdc5i73DRW10KFEuw8ZPEAN9lmdf'#define WIFI_SSID 'PRO'#define WIFI_PASSWORD 'abcdefgh'FirebaseData firebaseData; int RECV_PIN = 19; IRrecv irrecv (RECV_PIN); decode_results 결과;

2. 무효 설정 () 는 활성화 버튼을 누르거나 마이크로 컨트롤러의 전원을 켤 때 실행되는 루프입니다. 여기에서 IR 센서의 수신기를 시작하고 마이크로 컨트롤러를 로컬 인터넷 연결에 연결하기위한 코드를 작성합니다.

void setup () {Serial.begin (115200); pinMode (RECV_PIN, INPUT); irrecv.enableIRIn (); // 수신기를 시작합니다. // Wi-Fi에 연결합니다. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.println ( '연결'); while (WiFi.status ()! = WL_CONNECTED) {Serial.print ( '.'); 지연 (500); } Serial.println (); Serial.print ( '연결됨 :'); Serial.println (WiFi.localIP ()); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); Firebase.enableClassicRequest (firebaseData, true); }

삼. 무효 루프 () 루프에서 반복적으로 실행되는 함수입니다. 여기서이 코드는 값이 센서에서 오는지 확인합니다.

void loop () {if (irrecv.decode (& results)) {Serial.println (results.value, HEX); 덤프 (& results); irrecv.resume (); // 다음 값 받기} delay (500); }

네. 무효 덤프 () 센서에 신호를 보내는 리모컨의 모델을 먼저 식별하는 데 사용되는 기능입니다. 또한 decode_results 구조를 덤프합니다.

void dump (decode_results * results) {int count = results-> rawlen; if (results-> decode_type == UNKNOWN) {Serial.print ( '알 수없는 인코딩 :'); } else if (results-> decode_type == NEC) {Serial.print ( 'Decoded NEC :'); } else if (results-> decode_type == SONY) {Serial.print ( '디코딩 된 SONY :'); } else if (results-> decode_type == RC5) {Serial.print ( 'Decoded RC5 :'); } else if (results-> decode_type == RC6) {Serial.print ( 'Decoded RC6 :'); } else if (results-> decode_type == PANASONIC) {Serial.print ( 'Decoded PANASONIC-Address :'); Serial.print (결과-> panasonicAddress, HEX); Serial.print ( '값 :'); } else if (results-> decode_type == JVC) {Serial.print ( 'Decoded JVC :'); } Serial.print (결과-> 값, HEX); Serial.print ( '('); Serial.print (results-> bits, DEC); Serial.println ( '비트)'); Serial.print ( 'Raw ('); Serial.print (count, DEC); Serial.print ( ') :'); for (int i = 0; i rawbuf [i] * USECPERTICK, DEC); } else {Serial.print (-(int) results-> rawbuf [i] * USECPERTICK, DEC); } Serial.print ( ''); } Serial.println ( ''); }

8 단계 : 하드웨어 준비

코드를 ESP32에 구운 후 하드웨어를 준비하고 벽이나 에어컨 근처의 다른 적절한 장소에 부착해야합니다. 상단에 표시된 다이어그램을 따라 브레드 보드에 구성 요소를 부착합니다. 회로를 조립 한 후 Android 충전기를 사용하여 ESP 모듈의 전원을 켭니다. 집에서 하드웨어의 케이스를 디자인하거나 단순히 하드웨어를 Raspberry Pi 케이스 안에 넣는 것이 좋습니다.

9 단계 : 마지막 터치

하드웨어를 조립 한 후 테스트합니다. 안드로이드 충전기를 ESP32에 연결하고 전원을 켜고 휴대 전화가 지역의 신호 강도가 좋은지 확인합니다. 인터넷 연결 . 애플리케이션을 열고 버튼을 누르면 이제 모바일 애플리케이션으로 AC를 제어 할 수 있음을 알 수 있습니다.

오늘은이게 다였습니다.이 기사를 재미있게 읽고 집에서 에어컨을 제어 할 수있는 프로토 타입을 만든 후에 경험을 공유하는 것을 잊지 마십시오!