SMS ‫ارسال‬ با میکرو و ماژول‬ RF ‫

SMS ‫ارسال‬ با میکرو و ماژول‬ RF ‫

تشریح عملکرد قسمت گیرنده مدار‬ :

‫ بر روی نمایشگر نوشته می شود سپس ورودی چک می شود و به‬RF REMOTE RECIVER‫در ابتدا عبارت ‬ محض اینکه دیتای ورودی 21 شد اجرای برنامه به برچسب ‫ منتقل میشود , تا وقتی ورودی برابر0‬RECIVE ‫‬ ‫نشده اجرای برنامه در این قسمت متوقف می شود پس از 0 شدن ورودی 200 میلی ثانیه تاخیر ایجاد میشود سپس‬ ‫دیتای ورودی در متغیر‬ .‫ قرار داده می شود‬RECIVE-DATA ‬.


شماتیک مدار گیرنده‬

‫برنامه اصلی مدار به زبان‬ BASIC

$regfile = "M8DEF.DAT"
$crystal = 8000000
Config Lcd = 16 * 4
Config Lcdpin = Pin , Db4 = Pind.0 , Db5 = Pind.1 , Db6 = Pind.3 , Db7 = Pind.4 , _
E = Pind.5 , Rs = Pind.6
Dim Lcd_data As String * 1 , X As Byte , Y As Byte , Rs As Byte
Dim Cls_lcd As Bit , Recive_data As Byte , R1 As Byte , R2 As Byte , R As Byte
Config Pinc.0 = Input
Config Pinc.1 = Input
Config Pinc.2 = Input
Config Pinc.3 = Input
Declare Sub Wireless_recive
Declare Sub Message_code
Declare Sub Synchronous_program
----------------------------------------------------------------------------------
Y=1:X =1
Cls : Home : Cursor Off
Lcd "RF MESSAGE"
Locate 2 , 1 : Lcd "RECIVER"
--------------------------------------
Do
Call Wireless_recive
Waitms 50
Decr Recive_data
If Recive_data = 12 Then
Cls : Home
Goto Recive
End If
Loop
'START OF RECIVE MESSAGE---------------------------------------------
Recive:
Do
Call Wireless_recive
If Recive_data = 0 Then Goto Level1
Loop
Level1:
Waitms 200
Call Wireless_recive
Decr Recive_data
R1 = Recive_data
Rs = R1 : Call Synchronous_program
Do
Call Wireless_recive
If Recive_data = 0 Then Goto Level2
Loop
----------------------------------------------------------------------------------
Level2:
Waitms 200
Call Wireless_recive
Decr Recive_data
R2 = Recive_data
Rs = R2 : Call Synchronous_program
Do
Call Wireless_recive
If Recive_data = 0 Then Goto Level3
Loop----------------------------------------------------------------------------------
Level3:
R2 = R2 * 10
R = R1 + R2
Call Message_code
----------------------------------------------------------------------------------
If Cls_lcd = 1 Then
Cls : Cls_lcd = 0
Y=1:X =1
End If
----------------------------------------------------------------------------------
Locate Y , X
----------------------------------------------------------------------------------
If Lcd_data = "$" Then
Incr Y : X = 1
Goto Recive
End If
----------------------------------------------------------------------------------
Lcd Lcd_data
----------------------------------------------------------------------------------
Incr X
If X > 15 Then
If Y = 4 Then
Y = 4 : X = 15
Else
X = 1 : Incr Y
End If : End If
----------------------------------------------------------------------------------
Goto Recive
'END OF RECIVE MESSAGE----------------------------------------------
'START OF WIRELESS_RECIVE SUB-----------------------------------
Sub Wireless_recive:
Recive_data = &B00001111
If Pinc.0 = 0 Then Recive_data = Recive_data And &B00001110
If Pinc.1 = 0 Then Recive_data = Recive_data And &B00001101
If Pinc.2 = 0 Then Recive_data = Recive_data And &B00001011
If Pinc.3 = 0 Then Recive_data = Recive_data And &B00000111
End Sub Wireless_recive
Return
'END OF WIRELESS_RECIVE SUB--------------------------------------
'START OF MESSAGE_CODE SUB---------------------------------------
Sub Message_code:
Select Case R:
Case Is = 0 : Lcd_data = "0"
Case Is = 1 : Lcd_data = "1"
Case Is = 2 : Lcd_data = "2"
Case Is = 3 : Lcd_data = "3"
Case Is = 4 : Lcd_data = "4"
Case Is = 5 : Lcd_data = "5"
Case Is = 6 : Lcd_data = "6"
Case Is = 7 : Lcd_data = "7"
Case Is = 8 : Lcd_data = "8"
Case Is = 9 : Lcd_data = "9"
Case Is = 10 : Lcd_data = "A"
Case Is = 11 : Lcd_data = "B"
Case Is = 12 : Lcd_data = "C"
Case Is = 13 : Lcd_data = "D"
Case Is = 14 : Lcd_data = "E"
Case Is = 15 : Lcd_data = "F"
Case Is = 16 : Lcd_data = "G"
Case Is = 17 : Lcd_data = "H"
Case Is = 18 : Lcd_data = "I"
Case Is = 19 : Lcd_data = "J"
Case Is = 20 : Lcd_data = "K"
Case Is = 21 : Lcd_data = "L"
Case Is = 22 : Lcd_data = "M"
Case Is = 23 : Lcd_data = "N"
Case Is = 24 : Lcd_data = "O"
Case Is = 25 : Lcd_data = "P"
Case Is = 26 : Lcd_data = "Q"
Case Is = 27 : Lcd_data = "R"
Case Is = 28 : Lcd_data = "S"
Case Is = 29 : Lcd_data = "T"
Case Is = 30 : Lcd_data = "U"
Case Is = 31 : Lcd_data = "V"
Case Is = 32 : Lcd_data = "W"
Case Is = 33 : Lcd_data = "X"
Case Is = 34 : Lcd_data = "Y"
Case Is = 35 : Lcd_data = "Z"
Case Is = 36 : Lcd_data = "$"
Case Is = 37 : Lcd_data = "."
Case Is = 38 : Lcd_data = " "
End Select
Return
End Sub Message_code
'END OF MESSAGE_CODE SUB-------------------------------------------
'START OF Synchronous_program SUB--------------------------------
Sub Synchronous_program:
If Rs = 12 Then
Cls_lcd = 1
Do
Call Wireless_recive
If Recive_data = 0 Then Goto S1
Loop
S1:
Do
Call Wireless_recive
Waitms 50
Decr Recive_data
If Recive_data = 12 Then
Cls : Home
Goto Recive
End If
Loop
End If
Return
End Sub Synchronous_program

