- Reikalingos medžiagos
- Naudota programinė įranga
- GSM modulis
- Bendravimas su GSM moduliu naudojant AT komandas
- ATMega16 GSM modulio sąsajos grandinės schema
- „ATmega16“ projekto kūrimas naudojant „CodeVision“
- Kodas ir paaiškinimas
- Sukurkite projektą
- Įkelkite kodą į „Atmega16“
GSM modulius yra įdomu naudoti, ypač kai mūsų projektui reikalinga nuotolinė prieiga. Šie moduliai galėtų atlikti visus veiksmus, kuriuos galėtų atlikti įprastas mūsų mobilusis telefonas, pvz., Skambinti / priimti skambutį, siųsti / gauti SMS, prisijungti prie interneto naudojant GPRS ir kt. Taip pat galite prie šio modulio prijungti įprastą mikrofoną ir garsiakalbį bei kalbėtis savo mobilieji skambučiai. Tai atvers duris daugeliui kūrybinių projektų, jei jį bus galima suderinti su mikrovaldikliu. Taigi šioje pamokoje sužinosime, kaip galime susieti GSM modulį (SIM900A) su AVR mikrovaldikliu ATmega16 ir parodysime jį siunčiant ir priimant pranešimus naudojant GSM modulį.
Reikalingos medžiagos
- 16. „Atmega“
- GSM modulis (SIM900 ar bet kuris kitas)
- LCD ekranas
- Paspauskite mygtukus
- 10k rezistoriai, potenciometras
- Jungiamieji laidai
- 12 V adapteris
- „USBasp“ programuotojas
- 10 kontaktų FRC kabelis
Naudota programinė įranga
Kodo įrašymui naudosime „ CodeVisionAVR“ programinę įrangą ir „ SinaProg“ programinę įrangą - kodui įkelti į „Atmega16“ naudojant USBASP programuotoją.
Šias programines įrangą galite atsisiųsti iš nurodytų nuorodų:
„CodeVisionAVR“:
„SinaProg“:
Prieš eidami į schemas ir kodus, mes sužinome apie GSM modulį ir jo veikimą.
GSM modulis
Naudojant AT komandų režimą, GSM modulį galima naudoti net be jokio mikrovaldiklio. Kaip parodyta aukščiau, GSM modulyje yra USART adapteris, kurį galima tiesiogiai susieti su kompiuteriu naudojant MAX232 modulį, arba Tx ir Rx kaiščiai gali būti naudojami prijungiant jį prie mikrovaldiklio. Taip pat galite pastebėti kitus kaiščius, tokius kaip MIC +, MIC-, SP +, SP- ir kt., Kur galima prijungti mikrofoną ar garsiakalbį. Modulis gali būti maitinamas 12 V adapteriu per įprastą nuolatinės srovės vamzdžio lizdą.
Įdėkite savo SIM kortelę į modulio angą ir įjunkite ją, turėtumėte pastebėti, kad įsijungia maitinimo šviesos diodas. Dabar palaukite maždaug minutę ir turėtumėte pamatyti raudoną (arba bet kokios kitos spalvos) šviesos diodą, kuris mirksi kartą per 3 sekundes. Tai reiškia, kad jūsų modulis sugebėjo užmegzti ryšį su jūsų SIM kortele. Dabar galite tęsti modulio prijungimą prie telefono ar bet kurio mikrovaldiklio.
Naudodami GSM modulį galite sukurti daug įdomių projektų:
- Belaidė skelbimų lenta, naudojanti GSM ir „Arduino“
- Automatinis skambučių atsakiklis, naudojant „Arduino“ ir „GSM“ modulį
- GSM namų automatika naudojant „Arduino“
- PIR jutiklis ir GSM apsaugos sistema
Čia taip pat patikrinkite visus su GSM susijusius projektus.
Bendravimas su GSM moduliu naudojant AT komandas
Kaip jau spėjote, GSM modulis gali bendrauti nuosekliai ir suprasti tik vieną kalbą, ty „ AT komandas “. Kad ir ką norėtumėte pasakyti ar paprašyti GSM modulio, tai turėtų būti tik per AT komandas. Pavyzdžiui, jei norite sužinoti, ar jūsų modulis yra aktyvus. Turėtumėte paprašyti (išsiųsti) tokios komandos kaip „AT“ ir jūsų modulis atsakys „Gerai“.
Šios AT komandos yra gerai paaiškintos jo duomenų lape ir čia galite rasti jos oficialiame duomenų lape. Gerai! Gerai! Tai yra 271 puslapio duomenų lapas, kurį galite perskaityti kelias dienas. Taigi aš pateikiau keletą svarbiausių AT komandų, kad galėtumėte tai greitai paleisti.
AT |
Atsakymą patvirtina gerai |
AT + CPIN? |
Patikrinkite signalo kokybę |
AT + COPS? |
Raskite paslaugų teikėjo pavadinimą |
ATD96XXXXXXXX; |
Skambinimas konkrečiu numeriu baigiasi kabliataškiu |
AT + CNUM |
Suraskite SIM kortelės numerį (kai kurioms SIM kortelėms gali netikti) |
ATA |
Atsiliepkite į gaunamą skambutį |
ATH |
Nutraukite dabartinį gaunamą skambutį |
AT + COLP |
Rodyti gaunamo skambučio numerį |
AT + VTS = (skaičius) |
Siųsti DTMF numerį. Savo mobiliajame klaviatūroje galite naudoti bet kurį numerį (numeriui) |
AT + CMGR |
AT + CMGR = 1 skaito pranešimą pirmoje pozicijoje |
AT + CMGD = 1 |
Ištrinti pranešimą iš pirmos vietos |
AT + CMGDA = „Ištrinti VISUS“ |
Ištrinti visus pranešimus iš SIM |
AT + CMGL = „VISI“ |
Perskaitykite visus pranešimus iš SIM |
AT + CMGF = 1 |
Nustatykite SMS konfigūraciją. „1“ skirtas tik teksto režimui |
AT + CMGS = „+91 968837XXXX“ > „CircuitDigest“ tekstas
|
Siunčia SMS tam tikru numeriu čia 968837XXXX. Kai pamatysite „>“, pradėkite įvesti tekstą. Norėdami išsiųsti tekstą, paspauskite „Ctrl“ + Z. |
AT + CGATT? |
Norėdami patikrinti interneto ryšį SIM kortelėje |
AT + CIPSHUT |
Uždaryti TCP ryšį, ty atjungti interneto formą |
AT + CSTT = „APN“, „vartotojo vardas“, „Leisti“ |
Prisijunkite prie GPRS naudodami APN ir Pass raktą. Gauti galima iš tinklo teikėjo. |
AT + CIICR |
Patikrinkite, ar SIM kortelėje yra duomenų paketas |
AT + CIFSR |
Gaukite SIM tinklo IP adresą |
AT + CIPSTART = „TCP“, „SERVER IP“, „PORT“ |
Naudojamas nustatyti TCP IP ryšį |
AT + CIPSEND |
Ši komanda naudojama duomenims siųsti į serverį |
Čia pranešimams siųsti naudosime komandą AT + CMGF ir AT + CMGS.
Jei naudojote GSM modulį su „Arduino“, priimdami pranešimus galite naudoti komandą + CMT: norėdami peržiūrėti mobiliojo telefono numerį ir teksto pranešimą serijiniame monitoriuje. Teksto pranešimas pateikiamas antroje eilutėje, kaip parodyta paveikslėlyje.
Mes nuskaitysime šią komandą + CMT: norėdami patikrinti, ar pranešimas yra, ar ne.
ATMega16 GSM modulio sąsajos grandinės schema
Ryšiai bus tokie
- GSM modulio Tx ir Rx į Atmega16 atitinkamai Rx (Pin14) ir Tx (Pin15).
- Paspauskite mygtukus iki PD5 (19 kaištis) ir PD6 (20 kaištis).
- LCD jungtys:
- RS - PA 0
- R / W - PA1
- LT - PA2
- D4 - PA4
- D5 - PA5
- D6 - PA6
- D7 - PA7
„ATmega16“ projekto kūrimas naudojant „CodeVision“
Įdiegę „ CodeVisionAVR“ ir „ SinaProg“ programinę įrangą , atlikite toliau nurodytus veiksmus, norėdami sukurti projektą ir rašyti kodą:
Jau įkeltas
1 žingsnis. Atidarykite „CodeVision“ Spustelėkite Failas -> Naujas -> Projektas . Atsiras patvirtinimo dialogo langas. Spustelėkite Taip
2 veiksmas. Bus atidarytas „CodeWizard“. Spustelėkite pirmąją parinktį, ty AT90 , ir spustelėkite Gerai.
3 žingsnis: - Pasirinkite savo mikrovaldiklio lustą, čia mes paimsime „Atmega16L“, kaip parodyta.
4 žingsnis: - Spustelėkite USART . Spustelėkite ant jų pasirinkite Imtuvas ir Siųstuvas . Kaip parodyta žemiau:
5 žingsnis: - Spustelėkite raidinį ir skaitmeninį LCD ir pasirinkite Įgalinti raidinių ir skaitmeninių LCD palaikymą .
6 žingsnis: - Spustelėkite Programa -> Generuoti, išsaugoti ir išeiti . Dabar atlikta daugiau nei pusė mūsų darbo
7 žingsnis: - Padarykite naują aplanką darbalaukyje, kad mūsų failai liktų aplanke, kitaip mes jį išsklaidysime visame darbalaukio lange. Pavadinkite savo aplanką taip, kaip norite, ir aš siūlau tuo pačiu pavadinimu išsaugoti programos failus.
Norėdami išsaugoti failus, vienas po kito turėsime tris dialogo langus.
Atlikite tą patį su kitais dviem dialogo langeliais, kurie pasirodys išsaugojus pirmąjį.
Dabar jūsų darbo sritis atrodo taip.
Didžioji mūsų darbo dalis atliekama vedlio pagalba. Dabar turime rašyti kodą tik GSM.
Kodas ir paaiškinimas
Visi antraštės failai automatiškai pridedami sukūrus projektą, jūs tiesiog turite įtraukti delay.h antraštės failą ir deklaruoti visus kintamuosius. Pilnas kodas pateikiamas šios pamokos pabaigoje.
# įtraukti
Sukurkite funkciją gauti duomenis iš UDR registro. Ši funkcija grąžins gautus duomenis.
nepasirašyta simbolis gautas_vertas (negaliojantis) { while (! (UCSRA & (1 <
Ateikite į „ while“ ciklą, kuriame kuriame du „ if“ sakinius, vieną - pranešimui siųsti, kitą - gauti. Mygtukas „Siųsti“ yra sujungtas su „ATmega“ PIND6, o pranešimo gavimo mygtukas - su PIND5.
Kai PIND6 (mygtuką "Siųsti") yra nuspaustas pirmas , jei pareiškimas bus įvykdyti ir visas komandas siųsti žinutę atliks po vieną.
while (1) { // lcd_clear (); lcd_putsf ("Siųsti-> bttn 1"); lcd_gotoksi (0,1); lcd_putsf ("Gauti-> buttn 2"); jei (PIND.6 == 1) { lcd_clear (); lcd_gotoksi (0,0); lcd_putsf ("Siunčiama žinutė…"); už (z = 0; cmd_1! = ""; z ++) { UDR = cmd_1; delsos_ms (100); } UDR = ('\ r'); delsos_ms (500); už (z = 0; cmd_2! = ''; z ++) { UDR = cmd_2; delsos_ms (100); }…..
Jei paspausite mygtuką Gauti pranešimą, kilpa (b! = '+') Patikrins, ar CMT komanda yra, ar ne. Jei yra, antrasis, kol ciklas bus vykdomas, pereis prie antrosios komandos eilutės ir išspausdins pranešimą LCD po vieną.
o (PIND.5 == 1) { lcd_clear (); lcd_gotoksi (0,0); lcd_putsf ("Gaunamos žinutės…"); b = gautoji_vertė (); o (b! = '+') { b = gaunama_vertė (); } b = gautoji_vertė (); if (b == 'C') { b = gautos_vertė (); … ..
Ši kilpa perkelia programą į antrąją komandų eilutę ir išsaugo pranešimą masyve.
o (b! = 0x0a) { b = gautoji_vertė (); } (b = 0; b <3; b ++) { c = gautos_vertė (); msg = c; } .. ..
Tai už kilpos yra rodyti pranešimą apie LCD.
už (z = 0; z <3; z ++) { a = msg; lcd_putchar (a); // Spausdinti lcd delay_ms (10); }
Pilnas kodas su demonstraciniu vaizdo įrašu pateikiamas žemiau, dabar mes turime sukurti savo projektą.
Sukurkite projektą
Spustelėkite „ Sukurti projekto piktogramą“, kaip parodyta.
Sukūrus projektą, aplanke „ Debug-> Exe“ sugeneruojamas HEX failas, kurį galite rasti aplanke, kurį anksčiau sukūrėte norėdami išsaugoti savo projektą. Šį HEX failą naudosime įkelti į „Atmega16“ naudojant „Sinaprog“ programinę įrangą.
Įkelkite kodą į „Atmega16“
Prijunkite savo grandines pagal pateiktą schemą prie programos „Atmega16“. Vienos FRC kabelio pusės prijungimas prie USBASP programuotojo ir kitos pusės bus prijungtas prie mikrovaldiklio SPI kaiščių, kaip aprašyta toliau:
- FRC moterų jungties 1 kaištis -> „Atmega16“ 6 kaištis, MOSI
- 2 kaištis prijungtas prie atmega16 Vcc, ty 10 kaištis
- 5 kaištis prijungtas prie „Atmintos 16“ nustatymo, ty 9 kaiščio
- 7 kaištis prijungtas prie atmega16 SCK, ty 8 kaištis
- 9 kaištis prijungtas prie atmega16 MISO, ty 7 kaištis
- 8 kaištis sujungtas su atmega16 BND, ty 11 kaiščiu
Pirmiau sugeneruotą „Hex“ failą įkelsime naudodami „Sinaprog“, todėl atidarykite jį ir išskleidžiamajame meniu „Device“ pasirinkite Atmega16. Pasirinkite HEX failą iš aplanko Debug-> Exe, kaip parodyta.
Dabar spustelėkite Programa ir jūsų kodas bus įrašytas mikrovaldiklyje „ATmega16“.
Jūs baigėte ir jūsų mikrovaldiklis yra užprogramuotas. Tiesiog paspauskite mygtukus, norėdami siųsti ir gauti pranešimus iš GSM ir ATmega16 mikrovaldiklių.
Pilnas kodas ir demonstracinis vaizdo įrašas pateikiamas žemiau.