PDA

مشاهده نسخه کامل : نحوه ی ارتباط با ماژول بیسیم SIM20



ravegoat
19-03-12, 11:15
SIM20 يك ماژول ارتباط بي سيم است كه از طريق AT Command كنترل مي شود (AT Command فرماني به صورت رشته است كه در اول آن حروف AT برگرفته شده از لغت ATTENTION وجود دارد.) . اين ماژول داراي سه مدل A، B و C بوده كه هر يك در فركانس مشخصي كار مي كنند.





6634
با اتصال SIM20 به رايانه از طريق رابط هايي چون USB يك پورت COM در رايانه تعريف مي شود. در نتيجه نرم افزار كنترل ربات ها مي تواند دستورات خود روي اين پورت COM بفرستد تا از راه ارتباط بي سيم بين ماژول متصل به رايانه و ماژول هاي موجود روي ربات ها، اين دستورات منتقل شود.
SIM20 در دو حالت command و data توانايي برقراري ارتباط دارد كه در ادامه تنها از command mode استفاده مي كنيم.
لازم به ذكر است كه SIM20 داراي قابليت Remote Configuration است كه از طريق آن مي توان يك ماژول را از طريق يك ماژول ديگر از راه دور پيكره بندي كرد.

مشخصات فني اين ماژول در پيوست موجود است.

ravegoat
19-03-12, 11:40
هر ماژول SIM20 در شبكه ي وايرلس خود يك گره (node) محسوب مي شود كه داراي مشخصات زير است:


<sn> : شماره سريال يكتا و ثابت (Serial number)

شماره سريال 15 كاركتري بوده كه براي هر ماژول مقداري يكتا و تغيير ناپذير است.



<sid> : شناسه ي گره (Local ID)

عددي صحيحي بين 0 تا 254 بوده كه يك گره را از گره ي ديگر در يك شبكه متمايز مي كند. مقدار پيش فرض آن براي هر ماژول 1 است.



<cid> : شناسه ي شبكه (Network ID)

شناسه ي شبكه اي است كه ماژول بايد در آن قرار گيرد. مقدار آن عددي بين 0 تا 255 بوده و مقدار پيش فرض آن براي هر ماژول 1 است.



<did> : شناسه ي گره مقصد (Destination ID)

شناسه ي محلي (SID) گره اي است كه ماژول ما قصد دارد به آن متصل مي شود. در صورتي كه DID را برابر 255 قرار دهيم، ماژول ما مي تواند با هر ماژول ديگري ارتباط برقرار كند. به طور پيش فرض DID برابر 255 است.



<datar> : نرخ تبادل بيسيم اطلاعات (Air Data Rate)

نرخ تبادل داده هاي بين گره ها را تعيين مي كند. مقدار آن عددي صحيحي بين 0 تا 7 است كه ارزش 0 مربوط به نرخ 2400bps و ارزش 7 مربوط به نرخ 128000bps است. مقدار پيش فرض آن 2 معادل 9600bps است.



<cha> : شناسه ي كانال فركانس راديويي (RF Channel ID)

تعيين كننده كانال ارتباطي است. تعداد كانال هاي موجود بستگي به مدل ماژول و DataR دارد؛ مثلا“ براي مدل C و DataR=2 60 كانال موجود است كه مي توان بين 0 تا 59 يكي را برگزيد. به طور پيش فرض كانال انتخابي 0 خواهد بود.


يك ماژول SIM20 با يك ماژول SIM20 ديگر ارتباط برقرار مي كند اگر پارامتر هاي CID، DataR و Cha هر دوي آن ها با هم برابر باشد. پس حداكثر تعداد شبكه اي كه مي توان ايجاد كرد به اين شرح است:




Network capacity = NCID x NDataR x NCha




6638
حداكثر تعداد گره هاي موجود در هر شبكه مي توانند 255 عدد باشد.
نحوه ي پيكره بندي يك ماژول SIM20 در پيوست موجود است (مبناي كار نسخه ي 1.01 بوده است.).

ravegoat
19-03-12, 11:59
براي برنامه نويسي ماژول SIM20 از VB.NET استفاده مي كنيم. ابتدا يك كاپوننت SerialPort را بر روي فرم اصلي برنامه قرار مي دهيم و مقدار BaudRate آن را از طريق پنجره ي Propeties برابر 115200 تعيين مي كنيم.
كد زير در صورت قطع بودن اتصال SerialPort1، نام پورت اتصال را از راه TextBox1 دريافت كرده و اتصال را آغاز مي كند. در صورت وصل بودن ارتباط، كد اتصال را قطع مي كند:


Try


If SerialPort1.IsOpen = False Then

SerialPort1.PortName = TextBox1.Text


SerialPort1.Open()

Else


SerialPort1.Close()


End If

Catch ex As Exception

MsgBox(ex.Message, 48)

End Try





AT Command براي ارسال داده (حداكثر 60 بايت):


AT+SRDSEND=<DID>,”YOUR DATA HERE”



تابع ارسال فرمان:


Sub CommandSender(ByVal DestID As Byte, ByVal command As String)
Try
'Chr(13) = Enter Key ; Chr(34) = "
SerialPort1.WriteLine("AT+SRDSEND=" + CStr(DestID) + "," + _
Chr(34) + command + Chr(34) + Chr(13))
Catch ex As Exception
MsgBox(ex.Message, 48)
End Try
End Sub




تابع پيكره بندي:


Sub ModConfig(ByVal SID As Byte, ByVal CID As Byte, ByVal CHA As Byte _
, ByVal DATAR As Byte, ByVal DID As Byte)
SerialPort1.WriteLine("AT+SRDSID=" + CStr(SID) + Chr(13))
SerialPort1.WriteLine("AT+SRDCID=" + CStr(CID) + Chr(13))
SerialPort1.WriteLine("AT+SRDCHA=" + CStr(CHA) + Chr(13))
SerialPort1.WriteLine("AT+SRDDATAR=" + CStr(DATAR) + Chr(13))
SerialPort1.WriteLine("AT+SRDDID=" + CStr(DID) + Chr(13))
End Sub





تابع تغيير CID به صورت Remote:


Sub RCIDConf (ByVal DID As Byte, ByVal CID As Byte)
SerialPort1.WriteLine("AT+SRDDID=" + CStr(DID) + Chr(13))
SerialPort1.WriteLine("AT+SRDCONREMOTE=1" + Chr(13))
SerialPort1.WriteLine("AT+SRDCID=" + CStr(CID) + Chr(13))
SerialPort1.WriteLine("AT+SRDCONREMOTE=0" + Chr(13))
End Sub




ست كامل فرمان هاي ماژول پيوست شده است.

crystalmethod
23-03-12, 17:18
با تشکر از مطالب فوق العاده شما
من با یک میکروکنترلر xmega میخواهم با ماژول ارتباط سریال برقرار کنم سئوالات زیر را لطفا پاسخ دهید
نرخ پیش فرض چیست؟
پایه NRST در چه حالتی باید باشد؟

ravegoat
23-03-12, 22:23
با تشکر از مطالب فوق العاده شما
من با یک میکروکنترلر xmega میخواهم با ماژول ارتباط سریال برقرار کنم سئوالات زیر را لطفا پاسخ دهید
نرخ پیش فرض چیست؟
پایه NRST در چه حالتی باید باشد؟

دوست گرامي، عضويت شما رو در SSA تبريك مي گم:party:

خواهش مي كنم...

بنده اون قدر ها در مورد ارتباط مدار ميكرو با SIM20 اطلاع ندارم و شايد نتوم زياد دقيق راهنماييتون كنم.

نرخ تبادل داده تحت COM توسط شركت سازنده 9600 پيشنهاد شده كه البته براساس تجربه هايي كه وجود داشته، ما نرخ 115200 رو پيشنهاد كرديم. نرخ تبادل بيسيم هم مقدارش 2 (معادل 9600) است كه مناسب به نظر مياد و در حالت كلي بهتره تغيير داده نشه.

پايه ي NRST جز پورت هاي ورودي براي كنترل ماژول هستش و براي RESET كردن ماژول به كار ميره. براي اطلاعات بيش تر هم مي تونيد به فايل پيوست شده مراجعه كنيد.

موفق باشيد
آرمين