- Potrebni materiali
- Uporabljena programska oprema
- GSM modul
- Komuniciranje z modulom GSM z uporabo ukazov AT
- Shema vezja modula ATMega16 GSM
- Ustvarjanje projekta za ATmega16 z uporabo CodeVision
- Koda in razlaga
- Zgradite projekt
- Naložite kodo na Atmega16
Moduli GSM so zanimivi za uporabo, zlasti kadar naš projekt zahteva oddaljeni dostop. Ti moduli lahko izvajajo vsa dejanja običajnega mobilnega telefona, na primer klicanje / prejemanje klica, pošiljanje / prejemanje SMS-ov, povezovanje z internetom prek GPRS-a itd. Na ta modul lahko priključite tudi običajni mikrofon in zvočnik ter se pogovorite na svojem mobilni klici. To bo odprlo vrata številnim kreativnim projektom, če bi jih lahko povezali z mikrokrmilnikom. Zato bomo v tej vadnici izvedeli, kako lahko vmesnik GSM modula (SIM900A) povežemo z mikrokrmilnikom AVR ATmega16, in to prikazali s pošiljanjem in prejemanjem sporočil z uporabo modula GSM.
Potrebni materiali
- Atmega16
- GSM modul (SIM900 ali kateri koli drug)
- LCD zaslon
- Tipke
- 10k upori, potenciometer
- Priključne žice
- 12V adapter
- Programer USBasp
- 10-polni FRC kabel
Uporabljena programska oprema
Za pisanje kode bomo uporabili programsko opremo CodeVisionAVR, za nalaganje kode v Atmega16 pa s programsko opremo USBASP programsko opremo SinaProg.
Programsko opremo lahko prenesete s spodnjih povezav:
CodeVisionAVR:
SinaProg:
Preden se spustimo v sheme in kode, spoznamo GSM modul in njegovo delovanje.
GSM modul
Modul GSM lahko uporabljate tudi brez mikrokrmilnika z uporabo ukaznega načina AT. Kot je prikazano zgoraj, je modul GSM opremljen z adapterjem USART, ki ga je mogoče neposredno povezati z računalnikom z uporabo modula MAX232 ali pa je mogoče za povezavo z mikrokrmilnikom uporabiti Tx in Rx nožice. Opazite lahko tudi druge nožice, kot so MIC +, MIC-, SP +, SP- itd., Kamor je mogoče priključiti mikrofon ali zvočnik. Modul lahko napaja 12V adapter preko običajne vtičnice za enosmerni tok.
Vstavite kartico SIM v režo modula in jo vklopite, opazili boste, da sveti lučka za vklop. Zdaj počakajte kakšno minuto in videli boste, da rdeča (ali katera koli druga barva) LED utripa enkrat na 3 sekunde. To pomeni, da je vaš modul lahko vzpostavil povezavo z vašo kartico SIM. Zdaj lahko nadaljujete s povezovanjem modula s telefonom ali katerim koli mikrokrmilnikom.
Z uporabo modula GSM lahko ustvarite veliko zanimivih projektov, kot so:
- Brezžična oglasna deska z uporabo GSM in Arduino
- Avtomatski klicni odzivnik z uporabo modula Arduino in GSM
- Domača avtomatizacija na osnovi GSM z uporabo Arduina
- PIR senzor in varnostni sistem na osnovi GSM
Tukaj preverite tudi vse projekte, povezane z GSM.
Komuniciranje z modulom GSM z uporabo ukazov AT
Kot ste morda že slutili, lahko modul GSM komunicira prek serijske komunikacije in lahko razume le en jezik, in sicer » AT ukazi «. Karkoli boste morda želeli sporočiti ali vprašati za modul GSM, naj bo le prek ukazov AT. Na primer, če želite vedeti, ali je vaš modul aktiven. Vprašajte (pošljite) ukaz, kot je "AT", in vaš modul vam bo odgovoril "OK".
Ti ukazi AT so dobro razloženi v njegovem podatkovnem listu in jih lahko najdete tukaj v njegovem uradnem obrazcu. V redu! V redu! To je podatkovni list s 271 stranmi, ki ga lahko preberete v nekaj dneh. Zato sem spodaj dal nekaj najpomembnejših AT ukazov, da boste to kmalu začeli izvajati.
AT |
Odgovori z V redu za potrditev |
AT + CPIN? |
Preverite kakovost signala |
AT + POLICIJI? |
Poiščite ime ponudnika storitev |
ATD96XXXXXXXX; |
Klic na določeno številko, ki se konča s podpičjem |
AT + CNUM |
Poiščite številko kartice SIM (pri nekaterih SIM morda ne bo delovala) |
ATA |
Odgovorite na dohodni klic |
ATH |
Prekinite trenutni dohodni klic |
AT + COLP |
Prikaži številko dohodnega klica |
AT + VTS = (število) |
Pošlji številko DTMF. Za (številka) lahko uporabite katero koli številko na mobilni tipkovnici |
AT + CMGR |
AT + CMGR = 1 prebere sporočilo na prvem mestu |
AT + CMGD = 1 |
Izbriši sporočilo na prvem mestu |
AT + CMGDA = "DEL ALL" |
Izbriši vsa sporočila s kartice SIM |
AT + CMGL = "VSE" |
Preberite vsa sporočila s kartice SIM |
AT + CMGF = 1 |
Nastavite konfiguracijo SMS. "1" je namenjen samo besedilnemu načinu |
AT + CMGS = “+91 968837XXXX” > CircuitDigest Text
|
Pošlje SMS na določeno številko tukaj 968837XXXX. Ko vidite “>”, začnite vnašati besedilo. Pritisnite Ctrl + Z, da pošljete besedilo. |
AT + CGATT? |
Preverjanje internetne povezave na kartici SIM |
NA + CIPSHUT |
Če želite zapreti povezavo TCP, kar pomeni, da prekinete povezavo z internetom |
AT + CSTT = "APN", "uporabniško ime", "Pass" |
Povežite se z GPRS s svojim APN in Pass ključem. Lahko jih dobite pri ponudniku omrežja. |
AT + CIICR |
Preverite, ali ima kartica SIM podatkovni paket |
AT + CIFSR |
Pridobite IP omrežja SIM |
AT + CIPSTART = “TCP”, “SERVER IP”, “PORT” |
Uporablja se za nastavitev TCP IP povezave |
NA + CIPSEND |
Ta ukaz se uporablja za pošiljanje podatkov na strežnik |
Tukaj bomo za pošiljanje sporočil uporabili ukaza AT + CMGF in AT + CMGS.
Če ste z Arduinom uporabljali modul GSM, lahko med prejemanjem sporočil uporabite ukaz + CMT: za ogled številke mobilnega telefona in besedilnega sporočila na serijskem monitorju. Sporočilo SMS se prikaže v drugi vrstici, kot je prikazano na sliki.
Ta ukaz + CMT: bomo pregledali, da preverimo, ali je sporočilo na voljo ali ne.
Shema vezja modula ATMega16 GSM
Povezave bodo naslednje
- Tx in Rx modula GSM na Rx (Pin14) oziroma Tx (Pin15) Atmega16.
- Potisnite gumba na PD5 (Pin19) in PD6 (Pin20).
- Priključki LCD:
- RS - PA 0
- R / W - PA1
- SL - PA2
- D4 - PA4
- D5 - PA5
- D6 - PA6
- D7 - PA7
Ustvarjanje projekta za ATmega16 z uporabo CodeVision
Po namestitvi CodeVisionAVR in SinaProg programska oprema , sledite spodnjim korakom za ustvarjanje projekta in pisanje kodo:
Že naloženo
1. korak. Odprite CodeVision Kliknite Datoteka -> Novo -> Projekt . Pojavilo se bo pogovorno okno za potrditev. Kliknite Da
Korak 2. Odprl se bo čarovnik CodeWizard. Kliknite prvo možnost, tj. AT90 , in kliknite V redu.
3. korak: - Izberite svoj mikrokrmilniški čip, tu bomo vzeli Atmega16L, kot je prikazano.
4. korak: - Kliknite USART . S klikom nanj izberite Sprejemnik in oddajnik . Kot je prikazano spodaj:
5. korak: - Kliknite alfanumerični LCD in izberite Omogoči alfanumerično podporo LCD .
6. korak: - Kliknite Program -> Ustvari, shrani in zapri . Zdaj je več kot polovica našega dela končana
7. korak: - Na namizju ustvarite novo mapo, tako da bodo naše datoteke ostale v mapi, sicer bomo razpršene po celotnem oknu namizja. Poimenujte svojo mapo, kot želite, in predlagam, da uporabite isto ime za shranjevanje programskih datotek.
Za shranjevanje datotek bomo imeli eno za drugim tri pogovorna okna.
Naredite enako z drugimi dvema pogovornima oknoma, ki se bosta pojavili, ko boste shranili prvo.
Zdaj je vaš delovni prostor videti tako.
Največ dela opravimo s pomočjo čarovnika. Zdaj moramo napisati kodo samo za GSM.
Koda in razlaga
Po izdelavi projekta so vse datoteke z glavo samodejno priložene, vključiti morate samo datoteko z glavo delay.h in prijaviti vse spremenljivke. Popolna koda je podana na koncu te vadnice.
#include
Naredite funkcijo za sprejemanje podatkov iz UDR registra. Ta funkcija bo vrnila prejete podatke.
nepodpisani znak prejme_vrednost (void) { while (! (UCSRA & (1 <
Pridite do zanke while, v kateri ustvarimo dva stavka if , enega za pošiljanje sporočil in drugega za prejemanje. Gumb Pošlji je povezan s PIND6 v ATmega, gumb za prejemanje sporočil pa s PIND5.
Ko najprej pritisnete PIND6 (gumb za pošiljanje), če se bo stavek izvedel, vsi ukazi za pošiljanje sporočila pa se bodo izvajali posamezno.
while (1) { // lcd_clear (); lcd_putsf ("Pošlji-> bttn 1"); lcd_gotoxy (0,1); lcd_putsf ("Sprejem-> tipka 2"); če (PIND.6 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Pošiljanje sporočil…"); za (z = 0; cmd_1! = ''; z ++) { UDR = cmd_1; zamuda_ms (100); } UDR = ('\ r'); delay_ms (500); za (z = 0; cmd_2! = ''; z ++) { UDR = cmd_2; zamuda_ms (100); } …..
Če Prejemanje pritisnete gumb sporočilo, medtem ko (b! = '+') Zanka bo preveril, ali je CMT ukaz prisoten ali ne. Če obstaja, se izvede druga zanka while, ki se premakne v drugo vrstico ukaza in eno za drugo natisne sporočilo na LCD.
medtem ko (PIND.5 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Prejemanje sporočil…"); b = prejeta_vrednost (); medtem ko (b! = '+') { b = prejeta_vrednost (); } b = prejeta_vrednost (); če (b == 'C') { b = prejeta_vrednost (); … ..
Ta zanka popelje program v drugo vrstico ukaza in sporočilo shrani v matriko.
medtem ko (b! = 0x0a) { b = prejeta_vrednost (); } za (b = 0; b <3; b ++) { c = prejeta_vrednost (); sporočilo = c; } .. ..
Ta zanka for prikazuje sporočilo na LCD-prikazovalniku.
za (z = 0; z <3; z ++) { a = msg; lcd_putchar (a); // TISKANJE V lcd delay_ms (10); }
Popolna koda z Demo Video je podana spodaj, zdaj moramo zgraditi svoj projekt.
Zgradite projekt
Kliknite ikono Build the project , kot je prikazano.
Po izdelavi projekta se v mapi Debug-> Exe ustvari datoteka HEX, ki jo najdete v mapi, ki ste jo že ustvarili, da shranite svoj projekt. To datoteko HEX bomo uporabili za nalaganje v Atmega16 s programsko opremo Sinaprog.
Naložite kodo na Atmega16
Priključite svoja vezja v skladu z danim diagramom na program Atmega16. Priključite eno stran kabla FRC na programer USBASP, druga stran pa bo priključena na zatiče SPI mikrokrmilnika, kot je opisano spodaj:
- Pin1 ženskega konektorja FRC -> Pin 6, MOSI Atmega16
- Pin 2, povezan z Vcc atmega16, tj. Pin 10
- Zatič 5 povezan s ponastavitvijo atmega16, tj. Zatič 9
- Pin 7, povezan s SCK atmega16, tj. Pin 8
- Pin 9, povezan z MISO atmega16, tj. Pin 7
- Zatič 8, povezan z GND atmega16, tj. Zatič 11
Zgoraj ustvarjeno Hex datoteko bomo naložili s pomočjo Sinaprog, zato jo odprite in v spustnem meniju Device izberite Atmega16. Izberite datoteko HEX v mapi Debug-> Exe, kot je prikazano.
Zdaj kliknite Program in vaša koda bo zgoreta v mikrokrmilniku ATmega16.
Končali ste in vaš mikrokrmilnik je programiran. Samo pritisnite gumbe za pošiljanje in prejemanje sporočil iz mikrokrmilnika GSM in ATmega16.
Celotna koda in predstavitveni video je podan spodaj.