GSM-modulet bruges i mange kommunikationsenheder, der er baseret på GSM-teknologi (Global System for Mobile Communications). Det bruges til at interagere med GSM-netværk ved hjælp af en computer. GSM-modulet forstår kun AT-kommandoer og kan reagere i overensstemmelse hermed. Den mest grundlæggende kommando er “AT”, hvis GSM svarer OK, fungerer den godt, ellers svarer den med “FEJL”. Der er forskellige AT-kommandoer som ATA til besvarelse af et opkald, ATD for at ringe til et opkald, AT + CMGR for at læse beskeden, AT + CMGS for at sende sms osv. AT-kommandoer skal følges af Carriage return dvs. \ r (0D i hex), som “AT + CMGS \ r”. Vi kan bruge GSM-modul ved hjælp af disse kommandoer.
GSM-grænseflade med 8051
I stedet for at bruge pc kan vi bruge mikrocontrollere til at interagere med GSM-modul og LCD for at få svaret fra GSM-modulet. Så vi skal interface GSM med en 8051 mikrokontroller (AT89S52). Det er meget let at interface GSM med 8051, vi skal bare sende AT-kommandoer fra mikrocontroller og modtage svar fra GSM og vise det på LCD. Vi kan bruge mikrocontrollerens serielle port til at kommunikere med GSM, dvs. ved hjælp af PIN 10 (RXD) og 11 (TXD).
Først skal vi forbinde LCD til 8051, du kan lære dette herfra: LCD-interface med 8051 Microcontroller. Så er vi nødt til at forbinde GSM-modul til 8051, nu her skal vi være opmærksomme. Først skal du kontrollere, om dit GSM-modul er i stand til at arbejde med TTL-logik, eller om det kun kan fungere med RS232. Dybest set, hvis dit modul har RX og TX (med GND) Pins om bord, kan det fungere på TTL-logik. Og hvis den ikke har nogen RX-, TX-stifter og kun har en RS232-port (seriel port med 9), skal du bruge MAX232 IC til at forbinde seriel port til mikrocontrolleren. Dybest set MAX232bruges til at konvertere serielle data til TTL-logik, fordi Microcontroller kun kan arbejde på TTL-logik. Men hvis GSM-modulet har RX, TX-ben, behøver du ikke bruge MAX232 eller nogen seriel konverter, du kan direkte forbinde RX af GSM til TX (PIN 11) på 8051 og TX på GSM til RX (PIN 10) på 8051 I vores tilfælde har jeg brugt SIM900A-modulet, og det har RX, TX-ben, så jeg har ikke brugt MAX232.
Kredsløbsdiagram for GSM-interface med AT89S52 mikrokontroller er vist i ovenstående figur. Nu efter forbindelsen skal vi bare skrive program for at sende AT-kommandoer til GSM og modtage dets svar på LCD. Der er mange AT-kommandoer som beskrevet ovenfor, men vores anvendelsesområde for denne artikel er bare at interface GSM med 8051, så vi sender bare kommandoen "AT" efterfulgt af "\ r" (0D i hex). Dette vil give os et svar “OK”. Men du kan udvide dette program til at bruge alle GSM-faciliteterne.
Kode forklaring
Udover alle LCD-relaterede funktioner har vi her brugt seriel port og timer mode register (TMOD). Du kan lære om LCD-funktioner og anden kode ved at gå gennem vores 8051-projektsektion, her forklarer jeg om seriekommunikationsrelaterede kodefunktioner:
GSM_init () funktion:
Denne funktion bruges til at indstille Baudrate til mikrocontroller. Baudrate er intet andet end Bits / sekund transmitteret eller modtaget. Og vi er nødt til at matche baudratet på 8051 til Baud-hastigheden på GSM-modulet, dvs. 9600. Vi har brugt Timer 1 i Mode 2 (8-bit auto-reload mode) ved at indstille TMOD-registeret til 0X20 og Higher byte of Timer 1 (TH1) til 0XFD for at få baudhastigheden på 9600. Også SCON-register bruges til at indstille tilstanden til seriel kommunikation, vi har brugt Mode1 (8-bit UART) med modtagelse aktiveret.
GSM_write-funktion:
SBUF (specialbuffer til seriel buffer) bruges til seriel kommunikation, hver gang vi vil sende en byte til en seriel enhed, sætter vi denne byte i SBUF-registeret, når den komplette byte er sendt, så er TI-bit indstillet af hardware. Vi er nødt til at nulstille det for at sende næste byte. Det er et flag, der indikerer, at byte er sendt med succes. TI er den anden bit af SCON-registret. Vi har sendt “AT” ved hjælp af denne funktion.
GSM_read-funktion:
Samme som at sende, når vi modtager nogen byte fra en ekstern enhed, som byte er sat i SBUF-register, skal vi bare læse den. Og når den komplette byte er modtaget, indstilles RI-bit af hardware. Vi er nødt til at nulstille det for at modtage næste byte. RI er den første bit af SCON-registret. Vi har læst svaret "OK" ved hjælp af denne funktion.