- Material som krävs
- Programvara som används
- GSM-modul
- Kommunicera med GSM-modulen med AT-kommandon
- ATMega16 GSM-modul gränssnittsdiagram
- Skapa projektet för ATmega16 med hjälp av CodeVision
- Kod och förklaring
- Bygg projektet
- Ladda upp koden till Atmega16
GSM-moduler är intressanta att använda, särskilt när vårt projekt kräver fjärråtkomst. Dessa moduler kan göra alla åtgärder som vår vanliga mobiltelefon kan göra, som att ringa / ta emot ett samtal, skicka / ta emot ett SMS, ansluta till internet med GPRS etc. Du kan också ansluta en vanlig mikrofon och högtalare till den här modulen och samtala på din mobilsamtal. Detta kommer att öppna dörrar för många kreativa projekt om det kan kopplas till en mikrokontroller. Därför lär vi oss hur vi kan ansluta GSM-modulen (SIM900A) till AVR-mikrokontrollern ATmega16 och visa det genom att skicka och ta emot meddelanden med GSM-modulen.
Material som krävs
- Atmega16
- GSM-modul (SIM900 eller något annat)
- LCD skärm
- Trycka på knappar
- 10k motstånd, potentiometer
- Anslutande ledningar
- 12V-adapter
- USBasp-programmerare
- 10-stifts FRC-kabel
Programvara som används
Vi kommer att använda CodeVisionAVR- programvaran för att skriva vår kod och SinaProg- programvaran för att ladda upp vår kod till Atmega16 med USBASP-programmerare.
Du kan ladda ner dessa program från de angivna länkarna:
CodeVisionAVR:
SinaProg:
Innan vi går in i schemat och koder lär vi oss om GSM-modulen och dess funktion.
GSM-modul
GSM-modulen kan användas även utan mikrokontroller med AT-kommandoläget. Som visas ovan kommer GSM-modulen med en USART-adapter som kan anslutas direkt till datorn med en MAX232-modul eller så kan Tx- och Rx-stiften användas för att ansluta den till en mikrokontroller. Du kan också märka de andra stiften som MIC +, MIC-, SP +, SP- etc där en mikrofon eller en högtalare kan anslutas. Modulen kan drivas av en 12V-adapter via ett vanligt likströmsuttag.
Sätt i ditt SIM-kort i kortplatsen på modulen och slå på det, du bör märka att en strömlampa tänds. Vänta nu en minut eller så, och du bör se en röd (eller någon annan färg) LED blinkar en gång var tredje sekund. Det betyder att din modul kunde upprätta anslutning till ditt SIM-kort. Nu kan du fortsätta med att ansluta din modul till telefon eller vilken mikrokontroller som helst.
Du kan bygga många häftiga projekt med GSM-modul som:
- Trådlöst anslagstavla med GSM och Arduino
- Automatisk telefonsvarare med Arduino och GSM-modul
- GSM-baserad hemautomation med Arduino
- PIR-sensor och GSM-baserat säkerhetssystem
Kontrollera också alla GSM-relaterade projekt här.
Kommunicera med GSM-modulen med AT-kommandon
Som du kanske har gissat det kan GSM-modulen kommunicera via seriell kommunikation och kunde bara förstå ett språk och det är " AT-kommandon ". Oavsett vad du kanske vill berätta eller fråga till GSM-modulen ska det bara ske via AT-kommandon. Till exempel om du vill veta om din modul är aktiv. Du bör be (skicka) ett kommando som "AT" och din modul svarar "OK".
Dessa AT-kommandon förklaras väl i dess datablad och finns här i dess officiella datablad. Okej! Okej! Det är ett 271-sidars datablad och du kan ta dagar att läsa igenom dem. Så jag har gett några viktigaste AT-kommandon nedan för att du ska få igång detta snart.
PÅ |
Svarar med OK för bekräftelse |
AT + CPIN? |
Kontrollera signalkvalitet |
AT + COPS? |
Hitta tjänsteleverantörens namn |
ATD96XXXXXXXX; |
Ring till det specifika numret, slutar med semikolon |
AT + CNUM |
Hitta antalet SIM-kort (kanske inte fungerar för vissa SIM-kort) |
ATA |
Svara på det inkommande samtalet |
ATH |
Avsluta det aktuella inkommande samtalet |
AT + COLP |
Visa inkommande samtalsnummer |
AT + VTS = (antal) |
Skicka DTMF-nummer. Du kan använda valfritt nummer på din mobila knappsats för (nummer) |
AT + CMGR |
AT + CMGR = 1 läser meddelandet vid första positionen |
AT + CMGD = 1 |
Radera meddelande vid första position |
AT + CMGDA = ”DEL ALL” |
Ta bort alla meddelanden från SIM-kortet |
AT + CMGL = ”ALL” |
Läs alla meddelanden från SIM |
AT + CMGF = 1 |
Ställ in SMS-konfiguration. “1” är endast för textläge |
AT + CMGS = “+91 968837XXXX” > CircuitDigest Text
|
Skickar SMS till ett visst nummer här 968837XXXX. När du ser “>” börja skriva in texten. Tryck på Ctrl + Z för att skicka texten. |
AT + CGATT? |
För att söka efter internetanslutning på SIM-kortet |
AT + CIPSHUT |
För att stänga TCP-anslutningen, vilket innebär att koppla från internet |
AT + CSTT = "APN", "användarnamn", "Godkänd" |
Anslut till GPRS med din APN och Pass-nyckel. Kan fås från nätverksleverantören. |
AT + CIICR |
Kontrollera om SIM-kortet har datapaket |
AT + CIFSR |
Få IP för SIM-nätverket |
AT + CIPSTART = “TCP”, ”SERVER IP”, “PORT” |
Används för att ställa in en TCP IP-anslutning |
AT + CIPSEND |
Detta kommando används för att skicka data till servern |
Här använder vi kommandot AT + CMGF och AT + CMGS för att skicka meddelanden.
Om du har använt GSM-modulen med Arduino, medan du tar emot meddelanden kan du använda kommandot + CMT: för att visa mobilnummer och textmeddelande på seriell bildskärm. Textmeddelandet kommer på andra raden som visas på bilden.
Vi kommer att skanna detta + CMT: kommando för att kontrollera om meddelandet är tillgängligt eller inte.
ATMega16 GSM-modul gränssnittsdiagram
Anslutningarna kommer att ske enligt följande
- Tx och Rx för GSM-modul till Rx (Pin14) respektive Tx (Pin15) för Atmega16.
- Tryck på knapparna till PD5 (Pin19) och PD6 (Pin20).
- LCD-anslutningar:
- RS - PA 0
- R / W - PA1
- SV - PA2
- D4 - PA4
- D5 - PA5
- D6 - PA6
- D7 - PA7
Skapa projektet för ATmega16 med hjälp av CodeVision
Efter installation av CodeVisionAVR och SinaProg- programvara , följ stegen nedan för att skapa projekt- och skrivkod:
Har redan laddats upp
Steg 1. Öppna CodeVision Klicka på Arkiv -> Nytt -> Projekt . Dialogrutan Bekräftelse visas. Klicka på Ja
Steg 2. CodeWizard öppnas. Klicka på det första alternativet, dvs AT90 , och klicka på OK.
Steg 3: - Välj ditt mikrokontrollerchip, här tar vi Atmega16L som visat.
Steg 4: - Klicka på USART . Välj Mottagare och sändare genom att klicka på den. Enligt nedanstående:
Steg 5: - Klicka på Alfanumerisk LCD och välj Aktivera stöd för alfanumerisk LCD .
Steg 6: - Klicka på Program -> Generera, spara och avsluta . Nu är mer än hälften av vårt arbete slutfört
Steg 7: - Skapa en ny mapp på skrivbordet så att våra filer förblir i mappen annars kommer vi att spridas på hela skrivbordsfönstret. Namnge din mapp som du vill och jag föreslår att du använder samma namn för att spara programfiler.
Vi kommer att ha tre dialogrutor efter varandra för att spara filer.
Gör detsamma med andra två dialogrutor som kommer att visas när du sparar den första.
Nu ser din arbetsyta ut så här.
Vårt mesta av arbetet slutförs med hjälp av guiden. Nu måste vi bara skriva kod för GSM.
Kod och förklaring
Alla rubrikfiler bifogas automatiskt efter att du skapat projektet, du måste bara inkludera delay.h header-fil och deklarera alla variabler. Komplett kod ges i slutet av denna handledning.
#omfatta
Gör en funktion för att ta emot data från UDR-registret. Denna funktion returnerar mottagen data.
osignerad char mottagit_värde (ogiltigt) { medan (! (UCSRA & (1 <
Kom till medan loop där vi skapar två om uttalanden, ett för att skicka meddelande och andra för att ta emot. Skicka-knappen är ansluten med PIND6 i ATmega och knapp för mottagningsmeddelande med PIND5.
När PIND6 (Skicka-knapp) trycks in först om uttalandet kommer att utföras och alla kommandon för att skicka meddelande kommer att köras en efter en.
medan (1) { // lcd_clear (); lcd_putsf ("Skicka-> bttn 1"); lcd_gotoxy (0,1); lcd_putsf ("Receive-> buttn 2"); if (PIND.6 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Skickar meddelande…"); för (z = 0; cmd_1! = ''; z ++) { UDR = cmd_1; delay_ms (100); } UDR = ('\ r'); delay_ms (500); för (z = 0; cmd_2! = ''; z ++) { UDR = cmd_2; delay_ms (100); }…..
Om emot meddelande knappen trycks, medan (B! = '+') Loop kontrollerar om CMT kommando är närvarande eller inte. Om det finns, kommer andra medan slingan att köras och gå till andra raden i kommandot och skriva ut meddelandet på LCD en efter en.
medan (PIND.5 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Mottagande av meddelande…"); b = mottagen_värde (); medan (b! = '+') { b = mottagen_värde (); } b = mottagen_värde (); om (b == 'C') { b = mottagen_värde (); ... ..
Denna slinga tar programmet till andra kommandoraden och lagrar meddelandet i matrisen.
medan (b! = 0x0a) { b = mottagen_värde (); } för (b = 0; b <3; b ++) { c = mottagen_värde (); msg = c; } .. ..
Detta för loop är att visa meddelandet på LCD.
för (z = 0; z <3; z ++) { a = msg; lcd_putchar (a); // SKRIV IN I LCD- fördröjning_ms (10); }
Komplett kod med Demo Video ges nedan, nu måste vi bygga vårt projekt.
Bygg projektet
Klicka på Build the project icon as shown.
Efter att ha byggt projektet genereras en HEX-fil i mappen Debug-> Exe som finns i mappen som du tidigare har skapat för att spara ditt projekt. Vi kommer att använda den här HEX-filen för att ladda upp i Atmega16 med Sinaprog-programvaran.
Ladda upp koden till Atmega16
Anslut dina kretsar enligt det givna diagrammet till programmet Atmega16. Anslut den ena sidan av FRC-kabeln till USBASP-programmeraren och den andra sidan kommer att anslutas till SPI-stift på mikrokontrollern enligt beskrivningen nedan:
- Pin1 av FRC-honkontakt -> Pin 6, MOSI för Atmega16
- Stift 2 ansluten till Vcc för atmega16 dvs stift 10
- Stift 5 ansluten till Återställning av atmega16 dvs stift 9
- Stift 7 anslutet till SCK på atmega16 dvs stift 8
- Stift 9 ansluten till MISO på atmega16 dvs stift 7
- Stift 8 ansluten till GND på atmega16 dvs stift 11
Vi laddar upp ovan genererade Hex-fil med Sinaprog, så öppna den och välj Atmega16 från rullgardinsmenyn Enhet. Välj HEX-filen från mappen Debug-> Exe som visas.
Klicka nu på Program och din kod kommer att brännas i ATmega16 Microcontroller.
Du är klar och din Microcontroller är programmerad. Tryck bara på knapparna för att skicka och ta emot meddelanden från GSM och ATmega16 mikrokontroller.
Komplett kod och demonstration Video ges nedan.