Jump to content



GSM Modem με σειριακή


profitis

Recommended Posts

  • Replies 65
  • Created
  • Last Reply

ok, στον 8051 θα χρησιμοποιήσεις το gsm modem και από την πλευρά του pc την υπηρεσία του BULK SMS.com.. Εδώ θα βρεις το API για το http πρωτόκολλο ώστε να διαβάζεις το inbox (με τα εισερχόμενα sms από τον 8051) στον υπολογιστή σου με απλά http requests... Με αντίστοιχο τρόπο μπορείς να κάνεις batch ή single uploads στον http server με τα sms που θες να στείλεις στον 8051... Υπάρχει και αντίστοιχο ftp πρωτόκολλο, αλλά το http είναι πιο εύκολο...

Αυτά θες...

Διαφορετικά θες 2 modem...

Αν το κινητό σου κάνει expose σε AT και το service sms (at+cmgs), τότε μπορείς με bluetooth ή με κάποιο καλώδιο να χρησιμοποιήσεις το κινητό σου, στον υπολογιστή...

Link to comment
Share on other sites

ok, στον 8051 θα χρησιμοποιήσεις το gsm modem και από την πλευρά του pc την υπηρεσία του BULK SMS.com.. Εδώ θα βρεις το API για το http πρωτόκολλο ώστε να διαβάζεις το inbox (με τα εισερχόμενα sms από τον 8051) στον υπολογιστή σου με απλά http requests... Με αντίστοιχο τρόπο μπορείς να κάνεις batch ή single uploads στον http server με τα sms που θες να στείλεις στον 8051... Υπάρχει και αντίστοιχο ftp πρωτόκολλο, αλλά το http είναι πιο εύκολο...

Αυτά θες...

Διαφορετικά θες 2 modem...

Αν το κινητό σου κάνει expose σε AT και το service sms (at+cmgs), τότε μπορείς με bluetooth ή με κάποιο καλώδιο να χρησιμοποιήσεις το κινητό σου, στον υπολογιστή...

Ομως για να χρησιμοποιήσουμε και να στέλνουμε sms sto bulk sms δεν θα πρέπει να "αγοράσουμε" ένα εικονικο νούμερο; ή γινεται και δωρεαν;

Link to comment
Share on other sites

To τζάμπα πέθανε... πληρώνεις με μονάδες, αλλά είναι πολύ φθηνές χρεώσεις... δες αν το κόστος ανά sms και το πλήθος τους, δικαιολογούν αγορά ενός άλλου modem...

Δεν λέω ότι είναι και πανάκριβο, αλλά το κόστος αν θυμάμαι καλά για να στήσεις έναν εικονικο δικτυακό αριθμο (φαντάζομαι αυτό ειναι βασικό προαπαιτούμενο για να τα μαζεύεις τα sms στο inbox σου και μετά να τα παίρνεις με το get_inbox) είναι 9€ χ 12 μήνες ελάχιστη παραμονη. Μαζευεί όσο μισο modem...

To modem που θα πάρουμε υποστηρίζει GPRS. Μέσω GPRS υποστηρίζεται tcp/ ip ώστε να φεύγει η πληροφορία που θέλουμε καρφί σε tcp/ip socket και να μην μπερδεύουμε με sms server κτλ; Είναι πολύ πιο δύσκολο να προγραμματιστεί σε σχέση με τα sms;

Link to comment
Share on other sites

To gprs ειδικά σε αστικό περιβάλλον είναι πάντα προτιμότερο... ο μόνος λόγος για να μην χρησιμοποιεί κανείς gprs σε εφαρμογές με αποστολή δεδομένων, είναι το δίκτυο της περιοχής να μην το υποστηρίζει... σε οποιαδήποτε άλλη περίπτωση το gprs είναι μονόδρομος...

Το tcp over gprs είναι μεν ασφαλές, αλλά και το udp (αν το υποστηρίζει ο bearer του gsm) είναι εξίσου ασφαλές, γιατί το subnet των gsm δικτύων είναι απομονωμένο... επίσης ακόμα και με το udp υπάρχουν μέθοδοι για ασφαλές full duplex μεταφορά δεδομένων με software handshaking και πάλι να έχεις μικρότερο overhead από το tcp και φυσικά πολύ μικρότερες (μηδαμινές σχεδόν συγκρινόμενα) χρεώσεις €/char σε σχέση με το sms...

