- Nødvendig materiale
- Programvare brukt
- GSM-modul
- Kommunisere med GSM-modul ved hjelp av AT-kommandoer
- ATMega16 GSM-modul grensesnittkretsdiagram
- Opprette prosjektet for ATmega16 ved hjelp av CodeVision
- Kode og forklaring
- Bygg prosjektet
- Last opp koden til Atmega16
GSM-moduler er interessante å bruke, spesielt når prosjektet vårt krever ekstern tilgang. Disse modulene kan utføre alle handlinger som vår vanlige mobiltelefon kan gjøre, som å ringe / motta et anrop, sende / motta en SMS, koble til internett ved hjelp av GPRS osv. Du kan også koble en vanlig mikrofon og høyttaler til denne modulen og snakke på mobilsamtaler. Dette vil åpne dører for mange kreative prosjekter hvis det kan grensesnittet med en mikrokontroller. Derfor vil vi i denne veiledningen lære hvordan vi kan grensesnitt GSM-modulen (SIM900A) med AVR-mikrokontrolleren ATmega16, og vil demonstrere det ved å sende og motta meldinger ved hjelp av GSM-modulen.
Nødvendig materiale
- Atmega16
- GSM-modul (SIM900 eller andre)
- LCD-skjerm
- Trykke knapper
- 10k motstander, potensiometer
- Koble ledninger
- 12V adapter
- USBasp-programmerer
- 10-pin FRC-kabel
Programvare brukt
Vi bruker CodeVisionAVR- programvare for å skrive koden vår og SinaProg- programvare for å laste opp koden vår til Atmega16 ved hjelp av USBASP-programmerer.
Du kan laste ned disse programvarene fra de gitte linkene:
CodeVisionAVR:
SinaProg:
Før vi går inn i skjemaene og kodene, lærer vi om GSM-modulen og dens bruk.
GSM-modul
GSM-modulen kan brukes selv uten mikrokontroller ved hjelp av AT-kommandomodus. Som vist ovenfor kommer GSM-modulen med en USART-adapter som kan kobles direkte til datamaskinen ved hjelp av en MAX232-modul, eller Tx- og Rx-pinnene kan brukes til å koble den til en mikrokontroller. Du kan også legge merke til de andre pinnene som MIC +, MIC-, SP +, SP- etc hvor en mikrofon eller en høyttaler kan kobles til. Modulen kan drives av en 12V adapter via en vanlig likestrømsjekk.
Sett inn SIM-kortet i sporet på modulen og slå det på, du bør merke at en strøm-LED lyser. Vent nå et minutt eller så, og du skal se en rød (eller annen farge) LED blinker en gang hvert 3. sekund. Dette betyr at modulen din var i stand til å opprette forbindelse med SIM-kortet. Nå kan du fortsette med å koble deg til modulen med telefonen eller en hvilken som helst mikrokontroller.
Du kan bygge mange kule prosjekter ved hjelp av GSM-modul som:
- Trådløst oppslagstavle ved bruk av GSM og Arduino
- Automatisk telefonsvarer ved hjelp av Arduino og GSM-modul
- GSM-basert hjemmeautomatisering ved hjelp av Arduino
- PIR-sensor og GSM-basert sikkerhetssystem
Sjekk også alle GSM-relaterte prosjekter her.
Kommunisere med GSM-modul ved hjelp av AT-kommandoer
Som du kanskje har gjettet det, kan GSM-modulen kommunisere gjennom seriell kommunikasjon og kunne bare forstå ett språk, og det er " AT-kommandoer ". Uansett hva du kanskje vil fortelle eller spørre til GSM-modulen, bør det bare være via AT-kommandoer. For eksempel hvis du vil vite om modulen din er aktiv. Du bør be (sende) en kommando som "AT", og modulen din vil svare "OK".
Disse AT-kommandoene er godt forklart i databladet og finnes her i det offisielle databladet. Greit! Greit! Det er et 271-siders datablad, og du kan ta dager å lese gjennom dem. Så jeg har gitt noen viktigste AT-kommandoer nedenfor for at du skal komme i gang snart.
PÅ |
Svar med OK for bekreftelse |
AT + CPIN? |
Sjekk signalkvalitet |
AT + COPS? |
Finn tjenesteleverandørens navn |
ATD96XXXXXXXX; |
Ring til det spesifikke nummeret, slutter med semipunkt |
AT + CNUM |
Finn antall SIM-kort (fungerer kanskje ikke for noen SIM-kort) |
ATA |
Svar på innkommende samtale |
ATH |
Avslutt gjeldende innkommende samtale |
AT + COLP |
Vis innkommende nummer |
AT + VTS = (antall) |
Send DTMF-nummer. Du kan bruke hvilket som helst nummer på mobiltastaturet til (nummer) |
AT + CMGR |
AT + CMGR = 1 leser meldingen ved første posisjon |
AT + CMGD = 1 |
Slett meldingen ved første posisjon |
AT + CMGDA = ”DEL ALL” |
Slett alle meldinger fra SIM |
AT + CMGL = ”ALL” |
Les alle meldinger fra SIM |
AT + CMGF = 1 |
Angi SMS-konfigurasjon. “1” er kun for tekstmodus |
AT + CMGS = “+91 968837XXXX” > CircuitDigest Text
|
Sender SMS til et bestemt nummer her 968837XXXX. Når du ser ">" begynn å skrive inn teksten. Trykk Ctrl + Z for å sende teksten. |
AT + CGATT? |
For å se etter internettforbindelse på SIM-kortet |
AT + CIPSHUT |
For å lukke TCP-tilkobling, det vil si å koble fra internett |
AT + CSTT = "APN", "brukernavn", "Pass" |
Koble til GPRS med APN og Pass-tasten. Kan fås fra nettverksleverandør. |
AT + CIICR |
Sjekk om SIM-kortet har datapakke |
AT + CIFSR |
Få IP til SIM-nettverket |
AT + CIPSTART = “TCP”, “SERVER IP”, “PORT” |
Brukes til å angi en TCP IP-tilkobling |
PÅ + CIPSEND |
Denne kommandoen brukes til å sende data til serveren |
Her vil vi bruke AT + CMGF og AT + CMGS kommando for å sende meldinger.
Hvis du har brukt GSM-modul med Arduino, mens du mottar meldinger, kan du bruke kommandoen + CMT: for å vise mobilnummer og tekstmelding på seriell skjerm. Tekstmelding kommer på andre linje som vist på bildet.
Vi vil skanne denne + CMT: -kommandoen for å sjekke om meldingen er tilgjengelig eller ikke.
ATMega16 GSM-modul grensesnittkretsdiagram
Tilkoblingene vil være som følger
- Tx og Rx for GSM-modul til henholdsvis Rx (Pin14) og Tx (Pin15) av Atmega16.
- Skyv knappene til PD5 (Pin19) og PD6 (Pin20).
- LCD-tilkoblinger:
- RS - PA 0
- R / W - PA1
- EN - PA2
- D4 - PA4
- D5 - PA5
- D6 - PA6
- D7 - PA7
Opprette prosjektet for ATmega16 ved hjelp av CodeVision
Etter installering av CodeVisionAVR og SinaProg- programvare , følg trinnene nedenfor for å lage prosjekt- og skrivekode:
Allerede lastet opp
Trinn 1. Åpne CodeVision Klikk på File -> New -> Project . Bekreftelsesdialogboksen vises. Klikk på Ja
Trinn 2. CodeWizard åpnes. Klikk på det første alternativet, dvs. AT90 , og klikk OK.
Trinn 3: - Velg din mikrokontrollerbrikke, her tar vi Atmega16L som vist.
Trinn 4: - Klikk på USART . Velg Mottaker og sender ved å klikke på den. Som vist under:
Trinn 5: - Klikk på Alfanumerisk LCD og velg Aktiver støtte for alfanumerisk LCD .
Trinn 6: - Klikk på Program -> Generer, lagre og avslutt . Nå er mer enn halvparten av arbeidet vårt fullført
Trinn 7: - Lag en ny mappe på skrivebordet slik at filene våre forblir i mappen ellers vil vi være spredt på hele skrivebordsvinduet. Navngi mappen din slik du vil, og jeg foreslår at du bruker samme navn for å lagre programfiler.
Vi vil ha tre dialogbokser etter hverandre for å lagre filer.
Gjør det samme med andre to dialogbokser som vises etter at du har lagret den første.
Nå ser arbeidsområdet ditt slik ut.
Det meste av arbeidet vårt er fullført ved hjelp av Wizard. Nå må vi bare skrive kode for GSM.
Kode og forklaring
Alle headerfilene blir automatisk vedlagt etter at du har opprettet prosjektet, du må bare inkludere delay.h header-fil og erklære alle variablene. Komplett kode er gitt på slutten av denne opplæringen.
#inkludere
Lag en funksjon for å motta data fra UDR-registeret. Denne funksjonen vil returnere mottatte data.
usignert røye mottatt_verdi (ugyldig) { mens (! (UCSRA & (1 <
Kom til mens løkken der vi oppretter to if uttalelser, en for sending av melding og annen for mottak. Send-knappen er koblet til PIND6 fra ATmega og motta meldingsknapp med PIND5.
Når du trykker først på PIND6 (Send-knapp) hvis uttalelsen utføres, og alle kommandoene som skal sendes, utføres en etter en.
mens (1) { // lcd_clear (); lcd_putsf ("Send-> bttn 1"); lcd_gotoxy (0,1); lcd_putsf ("Motta-> buttn 2"); hvis (PIND.6 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Sender Msg…"); for (z = 0; cmd_1! = ''; z ++) { UDR = cmd_1; delay_ms (100); } UDR = ('\ r'); delay_ms (500); for (z = 0; cmd_2! = ''; z ++) { UDR = cmd_2; delay_ms (100); }…..
Hvis knappen Motta melding trykkes, vil mens (b! = '+') Loop kontrollere om CMT-kommandoen er tilstede eller ikke. Hvis det er til stede, utføres andre mens sløyfen og går til andre linje i kommandoen og skriver ut meldingen på LCD en etter en.
mens (PIND.5 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Motta melding…"); b = mottatt_verdi (); mens (b! = '+') { b = mottatt_verdi (); } b = mottatt_verdi (); hvis (b == 'C') { b = mottatt_verdi (); … ..
Denne sløyfen tar programmet til andre kommandolinje og lagrer meldingen i matrisen.
mens (b! = 0x0a) { b = mottatt_verdi (); } for (b = 0; b <3; b ++) { c = mottatt_verdi (); msg = c; } .. ..
Dette for loop er å vise meldingen på LCD.
for (z = 0; z <3; z ++) { a = msg; lcd_putchar (a); // UTSKRIFT I LCD forsinkelse (10); }
Komplett kode med Demo Video er gitt nedenfor, nå må vi bygge prosjektet vårt.
Bygg prosjektet
Klikk på Bygg prosjektikonet som vist.
Etter at prosjektet er bygd, genereres en HEX-fil i Debug-> Exe- mappen som du finner i mappen du tidligere har laget for å lagre prosjektet. Vi vil bruke denne HEX-filen til å laste opp i Atmega16 ved hjelp av Sinaprog-programvaren.
Last opp koden til Atmega16
Koble kretsene dine i henhold til gitt diagram til programmet Atmega16. Koble til den ene siden av FRC-kabelen til USBASP-programmereren og den andre siden vil koble til SPI-pinner på mikrokontrolleren som beskrevet nedenfor:
- Pin1 av FRC hunkontakt -> Pin 6, MOSI for Atmega16
- Pin 2 koblet til Vcc av atmega16 dvs. Pin 10
- Pin 5 koblet til tilbakestilling av atmega16 dvs. Pin 9
- Pin 7 koblet til SCK av atmega16 dvs. Pin 8
- Pin 9 koblet til MISO på atmega16 dvs. Pin 7
- Pin 8 koblet til GND på atmega16 dvs. Pin 11
Vi vil laste opp den genererte Hex-filen ovenfor ved hjelp av Sinaprog, så åpne den og velg Atmega16 fra rullegardinmenyen for enhet. Velg HEX-filen fra Debug-> Exe-mappen som vist.
Nå, klikk på Program og koden din blir brent i ATmega16 Microcontroller.
Du er ferdig og Microcontroller er programmert. Bare trykk på knappene for å sende og motta meldingene fra GSM og ATmega16 mikrokontroller.
Komplett kode og demonstrasjon Video er gitt nedenfor.