Računalniki Windows Internet

Sim800l gprs opis gsm modula. GSM GPRS SIM800L MicroSIM modul z anteno. Skice za delo z GSM modulom

Modul GSM in GPRS v projektih Arduino omogoča povezavo z oddaljenimi samostojnimi napravami prek običajne mobilne povezave. Napravam lahko pošiljamo ukaze in od njih prejemamo informacije z ukazi SMS ali prek internetne povezave, odprte prek GPRS. V tem članku si bomo ogledali najbolj priljubljene module za Arduino, razumeli povezavo in si ogledali primere programiranja.

Moduli GSM GPRS

GSM modul se uporablja za razširitev zmogljivosti običajnih Arduino plošč - pošiljanje SMS, klicanje, izmenjava podatkov preko GPRS. Obstaja več tipov modulov, najpogosteje uporabljeni so SIM900, SIM800L, A6, A7.

Opis modula SIM900

Modul SIM900 se uporablja v različnih avtomatiziranih sistemih. Z uporabo vmesnika UART se podatki izmenjujejo z drugimi napravami. Modul omogoča klicanje, izmenjavo besedilnih sporočil. Delovanje modula temelji na komponenti SIM900, ki jo je razvil SIMCom Wireless Solution.

Tehnični podatki:

  • Območje napetosti 4,8-5,2V;
  • V normalnem načinu tok doseže 450 mA, največji tok v impulznem načinu je 2 A;
  • Podpira 2G;
  • Oddajna moč: 1 W 1800 in 1900 MHz, 2 W 850 in 900 MHz;
  • Vgrajena sta protokola TCP in UDP;
  • GPRS večrežni razred 10/8;
  • Delovna temperatura od -30C do 75C.

Z napravo lahko spremljate pot prevoza skupaj z napravo GLONASS ali GPS. Možnost pošiljanja SMS sporočil se uporablja v brezžičnih alarmih in različnih varnostnih sistemih.

Opis modula SIM800L

Modul temelji na komponenti SIM800L in se uporablja za pošiljanje SMS, klicanje in izmenjavo podatkov preko GPRS. V modulu je nameščena kartica micro SIM. Naprava ima vgrajeno anteno in priključek na katerega lahko priključite zunanjo anteno. Modul se napaja iz zunanjega vira ali preko DC-DC pretvornika. Krmiljenje se izvaja z računalnikom preko UART, Arduino, Raspberry Pi ali podobnih naprav.

Tehnični podatki:

  • Območje napetosti 3,7V - 4,2V;
  • Podpora za 4-pasovno omrežje 900/1800/1900 MHz;
  • GPRS razred 12 (85,6 kB/s);
  • Največji tok 500 mA;
  • Podpira 2G;
  • Samodejno iskanje v štirih frekvenčnih pasovih;
  • Delovna temperatura od -30C do 75C.

Opis modula A6

Modul A6 je leta 2016 razvil AI-THINKER. Naprava se uporablja za pošiljanje SMS sporočil in izmenjavo podatkov preko GPRS. Ploščo odlikuje nizka poraba energije in majhna velikost. Naprava je popolnoma združljiva z ruskimi mobilnimi operaterji.

Tehnični podatki:

  • Območje napetosti 4,5 - 5,5 V;
  • Napajanje 5V;
  • Delovno temperaturno območje od -30C do 80C;
  • Največja poraba toka 900mA;
  • GPRS razred 10;
  • Podpora za protokole PPP, TCP, UDP, MUX.

Modul podpira kartice microsim.

Opis modula A7

A7 je najnovejši modul podjetja AI-THINKER. V primerjavi s predhodnikom ima A6 vgrajen GPS za poenostavitev zasnove naprave.

Tehnični podatki:

  • Razpon delovne napetosti 3,3 V-4,6 V;
  • Napajalna napetost 5V;
  • Frekvence 850/900/1800/1900 MHz;
  • GPRS razred 10: maks. 85,6 kbps;
  • Dušenje odmeva in šuma.

Naprava podpira kartice micro SIM. Modul podpira izmenjavo klicev, izmenjavo SMS sporočil, prenos podatkov preko GPRS, sprejem signalov preko GPS.

Kje kupiti GSM module za arduino

Kot običajno, preden začnete, nekaj nasvetov in uporabnih povezav do prodajalcev Aliexpress.

Zelo kvaliteten KEYES SIM900 GSM GPRS modul Modul SIM800C za arduino zaupanja vrednega dobavitelja
Arduino združljiv razvojni ščit, ki temelji na SIM900 GPRS/GSM modulu Poceni mini A6 GPRS GSM modul

Povezovanje GSM GPRS Shield z Arduino

V tem razdelku bomo obravnavali vprašanja povezovanja GSM modulov s ploščo Aduino. Skoraj vsi primeri temeljijo na Arduino Uno, vendar bo večina primerov delovala tudi za plošče Mega, Nano itd.

Priključitev modula SIM800

Za povezavo potrebujete ploščo Arduino, modul SIM800L, padajoči napetostni pretvornik, žice za povezavo in 12V baterijo. Modul SIM800L zahteva nestandardno napetost 3,7 V za Arduino, za to potrebujete pretvornik napetosti navzdol.

Pinout modula SIM800 je prikazan na sliki.

Plošča Arduino mora biti povezana z računalnikom prek kabla USB. Priključite 12 V baterijo skozi pretvornik: -12 V na Arduino maso, z mase na pretvornik na minus, +12 V na pretvornik na plus. Izhodi iz modula TX in RX morajo biti priključeni na nožici 2 in 3 na Arduinu. Na poljubne digitalne zatiče je mogoče povezati več modulov.

Priključitev modula A6

Modul A6 stane manj kot SIM900 in ga je zelo enostavno povezati z Arduino. Modul se napaja s 5V napetostjo, zato za priklop niso potrebni dodatni elementi za zniževanje napetosti.

Za povezavo boste potrebovali ploščo Arduino (v tem primeru gre za Arduino UNO), GSM modul A6 in povezovalne žice. Shema povezave je prikazana na sliki.

Izhod RX iz GSM modula mora biti povezan s TX na plošči Arduino, izhod TX mora biti povezan s priključkom RX na Arduinu. Masa iz modula je povezana z maso na mikrokrmilniku. Pin Vcc na modulu GSM mora biti povezan s PWR_KEY.

Povezava z GSM-GPRS ščitom

Pred priključitvijo je pomembno biti pozoren na napajalno napetost oklopa. Tok v času klica ali pošiljanja podatkov lahko doseže vrednosti​​15-2 A, zato ščita ne napajajte neposredno iz Arduina.

Preden se povežete z Arduino, morate namestiti SIM kartico na GSM-GPRS ščit. Prav tako morate nastaviti mostička TX in RX, kot je prikazano na sliki.

Povezava se izvede na naslednji način - prvi kontakt (rumena žica na sliki) iz oklopa mora biti priključen na TX na Arduinu. Drugi zatič (zelena žica) se poveže z RX na Arduinu. Ozemljitev iz ščita se poveže z ozemljitvijo iz aruina. Napajanje mikrokontrolerja poteka preko USB kabla.

Postavitev povezave med ščitom in Arduino ploščo je prikazana na sliki.

Za delo boste morali namestiti knjižnico GPRS_Shield_Arduino.

Če želite preveriti pravilnost sestavljenega vezja, morate narediti naslednje: priključite RESET in GND na Arduino (to bo povzročilo prenos podatkov neposredno iz ščita v računalnik), vstavite kartico SIM v ščit in obrnite na moč do ščita. Ploščo Arduino morate povezati z računalnikom in pritisniti gumb za vklop. Če je vse pravilno priključeno, bo rdeča LED svetila in zelena utripala.

Kratek opis interakcije preko AT ukazov

Ukazi AT so niz posebnih ukazov za modem, sestavljen iz kratkih besedilnih vrstic. Da bi modem prepoznal ukaz, ki mu je bil dodeljen, se morajo vrstice začeti s črkami at. Niz bo sprejet, ko je modem v ukaznem načinu. Ukaze AT je mogoče poslati prek komunikacijske programske opreme ali ročno s tipkovnice. Praktično vse ukaze lahko razdelimo v 3 načine - test, pri katerem modul odgovori, ali je ukaz podprt; branje - izdajanje trenutnih parametrov ukaza; pisanje - zapisane bodo nove vrednosti.

Seznam najbolj uporabljenih AT ukazov:

  • AT - za preverjanje pravilne povezave modula. Če je vse v redu, se vrne OK.
  • A/ - ponovi prejšnji ukaz.
  • AT+IPR? – pridobivanje informacij o hitrosti vrat. Odgovor bo +IPR: 0 OK (0 v tem primeru samodejno).
  • AT+ICF? – nastavitev prenosa. Odgovor bo +ICF: bit, pariteta.
  • AT+IFC? – nadzor prenosa. Odgovor bo +IFC: terminal iz modula, modul iz terminala (0 - brez krmiljenja, 1 - programsko krmiljenje, 2 - strojna oprema).
  • AT+GCAP - prikazuje zmogljivosti modula. Primer odgovora je +GCAP:+FCLASS,+CGSM.
  • AT+GSN - pridobite IMEI modula. Vzorec odgovora 01322600XXXXXXX.
  • AT+POLICAJI? – prikaže razpoložljive operaterje.
  • AT+CPAS – stanje modula. Odgovor +CPAS: 0. 0 - pripravljen za delo, 3 - dohodni klic, 4 - govorna povezava, 2 - neznano.
  • AT+CCLK? – informacije o trenutnem času in datumu.
  • AT+CLIP=1 – omogoči/onemogoči ID klicatelja. 1 - omogočeno, 0 - onemogočeno.
  • AT+CSCB=0 – prejemanje posebnih SMS sporočil. 0 - dovoljeno, 1 - prepovedano.
  • AT+CSCS= “GSM” – kodiranje SMS sporočil. Izberete lahko eno od naslednjih kodiranj: IRA, GSM, UCS2, HEX, PCCP, PCDN, 8859-1.
  • AT+CMEE=0 – pridobi informacije o napaki.
  • AT+CPIN=XXXX - Vnesite kodo PIN kartice SIM.
  • AT&F - ponastavitev na tovarniške nastavitve.
  • AT+CPOWD=1 – nujna (0) ali običajna (1) zaustavitev modula.
  • ATD+790XXXXXXXX – klic na številko +790XXXXXXXX.
  • ATA - odgovor na klic.
  • AT+CMGS=”+790XXXXXXXX”>Test SMS – pošljite SMS sporočilo na +790XXXXXXXX.

