www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

SMS naprava z AVR

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
mato1111
Član
Član



Pridružen-a: Pet 28 Dec 2012 14:42
Prispevkov: 610
Aktiv.: 4.45
Kraj: Vrhnika

PrispevekObjavljeno: Sob Avg 09, 2014 9:52 am    Naslov sporočila:  SMS naprava z AVR Odgovori s citatom

Pozdravljeni

Izdelujem SMS napravo, s katero krmilim 4 izhodne releje (dodal bi tudi 4 vhode) po projektu iz neke spletne strani.
Uporabljam ATmega8 in EFCom Pro modul.

Vendar mi program ne deluje Brick wall

Prosim za pomoč



SMS shema in program.rar
 Opis:

Download
 Ime datoteke:  SMS shema in program.rar
 Velikost datoteke:  65.04 KB
 Downloadano:  27 krat

Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
dejko1
Član
Član



Pridružen-a: Ned 16 Mar 2008 0:21
Prispevkov: 265
Aktiv.: 1.36
Kraj: Ljubljana

PrispevekObjavljeno: Sob Avg 09, 2014 12:37 pm    Naslov sporočila:   Odgovori s citatom

Ne deluje? Poskusi biti malo bolj specifičen Mr. Green Npr. kako ti utripajo ledice?

Shema izgleda ok, razen okoli napajanja na atmega poglej, če je v redu (na tvoji shemi ni)...

V programu poglej ker se mi zdi da modem odgovarja na vsako AT komando, nisem pa siguren kako je to obdelano v tvojem programu (žal ne delam v bascomu tako da ti tu ne morem pomagat).

Za uart komunikacijo si pa lahko kakšen vmesnik z max232 narediš da lahko na PC poslušaš kaj pravita tvoj procesor in modem...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
mato1111
Član
Član



Pridružen-a: Pet 28 Dec 2012 14:42
Prispevkov: 610
Aktiv.: 4.45
Kraj: Vrhnika

PrispevekObjavljeno: Sob Avg 09, 2014 12:42 pm    Naslov sporočila:   Odgovori s citatom

Napajanje sem uredil ker je na shemi narisano narobe sem opazil. Deluje pa tako da ko prižgem nekaj časa sveti rdeča LED po prib 30-40 sek se pa prižge zelena LED in rdeča ugasne. Ko pa pošljem kodo in bi moral shraniti številko ter odpisati da je koda sprejeta ni odziva...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Vlado
Član
Član



Pridružen-a: Sre 03 Mar 2004 21:35
Prispevkov: 561
Aktiv.: 2.53
Kraj: Ljubljana

PrispevekObjavljeno: Sob Avg 09, 2014 3:41 pm    Naslov sporočila:   Odgovori s citatom

Dolgo je od tega ko sem delal s SMS-i, vendar bom poskusil pomagati. Potem ko pošlješ ukaz AT+CMGR=1, ti GSM vrne nazaj najprej CRLF, ali mogoče samo LF, potem pa odgovori +CMGR . . . .
V SUB ti gledaš kdaj bo prišel CR ali LF in končaš branje soročila.

Predlagam ti da v SUB rutini Getline določen čas čakaš karakter +, in potem začneš brati odgovor.

Priklopi GSM na PC in pošiljaj ukaze s terminalom da vidiš kako odgovarja tvoj GSM.
Uporabi Bray-ev terminal in boš videl tudi CRLF ki ti jih GSM vrača nazaj.
LP
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mato1111
Član
Član



Pridružen-a: Pet 28 Dec 2012 14:42
Prispevkov: 610
Aktiv.: 4.45
Kraj: Vrhnika

PrispevekObjavljeno: Sob Avg 09, 2014 4:25 pm    Naslov sporočila:   Odgovori s citatom

Koda:


