Προς το περιεχόμενο

Sim900 Arduino


ilcamorista7

Προτεινόμενες αναρτήσεις

1 ώρα πριν, ilcamorista7 είπε

Παιδιά θέλω μια μικρή βοήθεια. Θέλω να μου στέλνει το sim900 τα at commands..

Ας πούμε πόσο σήμα έχει το module.

Μπορεί κάποιος να Μ γράψει τον κώδικα;

Sorry, αλλά δεν θες βοήθεια. Θέλεις κάποιον να το κάνει αντί για εσένα. Αυτό δεν είναι βοήθεια αλλά εργασία. 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Καλημέρα !

Δεν γνωρίζω πολλά περί arduino, όμως βλέπω ότι η παρακάτω σελίδα έχει ένα αναλυτικό παράδειγμα κώδικα ακριβώς γι' αυτό που ζητάς. Υπάρχει δηλαδή κώδικας ώστε το συγκεκριμένο module του arduino να στέλνει τα sms που θέλεις στον αριθμό που θέλεις. Μόνο που θα ήθελα να προσέξεις 3 πράγματα :

- Τα νούμερα όπου θα σταλούν τα SMS πρέπει να μπαίνουν σε διεθνή μορφή, δηλ. με το +30 μπροστά.

- Πρέπει αρχικά να χρησιμοποιείς την εντολή delay() ώστε να δίνεις τον αναγκαίο χρόνο στο module, ώστε να συνδέεται στο δίκτυο GSM.

- Πρέπει να απενεργοποιήσεις το "κλείδωμα" της κάρτας SIM μέσα απ' τις ρυθμίσεις του κινητού πριν τη χρησιμοποιήσεις. Πρέπει δηλ. η κάρτα να μη ζητάει PIN όταν ανοίγει, ώστε να μπορεί να δουλέψει με το συγκεκριμένο module.

Αυτά είναι τα τρία πιο συχνά λάθη που γίνονται όταν χρησιμοποιείται το Sim900. Η σελίδα είναι :

https://randomnerdtutorials.com/sim900-gsm-gprs-shield-arduino/

Να είσαι καλά,

Ο Άσπρος Γάτος

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Ασπρε γατε

ευχαριστω που τα εγραψες, βεβαια τα γνωριζω αυτα. Αλλα καλο ειναι να υπαρχουν γραμμενα (στο sim900 θελει αρκετο delay για να εισαι σιγουρος.. ας βαζετε κ 10000 κ 20000).

@DrKo αυτο που ζητουσα ειναι να μ πει καποιος πως απο το serial monitor θα στειλω την AT COMMAND στο κινητο.

Τελικα η απαντηση ειναι οτι δηλωνεις variable μολις το διαβασει στο serial κ στο μηνυμα του sim900 γραφεις το ονομα της μεταβλητης.

στην περιπτωση μου ειναι αυτο airtime = SIM900.print("AT+CSQ");  "Να εχετε δηλωσει τη μεταβλητη στην αρχη...!!!

Δε ζητησα να μου δωσουν κωδικα, αν και οπως το εχω διατυπωσει ειναι αλλα ντ αλλα.. σορρυ

Επεξ/σία από ilcamorista7
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

3 ώρες πριν, ilcamorista7 είπε

στην περιπτωση μου ειναι αυτο airtime = SIM900.print("AT+CSQ");  "Να εχετε δηλωσει τη μεταβλητη στην αρχη...!!!

Χωρίς να ξέρω τι βιβλιοθήκη χρησιμοποιείς, μπορώ να υποθέσω όμως ότι αυτό που γράψεις θα σου επιστρέψει τον αριθμό των bytes που έστειλες στην software serial. Δηλαδή 6....

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν μας λες ούτε τα βασικά όμως. 

ποιά βιβλιοθήκη χρησιμοποιείς;

τι έχεις κάνει ως τώρα ;

πως έχουν γίνει οι συνδέσεις. 
δείγμα κώδθκα που έχεις γράψει. 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

#include <SoftwareSerial.h>
//Create software serial object to communicate with SIM900
SoftwareSerial SIM900(7, 8); //SIM900 Tx & Rx is connected to Arduino #7 & #8
// kodikas aisthitira vroxis MH-RD
const int capteur_D = 4;
const int capteur_A = A0;
int val_analogique;
// TELOS kodikas aisthitira vroxis MH-RD
void setup()
{
  //Begin serial communication with Arduino and Arduino IDE (Serial Monitor)
  Serial.begin(9600);
  
  //Begin serial communication with Arduino and SIM900
  SIM900.begin(9600);

  Serial.println("Initializing..."); 
  delay(1000);

  SIM900.println("AT"); //Handshaking with SIM900
  updateSerial();
 SIM900.println("AT+CSQ"); //Handshaking with SIM900
  updateSerial();
  SIM900.println("AT+CMGF=1"); // Configuring TEXT mode
  updateSerial();
  SIM900.write(26);

  // kodikas aisthitira vroxis MH-RD
{
  pinMode(capteur_D, INPUT);
  pinMode(capteur_A, INPUT);
  Serial.begin(9600);}
// TELOS kodikas aisthitira vroxis MH-RD
}