بلوک یک مدار گیرنده‬

‫تشریح عملکرد قسمت فرستنده مدار‬


‫برای هر کدام از کلید های مدار یک شمارنده در نظر گرفته شده که پس از هر بار فشار کلید یک واحد به
شمارنده‬ اضافه میشود به عنوان مثال کلید CBA ‫ اگر بیش از 3 بار فشار دهیم شمارنده RESET میشود و
‫‬مقدار آن 0 است و با توجه به مقدار شمارنده رشته یا حرف مربوطه در متغیر LCD-DATA قرار می گیرد و رشته
مربوط پس از قرار گرفتن در متغیر  LCD-DATA ‫بر روی ‬ ‬ ‫نمایش داده میشود‬LCD

جدول کد های ارسالی توسط ‪KEYPAD‬‬

‫شماتیک فرستنده مدار

برنامه اصلی مدار به زبان‬ BASIC ‫


$regfile = "M8DEF.DAT"
$crystal = 8000000
Config Kbd = Portb , Debounce = 50 , Delay = 100
Config Lcd = 16 * 4
Config Lcdpin = Pin , Db4 = Pinc.0 , Db5 = Pinc.1 , Db6 = Pinc.2 , Db7 = Pinc.3_
, E = Pinc.4 , Rs = Pinc.5
Dim Lcd_data As String * 1 , X As Byte , Y As Byte , Recive_data As Byte
Dim C1 As Byte , C2 As Byte , C3 As Byte , C4 As Byte , Code As String * 1
Dim C5 As Byte , C6 As Byte , C7 As Byte , C8 As Byte , S1 As String * 1
Dim C9 As Byte , C10 As Byte , C11 As Byte , C0 As Byte
Dim S(81) As String * 1 , Count As Byte , Send As Byte , S2 As String * 1
Dim X1_save As Byte , X2_save As Byte , X3_save As Byte , Send_data As Byte
Dim Synchronous_data As Byte , String_of_send_data As String * 2 , H As Byte
Config Portd = Output
Declare Sub Wireless_send
Declare Sub Message_code
Pt_power Alias Portd.5 : Pt_enable Alias Portd.7
----------------------------------------------------------------------------------
Cursor Off
Cls : Home
Lcd "PLEASE ENTER"
Locate 2 , 1
Lcd "YOUR MESSAGE"
Wait 1
Cls : Cursor On : Y = 1 : X = 1
'START OF WRITEING MESSAGE PROGRAM------------------------
H1:
Recive_data = Getkbd()
If Recive_data = 16 Then Goto H1
Select Case Recive_data:------------------------------------------------
Case Is = 0
Incr C0
If C0 = 1 Then Lcd_data = "0"
If C0 = 2 Then Lcd_data = "1"
If C0 = 3 Then Lcd_data = "2"
If C0 = 4 Then
C0 = 0 : Lcd_data = "3"
End If
----------------------------------------------------------------------------------
Case Is = 4
Incr C4
If C4 = 1 Then Lcd_data = "4"
If C4 = 2 Then Lcd_data = "5"
If C4 = 3 Then
C4 = 0 : Lcd_data = "6"
End If
----------------------------------------------------------------------------------
Case Is = 8
Incr C8
If C8 = 1 Then Lcd_data = "7"
If C8 = 2 Then Lcd_data = "8"
If C8 = 3 Then
C8 = 0 : Lcd_data = "9"
End If
----------------------------------------------------------------------------------
Case Is = 3
Incr C3
If C3 = 1 Then Lcd_data = "A"
If C3 = 2 Then Lcd_data = "B"
If C3 = 3 Then
C3 = 0 : Lcd_data = "C"
End If
----------------------------------------------------------------------------------
Case Is = 2
Incr C2
If C2 = 1 Then Lcd_data = "D"
If C2 = 2 Then Lcd_data = "E"
If C2 = 3 Then
C2 = 0 : Lcd_data = "F"
End If
----------------------------------------------------------------------------------
Case Is = 1
Incr C1
If C1 = 1 Then Lcd_data = "G"
If C1 = 2 Then Lcd_data = "H"
If C1 = 3 Then
C1 = 0 : Lcd_data = "I"
End If
----------------------------------------------------------------------------------
Case Is = 7
Incr C7
If C7 = 1 Then Lcd_data = "G"
If C7 = 2 Then Lcd_data = "H"
If C7 = 3 Then
C7 = 0 : Lcd_data = "I"
End If
----------------------------------------------------------------------------------
Case Is = 6
Incr C6
If C6 = 1 Then Lcd_data = "M"
If C6 = 2 Then Lcd_data = "N"
If C6 = 3 Then
C6 = 0 : Lcd_data = "O"
End If
----------------------------------------------------------------------------------
Case Is = 5
Incr C5
If C5 = 1 Then Lcd_data = "P"
If C5 = 2 Then Lcd_data = "Q"
If C5 = 3 Then
C5 = 0 : Lcd_data = "R"
End If
----------------------------------------------------------------------------------
Case Is = 11
Incr C11
If C11 = 1 Then Lcd_data = "S"
If C11 = 2 Then Lcd_data = "T"
If C11 = 3 Then
C11 = 0 : Lcd_data = "U"
End If
----------------------------------------------------------------------------------
Case Is = 10
Incr C10
If C10 = 1 Then Lcd_data = "V"
If C10 = 2 Then Lcd_data = "W"
If C10 = 3 Then
C10 = 0 : Lcd_data = "X"
End If
----------------------------------------------------------------------------------
Case Is = 9
Incr C9
If C9 = 1 Then Lcd_data = "Y"
If C9 = 2 Then Lcd_data = "Z"
If C9 = 3 Then
C9 = 0 : Lcd_data = "."
End If
'START OF LOWERLINE BUTTON PROGRAM------------------------
Case Is = 15
If S(count) <> Lcd_data Then Lcd_data = " "
Locate Y , X
Lcd Lcd_data
----------------------------------------------------------------------------------
Incr Count
S(count) = "$"
If Y = 4 Then Goto H2
Lcd_data = " "
If Y = 1 Then X1_save = X
If Y = 2 Then X2_save = X
If Y = 3 Then X3_save = X
Incr Y : X = 1
H2:
'END OF LOWERLINE BUTTON PROGRAM----------------------------
'START OF DELETE BUTTON PROGRAM------------------------------
Case Is = 14
S(count) = " "
If Count > 0 Then Decr Count
Decr X
----------------------------------------------------------------------------------
If Y = 1 Then
If X = 0 Then X = 1
End If
----------------------------------------------------------------------------------
If Y > 1 Then
If X = 0 Then
If Y = 4 Then X = X3_save
If Y = 3 Then X = X2_save
If Y = 2 Then X = X1_save
Decr Y
End If : End If
----------------------------------------------------------------------------------
Lcd_data = " "
Locate Y , X
Lcd Lcd_data
'END OF DELETE BUTTON PROGRAM---------------------------------
'START OF OK BUTTON PROGRAM-------------------------------------
Case Is = 13
Incr Count
S(count) = Lcd_data
Lcd_data = " "
----------------------------------------------------------------------------------
Incr X
If X > 15 Then
If Y = 1 Then X1_save = 15
If Y = 2 Then X2_save = 15
If Y = 3 Then X3_save = 15
If Y < 4 Then
X = 1 : Incr Y
Else
X = 15
End If : End If
'END OF OK BUTTON PROGRAM----------------------------------------
'START OF SEND BUTTON PROGRAM---------------------------------
Case Is = 12
Sending:
----------------------------------------------------------------------------------
Synchronous_data = 12
Send_data = Synchronous_data
Call Wireless_send
----------------------------------------------------------------------------------
For Send = 1 To Count Step 1
Code = S(send)
Call Message_code
String_of_send_data = Str(send_data)
H = Len(string_of_send_data)
If H = 1 Then
Send_data = Val(string_of_send_data)
Call Wireless_send
Send_data = 0
Call Wireless_send
End If
If H = 2 Then
S1 = Mid(string_of_send_data , 2 , 1)
Send_data = Val(s1)
Call Wireless_send
S2 = Mid(string_of_send_data , 1 , 1)
Send_data = Val(s2)
Call Wireless_send
End If
Next Send
----------------------------------------------------------------------------------
Synchronous_data = 12
Send_data = Synchronous_data
Call Wireless_send
'END OF SEND BUTTON PROGRAM------------------------------------
End Select
----------------------------------------------------------------------------------
Locate Y , X
Lcd Lcd_data
Sound Portd.3 , 100 , 80
----------------------------------------------------------------------------------
H3:
Recive_data = Getkbd()
If Recive_data <> 16 Then Goto H3
----------------------------------------------------------------------------------
Goto H1
'END OF WRITEING MESSAGE PROGRAM----------------------------
'START OF WIRELESS_SEND SUB--------------------------------------
Sub Wireless_send:
Reset Pt_power : Set Pt_enable
Incr Send_data
Select Case Send_data:
Case Is = 1
Set Portd.0 : Reset Portd.1 : Reset Portd.2 : Reset Portd.4
----------------------------------------------------------------------------------
Case Is = 2
Reset Portd.0 : Set Portd.1 : Reset Portd.2 : Reset Portd.4
----------------------------------------------------------------------------------
Case Is = 3
Set Portd.0 : Set Portd.1 : Reset Portd.2 : Reset Portd.4
----------------------------------------------------------------------------------
Case Is = 4
Reset Portd.0 : Reset Portd.1 : Set Portd.2 : Reset Portd.4
----------------------------------------------------------------------------------
Case Is = 5
Set Portd.0 : Reset Portd.1 : Set Portd.2 : Reset Portd.4
----------------------------------------------------------------------------------
Case Is = 6
Reset Portd.0 : Set Portd.1 : Set Portd.2 : Reset Portd.4
----------------------------------------------------------------------------------
Case Is = 7
Set Portd.0 : Set Portd.1 : Set Portd.2 : Reset Portd.4
----------------------------------------------------------------------------------
Case Is = 8
Reset Portd.0 : Reset Portd.1 : Reset Portd.2 : Set Portd.4
----------------------------------------------------------------------------------
Case Is = 9
Set Portd.0 : Reset Portd.1 : Reset Portd.2 : Set Portd.4
----------------------------------------------------------------------------------
Case Is = 10
Reset Portd.0 : Set Portd.1 : Reset Portd.2 : Set Portd.4
----------------------------------------------------------------------------------
Case Is = 11
Set Portd.0 : Set Portd.1 : Reset Portd.2 : Set Portd.4
----------------------------------------------------------------------------------
Case Is = 12
Reset Portd.0 : Reset Portd.1 : Set Portd.2 : Set Portd.4
----------------------------------------------------------------------------------
Case Is = 13
Set Portd.0 : Reset Portd.1 : Set Portd.2 : Set Portd.4
----------------------------------------------------------------------------------
End Select
Waitms 50
Set Pt_power
Reset Pt_enable
Waitms 400
Reset Pt_power
Set Pt_enable
Waitms 100
Return
End Sub Wireless_send
'END OF WIRELESS_SEND SUB----------------------------------------
'START OF MESSAGE_CODE SUB--------------------------------------
Sub Message_code:
Select Case Code:
Case Is = "0" : Send_data = 0
Case Is = "1" : Send_data = 1
Case Is = "2" : Send_data = 2
Case Is = "3" : Send_data = 3
Case Is = "4" : Send_data = 4
Case Is = "5" : Send_data = 5
Case Is = "6" : Send_data = 6
Case Is = "7" : Send_data = 7
Case Is = "8" : Send_data = 8
Case Is = "9" : Send_data = 9
Case Is = "A" : Send_data = 10
Case Is = "B" : Send_data = 11
Case Is = "C" : Send_data = 12
Case Is = "D" : Send_data = 13
Case Is = "E" : Send_data = 14
Case Is = "F" : Send_data = 15
Case Is = "G" : Send_data = 16
Case Is = "H" : Send_data = 17
Case Is = "I" : Send_data = 18
Case Is = "J" : Send_data = 19
Case Is = "K" : Send_data = 20
Case Is = "L" : Send_data = 21
Case Is = "M" : Send_data = 22
Case Is = "N" : Send_data = 23
Case Is = "O" : Send_data = 24
Case Is = "P" : Send_data = 25
Case Is = "Q" : Send_data = 26
Case Is = "R" : Send_data = 27
Case Is = "S" : Send_data = 28
Case Is = "T" : Send_data = 29
Case Is = "U" : Send_data = 30
Case Is = "V" : Send_data = 31
Case Is = "W" : Send_data = 32
Case Is = "X" : Send_data = 33
Case Is = "Y" : Send_data = 34
Case Is = "Z" : Send_data = 35
Case Is = "$" : Send_data = 36
Case Is = "." : Send_data = 37
Case Is = " " : Send_data = 38
End Select
Return
End Sub Message_code
'END OF MESSAGE_CODE SUB-----------------------------------------

