luni, 17 august 2015

Modulul GPRS cu M590 (2)

   In primul articol, am prezentat pe scurt, foarte pe scurt, modulul GPRS cu M590 produs de Neoway, care a fost cumparat de pe aliexpress (vezi link).
   Am dat comenzi AT pentru aflare informatii despre modul, cartela, semnal, retea, etc, pentru primire si receptie mesaje tip SMS.

   Am trimis mesaje catre un alt telefon prin apasarea unui buton:
   Utile sunt si comenzi date de pe telefon catre Arduino, pentru a aprinde un bec sau a controla un ventilator, o pompa, o camera, etc, asa ca am inceput sa ma documentez si am ajuns destul de repede la unul din site-urile preferate (tronixstuff.com), care are articolul Arduino and SIM900 GSM Modules.
   Dupa cate se observa, modulul M590 este similat lui SIM900, care are destula decumentatie pe internet, doar ca M590 nu are partea de voce.
   In articolul mentionat mai sus, sunt prezentate mai multe experimente, printre care si cel in care se comanda 4 led-uri printr-un sms de genul #a1b0c1d0 (care aprinde ledurile 1 si 3, iar 2 si 4 sunt stinse).
   Pentru inceput, am folosit sketch-ul in care pot monitoriza si comenzile si ce trimite modulul GPRS cu M590. Am trimis un mesaj catre modul pentru a fi sigur ca informatia se trimite corect:
   Am facut si eu conexiunile pentru a putea controla 4 leduri, fiecare este inseriat cu cate o rezistenta de 680 ohmi:
 si am dat comenzi, adica sms-uri:
   Am trimis mesaj cu comanda #a1b0c1d0:
si s-au aprins ledurile 1 si 3:
 
apoi am trimis un mesaj #a0b1c0d1:
si s-au aprins ledurile 2 si 4, iar 1 si 3 s-au stins:
 am dat comanda sa fie aprinse toate 4 ledurile
 iar pe ecranul d emonitorizare seriala apare
 si s-au aprins toate 4 ledurile:
   Am facut filmuletul numit control Arduino cu un SMS prin intermediul unui modul GPRS M590 in care se vede mai usor modul de functionare:
    Sketch-ul folosit este M590_tronixstuff_sms_control_Arduino_v1m0 si se gaseste pe canalul https://github.com/tehniq3/ !!!

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 !!!

vineri, 14 august 2015

Modul GPRS cu M590

english version


   Am cumparat un kit GPRS cu cipset-ul M590 produs de Neoway si, din lipsa de timp, l-am neglijat, pana mi l-a asambat un coleg.
   Kit-ul se compune dintr-un cablaj pentru modulul GPRS si componentele aferente:
care asamblat arata asa:
   In plus, se mai livreaza o interfata USB-FTDI care poate "lucra" si cu nivel logic 3,3V:
   Pana sa-l testez am citit documentatia tehnica "Neo_M590: Hardware Design Manual, version 1.1" si comenzile AT de baza "M590 - AT Command Sets_V3.0", realizand, totodata, si un releveu:
   Prima data am conectat modulul GPRS la o placa Arduino Mega, iar interconectarea am facut-o cu o interfata de nivel logic 5V/3,3V si un alimentator extern cu reglaj (deoarece consumul modulului e mare si asa am avut o tensiune de alimentare redusa, nu la 5V):


   Am folosit o placa Arduino Mega deoarece pot avea acces direct la ecranul de monitorizare seriala si pentru modulul GPRS folosesc alt serial (in cazul meu, TX2-RX2) si am inceput sa dau comenzi AT, inclusiv sa citesc SMS-uri primite, folosind sketch-ul M590_Mega_serialmonitor:


   Dupa ce nu am reusit sa trimit SMS prin comanda din ecranul de monitorizare seriala de la Arduino, am conectat interfata USB-FTDI la modulul GPRS si am folosit programul PuTTy.
   Pentru a configura programul, am verificat pe ce COM se "pune" interfata:
apoi intrat la configurari:
punad si viteza de transfer sa fie 115200, apoi am tastat comenzi AT:
pana mi-am dat seama ce problema era... si era, in sensul ca trebuia sa trec modulul GPRS in modul SMS de tip text, prin comanda AT+CMGF=1, apoi trebuie trecut setul de caractere GSM (in mod normal e UCS2) prin comanda AT+CSCS="GSM", apoi se da comanda pentru a seta numarul destinatiorului AT+CMGS="07....5" si apoi se introduce textul urmat de CTRL si Z (0x1A).
   Am refacut montajul cu Arduino Mega si am putut trimite mesaje SMS, la fiecare pornire, folosind sketch-ul M590_Mega_sms_sender_v1m0:

   Am facut si 2 filmulete cu un montaj in care am pus un buton pentru trimitere mesaj; dupa apasare buton se aprinde LED-ul de pe placa (cel conectat la D13) si se trimite un sms, dupa cum e facut sketch-ul M590_Mega_sms_sender_1button_ver1m0, iar schema de conectare este
,
   Cele 2 filmulete:

  Am facut o captura de ecran cu comenzi AT si raspunsul modulului GPRS cu M590:
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 !!!

joi, 6 august 2015

Afisaj matriceal din 8x8 leduri controlat de MAX7219

   Am achizitionat de pe site-ul bangggod niste kit-uri de afisaje matriceale din 8x8 leduri, fiecare controlat de MAX7219:
   Dupa cum se observa pe placa pe care se monteaza componentele, sunt folosit doar 3 pini de comanda (CLK=clock, CS=load si DIN=data), pe langa alimentare, iar pentru a se conecta un alt modul se conecteaza DOUT la DIN-ul modulului urmator):
   Dupa asamblare, montajul arata asa:
 
   Dupa ce am asamblat primul modul, l-am conectat conform indicatiilor de pe site-ul tronixstuff.com folosind libraria Ledcontrol si exemplele de acolo:
 
 
  Ulterior, am testat si libraria Maxmatrix dupa informatiile gasite pe site-ul brainy-bits.com, pastrans modul de conectare:
 
   Am facut si 2 filmulete in care ma folosesc de libraria MaxMatrix:
   Deoarece modul de conectare al celorlalte module este corespunzator ultimei librarii, am considerat ca pot dezvolta sketch-uri folosindu-ma de aceasta.
   Dupa lipirea pielselor pe alte 3 module, am facut noi teste pentru a simula afisarea unor temperaturi, umidate, data, ora:
 
 
 
 
dupa cum se vede in filmuletul teste cu 4 module de 8x8leduri cu MAX7219 in care am folosit sketch-ul maxmatrix_good_scrool_4digit.ino:
   Am conectat un senzor de temperatura si umiditate DHT22 (AM2302) si am facut un filmulet numit temperature and humidity on 32x8 led display in care am folosit sketch-ul maxmatrix_DHT22_4module_ver1m0.ino
   Schema de conectare este:
   Dupa asta am conectat si un modul de ceas de timp real cu DS3231 (dar merge fara probleme si un modul cu DS1307, doar ca acesta din urma are o precizie mai mica) si am facut filmuletul date meteo si ceas pe afisaj led de 32x8 leduri
ulterior am pus si data, dupa cum se vede in filmuletul statie meteo si ceas cu data pe afisaj led de 32x8 leduri (2)
   Schema de conectare este:
   Am pus si o fotorezistenta pentru a regla automat nivelul intensitatii luminoase in functie de mediu, dupa cum se vede in filmuletul statie meteo si ceas cu data pe afisaj led de 32x8 leduri (3), iar sketch-ul folosit este maxmatrix_DS3231_RTC_4module_ver4m0.ino:
   Schema folosita este:
   Deoarece am realizat ca pot aparea moduri de afisare ciudate la temperaturi mai mici de 10 grade Celsius, inclusiv la cele negative, am modificat sketch-ul (care devine maxmatrix_DHT22_DS3231_4digit_ver5m0.ino):
- temperatura negativa, mai mica de -10 grade Celsius
- temepratura negativa unitara:
- temperatura pozitiva unitara:
- temperatura pozitiva, mai mare de +10 grade Celsius:
   In filmuletul numit afisare corecta temperaturi pozitive si negative pe ecran din 32x8 leduri se vede modul de afisare al diverselor temperaturi: