0
Αυτο που σου ειπα να κανεις μπορεις και να το προσομοιώσεις.
Βάλε ενα μεγάλο delay πριν ζητήσεις το CSQ και κανε μια διακοπή τροφοδοσίας στο modem.
προσεθεσα τα παραπανω στον κωδικα προκειμενου να κανω επανεκινηση στο μοντεμ μεσω μιας εξοδου η οποια τριγκαρει ενα μοσφετ ωστε να διακοπει και να επανατροφοδοτηθει το μοντεμ...void setup(void) {
mySerial.begin(115200); // Setting the baud rate of GSM Module
Serial.begin(115200); // Setting the baud rate of Serial Monitor (Arduino)
Power_UP();
delay(2000);
}
void Power_UP()
{
Serial.println("Starting GSM ...");
pinMode(9, OUTPUT);
digitalWrite(9,HIGH);
delay(1000);
digitalWrite(9,LOW);
delay(2000);
digitalWrite(9,HIGH);
delay(3000);
// anamoni gia apantisi gsm
{
while(mySerial.available() != 0) { Serial.read(); }
mySerial.println("AT+CSQ");
delay(500);
while(mySerial.available()!=0 && incoming_byte_counter < (SigQ_Len-2))
{
temp=mySerial.read();
Serial.write(temp);
if((temp >= '0' && temp <= '9') || (temp == '.') || (temp == ',')) {
SigQ[i++] = temp;
SigQ[i]= 0x00;
}
incoming_byte_counter++;
}
SigQ[SigQ_Len-1]= 0x00; /* Secure is NULL terminated */
}
Serial.println("GSM ready ...");
}
εκανα μια δοκιμη και φαινεται οτι θα λυθει το θεμα....περισσοτερες δοκιμες θα γινουν με την ζυγαρια οταν σε λιγες μερες θα κανει διαλειμα η σεζον.....
θα επανελθω με αποτελεσματα....ευχαριστω ολους
καλημερα σε ολους και καλες γιορτες με υγεια...
για να μην ανοιγω νεο θεμα θα ηθελα μια μικρη βοηθεια σε ενα θεμα ...
προσπαθω μεσω softwareSerial να κανω μια αναπαντητη στο μοντεμ και να μου στειλει ενα μυνημα...
το μοντεμ λειτουργει κανονικα και βλεπω μεσω τερματικου τα RING απο την κληση ...το θεμα μου ειναι οτι δεν τερματιζει την κληση στο πρωτο RING ωστε να στειλει το μυνημα...παραθετω τον κωδικα και οποιος μπορει ας βοηθησει
#include <SoftwareSerial.h>
SoftwareSerial mySerial(7, ;
String instr="";
int ring=0;
int i=0,temp=0;
void setup()
{
Serial.begin(115200);
mySerial.begin(115200);
Serial.println("Initializing...");
delay(1000);
mySerial.println("AT"); //Once the handshake test is successful, it will back to OK
updateSerial();
}
void loop()
{
updateSerial();
serialEvent();
if(ring==1)
{
Serial.println("ATH");
delay(500);
}
sms();
}
void sms(){
mySerial.println("AT+CMGF=1");
updateSerial();
mySerial.println("AT+CMGS="+30698xxxxx"");
updateSerial();
mySerial.print("test message"); //text content
updateSerial();
mySerial.write(26);
}
void serialEvent()
{
while(Serial.available())
{
char ch=Serial.read();
instr+=ch;
i++;
if(instr[i-4] == 'R' && instr[i-3] == 'I' && instr[i-2] == 'N' && instr[i-1] == 'G' )
{
ring=1;
}
if(instr.indexOf("NO CARRIER")>=0)
{
ring=0;
i=0;
}
}
}
Τελευταία επεξεργασία από το χρήστη stinger : 26-12-21 στις 11:11