V tem primeru so upoštevani glavni ukazi za modul SIM900. Ukazi se lahko nekoliko razlikujejo za različne module. Podatki za modul bodo posredovani preko posebnega terminalskega programa, ki mora biti nameščen na računalniku. Ukaze lahko modulu pošljete tudi prek monitorja vrat v Arduino IDE.

Skice za delo z GSM modulom

Pošiljanje SMS na primeru SIM900

Preden pošljete sporočilo, morate konfigurirati modul. Najprej morate poslano sporočilo pretvoriti v besedilno obliko. Če želite to narediti, obstaja ukaz AT+CMGF=1. Potrebno je prenesti kodiranje v GSM z ukazom AT + CSCS \u003d "GSM". To kodiranje je najbolj priročno, saj so tam znaki predstavljeni v kodi ASCII, ki jo prevajalnik zlahka razume.

Nato morate poklicati SMS sporočilo. Če želite to narediti, se pošlje ukaz z naročniško številko AT + CMGS = "+79XXXXXXXXX" r, kot odgovor se predlaga klicanje besedila SMS. Poslati morate sporočilo. Po zaključku morate poslati kodo kombinacije Ctrl + Z, modul bo omogočil pošiljanje besedila naslovniku. Ko je sporočilo poslano, bo vrnjeno OK.

Interakcija z modulom temelji na indeksih, ki so dodeljeni vsakemu novemu sporočilu. S tem indeksom lahko določite, katera sporočila želite izbrisati ali prebrati.

Prejemanje SMS-ov. Če želite prebrati sporočilo SMS, uporabite ukaz AT + CNMI = 2,2,0,0,0. Ko besedilno sporočilo prispe v modul, bo poslalo na serijska vrata +CMTI: "SM",2 (v tem primeru je 2 serijska številka sporočila). Če ga želite prebrati, morate poslati ukaz AT+CMGR=2.

Sprejem glasovnega klica. Najprej morate za pogovor na modul priključiti zvočnik in mikrofon. Ko prejmete klic, se prikaže številka, s katere je bil opravljen. Če želite delovati, morate omogočiti knjižnico GSM:

#vključi

Če je kartica SIM blokirana, morate vnesti njeno kodo PIN. Če koda PIN ni zahtevana, to polje pustite prazno.

#define PINNUMBER ""

V setup() je treba izvesti inicializacijo prenosa podatkov v računalnik. Naslednji korak je ustvariti lokalno spremenljivko za spremljanje stanja omrežne povezave. Skica se ne bo izvajala, dokler kartica SIM ni povezana z omrežjem.

boolean notConnected = res;

Funkcija gsmAccess.begin() se uporablja za povezavo z omrežjem. Ko je povezava vzpostavljena, bo vrnjena vrednost GSM_READY.

vcs.hangCall(); – funkcija, ki označuje, da je modem pripravljen na sprejemanje klicev.

getvoiceCallStatus() - pridobi status skice. Če nekdo pokliče, vrne RECEIVINGCALL. Če želite zabeležiti številko, morate uporabiti funkcijo retrieveCallingNumber(). Ko je klic sprejet, se vrne TALKING. Skica bo nato čakala na znak za novo vrstico, da prekine pogovor.

Vzpostavite povezavo GPRS in pošljite podatke na oddaljeni strežnik

Najprej morate namestiti knjižnico SoftwareSerial, ki omogoča serijski prenos informacij in povezavo modula GSM in mikrokontrolerja Arduino.

Če želite poslati podatke strežniku, morate poslati naslednje ukaze:

AT+SAPBR=1,1 – odprtina nosilca.

Naslednji trije ukazi so povezani z nastavitvijo nastavitev omrežne povezave.

AT+SAPBR=3,1,\”APN\”,\”internet.mts.ru\” – izberite operaterja mts, ime dostopne točke.

AT+SAPBR=3,1,\”UPORABNIK\”,\”mts \” – izbira uporabnika mts.

AT+SAPBR=3,1,\”PWD\”,\”mts \”

AT+SAPBR=1,1 – vzpostavitev povezave.

AT+HTTPINIT - http inicializacija.

AT+HTTPPARA=”URL”, – naslov URL.

AT+HTTPREAD - čakanje na odgovor.

AT+HTTPTERM zaustavi http.

Če je vse opravljeno pravilno, se na monitorju vrat prikažejo vrstice z ukazi AT. Če ni povezave z modemom, bo prikazal eno vrstico naenkrat. Če je povezava GPRS uspešno vzpostavljena, začne LED na modulu utripati.

Pozdravljeni vsi skupaj! O GSM-u že dolgo nisva govorila. Torej, začnimo. Dragi kitajski zabatsali nov proračunski modul, imenovan SIM800L. Da, da, ta modul proizvaja njihovo lastno podjetje SIMCOM. Sprva sem se bal, da bi ga preizkusil, pravijo, da ni na voljo v prostranosti Rusije in ni nobenega zagotovila, da bo ta modul vohal z našimi omrežji. Nisem se hotel ukvarjati z utripanjem iz drugega modula, a sem imel prav čudovito srečo, da sem z enim copatom ubil dva ščurka. Popolnoma sem pozabil na čudovito trgovino ChipRezistor, ki mi je z veseljem priskrbela ta modul za raztrganje.
Takole izgleda ta čudež.

Ne na gosto, sama plošča ima sam modul, držalo za mikrosimbol, tantal, par keramik, upor in LED. Nenavadno je, da Kitajci postavljajo ta modul kot ščit za Arduino. Zdi se, da se Arduina napaja s 5 volti in najpogosteje iz USB-ja, in če me spomin ne izda, potem SIMcom moduli jedo od 3,6 do 4,2 in hkrati hočejo 2A na vrhuncu. No, v redu, povežem ga s ploščo za odpravljanje napak in ... kitajsko !!! Vse, da bo ceneje. Ta modul ne deluje od 5 voltov. Spomin me ni izneveril. Skratka, dolgo se lahko prepirate, kako ga napajati, vendar vam bom pokazal eno čudovito napravo, ki bo zlahka rešila ta problem. Kupite ga lahko na istem mestu kot SIM800L in sicer v ChipResistor. Modul je padajoči impulzator do 3A.

Nato vzamemo ta modul in spajkamo vhodne in izhodne žice. Posojilo priključimo na toaster in ga nastavimo na 4 volte.

Tukaj je shematski pogled od zgoraj.

Moj kaos izgleda takole.

Preverimo kratek stik, vstavimo SIM kartico, priključimo USB-RS232 in napajanje. Če se nič ne kadi in LED na modulu utripa, je vse v redu. Nato zaženite terminal, imam PuTTYn in vrzite prvi ukaz AT. V odgovor, če ga prejmete v redu pomeni, da vse deluje.

Bingo! Nato vržemo AT+POLICAJI? in če ste v odgovor prejeli svojega operaterja, potem, da ga popravite, se pokličite tako, da vnesete ukaz ATD89161234567;. Podpičje je obvezno! Če je modul uspel, pomeni, da deluje z našimi omrežji. Testiral sem na čebeli. Če zdaj rečem, da je to vse, potem me bodo zasuli z jajci in paradižniki, a tega nočem))) Torej zberimo nekaj koristnega iz tega. Na primer alarm. Modul bomo privili na MK in spremljali stanje par nog. Takoj, ko se pojavijo spremembe na nogi, bomo takoj poslali SMS z obvestilom o tej spremembi. MK bo ATmegs32a. Privijte gumbe na nogah PB2 in PB3. Gumbi imajo skupno GND, za dvige pa uporabljamo vgrajene upore. Za delo z modulom bomo napisali nekaj funkcij, in sicer inicializacijo in pošiljanje SMS-ov. No, pa gremo.

