|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
mato1111 Član
Pridružen-a: Pet 28 Dec 2012 14:42 Prispevkov: 610 Aktiv.: 4.45 Kraj: Vrhnika
|
|
Nazaj na vrh |
|
|
dejko1 Član
Pridružen-a: Ned 16 Mar 2008 0:21 Prispevkov: 265 Aktiv.: 1.36 Kraj: Ljubljana
|
Objavljeno: Sob Avg 09, 2014 12:37 pm Naslov sporočila: |
|
|
Ne deluje? Poskusi biti malo bolj specifičen 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 |
|
|
mato1111 Član
Pridružen-a: Pet 28 Dec 2012 14:42 Prispevkov: 610 Aktiv.: 4.45 Kraj: Vrhnika
|
Objavljeno: Sob Avg 09, 2014 12:42 pm Naslov sporočila: |
|
|
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 |
|
|
Vlado Član
Pridružen-a: Sre 03 Mar 2004 21:35 Prispevkov: 561 Aktiv.: 2.53 Kraj: Ljubljana
|
Objavljeno: Sob Avg 09, 2014 3:41 pm Naslov sporočila: |
|
|
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 |
|
|
mato1111 Član
Pridružen-a: Pet 28 Dec 2012 14:42 Prispevkov: 610 Aktiv.: 4.45 Kraj: Vrhnika
|
Objavljeno: Sob Avg 09, 2014 4:25 pm Naslov sporočila: |
|
|
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 |
|
|
dejko1 Član
Pridružen-a: Ned 16 Mar 2008 0:21 Prispevkov: 265 Aktiv.: 1.36 Kraj: Ljubljana
|
Objavljeno: Sob Avg 09, 2014 9:13 pm Naslov sporočila: |
|
|
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 |
|
|
mato1111 Član
Pridružen-a: Pet 28 Dec 2012 14:42 Prispevkov: 610 Aktiv.: 4.45 Kraj: Vrhnika
|
Objavljeno: Ned Avg 10, 2014 10:45 am Naslov sporočila: |
|
|
Bi bil lahko kdo tako prijazen in sprobal program z kakšnim drugim modulom ?
|
|
Nazaj na vrh |
|
|
Vlado Član
Pridružen-a: Sre 03 Mar 2004 21:35 Prispevkov: 561 Aktiv.: 2.53 Kraj: Ljubljana
|
Objavljeno: Ned Avg 10, 2014 1:36 pm Naslov sporočila: |
|
|
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 |
|
|
mato1111 Član
Pridružen-a: Pet 28 Dec 2012 14:42 Prispevkov: 610 Aktiv.: 4.45 Kraj: Vrhnika
|
|
Nazaj na vrh |
|
|
clownfish Član
Pridružen-a: Pet 05 Avg 2005 13:05 Prispevkov: 764 Aktiv.: 3.44 Kraj: Povir / Ljubljana
|
Objavljeno: Pon Avg 11, 2014 11:17 am Naslov sporočila: |
|
|
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 |
|
|
mato1111 Član
Pridružen-a: Pet 28 Dec 2012 14:42 Prispevkov: 610 Aktiv.: 4.45 Kraj: Vrhnika
|
|
Nazaj na vrh |
|
|
Vlado Član
Pridružen-a: Sre 03 Mar 2004 21:35 Prispevkov: 561 Aktiv.: 2.53 Kraj: Ljubljana
|
Objavljeno: Čet Avg 14, 2014 6:40 pm Naslov sporočila: |
|
|
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 |
|
|
mato1111 Član
Pridružen-a: Pet 28 Dec 2012 14:42 Prispevkov: 610 Aktiv.: 4.45 Kraj: Vrhnika
|
Objavljeno: Ned Avg 31, 2014 8:51 pm Naslov sporočila: |
|
|
Program mi sedaj deluje! imel sem malo napakico pri programiranju čipa
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
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 :
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 |
|
|
|
|
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
|