کنترل لوازم منزل از طریق خط تلفن+تراشه ISDXX+MT8870+ATMEGA8
در این پروژه قصد کنترل لوازم منزل با استفاده از خط تلفن را داریم.بدین گونه که پس از تماس با تلفن مربوطه ،بعد از دو زنگ خط بصورت اتومات آزاد شده و پیغام درخواست رمز را پخش می نماید. در صورتی که رمز وارد شده صحیح باشد ،سیستم پیغامی مبنی بر چگونگی کنترل لوازم را پخش می کند. ودر صورت اشتباه بودن مجددا رم را درخواست میکند و چنانچه رمز سه مرتبه اشتباه وارد شود،سیستم بطور اتومات خط تلفن را قطع میکند. این پروژه برای کنترل سه دستگاه در نظر گرفته شده است.
رمز اولیه دستگاه بعد از پروگرام کردن 0000 است، وپس از تغییر آن در حافظه ای تو پی رام قرار می گیرد و یعنی اینکه با قطع شدن برق هم رمز دستگاه باقی خواهد ماند. عدد 7878 هم به عنوان رمز ثابت در نظر گرفته شده است،یعنی رمز ورودی دستگاه هر عددی که باشد با این رمز هم می توان وارد سیستم شد و حتی رمز قبلی را تغییر داد.
چنانچه پس از ورود به سیستم به مدت زمان 30 ثانیه هیچ کلیدی فشرده نشود،سیستم وارد TIME OUT شد و پس از پخش پیغامی خط تلفن را قطع می کند.
در این پروژه بخش پخش صدا و آشکار ساز DTMF و آشکار ساز زنگ بصورت مدارهای جدایی ساخته شده ند ،و بصورت ماژول بر روی برد اصلی قرار می گیرند.
تصویر مدار به همراه ماژول های ساخته شده
نیازی نیست که LCD در مدار گذاشته شود،بنده LCD را برای این گذاشتم که راحت تر بتوام رفع اشکال برنامه مدار را انجام دهم ،الان هم که اشکالات برنامه رفع شده نیازی به LCD نیست.
برنامه مدار
$regfile "m8def.dat"
$crystal = 1000000
'''''''''''''''''''''''''''''\\\\\\\\\\\\\\\\\\\\\\\''''''''''''''''''''''''''''
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.3 , Db6 = Portb.2 , Db7 = Portb.1 , Rs = Portc.5 , E = Portb.5
Config Lcd = 16 * 2
Cls
Cursor Off
'###############################################################################
'###############################################################################
'$$$$$$$$$$$$$$$$$$$$$$$ MAIN BOARD CONFIGURATION ''''''''''''''''''''''''
Config Portb.0 = Output 'relay line
Config Portd.0 = Output 'relay1
Config Portd.1 = Output 'relay2
Config Portd.2 = Output 'relay3
Conect Alias Portb.0
Rel1 Alias Portd.0
Rel2 Alias Portd.1
Rel3 Alias Portd.2
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% SOUND BOARD CONFIGURATION #####################
'1.VCC 2.GND 3.EOM-- 4.PD 5.CE-- 6.M0 7.M6 8.SOUND
Config Portc.4 = Input 'EOM
Config Portc.3 = Output 'PD
Config Portc.2 = Output 'CE
Config Portc.1 = Output 'M6
Config Portc.0 = Output 'M0
Eom Alias Pinc.4
Pd Alias Portc.3
Ce Alias Portc.2
M0 Alias Portc.1
M6 Alias Portc.0
Const Insert_pin = 1
Const Pass_incorrect = 2
Const Welcome = 3
Const Hang_up = 4
Const Rel1_on = 5
Const Rel1_off = 6
Const Rel2_off = 8
Const Rel2_on = 7
Const Rel3_on = 9
Const Rel3_off = 10
Const Not_valid_key = 11
Const New_pass = 12
Const Try_again_pin = 13
Const Not_mached = 14
Const Pin_changed = 15
'$$$$$$$$$$$$$$$$$$$$$$$$$$$$ DTMF & RING DETECT CONFIGURATION $$$$$$$$$$$$$$$$$
'1.VCC 2.GND 3.STD 4.Q1 5.Q2 6.Q3 7.Q4 8.IN 9.RING DETECTED 10.GND
'11. RING 12.TIP
Config Portd.3 = Input 'STD & int1
Config Portd.4 = Input 'Q1
Config Portb.6 = Input 'Q2
Config Portb.7 = Input 'Q3
Config Portd.5 = Input 'Q4
Config Portd.6 = Input 'RING DETECTED
Standard Alias Pind.3
Q1 Alias Pind.4
Q2 Alias Pinb.6
Q3 Alias Pinb.7
Q4 Alias Pind.5
Ring_det Alias Pind.6
'&&&&&&&&&&&&&&&&&&&&&&&& HARDWAR & SOFTWAR CONFIGURATION &&&&&&&&&&&&&&&&&&&&&&
Const Def_t1 = 40000
Const Def_t2 = 100
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Enable Interrupts
Config Timer1 = Timer , Prescale = 1024
Enable Ovf1
On Ovf1 T1_int
Enable Timer1
Config Timer2 = Timer , Prescale = 1024
Enable Ovf2
On Ovf2 T2_int
Enable Timer2
Config Int1 = Rising
Enable Int1
On Int1 Rec_tone
Dim Ring_no As Word
Dim Ring_def As Word 'NUMBER OF RINGING FOR CONECT
Ring_def = 10 'SET DEFULT FOR RINGING
Dim Wrong_pass As Byte
Dim T2_count As Word
Dim Disconect As Bit
Dim Data_flag As Bit
Dim Data_recv As Byte
Dim Pin As Word
Dim Check_pin As Word
Dim Num_of_pin As Byte
Dim Def_pin As Eram Word
Dim Check_pin2 As Word
Dim Acc As Byte
Dim S_track As Byte
Dim I As Byte
Timer1 = Def_t1
Timer2 = Def_t2
'++++++++++++++++++++++++++++++++++++++++ sub rutine +++++++++++++++++++++++++++
Declare Sub Spk(byval A As Byte)
Declare Sub Revival 'REVIVAL TIME OUT
'+++++++++++++++++++++++++++++ MAIN PROGRAM ++++++++++++++++++++++++++++++++++
'###############################################################################
Cls
Lcd "hello"
Wait 2
Cls
Do
Start_prog:
''''''''''''''''' wait for ring '''''''''''''''''''''
If Ring_det = 1 Then
Cls
Locate 1 , 1
Lcd Ring_no
Goto Start_prog
End If
' LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
'
Call Revival
Start Timer2
'LLLLLLLLLLLLLLL WAIT FOR DEFINED RING OCCURED #############
If Ring_def > Ring_no Then
Goto Start_prog
End If
'''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''' ACCEPT RING ''''''''''''''''''''''''''''''''''''
Stop Timer2
Timer2 = Def_t2 'READY FOR ANOTHER USE
Ring_no = 0 'READY FOR ANOTHER USE
Set Conect 'FREE LINE
Call Spk(insert_pin) 'PLAY SOUNDPASSWORD REQUEST
Locate 1 , 5
Lcd "conect"
Jj:
If Conect = 0 Then
Goto Start_prog
End If
' EEEEEEEEEEEEE WAIT FOR ANY KEY PRESSED EEEEEEEEEEEE
If Data_flag = 0 Then 'DATA FLAG WHEN ANY TONE RECIVED GOES SET WITH INT1
Locate 1 , 13
Lcd Num_of_pin
Goto Jj
End If
''''''''''''''''''''''''''''''''''
Reset Data_flag 'CLEAR DATA_FLAG FOR ANOTHER USE
Call Revival ' REVIVAL TIME OUT
Incr Num_of_pin 'COUNTING NUMBER OF RECIVING TONE,WHEN THIS =4 ,PASSWORD CHECKING
Locate 2 , 1
Lcd Data_recv
''''''''''''''''''''''''''''''''''''''''''
Select Case Data_recv '* AND # IS NOT CHARACTER FOR PASSWORD,WHEN # OCCURED MEANS THAT THE LINE MUST BE DISCONECTED & WHEN * RECIVED THAT MEANS PASSWORD ENETRED AGIN
Case 11 '* RECIVED
Num_of_pin = 0
Call Spk(insert_pin)
Case 12
Locate 2 , 5
Lcd "thanks hang"
Call Spk(hang_up) 'PLAYING HANG UP AND THANKS FOR USE THIS SYSTEM
Goto Start_prog 'GOING TO START OF PROGRAM AND WAIT FOR DISCONECT
End Select
'HHHHHHHHHHHHHHHHHHHHHHHHH
'EEEEEEEEEEEEE CRAETIN CHAR INPUT TO NUMBER FOR COMPARE WITH PASSWORD EEEEEEEEEEEEEEEEE
Select Case Num_of_pin
Case 0 'THAT MEANS * PRESSED
Goto Jj 'GOING TO WAIT FOR RECIVING DIAL TONE
Case 1
Check_pin = Data_recv * 1000
Pin = Check_pin
Case 2
Check_pin = Data_recv * 100
Pin = Pin + Check_pin
Case 3
Check_pin = Data_recv * 10
Pin = Pin + Check_pin
Case Is => 4
Check_pin = Data_recv
Pin = Pin + Check_pin
'HHHHHHHHHHHHH COMPARE RECIVED NUMBER WITH SYSTM,S PASSWORD HHHHHHHHHHHHHHHHH
If Pin = Def_pin Then 'DEF_PIN IS SYSTEM,S PASSWORD
Goto Accept
Elseif Pin = 7878 Then
Goto Accept
End If
Incr Wrong_pass 'COUNTING THE NUM OF INCORRECT PASSWORD ENTERED
Locate 2 , 15
Lcd "wr"
If Wrong_pass => 3 Then
Call Spk(pass_incorrect)
Wait 3
Call Spk(hang_up)
Goto Start_prog 'GOING TO START OF PROGRAM & WAIT FOR HANG UP
End If
Call Spk(pass_incorrect) 'PLAYIN INCORRECT PASS ENTERED SOUND
Wait 2
Call Spk(insert_pin)
Num_of_pin = 0
End Select
Locate 2 , 10
Lcd Pin
Goto Jj 'GOING TO WAIT FOR RECIVING DIAL TONE
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% accepted password %%%%%%%%%%%%%%%%%%%%%%%%%%%
Accept:
Cls
Lcd "accepted"
Call Spk(welcome) 'PASSWORD IS VALIDATED & PLAYING WELCOME SOUND
Num_of_pin = 0 'READY FOR USE
Dj:
If Conect = 0 Then
Goto Start_prog
End If
'WWWWWWWWWWW WAIT FOR DIAL TONE TO CONTROL ''''''''''''''''''
If Data_flag = 0 Then
Goto Dj
End If
'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Reset Data_flag
Call Revival()
Select Case Data_recv
Case 1
Set Rel1
Call Spk(rel1_on)
Locate 2 , 1
Lcd "system1=on "
Case 2
Set Rel2
Call Spk(rel2_on)
Locate 2 , 1
Lcd "system2=on "
Case 3
Set Rel3
Call Spk(rel3_on)
Locate 2 , 1
Lcd "system3=on "
Case 4
Reset Rel1
Call Spk(rel1_off)
Locate 2 , 1
Lcd "system1=off"
Case 5
Reset Rel2
Call Spk(rel2_off)
Locate 2 , 1
Lcd "system2=off"
Case 6
Reset Rel3
Call Spk(rel3_off)
Locate 2 , 1
Lcd "system3=off"
Case 11
Call Spk(new_pass)
Goto Change_pin
Case 12
Call Spk(hang_up)
Locate 2 , 5
Lcd "thanks hang"
Wait 2
Goto Start_prog
Case Else
Call Spk(not_valid_key)
Locate 2 , 1
Lcd "not valid dial tone"
End Select
Goto Dj
'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
'\\\\\\\\\\\\\\\\\\\\\\\\\ change password \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Change_pin:
Locate 1 , 1
Lcd "change password"
If Conect = 0 Then
Goto Start_prog
End If
If Data_flag = 0 Then
Goto Change_pin
End If
Reset Data_flag
Call Revival()
Incr Num_of_pin
Select Case Data_recv
Case 11
Num_of_pin = 0
Case 12
Call Spk(hang_up)
Goto Start_prog
End Select
Select Case Num_of_pin
Case 0
Call Spk(new_pass)
Goto Change_pin
Case 1
Check_pin = Data_recv * 1000
Pin = Check_pin
Case 2
Check_pin = Data_recv * 100
Pin = Pin + Check_pin
Case 3
Check_pin = Data_recv * 10
Pin = Pin + Check_pin
Case Is => 4
Check_pin = Data_recv
Pin = Pin + Check_pin
Check_pin2 = Pin
Locate 2 , 1
Lcd " "
Locate 2 , 1
Lcd Pin
Goto Again
End Select
Goto Change_pin
Again:
Call Spk(try_again_pin)
Num_of_pin = 0
' ----------------- re enter pass -------------------
Try_again:
If Conect = 0 Then
Goto Start_prog
End If
If Data_flag = 0 Then
Goto Try_again
End If
Reset Data_flag
Call Revival()
Incr Num_of_pin
Select Case Data_recv
Case 11
Num_of_pin = 0
Call Spk(try_again_pin)
Case 12
Call Spk(hang_up)
Goto Start_prog
End Select
Select Case Num_of_pin
Case 0
Goto Try_again
Case 1
Check_pin = Data_recv * 1000
Pin = Check_pin
Case 2
Check_pin = Data_recv * 100
Pin = Pin + Check_pin
Case 3
Check_pin = Data_recv * 10
Pin = Pin + Check_pin
Case Is => 4
Check_pin = Data_recv
Pin = Pin + Check_pin
Num_of_pin = 0
Locate 2 , 7
Lcd Pin
Goto Dd
End Select
Goto Try_again
Dd:
If Check_pin2 = Pin Then
Def_pin = Pin
Call Spk(pin_changed)
Locate 2 , 1
Lcd "pin changed "
Wait 2
Goto Accept
Else
Call Spk(not_mached)
Locate 2 , 1
Lcd "pin not changed "
Wait 2
Goto Change_pin
End If
Loop
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
End 'end program
'HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH HANG UP TIMER HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
T1_int:
Stop Timer1
Timer1 = Def_t1 'READY FOR ANOTHER USE
Stop Timer2
Timer2 = Def_t2 'READY FOR ANOTHER USE
Reset Conect 'HNAG UP LINE PHONE
Ring_no = 0 'SET TO DEFUALT
Num_of_pin = 0 'SET TO DEFUALT
Wrong_pass = 0
Return
'UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
'KKKKKKKKKK TIME BETWIN RING AND SILENCE & NUMBER OF RING KKKKKKKKKKKKKKKKKKKKK
T2_int:
Stop Timer2
Timer2 = Def_t2
Incr Ring_no
Return
'JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
'HHHHHHHHHHHHHHHHHHH RECIVING DIAL TONE HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
Rec_tone:
Set Data_flag
Data_recv = Q1 * 8
Acc = Q2 * 4
Data_recv = Acc + Data_recv
Acc = Q3 * 2
Data_recv = Acc + Data_recv
Data_recv = Data_recv + Q4
If Data_recv = 10 Then
Data_recv = 0
End If
Return
'HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
'''''''''''''''''''''''''' revival time out ''''''''''''''''''''''''''''''''''''
Sub Revival
Stop Timer1
Timer1 = Def_t1
Start Timer1
End Sub
'============================ track playin subrutine ===========================
Sub Spk
Reset Pd
Set Ce
Set M0
Set M6
Reset Ce
Waitms 50
Set Ce
Waitms 50
Set Pd
Waitms 50
Reset Pd
Waitms 50
For I = 1 To A
Reset Ce
Waitms 50
Set Ce
Waitms 50
Next
Reset M0
Reset Ce
Waitms 50
Set Ce
End Sub
'llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
مطالب مشابه :
پروژه کنترل وسایل منزل از طریق خط تلفن + PCB + کدویژن
همانطور که از نام مدار پیداست وظیفه این پروژه کنترل وسایل خانگی با استفاده از خط تلفن است .
کنترل لوازم منزل از طریق خط تلفن+تراشه ISDXX+MT8870+ATMEGA8
در این پروژه قصد کنترل لوازم منزل با استفاده از خط تلفن را پس از پخش پیغامی خط تلفن را
پروژه کنترل وسایل منزل از طریق خط تلفن + PCB + کدویژن
همانطور که از نام مدار پیداست وظیفه این پروژه کنترل وسایل خانگی با استفاده از خط تلفن است .
دانلود پروژه کنترل وسایل منزل از طریق خط تلفن + PCB + کدویژن
دانلود پروژه کنترل وسایل منزل از كه هر روز هنگام شماره گيري با تلفن ميشنويم و براي
پروژه کنترل وسایل برقی با استفاده از موبایل
برچسبها: پروژه کنترل وسایل برقی با موبایل, پروژه کنترل وسایل برقی با تلفن,
پریزبرق کنترل از راه دور بوسیله تلفن
دیگر نگران کنترل وسایل برقی خانه در حل نموده و با استفاده از تلفن کنترل همه وسایل
دانلود پروژه کنترل وسایل منزل از طریق خط تلفن + PCB + کدویژن
» دانلود مرورگر گوگل کروم با افزونه Secure Http » آموزش برنامه سازی پیشرفته در C++
برچسب :
کنترل وسایل با تلفن