void loop()
{// kodikas aisthitira vroxis MH-RD
{if(digitalRead(capteur_D) == LOW) 
  { Serial.println("Digital value : wet"); 
    delay(10);}
else
  { Serial.println("Digital value : dry");
    delay(10);  }
val_analogique=analogRead(capteur_A); 
 Serial.print("Analog value : ");
 Serial.println(val_analogique); 
 Serial.println("");
  delay(1000);}
// TELOS kodikas aisthitira vroxis MH-RD
 //kodikas sim 900
{SIM900.begin(19200);;
  // Give time to your GSM shield log on to network
  delay(10000);     
  // Send the SMS
  sendSMS();}
// TELOS kodikas sim 900
}

void updateSerial()
{
  delay(500);
  while (Serial.available()) 
  {
    SIM900.write(Serial.read());//Forward what Serial received to Software Serial Port
  }
  while(SIM900.available()) 
  {
    Serial.write(SIM900.read());//Forward what Software Serial received to Serial Port
  }
}

//kodikas sim 900
void sendSMS() {
  //****kodikas gia to sima
   //Storing credit balance details in airtime variable
  delay(500);
  //****TELOSkodikas gia to sima
  while (Serial.available()) 
  {
    SIM900.write(Serial.read());//Forward what Serial received to Software Serial Port
  }
  while(SIM900.available()) 
  {
    Serial.write(SIM900.read());//Forward what Software Serial received to Serial Port
  }
  delay(20000);
  // AT command to set SIM900 to SMS mode
  SIM900.print("AT+CMGF=1\r"); 
  delay(100);

  // REPLACE THE X's WITH THE RECIPIENT'S MOBILE NUMBER
  // USE INTERNATIONAL FORMAT CODE FOR MOBILE NUMBERS
  SIM900.println("AT+CMGS=\"+306976788186\""); 
  delay(100);
  
  // REPLACE WITH YOUR OWN SMS MESSAGE CONTENT
  {SIM900.println(val_analogique);
  SIM900.println("AT+CSQ"); //Signal quality test, value range is 0-31 , 31 is the best

  delay(100);}

  // End AT command with a ^Z, ASCII code 26
  SIM900.println((char)26); 
  delay(100);
  SIM900.println();
  // Give module time to send SMS
  
}
// TELOS kodikas sim 900

@nkarama  στο μηνυμα μου ερχεται κανονικα η ενδειξη var_analogique ,αλλα αντι να μου ερθει η τιμη του σηματος μ ερχεται κειμενο AT+CSQ.

τι πρεπει να κανω για να παρω τον αριθμο του σηματος σε μηνυμα?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Οπότε χρησιμοποιείς Softwareserial, αρα όντως η υπόθεσή μου ότι θα σου επιστρέψει τον αριθμό των χαρακτήρων είναι σωστή.

Επειδή απο τον κώδικα, που βλέπω και είναι συραφή καταλαβαίνω ότι δεν γνωρίζεις και πολλά ακόμα, θα πρότεινα να ψάξεις να βρεις κάποια έτοιμη βιβλιοθήκη για το SIM900 που να έχει αυτή την δυνατότητα. Δεν γνωρίζω κάποια δυστηχώς για να σου προτείνω...

Διαφορετικά, αν θες να το κάνεις με την softwareSerial, θα πρέπει να κάνεις τα εξής:

  • Δίνεις την SIM900.println("AT+CSQ");
  • Η μοντούλα θα επιστρέψει στην softwareserial μια απάντηση. Θα πρέπει να φτιάξεις μια ρουτίνα που να διαβάσει την softwareSerial, να την κάνεις parse και μετά να κόψεις το κομάτι της απάντησης που θες, να το φορτώσεις σε μια μεταβλητή.
  • Μετά στέλνεις την μεταβλητή αυτή κανονικά μεσα στο SMS όπως στέλενις και την var_analogique

Υπάρχουν διάφορες εντολές που θα σε βοηθήσουν. Δες το documentation της softwareSerial βιβλιοθηκης  https://www.arduino.cc/en/Reference/softwareSerial . Επίσης θα πρέπει να γνωρίζεις ακριβώς πως απαντάει η μοντούλα όταν της στέλνεις την εντολή... Υπάρχει κενή γραμμή πριν? Υπάρχουν χαρακτήρες CR και LN ή μόνο CR. Και άλλα τέτοια ώστε να μπορείς να την κάνεις σωστά parse. 

 

 

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...