Witam,
w oparciu o przeczytane na forum posty (w szczególności https://www.elektroda.pl/rtvforum/topic1441719.html) stworzyłem poniższy kod, który w 99% działa.
Poprawnie wysyła SMSy i poprawnie dzwoni w zależności od tego jaki guzik się naciśnie.
Problem mam z odbiorem potwierdzeń z modułu SIM300CZ.
Wiadome mi jest (po podłączeniu komputera), że na komendy typu: AT odpowiada OK, poniższy kod miał mi te "OK" np. po linii Print "AT+CMGF=1" ; Chr(13);
wyświetlić na LCDku - niestety wyświetlane są pojedyncze kropki. Wyświetlacz działa, bo tekst wprowadzony normalnie Lcd " SIM300 " w każdej linii wyświetla dobrze.
Nie mam w tej chwili do dyspozycji innego wyświetlacza.
Czy według Was kod jest dobry i powinien wyświetlać a LCD jest np. zbyt wolny i nie wyrabia czy jednak jest błąd - siedzę nad tym dziś już od 6 godzin i chyba już mam mętlik w głowie, proszę o korektę lub cenne wskazówki.
pozdrawiam,
Przemo
---------------- 3-04-2010 ---
dziś posiedziałem znowu parę godzin, przestawiłem z zewnętrznego kwarcu 16MHz na wewnętrzny RC 8MHz a potem jeszcze 4MHz - pogorszyło się jeszcze bardziej - nie działało mi odbieranie potwierdzeń z modułu SIM300 a na wewnętrznym kwarcu 8 i 4MHz nawet SIM300 nie chciał zadzwonić i wysłać SMSa, przełączyłem zatem ponownie na kwarc i wysyłanie znowu działa.
W programie zamiast wysyłania na LCD dałem Print #2 , Znak - i wysyłam na 2 uarcie na laptopa, generalnie bez zmian, raz nawet przyszło "O" czyli jedną literkę z potwierdzenia "OK" przyjął.
Kiedy dam Print #2, "TEST" to na laptopie słowo TEST jest odebrane.
Zaczynam podejrzewać, że program może być dobry a atmega leży lub coś z jej taktowaniem i poziom błędów jest bardzo duży.
W tej chwili nie mam pod ręką innych modułów z prockami na innych kwarcach i będę próbował dalej w przyszłym tygodniu.
Może jednak ktoś zechce wyrazić swoje odczucia czy soft jest poprawny i jednak ta atmega..., a może ktoś ma przetestowany blok odbioru takiego potwierdzenia, który u niego na pewno działa i zechce się podzielić.
pozdr.
Przemo
w oparciu o przeczytane na forum posty (w szczególności https://www.elektroda.pl/rtvforum/topic1441719.html) stworzyłem poniższy kod, który w 99% działa.
Poprawnie wysyła SMSy i poprawnie dzwoni w zależności od tego jaki guzik się naciśnie.
Problem mam z odbiorem potwierdzeń z modułu SIM300CZ.
Wiadome mi jest (po podłączeniu komputera), że na komendy typu: AT odpowiada OK, poniższy kod miał mi te "OK" np. po linii Print "AT+CMGF=1" ; Chr(13);
wyświetlić na LCDku - niestety wyświetlane są pojedyncze kropki. Wyświetlacz działa, bo tekst wprowadzony normalnie Lcd " SIM300 " w każdej linii wyświetla dobrze.
Nie mam w tej chwili do dyspozycji innego wyświetlacza.
Czy według Was kod jest dobry i powinien wyświetlać a LCD jest np. zbyt wolny i nie wyrabia czy jednak jest błąd - siedzę nad tym dziś już od 6 godzin i chyba już mam mętlik w głowie, proszę o korektę lub cenne wskazówki.
pozdrawiam,
Przemo
$regfile = "m128def.dat"
$crystal = 16000000
$baud = 19200
Config Lcd = 20 * 4
Config Lcdpin = Pin , Db4 = Porte.4 , Db5 = Porte.5 , Db6 = Porte.6 , Db7 = Porte.7 , E = Porte.3 , Rs = Porte.2
Ddrf.0 = 0
Ddrf.1 = 0
Set Portf.1
Set Portf.0
G1 Alias Pinf.0
G2 Alias Pinf.1
Dim Numer As String * 9
Dim Znak As String * 10
Dim Rs As Byte
Dim A As Byte
Cursor Off , Noblink
Display On
Locate 1 , 1
Lcd " SIM300 "
Locate 2 , 1
Lcd " "
Locate 3 , 1
Lcd " "
Locate 4 , 1
Lcd " "
Numer = "123123123"
Glowny:
Do
If G1 = 0 Then : Goto Wyslij : End If
If G2 = 0 Then : Goto Dzwon : End If
Waitms 100
Loop
Wyslij:
Print "AT"
Wait 1
Print "AT"
Wait 1
Print "AT"
Wait 1
Print "ATH"
Wait 1
Print "ATE0"
Waitms 500
Print "ATE0"
Waitms 500
Znak = ""
Print "AT+CMGF=1" ; Chr(13);
A = 1
Do
Rs = Inkey()
If Rs = 13 Then Exit Do
Znak = Znak + Chr(rs)
Incr A
If A = 10 Then Exit Do
Loop
Cls
Locate 3 , 1
Lcd "> " ; Znak
Waitms 200
Znak = ""
Print "AT+CSCS=" ; Chr(34) ; "GSM" ; Chr(34) ; Chr(13);
A = 1
Do
Rs = Inkey()
If Rs = 13 Then Exit Do
Znak = Znak + Chr(rs)
Incr A
If A = 10 Then Exit Do
Loop
Cls
Locate 3 , 1
Lcd "> " ; Znak
Waitms 200
Znak = ""
Print "AT+CMGS=" ; Chr(34) ; Numer ; Chr(34) ; Chr(13);
Waitms 500
Print "nacisniety guzik G1" ; Chr(26) ; Chr(13);
A = 1
Do
Rs = Inkey()
If Rs = 13 Then Exit Do
Znak = Znak + Chr(rs)
Incr A
If A = 10 Then Exit Do
Loop
Cls
Locate 3 , 1
Lcd "> " ; Znak
Waitms 200
Locate 2 , 1
Lcd "SMS wyslany"
Wait 2
Locate 2 , 1
Lcd " "
Goto Glowny
Dzwon:
Print "AT"
Wait 1
Print "AT"
Wait 1
Print "AT"
Wait 1
Print "ATH"
Waitms 200
Print "ATD123123123;"
Wait 2
Locate 2 , 1
Lcd " "
Goto Glowny
---------------- 3-04-2010 ---
dziś posiedziałem znowu parę godzin, przestawiłem z zewnętrznego kwarcu 16MHz na wewnętrzny RC 8MHz a potem jeszcze 4MHz - pogorszyło się jeszcze bardziej - nie działało mi odbieranie potwierdzeń z modułu SIM300 a na wewnętrznym kwarcu 8 i 4MHz nawet SIM300 nie chciał zadzwonić i wysłać SMSa, przełączyłem zatem ponownie na kwarc i wysyłanie znowu działa.
W programie zamiast wysyłania na LCD dałem Print #2 , Znak - i wysyłam na 2 uarcie na laptopa, generalnie bez zmian, raz nawet przyszło "O" czyli jedną literkę z potwierdzenia "OK" przyjął.
Kiedy dam Print #2, "TEST" to na laptopie słowo TEST jest odebrane.
Zaczynam podejrzewać, że program może być dobry a atmega leży lub coś z jej taktowaniem i poziom błędów jest bardzo duży.
W tej chwili nie mam pod ręką innych modułów z prockami na innych kwarcach i będę próbował dalej w przyszłym tygodniu.
Może jednak ktoś zechce wyrazić swoje odczucia czy soft jest poprawny i jednak ta atmega..., a może ktoś ma przetestowany blok odbioru takiego potwierdzenia, który u niego na pewno działa i zechce się podzielić.
pozdr.
Przemo
