پاسخ : {دانلود}-برنامه کامل و بدون نقص SIM900 به زبان بسکام -کنترل چند رله و سنسور
حذف شد :biggrin:
حذف شد :biggrin:
'----------------------------------------------------------------------------------------- 'Designed By NimaAriyamehr '--------------------------------------------------- $regfile = "m32def.dat" $crystal = 8000000 $baud = 9600 Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5 Config Lcd = 16 * 2 $hwstack = 64 $swstack = 64 $framesize = 64 Config Debounce = 200 'Set 150ms as Debounce delay Config Porta.0 = Output Config Porta.1 = Output Config Porta.2 = Output Config Portd.6 = Output Config Pind.2 = Input Config Pind.7 = Input Config Pinc.0 = Input Declare Sub Getline Declare Sub Send_sms Declare Sub Sms_check Declare Sub Dail Declare Sub Chenge_pass Declare Sub Mony Deflcdchar 1 , 31 , 21 , 14 , 4 , 4 , 4 , 4 , 4 Deflcdchar 2 , 1 , 1 , 1 , 5 , 5 , 5 , 21 , 21 Deflcdchar 3 , 32 , 14 , 10 , 21 , 21 , 17 , 31 , 32 Deflcdchar 4 , 32 , 17 , 25 , 21 , 19 , 17 , 32 , 32 Relay1 Alias Porta.0 Relay2 Alias Porta.1 Relay3 Alias Porta.2 Pwr Alias Portd.6 Ri Alias Pind.2 Sens1 Alias Pind.7 Sens2 Alias Pinc.0 '#################################### Dim Listen As Eram Byte Dim Alarm As Eram Byte Dim Status1 As Eram Byte Dim Status2 As Eram Byte Dim Status3 As Eram Byte Dim Number As Eram String * 13 Dim Sms As Eram Byte Dim Pass As Eram String * 4 Dim Pass2 As Eram String * 3 '------------ Variables and constants for GSM --------------------------------- ------ Dim Num As String * 80 Dim Num2 As String * 80 Dim Msg As String * 160 Dim Inmsg As String * 160 Dim Gstmp As Byte Dim Ar(10) As String * 20 Dim Count As Byte Dim Gps As Byte Dim Pass_stored As String * 13 Dim Sharj As String * 160 Dim S As Byte Dim X As Byte Dim Rly1 As String * 3 Dim Rly2 As String * 3 Dim Rly3 As String * 3 Dim Rly4 As String * 3 Dim Alrm As String * 3 Dim P1 As String * 4 Dim P2 As String * 3 Dim Body As Bit Relay1 = 0 Relay2 = 0 Relay3 = 0 Ri = 1 Sens1 = 1 Sens2 = 1 S = 2 Body = 0 If Sms = 1 Then Sms = 1 Else Sms = 0 End If If Alarm = 1 Then Alrm = "on" Else Alrm = "Off" End If Cursor Off P2 = Pass2 If P2 = "OK" Then Cls : Lcd "HAVE OLD PASS" Wait 2 Else Pass = "1111" Cls : Lcd "Default Pass Is:" : Locate 2 , 7 : Lcd "1111" Wait 2 End If P1 = Pass Pass_stored = Number Gps = Status1 If Gps = 1 Then Relay1 = 1 Rly1 = "on" Else Relay1 = 0 Rly1 = "off" End If Gps = Status2 If Gps = 1 Then Relay2 = 1 Rly2 = "on" Else Relay2 = 0 Rly2 = "Off" End If Gps = Status3 If Gps = 1 Then Relay3 = 1 Rly3 = "on" Else Relay3 = 0 Rly3 = "off" End If Cls Locate 1 , 3 'Clear display Lcd "Initializing" Locate 2 , 6 Lcd "Modem..." Set Pwr Wait 2 Reset Pwr Wait 5 ' give some time for gsm modem ' Print "AT" Wait 2 Print "AT+CMGD=0,4" Wait 2 Print "AT+CREG?" Wait 2 Print "ATE0" ' Wait 2 Print "AT+CNMI=1,1,0,0,0" 'new message indication off Wait 2 'Third command TEXT MODE Print "AT+CMGF=1" Wait 1 Print "AT" Wait 1 Do M: '********************************** SENSORHAA**************************** If Alarm = 1 Then If Sens1 = 0 Then If Sens1 = 1 Then Cls Num = Pass_stored Lcd "===>SENSED 1<===" Msg = "Amotion IN SENSOR 1 " If Sms = 1 Then Send_sms If Sms = 0 Then Dail Goto P End If End If If Sens2 = 0 Then If Sens2 = 1 Then Cls Num = Pass_stored Lcd "===>SENSED 2<=== " Msg = "Amotion IN SENSOR 2 " If Sms = 1 Then Send_sms If Sms = 0 Then Dail Goto P End If End If End If '*********************************Message Sense******************************************* If Ri = 0 Then S = 0 If S < 3 Then Incr S Print "AT" Wait 2 Print "AT+CMGR=1" ' get the message Getline If Inmsg <> "OK" Then 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) If Inmsg = P1 Then 'password is 333 Cls Locate 1 , 1 Lcd "===>Password<===" Locate 2 , 1 Lcd "===>Accepted<===" Pass_stored = Num Number = Pass_stored Num2 = Num Msg = "Password Accepted" Body = 1 If Sms = 1 Then Send_sms ' If Sms = 0 Then Dail Elseif Num = Pass_stored Then Body = 1 Cls Lcd "Control msg Rciv" '********************************************************************************** If Inmsg = "1-on" Then '1-on Relay1 = 1 Status1 = 1 Rly1 = "On" Num = Pass_stored Msg = "Light Switched ON" If Sms = 1 Then Send_sms If Sms = 0 Then Dail Elseif Inmsg = "1-off" Then '1-off Relay1 = 0 Status1 = 0 Rly1 = "off" Num = Pass_stored Msg = "Light Switched OFF" If Sms = 1 Then Send_sms If Sms = 0 Then Dail Elseif Inmsg = "2-on" Then Relay2 = 1 Status2 = 1 Rly2 = "On" Num = Pass_stored Msg = "Fan Switched ON" If Sms = 1 Then Send_sms If Sms = 0 Then Dail Elseif Inmsg = "2-off" Then Relay2 = 0 Status2 = 0 Rly2 = "Off" Num = Pass_stored Msg = "Fan Switched OFF" If Sms = 1 Then Send_sms If Sms = 0 Then Dail Elseif Inmsg = "3-on" Then Relay3 = 1 Status3 = 1 Rly3 = "On" Num = Pass_stored Msg = "AC Switched ON" If Sms = 1 Then Send_sms If Sms = 0 Then Dail Elseif Inmsg = "3-off" Then Relay3 = 0 Status3 = 0 Rly3 = "Off" Num = Pass_stored Msg = "AC Switched OFF" If Sms = 1 Then Send_sms If Sms = 0 Then Dail Elseif Inmsg = "status" Then Cls Lcd " Status Checked" Num = Pass_stored Msg = "1 is :" + Rly1 + "--" + " 2 is :" + Rly2 + "--" + " 3 is :" + Rly3 + "--" + " Securt is: " + Alrm Send_sms Elseif Inmsg = "pass" Then Msg = "Security password Is=> (" + P1 + ")" Send_sms Elseif Inmsg = "Listen-on" Then Num = Pass_stored Listen = 1 Cls Lcd "Listen On" Msg = "Listen Mod ON" Send_sms Elseif Inmsg = "Listen-off" Then Listen = 0 Cls Lcd "Listen Off" Msg = "Listen Mod Off" Send_sms Elseif Inmsg = "new-pass" Then Chenge_pass Elseif Inmsg = "all-off" Then Relay1 = 0 Status1 = 0 Relay2 = 0 Status2 = 0 Relay3 = 0 Status3 = 0 Num = Pass_stored Msg = "ALL Channel Switched OFF" If Sms = 1 Then Send_sms If Sms = 0 Then Dail Elseif Inmsg = "alarm-on" Then Num = Pass_stored Alarm = 1 Cls : Lcd "Secqrity On" Msg = "Secqrity System Swiched On" If Sms = 1 Then Send_sms If Sms = 0 Then Dail Elseif Inmsg = "alarm-off" Then Num = Pass_stored Alarm = 0 Cls : Lcd "Secqrity Off" Msg = "Secqrity System Swiched Off" If Sms = 1 Then Send_sms If Sms = 0 Then Dail Elseif Inmsg = "dail" Then Num = Pass_stored Sms = 0 Cls : Lcd "===>Dail Mod<===" Msg = "DAIL MOD" Dail Elseif Inmsg = "sms" Then Num = Pass_stored Sms = 1 Cls : Lcd "===>Sms Mod<===" Msg = "SMS MOD" If Sms = 1 Then Send_sms If Sms = 0 Then Dail Elseif Inmsg = "exit" Then Cls : Lcd "=>DELET NUMBER<=" Msg = "This Number Romoved From Sysyem!" If Sms = 1 Then Send_sms If Sms = 0 Then Dail Body = 0 Pass_stored = "0" Num = "1" Number = "2" Elseif Inmsg = "sharj" Then ' ******************** Num = Pass_stored Mony Cls Lcd Sharj ; "Rial" Msg = Sharj + "Rial" Send_sms If Sharj < "1000" Then Dail End If Wait 3 '*********************************************************************************** Else Num = Pass_stored Cls Lcd "Error Msg" End If Else Cls Locate 1 , 3 Lcd "ERROR PASS" Wait 1 Cls End If P: Wait 1 Print "AT+CMGD=0,4" Wait 1 Cls Cursor Off Locate 1 , 4 Lcd "{System}" Locate 2 , 4 Lcd "{Online}" Locate 1 , 15 : Lcd Chr(1) Locate 1 , 16 : Lcd Chr(2) If Alarm = 1 Then Locate 1 , 14 : Lcd Chr(3) End If If Body = 0 Then Locate 1 , 13 : Lcd Chr(4) End If If Sms = 1 Then Locate 1 , 1 : Lcd "S" Else Locate 1 , 1 : Lcd "D" Locate 2 , 1 : Lcd Chr(135) Locate 2 , 13 : Lcd Sharj End If End If End If Loop End '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ' SEND SMS '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Sub Send_sms Wait 1 Print "AT+CMGS=" ; Chr(34) ; Num ; Chr(34) 'send sms Waitms 200 Print Msg ; Chr(26) Wait 5 Print "AT" Wait 1 End Sub '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ' Read gsm modem AND WAITING FOR SMS '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Sub Getline Inmsg = "" Do Gps = Inkey() If Gps > 0 Then Select Case Gps Case 13 : If Inmsg <> "" Then Exit Do ' if we have received something Case 10 : If Inmsg <> "" Then Exit Do ' if we have received something Case Else Inmsg = Inmsg + Chr(gps) ' build string End Select End If Loop End Sub '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Sub Dail Print "ATD" ; Num ; ";" Wait 10 Print "ATH" End Sub '************************************** Sub Chenge_pass Print "AT+CMGD=0,4" Wait 1 Msg = "Please Send new pass-4 Raghami OR send Cancel" Send_sms Cls : Lcd "Wait For New pass" Do Wait 2 Print "AT+CMGR=1" ' get the message Getline If Inmsg <> "OK" Then Num = Inmsg Getline Gps = Split(num , Ar(1) , ",") Num = Ar(2) Gps = Len(num) Gps = Gps - 2 Num = Mid(num , 2 , Gps) If Num <> Num2 Then Goto M ' for More Security Inmsg = Lcase(inmsg) If Inmsg = "cancel" Then Goto P Pass = Inmsg P1 = Pass Pass2 = "OK" Cls : Lcd "Pass Recived" Msg = "Succesfull chenged password" Send_sms Goto P End If Loop End Sub '*********************************************** Sub Mony Print "ATD*140*1#" Getline Getline Sharj = Left(inmsg , 77) Sharj = Right(sharj , 6) Sharj = Ltrim(sharj) End Sub
Cls Locate 1 , 3 'Clear display Lcd "Initializing" Locate 2 , 6 Lcd "Modem..." Set Pwr Wait 2 Reset Pwr
دیدگاه