Najprej konfigurirajmo projekt z generatorjem kode axlib. Če želite to narediti, izberite MK ATmega32, zunanji kvarc na 7372800 (takšen kvarc je potreben za zmanjšanje napak med prenosom preko UART). Nastavimo UART na hitrost 9600. Nato, ko ustvarimo projekt, ga odpremo v AtmelStudio 6. Najprej ustvarimo datoteko sim800l.h v korenu projekta in ga vključite. #vključi #include "main_init.h" #include "axlib/usart.h" #include "sim800l.h" Zdaj gremo v našo ustvarjeno datoteko in tam napišemo definicije, ki jih potrebujemo. // Prvi ukaz, sporočilo OK#define SIM800L_AT_AT "AT" // Ukaz za vnos številke naročnika za pošiljanje SMS sporočila#define SIM800L_AT_SMS "AT+CMGS=\"" // Nastavitev formata paketa#define SIM800L_AT_SMS_SET "AT+CMGF=1" Zato smo zapisali definicije zaradi enostavnosti, zdaj pa pišemo kompleksno inicializacijsko funkcijo. void sim800l_init(void) ( usart_str_rn(SIM800L_AT_AT); ) Vsa zapletenost te funkcije je v tem, da modulu preprosto pošljemo ukaz AT. S tem ukazom bi moral modul začeti delovati. Naslednja funkcija je nekoliko bolj zapletena. BYTE sim800l_send_sms(BYTE *številka, BYTE *besedilo, dolžina BYTE) ( // Niz za prejemanje odgovorov iz modula BYTE str = (0); _zakasnitev_ms(1000); // Nastavite način prenosa usart_str_rn(SIM800L_AT_SMS_SET); // Oddaja telefonske številke naročnika usart_str_out(SIM800L_AT_SMS, 9); usart_str_out(število, 12); usart_str_rn("\""); // Počakajte, da se začne vnos besedila _zakasnitev_ms(3000); // Pošlji besedilo usart_str_out(besedilo, dolžina); str = 0x1A; str = 0; usart_str_rn(str); // Počakajte OK usart_str_in(str, 18); if(!((str == 0x4F) & (str == 0x4B))) vrni 0x34; vrnitev 0x30; ) Tu sem razumel celotno bistvo poceni tega modula. Ta stvar popolnoma zavrača dosledno vračanje odgovorov. Takoj ko se nisem sprevrgel in nastavil ogromne časovne omejitve za prihod podatkov ter izklesal zamude. Skratka, pljunil je po tistih odgovorih, ki so lebdeli v času in naleteli na zamude. Za delo ne moti veliko. Plačamo poceni. Pojdimo na funkcijo. Najprej prestavimo nastavitev paketnega prenosa. To je potrebno, da modul po prejemu telefonske številke pošlje podatke in nato počaka na prejem besedila. Nato prenesemo telefonsko številko naročnika, ki mu pošiljamo SMS. Vzamemo ga iz argumenta te funkcije. Obstaja eno ampak! Telefonska številka mora biti v naslednji obliki: +79161234567. Potreben je +7, ta modul, za razliko od 900-ih, ne razume 8. Po prenosu naročniške številke preprosto tupimo 3 sekunde. Ves ta čas modul počasi žveči številko in kdo ve kateri algoritem, ravno ob teh zakasnitvah me je razneslo, nam izda povabilo k vnosu teksta z ikono > 3 sekunde so ironično dovolj, da prežvečite in izpljunete vabilo. Po 3 sekundah vržemo besedilo sporočila. Vzamemo ga tudi iz argumenta te funkcije in od tam dolžino besedila za funkcije UART. Navsezadnje ne vemo, koliko pisem boste poslali. Če dobro pogledaš, vidiš bajto 0x1A na koncu besedila sporočila. To je ekipa ctrl+z potrebno za dokončanje prenosa besedila. Ko modul prejme ta ukaz, bo vse izpustil in poslal SMS. Vse, ko je ta datoteka končana, pojdite na glavno programsko datoteko. #define BUTTON_1 "Nazhata tipka 1" #define BUTTON_2 "Nazhata tipka 2" // Inicializacija GSM modula sim800l_init(); // Nastavitev V/I vrat za branje DDRB=0x00; // Omogoči pullup z notranjim uporom PORTB |= (1 // Če je pritisnjen gumb 1 if(!(PINB & (1 // Počakajte, da se gumb sprosti while(!(PINB & (1 // Če je pritisnjen gumb 2) if(!(PINB & (1) // Počakamo, da se gumb sprosti, medtem ko(!(PINB & (1 Kaj vidimo tukaj. Dve definiciji z vnaprej pripravljenim besedilom. Nato inicializiramo modul. Nato prilagodimo kraka 2 in 3 priključka B na vhod in potegnemo notranji upor na power plus. Nato v neskončni zanki preverimo pritiske gumbov. Takoj, ko pritisnemo katerega od gumbov, takoj pademo v neskončno zanko in čakamo, da gumb izpustimo. Po sprostitvi gumba prikličemo funkcijo pošiljanja SMS-a s predhodno definiranim besedilom. To je vse.))) Projekta ne bom objavil, ker ga je mogoče ustvariti z generatorjem axlib in ga kopirati od tukaj. Oh ja, to sem dobil po telefonu.))


Fyva 09.10.16 23:29

Serija 800 je po navedbah mt-system naslednica serije 900, ki naj bi jo konec leta 2016 ukinili. Zato je precej nenavadno brati o tako nadležnih zastojih, kot so vpeti odgovori.
mogoče kaj novega v podatkovnih nizih? Ali pa ste čisto po analogiji z 900 vrgli ukaze, ne da bi posebej osvetlili?

Aleksej 09.10.16 23:39

Ti premori so me opozorili, tudi ko sem z njo komuniciral prek terminala. Mislil sem, da se vrata upočasnjujejo, vendar je ista pesem na prenosniku.

Jurij 05.03.17 20:36

Povejte mi, kako prisiliti modul, da pošlje stanje na zahtevo USSD, preberite in nastavite raven na nogah Avrk. Na splošno želim narediti "Pametni dom" Hvala

Aleksej 06.03.17 12:36
Oleg 28.03.17 02:43


\n je opravljen, ali je potrebno delati s simodulom ali za vsak slučaj?
Kaj tukaj počne simbol /".

#define SIM800L_AT_SMS "AT+CMGS=\""

usart_str_out(SIM800L_AT_SMS, 9);
usart_str_out(število, 12);
usart_str_rn("\"");
tudi tukaj /" /r /n
zakaj ne bi takoj uporabili_str_rn (AT+CMGS="+7xxxxxxxxxx"), kot v terminalu?
IN

usart_str_out(besedilo, dolžina);
str = 0x1A; razumljivo
str = 0; zakaj nič?
usart_str_rn(str); in tudi /r /n?

Aleksej 28.03.17 12:33

--> Kaj počne /" tukaj
Znak \ je postavljen pred službene znake, da se ti znaki spremenijo v preproste. Dejstvo je, da je dvojni narekovaj storitev. Uporablja se za prenos niza v matriko. In da ga prevajalnik prebere kot simbol, se pred servisne simbole postavi poševnica nazaj.
primer:


BYTE data = "Nekaj ​​besedila \"Besedilo v narekovajih\"";

Zdaj bodo notranji narekovaji zapisani v matriko kot znaki.

--> zakaj ne samo usart_str_rn (AT+CMGS="+7xxxxxxxxxx"), kot v terminalu?

Ker funkcija vzame kot argument kazalec na prvi element matrike z naročniško številko. Če pišete takoj, bo SMS za vedno poslan samo temu naročniku. In edini način, da to spremenite, je, da ponovno napišete kodo.

