Πίνακας περιεχομένων:
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2025-01-13 06:57
Έχοντας ένα παλιό σύστημα μοντέλου τρένου κλίμακας TT, είχα μια ιδέα πώς να ελέγξω τα locos ξεχωριστά.
Έχοντας αυτό κατά νου, προχώρησα ένα βήμα παραπέρα και κατάλαβα τι χρειάζεται όχι μόνο για τον έλεγχο των τρένων αλλά και για να έχω κάποιες πρόσθετες πληροφορίες για ολόκληρη τη διάταξη και να ελέγξω κάτι άλλο (λαμπτήρες, διακόπτες σιδηροδρόμων …)
Έτσι γεννιέται το μοντέλο συστήματος τρένων με ελεγχόμενο WiFi.
Βήμα 1: Προβλέψεις λειτουργίας
Η κύρια αρχή είναι ο έλεγχος κάθε στοιχείου ξεχωριστά, είτε από έναν μόνο ελεγκτή είτε από πολλαπλές πηγές ελέγχου. Αυτό χρειάζεται εγγενώς ένα κοινό φυσικό επίπεδο - προφανώς WiFi - και ένα κοινό πρωτόκολλο επικοινωνίας, το MQTT.
Το κεντρικό στοιχείο είναι ο μεσίτης MQTT. Κάθε συνδεδεμένη συσκευή (τρένο, αισθητήρας, έξοδος …) επιτρέπεται να επικοινωνεί μόνο μέσω του Μεσίτη και μπορεί να λαμβάνει δεδομένα μόνο από τον Μεσίτη.
Η καρδιά των συσκευών είναι ένας ελεγκτής WiFi βασισμένος σε ESP8266, ενώ ο μεσίτης MQTT λειτουργεί με Raspberry pi.
Στην αρχή, η κάλυψη Wifi παρέχεται από έναν δρομολογητή WiFi και όλα συνδέονται μέσω ασύρματου δικτύου.
Υπάρχουν 4 τύποι συσκευών:
- Ελεγκτής τρένου: διαθέτει 2 ψηφιακές εισόδους, 1 ψηφιακή έξοδο, 2 εξόδους PWM (για τον έλεγχο 2 μεμονωμένων κινητήρων DC), - Ελεγκτής αισθητήρα: διαθέτει 7 ψηφιακές εισόδους (για διακόπτες εισόδου, οπτοαισθητήρες …), - Ελεγκτής εξόδου: έχει 8 ψηφιακές εξόδους (για διακόπτες σιδηροδρόμων…), - Τηλεχειριστήριο WiFi: διαθέτει 1 πρόσθετη είσοδο κωδικοποιητή, 1 ψηφιακή είσοδο (για τον έλεγχο τρένων από απόσταση).
Το σύστημα είναι επίσης ικανό να λειτουργεί από το Node-Red (από tablet, υπολογιστή ή smartphone…).
Βήμα 2: Ανταλλαγή και διαμόρφωση δεδομένων MQTT
Με βάση το πρωτόκολλο MQTT, στην αρχή κάθε συσκευή εγγράφεται σε ένα δεδομένο θέμα και μπορεί να δημοσιεύσει σε ένα άλλο θέμα. Αυτή είναι η βάση της επικοινωνίας του δικτύου ελέγχου τρένων.
Αυτές οι ιστορίες επικοινωνίας τοποθετούνται μέσω μηνυμάτων μορφοποιημένων JSON, για να είναι σύντομες και αναγνώσιμες από τον άνθρωπο.
Κοιτάζοντας από μια άλλη προοπτική: Το δίκτυο διαθέτει δρομολογητή WiFi με το δικό του SSID (όνομα δικτύου) και κωδικό πρόσβασης. Κάθε συσκευή πρέπει να γνωρίζει αυτά τα 2 για πρόσβαση στο δίκτυο WiFi. Ο μεσίτης MQTT είναι επίσης μέρος αυτού του δικτύου, οπότε για να χρησιμοποιήσετε το πρωτόκολλο MQTT κάθε συσκευή πρέπει να γνωρίζει τη διεύθυνση IP του μεσίτη. Και τέλος κάθε συσκευή έχει το δικό της θέμα για εγγραφή και δημοσίευση μηνυμάτων.
Πρακτικά, ένα δεδομένο τηλεχειριστήριο χρησιμοποιεί το ίδιο θέμα για τη δημοσίευση μηνυμάτων για τα οποία έχει εγγραφεί ένα δεδομένο τρένο.
Βήμα 3: Ελεγκτής τρένου
Για να ελέγξουμε ένα τρένο παιχνιδιών, βασικά χρειαζόμαστε 3 πράγματα: ένα τροφοδοτικό, ένα χειριστήριο με δυνατότητα WiFi και ηλεκτρονικά ηλεκτρονικά προγράμματα οδήγησης.
Η τροφοδοσία εξαρτάται από το πραγματικό σχέδιο χρήσης: σε περίπτωση LEGO, αυτό είναι το κουτί μπαταρίας Power Functions, σε περίπτωση τρένου «oldschool» TT ή H0, είναι το τροφοδοτικό 12V της πίστας.
Το χειριστήριο με δυνατότητα WiFi είναι χειριστήριο Wemos D1 mini (βασισμένο σε ESP8266).
Τα ηλεκτρονικά του οδηγού κινητήρα είναι μια μονάδα βασισμένη στο TB6612.
Ο ελεγκτής τρένου διαθέτει 2 εξατομικευμένα έξοδο PWM. Το ένα χρησιμοποιείται για έλεγχο κινητήρα και το άλλο χρησιμοποιείται για φωτεινή σηματοδότηση. Διαθέτει 2 εισόδους για ανίχνευση επαφής με καλάμια και μία ψηφιακή έξοδο.
Ο ελεγκτής δέχεται μηνύματα JSON μέσω WiFi και πρωτοκόλλου MQTT.
Το SPD1 ελέγχει τον κινητήρα, για παράδειγμα: Το μήνυμα {"SPD1": -204} χρησιμοποιείται για να μετακινήσει τον κινητήρα προς τα πίσω με ισχύ 80% (η μέγιστη τιμή ταχύτητας είναι -255).
Το SPD2 ελέγχει την ένταση του φωτός LED "ευαίσθητης στην κατεύθυνση": Το μήνυμα {"SPD2": -255} κάνει το LED (προς τα πίσω) να λάμπει σε όλη του τη δύναμη.
Το OUT1 ελέγχει την κατάσταση της ψηφιακής εξόδου: {"OUT1": 1} ενεργοποιεί την έξοδο.
Εάν αλλάξει η κατάσταση μιας εισόδου, ο ελεγκτής στέλνει ένα μήνυμα σύμφωνα με αυτό: {"IN1": 1}
Εάν ο ελεγκτής λάβει ένα έγκυρο μήνυμα, το εκτελεί και παρέχει ανατροφοδότηση στον μεσίτη. Η ανατροφοδότηση είναι η πραγματικά εκτελεσμένη εντολή. Για παράδειγμα: εάν ο μεσίτης στείλει {"SPD1": 280} τότε ο κινητήρας λειτουργεί σε πλήρη ισχύ, αλλά το μήνυμα ανατροφοδότησης θα είναι: {"SPD1": 255}
Βήμα 4: LEGO Train Control
Στην περίπτωση του τρένου LEGO, τα σχήματα είναι λίγο διαφορετικά.
Η ισχύς προέρχεται απευθείας από το κουτί της μπαταρίας.
Υπάρχει ανάγκη για ένα μίνι μετατροπέα υποβάθμισης για παροχή 3,5V για την πλακέτα Lolin με βάση το ESP8266.
Οι συνδέσεις γίνονται με ένα σύρμα επέκτασης LEGO 8886, κομμένο στη μέση.
Βήμα 5: Τηλεχειριστήριο
Ο ελεγκτής δημοσιεύει μόνο μηνύματα στην αμαξοστοιχία (ορίζεται από το διακόπτη BCD).
Περιστρέφοντας τον κωδικοποιητή, το τηλεχειριστήριο στέλνει μηνύματα είτε {"SPD1": "+"} είτε {"SPD1": "-"}.
Όταν η αμαξοστοιχία λαμβάνει αυτό το μήνυμα "αυξητικού τύπου", αλλάζει την τιμή εξόδου PWM κατά 51 ή -51.
Με αυτόν τον τρόπο το τηλεχειριστήριο μπορεί να αλλάξει την ταχύτητα του τρένου σε 5 βήματα (κάθε κατεύθυνση).
Πατώντας τον πρόσθετο κωδικοποιητή, θα αποσταλεί {"SPD1": 0}.
Βήμα 6: Ελεγκτής αισθητήρα
Ο επονομαζόμενος ελεγκτής αισθητήρων μετρά τις καταστάσεις των εισόδων του και, εάν αλλάξει κάποια από αυτές, δημοσιεύει αυτήν την τιμή.
Για παράδειγμα: {"IN1": 0, "IN6": 1} σε αυτό το παράδειγμα 2 εισόδους άλλαξαν ταυτόχρονα κατάσταση.
Βήμα 7: Ελεγκτής εξόδου
Ο ελεγκτής εξόδου έχει 8 ψηφιακές εξόδους, οι οποίες είναι συνδεδεμένες σε μονάδα βασισμένη σε ULN2803.
Λαμβάνει μηνύματα μέσω του εγγεγραμμένου θέματος.
Για παράδειγμα, το μήνυμα {"OUT4": 1, "OUT7": 1} ενεργοποιεί την ψηφιακή έξοδο 4. και 7..
Βήμα 8: Raspberry Pi και WiFi Router
Είχα χρησιμοποιημένο δρομολογητή TP-Link WiFI, οπότε το χρησιμοποίησα ως Σημείο Πρόσβασης.
Ο μεσίτης MQTT είναι ένα Raspberry Pi με εγκατεστημένο το Mosquitto.
Χρησιμοποιώ το τυπικό λειτουργικό σύστημα Raspbian με MQTT ενσωματωμένο με:
sudo apt-get install mosquitto mosquitto-clients python-mosquitto
Ο δρομολογητής TP-Link πρέπει να έχει ρυθμιστεί ώστε να έχει κράτηση διεύθυνσης για το Raspberry, οπότε μετά από κάθε επανεκκίνηση το Pi έχει την ίδια διεύθυνση IP και κάθε συσκευή μπορεί να συνδεθεί σε αυτό.
Και αυτό είναι!
Βήμα 9: Τελικοί ελεγκτές
Εδώ είναι οι τελικοί ελεγκτές.
Το loko της κλίμακας TT έχει τόσο μικρό μέγεθος που μια σανίδα Lolin έπρεπε να στενεύσει (να κοπεί) για να είναι αρκετά μικρή για να χωρέσει στο τρένο.
Μπορείτε να κατεβάσετε τα μεταγλωττισμένα δυαδικά αρχεία. Για λόγους ασφαλείας, η επέκταση κάδου αντικαταστάθηκε σε txt.