Link to comment
Share on other sites

To gprs ειδικά σε αστικό περιβάλλον είναι πάντα προτιμότερο... ο μόνος λόγος για να μην χρησιμοποιεί κανείς gprs σε εφαρμογές με αποστολή δεδομένων, είναι το δίκτυο της περιοχής να μην το υποστηρίζει... σε οποιαδήποτε άλλη περίπτωση το gprs είναι μονόδρομος...

Το tcp over gprs είναι μεν ασφαλές, αλλά και το udp (αν το υποστηρίζει ο bearer του gsm) είναι εξίσου ασφαλές, γιατί το subnet των gsm δικτύων είναι απομονωμένο... επίσης ακόμα και με το udp υπάρχουν μέθοδοι για ασφαλές full duplex μεταφορά δεδομένων με software handshaking και πάλι να έχεις μικρότερο overhead από το tcp και φυσικά πολύ μικρότερες (μηδαμινές σχεδόν συγκρινόμενα) χρεώσεις €/char σε σχέση με το sms...

Εδώ το GPRS υποστηρίζεται.

Το θέμα είναι σε επίπεδο δυσκολίας προγραμματισμού να είναι δυσκολότερο απ ότι στα sms

Λογικά αυτό εδώ το υλικό θα μας ειναι υπερ αρκετό για επικοινωνία μέσω tcp ip socket over GPRS...;

http://www.radel.gr/Files/TCP_IP_User_guide.pdf

Πάντα με AT commands δεν θα παίξουμε μπάλα;

Link to comment
Share on other sites

Ναι με ΑΤ θα το κάνεις και ναι είναι δυσκολότερο από το απλό sms...

Αν φτιάξεις σωστό state machine δεν θα έχεις πρόβλημα βέβαια... απλά έχε υπόψη ότι η σειρά είναι η εξής...:

1. περιμένεις για +WIND: 4

2. σετάρεις το APN του provider

3. κάνεις attach στο gprs (+GATT)

4. ανοίγεις το socket και περιμένεις με κάποιο timeout να ανοίξει

5. στέλνεις τα δεδομένα σου

6. περιμένεις να πάρεις δεδομένα (αν θες) με κάποιο timeout

7. κλείνεις το socket (ή στο κλείνει ο server)

8. Γυρνάς στο 3 χωρίς να κάνεις detach από το gprs (ΠΟΤΕ δεν κάνεις detach, αλλά πάντα ελέγχεις αν γίνει για κάποιο λόγο detach και ξανακάνεις attach)

Τα παραπάνω βήματα είναι το μισό project, αλλά από εδώ και πέρα πρέπει να το παλέψεις μόνος σου... γενικά δεν είναι τόσο δύσκολο όσο φαίνεται, αλλά πάντα η πρώτη φορά φαίνεται βουνό, οπότε σπάστο σε μικρά κομμάτια...

Link to comment
Share on other sites

Καλησπέρα και πάλι άλλη μία φορά ευχαριστώ για τις πολύτιμες συμβουλές σου...

πρωτού ξεκινήσουμε το προγραμματιστικό κομμάτι έχουμε κολλήσει σε πιο τυπικές λεπτομέρειες. Το modem, αν και αυτό που είχαμε διαβάσει από τη περιγραφή του ήταν ότι υποστήριζε RS232, μας ήρθε με έναν SUB HD 15-pin connector (ουσιαστικά vga βύσμα). Απ' όσο έχουμε ψάξει δεν έχουμε καταφέρει να βρούμε έναν adaptor από 15 pin σε 9 που έχει το κλασσικό σειριακό καλώδιο έτσι ώστε να μιλήσει το modem μας με το development kit του MCU.

Μας διαφεύγει γενικά κάτι; Κοίταξα λίγο το manual του modem και εξηγούσε ποια pins είναι για το Rs232 αλλα και πάλι, απ ότι καταλάβαμε, θέλει adaptor από το ένα βύσμα στο άλλο που δεν το βρίσκουμε.

Link to comment
Share on other sites

To rs232 έχει 4 στάνταρ βύσματα τα db9, db15, db25 και RJ11 και όποιο σχεδιάγραμμα βρεις για το db15 και για rs232 θα ισχύει (αν η συσκευή ακολουθεί το standard)...

Aν η συσκευή έχει ήδη κάποιο σχεδιάγραμμα με το pinout τότε χρησιμοποίησε αυτό... 3 σήματα θες συνολικά tx,rx και gnd, οπότε και με καλωδιάκια μπορείς να συνδέσεις το 9-πινο του pc με τον 15-πινο του modem στα αντίστοιχα σήματα... Με τα 2 σήματα δεν θα έχεις harware handshake (xon/xoff), αλλά δεν σε νοιάζει εκτός και αν χρειαστεί να κάνεις update το firmware του modem...

Επειδή το gsm modem κατά πάσα πιθανότητα δεν είναι DCE όπως θα έπρεπε, αλλά DTE, όπως δηλαδή και η σειριακή του pc, θα χρειαστείς ένα croos-cable ή αν κάνεις την μόντα με τα καλωδιάκια, δοκίμασε πρώτα σύνδεση DTE σε DTE και αν δεν δουλεύει τότε δοκίμασε DΤΕ σε DCE... μην φοβάσαι για το αν θα καεί ή κάτι τέτοιο, γιατί τα rx,tx έχουν προστασία για τέτοιου είδους λάθος συνδέσεις... αρκεί το GND να είναι κοινό...

Link to comment
Share on other sites

Για άλλη μία φορά thanks! Εισαι ανοιχτή εγκυκλοπαίδεια!

Αυτό που λες DTE και DCE είναι "modes" της επικοινωνίας μέσω σειριακης;

Κάποιο έτοιμο καλώδιο δεν θα μπορούσαμε να βρούμε ώστε να μην μπλέκουμε σε τέτοιες λεπτομέρειες;

Link to comment
Share on other sites

Είχα φάει μια εγκυκλοπαίδεια όταν ήμουν μικρός, γι' αυτό και τα κιλά μου...

DTE = data terminal equipment

DCE = data communication equipment

Είναι στάνταρ ορολογίες για τις rs232 επικοινωνίες και καθορίζουν τον τύπο της συσκευής και πως αυτή συνδέεται σε σχέση με μια άλλη... κάν' το ένα google και γενικά διάβασε ότι μπορείς για το rs232... καλό είναι ξέρεις (αν όχι καλά, να έχεις μια πολύ καλή ιδέα) τα εργαλεία που θα χρησιμοποιήσεις...

Μπορείς να πάρεις καλώδιο από εκεί που πήρες το modem αλλά θα το πληρώσεις ουκ ολίγα χρήματα... επιμένω κάν' το μόνος σου, απλά πρέπει να συνδέσεις 3 τρύπες μεταξύ τους (γενικά ότι αφορά τρύπες και σύνδεση ανά μεταξύ των είναι ευχάριστη και δημιουργική εργασία)... :p

Link to comment
Share on other sites

  • 2 weeks later...
Είχα φάει μια εγκυκλοπαίδεια όταν ήμουν μικρός, γι' αυτό και τα κιλά μου...

DTE = data terminal equipment

DCE = data communication equipment

Είναι στάνταρ ορολογίες για τις rs232 επικοινωνίες και καθορίζουν τον τύπο της συσκευής και πως αυτή συνδέεται σε σχέση με μια άλλη... κάν' το ένα google και γενικά διάβασε ότι μπορείς για το rs232... καλό είναι ξέρεις (αν όχι καλά, να έχεις μια πολύ καλή ιδέα) τα εργαλεία που θα χρησιμοποιήσεις...

Μπορείς να πάρεις καλώδιο από εκεί που πήρες το modem αλλά θα το πληρώσεις ουκ ολίγα χρήματα... επιμένω κάν' το μόνος σου, απλά πρέπει να συνδέσεις 3 τρύπες μεταξύ τους (γενικά ότι αφορά τρύπες και σύνδεση ανά μεταξύ των είναι ευχάριστη και δημιουργική εργασία)... :p

Eπανήλθα μετά το διάβασμα για το rs 232....Διάβασα λίγο με το πρωτόκολλο και τα modes των συσκευών (DTE και DCE). Το καλώδιο τελικά θα το φτιάξουμε μόνοι μας, με τη βοήθεια βέβαια κάποιων άλλων παιδιών από το εργαστήριο.

Αν έχω καταλάβει καλα...

Το PC είναι DTE και το gsm modem DCE. Έχουμε δει το pinout του modem το οποίο είναι το http://i447.photobucket.com/albums/qq199/profitis89/modemPinout.jpg καθώς και το pinout του standard RS 232

(Serial (RS232) port pinout and signals) που θα ειναι στη πλευρά του pc. Αν έχω καταλάβει καλά τα συνδέουμε όλα ΕΝΑ ΠΡΟΣ ΕΝΑ, διότι π.χ. το pin 2 του modem είναι το Transmit Serial Data όμως το έχει μέσα στο manual σαν input του modem. Οπότε το modem μας δίνει έτοιμα τα pins του standard rs 232 που πρέπει να καρφωθούν στα αντίστοιχα δικά του pins εφόσον έχουμε πάντα τη συνδεσμολογία DTE το DCE.

Αν ομως πάω να συνδέσω το modem με τον microcontroller, τα πράγματα είναι τελείως διαφορετικά διότι ο mcu δουλεύει και αυτός σαν DCE, ΟΠΟΤΕ το transmit του mcu πρέπει να παει δεν πρέπει να πάει στο pin 2 του modem αλλά στο pin 6, σωστα; Για τα υπολοιπα σήματα πράττουμε αναλόγως...ουσιαστικά για mcu-modem φτιάχνουμε ένα crossover καλώδιο;

Πάντως το pinout του modem, η τελευταία του στήλη δεν αναφερεται στο rs 232 standard στη πλευρα του DTE?

Link to comment
Share on other sites

Το PC είναι DTE και το gsm modem DCE.

Σωστά...

Έχουμε δει το pinout του modem το οποίο είναι το http://i447.photobucket.com/albums/qq199/profitis89/modemPinout.jpg καθώς και το pinout του standard RS 232

(Serial (RS232) port pinout and signals) που θα ειναι στη πλευρά του pc. Αν έχω καταλάβει καλά τα συνδέουμε όλα ΕΝΑ ΠΡΟΣ ΕΝΑ, διότι π.χ. το pin 2 του modem είναι το Transmit Serial Data όμως το έχει μέσα στο manual σαν input του modem. Οπότε το modem μας δίνει έτοιμα τα pins του standard rs 232 που πρέπει να καρφωθούν στα αντίστοιχα δικά του pins εφόσον έχουμε πάντα τη συνδεσμολογία DTE το DCE.

Δις σωστά...

Αν ομως πάω να συνδέσω το modem με τον microcontroller, τα πράγματα είναι τελείως διαφορετικά διότι ο mcu δουλεύει και αυτός σαν DCE, ΟΠΟΤΕ το transmit του mcu πρέπει να παει δεν πρέπει να πάει στο pin 2 του modem αλλά στο pin 6, σωστα; Για τα υπολοιπα σήματα πράττουμε αναλόγως...ουσιαστικά για mcu-modem φτιάχνουμε ένα crossover καλώδιο;

Αυτό εξαρτάται από εσένα που είσαι ο σχεδιαστής... Δηλαδή επειδή εσύ θα σχεδιάσεις την πλακέτα και θα κάνεις το routing του pcb εξαρτάται από εσένα αν θα συνδέσεις το max3232 (πχ) σαν dce ή dte στο db9 βύσμα... Αν οδηγεί μόνο το modem, τότε το σωστό είναι να το σχεδιάσεις σαν dte, οπότε θες πάλι 1 προς 1, αν για κάποιο λόγο το σχεδιάσεις σαν dce τότε θες cross...

Πάντως το pinout του modem, η τελευταία του στήλη δεν αναφερεται στο rs 232 standard στη πλευρα του DTE?

Δεν κατάλαβα τι ακριβώς εννοείς, αλλά αν εννοείς τα σήματα CTS/RTS τότε είναι σωστά και αναφέρονται σε dce συσκευή, δηλαδή το CTS είναι έξοδος και το RTS είσοδος...

Πάντως το έχεις πιάσει το concept... :T:

Link to comment
Share on other sites

Πάντως το έχεις πιάσει το concept... :T:

Χάρη στη βοήθεια σου και σε ευχαριστώ γι' αυτό!

Αυτό εξαρτάται από εσένα που είσαι ο σχεδιαστής... Δηλαδή επειδή εσύ θα σχεδιάσεις την πλακέτα και θα κάνεις το routing του pcb εξαρτάται από εσένα αν θα συνδέσεις το max3232 (πχ) σαν dce ή dte στο db9 βύσμα... Αν οδηγεί μόνο το modem, τότε το σωστό είναι να το σχεδιάσεις σαν dte, οπότε θες πάλι 1 προς 1, αν για κάποιο λόγο το σχεδιάσεις σαν dce τότε θες cross...

Δεν κατάλαβα τι ακριβώς εννοείς, αλλά αν εννοείς τα σήματα CTS/RTS τότε είναι σωστά και αναφέρονται σε dce συσκευή, δηλαδή το CTS είναι έξοδος και το RTS είσοδος...

To development kit του MCU είναι DCE, οπότε για να καταφέρει να μιλήσει με το DCE δεν θα πρέπει να φτιαχτει ενα crossover καλωδιο; Η κατευθυνση των δεδομένων θα ειναι αποκλειστικα μίας κατευθυνσης, απο το MCU στο modem...

Link to comment
Share on other sites

To development kit του MCU είναι DCE, οπότε για να καταφέρει να μιλήσει με το DCE δεν θα πρέπει να φτιαχτει ενα crossover καλωδιο;

Σωστά...

Η κατευθυνση των δεδομένων θα ειναι αποκλειστικα μίας κατευθυνσης, απο το MCU στο modem...

Μπορείς να το κάνεις έτσι, αλλά δεν στο προτείνω σε καμία περίπτωση γιατί έτσι χάνεις το feedback από την συσκευή... και εσύ ο ίδιος δεν θα ξέρεις τι συμβαίνει στην συσκευή σου και εξηγούμαι...:

Επειδή σε κάθε εντολή που στέλνεις στο Modem αυτό σου απαντάει, θα πρέπει να διαβάζεις την απάντησή του, γιατί μπορεί να σου επιστρέφει ένα σφάλμα (ERROR) με τον κωδικό του σφάλματος ή ΟΚ, όταν όλα πάνε καλά ή κάποιο άλλο συμβάν, το οποίο μπορεί να είναι και ασύγχρονο... Για παράδειγμα, για να επιβεβαιώσει ο μC ότι το modem είναι σε θέση να λειτουργήσει, θα πρέπει να πάρει ασύγχρονα ένα at indication από το modem ότι υπάρχει SIM κάρτα στο modem (+WIND: 1), μετά ότι έκανε subscribe στο GSM δίκτυο του παρόχου (+WIND: 7) και τέλος ότι τελείωσε την διαδικασία του initialization (+WIND: 4), οπότε μόνο τότε μπορείς να του στείλεις εντολές (πχ να στείλεις κάποιο SMS), διαφορετικά η συσκευή σου θα πρέπει να υποδηλώσει το αντίστοιχο σφάλμα με κάποιο Led (πχ ένα led ότι ο χρήστης δεν έχει βάλει SIM κάρτα στο modem (ήρθε +WIND: 0 και όχι +WIND: 1), ή ένα led ότι το modem δεν μπόρεσε να συνδεθεί στο δίκτυο, λόγο απώλειας σήματος (δεν ήρθε το +WIND: 7) κτλ... επίσης να μπορείς να ανιχνεύσεις ότι για κάποιο λόγο χάθηκε το δίκτυο (+WIND: 8) και άλλα πολλά...

Θα πρέπει να έχεις σίγουρα αμφίδρομη επικοινωνία...

Link to comment
Share on other sites

Εννοούσα κατα κύριο λόγο τη μεταφορά δεδομένων, τον σκοπό μας δηλαδή...Το handshaking απ' όσο μελέτησα έτσι οπως θα το κάνω με το crossover καλώδιο νομιζω πως είναι οκ. Απλά όντως όπως το διατύπωσα ειναι λάθος, απλά εννοούσατη ροή δεδομένων της εφαρμογής μας.

Για crossover βρήκα αυτο εδώ το diagramm...

1 FG (see notes) A lot depends on the

equipment that you are

2 TXD -------\/------- TXD 3 connecting together, and

3 RXD <------/\------> RXD 2 there is really no

substitute for a decent

4 RTS -------\/------- RTS 7 manual (sadly a rare thing

5 CTS <------/\------> CTS 8 these days).

20 DTR -------\/------- DTR 4 For instance, I read the

6 DSR <--+---/\---+--> DSR 6 other day that the Wyse 55

8 DCD <--' `--> DCD 1 terminals do not implement

the RTS and CTS lines

7 SG ---------------- SG 5 commonly used for hardware

flow control.

Αφορά βέβαια και DB-25 καλώδιο αλλα εμας μας νοιάζουν τα signals...

Link to comment
Share on other sites

Έχε υπόψη ότι το handshaking δεν είναι υποχρεωτικό, γιατί το modem έχει auto-sense και αν του μιλήσεις χωρίς handshaking, το καταλαβαίνει και συνεχίζει την επικοινωνία κανονικά... (κοινώς χρειάζεσαι μόνο TX, RX και GND)...

Βγάζοντας το handshaking, θα κερδίσεις σε ταχύτητα ανάπτυξης και είναι στο χέρι σου να μην χάσεις σε ασφάλεια, αν ο τρόπος που κάνεις monitor την σειριακή επικοινωνία είναι σωστός, δηλαδή περιμένεις απαντήσεις και έχεις σωστά timeouts...

Ρίξε περισσότερο βάρος στο state machine των εντολών-απαντήσεων, μεταξύ μC και modem... αν αυτό το κάνεις να είναι σταθερό και προβλέψεις το state machine να μπορεί να επαναφέρει τον εαυτό του ακόμα και σε τραγικά σφάλματα, τότε έχεις τελειώσει μεγαλύτερο μέρος από το μισό του project...

εδιτ: To handshaking δεν είναι σε καμία περίπτωση άχρηστο, είναι πάρα πολύ σημαντικό σε περιβάλλοντα λειτουργίας με μεγάλο ηλεκτρομαγνητικό θόρυβο ή πολύ μεγάλες αποστάσεις καλωδίων... είναι στην δική σου κρίση σαν σχεδιαστής, να αποφασίσεις σε τι περιβάλλον θα λειτουργήσει η συσκευή σου και να επιλέξεις το αντίστοιχο...

Link to comment
Share on other sites

Kαλησπέρα και χρόνια πολλα! Καλα χριστούγεννα!

Μπορεί να είναι γιορτινές μέρες αλλά το modem είναι στο επίκεντρο.

Φτιάχτηκε ένα handmade adaptorακι που έπαιξε κανονικά με τη μία! Δηλαδή μέσα απο το hercules στείλαμε κανονικά ένα sms σε κινητο. Ολα αυτά σε Windows 7 και με προεγκατεστημένο έναν usb to serial adaptor.

Η περιπέτεια μας ξεκινάει τώρα που πήγαμε να βάλουμε τον ίδιο usb to serial σε windows XP. Εγκαταστήσαμε τους οδηγούς για τον adaptor (EQUIP 133322 USB TO SERIAL (DB/9M) - CONVERTERS - E-SHOP.GR και equip - Products and Solutions) και επίσης βάλαμε στο hercules τις ρυθμίσεις που ειχαν δοκιμαστει στο άλλο laptop (αυτό αυτές τις μέρες δεν είναι διαθέσιμο οπότε γι' αυτό παιδευομαστε με τα XP)

Η COΜ πόρτα δημιουργείται στο device manager, ανοίγει απο το hercules αλλα φαίνεται σαν να ειναι τελειως νεκρή. Οτι και να στείλουμε δεν βγάζει ούτε error ούτε τπτ. Δώσαμε κα ATE1 που ανοιγει υποτίθεται το echo της συσκευής αλλα πάλι τίποτα. Μήπως μας διαφευγει κάτι; Μάλλον πως κάτι δεν καναμε καλα στην εγκατασταση του usb to serial adapter...

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Δημιουργία...

Important Information

Ο ιστότοπος theLab.gr χρησιμοποιεί cookies για να διασφαλίσει την καλύτερη εμπειρία σας κατά την περιήγηση. Μπορείτε να προσαρμόσετε τις ρυθμίσεις των cookies σας , διαφορετικά θα υποθέσουμε ότι είστε εντάξει για να συνεχίσετε.