Do
      Print "AT"
      Wait 2
      Print "AT+CMGF=1"                                     'Change to text mode
      Wait 2
      Print "AT+CMGR=1"                                     ' get the message
      Getline

      If Inmsg <> "OK" Then
         Rled = 1
         Gled = 1
         Num = Inmsg
         Getline
         Gps = Split(num , Ar(1) , ",")
         Num = Ar(2)
         Gps = Len(num)
         Gps = Gps - 2
         Num = Mid(num , 2 , Gps)

         Inmsg = Lcase(inmsg)

  '       Print Num ; "Msg:" ; Inmsg

         If Inmsg = "microcontroller" Then                  'other numbers
             Pass_stored = Num
             Number = Pass_stored
             Msg = "Password Accepted"
             Send_sms
         Elseif Num = Pass_stored Then
             If Inmsg = "light on" Then
                Relay1 = 1
                Status1 = 1
                Num = Pass_stored
                Msg = "Light Switched ON"
                Send_sms
             Elseif Inmsg = "light off" Then
                Relay1 = 0
                Status1 = 0
                Num = Pass_stored
                Msg = "Light Switched OFF"
                Send_sms
             Elseif Inmsg = "fan on" Then
                Relay2 = 1
                Status2 = 1
                Num = Pass_stored
                Msg = "Fan Switched ON"
                Send_sms
             Elseif Inmsg = "fan off" Then
                Relay2 = 0
                Status2 = 0
                Num = Pass_stored
                Msg = "Fan Switched OFF"
                Send_sms
             Elseif Inmsg = "ac on" Then
                Relay3 = 1
                Status3 = 1
                Num = Pass_stored
                Msg = "AC Switched ON"
                Send_sms
             Elseif Inmsg = "ac off" Then
                Relay3 = 0
                Status3 = 0
                Num = Pass_stored
                Msg = "AC Switched OFF"
                Send_sms
             Elseif Inmsg = "tv on" Then
                Relay4 = 1
                Status4 = 1
                Num = Pass_stored
                Msg = "AC Switched ON"
                Send_sms
             Elseif Inmsg = "tv off" Then
                Relay4 = 0
                Status4 = 0
                Num = Pass_stored
                Msg = "AC Switched OFF"
                Send_sms
             Else
                Num = Pass_stored
                Msg = "Invalid Command.."
                Send_sms
             End If
         End If
         Wait 2
         Print "AT+CMGD=1"                                  'Delete sms
         Wait 3
         Rled = 0
         Gled = 1
      End If

   Gled = 0
   Waitms 1
   Gled = 1


   Wait 8

   Gled = 0
   Waitms 1
   Gled = 1
Loop




Nazadnje urejal/a mato1111 Pet Dec 19, 2014 6:41 pm; skupaj popravljeno 1 krat
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
dejko1
Član
Član



Pridružen-a: Ned 16 Mar 2008 0:21
Prispevkov: 265
Aktiv.: 1.36
Kraj: Ljubljana

PrispevekObjavljeno: Sob Avg 09, 2014 9:13 pm    Naslov sporočila:   Odgovori s citatom

Tole:
Koda:
   Gled = 0
   Waitms 1
   Gled = 1


   Wait 8

   Gled = 0
   Waitms 1
   Gled = 1


Spremeni v tole:
Koda:
   Gled = 0
   Wait 8
   Gled = 1


Tako boš vsaj videl da ti glavna zanka deluje (utripanje zelene ledice), kot imaš kodo zdaj ti zelena ugasne za milisekundo, česar ne boš videl. Tvoj problem je sicer verjetno nekje v sprejemu odgovora z getline funkcijo kot je napisal Vlado...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
mato1111
Član
Član



Pridružen-a: Pet 28 Dec 2012 14:42
Prispevkov: 610
Aktiv.: 4.45
Kraj: Vrhnika

PrispevekObjavljeno: Ned Avg 10, 2014 10:45 am    Naslov sporočila:   Odgovori s citatom

Bi bil lahko kdo tako prijazen in sprobal program z kakšnim drugim modulom ?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Vlado
Član
Član



Pridružen-a: Sre 03 Mar 2004 21:35
Prispevkov: 561
Aktiv.: 2.53
Kraj: Ljubljana

PrispevekObjavljeno: Ned Avg 10, 2014 1:36 pm    Naslov sporočila:   Odgovori s citatom

Program ki si ga pripel ni celoten program ki si ga snel.
Pripni link do strani kje si to snel, ali pa pripni celoten program.

