- Szükséges anyagok
- Használt szoftver
- GSM modul
- Kommunikáció a GSM modullal AT parancsok használatával
- ATMega16 GSM modul interfész áramkör rajza
- Projekt létrehozása az ATmega16 számára a CodeVision használatával
- Kód és magyarázat
- Építsd meg a projektet
- Töltse fel a kódot az Atmega16-ra
A GSM modulokat különösen akkor lehet érdekes használni, ha projektünk távoli hozzáférést igényel. Ezek a modulok elvégezhetnek minden olyan műveletet, amelyet a normál mobiltelefonunk képes megtenni, például hívás kezdeményezése / fogadása, SMS küldés / fogadás, internethez való csatlakozás GPRS használatával stb. Ehhez a modulhoz normál mikrofont és hangszórót is csatlakoztathat, és beszélgethet a mobilhívások. Ez számos kreatív projekt előtt nyit kaput, ha összekapcsolható egy mikrovezérlővel. Ennélfogva ebben az oktatóanyagban megtudhatjuk, hogyan tudjuk összekapcsolni a GSM modult (SIM900A) az ATmega16 AVR mikrovezérlővel, és bemutatni fogjuk azt üzenetek küldésével és fogadásával a GSM modul segítségével.
Szükséges anyagok
- Atmega16
- GSM modul (SIM900 vagy bármely más)
- LCD kijelzö
- Nyomógombok
- 10k ellenállás, potenciométer
- Csatlakozó vezetékek
- 12V-os adapter
- USBasp programozó
- 10 tűs FRC kábel
Használt szoftver
A CodeVisionAVR szoftvert fogjuk használni a kódunk megírásához, a SinaProg szoftvert pedig a kódunk feltöltéséhez az Atmega16-ba USBASP programozó segítségével.
Ezeket a szoftvereket a megadott linkekről töltheti le:
CodeVisionAVR:
SinaProg:
Mielőtt belekezdenénk a sémákba és a kódokba, megismerjük a GSM modult és annak működését.
GSM modul
A GSM modul mikrokontroller nélkül is használható az AT parancs mód használatával. Amint a fentiekből látható, a GSM modulhoz tartozik egy USART adapter, amely közvetlenül összekapcsolható a számítógéppel egy MAX232 modul segítségével, vagy a Tx és Rx csapok használhatók a mikrovezérlőhöz való csatlakoztatásra. Észreveheti a többi csapot is, például MIC +, MIC-, SP +, SP- stb., Ahol mikrofon vagy hangszóró csatlakoztatható. A modult egy 12 V-os adapter táplálhatja egy normál egyenáramú csatlakozóaljzaton keresztül.
Helyezze be a SIM-kártyát a modul nyílásába, és kapcsolja be, és észre kell vennie, hogy egy bekapcsoló LED világít. Várjon egy percet, és látnia kell, hogy 3 másodpercenként egyszer villog egy piros (vagy bármilyen más színű) LED. Ez azt jelenti, hogy a modul képes volt kapcsolatot létesíteni a SIM-kártyával. Most folytathatja a modul csatlakoztatását a telefonnal vagy bármely mikrovezérlővel.
Számos klassz projektet készíthet a GSM modul használatával, például:
- Vezeték nélküli hirdetőtábla a GSM és az Arduino használatával
- Automatikus hívás üzenetrögzítő Arduino és GSM modul használatával
- GSM alapú otthoni automatizálás Arduino segítségével
- PIR érzékelő és GSM alapú biztonsági rendszer
Itt ellenőrizheti az összes GSM-projektet is.
Kommunikáció a GSM modullal AT parancsok használatával
Ahogy sejteni lehetett, a GSM modul képes kommunikálni soros kommunikáción keresztül, és csak egy nyelvet tud megérteni, ez az „ AT parancsok ”. Bármit is el akar mondani vagy kérni a GSM modultól, azt csak AT parancsokkal szabad megtenni. Például, ha szeretné tudni, hogy a modul aktív-e. Kérjen (küldjön) egy olyan parancsot, mint az „AT”, és a modul az „OK” választ adja.
Ezeket az AT parancsokat az adatlap jól megmagyarázza, és itt találhatók a hivatalos adatlapján. Oké! Oké! Ez egy 271 oldalas adatlap, és napokba telhet, amíg átolvassa őket. Tehát az alábbiakban adtam néhány legfontosabb AT-parancsot, hogy hamarosan elindulhasson.
NÁL NÉL |
OK-val válaszol a nyugtázásra |
AT + CPIN? |
Ellenőrizze a jel minőségét |
AT + COPS? |
Keresse meg a szolgáltató nevét |
ATD96XXXXXXXX; |
Hívás a megadott számra, pontosvesszővel végződik |
AT + CNUM |
Keresse meg a SIM-kártya számát (lehet, hogy egyes SIM-eknél nem működik) |
ATA |
Fogadja a bejövő hívást |
ATH |
Tegye le az aktuális bejövő hívást |
AT + COLP |
Bejövő hívásszám megjelenítése |
AT + VTS = (szám) |
Küldje el a DTMF számot. Bármely számot használhat a mobil billentyűzetén a (szám) |
AT + CMGR |
AT + CMGR = 1 beolvassa az üzenetet az első pozícióban |
AT + CMGD = 1 |
Üzenet törlése az első pozícióban |
AT + CMGDA = „MINDEN KELL” |
Az összes üzenet törlése a SIM-ről |
AT + CMGL = „MINDEN” |
Olvassa el az összes üzenetet a SIM-ről |
AT + CMGF = 1 |
SMS konfiguráció beállítása. Az „1” csak szöveges mód |
AT + CMGS = „+91 968837XXXX” > CircuitDigest Text
|
Itt küld egy SMS-t egy adott számra: 968837XXXX. Amikor megjelenik a „>” jel, kezdje el beírni a szöveget. A szöveg elküldéséhez nyomja meg a Ctrl + Z billentyűkombinációt. |
AT + CGATT? |
Az internetkapcsolat ellenőrzése a SIM-kártyán |
AT + CIPSHUT |
A TCP-kapcsolat bezárása, vagyis az internet-kapcsolat bontása |
AT + CSTT = „APN”, „felhasználónév”, „Engedély” |
Csatlakozzon a GPRS-hez az APN és a Pass kulccsal. A Hálózati Szolgáltatótól kapható. |
AT + CIICR |
Ellenőrizze, hogy a SIM-kártyán van-e adatcsomag |
AT + CIFSR |
Szerezze be a SIM-hálózat IP-címét |
AT + CIPSTART = „TCP”, „SERVER IP”, „PORT” |
TCP IP-kapcsolat beállítására szolgál |
AT + CIPSEND |
Ezzel a paranccsal adatokat küldhetünk a szerverre |
Itt az AT + CMGF és az AT + CMGS parancsot fogjuk használni az üzenetek küldéséhez.
Ha az Arduino-val GSM modult használt, az üzenetek fogadása közben a + CMT: paranccsal megtekintheti a mobil számot és a szöveges üzenetet a soros monitoron. A szöveges üzenet a képen látható második sorban jelenik meg.
Megvizsgáljuk ezt a + CMT: parancsot annak ellenőrzésére, hogy elérhető-e az üzenet.
ATMega16 GSM modul interfész áramkör rajza
A kapcsolatok a következők lesznek
- A GSM-modul Tx és Rx az Atmega16 Rx-hez (Pin14) és Tx (Pin15).
- Nyomja meg a gombokat PD5 (19. tű) és PD6 (20. tű) állásba.
- LCD csatlakozások:
- RS - PA 0
- R / W - PA1
- HU - PA2
- D4 - PA4
- D5 - PA5
- D6 - PA6
- D7 - PA7
Projekt létrehozása az ATmega16 számára a CodeVision használatával
Telepítése után CodeVisionAVR és SinaProg szoftverek , kövesse az alábbi lépéseket, hogy hozzon létre a projekt, és írásban kód:
Már feltöltve
1. lépés. A CodeVision megnyitása Kattintson a Fájl -> Új -> Projekt elemre. Megjelenik a Megerősítés párbeszédpanel. Kattintson az Igen gombra
2. lépés. Megnyílik a CodeWizard. Kattintson az első opcióra, azaz az AT90-re , majd kattintson az OK gombra.
3. lépés: - Válassza ki a mikrovezérlő chipjét, itt az Atmega16L-t vesszük az ábra szerint.
4. lépés: - Kattintson az USART gombra. Kattintson rá a Vevő és adó elemre. Az alábbiak szerint:
5. lépés: - Kattintson az Alfanumerikus LCD-re, és válassza az Alfanumerikus LCD-támogatás engedélyezése lehetőséget .
6. lépés: - Kattintson a Program -> Generálás, mentés és kilépés elemre . Munkánk több mint fele elkészült
7. lépés: - Készítsen egy új mappát az asztalon, hogy a fájljaink mappában maradjanak, különben szétszóródunk az asztal teljes ablakában. Nevezze el mappáját, ahogy akarja, és javaslom, hogy ugyanazt a nevet használja a programfájlok mentéséhez.
Három párbeszédablak lesz egymás után a fájlok mentéséhez.
Tegye ugyanezt a másik két párbeszédpanellel, amelyek az első mentése után jelennek meg.
A munkaterületed így néz ki.
A legtöbb munkát a Varázsló segítségével fejezzük be. Most csak a GSM-hez kell kódot írnunk.
Kód és magyarázat
A projekt létrehozása után az összes fejlécfájl automatikusan csatolásra kerül, csak a delay.h fejlécfájlt kell megadnia és deklarálnia kell az összes változót. A teljes kódot az oktatóanyag végén találja meg.
#include
Hozzon létre egy funkciót az adatok fogadására az UDR regiszterből. Ez a funkció visszaadja a fogadott adatokat.
aláíratlan karakter beérkezett_érték (érvénytelen) { while (! (UCSRA & (1 <
Jöjjön el a while ciklusba, amelyben két if utasítást hozunk létre, egyet az üzenet küldéséhez, a másikat pedig a fogadáshoz. A Küldés gomb csatlakozik az ATmega PIND6-hoz, az üzenet fogadása gomb pedig a PIND5-höz.
Ha először megnyomja a PIND6 (Küldés gombot), akkor az utasítás végrehajtásra kerül, és az üzenet küldésére szolgáló összes parancs egyenként fog végrehajtani.
while (1) { // lcd_clear (); lcd_putsf ("Küldés-> bttn 1"); lcd_gotoxi (0,1); lcd_putsf ("Fogadás-> Buttn 2"); if (PIND.6 == 1) { lcd_clear (); lcd_gotoxi (0,0); lcd_putsf ("Üzenet küldése…"); mert (z = 0; cmd_1! = ""; z ++) { UDR = cmd_1; késleltetés_ms (100); } UDR = ('\ r'); késés_ ms (500); mert (z = 0; cmd_2! = ''; z ++) { UDR = cmd_2; késleltetés_ms (100); } …..
Ha megnyomja az Üzenet fogadása gombot, a (b! = '+') Hurok ellenőrzi, hogy a CMT parancs jelen van-e. Ha van, akkor a second while ciklus végrehajtja a parancs második sorát, és egyenként kinyomtatja az üzenetet az LCD-re.
while (PIND.5 == 1) { lcd_clear (); lcd_gotoxi (0,0); lcd_putsf ("Üzenet fogadása…"); b = kapott_érték (); míg (b! = '+') { b = kapott_érték (); } b = kapott_érték (); if (b == 'C') { b = kapott_érték (); … ..
Ez a hurok viszi a programot a második parancssorba, és tárolja az üzenetet a tömbben.
míg (b! = 0x0a) { b = kapott_érték (); } (b = 0; b <3; b ++) { c = kapott_érték (); msg = c; } .. ..
Ez a hurok számára az üzenet megjelenítéséhez az LCD-n.
mert (z = 0; z <3; z ++) { a = msg; lcd_putchar (a); // NYOMTATÁS lcd delay_ms (10); }
Az alábbiakban a Demo Video teljes kódját adjuk meg, most meg kell építenünk a projektünket.
Építsd meg a projektet
Kattintson a Projekt építése ikonra az ábra szerint.
A projekt elkészítése után egy HEX fájl jön létre a Debug-> Exe mappában, amely megtalálható abban a mappában, amelyet korábban a projekt mentésére készített. Ezt a HEX fájlt fogjuk feltölteni az Atmega16-ba a Sinaprog szoftver segítségével.
Töltse fel a kódot az Atmega16-ra
Csatlakoztassa az áramköröket a megadott ábra szerint az Atmega16 programozásához. Az FRC kábel egyik oldalának csatlakoztatása az USBASP programozóhoz és a másik oldal az alábbiak szerint csatlakozik a mikrovezérlő SPI csatlakozóihoz:
- 1. tű az FRC női csatlakozónál -> 6. érintkező, Atmega16 MOSI
- A 2. érintkező az atmega16 Vcc-hez csatlakozik, azaz a 10. tű
- Az 5. tű csatlakozik az atmega16 visszaállításához, azaz a 9. csaphoz
- A 7. tű az atmega16 SCK-jához csatlakozik, azaz a 8. tű
- A 9. tű az atmega16 MISO-jához csatlakozik, azaz a 7. érintkező
- A 8. tű az atmega16 GND-jéhez csatlakozik, azaz a 11. érintkező
A fenti generált Hex fájlt a Sinaprog segítségével töltjük fel, ezért nyissa meg, és válassza az Eszköz legördülő menüből az Atmega16 lehetőséget. Válassza ki a HEX fájlt a Debug-> Exe mappából az ábra szerint.
Most kattintson a Program gombra, és a kód be lesz írva az ATmega16 mikrovezérlőben.
Kész és a mikrovezérlője be van programozva. Csak nyomja meg a gombokat az üzenetek küldéséhez és fogadásához a GSM és az ATmega16 mikrokontrollerből.
A teljes kód és a bemutató videó az alábbiakban található.