christakosxo Δημοσ. 13 Απριλίου 2014 Δημοσ. 13 Απριλίου 2014 Γεια σας ! φτιαχνω ενα Gsm remote control και θα ηθελα λιγο τη βοηθεια σας στον προγραμματισμο ! Για υλικα χρησιμοποιω της Arduino to UNO και το gsm shield http://store.arduino.cc/index.php?main_page=product_info&cPath=11&products_id=195 http://store.arduino.cc/index.php?main_page=product_info&cPath=11&products_id=195 Αυτο που θελω ειναι οταν θα στελνω ενα μηνυμα π.χ . ona στην sim του gsm να εχω 5 V σε μια εξοδο των arduino ωστε να μπορω να ενεργοποιησω ενα ρελε ! Χρησιμοποιω τον κωδικα που ειναι απο αυτο το project http://www.instructables.com/id/Control-the-relays-via-GPRS-SMS/step4/Upload-the-program/κανοντας 2 μικρο αλλαγες γιατι εγω εχω ενα ρελε και το φορτωνω ετσι με επιτυχια στο uno : #include <SoftwareSerial.h> // EN: String buffer for the GPRS shield message String msg = String(""); // EN: Set to 1 when the next GPRS shield message will contains the SMS message int SmsContentFlag = 0; //control pins of relay. int relay_a=4; //==============> το ρελέ που οδηγείται απο το pin 4 του Arduino // EN: Code PIN of the SIM card (if applied) String SIM_PIN_CODE = String( "XXXX" );//==============> βάζω το PIN της κάρτας όπου ΧΧΧΧ void setup() { Serial.begin(19200); // the GPRS baud rate // Initialize PINs pinMode( 4, OUTPUT ); digitalWrite( 4, LOW ); Serial.println( "AT+CMGF=1" ); delay(200); } void loop() { char SerialInByte; if(Serial.available()) { SerialInByte = (unsigned char)Serial.read(); delay(5); // ------------------------------------------------------------------- // EN: Program also listen to the GPRS shield message. // ------------------------------------------------------------------- // EN: If the message ends with <CR> then process the message if( SerialInByte == 13 ){ // EN: Store the char into the message buffer ProcessGprsMsg(); } if( SerialInByte == 10 ){ // EN: Skip Line feed } else { // EN: store the current character in the message string buffer msg += String(SerialInByte); } } } // EN: Make action based on the content of the SMS. // Notice than SMS content is the result of the processing of several GPRS shield messages. void ProcessSms( String sms ){ if( sms.indexOf("ona") >= 0 ){ digitalWrite( relay_a, HIGH ); } if( sms.indexOf("offa") >= 0 ){ digitalWrite( relay_a, LOW ); } } // EN: Request Text Mode for SMS messaging void GprsTextModeSMS(){ Serial.println( "AT+CMGF=1" ); } void GprsReadSmsStore( String SmsStorePos ){ Serial.print( "AT+CMGR=" ); Serial.println( SmsStorePos ); } // EN: Clear the GPRS shield message buffer void ClearGprsMsg(){ msg = ""; } // EN: interpret the GPRS shield message and act appropiately void ProcessGprsMsg() { if( msg.indexOf( "Call Ready" ) >= 0 ){ // Serial.println( "*** GPRS Shield registered on Mobile Network ***" ); GprsTextModeSMS(); } // EN: unsolicited message received when getting a SMS message if( msg.indexOf( "+CMTI" ) >= 0 ){ // Serial.println( "*** SMS Received ***" ); // EN: Look for the coma in the full message (+CMTI: "SM",6) // In the sample, the SMS is stored at position 6 int iPos = msg.indexOf( "," ); String SmsStorePos = msg.substring( iPos+1 ); // Serial.print( "SMS stored at " ); // Serial.println( SmsStorePos ); // EN: Ask to read the SMS store GprsReadSmsStore( SmsStorePos ); } // EN: SMS store readed through UART (result of GprsReadSmsStore request) if( msg.indexOf( "+CMGR:" ) >= 0 ){ // EN: Next message will contains the BODY of SMS SmsContentFlag = 1; // EN: Following lines are essentiel to not clear the flag! ClearGprsMsg(); return; } // EN: +CMGR message just before indicate that the following GRPS Shield message // (this message) will contains the SMS body if( SmsContentFlag == 1 ){ // Serial.println( "*** SMS MESSAGE CONTENT ***" ); // Serial.println( msg ); // Serial.println( "*** END OF SMS MESSAGE ***" ); ProcessSms( msg ); } ClearGprsMsg(); // EN: Always clear the flag SmsContentFlag = 0; } Το αποτελεσμα ειναι οταν στελνω ona να μην εχω 5 V sto pin4 και να μην ενεργοποιειται το ρελε ! τι φταιει ; θελει καποιες επιπλεον αλλαγες ο κωδικας η πρεπει να φτιαξω αλλο απο την αρχη ;; (πραγμα πολυ δυσκολο γιατι ξερω τα βασικα απο προγραμματισμο)
makiss8 Δημοσ. 18 Απριλίου 2014 Δημοσ. 18 Απριλίου 2014 αυτη ηταν η πρωτη σου δοκιμη ? πηγες κατευθειαν να το ετοιμασεις? θελω να πω δοκιμασε πρωτα με kana ledaki, mporei συνδεση του ρελε να μην ειναι σωστη, παιξε με τα high low βαλτα αναποδα, γενικα με δοκιμες πιστευω θα το πετυχεις και δες αν οντως το μηνυμα στέλνεται 1
Moderators Kercyn Δημοσ. 19 Απριλίου 2014 Moderators Δημοσ. 19 Απριλίου 2014 40e το GSM?? Πλακα μας κανουν; Και πού να δεις τίποτα Ethernet
memoric_2000 Δημοσ. 18 Μαΐου 2014 Δημοσ. 18 Μαΐου 2014 ►Για δοκίμασε αυτό που επεσύναψα. Δεν το δοκίμασα γιατί δεν έχω εύκαιρο GPRS shield, αλλά λογικά πρέπει να δουλέψει. Άλλαξε την προέκταση από txt σε ino, βάλ' το σε έναν φάκελο με το ίδιο όνομα (SMS_Control) & τρέξ' το.►Όρισα σαν relayPin το 13 ώστε να βλέπεις μετά τα SMS αν ανάβει/σβήνει το LEDάκι του Uno, αλλά φυσικά μπορείς να ορίσεις όποιο pin θέλεις (πάνω απ' τη setup().)►Σαν εντολές μπορείς να στείλεις on & off, αλλά μπορείς να τις αλλάξεις στη loop() (δες τα σχόλια).►Οι turnOn() & turnOff() που εκτελούνται ανάλογα με ποια εντολή περιέχει το SMS, βρίσκονται στο τέλος του sketch. Έχω βάλει μόνο να ανάβουν/σβήνουν το LEDάκι του pin 13 αλλά μπορείς να βάλεις ό,τι εντολές θέλεις. Και πού να δεις τίποτα Ethernet Έχει στο ebay κινέζικα με €6 & μάλιστα πολύ καλά. Προσωπικά έχω 4 σε συνεχή λειτουργία εδώ & 2 χρόνια & δουλεύουν μια χαρά.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα