miercuri, 19 august 2015

Modul GPRS cu M590 (3)

   In articolele anterioare, am facut facut teste de trimitere si receptie sms-uri cu modulul GPRS cu M590 de la Neoway.
   In timpul testelor, am incercat controlul acestui modul cu Arduino Uno, prin folosirea librariei SoftwareSerial, cum era prezentat si in articolul Tutorial: Control AC outlets via SMS, dar nu am reusit sa trimit sau sa receptionez comenzi, eventual niste semne ciudate, asa ca am folosit un Arduino Mega si am conectat comunicatia la Rx2 si Tx2 prin intermediul convertorului de nivel logic de 5V la 3,3V.
   Repetand experimentele, am constatat desi schema de conectare cu Uno e corecta, in ecranul de monitorizare seriala apar caractere ciudate si, am banuit, ca-s problenme cu viteza de transfer de 115200bps, desi in documentatia de pe site-ul Arduino zice ca functioneaza si la aceasta (vedeti articolul SoftwareSerial: begin(speed), dar intr-un material de la https://github.com/arduino/Arduino/issues/2019 apare ca-s probleme la viteza asta..
   De data asta, "am venit cu lectia invatata" si am refacut schema de conectare cu Arduino Mega si schimbat viteza de transfer (baud rate) cu comanda AT+IPR=9600...folosindu-ma de sketch-ul M590_mega_serialtest2.ino
si am schimbat si in sketch la 9600 in loc de 115200 si am dat comenzile AT:
si e in regula, doar ca trebuie date comenzi mai rar...
   Am realizat schema de conectare la Arduino Uno (un VISduino Uno, in cazul de fata) si am dat comenzi AT de verificare, dupa ce am incarcat sketch-ul M590_softwareserial.ino:
   Am completat schema cu cele 4 leduri inseriate cu rezistente si, dupa ce am incarcat un sketch modificat, in sensul de a introduce niste intarzieri intre comenzi de 2,5 secunde, am facut teste:
- am dat comand apentru aprinderea celor 4 leduri:
- am dat comanda sa fie aprinse cele 2 leduri din mijloc 
- am dat comanda sa fie aprinse cele 2 leduri din exterior:
   Pentru a fi mai convingator, am facut 2 filmulete:
SMS control 4 leds using M590 GPRS module and Arduino (2)
20.08.2015
   Am deconectat placa Arduino de la calculator si am alimentat-o din sursa externa de 4,2V in conectorul unde este inscriptionat 5V si am reluat testele... functioneaza fara probleme, in plus, este ca un modul independent, in locul led-urilor se pot pune relee, care comanda becuri, motoare, ventilatoare, camere, etc sau prin optocuploare (pentru a proteja montajele si utilizatorii) se pot comanda triace/tiristoare, care la randul lor aprind becuri, alimenteaza motoare de la retea...
   Am facut inca 2 filmulete, pentru a fi mai clar:
   In locul convertorului de nivel logic, de-l folosesc eu, se poate folosi schema din manualul tehnic de utilizare:
in care VCCI) (pinul 6 al lui M590) este o tensiunea de referinta de 2,85V pentru comenzile logice. RXD_GPRS este pinul 7 de la M590, iar TXD_GPRS este pinul 8 de la M590.
   MCU_TXD si MCU_RXD sunt pinii de receptie, respectiv transmisie date ale microcontorlerului sau placii de dezvoltare Arduino, in cazul nostru.

Atentie: Tensiunea sursei externe de alimentare este de +4,6V nu de +4,2V deoarece modulul chinezesc arata cu 0,3-0,4V mai putin decat tensiunea reala !!!

17 comentarii:

  1. salut! o intrebare te rog..de ce ai pus 4.2v si nu 5?
    am cumparat si eu dar nu am nici un fel de documentatie..
    multumesc mult

    RăspundețiȘtergere
    Răspunsuri
    1. 5V alimentarea modulului mi s-a parut prea mare pentru cat suport modulul.. are el o dioda inseriata sa scada tensiunea, dar.. ai link la documentatie in cele 3 articole.. doar citeste-le... chiar e greu sa dai click pe niste link-uri?

      Ștergere
    2. Operating Voltage: 3.3V~4.5V(The recommend value is 3.9V). The main power source should not exceed 4.8V. Over-voltage will damage the module.
      Multumesc pentru tutorial, chiar nu stiam daca este ok sa cumpar un astfel de modul. Care este diferenta intre acest modul si SIM900 in afara de viteza de transmisie/receptie a datelor?

      Ștergere
    3. M590 este similar cu SIM800, adica nu are partea de voce, doar poate primi si trimite date/sms-uri

      Ștergere
  2. hi friend does not work this circuit whit arduino 1,you have a better pictures?

    RăspundețiȘtergere
    Răspunsuri
    1. read articles in english from https://arduinotehniq.blogspot.ro/
      but if save at your computer pics (photo) you will see better all details ;)

      Ștergere
  3. Buna ziua .As vrea sa trimit in sms catre modul cu cuvantul ARM . Cum ar arata linia de cod care verifica daca este sms-ul cu cuvantul corect ?

    RăspundețiȘtergere
    Răspunsuri
    1. vrei confirmare ca a primit acel cuvant sau sa faca ceva cand primeste acel cuvant?

      Ștergere
    2. Nu ma pricep la programare , si nu am inteles succesiunea de if care verifica sms trimis pentru a aprinde sau stinge led-urile
      Incerc sa combin alarma cu cod cu tastatura pe care ati publicato cu acest modul m950 care sa armeze si dezarmeze printr-un sms

      Ștergere
    3. uff.. sketch-ul e facut sa dai sms de forma #a1b1c1d1 ca sa aprinzi toate ledurile, asta fac acele if-uri, intai verifica daca e acel #, dupa aia daca e "a" si ce e dupa, daca 1 aprinde led-ul 1, daca e 0 stinge led-ul 1, apoi trebuie sa fie "b" si daca dupa el e 1 aprinde led-ul 2, dacae 0 il stinge, etc...
      e greu daca nu prea stii programare, ca trebuie sa stii unde sa introduci parti din celelalt sketch cel cu codul de la tastatura... poate reusesc sa-mi fac timp sa refac montajul si sa il combin cu tastatura..

      Ștergere
    4. de combinat ma descurc cu ce stiu , doar linia de verificare ma intereseaza . Poate verifica un cuvint sau numai litera cu litera ?

      Ștergere
  4. incearca, daca nu merge pune litera cu litera, adica intai sa verifice daca e A, apoi daca e R si apoi M.. nu am acum al indemana is nu o sa am prea curand... ai putea incerc adaca ai deja montajul...
    if(M590.available() >0)
    {
    inchar=M590.read();
    Serial.write(inchar);
    if (inchar=='A')
    {
    delay(10);

    inchar=M590.read();
    if (inchar=='R')
    {
    delay(10);

    inchar=M590.read();
    if (inchar=='M')
    {
    // face ceva ce trebuie, sa incuie o usa, sa incuie un zavor
    }
    M590.println("AT+CMGD=1,4"); // delete all SMS
    Serial.println("delete all SMS"); // delete all SMS
    }
    }
    }
    }
    ceva de genul asta...

    RăspundețiȘtergere
  5. Functioneaza perfect . Multumesc foarte mult .
    Literele din cuvant trebuie scrise la fel ca in sms .Am incercat cu litere mici si nu recunoaste .

    RăspundețiȘtergere
    Răspunsuri
    1. poti schimba
      if (inchar=='R')
      cu
      if ((inchar=='R') || (inchar=='r'))
      pentru a putea scrie ARM, arm, Arm, aRM, etc...

      Ștergere
    2. Era o constatare . Daca ar fi sa ma complic ar trebui sa verifice si nr de telefon , dar fiind ca este vorba de un mini sistem de alarma montat la un garaj este de ajuns . Inca o data multumesc si felicitari pentru toate proiectele pe care le realizati .

      Ștergere
    3. e un experiment mai vechi si nu mai retin exact ccomenzile AT pentru M590, dar este si una de identifica numarul de telefon de la care primeste mesaj, o sa caut si o sa va scriu..

      Ștergere