- 필요한 재료
- 사용 된 소프트웨어
- GSM 모듈
- AT 명령어를 사용하여 GSM 모듈과 통신
- ATMega16 GSM 모듈 인터페이스 회로도
- CodeVision을 사용하여 ATmega16 용 프로젝트 생성
- 코드 및 설명
- 프로젝트 구축
- Atmega16에 코드 업로드
GSM 모듈 은 특히 프로젝트에 원격 액세스가 필요할 때 사용하기에 흥미 롭습니다. 이 모듈은 전화 걸기 / 받기, SMS 보내기 / 받기, GPRS를 사용하여 인터넷 연결 등과 같이 일반 휴대폰이 할 수있는 모든 작업을 수행 할 수 있습니다. 일반 마이크와 스피커를이 모듈에 연결하고 대화 할 수도 있습니다. 모바일 통화. 이것은 마이크로 컨트롤러와 인터페이스 할 수 있다면 많은 창의적인 프로젝트의 문을 열 것입니다. 따라서이 튜토리얼 에서는 GSM 모듈 (SIM900A)을 AVR 마이크로 컨트롤러 ATmega16 과 인터페이스하는 방법을 배우고 GSM 모듈을 사용하여 메시지 를 송수신 하여 이를 시연합니다.
필요한 재료
- Atmega16
- GSM 모듈 (SIM900 또는 기타)
- LCD 디스플레이
- 푸시 버튼
- 10k 저항기, 전위차계
- 전선 연결
- 12V 어댑터
- USBasp 프로그래머
- 10 핀 FRC 케이블
사용 된 소프트웨어
CodeVisionAVR 소프트웨어를 사용하여 코드를 작성하고 SinaProg 소프트웨어를 사용하여 USBASP 프로그래머를 사용하여 코드를 Atmega16에 업로드합니다.
주어진 링크에서 이러한 소프트웨어를 다운로드 할 수 있습니다.
CodeVisionAVR:
SinaProg:
회로도와 코드로 들어가기 전에 GSM 모듈과 그 작동에 대해 배웁니다.
GSM 모듈
GSM 모듈은 AT 명령 모드를 사용하여 마이크로 컨트롤러 없이도 사용할 수 있습니다. 위에 표시된대로 GSM 모듈에는 MAX232 모듈을 사용하여 컴퓨터에 직접 인터페이스 할 수있는 USART 어댑터가 함께 제공되거나 Tx 및 Rx 핀을 사용하여 마이크로 컨트롤러에 연결할 수 있습니다. 마이크 또는 스피커를 연결할 수있는 MIC +, MIC-, SP +, SP- 등과 같은 다른 핀도 확인할 수 있습니다. 모듈은 일반 DC 배럴 잭을 통해 12V 어댑터로 전원을 공급할 수 있습니다.
모듈의 슬롯에 SIM 카드를 삽입하고 전원을 켜면 전원 LED가 켜집니다. 이제 1 분 정도 기다리면 빨간색 (또는 다른 색상) LED가 3 초마다 한 번씩 깜박이는 것을 볼 수 있습니다. 이는 모듈이 SIM 카드와의 연결을 설정할 수 있음을 의미합니다. 이제 모듈을 전화 또는 마이크로 컨트롤러와 연결하는 과정을 진행할 수 있습니다.
GSM 모듈을 사용하여 다음과 같은 많은 멋진 프로젝트를 만들 수 있습니다.
- GSM 및 Arduino를 사용한 무선 게시판
- Arduino 및 GSM 모듈을 사용한 자동 전화 응답기
- Arduino를 사용한 GSM 기반 홈 자동화
- PIR 센서 및 GSM 기반 보안 시스템
또한 여기에서 모든 GSM 관련 프로젝트를 확인하십시오.
AT 명령어를 사용하여 GSM 모듈과 통신
짐작할 수 있듯이 GSM 모듈은 직렬 통신을 통해 통신 할 수 있으며 하나의 언어 만 이해할 수 있습니다. 바로 " AT 명령 "입니다. GSM 모듈에 말하거나 요청하고 싶은 것은 AT 명령을 통해서만 가능합니다. 예를 들어 모듈이 활성 상태인지 알고 싶다면. "AT"와 같은 명령을 요청 (전송)하면 모듈이 "OK"라고 응답합니다.
이러한 AT 명령은 데이터 시트에 잘 설명되어 있으며 공식 데이터 시트에서 찾을 수 있습니다. 괜찮아! 괜찮아! 271 페이지의 데이터 시트이며 읽는 데 며칠이 걸릴 수 있습니다. 그래서 나는 당신이 이것을 빨리 시작하고 실행할 수 있도록 아래에 가장 중요한 몇 가지 AT 명령을 제공했습니다.
에서 |
확인을 위해 OK로 답장 |
AT + CPIN? |
신호 품질 확인 |
AT + COPS? |
서비스 제공 업체 이름 찾기 |
ATD96XXXXXXXX; |
세미콜론으로 끝나는 특정 번호로 전화 |
AT + CNUM |
SIM 카드 번호 찾기 (일부 SIM에서는 작동하지 않을 수 있음) |
ATA |
수신 전화에 응답 |
ATH |
현재 수신 전화 끊기 |
AT + COLP |
수신 전화 번호 표시 |
AT + VTS = (숫자) |
DTMF 번호를 보냅니다. (숫자)에 대해 모바일 키패드의 모든 번호를 사용할 수 있습니다. |
AT + CMGR |
AT + CMGR = 1은 첫 번째 위치에서 메시지를 읽습니다. |
AT + CMGD = 1 |
첫 번째 위치에서 메시지 삭제 |
AT + CMGDA =”모두 삭제” |
SIM에서 모든 메시지 삭제 |
AT + CMGL =”모두” |
SIM에서 보낸 모든 메시지 읽기 |
AT + CMGF = 1 |
SMS 구성을 설정합니다. "1"은 텍스트 전용 모드입니다. |
AT + CMGS =“+91 968837XXXX” > CircuitDigest 텍스트
|
여기에서 특정 번호로 SMS를 보냅니다. 968837XXXX. ">"가 표시되면 텍스트 입력을 시작합니다. Ctrl + Z를 눌러 텍스트를 보냅니다. |
AT + CGATT? |
SIM 카드에서 인터넷 연결을 확인하려면 |
AT + CIPSHUT |
TCP 연결을 종료하려면 인터넷 연결을 끊는 것을 의미합니다. |
AT + CSTT = "APN", "사용자 이름", "통과" |
APN 및 패스 키로 GPRS에 연결합니다. 네트워크 공급자로부터 얻을 수 있습니다. |
AT + CIICR |
SIM 카드에 데이터 팩이 있는지 확인 |
AT + CIFSR |
SIM 네트워크의 IP 가져 오기 |
AT + CIPSTART =“TCP”,”서버 IP”,”포트” |
TCP IP 연결을 설정하는 데 사용됩니다. |
AT + CIPSEND |
이 명령은 데이터를 서버로 보내는 데 사용됩니다. |
여기서는 AT + CMGF 및 AT + CMGS 명령을 사용하여 메시지를 보냅니다.
Arduino와 함께 GSM 모듈을 사용한 경우 메시지를 수신하는 동안 + CMT: 명령을 사용 하여 시리얼 모니터에서 휴대폰 번호와 문자 메시지를 볼 수 있습니다. 문자 메시지는 그림과 같이 두 번째 줄에 표시됩니다.
이 + CMT: 명령을 스캔하여 메시지를 사용할 수 있는지 여부를 확인합니다.
ATMega16 GSM 모듈 인터페이스 회로도
연결은 다음과 같습니다
- GSM 모듈의 Tx 및 Rx는 각각 Atmega16의 Rx (Pin14) 및 Tx (Pin15)에 연결됩니다.
- PD5 (Pin19) 및 PD6 (Pin20)에 버튼을 누릅니다.
- LCD 연결:
- RS-PA 0
- R / W-PA1
- EN-PA2
- D4-PA4
- D5-PA5
- D6-PA6
- D7-PA7
CodeVision을 사용하여 ATmega16 용 프로젝트 생성
설치 한 후 CodeVisionAVR 와 SinaProg 소프트웨어를 , 프로젝트 및 쓰기 코드를 작성하는 단계 아래를 따르십시오:
이미 업로드 됨
1 단계. CodeVision 열기 File-> New-> Project를 클릭합니다. 확인 대화 상자가 나타납니다. 예를 클릭하십시오.
2 단계. CodeWizard가 열립니다. 첫 번째 옵션 (예: AT90 )을 클릭하고 확인을 클릭합니다.
3 단계:- 마이크로 컨트롤러 칩을 선택합니다. 여기서는 그림과 같이 Atmega16L을 사용합니다.
4 단계: USART를 클릭합니다. 수신기 및 송신기 를 클릭하여 선택하십시오. 아래 그림과 같이:
5 단계: 영숫자 LCD를 클릭하고 영숫자 LCD 지원 활성화를 선택 합니다 .
6 단계: 프로그램-> 생성, 저장 및 종료를 클릭 합니다 . 이제 우리 작업의 절반 이상이 완료되었습니다.
7 단계:- 파일이 폴더에 남아 있도록 데스크톱에 새 폴더를 만듭니다. 그렇지 않으면 전체 데스크톱 창에 흩어져 있습니다. 원하는대로 폴더 이름을 지정하고 프로그램 파일을 저장할 때 동일한 이름을 사용하는 것이 좋습니다.
파일을 저장하기 위해 세 개의 대화 상자가 차례로 나타납니다.
첫 번째를 저장 한 후 표시되는 다른 두 개의 대화 상자에 대해서도 동일하게 수행하십시오.
이제 작업 공간은 다음과 같습니다.
대부분의 작업은 마법사의 도움으로 완료됩니다. 이제 GSM 전용 코드를 작성해야합니다.
코드 및 설명
모든 헤더 파일은 프로젝트 생성 후 자동으로 첨부되므로 delay.h 헤더 파일을 포함하고 모든 변수를 선언하면됩니다. 이 튜토리얼의 끝에 완전한 코드 가 제공됩니다.
#포함
UDR 레지스터에서 데이터를받는 함수를 만듭니다. 이 함수는 수신 된 데이터를 반환합니다.
unsigned char received_value (void) { while (! (UCSRA & (1 <
두 개의 if 문 을 생성 하는 while 루프로 오세요 . 하나는 메시지를 보내고 다른 하나는. 송신 버튼은 ATmega의 PIND6와 연결되고 PIND5로 메시지 수신 버튼입니다.
PIND6 (전송 버튼)을 누르면 첫 번째 경우 문을 실행하고 모든 명령은 메시지가 하나 하나를 실행합니다 보내.
while (1) { // lcd_clear (); lcd_putsf ("보내기-> bttn 1"); lcd_gotoxy (0,1); lcd_putsf ("Receive-> buttn 2"); if (PIND.6 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("메시지 전송 중…"); for (z = 0; cmd_1! = ''; z ++) { UDR = cmd_1; 지연 _ms (100); } UDR = ('\ r'); 지연 _ms (500); for (z = 0; cmd_2! = ''; z ++) { UDR = cmd_2; 지연 _ms (100); } …..
메시지 버튼을 누르면 받으면, 반면 (b! = '+') 루프 CMT 명령이 존재하는지 여부를 확인합니다. 존재하는 경우 두 번째 while 루프가 실행되고 명령의 두 번째 줄로 이동하여 LCD에 메시지를 하나씩 인쇄합니다.
while (PIND.5 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("메시지 수신 중…"); b = 수신 된 _ 값 (); while (b! = '+') { b = received_value (); } b = 수신 된 _ 값 (); if (b == 'C') { b = 수신 된 _ 값 (); … ..
이 루프는 프로그램을 명령의 두 번째 줄로 이동하고 메시지를 배열에 저장합니다.
while (b! = 0x0a) { b = received_value (); } for (b = 0; b <3; b ++) { c = received_value (); msg = c; } .. ..
이 for 루프는 LCD에 메시지를 표시하는 것입니다.
for (z = 0; z <3; z ++) { a = msg; lcd_putchar (a); // PRINT IN lcd delay_ms (10); }
데모 비디오 가 포함 된 전체 코드 는 다음과 같습니다. 이제 프로젝트를 빌드해야합니다.
프로젝트 구축
그림과 같이 프로젝트 빌드 아이콘을 클릭하십시오.
프로젝트 빌드 후 Debug-> Exe 폴더 에 HEX 파일이 생성되며, 이는 이전에 프로젝트를 저장하기 위해 만든 폴더에 있습니다. 이 HEX 파일을 사용하여 Sinaprog 소프트웨어를 사용하여 Atmega16 에 업로드합니다.
Atmega16에 코드 업로드
주어진 다이어그램에 따라 회로를 Atmega16 프로그램에 연결하십시오. FRC 케이블의 한쪽을 USBASP 프로그래머에 연결하고 다른 쪽은 아래 설명과 같이 마이크로 컨트롤러의 SPI 핀에 연결합니다.
- FRC 암 커넥터의 Pin1-> Pin 6, Atmega16의 MSI
- atmega16의 Vcc에 연결된 핀 2, 즉 핀 10
- atmega16의 리셋에 연결된 핀 5, 즉 핀 9
- atmega16의 SCK에 연결된 핀 7, 즉 핀 8
- atmega16의 MISO에 연결된 핀 9, 즉 핀 7
- atmega16의 GND에 연결된 핀 8, 즉 핀 11
Sinaprog를 사용하여 위에서 생성 된 Hex 파일을 업로드 할 것이므로 파일을 열고 장치 드롭 다운 메뉴에서 Atmega16을 선택합니다. 그림과 같이 Debug-> Exe 폴더에서 HEX 파일을 선택합니다.
이제 프로그램을 클릭하면 코드가 ATmega16 마이크로 컨트롤러에 구워집니다.
완료되고 마이크로 컨트롤러가 프로그래밍되었습니다. 버튼을 누르기 만하면 GSM 및 ATmega16 마이크로 컨트롤러에서 메시지를 보내고받을 수 있습니다.
전체 코드 및 데모 비디오 가 아래에 제공됩니다.