- Materiale necesare
- Software folosit
- Modul GSM
- Comunicarea cu modulul GSM utilizând comenzile AT
- Diagrama circuitului de interfațare a modulului GSM ATMega16
- Crearea proiectului pentru ATmega16 folosind CodeVision
- Cod și explicație
- Construiți proiectul
- Încărcați codul pe Atmega16
Modulele GSM sunt interesante de utilizat mai ales atunci când proiectul nostru necesită acces de la distanță. Aceste module ar putea face toate acțiunile pe care le-ar putea face telefonul nostru mobil normal, cum ar fi efectuarea / primirea unui apel, trimiterea / primirea unui SMS, conectarea la internet utilizând GPRS etc. apeluri mobile. Acest lucru va deschide ușile multor proiecte creative dacă ar putea fi interfațat cu un microcontroler. Prin urmare, în acest tutorial vom afla cum putem interfața modulul GSM (SIM900A) cu microcontrolerul AVR ATmega16 și îl vom demonstra prin trimiterea și primirea de mesaje utilizând modulul GSM.
Materiale necesare
- Atmega16
- Modul GSM (SIM900 sau orice altul)
- Ecran LCD
- Apasa butoanele
- Rezistențe de 10k, potențiometru
- Conectarea firelor
- Adaptor 12V
- Programator USBasp
- Cablu FRC cu 10 pini
Software folosit
Vom folosi software-ul CodeVisionAVR pentru scrierea codului nostru și software-ul SinaProg pentru încărcarea codului nostru în Atmega16 folosind programatorul USBASP.
Puteți descărca aceste programe din linkurile date:
CodeVisionAVR:
SinaProg:
Înainte de a intra în scheme și coduri, aflăm despre modulul GSM și funcționarea acestuia.
Modul GSM
Modulul GSM poate fi utilizat chiar și fără niciun microcontroler folosind modul de comandă AT. Așa cum se arată mai sus, modulul GSM vine cu un adaptor USART care poate fi interfațat direct la computer utilizând un modul MAX232 sau pinii Tx și Rx pot fi utilizați pentru a-l conecta la un microcontroler. De asemenea, puteți observa ceilalți pini, cum ar fi MIC +, MIC-, SP +, SP- etc., unde se poate conecta un microfon sau un difuzor. Modulul poate fi alimentat de un adaptor de 12V printr-o mufă normală DC.
Introduceți cartela SIM în fanta modulului și porniți-o, ar trebui să observați un LED de alimentare aprins. Acum așteptați un minut cam cam așa și ar trebui să vedeți un LED roșu (sau orice altă culoare) care să clipească o dată la fiecare 3 secunde. Aceasta înseamnă că modulul dvs. a fost capabil să stabilească conexiunea cu cartela SIM. Acum puteți continua să vă conectați modulul cu telefonul sau orice microcontroler.
Puteți construi multe proiecte interesante utilizând modulul GSM, cum ar fi:
- Panou de anunțuri fără fir folosind GSM și Arduino
- Răspuns automat la apeluri folosind modulul Arduino și GSM
- Automatizare la domiciliu bazată pe GSM folosind Arduino
- Senzor PIR și sistem de securitate bazat pe GSM
De asemenea, verificați aici toate proiectele legate de GSM.
Comunicarea cu modulul GSM utilizând comenzile AT
Așa cum ați fi putut ghici, modulul GSM poate comunica prin comunicare serială și nu poate înțelege decât o singură limbă și anume „ comenzi AT ”. Orice ați dori să spuneți sau să cereți modulului GSM ar trebui să fie doar prin comenzi AT. De exemplu, dacă doriți să știți dacă modulul dvs. este activ. Ar trebui să cereți (să trimiteți) o comandă precum „AT”, iar modulul dvs. va răspunde „OK”.
Aceste comenzi AT sunt bine explicate în foaia sa tehnică și pot fi găsite aici în foaia sa tehnică oficială. Bine! Bine! Este o foaie de date de 271 pagini și s-ar putea să durați câteva zile pentru a le citi. Așa că am dat câteva dintre cele mai importante comenzi AT de mai jos, pentru ca tu să poți opera acest lucru în curând.
LA |
Răspunde cu OK pentru Confirmare |
AT + CPIN? |
Verificați calitatea semnalului |
AT + COPS? |
Găsiți numele furnizorului de servicii |
ATD96XXXXXXXX; |
Apelați la numărul specific, se termină cu punct și virgulă |
AT + CNUM |
Găsiți numărul de cartelă SIM (s-ar putea să nu funcționeze pentru unele cartele SIM) |
LA O |
Răspundeți la apelul primit |
ATH |
Închideți apelul primit curent |
AT + COLP |
Afișați numărul de apel primit |
AT + VTS = (număr) |
Trimiteți numărul DTMF. Puteți utiliza orice număr de pe tastatura mobilă pentru (număr) |
AT + CMGR |
AT + CMGR = 1 citește mesajul în prima poziție |
AT + CMGD = 1 |
Ștergeți mesajul în prima poziție |
AT + CMGDA = ”DEL ALL” |
Ștergeți toate mesajele din SIM |
AT + CMGL = ”ALL” |
Citiți toate mesajele din SIM |
AT + CMGF = 1 |
Setați configurația SMS. „1” este pentru modul numai text |
AT + CMGS = „+91 968837XXXX” > CircuitDigest Text
|
Trimite SMS la un anumit număr aici 968837XXXX. Când vedeți „>” începeți să introduceți textul. Apăsați Ctrl + Z pentru a trimite textul. |
AT + CGATT? |
Pentru a verifica conexiunea la internet pe cartela SIM |
AT + CIPSHUT |
Pentru a închide conexiunea TCP, adică pentru a deconecta Internetul |
AT + CSTT = „APN”, „nume de utilizator”, „Trecere” |
Conectați-vă la GPRS cu cheia APN și Pass. Poate fi obținut de la furnizorul de rețea. |
AT + CIICR |
Verificați dacă cartela SIM are pachet de date |
AT + CIFSR |
Obțineți IP-ul rețelei SIM |
AT + CIPSTART = „TCP”, „SERVER IP”, „PORT” |
Folosit pentru a seta o conexiune IP TCP |
AT + CIPSEND |
Această comandă este utilizată pentru a trimite date către server |
Aici vom folosi comanda AT + CMGF și AT + CMGS pentru a trimite mesaje.
Dacă ați utilizat modulul GSM cu Arduino, în timp ce primiți mesaje, puteți utiliza comanda + CMT: pentru a vizualiza numărul de telefon mobil și mesajul text pe monitorul serial. Mesajul text apare pe a doua linie așa cum se arată în imagine.
Vom scana această comandă + CMT: pentru a verifica dacă mesajul este disponibil sau nu.
Diagrama circuitului de interfațare a modulului GSM ATMega16
Conexiunile vor fi după cum urmează
- Tx și Rx ale modulului GSM la Rx (Pin14) și respectiv Tx (Pin15) din Atmega16.
- Apăsați butoanele la PD5 (Pin19) și PD6 (Pin20).
- Conexiuni LCD:
- RS - PA 0
- R / W - PA1
- RO - PA2
- D4 - PA4
- D5 - PA5
- D6 - PA6
- D7 - PA7
Crearea proiectului pentru ATmega16 folosind CodeVision
După instalarea software- urilor CodeVisionAVR și SinaProg , urmați pașii de mai jos pentru a crea codul de proiect și scriere:
Încărcat deja
Pasul 1. Deschideți CodeVision Faceți clic pe Fișier -> Nou -> Proiect . Va apărea caseta de dialog Confirmare. Faceți clic pe Da
Pasul 2. Se va deschide CodeWizard. Faceți clic pe prima opțiune, adică AT90 , și faceți clic pe OK.
Pasul 3: - Alegeți cipul de microcontroler, aici vom lua Atmega16L așa cum se arată.
Pasul 4: - Faceți clic pe USART . Selectați Receptor și emițător făcând clic pe el. Așa cum se arată mai jos:
Pasul 5: - Faceți clic pe LCD alfanumeric și selectați Activare suport LCD alfanumeric .
Pasul 6: - Faceți clic pe Program -> Generați, salvați și ieșiți . Acum, mai mult de jumătate din munca noastră este finalizată
Pasul 7: - Creați un folder nou pe desktop, astfel încât fișierele noastre să rămână în folder, altfel vom fi împrăștiate pe întreaga fereastră a desktopului. Denumiți folderul după cum doriți și vă sugerez să utilizați același nume pentru a salva fișierele programului.
Vom avea trei casete de dialog una după alta pentru a salva fișiere.
Faceți același lucru cu alte două casete de dialog care vor apărea după ce salvați prima.
Acum, spațiul dvs. de lucru arată astfel.
Cea mai mare parte a lucrării noastre este finalizată cu ajutorul Vrăjitorului. Acum, trebuie să scriem cod doar pentru GSM.
Cod și explicație
Toate fișierele antet sunt atașate automat după crearea proiectului, trebuie doar să includeți fișierul antet delay.h și să declarați toate variabilele. Codul complet este dat la sfârșitul acestui tutorial.
#include
Realizați o funcție pentru a primi date din registrul UDR. Această funcție va returna datele primite.
caracter nesemnat a primit valoare_valid (nul) { while (! (UCSRA & (1 <
Vino la bucla while în care creăm două instrucțiuni if , una pentru trimiterea mesajului și alta pentru primire. Butonul Trimitere este conectat cu PIND6 al ATmega și butonul de primire a mesajului cu PIND5.
Când PIND6 (butonul Trimitere) este apăsat mai întâi dacă instrucțiunea va fi executată și toate comenzile pentru a trimite mesajul se vor executa una câte una.
while (1) { // lcd_clear (); lcd_putsf ("Trimite-> bttn 1"); lcd_gotoxie (0,1); lcd_putsf ("Receive-> buttn 2"); if (PIND.6 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Trimiterea mesajului…"); pentru (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); }…..
Dacă butonul Primire mesaj este apăsat, în timp ce bucla (b! = '+') Va verifica dacă comanda CMT este prezentă sau nu. Dacă este prezent, a doua buclă while se va executa și va merge la a doua linie a comenzii și va imprima mesajul pe LCD unul câte unul.
while (PIND.5 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Primirea mesajului…"); b = valoare_primită (); while (b! = '+') { b = valoare_primită (); } b = valoare_primită (); if (b == 'C') { b = valoare_primită (); ... ..
Această buclă duce programul la a doua linie de comandă și stochează mesajul în matrice.
while (b! = 0x0a) { b = valoare_primită (); } pentru (b = 0; b <3; b ++) { c = valoare_primită (); msg = c; } .. ..
Aceasta pentru bucla este de a afișa mesajul pe ecranul LCD.
pentru (z = 0; z <3; z ++) { a = msg; lcd_putchar (a); // PRINT IN lcd delay_ms (10); }
Codul complet cu Demo Video este dat mai jos, acum trebuie să ne construim proiectul.
Construiți proiectul
Faceți clic pe Construiți pictograma proiectului așa cum se arată.
După construirea proiectului, un fișier HEX este generat în folderul Debug-> Exe care poate fi găsit în folderul pe care l-ați creat anterior pentru a vă salva proiectul. Vom folosi acest fișier HEX pentru a încărca în Atmega16 folosind software-ul Sinaprog.
Încărcați codul pe Atmega16
Conectați-vă circuitele conform schemei date la programul Atmega16. Conectați o parte a cablului FRC la programatorul USBASP și cealaltă parte se va conecta la pinii SPI ai microcontrolerului așa cum este descris mai jos:
- Pinul 1 al conectorului femelă FRC -> Pinul 6, MOSI al Atmega16
- Pinul 2 conectat la Vcc al atmega16 adică Pinul 10
- Pinul 5 conectat la Resetarea atmega16, adică Pinul 9
- Pinul 7 conectat la SCK al atmega16 adică Pinul 8
- Pinul 9 conectat la MISO al atmega16 adică Pinul 7
- Pinul 8 conectat la GND al atmega16 adică Pinul 11
Vom încărca fișierul Hex generat mai sus folosind Sinaprog, deci deschideți-l și alegeți Atmega16 din meniul derulant Dispozitiv. Selectați fișierul HEX din folderul Debug-> Exe așa cum se arată.
Acum, faceți clic pe Program și codul dvs. va fi ars în microcontrolerul ATmega16.
Ați terminat și microcontrolerul dvs. este programat. Doar apăsați butoanele pentru a trimite și primi mesajele din microcontrolerul GSM și ATmega16.
Codul complet și videoclipul demonstrativ sunt prezentate mai jos.