- Nødvendige materialer
- Brugt software
- GSM-modul
- Kommunikation med GSM-modul ved hjælp af AT-kommandoer
- ATMega16 GSM-modul interfacing kredsløbsdiagram
- Oprettelse af projektet til ATmega16 ved hjælp af CodeVision
- Kode og forklaring
- Byg projektet
- Upload koden til Atmega16
GSM-moduler er interessante at bruge, især når vores projekt kræver fjernadgang. Disse moduler kan udføre alle handlinger, som vores normale mobiltelefon kunne udføre, som at foretage / modtage et opkald, sende / modtage en SMS, oprette forbindelse til internet ved hjælp af GPRS osv. Du kan også forbinde en normal mikrofon og højttaler til dette modul og tale på din mobilopkald. Dette åbner døre for mange kreative projekter, hvis det kunne grænseflade til en mikrokontroller. Derfor lærer vi i denne vejledning, hvordan vi kan interface GSM-modulet (SIM900A) med AVR-mikrocontrolleren ATmega16 og demonstrere det ved at sende og modtage meddelelser ved hjælp af GSM-modulet.
Nødvendige materialer
- Atmega16
- GSM-modul (SIM900 eller andre)
- LCD-skærm
- Tryk på knapper
- 10k modstande, potentiometer
- Tilslutning af ledninger
- 12V adapter
- USBasp-programmør
- 10-pin FRC-kabel
Brugt software
Vi bruger CodeVisionAVR software til at skrive vores kode og SinaProg software til at uploade vores kode til Atmega16 ved hjælp af USBASP programmør.
Du kan downloade disse software fra de givne links:
CodeVisionAVR:
SinaProg:
Før vi går i skemaer og koder, lærer vi om GSM-modulet og dets arbejde.
GSM-modul
GSM-modulet kan bruges selv uden mikrokontroller ved hjælp af AT-kommandotilstand. Som vist ovenfor leveres GSM-modulet med en USART-adapter, der kan forbindes direkte til computeren ved hjælp af et MAX232-modul, eller Tx- og Rx-stifter kan bruges til at forbinde det til en mikrocontroller. Du kan også bemærke de andre ben som MIC +, MIC-, SP +, SP- osv. Hvor en mikrofon eller en højttaler kan tilsluttes. Modulet kan drives af en 12V adapter gennem et normalt jævnstrømsstik.
Indsæt dit SIM-kort i stikket på modulet, og tænd det, du skal bemærke, at en strøm-LED lyser. Vent nu et minut eller deromkring, og du skal se en rød (eller en hvilken som helst anden farve) LED blinker en gang i hvert 3. sekund. Dette betyder, at dit modul var i stand til at oprette forbindelse til dit SIM-kort. Nu kan du fortsætte med at forbinde dit modul med telefonen eller en hvilken som helst mikrokontroller.
Du kan opbygge mange seje projekter ved hjælp af GSM-modul som:
- Trådløst opslagstavle ved hjælp af GSM og Arduino
- Automatisk telefonsvarer ved hjælp af Arduino og GSM-modul
- GSM-baseret hjemmeautomatisering ved hjælp af Arduino
- PIR-sensor og GSM-baseret sikkerhedssystem
Tjek også alle GSM-relaterede projekter her.
Kommunikation med GSM-modul ved hjælp af AT-kommandoer
Som du måske har gættet det, kan GSM-modulet kommunikere gennem seriel kommunikation og kunne kun forstå et sprog, og det er “ AT-kommandoer ”. Uanset hvad du måske vil fortælle eller bede til GSM-modulet, skal det kun være via AT-kommandoer. For eksempel hvis du vil vide, om dit modul er aktivt. Du skal bede (sende) en kommando som “AT”, og dit modul vil svare “OK”.
Disse AT-kommandoer er godt forklaret i dets datablad og kan findes her i dets officielle datablad. Okay! Okay! Det er et 271-siders datablad, og det kan tage dage at læse dem igennem. Så jeg har givet nogle af de vigtigste AT-kommandoer nedenfor, så du snart kan komme i gang.
PÅ |
Svar med OK til bekræftelse |
AT + CPIN? |
Kontroller signalkvalitet |
AT + COPS? |
Find tjenesteudbyderens navn |
ATD96XXXXXXXX; |
Ring til det specifikke nummer, slutter med semikolon |
AT + CNUM |
Find antallet af SIM-kort (fungerer muligvis ikke for nogle SIM-kort) |
VED EN |
Besvar det indgående opkald |
ATH |
Afbryd det aktuelle indgående opkald |
AT + COLP |
Vis indgående opkaldsnummer |
AT + VTS = (antal) |
Send DTMF-nummer. Du kan bruge ethvert nummer på dit mobile tastatur til (nummer) |
AT + CMGR |
AT + CMGR = 1 læser besked ved første position |
AT + CMGD = 1 |
Slet besked ved første position |
AT + CMGDA = ”DEL ALL” |
Slet alle beskeder fra SIM |
AT + CMGL = ”ALT” |
Læs alle meddelelser fra SIM |
AT + CMGF = 1 |
Indstil SMS-konfiguration. “1” er kun til teksttilstand |
AT + CMGS = “+91 968837XXXX” > CircuitDigest tekst
|
Sender SMS til et bestemt nummer her 968837XXXX. Når du ser “>”, skal du begynde at indtaste teksten. Tryk på Ctrl + Z for at sende teksten. |
AT + CGATT? |
For at kontrollere internetforbindelsen på SIM-kortet |
AT + CIPSHUT |
For at lukke TCP-forbindelse, hvilket betyder at afbryde forbindelse fra internet |
AT + CSTT = "APN", "brugernavn", "Pass" |
Opret forbindelse til GPRS med din APN og Pass-nøgle. Kan fås fra netværksudbyderen. |
AT + CIICR |
Kontroller, om SIM-kortet har datapakke |
AT + CIFSR |
Få IP til SIM-netværket |
AT + CIPSTART = “TCP”, “SERVER IP”, “PORT” |
Bruges til at indstille en TCP IP-forbindelse |
PÅ + CIPSEND |
Denne kommando bruges til at sende data til serveren |
Her bruger vi kommandoen AT + CMGF og AT + CMGS til at sende meddelelser.
Hvis du har brugt GSM-modul med Arduino, mens du modtager beskeder, kan du bruge kommandoen + CMT: til at se mobilnummer og tekstbesked på seriel skærm. Tekstbesked kommer på anden linje som vist på billedet.
Vi scanner denne + CMT: kommando for at kontrollere, om meddelelsen er tilgængelig eller ej.
ATMega16 GSM-modul interfacing kredsløbsdiagram
Forbindelser vil være som følger
- Tx og Rx for GSM-modul til henholdsvis Rx (Pin14) og Tx (Pin15) af Atmega16.
- Skub knapperne til PD5 (Pin19) og PD6 (Pin20).
- LCD-tilslutninger:
- RS - PA 0
- R / W - PA1
- DA - PA2
- D4 - PA4
- D5 - PA5
- D6 - PA6
- D7 - PA7
Oprettelse af projektet til ATmega16 ved hjælp af CodeVision
Efter installation af CodeVisionAVR og SinaProg- softwarer skal du følge nedenstående trin for at oprette projekt- og skrivekode:
Allerede uploadet
Trin 1. Åbn CodeVision Klik på File -> New -> Project . Dialogboksen Bekræftelse vises. Klik på Ja
Trin 2. CodeWizard åbnes. Klik på den første mulighed, dvs. AT90 , og klik på OK.
Trin 3: - Vælg din microcontroller-chip, her tager vi Atmega16L som vist.
Trin 4: - Klik på USART . Vælg modtager og sender ved at klikke på den. Som vist nedenfor:
Trin 5: - Klik på Alphanumeric LCD, og vælg Enable Alphanumeric LCD support .
Trin 6: - Klik på Program -> Generer, gem og afslut . Nu er mere end halvdelen af vores arbejde afsluttet
Trin 7: - Opret en ny mappe på skrivebordet, så vores filer forbliver i mappen ellers spredes vi på hele skrivebordsvinduet. Navngiv din mappe, som du vil, og jeg foreslår, at du bruger det samme navn til at gemme programfiler.
Vi har tre dialogbokse efter hinanden for at gemme filer.
Gør det samme med de to andre dialogbokse, der vises, når du har gemt den første.
Nu ser dit arbejdsområde sådan ud.
Vores mest af arbejdet er afsluttet ved hjælp af guiden. Nu skal vi kun skrive kode til GSM.
Kode og forklaring
Alle headerfiler vedhæftes automatisk efter oprettelse af projektet, du skal bare inkludere delay.h header-fil og erklære alle variablerne. Komplet kode gives i slutningen af denne vejledning.
#omfatte
Lav en funktion til at modtage data fra UDR-registret. Denne funktion returnerer modtagne data.
usigneret char modtaget_værdi (ugyldig) { while (! (UCSRA & (1 <
Kom til while- løkken, hvor vi opretter to if- udsagn, en til at sende besked og en anden til modtagelse. Send-knappen er forbundet med PIND6 i ATmega, og modtag besked-knappen med PIND5.
Når der trykkes PIND6 (Send-knap) først , hvis erklæring vil udføre og alle de kommandoer til at sende besked vil udføre en efter en.
mens (1) { // lcd_clear (); lcd_putsf ("Send-> bttn 1"); lcd_gotoxy (0,1); lcd_putsf ("Modtag-> 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; forsinkelse_ms (100); } UDR = ('\ r'); forsinkelse_ms (500); for (z = 0; cmd_2! = ''; z ++) { UDR = cmd_2; forsinkelse_ms (100); }…..
Hvis der trykkes på knappen Modtag besked, mens (b! = '+') Loop kontrollerer, om CMT-kommandoen er til stede eller ej. Hvis den er til stede, udføres anden mens løkken og går til anden linje i kommandoen og udskriver beskeden på LCD en efter en.
mens (PIND.5 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Modtagelse af besked…"); b = modtaget_værdi (); mens (b! = '+') { b = modtaget_værdi (); } b = modtaget_værdi (); hvis (b == 'C') { b = modtaget_værdi (); … ..
Denne loop fører programmet til anden kommandolinje og gemmer meddelelsen i arrayet.
mens (b! = 0x0a) { b = modtaget_værdi (); } for (b = 0; b <3; b ++) { c = modtaget_værdi (); msg = c; } .. ..
Dette for loop er at vise meddelelsen på LCD.
for (z = 0; z <3; z ++) { a = msg; lcd_putchar (a); // PRINT IN lcd delay_ms (10); }
Komplet kode med Demo Video er angivet nedenfor, nu skal vi bygge vores projekt.
Byg projektet
Klik på Byg projektikonet som vist.
Efter opbygning af projektet genereres en HEX-fil i mappen Debug-> Exe , som findes i den mappe, du tidligere har lavet for at gemme dit projekt. Vi bruger denne HEX-fil til at uploade i Atmega16 ved hjælp af Sinaprog-software.
Upload koden til Atmega16
Forbind dine kredsløb i henhold til det givne diagram til programmet Atmega16. Tilslut den ene side af FRC-kablet til USBASP-programmøren og den anden side vil oprette forbindelse til SPI-stifter på mikrocontrolleren som beskrevet nedenfor:
- Pin1 af FRC hunstik -> Pin 6, MOSI for Atmega16
- Pin 2 forbundet til Vcc af atmega16 dvs. Pin 10
- Pin 5 tilsluttet Reset af atmega16 dvs. Pin 9
- Pin 7 tilsluttet SCK af atmega16 dvs. Pin 8
- Pin 9 forbundet til MISO af atmega16 dvs. Pin 7
- Pin 8 tilsluttet GND på atmega16 dvs. Pin 11
Vi uploader ovenstående genererede Hex-fil ved hjælp af Sinaprog, så åbn den, og vælg Atmega16 fra rullemenuen Enhed. Vælg HEX-filen fra mappen Debug-> Exe som vist.
Klik nu på Program, så bliver din kode brændt i ATmega16 Microcontroller.
Du er færdig, og din mikrokontroller er programmeret. Bare tryk på knapperne for at sende og modtage meddelelserne fra GSM og ATmega16 mikrokontroller.
Komplet kode og demonstration Video er angivet nedenfor.