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 모듈을 사용할 수 있습니다.
8051과의 GSM 인터페이스
PC를 사용하는 대신 마이크로 컨트롤러를 사용하여 GSM 모듈 및 LCD와 상호 작용하여 GSM 모듈에서 응답을 얻을 수 있습니다. 따라서 GSM을 8051 마이크로 컨트롤러 (AT89S52) 와 인터페이스 할 것 입니다. GSM과 8051을 연결하는 것은 매우 쉽습니다. 마이크로 컨트롤러에서 AT 명령을 보내고 GSM에서 응답을 받아 LCD에 표시하기 만하면됩니다. 마이크로 컨트롤러의 직렬 포트를 사용하여 GSM과 통신 할 수 있습니다. 즉, PIN 10 (RXD) 및 11 (TXD)을 사용합니다.
먼저 LCD를 8051에 연결해야합니다. 여기에서 배울 수 있습니다. 8051 마이크로 컨트롤러와의 LCD 인터페이스. 그런 다음 GSM 모듈을 8051에 연결해야합니다. 이제주의해야합니다. 먼저 GSM 모듈이 TTL 로직에서 작동 할 수 있는지 또는 RS232에서만 작동 할 수 있는지 확인해야합니다. 기본적으로 모듈에 RX 및 TX (GND 포함) 핀이 있으면 TTL 로직에서 작동 할 수 있습니다. RX, TX 핀이없고 RS232 포트만있는 경우 (직렬 포트 9 개) MAX232 IC를 사용하여 직렬 포트를 마이크로 컨트롤러에 연결해야합니다. 기본적으로 MAX232마이크로 컨트롤러는 TTL 로직에서만 작동하기 때문에 직렬 데이터를 TTL 로직으로 변환하는 데 사용됩니다. 그러나 GSM 모듈에 RX, TX 핀이 있으면 MAX232 또는 직렬 변환기를 사용할 필요가 없습니다. GSM의 RX를 8051의 TX (PIN 11)에 직접 연결하고 GSM의 TX를 8051의 RX (PIN 10)에 직접 연결할 수 있습니다. 우리의 경우에는 SIM900A 모듈 을 사용 했고 RX, TX 핀이있어서 MAX232를 사용하지 않았습니다.
AT89S52 마이크로 컨트롤러와 연결되는 GSM의 회로도 는 위 그림에 나와 있습니다. 이제 연결 후 GSM에 AT 명령을 보내고 LCD에서 응답을 수신하는 프로그램을 작성하면됩니다. 위에서 설명한대로 많은 AT 명령이 있지만이 기사의 범위는 GSM을 8051과 인터페이스하는 것이므로 "AT"명령과 "\ r"(16 진수 0D)를 전송합니다. 그러면 "OK"라는 응답이 표시됩니다. 그러나이 프로그램을 확장하여 GSM의 모든 기능을 사용할 수 있습니다.
코드 설명
모든 LCD 관련 기능 외에도 여기에서는 직렬 포트와 타이머 모드 레지스터 (TMOD)를 사용했습니다. 8051 프로젝트 섹션을 통해 LCD 기능 및 기타 코드에 대해 배울 수 있습니다. 여기서는 직렬 통신 관련 코드 기능에 대해 설명합니다.
GSM_init () 함수:
이 기능은 마이크로 컨트롤러의 Baudrate를 설정하는 데 사용됩니다. Baudrate는 전송 또는 수신 된 비트 / 초에 불과합니다. 그리고 우리는 8051의 전송 속도를 GSM 모듈의 전송 속도, 즉 9600과 일치시켜야합니다. TMOD 레지스터를 0X20으로 설정하고 타이머 1의 상위 바이트를 설정하여 모드 2 (8 비트 자동 다시로드 모드)에서 타이머 1을 사용했습니다. (TH1)에서 0XFD로 9600의 전송 속도를 얻습니다. 또한 SCON 레지스터는 직렬 통신 모드를 설정하는 데 사용되며 수신이 활성화 된 Mode1 (8 비트 UART)을 사용했습니다.
GSM_write 기능:
SBUF (직렬 버퍼 특수 기능 레지스터)는 직렬 통신에 사용되며, 어떤 바이트를 직렬 장치로 보내려고 할 때마다 해당 바이트를 SBUF 레지스터에 넣습니다. 전체 바이트가 전송되면 TI 비트가 하드웨어에 의해 설정됩니다. 다음 바이트를 보내기 위해 재설정해야합니다. 바이트가 성공적으로 전송되었음을 나타내는 플래그입니다. TI는 SCON 레지스터의 두 번째 비트입니다. 이 기능을 사용하여“AT”를 보냈습니다.
GSM_read 기능:
송신과 동일하게 외부 장치로부터 바이트가 SBUF 레지스터에 들어간 바이트를받을 때마다 읽기만하면됩니다. 그리고 완전한 바이트가 수신 될 때마다 RI 비트는 하드웨어에 의해 설정됩니다. 다음 바이트를 받기 위해 재설정해야합니다. RI는 SCON 레지스터의 첫 번째 비트입니다. 이 기능을 사용하여 "OK"응답을 읽었습니다.