‫بلوک مدار فرستنده یا SENDER

‫طرز کار مدار

‬‫این مدار با میکرو کنترلر AVR ATMEGA 8 و LCD ‫کاراکتری‬ 16*4
‫و یک ماژول فرستنده و گیرنده‬ RF  ‫به شماره‬ TLP434  ‫که در باند فرکانسی‬ zHM 315 ‫کار میکند‬ ‫ساخته شده
است بلوک دیاگرام ماژول به شکل زیر است‬ :

این ماژول ها هم به صورت تک و هم با ‪ IC‬دکودر در بازار موجود است :‬

طریقه ارسال SMS‬‬

‫بعد از کد گزاری هر دو ‪ IC‬دکودر مدار که باید هر دو کد یکسان باشند شروع به تایپ SMS ‫میکنیم‬
‫برای اصلاح نوشته از کلید ‪ DELETE‬و سپس ‪ OK‬وبرای ارسال از کلید ‪ SEND‬استفاده میکنیم .‬
‫برد مدار به عوامل گوناگون بستگی دارد اما با استفاده از همین ماژول و در فضای باز برد 3 الی 4‬
‫‫کیلومتر را می توان انتظار داشت.‬

مقالات مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Fill out this field
Fill out this field
لطفاً یک نشانی ایمیل معتبر بنویسید.
You need to agree with the terms to proceed

پر بازدید ترین مقالات