درود بر کسانی که دعا دارند و ادعا ندارند
نیایش دارند و نمایش ندارند
حیا دارند و ریا ندارند
رسم دارند و اسم ندارند…
از وقتی که میذارید ممنونم
عکسای ماژول تو لینک زیر هست کیفیتشم خوبه
ماژول GSM چهار باند SIM800L با قابلیت GPRS / GSM / SMS
آقای زارع عزیز برادر من جهت تست سالم بودن ماژول از یه تبدیل TTL به usb استفاده کن. وقتت رو هدر نده منم همین مشکل رو داشتم حتی رفتم یه ماژول دیگه خریدم مشکلم برطرف نشد حالا دارم رو کد نویسی کار میکنم. یا اینکه کدی که دوست عزیزمون magmag گذاشت به عنوان کد بالا من تست کردم با همین ماژول هم تماس خروجی داشته هم ارسال پیامک اگر مشکل داشتی تو اینها با یک ماژول دیگه تست کن.
یعنی ایراد از ماژول بود ؟ چند مورد دار داشتین
مهندس جان این ماژول رگولاتور نداره پس باید از منبع تغذیه 3.3 و با جریان حداقل 1 و حداکثر 2 استفاده کنید. مراقب باش اشتباهی هم نزنی چون دیود محافظ نداره. بعد tx ماژول را به rx مبدل یو اس و بلعکس وصل کن
سپس ماژول را به کامیپوتر متصل کند و زمین منبع تغذیه را با زمین یو اس بی یکی کن و +3.3 منبع تغذیه را به vcc ماژول
یادت باشه قبل از هرچیز آنتن به ماژولت بزنی... بعد که این کار ها را کردی برنامه آردوینو را باز کن و برو تو تنظیمات قسمت پورت ، پورت کام که مبدل بهش وصله را مشخص کن و انتخاب کن سپس برو قسمت ترمینال مانیتور آردوینو و دستور AT را بزن اگه جواب ok داد سالمه اگه نوشته دیگه که قابل خواندن بود داد سرعت سریال را تغییر بده و تست کن .
اگه منبع 3.3 با جریان 1 تا 2 نداری می تونی از 3.3 خود مبدل استفاده کنی تو سیم 900 جواب داد . تو سیم 800 را باید تست کنید
درود بر کسانی که دعا دارند و ادعا ندارند
نیایش دارند و نمایش ندارند
حیا دارند و ریا ندارند
رسم دارند و اسم ندارند…
دوستان مسایلی که فرمودید رو قبلا چک کردم البته ماژول من از3,7 تا4,2 روشن میشه البته جوری که تو data sheet نوشته اگرم بیشتر بدی تا 5v الارم میده ولی من تو رنج تغذیش کردم در مورد usb to com هم یه بار دیگه چک کردم دستور AT رو که میزنم همون AT رو میاره پایین مینویسه و جواب نمیده دوستان اگه تست خاص سخت افزاری یا سیگنال چک هم به ذهنتون میرسه بفرمایید انجام بدم وسایل تکمیل همه چیز دارم من خودم مغزم هنگ کرده میترسم یکی دیگه هم بخرم مشکل از خودم باشه نتونم جواب بگیرم در مورد سیم بندی rx tx هم خیالتون راحت چون من اگر درست هم زده باشم وقتی جواب نده برعکس میکنم تست میگیرم
البته یه نکته ای ماژول رو که برام فرستادن دو تا انتن داشت یدونه با کانکتور متصل میشد یدونه هم حالت فنری مونتاژ میشه من فقط کانکتوری رو متصل کردم
مهندس تنهای عزیز من ماژول رو وصل میکنم به اردوینو وقتی کامند میدم عدد میده ولی وقتی با سریال وصل میکنم به کامپیوتر کامندها درست و کامل انجام میشه. میشه لطف کنید بفرمایید چیه مشکل؟ ضمنا بااین کد که magmag mary زحمتشو کشیدن تماس و اس ام اس خروجی دارم . ولی دریافت اس ام اس ندارم. ایا تابعی دارید که مطمین باشین دریافت اس ام اس رو درست انجام میده؟
ویرایش توسط hamed82 : 04-05-2016 در ساعت 05:35 PM
مهندس جان اول اینکه با سریال تونستم اس ام اس هم دریافت کنم با هون کامندی که تو کد دریافت نمیکنه. دوم اینکه این هم خدمت شما کدی که مگ مگ ماری عزیز زحمتشو کشیدن. البته تو این کد به نظرم هیچ کامندی برای دریافت به ماژول ارسال نمیشه.
#include <SoftwareSerial.h>
SoftwareSerial SIM900(2, 3);
#define GSMReset 5
void setup() {
Serial.begin(9600); // for serial monitor
SIM900.begin(9600); // for GSM shield
gsmPower();
gsmConfig();
}
void loop() {
commandDetect();
smsProcess();
}
//************************************************** *******************************
void gsmConfig() {
pinMode(GSMReset, OUTPUT);
sendCommand("AT+CMGF=1\r", 100); // set SMS mode to text
sendCommand("AT+CNMI=2,2,0,0,0\r", 100);
sendCommand("AT+CFUN=1", 2000);
sendCommand("AT+CREG?", 1000);
Serial.println("The end of Config process");
Serial.println("Ensert\n 'd' for dial \n 'e' for english sms \n 'f' for farsi sms");
}
//************************************************** ********************************
void showSms() {
char incoming_char = 0;
if (SIM900.available() > 0)
{
incoming_char = SIM900.read(); //Get the character from the cellular serial port.
Serial.print(incoming_char); //Print the incoming character to the terminal.
}
}
//************************************************** *********************************
void smsProcess() {
char incoming_char = 0;
if (SIM900.available() > 0)
{
incoming_char = SIM900.read();
if (incoming_char == 'H')
{
delay(10);
Serial.print("horaaaaaaaaaaaaaaaaaaay");
}
}
}
//************************************************** *********************************
void gsmPower() {
Serial.println("Turning GSM ON");
digitalWrite(GSMReset, HIGH);
delay(10);
digitalWrite(GSMReset, LOW);
delay(100);
digitalWrite(GSMReset, HIGH);
delay(7000);
Serial.println("config process...");
}
//************************************************** ********************************
void sendCommand(String cmd, int t)
{
SIM900.println(cmd);
delay(t);
readSerial();
}
//************************************************** ************************************
void readSerial() {
while (SIM900.available())
Serial.write(SIM900.read());
}
//************************************************** *********************************
void dialNumber(String number) {
Serial.println("Dialing...");
sendCommand("ATD" + number + ";", 100);
Serial.println("End of Dial process");
delay(2000);
Serial.println("Ensert\n 'd' for dial \n 'e' for english sms \n 'f' for farsi sms");
}
//************************************************** **********************************
void ensms()
{
Serial.println("Sending SMS");
sendCommand("AT+CSCS=\"IRA\"", 200);
sendCommand("AT+CMGF=1", 200);
sendCommand("AT+CSMP=17,167,0,0", 200);
sendCommand("AT+CMGS=\"09331424592\"", 500);
sendCommand("Salam\r\n AftabRayaneh !\x1A", 0);
Serial.println("End of English SMS process");
delay(2000);
Serial.println("Ensert\n 'd' for dial \n 'e' for english sms \n 'f' for farsi sms");
}
//************************************************** **************************************
void farsisms()
{
Serial.println("Sending SMS");
sendCommand("AT+CSCS=\"HEX\"", 100);
sendCommand("AT+CMGF=1", 100);
sendCommand("AT+CSMP=17,167,0,8", 100);
sendCommand("AT+CMGS=\"+09331424592\"", 500);
sendCommand("0633064406270645060C002006220641062A0 627062800200631062706CC062706460647\x1A", 0);
Serial.println("End of Persian SMS process");
delay(2000);
Serial.println("Ensert\n 'd' for dial \n 'e' for english sms \n 'f' for farsi sms");
}
//************************************************** *****************************************
void commandDetect() {
if (Serial.available() > 0)
{
char data = Serial.read();
switch (data)
{
case 'd' : dialNumber("09331424592");
break;
case 'e' : ensms();
break;
case 'f' : farsisms();
break;
}
}
}
ولی کامندی که من فرستادم تو سریال و جواب دادAT+CNMI=1,2,0,0,0 بود. حالا میشه ازتون خواهش کنم با ارتباط سریال نرم افزاری یه تابع دریافت اس ام اس برام بنویسید؟ ولی قبلش خودتون تست کنید و اینجا تو تنجمن پست بگذارید که همه استفاده کنن؟