ايران ويج

نسخه‌ی کامل: مشکل ارسال sms با mega32
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3 4 5 6
سلام دوست عزیز
بینهایت ممنون

پ.ن: من از ماژول SIM900 TE-C استفاده میکنم

اینو یادم رفت از شما بپرسم
به پیشنهاد یکی از دوستان
برای تامین برق ماژول از یک دیود 4007 در سر راه برق 5 ولت استفاده کردم تا ولتاژ را به 4.3 برسونه
آیا این کار ماژول را خراب نمیکنه و میشه با یک دیود کار یک مدار پیچیده رگولاتوری را انجام داد

پ.ن: میدونید که دیودها حدود 700 میلی ولت (گروه 4001 تا 4007 و 5400 تا 5408...) خروجیشون از ورودیشون
ولتاژ کمتری دارند
پس آیا میشه دیودرا به رگولاتور 5 ولتی که برای میکرو قرار دادیم وصل کنیم و ولتاژ 4.3 برای ماژول تولید کنیم
این دوستم میگه دو سالیست با این روش از یک ماژول سیم 300 داره استفاده میکنه...
سلام.خواهش میکنم.

بله میتونید از 1n4007 هم استفاده کنید و برای جریان لحظه ای ماژول هم از خازن استفاده کنید.من هم از این روش استفاده کردم و جواب گرفتیم ولی احتمال اینکه اذیت بشید خیلی زیاده چون منو خیلی اذیت کرد و اخر مجبور شدم با lm2576 تغذیه رو تامین کنم.

دلیلش هم اینه که پشت سر هم بعضی مواقع ماژول قاطی میکنه پیغام اینو میفرسته که ولتاژ ماژول کم هست یا زیاده.اگر تصمیم دارید با میکرو باهاش ارتباط برقرار کنید نه با کامپیوتر بهتره به فکر ساخت یه تغذیه بهتر باشید تا رگولاتورهای خطی...
سلام دوست عزیز
ممنون میشم اگر یک مدار رگولاتور دقیق برام قرار بدید
اگر زحمتی نیست
سلام.
این PCB که کشیدم با پروتل DXP میتونید ورودی رو به 19-24 ولت وصل کنید.مثلا من از شارژر لپ تاپ استفاده کردم که 19.5 بود.
سلام دوست عزیز
بینهایت ممنون

دوست عزیز تونستم با ماژول SMS را دریافت کنم
دوست عزیز, SMS دریافتی بر روی LCD 16×2 , نوشته ها تند و تند پشت سر هم شماره تاریخ و... نمایش داده میشه
حلا اگر بخواهیم اینها از هم تفکیک بشن و با یک دیلی معین
نماش داده بشن و هر کدوم داخل یک متغییر جداگانه (از نوعString) ریخته بشه چی کار باید بکنم

مثلا شماره ریخته بشه تو متغییر N
تاریخ ریخته بشه تو متغییر D
ساعت ریخته بشه در متغییر T
متن SMS ریخته بشه داخل متغییر S

و در آخر برنامه کل SMS های توی حافظه یا سیم کارت را پاک کنه و اماده بشه برای دریافت SMS بعدی
میتونید راهنماییم کنید؟
با تشکر


بی زحمت همین برنامه را میتونید کمی کاملترش کنید:


کد:
[align=left]

$regfile = "m8def.dat"
$crystal = 8000000
$baud = 9600

'~~~~~~~~~~~~~~~~~~~~~~~~~~ Configurations ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Config Lcd = 16 * 2
Config Lcdpin = Pin , Rs = Portb.5 , E = Portb.4 , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Input ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Config Pinc.5 = Input

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Variable ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Dim B As Byte
Dim Sms As String * 250 : Sms = ""

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ initionaliz ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Cursor Off

Wait 3
Set Portc.5
Waitms 60
Reset Portc.5

Cls
Locate 1 , 1
Lcd "On GSM"
Wait 2

Cls
Locate 1 , 1
Lcd "Get SMS..."
Wait 3

Cls

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Main program ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Do


Print "AT+CMGR=1"

Sms = ""

Do

B = Inkey()

Select Case B

Case 0:

Case 13 :

If Sms <> "" Then Exit Do

Case 10 :

If Sms <> "" Then Exit Do

Case Else

Sms = Sms + Chr(b)

End Select

Loop

Home
Lcd Sms


Loop

End[/align]
[hr]
در مورد برنامه ارسال sms :
اس ام اس ارسال میکنه ولی دو اشکال داره:


1 : SMS را پشت سر هم ارسال میکنه و تشخیص نمیده ارسال شده: آیا می تونید دستوری در برنامه اضافه کنید که بعد از ارسال SMS تشخیص بده و
از حلقه خارج شده و از برنامه خارج بشه؟

2: متن SMS ارسالی (همون طور که در برنامه مشخصه) باید فقط GSM Module Test باشه ولی به صورت زیر ارسال شده و کلی چیزای
دیگه همراهش ارسال میشه؟

متن SMS ارسالی از برنامه (ماژول) به گوشی:

کد:
AT
AT+CMGF=1
AT+CMGS=
"09********"
gsm mODULE tEST
sENDER:
gSM
+98933******

------------------------------------------
این هم سورس برنامه:

کد:
[align=left]
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 9600
'~~~~~~~~~~~~~~~~~~~~~~~~~~~ LCD ~~~~~~~~~~~~~~~~~~~~~~~~~~
Config Lcd = 16 * 2
Config Lcdpin = Pin , Rs = Portb.5 , E = Portb.4 , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3

'~~~~~~~~~~~~~~~~~~~~~ Configurations ~~~~~~~~~~~~~~~~~~~~~
Config Pinc.5 = Input
'~~~~~~~~~~~~~~~~~~~~~~ Main program ~~~~~~~~~~~~~~~~~~~~~~
Cursor Off

Wait 3
Set Portc.5
Waitms 60
Reset Portc.5

Cls
Locate 1 , 1
Lcd "On GSM"
Wait 2

Cls
Locate 1 , 1
Lcd "Sending..."
Wait 3


Do

Print "AT"
Waitms 500
Print "AT+CMGF=1"
Waitms 500
Print "AT+CMGS=" ; Chr(34) ; "0936××××" ; Chr(34)
Waitms 100
Print "GSM Module Test" ; Chr(26)
Waitms 600


Loop

End[/align
]
(۱۱-فروردین-۱۳۹۱, ۱۶:۰۰:۲۲)sina1359 نوشته است: [ -> ]سلام دوست عزیز
بینهایت ممنون

دوست عزیز تونستم با ماژول SMS را دریافت کنم
دوست عزیز, SMS دریافتی بر روی LCD 16×2 , نوشته ها تند و تند پشت سر هم شماره تاریخ و... نمایش داده میشه
حلا اگر بخواهیم اینها از هم تفکیک بشن و با یک دیلی معین
نماش داده بشن و هر کدوم داخل یک متغییر جداگانه (از نوعString) ریخته بشه چی کار باید بکنم

مثلا شماره ریخته بشه تو متغییر N
تاریخ ریخته بشه تو متغییر D
ساعت ریخته بشه در متغییر T
متن SMS ریخته بشه داخل متغییر S

و در آخر برنامه کل SMS های توی حافظه یا سیم کارت را پاک کنه و اماده بشه برای دریافت SMS بعدی
میتونید راهنماییم کنید؟
با تشکر


بی زحمت همین برنامه را میتونید کمی کاملترش کنید:

سلام.
تنها راهی که واسه تفکیک متن هست استفاده از دستورات کار با رشته ها هست.
مثلا من این فانکشن رو واسه جداسازی شماره تماس گیرنده نوشتم چون فقط همینو لازم داشتم.شما با یه تغییر کوچک میتونید هر چیزی رو که بخواید از متن SMS جدا کنید :

کد php:
Function Getnum(As String) As String
Dim Shoro 
As Integer Tool As Integer Payan As Integer
Dim Tmp 
As String 20
Shoro 
Instr("+98")
Payan Instr(shoro "," )
Tool Payan Shoro
Mid
(Payan Shoro)
Tmp Mid(Shoro Tool)
Tmp Ltrim(tmp)
Tmp Rtrim(tmp)
Getnum Tmp
End 
Function 

پارامتر دریافتی یا S متن sms دریافتی هست و مفدار بازگشتی از تابع همون شماره تلفن فرستنده SMS.

برای پاک کردن کردن کل inbox هم باید از دستور :

کد php:
Print "AT+CMGS=" Chr(34) ; "DEL ALL"Chr(34

استفاده کنید.




(۱۱-فروردین-۱۳۹۱, ۲۱:۱۷:۱۰)sina1359 نوشته است: [ -> ]در مورد برنامه ارسال sms :
اس ام اس ارسال میکنه ولی دو اشکال داره:


1 : SMS را پشت سر هم ارسال میکنه و تشخیص نمیده ارسال شده: آیا می تونید دستوری در برنامه اضافه کنید که بعد از ارسال SMS تشخیص بده و
از حلقه خارج شده و از برنامه خارج بشه؟

2: متن SMS ارسالی (همون طور که در برنامه مشخصه) باید فقط GSM Module Test باشه ولی به صورت زیر ارسال شده و کلی چیزای
دیگه همراهش ارسال میشه؟

برای تشخیص اینکه متن ارسال شده یا نه باید تو یه حلقه for مثلا 5 تا کارکتر رو بگبربد اگر تو این کارکتر ها کلمه ok رو ماژول فرستاد میفهمیم که متن ارسال شده.
مفاومت پول آپ رو گزاشتین؟ شاید مشکل از اینجا باشه که دستورات AT رو هم ارسال میکنه!
سلام دوست عزیز
بینهایت ممنون
باز بهتون زحمت دادم

پ.ن: دوست عزیز اون سری که فرمودید پول
فکر کردم منظورتون از پول ,اسپریهای پلی استر برای جلوگیری از کنده شدن سیمهاست
من متوجه نشدم مقاومت پول آپ چیه؟
میتونید زحمت بکشید و توضیح بدید
اگر عکس هم بگذارید که خیلی خیلی ممنون میشم
با تشکر

دوست عزیز من تا به حال با تفکیک متن آرایه ها کار نکردم
راستش زیاد هم از این فانکشن سر در ناوردم
بسیار هم شما زحمت کشیدید , ببخشید که من متوجه نشدم

راستش من هم همون شماره تلفن برام کافیه
اگر دوست داشتید و زحمتی نبود:
برنامه دریافتی SMS که در بالا قرار دادم
این فنکشن را خودتون (بی زحمت) به اون برنامه اضافه کنید
تا اگر خدا بخواد بتونم از اون استفاده کنم
خیلی خیلی ممنون
(۱۲-فروردین-۱۳۹۱, ۲۲:۱۸:۲۰)sina1359 نوشته است: [ -> ]
من متوجه نشدم مقاومت پول آپ چیه؟

این صفحه رو مشاهده کنید.
Pull-up_resistor
سلام
تقریبا متوجه شدم پول آپ چیه
قبلا برای ورودی پورتهای میکرو از اون استفاده میکردم ویا برای MMC
اما در این مدار دقیقا نمیدونم به کجا و با چه رنجی از مقاومت این کارا بکنم
اگر زحمتی نیست در یک عکس دو پایه RXD ,TXD را با مقاومت پول آپ نمایش دهید ممنون میشم
اگر مشکل من این باشه که خیلی خوبه
یک نکته که داشتم بهش فکر میکردم:
خروجی میکرو مگر 5 ولت نیست و ماژول هم 4.3 ولت
پس میتونه اتصال این دو به هم , به ماژول صدمه بزنه
سلام.

بهتره میکرویی که استفاده میکنید سری A (همون سری L قدیمی رو با سری A تولید میکنند) باشه که با 2.8 تا 5 کار میکنه و تغذیه میکرو و ماژول رو بتونید یکی قرار بدین.
الان که نگاه کردم شما دارید از SIM900 TE-C استفاده میکنید و به نظرم پایه RX خودش پول داده شده.اگر میشه یه عکس از ماژول که استفاده میکنید بزارید به نظرم اینی که شما دارید با برده راه انداز هست؟!

راستی در مورد دستورات فانکشن :

کد php:
Dim Shoro As Integer Tool As Integer Payan As Integer
Dim Tmp 
As String 20
Shoro 
Instr("+98")
Payan Instr(shoro "," )
Tool Payan Shoro
Tmp 
Mid(Shoro Tool)
Tmp Ltrim(tmp)
Tmp Rtrim(tmp)
Getnum Tmp 

دستور instr محل قرار گرفتن +98 رو توی آرایه sms پیدا میکنه و میریزه تو متغیر shoro که همان شروع جداسازی هست.
و چون قراره تا کارکتر "و" رو جدا کنیم محل اونو هم با همین دستور بدست میاریم و تو متغیر Payan میریزیم.
حالا payan-shoro هم میشه تول شماره تماس که تو متغیر tool میریزیم.(هر چند میشد shoro رو پیدا کرد و tool رو 14 قرار داد چون طول شماره موبایل 14 رقم هست)
حالا با دستور MID رشته s رو از نقطه شروع به طول Tool جدا میکنیم و تو متغیر Tmp میریزیم.
پس متغیر Tmp حامل شماره تماس SMS دریافتی هست.
صفحه‌ها: 1 2 3 4 5 6