--> Pojasni prosim. Zakaj v funkciji usart_str_rn
opravil \n

Ker dokumentacija za modul SIMCOM zahteva, da na koncu ukaza vnesete kodo za konec vrstice in vrnitev v prvi vrstico.

Oleg 28.03.17 14:05

Hvala, Aleksej je to spoznal, imam težave s prenosom 1A, v tabeli servisnih znakov ni kombinacije z \....

Aleksej 28.03.17 15:04

Kako naj izgleda simbol Ctrl+z? Ali na primer presledek, zavihek. Zato se prenaša s kodo. Na primer \r\n je mogoče zapisati kot dva bajta 0x0D, 0x0A. Enako je.

Oleg 28.3.17 16:59

To sem razumel, ekipa je šla tako


str = 0x4D;
str = 0x4B;
str = 0x4D;// tričrkovno besedilo za test.
str = 0x1A;
str = 0;
usart_str_rn(str);
, besedilo je verjetno lahko niz, vendar se 1A dobi le preko matrike, ali je nekako lažje, da ne?

Alexey 28.3.17 17:14

void usart_char_out(BYTE podatkov)

Samo pošlje en bajt v vrata.

Eugene 07.05.17 17:47

BYTE sim800l_send_sms(BYTE *številka, BYTE *besedilo, dolžina BYTE)
{
// Niz za prejemanje odgovorov iz modula
BYTE str = (0);
nadaljnji vir
// Počakajte OK
usart_str_in(str, 18);
if(!((str == 0x4F) & (str == 0x4B))) vrni 0x34;
Od kod indeksa 14 in 15 v matriki, če je izrecno deklarirana kot str?

Aleksej 07.05.17 20:05

In tukaj sem tak škorenj iz klobučevine. Matrika ni 10 celic, ampak 20)))

Eugene 08.05.17 20:13

To se zgodi)) Tako sem ugotovil, da je tipkarska napaka. Začel sem pisati svojo kodo, jo vzel za osnovo in takoj videl

Aleksej 08.05.17 21:34

Svetujem ti da uporabiš SIM800C namesto L. Isti denar ampak C ima moder zob v modulu.

Eugene 12.05.17 06:43

Da, imam samo module 800C. Alexey, po branju je str prazen, v čem bi lahko bila težava? Ukazi za modul zapustijo in modul se odzove (preveri analizator dnevnika), vendar je str prazen
// Počakajte OK
usart_str_in(str, 18);
če(!((str ==

Eugene 12.05.17 18:57

Aleksej. Ugotovil sem, v čem je težava, v funkciji usart_str_in je bilo sprejetih 18 bajtov, modul pa je odgovoril le z 9 bajti, oziroma funkcija je ta odgovor zaznala kot časovno omejitev. (BYTE usart_str_in(BYTE *str, število BYTE)
{
BYTE out = 0;
podatki BYTE = 0;
BYTE timeout = 0;

Medtem ko(štetje > podatki) // tukaj medtem ko 18>9 - časovna omejitev
{
podatki = GetData();

// Če podatki niso prispeli v 250 ms
// nato zapustite funkcijo in vrnite 0
če (časovna omejitev >= 250)
{
ClearBuffer();
vrnitev ven;
}

časovna omejitev++;
_delay_ms(1);
}

Out = OutBufferStr(str, count);
vrnitev ven;
}
Kaj pa, če ne veste, kako dolgo bo prišel odgovor?

Aleksej 12.05.17 20:03

Preizkusite vmesni pomnilnik, da prejme več kot en bajt, in nato počakajte, da se od medpomnilnika odšteje celoten paket.

Eugene 12.05.17 20:21

Alexey, nisem čisto razumel ideje, prosim razloži

Aleksej 12.05.17 20:58


glavni ()
{

// Število prejetih bajtov v medpomnilniku
BYTE len_pocket = 0;

// Niz za podatke
BYTE podatki = (0);

medtem ko (1)
{
// Oglejte si, kaj je v medpomnilniku
len_pocket = usart_data();

// Preverite, ali je kaj prispelo v medpomnilnik
če (len_pocket > 0)
{
// Če je prispelo, počakajte
// premor izračuna (1000/(bitna hitrost/10)) * največ bajtov.
// Primer bitne hitrosti 19200, največji bajt 40. (1000/1920) * 40 = 20,8 ms

// Zaustavi, da se prepričaš, ali so prejeti vsi bajti
_zakasnitev_ms(22);

// Pridobite število prejetih bajtov
len_pocket = usart_data();

// Zapis podatkov v matriko
usart_str_in(podatki, len_pocket);

// Sedaj podatkovni niz vsebuje vse prejete bajte.
}
}
}

Eugene 12.05.17 21:25

Alexey, hvala, jasno sem razumel idejo, poskusil bom. Želel sem vprašati tudi o dveh sužnjih in glavnem, o izgubi komunikacije, ko je bila linija izvlečena, ali ste poskusili z maketo?

Aleksej 12.05.17 22:18

Ne še. Veliko dela. Pravzaprav sem zaradi nje pozabil na stran.

Oleg 08.07.17 23:28

Alexey, povej mi, kako uskladiti nivoje, če se mikrokrmilnik napaja na 5v, modul pa na 3,3v? Na Aliju sem našel napajalni modul KIS-3R33S, ima izhodno kontrolo, ali je smiselno ponovno zagnati SIM modul tako, da odstranim napajalnik ali je dovolj, da resetiram in omogočim modul?

Aleksej 09.07.17 12:28

Prvič, za uskladitev z modulom ne potrebujete 3,3 V, ampak 3 V. Če želite to narediti, je dovolj, da postavite uporovni delilnik, kjer bo RXD MK na vhodu visokega upora, nizki stranski upor pa je povezan s skupnim signalom.
Drugič. Ponovni zagon lahko začnete z žongliranjem napajanja, če je modul zamrznjen. Če modul deluje, potem je to absolutno nemogoče, saj lahko to povzroči uničenje vdelane programske opreme v modulu. Ponovni zagon je treba izvesti z žongliranjem z ukazom PWR ali AT.

Oleg 09.07.17 12:44

Hvala, prvo je jasno.
Po drugem je predviden tak hard reset, če se modul ne odziva in trzanje rst in pwr ne daje rezultata, mimogrede obstajajo moduli pcb brez pwr ali brez rst, vprašanje je, kako je firmware, ko je je napajanje celotne naprave izklopljeno, obstajajo kakšna priporočila?

Aleksej 09.07.17 14:48

To je kitajski hrošč. Spajkajte na kontakte. Kitajci niso posebej zaskrbljeni, tudi hrane ne prodajajo vedno pravilno. Ko bi le bilo poceni.

Oleg 09.07.17 15:05

In ko je modul visel, kaj najprej potegniti pwr ali rst, in če pvr in rezet ne pomagata, kako ga pravilno izkrivljati v smislu prehrane?

Aleksej 09.07.17 19:29

Če tesno visi, potem samo odstranite napajanje za tri sekunde. Nato predložite in inicializirajte v skladu s pravili.

Igor 12.09.19 19:21

Povejte mi, kako prenesti število bz narekovajev na modem MC52i
// Oddaja telefonske številke naročnika
usart_str_out(SIM800L_AT_SMS, 9);
usart_str_out(število, 12);
usart_str_rn(""");

Razmislite, kako povezati Adruino z GSM modulom SIM800L. Obstajajo GSM ščiti posebej za Arduino, vendar so glede na ceno precej dragi, zato sem se odločil kupiti proračunsko možnost. Članek je lahko koristen tudi za povezavo modula SIM900, NEOWAY M590 in nekaterih mobilnih telefonov. Neprijeten odtenek je, da ta modul zahteva nestandardno napajanje 3,7 V za Arduino, zato ga je bilo treba napajati ločeno prek pretvornika napetosti navzdol.

Povezava

Za povezavo sem uporabil naslednje komponente:

  1. Arduino UNO R3 krmilnik + USB kabel
  2. GSM modul SIM800L (napajanje od 3,7V do 4,2V)
  3. Padajoči napetostni pretvornik (DC-DC padajoči pretvornik)
  4. 12V baterija (ali katerikoli vir napajanja od 6V do 20V)
  5. Povezovalne žice

Povežite Arduino z računalnikom prek kabla USB.

GSM modul napajamo iz 12V baterije preko pretvornika:

  • od 12V "minus" gre v arduino v "GND", od "GND" v pretvornik napetosti v "incoming minus".
  • iz 12V "plus" gre v pretvornik napetosti v "incoming plus".

Postavlja se vprašanje: ali je mogoče napajati Arduino sam iz 5V? Ne bi tvegal neposredno. Lahko pa izberete diodo ali regulator napetosti.

Pred priključitvijo na napetostni pretvornik ga je potrebno nastaviti tako, da nastavite izhodno napetost na poljubno v območju 3,7V - 4,2V. Iz napetostnega pretvornika priključimo izhodne kontakte na GSM modul, pri čemer upoštevamo polarnost.

Zatiči TX in RX na modulu GSM so povezani z 2 in 3 digitalnimi zatiči na Arduinu. Če morate na Arduino povezati več GSM modulov, potem uporabite druge zatiče in se registrirajte v skico prek SoftwareSerial.

Skica

#vključi<SoftwareSerial.h> SoftwareSerial mySerial(2, 3); // RX, TX void setup() ( Serijski.begin(19200); // Hitrost vrat za Arduino komunikacijo z računalnikom Serijski.println("Lahko noč luna!"); mySerial.begin(19200); //Hitrost vrat za komunikacijo med Arduinom in modulom GSM mySerial.println("AT"); ) void loop() (if(mySerial.available()) Serijski.write(mySerial.read()); če ( Serijski.available()) mySerial.write( Serijski.read()); )

Postopek pošiljanja SMS-a

void sms (niz besedila, niz telefona) ( Serijski. println("SMS pošiljanje se je začelo"); mySerial. println ("AT+CMGS=\"" + telefon + "\"" ) ; zamuda (1000); mySerial. natisni (besedilo); zamuda (300) ; mySerial. natisni ((char) 26); zamuda (300) ; Serijski. println("SMS pošiljanje končano" ); zamuda (3000); )

Dodajte postopek na konec skice in ga pokličite iz glavne zanke takole: sms(String("Besedilo SMS v angleščini."),String("+791212345678"));

Pregled

Nato vklopimo napajanje prek monitorja vrat, nastavimo hitrost na 19200 in zahtevamo možnost "nova vrstica".

Vnesite ukaz "ATI" in pritisnite ENTER. Prikazati bi se morale informacije iz modela modula.

Poskušal sem poslati SMS na modul prek brezplačne storitve Tele2, prihajajo nerazumljive vrstice. Poskušal sem spremeniti kodiranje v modulu. Težava še ni rešena.

Video

GSM / GPRS modul, ki temelji na SIM800L, je enostavno povezati sami. Sledite nekaj korakom in uporabite sodoben kompaktni element v svojo korist.

SimCom Corporation uporabnikom ponuja kompakten GSM/GPRS modul, ki temelji na SIM800L. Vgrajeni priključek omogoča izboljšanje signala. Uporabite lahko tudi anteno, ki je priložena temu modularnemu sistemu.

GSM/GPRS modul SIM800L - opis

Natančen opis:

  • Modul se napaja iz zunanjih virov ali preko DC-DC pretvorniških sistemov
  • Razpon za napajanje mora biti znotraj 3,7 V - 4,2 V. Omeniti velja, da je 5V iz Arduina nevarno za delovanje modula, saj bo povzročilo njegovo okvaro, 3,3V pa bo pomagalo odzvati na uporabniške ukaze, vendar ne bo povezave z omrežjem.
  • Krmiljenje je prek UART, vendar se za Rx in Tx uporablja napetostni delilnik, tako da ni obremenitve na plošči
  • Nizka poraba energije modula SIM800L omogoča njegovo uspešno uporabo za opremo z baterijskim napajanjem
  • Ko se priključi napajanje, modul takoj začne iskati omrežje. Ko je najden, LED začne signalizirati in počasi utripa. Ista LED označuje odsotnost omrežja, vendar s pomočjo hitre utripajoče lučke
  • Modul podpira kartice micro SIM 1,8V in 3V

GSM/GPRS modul SIM800L - povezava

Za povezavo, poleg samega modula, pretvornika in krmilnika Arduino UNO R3, boste potrebovali USB kabel, 12V baterijo in povezovalne žice. Sledite tem korakom:

  1. Najprej napajajte sistem iz akumulatorja prek DC-DC: od "minusa" mora napetost iti na arduino na "GND", iz "GND" na pretvorniški element na "minus" na vhodu
  2. Povezavo je treba izvesti, ko konfigurirate modul in nastavite izhodno napetost v dovoljenem območju (3,7 V - 4,2 V)
  3. Povežite vse kontakte, ki izhajajo iz pretvornika, na SIM800L, pri čemer upoštevajte polarnost
  4. Zatiči TX in RX na modulu se povežejo z 2. oziroma 3. digitalnimi zatiči na arduinu

Pomembno: Če morate na arduino povezati dva ali tri module, uporabite druge kode, tako da jih zapišete v skico prek SoftwareSerial.

Naslednji videoposnetek jasno prikazuje, kako povezati modul SIM800L z Arduinom.

Video: Priključitev GSM modula SIM800L na Arduino


SIM800L V2.0 GSM/GPRS je štiripasovni GSM/GPRS modul, združljiv z Arduino. Modul se uporablja za izvajanje GSM funkcij (klici in SMS) in GPRS. Prednost tega modula je TTL vmesnik, ki ima napetost 5V, kar omogoča direktno povezavo na Arduino ali kateri koli drug sistem s 5V napajalno napetostjo. Večina modulov GSM/GPRS na trgu zahteva regulatorne povezave ali pretvorbo ravni, medtem ko v SIM800L V.2 GSM/GPRS ne zahteva dodatnih vezij za pretvorbo ravni vmesnika.

Tukaj je primer projekta z uporabo SIM800L V.2 GSM/GPRS. Smisel projekta je krmiljenje stikal s pomočjo SMS krmilnika. Z lahkoto lahko vklopite in izklopite večino gospodinjskih aparatov v hiši, kot so lama, ventilator itd.

Lastnosti GSM/GPRS modula SIM800L V.2

Spodaj so vse tehnične specifikacije SIM800L V.2 GSM/GPRS modula:
  • Serijski vmesnik TTL, združljiv s 3,3 V in 5 V Arduino združljivimi mikrokontrolerji.
  • Modul SIM800L ima serijski vmesnik TTL.
  • Priključek za anteno.
  • Omrežna podpora: Quad band 850/900/1800/1900 MHz omogoča klicanje, SMS in prenos podatkov z močno zmanjšano porabo baterije.
  • VDD TTL UART vmesnik, tako da lahko neposredno povežete MCU, kot je 51MCU, ARM ali MSP430. Vtič VDD se uporablja za ujemanje napetosti TTL.
  • Model: SIMCOM SIM800L
  • Delovna napetost: od 3,7V do 5V;
  • dimenzije: 40mm x 28mm x 3mm
  • GPRS večrežni razred 12/10
  • Paketna storitev GPRS razreda B
  • Ustreza GSM fazi 2/2+
  • Razred 4 (2 vata pri 850/900 MHz)
  • Razred 1 (1W @ 1800/1900MHz)

Potrebni materiali