Imam enak modul, nimam pa časa preizkušati nekaj kar že v štartu moram popravljati.
Povedal sem ti že da SUB Getline ni pravilen!

Če imaš nov mikrokontroler, ali si nastavil fuse bite?
Nov M8 dela na notranjem oscilatorju ne gleda na to da si mu dal zunanji kristal.
Z modula moraš prebrati ali je prijavljen v omrežje (AT+CREG?, pa tudi moč signala preberi AT+CSQ). Ti ukazi niso zastonj tam, prebereš pa jih ne, to je enako kot jih sploh nebi pisal.
Uporabi en pin za soft UART in pošiljaj na PC odgovore z modula, tako boš videl kaj se dogaja

ta vrstica ni bila zastonj tam, manjka pa #2:
' Print Num ; "Msg:" ; Inmsg
Moralo bi biti:
' Print #2, Num ; "Msg:" ; Inmsg

LP
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mato1111
Član
Član



Pridružen-a: Pet 28 Dec 2012 14:42
Prispevkov: 610
Aktiv.: 4.45
Kraj: Vrhnika

PrispevekObjavljeno: Ned Avg 10, 2014 2:07 pm    Naslov sporočila:   Odgovori s citatom

Moj primer: http://avrprojects.info/avr-projects/sms-based-device-controller/
Podobna primera: http://avrprojects.info/avr-projects/sending-and-receiving-sms-with-device-controller/

http://avrprojects.info/avr-projects/gsm-based-home-security-system/
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
clownfish
Član
Član



Pridružen-a: Pet 05 Avg 2005 13:05
Prispevkov: 764
Aktiv.: 3.44
Kraj: Povir / Ljubljana

PrispevekObjavljeno: Pon Avg 11, 2014 11:17 am    Naslov sporočila:   Odgovori s citatom

Tudi sam sem pred letom ali dvema delal nekaj podobnega. Seveda sem vzel primer iz interneta in poizkusil z njimi pa jasno ni delovalo. Ugotovil sem da moram spremeniti par AT komand in potem deluje.
Najbolje da poizkusiš tale tvoj modul direktno iz PC-ja. Ponavadi imajo ti moduli tudi diagnostični program za PC in včasih z tem lahko tudi pošiljaš SMS-je in podobno.
Potem potrebuješ še tretji programčič, ki se obesi na tvoj serijski port in sledi kaj se pošilja v napravo in kaj naprava odgovarja.
Tako hitro ugotoviš kaj točno je potrebno poslati in kako odgovoriti da je komunikacija prava.
Sam sem uporabljal tale program:
www.serial-port-monitor.com
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mato1111
Član
Član



Pridružen-a: Pet 28 Dec 2012 14:42
Prispevkov: 610
Aktiv.: 4.45
Kraj: Vrhnika

PrispevekObjavljeno: Čet Avg 14, 2014 3:22 pm    Naslov sporočila:   Odgovori s citatom

Vlado je napisal/a:

... Povedal sem ti že da SUB Getline ni pravilen! ...


Program iz druge spletne strani. je ta sub getline pravilen? http://www.mcselec.com/index.php?option=com_content&task=view&id=21&Itemid=41
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Vlado
Član
Član



Pridružen-a: Sre 03 Mar 2004 21:35
Prispevkov: 561
Aktiv.: 2.53
Kraj: Ljubljana

PrispevekObjavljeno: Čet Avg 14, 2014 6:40 pm    Naslov sporočila:   Odgovori s citatom

Ta program dela malo drugače od tvojega.

Če dobro pogledaš SUB Getline, boš našel vrstico:
Case 10 : If S <> "" Then Exit Do ' if we have received something

To pa pomeni:
da tisti CRLF o katerem sem govoril, program ignorira.
Ko GSM odgovori, najpreje pošlje CRLF"OK"CRLF (približno tako gre, preveri s terminalom).
V tvoji prejšnji SUB si zapustil podprogram po prejetem prvem CRLF, ta vrstica pa to prepreči če je prejeti string enak "" (nadaljuje delo do sprejetja naslednjega LF).

Pa dobro poglej program ker uporablja bufered serin
Config Serialin = Buffered , Size = 12
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mato1111
Član
Član



