توی این لینک در مورد پین ریست که پین شماره 12 میشه توضیح داده شده:
GSM GPRS A6 Module - ElectroDragon
نمایش نسخه قابل چاپ
توی این لینک در مورد پین ریست که پین شماره 12 میشه توضیح داده شده:
GSM GPRS A6 Module - ElectroDragon
با عرض سلام وخسته نباشید خدمت همه دوستان عزیز
خدمت دوستان عرض شود که ما دو تا از این ماژول خریدیم و به هیچ عنوان نتوانستیم که راه اندازیش کنیم و همه کارهایی که دوستان در این تاپیک فرمودئند انجام شد ولی راه نیفتاد که نیفتاد.همه اتصالات از جمله سریال و برق رو با همان ماژول پروگرام خود سایت به ماژول وصل کردم و با یه کابل برق رو هم بهش وصل کردم .پاور کی رو هم برای مدت 2 ثانیه برق بهش دادم ولی نشد که نشد اگه دوستان کسی میخواهد کمک کنه مرحله به مرحله کمک کنه لطفا.
دوستان در ضمن یه سوال؟
اگر یکی از این ماژول ها که در سایت موجود هست برای خرید که بدون دردسر و اذیت به آردینو وصل بشود و برنامه نوشته شده آن هم موجود باشد را معرفی بفرمایید یعنی من وصلش کردم به راحتی بتوانم باهاش اس ام اس یزنم و ازش استفاده کنم نه این که با کلی دردسر بخواهم بهش ور بروم باز هم بکار نیفتد
من تصورم اینه که شما این ماژول رو خریداری کردید :
ماژول GPRS / GSM چهار باند A6 دارای ارتباط سریال - پشتیبانی از AT Command
مراحل راه اندازی :
1.سیم کارت رو بندازید روش
2. اتصالت رو به پروگرامر به صورت زیر انجام بدید :
مبدل ماژول GND GND TX RX RX TX
2. با میکرو USB بهش پاور بدید .
3. از پین VCC اش یه انشعاب بگیرید و به پین PWR اش برای مدت 2 ثانیه وصل کنید و بعد از اون رها کنید.
4. کنسول سریال رو باز کنید و تنظیمات رو روی بادریت 115200 و تنظیم زیر انجام بدید:
فایل پیوست 3111
بعد از این با اولین AT باید OK برگردونده بشه .
با سلام
ضمن تشکر از راهنماییهاتون که کارگشا بودو حل شد،قفظ امکان ارسال پیام با دستورات at همچنان نشدوپیام دریافت کردم ولی ارسال هنگ میکندوچندین بار باید ریست شود تا برگرده به حالت عادی.لطفا راهنمایی کنید.
همچنینی اگر کدآماده یا لایبرری خاصی برای کار ازطریق بردهای آردینو اگه وجود دارد معرفی کنید.
ممنون
اول در مورد کد این که این کد باری sim800l هست اما از اونجایی که اکثر کامندها بین ماژول های سیم مشترکه میتونید ازش استفاده کنید:
فقط باید شماره پینهای ارتباط سریال نرم افزاریتون رو عوض کنید.کد:#include <SoftwareSerial.h>
SoftwareSerial SIM800(D2, D1 , 128);
#define GSMReset D3
void setup() {
Serial.begin(9600); // for serial monitor
SIM800.begin(9600); // for GSM shield
gsmPower();
gsmConfig();
dialNumber() ;
}
void loop() {
commandDetect();
}
//*********************************************************************************
void gsmConfig() {
sendCommand("ATZ", 100);
sendCommand("AT+CMGD=1,4", 200);
sendCommand("AT+CMGF=1\r", 100); // set SMS mode to text
sendCommand("AT+CFUN=1", 2000);
sendCommand("AT+CREG?", 1000);
dtmfActive();
anwerCall();
Serial.println("The end of Config process");
Serial.println("Ensert\n 'd' for dial \n 'e' for english sms \n 'f' for farsi sms \n 'h' for HttpRequest \n 's' for Send2Pachube ");
}
//**********************************************************************************
void showSms() {
char incoming_char = 0;
if ( SIM800.available() > 0)
{
incoming_char = SIM800.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 ( SIM800.available() > 0)
{
incoming_char = SIM800.read();
if (incoming_char == 'A')
{
delay(10);
incoming_char = SIM800.read();
if (incoming_char == 'd')
{
delay(10);
Serial.print("horaaaaaaaaaaaaaaaaaaay");
}
}
}
}
//***********************************************************************************
void gsmPower() {
pinMode(GSMReset, OUTPUT);
Serial.println("Turning GSM ON");
digitalWrite(GSMReset, HIGH);
// delay(1100);
//digitalWrite(GSMReset, LOW);
// delay(4000);
Serial.println("Start config process...");
}
//**********************************************************************************
void sendCommand(String cmd, int t)
{
SIM800.println(cmd);
readSerial();
delay(t);
}
//**************************************************************************************
void readSerial( ) {
while (SIM800.available())
{
Serial.write(SIM800.read());
}
}
//***********************************************************************************
void dialNumber() {
Serial.println("Dialing...");
sendCommand("ATD09177102643;", 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 \n 'h' for HttpRequest \n 's' for Send2Pachube ");
}
//************************************************************************************
void ensms()
{
Serial.println("Sending SMS");
sendCommand("AT+CSCS=\"GSM\"", 200);
sendCommand("AT+CMGF=1", 200);
sendCommand("AT+CSMP=17,167,0,0", 200);
sendCommand("AT+CMGS=\"09177102643\"", 500);
sendCommand("Salam\n manam !\x1A", 500);
Serial.println("Englisg SMS Sent");
Serial.println("Ensert\n 'd' for dial \n 'e' for english sms \n 'f' for farsi sms \n 'h' for HttpRequest \n 's' for Send2Pachube ");
}
//****************************************************************************************
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=\"09177102643\"", 500);
sendCommand("0633064406270645060C002006220641062A0627062800200631062706CC062706460647\x1A", 0);
Serial.println("Persian SMS Sent");
Serial.println("Ensert\n 'd' for dial \n 'e' for english sms \n 'f' for farsi sms \n 'h' for HttpRequest \n 's' for Send2Pachube ");
}
//*******************************************************************************************
void commandDetect() {
if (Serial.available() > 0)
{
char data = Serial.read();
switch (data)
{
case 'd' :
dialNumber();
break;
case 'e' : ensms();
break;
case 'f' : farsisms();
break;
case 'h':
SubmitHttpRequest();
break;
case 's':
Send2Pachube();
break;
}
}
}
//******************************************************************************************************
void SubmitHttpRequest()
{
sendCommand("AT+CSQ", 100);
sendCommand("AT+CGATT?", 100);
sendCommand("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"", 1000); //setting the SAPBR, the connection type is using gprs
sendCommand("AT+SAPBR=3,1,\"APN\",\"CMNET\"", 4000); //setting the APN, the second need you fill in your local apn server
sendCommand("AT+SAPBR=1,1", 2000); //setting the SAPBR, for detail you can refer to the AT command mamual
sendCommand("AT+HTTPINIT", 2000); //init the HTTP request
sendCommand("AT+HTTPPARA=\"URL\",\"www.google.com.hk\"", 1000); // setting the httppara, the second parameter is the website you want to access
sendCommand("AT+HTTPACTION=0", 10000); //submit the request
sendCommand("AT+HTTPREAD", 300); // read the data from the website you access
sendCommand("", 100);
delay(2000);
Serial.println("Ensert\n 'd' for dial \n 'e' for english sms \n 'f' for farsi sms \n 'h' for HttpRequest \n 's' for Send2Pachube ");
}
//*************************************************************************************************************************
///send2Pachube()///
///this function is to send the sensor data to the pachube, you can see the new value in the pachube after execute this function///
void Send2Pachube()
{
sendCommand("AT+CGATT?", 1000);
sendCommand("AT+CSTT=\"CMNET\"", 1000); //start task and setting the APN,
sendCommand("AT+CIICR", 3000); //bring up wireless connection
sendCommand("AT+CIFSR", 2000); //get local IP adress
sendCommand("AT+CIPSPRT=0", 3000);
sendCommand("AT+CIPSTART=\"tcp\",\"api.cosm.com\",\"8081\"", 2000); //start up the connection
sendCommand("AT+CIPSEND", 4000); //begin send data to remote server
String humidity = "1031";//these 4 line code are imitate the real sensor data, because the demo did't add other sensor, so using 4 string variable to replace.
String moisture = "1242";//you can replace these four variable to the real sensor data in your project
String temperature = "30";//
String barometer = "60.56";//
sendCommand("{\"method\": \"put\",\"resource\": \"/feeds/42742/\",\"params\"", 500); //here is the feed you apply from pachube
sendCommand(": {},\"headers\": {\"X-PachubeApiKey\":", 500); //in here, you should replace your pachubeapikey
sendCommand(" \"_cXwr5LE8qW4a296O-cDwOUvfddFer5pGmaRigPsiO0", 500); //pachubeapikey
sendCommand("jEB9OjK-W6vej56j9ItaSlIac-hgbQjxExuveD95yc8BttXc", 500); //pachubeapikey
sendCommand("Z7_seZqLVjeCOmNbEXUva45t6FL8AxOcuNSsQS\"},\"body\":", 500);
sendCommand(" {\"version\": \"1.0.0\",\"datastreams\": ", 500);
sendCommand("[{\"id\": \"01\",\"current_value\": \"" + barometer + "\"},", 500);
sendCommand("{\"id\": \"02\",\"current_value\": \"" + humidity + "\"},", 500);
sendCommand("{\"id\": \"03\",\"current_value\": \"" + moisture + "\"},", 500);
sendCommand("{\"id\": \"04\",\"current_value\": \"" + temperature + "\"}]},\"token\": \"lee\"}", 500);
SIM800.println(); ((char)26); //sending
delay(5000);
SIM800.println();
sendCommand("AT+CIPCLOSE", 100); //close the connection
delay(2000);
Serial.println("Ensert\n 'd' for dial \n 'e' for english sms \n 'f' for farsi sms \n 'h' for HttpRequest \n 's' for Send2Pachube ");
}
//******************************************************************************************************************
void dtmfActive() {
sendCommand("AT+DDET=1", 200);
}
//***************************************************************
void anwerCall() {
sendCommand("ATS0=3", 200);
}
void blinkd16(){
pinMode(16,OUTPUT);
digitalWrite(16,HIGH);
delay(100);
digitalWrite(16,LOW);
delay(100);
}
در مورد کامند هم اگر سخت افزار رعایت شده باشه و به پین پاورش هم ولتاژ داده باشید و تنظیمات کنسول رو رعایت کرده باشید تنها نکته ای که میمونه اینه که بادریتش 115200 نباشه
روی بادریت های دیگه هم تست کنید.
دوستان گرامی،
آیا روشی برای چک کردن شارژ سیم کارت در A6 سراغ دارید؟
برای چک کردن شارژ در sim900 می توانستیم از دستور ATD*141*1# استفاده کنیم. اما در A6 اگر این دستور را تایپ کنیم پاسخ +CME ERROR:500 را دریافت می کنیم. این در حالی است که در A6 دستور ATD برای شماره گیری تلفن درست کار می کند. مثلا کافی است که بنویسیم ATD141*1# تا بدون هیچ خطایی شماره گیری کند. اما به مجرد اینکه ستاره را در ابتدای شماره ذکر کنیم خطا می دهد.
من نمیدونم چرا اینقدر مشکلات مزخرف دارن این ماژول ها.
من از A6 میخوام استفاده کنم اما حتی نتونستم ازش تماس بگیرم!!!
فقط تونستم at بدم و ok بگیرم که اونم بعضی وقتا حروف عجیب غریب میده.
واقعا با اینا نمیشه یه پروژه درست درمون نوشت. چرا انقدر محیط نرم افزاری آردوینو مزخرف و ساده هستش؟
دوستان میتونن کمک کنن این مشکلات رو رفع کنم؟مطمئن هستم واسه خیلی های دیگه هم بعدا پیش میاد.
1. چرا حروف عجیب غریب میاد در حالیکه بادریت uno و a6 یکی و برابر 115200 هست؟
2. چرا تماس برقرار نمیشه؟
این دومیه واقعا رو مخمه. 3 تا دونه سیمه و چهار خط کد اما نه تماس به بیرون میگیره نه از بیرون میشه بهش زنگ زد (زنگ میزنم به سیمکارت ماژول میگه دستگاه مشترک موردنظر خاموشه و مرده!!!)
ببخشید دیگه خدایی اعصابمو به هم ریخت:(((((