Σελίδα 1 από 2 1 2 ΤελευταίαΤελευταία
Εμφάνιση αποτελεσμάτων : 1 έως 10 από 12

Θέμα: Έλεγχος GSM modem από PIC

  1. #1
    Νέο Μέλος
    Όνομα
    Τάσος
    Εγγραφή
    Apr 2010
    Περιοχή
    Αθήνα
    Μηνύματα
    5

    Προεπιλογή Έλεγχος GSM modem από PIC

    Προσπαθώ να ελέγξω με ΑΤ εντολές ένα modem της Wavecom (Fastrack Supreme 10) από ένα κύκλωμα με τον PIC16F688 για να κάνει αποστολή δεδομένων μέσω GPRS.

    Όλες τις λειτουργίες που θέλω να κάνει το μόντεμ όπως εκκίνηση GPRS session, άνοιγμα socket στον server και αποστολή δεδομένων τα κάνω χωρίς πρόβλημα από το HyperTerminal.
    Για να δω αν το μόντεμ μπορεί να λάβει ΑΤ εντολές από άλλη πηγή έγραψα ένα πρόγραμμα στο PC για να στείλε μία ΑΤ εντολή(εισαγωγή του pin AT+CPIN=xxxx) σαν string και με κάθε byte ξεχωριστά (σαν ASCII) και το μόντεμ το λαμβάνει χωρίς πρόβλημα(έχει ένα LED που αναβοσβήνει αν μπει στο δίκτυο).

    Από τον μικροελεγκτή δοκίμασα σε assembly να στείλω αυτήν την εντολή κάθε byte ξεχωριστά. Σε πρόγραμμα στον Η/Υ βλέπω ότι όλα τα bytes φτάνουν στο προορισμό τους μέσω σειριακής, αλλά το συνδέσω στο μόντεμ, εκείνο δεν ανταποκρίνεται.
    Δοκίμασα ακόμα :

    1)Nα συνδέσω τα CTS και RTS με τον μC, στέλνοντας από τον PIC λογικό 1 από την πόρτα για το RTS και διαβάζοντας την πόρτα για το CTS) αλλά και πάλι δεν τα καταφέρνω.

    2)Βραχυκύκλωσα το CTS με το RTS και το DTR με το DSR (διάβασα ότι έτσι "ξεγελάω το modem ότι έχει έλεγχο ροής από το DTE), αλλά και πάλι τίποτα.

    Από ότι έχω παρατηρήσει το πρόβλημα βρίσκεται στο κύκλωμα. Είναι θέμα firmware ή πρέπει να αλλάξω κάτι στο ίδιο το κύκλωμα;

    0 Not allowed! Not allowed!

  2. #2
    Μέλος Το avatar του χρήστη lastid
    Όνομα
    Δημήτρης
    Εγγραφή
    Feb 2009
    Περιοχή
    Θεσσαλονίκη
    Μηνύματα
    841

    Προεπιλογή

    Δεν αναφέρεις τίποτε για το κύκλωμα. Να υποθέσουμε ότι χρησιμοποιείς MAX232? Χρησιμοποιείς τα TX, RX και ποια από τα control signals?
    Αν το πρόβλημα είναι hardware handshaking, μπορείς να δοκιμάσεις όλους τους τρόπους σύνδεσης που περιγράφονται στη σελίδα http://www.lammertbies.nl/comm/info/...ull_modem.html.

    0 Not allowed! Not allowed!

  3. #3
    Μέλος Το avatar του χρήστη klik
    Όνομα
    just a click away
    Εγγραφή
    Oct 2009
    Περιοχή
    Θεσσαλλλονίκη
    Μηνύματα
    2.563

    Προεπιλογή

    Εχεις υποθέτω επιλέξει ίδια ταχύτητα μεταξύ PIC και modem.

    Περιμένεις κάποιο χρόνο (1-2 sec) μετα το power on για να κάνει init το modem και να μπορεί να δεχθεί εντολές AT;

    Εχεις δει στις προδιαγραφές του modem αν θέλει να επιλέξεις τρόπο handshake;

    Αντι για modem συνδεσε τη σειριακή απο ένα PC για να δεις αν στέλνεις σωστά τα δεδομένα απο το κύκλωμα. Το καλώδιο που θέλει το modem είναι MODEM cable (1-1), αλλά βέβαια έχει σημασία πως έχεις συνδεσει το D9 στο MAX (π.χ. ένα σχέδιο).

    0 Not allowed! Not allowed!

  4. #4
    Νέο Μέλος
    Όνομα
    Τάσος
    Εγγραφή
    Apr 2010
    Περιοχή
    Αθήνα
    Μηνύματα
    5

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από lastid Εμφάνιση μηνυμάτων
    Δεν αναφέρεις τίποτε για το κύκλωμα. Να υποθέσουμε ότι χρησιμοποιείς MAX232? Χρησιμοποιείς τα TX, RX και ποια από τα control signals?
    Αν το πρόβλημα είναι hardware handshaking, μπορείς να δοκιμάσεις όλους τους τρόπους σύνδεσης που περιγράφονται στη σελίδα http://www.lammertbies.nl/comm/info/...ull_modem.html.
    Για την επικοινωνία μεταξύ κυκλώματος-modem αρχικά χρησιμοποίησα μόνο τα Tx και Rx pins πριν από τους δύο τρόπους που επιπλέον δοκίμασα.
    Την επικοινωνία μεταξύ μικροελεγκτή και σειριακή θύρας στο κύκλωμα την έχω γεφυρώσει με μια πύλη ΝΟΤ για αντιστροφή των σημάτων (ναι, ειναι ανορθόδοξο αλλά δουλεύει).
    Μετά πρόσεξα στο manual του modem ότι απαιτεί για την λειτουργία του τα Tx,Rx,CTS και RTS(τα υπόλοιπα στην σειριακή θύρα είναι προαιρετικά).
    Με τις δοκιμές που περιέγραψα στο προηγούμενο post είμαι σίγουρος ότι το πρόβλημα είναι η αναγνώριση των ΑΤ εντολών από το μικροελεγκτή στο μόντεμ απευθείας, δλδ το hardware handshake.
    Είχα ξαναδεί αυτήν την σελίδα και έχω δοκιμάσει όλες τις συνδέσεις εκτός από το partial handshaking. Πώς το υλοποιώ αυτό; Τα σήματα CTS,RTS,DTR και DSR τα συνδέω στις πόρτες του μικροελεγκτή; Αν ναι, τι αλγόριθμο χρειάζεται να υλοποιήσω στο πρόγραμμα που θα τρέχει για την αποστολή των ΑΤ εντολών από αυτόν στο modem?

    Παράθεση Αρχικό μήνυμα από klik Εμφάνιση μηνυμάτων
    Εχεις υποθέτω επιλέξει ίδια ταχύτητα μεταξύ PIC και modem.

    Περιμένεις κάποιο χρόνο (1-2 sec) μετα το power on για να κάνει init το modem και να μπορεί να δεχθεί εντολές AT;

    Εχεις δει στις προδιαγραφές του modem αν θέλει να επιλέξεις τρόπο handshake;

    Αντι για modem συνδεσε τη σειριακή απο ένα PC για να δεις αν στέλνεις σωστά τα δεδομένα απο το κύκλωμα. Το καλώδιο που θέλει το modem είναι MODEM cable (1-1), αλλά βέβαια έχει σημασία πως έχεις συνδεσει το D9 στο MAX (π.χ. ένα σχέδιο).
    Και το modem και το κύκλωμα λειτουργούν στα 115200bps.
    Το μόντεμ είναι ήδη έτοιμο να δεχτεί εντολές, σε αυτήν την φάση ανάπτυξης έχει διαφορετική πηγή τροφοδοσίας από το κύκλωμα.

    Κάθε βοήθεια είναι ευπρόσδεκτη παρακαλώ γιατί έχω φάει 2 βδομάδες με αυτό το θέμα.

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη geepal : 22-04-10 στις 22:58

  5. #5
    Μέλος Το avatar του χρήστη lastid
    Όνομα
    Δημήτρης
    Εγγραφή
    Feb 2009
    Περιοχή
    Θεσσαλονίκη
    Μηνύματα
    841

    Προεπιλογή

    Αν λοιπόν το manual του modem αναφέρει μόνο τα CTS,RTS, αυτά και μόνο θα χρησιμοποιήσεις.
    Έχεις δύο επιλογές:

    1.
    RTS_PIC -> CTS_modem και RTS_modem -> CTS_PIC.
    Θα πρέπει όμως και να γράψεις software στον PIC που να χρησιμοποιεί τα RTS,CTS.

    2.
    RTS_modem -> CTS_modem
    Το οποίο και είναι το απλούστερο.
    Βλέπε και http://www.zytrax.com/tech/layer_1/cables/heavy.htm, παράγραφος "It gets worse".

    0 Not allowed! Not allowed!

  6. #6
    Νέο Μέλος
    Όνομα
    Τάσος
    Εγγραφή
    Apr 2010
    Περιοχή
    Αθήνα
    Μηνύματα
    5

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από lastid Εμφάνιση μηνυμάτων
    Αν λοιπόν το manual του modem αναφέρει μόνο τα CTS,RTS, αυτά και μόνο θα χρησιμοποιήσεις.
    Έχεις δύο επιλογές:

    1.
    RTS_PIC -> CTS_modem και RTS_modem -> CTS_PIC.
    Θα πρέπει όμως και να γράψεις software στον PIC που να χρησιμοποιεί τα RTS,CTS.

    2.
    RTS_modem -> CTS_modem
    Το οποίο και είναι το απλούστερο.
    Βλέπε και http://www.zytrax.com/tech/layer_1/cables/heavy.htm, παράγραφος "It gets worse".
    Χμ δεν ξέρω αν αυτό θα κάνει κάτι.
    Οι 2 αυτοί τρόποι που περιγράφεις μοιάζουν με τις 2 προσπάθειες που έκανα πέρα από τη βασική σύνδεση μόνο με Tx και Rx που έγραψα στο 1ο post.
    Μάλλον δεν εξήγησα καλά αυτά που γράφω. Στη προσπάθεια 2 αυτό που έκανα είναι: πάνω στο κύκλωμα, στο βύσμα της σειριακής, γεφύρωσα το pin του RTS με αυτό του CTS. Έτσι κλείνω το κύκλωμα αυτών των 2 ακίδων από τη μεριά του modem.
    Η άλλη προσπάθεια που έκανα είναι ακριβώς το 1ο που μου προτείνεις.
    Έχω ήδη κάνει δλδ και τα 2. Υπάρχει κάτι άλλο που μπορώ να κάνω;

    0 Not allowed! Not allowed!

  7. #7
    Μέλος
    Όνομα
    sot
    Εγγραφή
    Aug 2005
    Περιοχή
    ΧΟΛΑΡΓΟΣ
    Μηνύματα
    1.068

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από geepal Εμφάνιση μηνυμάτων
    Και το modem και το κύκλωμα λειτουργούν στα 115200bps.
    Το μόντεμ είναι ήδη έτοιμο να δεχτεί εντολές, σε αυτήν την φάση ανάπτυξης έχει διαφορετική πηγή τροφοδοσίας από το κύκλωμα.

    Κάθε βοήθεια είναι ευπρόσδεκτη παρακαλώ γιατί έχω φάει 2 βδομάδες με αυτό το θέμα.
    115200?
    Υπερβολικα μεγαλη ταχυτητα για τετοια εφαρμογη.
    Πιθανον να εχεις διαφορα overrun δοκιμασε κατι πιο standard, πχ 9600...

    Αυτο με την πυλη not δεν το καταλαβα...
    Και πρωτου μιλησεις στο modem, θα πρεπει μεσω loopback να βεβαιωθεις οτι διαβαζεις πισω αυτα που στελνεις, ετσι για αρχη.
    Το επομενο βημα ειναι να μιλησεις στο hyperterminal στο pc, μετα να λαβεις κατι απο το πληκτρολογιο του hyperterminal και στη πορεια θα βαλεις και το modem....
    Χρησιμοποιεις καποια βιβλιοθηκη? interrupts? polling?
    Χρησιμοποιεις uart η παιζεις με pin?
    Και τελος, με assembly εχει καμποσο γραψιμο... ισως κατι πιο high level να ειναι ευκολοτερο.
    Τελος ειπες τη μαγικη λεξη socket..
    Αυτο αναφερεται σε tcp-ip... πες μου οτι δεν ειναι γιατι δεσαμε.....

    0 Not allowed! Not allowed!

  8. #8
    Μέλος Το avatar του χρήστη klik
    Όνομα
    just a click away
    Εγγραφή
    Oct 2009
    Περιοχή
    Θεσσαλλλονίκη
    Μηνύματα
    2.563

    Προεπιλογή

    Τα 115200 είναι πολλά για να διαβάσει ο PIC αξιόπιστα και σχεδόν αδύνατο να τα διαβάσει χωρίς hardware handshake, διότι οι εντολές χειρισμού πίνακα (με τον register δείκτη) μαζί με τους υπολογισμούς θέσης, κοστίζουν αρκετά σε χρόνο, οπότε αν έρθει κανένα burst χαρακτήρων, πιθανόν θα χάσει κάποιους.

    Στην αποστολή όμως δεν θα έχει πρόβλημα.

    Δεν έχεις ενημερώσει τι γίνεται με αυτό:
    Παράθεση Αρχικό μήνυμα από klik
    ...Αντι για modem συνδεσε τη σειριακή απο ένα PC για να δεις αν στέλνεις σωστά τα δεδομένα απο το κύκλωμα....
    Αυτό με την πύλη ούτε εγώ το κατάλαβα... αν είχες τάση +-12V, θα μπορούσες να χρησιμοποιήσεις πύλες αντί για max232 (ή άλλο level converter/shifter).

    Μπορείς να κάνεις και υποκλοπή: να συνδέσεις την ακίδα RX απο τη σειριακή του pc και να βλέπεις τι πέρνει το modem ή τι επιστρέφει.

    0 Not allowed! Not allowed!

  9. #9
    Νέο Μέλος
    Όνομα
    Τάσος
    Εγγραφή
    Apr 2010
    Περιοχή
    Αθήνα
    Μηνύματα
    5

    Προεπιλογή

    115200 bps χρησιμοποιώ αναγκαστικά γιατί το modem επικοινωνεί με άλλες συσκευές(PC ή άλλο κύκλωμα) σε αυτό το baud rate.
    Η πύλη ΝΟΤ είναι ένας πιο απλός τρόπος για αντιστροφή των σημάτων ΤΤL σε RS-232. Με αυτόν τον τρόπο δεν χρειάζονται πυκνωτές. Το μόνο που χρειάζεται είναι μια αντίσταση στο Rx του μικροελεγκτή πριν τη πύλη για προστασία
    Το κύκλωμα το έχω ήδη συνδέσει στο PC και παρατήρησα τα δεδομένα φτάνουν ακριβώς όπως τα έχω γράψει στο κώδικα, ένας-ένας οι χαρακτήρες της εντολής AT+CPIN=xxxx σε μορφή ASCII. Είναι κώδικας σε πολύ απλή μορφή και το ανέβασα να το δείτε. Με αυτό το θέμα ευτυχώς δεν έχω πρόβλημα.
    Το socket δεν έχει σημασία για το κώδικα του PIC, γιατί το TCP/IP stack είναι μέσα στο modem οπότε όλο το δικτυακό μέρος το αναλαμβάνει εκείνο(αφού μπορώ και το κάνω μέσω του HyperTerminal χωρίς το κύκλωμα).
    Το κύκλωμα το θέλει το modem για να δέχεται τις ΑΤ εντολές και να γυρίσει σε data mode(με την αποστολή της αλληλουχίας +++) για να δεχτεί τα δεδομένα και μετά να γυρίσει σε ΑΤ mode πάλι με +++.

    Οπότε το πρόβλημά μου μένει στο hardware handshaking του κυκλώματος για το οποίο δεν έχω βρει λύση. Συνολικά έχω δοκιμάσει μέχρι τώρα τα εξής πάνω στο κύκλωμα:

    1)Μόνο Rx και Τx.

    2)Σύνδεση 2 ακίδων(ports) από τον PIC στα CTS και RTS. Τον κώδικα τον άλλαξα έτσι ώστε να φεύγει λογικό 1 από την ακίδα που είναι συνδεδεμένη στο RTS της σειριακής και να διαβάζει την ακίδα που είναι συνδεδεμένο στο CTS της σειριακής. Αν λάβει κάτι, στέλνει την ΑΤ εντολή.

    3)Γεφύρωση του RTS με το CTS και επιπλέον του DTR με το DSR της σειριακή.
    Και τα 3 απέτυχαν.
    Συνημμένα Αρχεία Συνημμένα Αρχεία

    0 Not allowed! Not allowed!

  10. #10
    Μέλος Το avatar του χρήστη klik
    Όνομα
    just a click away
    Εγγραφή
    Oct 2009
    Περιοχή
    Θεσσαλλλονίκη
    Μηνύματα
    2.563

    Προεπιλογή

    επειδη αυτό που έχεις κάνει για σύνδεση με τις NOT δεν είναι σίγουρο ότι καλυπτει τις προδιαγραφές του rs232, ανέβασε ένα απο τα παρακάτω:
    α) σχηματικό της συνδεσης που να φαίνονται και οι τάσεις τροφοδοσίας που χρησιμοποιείς

    ή

    β) τι τάση βγάζει η ακίδα TX στο βύσμα D9 (αμέσως πρις το περάσεις στο modem), όταν στέλνεις 0 και όταν στέλνεις 1.
    (δεν χρειάζεται μικροελενκτή για να το μετρήσεις αυτό, απλά με βγαλμένο μικροελενκτη, δίνεις στη βάση του μια φορά 0V και μια 5V στην ακίδα TX και μετρας με πολύμετρο τις 2 τιμές στην έξοδο).
    Θα βόλευε να έχουμε και το αντίστοιχο για το RX. Βραχυκύκλωσε στο D9 τις ακιδες 2και3 και για τις τιμές που στέλνεις απο το TX (0 ή 1), δες αν έχεις ίδιες τιμές στην ακίδα RX στη βάση του μικροελενκτη (έχει γίνει ένα loopback έτσι).

    (Οταν προλάβω θα δω και το listing)

    0 Not allowed! Not allowed!

Σελίδα 1 από 2 1 2 ΤελευταίαΤελευταία

Παρόμοια Θέματα

  1. Inim GSM modem NEXUS
    By mpartzokas in forum Συστήματα Ασφαλείας
    Απαντήσεις: 1
    Τελευταίο Μήνυμα: 26-11-16, 22:59
  2. TC35 SIEMENS GSM MODEM
    By angelkos in forum Συσκευές GSM / GPS / Tablet
    Απαντήσεις: 4
    Τελευταίο Μήνυμα: 09-09-13, 02:18
  3. GSM Modem με μικροελεγκτή
    By Tolaras in forum Μικροελεγκτές
    Απαντήσεις: 10
    Τελευταίο Μήνυμα: 21-07-13, 16:14
  4. modem router gsm
    By elettronica in forum Συστήματα Ασφαλείας
    Απαντήσεις: 4
    Τελευταίο Μήνυμα: 02-12-10, 11:47
  5. Συνδεση GSM modem,PC,μC με μια RS232
    By tsnikolaos in forum Αυτοματισμοί
    Απαντήσεις: 2
    Τελευταίο Μήνυμα: 17-01-10, 13:04

Tags for this Thread

Δικαιώματα - Επιλογές

  • Δημιουργία θεμάτων: Όχι
  • Υποβολή μηνυμάτων: Όχι
  • Σύναψη αρχείων: Όχι
  • Επεξεργασία μηνυμάτων: Όχι
  •  
  • BB code: σε λειτουργία
  • Smilies: σε λειτουργία
  • [IMG]: σε λειτουργία
  • [VIDEO] code is σε λειτουργία
  • HTML: εκτός λειτουργίας