Pridružen-a: Pet 28 Dec 2012 14:42
Prispevkov: 610
Aktiv.: 4.45
Kraj: Vrhnika

PrispevekObjavljeno: Ned Avg 31, 2014 8:51 pm    Naslov sporočila:   Odgovori s citatom

Program mi sedaj deluje! Dancing imel sem malo napakico pri programiranju čipa Mr. Green

Sedaj pa sem se znašel pred sledečim problemom:
Ko pošljem kodo si zapomni tel. številko in potem uboga moje ukaze. Če pošljem geslo iz druge številke se na to številko ne odziva, sepravi je program narejen samo za eno tel. številko. Jaz pa bi potreboval 4 uporabnike - 4 tel. številke.

Nevem kje naj se lotim spreminjanja programa Rolling Eyes
Koda:


Do
      Print "AT"
      Wait 2
      Print "AT+CMGF=1"                                     'Change to text mode
      Wait 2
      Print "AT+CMGR=1"                                     ' get the message
      Getline

      If Inmsg <> "OK" Then
         Rled = 1
         Gled = 1
         Num = Inmsg
         Getline
         Gps = Split(num , Ar(1) , ",")
         Num = Ar(2)
         Gps = Len(num)
         Gps = Gps - 2
         Num = Mid(num , 2 , Gps)

         Inmsg = Lcase(inmsg)

  '       Print Num ; "Msg:" ; Inmsg

         If Inmsg = "microcontroller" Then                  'other numbers
             Pass_stored = Num
             Number = Pass_stored
             Msg = "Password Accepted"
             Send_sms
         Elseif Num = Pass_stored Then
             If Inmsg = "light on" Then
                Relay1 = 1
                Status1 = 1
                Num = Pass_stored
                Msg = "Light Switched ON"
                Send_sms
             Elseif Inmsg = "light off" Then
                Relay1 = 0
                Status1 = 0
                Num = Pass_stored
                Msg = "Light Switched OFF"
                Send_sms
             Elseif Inmsg = "fan on" Then
                Relay2 = 1
                Status2 = 1
                Num = Pass_stored
                Msg = "Fan Switched ON"
                Send_sms
             Elseif Inmsg = "fan off" Then
                Relay2 = 0
                Status2 = 0
                Num = Pass_stored
                Msg = "Fan Switched OFF"
                Send_sms
             Elseif Inmsg = "ac on" Then
                Relay3 = 1
                Status3 = 1
                Num = Pass_stored
                Msg = "AC Switched ON"
                Send_sms
             Elseif Inmsg = "ac off" Then
                Relay3 = 0
                Status3 = 0
                Num = Pass_stored
                Msg = "AC Switched OFF"
                Send_sms
             Elseif Inmsg = "tv on" Then
                Relay4 = 1
                Status4 = 1
                Num = Pass_stored
                Msg = "AC Switched ON"
                Send_sms
             Elseif Inmsg = "tv off" Then
                Relay4 = 0
                Status4 = 0
                Num = Pass_stored
                Msg = "AC Switched OFF"
                Send_sms
             Else
                Num = Pass_stored
                Msg = "Invalid Command.."
                Send_sms
             End If
         End If
         Wait 2
         Print "AT+CMGD=1"                                  'Delete sms
         Wait 3
         Rled = 0
         Gled = 1
      End If

   Gled = 0
   Waitms 1
   Gled = 1


   Wait 8

   Gled = 0
   Waitms 1
   Gled = 1
Loop


Prišel sem samo do sem, da sem dodajal številko 2 in 3. pa ne vem niti če sem se problema pravilno lotil. mislil pa sem tako da bi vsak uporabnik dobil svojo geslo in bi ga program po tem geslu potem shranil kot number2, number3. samo potem se mi je zataknilo pri stringu Num Brick wall :
Koda:
... Dim Number As Eram String * 13 At 10
Dim Number2 As Eram String * 13 At 24
Dim Number3 As Eram String * 13 At 38...

...Dim Pass_stored As String * 13
Dim Pass_stored2 As String * 13
Dim Pass_stored3 As String * 13...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 48 dni


Powered by phpBB © 2001, 2005 phpBB Group