휴대폰은 세기의 혁신적인 발명품입니다. 주로 전화와 문자 메시지를주고 받도록 설계되었지만 스마트 폰이 등장한 후 전 세계가되었습니다. 이 프로젝트에서 우리는 단순한 GSM 기반 전화를 사용하여 자신의 전화를 통해 SMS를 보내는 것만으로 가전 제품을 제어 할 수있는 홈 자동화 시스템을 구축하고 있습니다. 이 프로젝트에서는 스마트 폰이 필요하지 않습니다. 오래된 GSM 전화 만 있으면 어디서나 모든 가전 제품을 켜고 끌 수 있습니다. 여기에서 더 많은 무선 홈 자동화 프로젝트를 확인할 수도 있습니다. Arduino를 사용한 IR 원격 제어 홈 자동화, DTMF 기반 홈 자동화와 함께 Bluetooth 제어 홈 자동화, Arduino를 사용한 PC 제어 홈 자동화.
작업 설명
이 프로젝트에서 Arduino 는 전체 프로세스를 제어하는 데 사용됩니다. 여기서 우리는 가전 제품을 제어하기 위해 GSM 무선 통신을 사용했습니다. AC 가전 제품을 제어하기 위해“# A.light on *”,“# A.light off *”등과 같은 명령을 보냅니다. Arduino에서 GSM을 통해 주어진 명령을받은 후 Arduino는 릴레이 드라이버를 사용하여 가전 제품을 켜거나 끄는 신호를 릴레이로 보냅니다.
회로 구성 요소:
- Arduino UNO
- GSM 모듈
- ULN2003
- 릴레이 5V
- 홀더가있는 전구
- 전선 연결
- 브레드 보드
- 16x2 LCD
- 전원 공급
- 휴대폰
여기서는 명령 문자열에 "#A"라는 접두사를 사용했습니다. 이 접두사는 기본 명령이 그 옆에 오는 것을 식별하는 데 사용되며 문자열 끝에 *는 메시지가 종료되었음을 나타냅니다.
모바일로 GSM 모듈로 SMS를 보내면 GSM은 그 SMS를 받아 아두 이노로 보냅니다. 이제 Arduino는이 SMS를 읽고 수신 된 문자열에서 주 명령을 추출하여 변수에 저장합니다. 그 후 Arduino는이 문자열을 미리 정의 된 문자열과 비교합니다. 일치가 발생하면 Arduino는 릴레이 드라이버를 통해 릴레이로 신호를 보내 가전 제품을 켜고 끕니다. 또한 적절한 명령을 사용하여 상대 결과도 16x2 LCD에 인쇄됩니다.
이 프로젝트에서는 팬, 조명 및 TV를 나타내는 데모를 위해 3 개의 제로 와트 전구를 사용했습니다.
다음은 팬, 조명 및 TV를 켜고 끄기 위해 SMS를 통해 보내는 메시지 목록입니다.
S.no. |
메시지 |
조작 |
1 |
#A. 팬 온 * |
팬 ON |
2 |
#A. 팬 끄기 * |
팬 끄기 |
삼 |
#A. 불 켜짐 * |
불을 켜다 |
4 |
#A. 소등 * |
조명 끄기 |
5 |
# A.tv on * |
TV 켜짐 |
6 |
# A.tv 끄기 * |
TV 끄기 |
7 |
#A. 모두 켜짐 * |
모두 켜짐 |
8 |
#A. 모두 끄기 * |
모두 끄기 |
GSM 모듈:
GSM 모듈 은 GSM (Global System for Mobile Communications) 기술을 기반으로하는 많은 통신 장치에 사용됩니다. 컴퓨터를 사용하여 GSM 네트워크와 상호 작용하는 데 사용됩니다. GSM 모듈은 AT 명령 만 이해 하며 그에 따라 응답 할 수 있습니다. 가장 기본적인 명령은 "AT"입니다. GSM이 OK로 응답하면 정상 작동하는 것입니다. 그렇지 않으면 "ERROR"로 응답합니다. 전화 응답을위한 ATA, 전화를 걸기위한 ATD, 메시지를 읽기위한 AT + CMGR, SMS를 보내기위한 AT + CMGS 등과 같은 다양한 AT 명령이 있습니다. AT 명령 뒤에는 Carriage return ie \ r (16 진수로 0D), "AT + CMGS \ r"와 같습니다. 다음 명령을 사용하여 GSM 모듈을 사용할 수 있습니다.
ATE0-에코 끄기
AT + CNMI = 2,2,0,0,0
ATD
AT + CMGF = 1
AT + CMGS =”휴대폰 번호”
>> 이제 메시지를 작성할 수 있습니다.
>> 메시지 작성 후
Ctrl + Z 메시지 보내기 명령 (10 진수 26).
HEX에서 ENTER = 0x0d
SIM900는 완전한 쿼드 밴드 GSM / GPRS 모듈 / GSM을 제공합니다 낮은 전력 소모와 음성, SMS 및 데이터 850 / 1,800분의 900 / 1900MHz의 성능을 GPRS.
회로 설명
이 GSM 기반 홈 자동화 회로의 연결 은 매우 간단합니다. 여기서는 액정 디스플레이가 4 비트 모드에서 arduino에 직접 연결된 가전 제품의 상태를 표시하는 데 사용됩니다. LCD의 데이터 핀 즉 RS, EN, D4, D5, D6, D7은 arduino 디지털 핀 번호 6, 7, 8, 9, 10, 11에 연결되며 GSM 모듈의 Rx 및 Tx 핀은 Tx와 Rx에 직접 연결됩니다. Arduino의 핀. 그리고 GSM 모듈은 12V 어댑터를 사용하여 전원이 공급됩니다. 5V SPDT 3 릴레이는 LIGHT, FAN 및 TV를 제어하는 데 사용됩니다. 릴레이는 각각 LIGHT, FAN 및 TV를 제어하기 위해 릴레이 드라이버 ULN2003을 통해 arduino 핀 번호 3, 4 및 5에 연결됩니다.
코드 설명
이 프로젝트의 프로그래밍 부분에서는 우선 프로그래밍에 액정 디스플레이 용 라이브러리를 포함시킨 다음 LCD 및 가전 제품 용 데이터 및 제어 핀을 정의합니다.
#포함
이 시리얼 통신은 9600bps로 초기화되고 사용 된 핀에 방향을 제공합니다.
void setup () {lcd.begin (16,2); Serial.begin (9600); pinMode (led, OUTPUT); pinMode (팬, 출력); pinMode (Light, OUTPUT); pinMode (TV, OUTPUT);
직렬로 데이터를 수신하기 위해 직렬 데이터가 들어오는 지 확인하는 Serial.available 과 직렬로 들어오는 데이터 를 읽는 Serial.read의 두 가지 기능을 사용했습니다.
while (Serial.available ()) {char inChar = Serial.read ();
직렬로 데이터를 수신 한 후 문자열에 저장 한 다음 Enter를 기다립니다.
void serialEvent () {while (Serial.available ()) {if (Serial.find ("# A.")) {digitalWrite (led, HIGH); 지연 (1000); digitalWrite (led, LOW); while (Serial.available ()) {char inChar = Serial.read (); str = inChar; if (inChar == '*') {임시 = 1; 반환; }
Enter가 시작되면 수신 된 문자열을 이미 정의 된 문자열과 비교하고 문자열이 일치하면 코드에 주어진 적절한 명령을 사용하여 상대 연산을 수행합니다.
void check () {if (! (strncmp (str, "tv on", 5))) {digitalWrite (TV, HIGH); lcd.setCursor (13,1); lcd.print ("ON"); 지연 (200); } else if (! (strncmp (str, "tv off", 6))) {digitalWrite (TV, LOW); lcd.setCursor (13,1); lcd.print ("꺼짐"); 지연 (200); }