ilcamorista7 Δημοσ. 6 Απριλίου 2022 Δημοσ. 6 Απριλίου 2022 Παιδιά θέλω μια μικρή βοήθεια. Θέλω να μου στέλνει το sim900 τα at commands.. Ας πούμε πόσο σήμα έχει το module. Μπορεί κάποιος να Μ γράψει τον κώδικα;
DrKo Δημοσ. 6 Απριλίου 2022 Δημοσ. 6 Απριλίου 2022 1 ώρα πριν, ilcamorista7 είπε Παιδιά θέλω μια μικρή βοήθεια. Θέλω να μου στέλνει το sim900 τα at commands.. Ας πούμε πόσο σήμα έχει το module. Μπορεί κάποιος να Μ γράψει τον κώδικα; Sorry, αλλά δεν θες βοήθεια. Θέλεις κάποιον να το κάνει αντί για εσένα. Αυτό δεν είναι βοήθεια αλλά εργασία.
White_Cat Δημοσ. 7 Απριλίου 2022 Δημοσ. 7 Απριλίου 2022 Καλημέρα ! Δεν γνωρίζω πολλά περί arduino, όμως βλέπω ότι η παρακάτω σελίδα έχει ένα αναλυτικό παράδειγμα κώδικα ακριβώς γι' αυτό που ζητάς. Υπάρχει δηλαδή κώδικας ώστε το συγκεκριμένο module του arduino να στέλνει τα sms που θέλεις στον αριθμό που θέλεις. Μόνο που θα ήθελα να προσέξεις 3 πράγματα : - Τα νούμερα όπου θα σταλούν τα SMS πρέπει να μπαίνουν σε διεθνή μορφή, δηλ. με το +30 μπροστά. - Πρέπει αρχικά να χρησιμοποιείς την εντολή delay() ώστε να δίνεις τον αναγκαίο χρόνο στο module, ώστε να συνδέεται στο δίκτυο GSM. - Πρέπει να απενεργοποιήσεις το "κλείδωμα" της κάρτας SIM μέσα απ' τις ρυθμίσεις του κινητού πριν τη χρησιμοποιήσεις. Πρέπει δηλ. η κάρτα να μη ζητάει PIN όταν ανοίγει, ώστε να μπορεί να δουλέψει με το συγκεκριμένο module. Αυτά είναι τα τρία πιο συχνά λάθη που γίνονται όταν χρησιμοποιείται το Sim900. Η σελίδα είναι : https://randomnerdtutorials.com/sim900-gsm-gprs-shield-arduino/ Να είσαι καλά, Ο Άσπρος Γάτος
ilcamorista7 Δημοσ. 7 Απριλίου 2022 Μέλος Δημοσ. 7 Απριλίου 2022 (επεξεργασμένο) Ασπρε γατε ευχαριστω που τα εγραψες, βεβαια τα γνωριζω αυτα. Αλλα καλο ειναι να υπαρχουν γραμμενα (στο sim900 θελει αρκετο delay για να εισαι σιγουρος.. ας βαζετε κ 10000 κ 20000). @DrKo αυτο που ζητουσα ειναι να μ πει καποιος πως απο το serial monitor θα στειλω την AT COMMAND στο κινητο. Τελικα η απαντηση ειναι οτι δηλωνεις variable μολις το διαβασει στο serial κ στο μηνυμα του sim900 γραφεις το ονομα της μεταβλητης. στην περιπτωση μου ειναι αυτο airtime = SIM900.print("AT+CSQ"); "Να εχετε δηλωσει τη μεταβλητη στην αρχη...!!! Δε ζητησα να μου δωσουν κωδικα, αν και οπως το εχω διατυπωσει ειναι αλλα ντ αλλα.. σορρυ Επεξ/σία 7 Απριλίου 2022 από ilcamorista7
nkarama Δημοσ. 7 Απριλίου 2022 Δημοσ. 7 Απριλίου 2022 3 ώρες πριν, ilcamorista7 είπε στην περιπτωση μου ειναι αυτο airtime = SIM900.print("AT+CSQ"); "Να εχετε δηλωσει τη μεταβλητη στην αρχη...!!! Χωρίς να ξέρω τι βιβλιοθήκη χρησιμοποιείς, μπορώ να υποθέσω όμως ότι αυτό που γράψεις θα σου επιστρέψει τον αριθμό των bytes που έστειλες στην software serial. Δηλαδή 6....
ilcamorista7 Δημοσ. 7 Απριλίου 2022 Μέλος Δημοσ. 7 Απριλίου 2022 Ποια εντολή θα Μ επιστρέφει τον αριθμό του σήματος csq?
nkarama Δημοσ. 7 Απριλίου 2022 Δημοσ. 7 Απριλίου 2022 Δεν μας λες ούτε τα βασικά όμως. ποιά βιβλιοθήκη χρησιμοποιείς; τι έχεις κάνει ως τώρα ; πως έχουν γίνει οι συνδέσεις. δείγμα κώδθκα που έχεις γράψει.
ilcamorista7 Δημοσ. 8 Απριλίου 2022 Μέλος Δημοσ. 8 Απριλίου 2022 #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. τι πρεπει να κανω για να παρω τον αριθμο του σηματος σε μηνυμα?
nkarama Δημοσ. 8 Απριλίου 2022 Δημοσ. 8 Απριλίου 2022 Οπότε χρησιμοποιείς 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.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα