- Vereiste materialen
- Gebruikte software
- GSM-module
- Communiceren met GSM-module met behulp van AT-opdrachten
- ATMega16 GSM-module interface schakelschema
- Het project voor ATmega16 maken met CodeVision
- Code en uitleg
- Bouw het project
- Upload de code naar Atmega16
GSM-modules zijn interessant om te gebruiken, vooral wanneer ons project externe toegang vereist. Deze modules kunnen alle acties uitvoeren die onze normale mobiele telefoon zou kunnen uitvoeren, zoals bellen / gebeld worden, een sms verzenden / ontvangen, verbinding maken met internet via GPRS enz. U kunt ook een normale microfoon en luidspreker op deze module aansluiten en op uw mobiele oproepen. Dit zal deuren openen voor veel creatieve projecten als het zou kunnen worden gekoppeld aan een microcontroller. Daarom zullen we in deze tutorial leren hoe we de GSM-module (SIM900A) kunnen koppelen met AVR-microcontroller ATmega16 en zullen we dit demonstreren door berichten te verzenden en ontvangen met behulp van GSM-module.
Vereiste materialen
- Atmega16
- GSM-module (SIM900 of een andere)
- LCD scherm
- Drukknoppen
- 10k weerstanden, Potentiometer
- Draden aansluiten
- 12V adapter
- USBasp programmeur
- 10-pins FRC-kabel
Gebruikte software
We zullen CodeVisionAVR- software gebruiken voor het schrijven van onze code en SinaProg- software voor het uploaden van onze code naar Atmega16 met behulp van de USBASP-programmeur.
U kunt deze software downloaden via de gegeven links:
CodeVisionAVR:
SinaProg:
Voordat we ingaan op de schema's en codes, leren we over de GSM-module en de werking ervan.
GSM-module
De GSM-module kan zelfs zonder microcontroller worden gebruikt door de AT-opdrachtmodus te gebruiken. Zoals hierboven getoond, wordt de GSM-module geleverd met een USART-adapter die rechtstreeks op de computer kan worden aangesloten met behulp van een MAX232-module of de Tx- en Rx-pinnen kunnen worden gebruikt om deze op een Microcontroller aan te sluiten. Je kunt ook de andere pinnen opmerken zoals MIC +, MIC-, SP +, SP- etc waar een microfoon of een luidspreker kan worden aangesloten. De module kan worden gevoed door een 12V adapter via een normale DC barrel jack.
Plaats uw simkaart in de sleuf van de module en schakel deze in, u zou moeten zien dat een aan / uit-LED gaat branden. Wacht nu ongeveer een minuut en je zou een rode (of een andere kleur) LED moeten zien knipperen om de 3 seconden. Dit betekent dat uw module in staat was om verbinding te maken met uw simkaart. Nu kunt u doorgaan met het verbinden van uw module met Phone of een andere microcontroller.
Je kunt veel coole projecten bouwen met een GSM-module, zoals:
- Draadloos mededelingenbord met behulp van GSM en Arduino
- Automatisch antwoordapparaat met Arduino en GSM-module
- GSM-gebaseerde domotica met behulp van Arduino
- PIR-sensor en op GSM gebaseerd beveiligingssysteem
Bekijk hier ook alle GSM gerelateerde projecten.
Communiceren met GSM-module met behulp van AT-opdrachten
Zoals je misschien al geraden hebt, kan de GSM-module communiceren via seriële communicatie en kan hij maar één taal verstaan en dat zijn " AT-commando's ". Wat u ook aan de GSM-module wilt vertellen of vragen, het mag alleen via AT-opdrachten zijn. Bijvoorbeeld als u wilt weten of uw module actief is. Je zou een commando moeten vragen (sturen) zoals "AT" en je module zal "OK" antwoorden.
Deze AT-commando's worden goed uitgelegd in het gegevensblad en zijn hier te vinden in het officiële gegevensblad. Oke! Oke! Het is een gegevensblad van 271 pagina's en het kan dagen duren voordat u ze doorleest. Daarom heb ik hieronder enkele van de belangrijkste AT-opdrachten gegeven, zodat je dit snel kunt gebruiken.
BIJ |
Antwoorden met OK voor bevestiging |
AT + CPIN? |
Controleer de signaalkwaliteit |
AT + COPS? |
Zoek de naam van de serviceprovider |
ATD96XXXXXXXX; |
Bel naar het specifieke nummer, eindigt met een puntkomma |
OP + CNUM |
Zoek het nummer van de simkaart (werkt mogelijk niet voor sommige simkaarten) |
ATA |
Beantwoord de inkomende oproep |
ATH |
Hang het huidige inkomende gesprek af |
AT + COLP |
Toon inkomend oproepnummer |
AT + VTS = (nummer) |
Stuur DTMF-nummer. U kunt elk nummer op uw mobiele toetsenbord gebruiken voor (nummer) |
AT + CMGR |
AT + CMGR = 1 leest bericht op eerste positie |
AT + CMGD = 1 |
Verwijder bericht op eerste positie |
AT + CMGDA = "DEL ALL" |
Verwijder alle berichten van de simkaart |
AT + CMGL = "ALL" |
Lees alle berichten van de simkaart |
AT + CMGF = 1 |
Stel de SMS-configuratie in. "1" is alleen voor tekstmodus |
AT + CMGS = "+91 968837XXXX" > CircuitDigest-tekst
|
Stuurt hier een sms naar een bepaald nummer 968837XXXX. Als je ">" ziet, begin dan met het invoeren van de tekst. Druk op Ctrl + Z om de tekst te verzenden. |
AT + CGATT? |
Om de internetverbinding op de simkaart te controleren |
OP + CIPSHUT |
Om de TCP-verbinding te sluiten, wat betekent dat u de verbinding met internet verbreekt |
AT + CSTT = "APN", "gebruikersnaam", "Pass" |
Maak verbinding met GPRS met uw APN en Pass-sleutel. Verkrijgbaar bij netwerkprovider. |
AT + CIICR |
Controleer of de simkaart een datapakket heeft |
AT + CIFSR |
Krijg IP van het SIM-netwerk |
AT + CIPSTART = "TCP", "SERVER IP", "PORT" |
Wordt gebruikt om een TCP IP-verbinding in te stellen |
AT + CIPSEND |
Deze opdracht wordt gebruikt om gegevens naar de server te verzenden |
Hier zullen we AT + CMGF en AT + CMGS commando gebruiken om berichten te verzenden.
Als u de GSM-module met Arduino heeft gebruikt, kunt u tijdens het ontvangen van berichten + CMT: commando gebruiken om het mobiele nummer en sms-bericht op een seriële monitor te bekijken. Tekstbericht komt op de tweede regel, zoals weergegeven in de afbeelding.
We zullen dit + CMT: commando scannen om te controleren of het bericht beschikbaar is of niet.
ATMega16 GSM-module interface schakelschema
De verbindingen zijn als volgt
- Tx en Rx van GSM-module naar Rx (Pin14) en Tx (Pin15) van Atmega16 respectievelijk.
- Drukknoppen naar PD5 (Pin19) en PD6 (Pin20).
- LCD-aansluitingen:
- RS - PA 0
- R / W - PA1
- NL - PA2
- D4 - PA4
- D5 - PA5
- D6 - PA6
- D7 - PA7
Het project voor ATmega16 maken met CodeVision
Na het installeren van CodeVisionAVR en SinaProg- software , volgt u de onderstaande stappen om een project te maken en code te schrijven:
Reeds geüpload
Stap 1. Open CodeVision Klik op Bestand -> Nieuw -> Project . Er verschijnt een bevestigingsvenster. Klik op Ja
Stap 2. CodeWizard wordt geopend. Klik op de eerste optie, dwz AT90 , en klik op OK.
Stap 3: - Kies uw microcontrollerchip, hier nemen we Atmega16L zoals afgebeeld.
Stap 4: - Klik op USART . Selecteer ontvanger en zender door erop te klikken. Zoals hieronder getoond:
Stap 5: - Klik op Alfanumeriek LCD-scherm en selecteer Alfanumerieke LCD-ondersteuning inschakelen .
Stap 6: - Klik op Program -> Generate, Save and Exit . Nu is meer dan de helft van ons werk voltooid
Stap 7: - Maak een nieuwe map op het bureaublad zodat onze bestanden in de map blijven, anders worden we verspreid over het hele bureaubladvenster. Geef uw map een naam zoals u wilt en ik raad u aan dezelfde naam te gebruiken om programmabestanden op te slaan.
We zullen na elkaar drie dialoogvensters hebben om bestanden op te slaan.
Doe hetzelfde met de andere twee dialoogvensters die verschijnen nadat u de eerste hebt opgeslagen.
Nu ziet uw werkruimte er zo uit.
Ons meeste werk is voltooid met de hulp van de wizard. Nu moeten we alleen code voor GSM schrijven.
Code en uitleg
Alle header-bestanden worden automatisch bijgevoegd nadat het project is gemaakt, u hoeft alleen het header-bestand delay.h toe te voegen en alle variabelen te declareren. De volledige code wordt aan het einde van deze tutorial gegeven.
# omvatten
Maak een functie om gegevens te ontvangen van het UDR-register. Deze functie retourneert ontvangen gegevens.
unsigned char ontvangen_waarde (ongeldig) { while (! (UCSRA & (1 <
Kom naar de while- lus waarin we twee if- statements maken, een voor het verzenden van berichten en een andere voor het ontvangen. De verzendknop is verbonden met PIND6 van ATmega en de knop voor het ontvangen van berichten met PIND5.
Wanneer PIND6 (knop Verzenden) eerst wordt ingedrukt, wordt de instructie uitgevoerd en worden alle opdrachten om het bericht te verzenden een voor een uitgevoerd.
while (1) { // lcd_clear (); lcd_putsf ("Verzenden-> bttn 1"); lcd_gotoxy (0,1); lcd_putsf ("Ontvang-> knop 2"); if (PIND.6 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Msg verzenden…"); voor (z = 0; cmd_1! = ''; z ++) { UDR = cmd_1; delay_ms (100); } UDR = ('\ r'); delay_ms (500); voor (z = 0; cmd_2! = ''; z ++) { UDR = cmd_2; delay_ms (100); } …..
Als de knop Bericht ontvangen wordt ingedrukt, zal while (b! = '+') Lus controleren of CMT-commando aanwezig is of niet. Indien aanwezig, zal de tweede while- lus worden uitgevoerd en naar de tweede regel van de opdracht gaan en het bericht één voor één op het LCD-scherm afdrukken.
while (PIND.5 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Msg ontvangen…"); b = ontvangen_waarde (); while (b! = '+') { b = ontvangen_waarde (); } b = ontvangen_waarde (); if (b == 'C') { b = ontvangen_waarde (); … ..
Deze lus brengt het programma naar de tweede commandoregel en slaat het bericht op in de array.
while (b! = 0x0a) { b = ontvangen_waarde (); } voor (b = 0; b <3; b ++) { c = ontvangen_waarde (); msg = c; } .. ..
Deze for loop is om het bericht op het LCD-scherm weer te geven.
voor (z = 0; z <3; z ++) { a = msg; lcd_putchar (a); // PRINT IN lcd delay_ms (10); }
Volledige code met demo-video wordt hieronder gegeven, nu moeten we ons project bouwen.
Bouw het project
Klik op Build the project icon, zoals weergegeven.
Na het bouwen van het project wordt een HEX-bestand gegenereerd in de Debug-> Exe- map die te vinden is in de map die u eerder hebt gemaakt om uw project op te slaan. We zullen dit HEX-bestand gebruiken om te uploaden in Atmega16 met Sinaprog-software.
Upload de code naar Atmega16
Verbind uw circuits volgens het gegeven diagram om Atmega16 te programmeren. Sluit de ene kant van de FRC-kabel aan op de USBASP-programmeur en de andere kant maakt verbinding met de SPI-pinnen van de microcontroller zoals hieronder beschreven:
- Pin1 van FRC vrouwelijke connector -> Pin 6, MOSI van Atmega16
- Pin 2 verbonden met Vcc van atmega16 dwz pin 10
- Pin 5 verbonden met reset van atmega16 dwz pin 9
- Pin 7 verbonden met SCK van atmega16 dwz Pin 8
- Pin 9 verbonden met MISO van atmega16 dwz Pin 7
- Pin 8 verbonden met GND van atmega16 dwz Pin 11
We zullen het hierboven gegenereerde Hex-bestand uploaden met behulp van de Sinaprog, dus open het en kies Atmega16 uit het vervolgkeuzemenu Apparaat. Selecteer het HEX-bestand in de map Debug-> Exe, zoals weergegeven.
Klik nu op Program en uw code wordt gebrand in ATmega16 Microcontroller.
U bent klaar en uw Microcontroller is geprogrammeerd. Druk gewoon op de knoppen om de berichten van GSM en ATmega16 microcontroller te verzenden en te ontvangen.
Volledige code en demonstratievideo wordt hieronder gegeven.