Πίνακας περιεχομένων:
- Βήμα 1: Σχεδιασμός του PCB
- Βήμα 2: Σχεδιασμός του πρωτοκόλλου
- Βήμα 3: Σχεδιασμός του υλικολογισμικού
- Βήμα 4: Διασύνδεση μέσω κωδικού ροής
- Βήμα 5: Άλλες μέθοδοι διασύνδεσης
- Βήμα 6: Τελικό προϊόν
Βίντεο: Ενσωματωμένη πλακέτα Universal Interface - Έλεγχος USB/Bluetooth/WIFI: 6 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:36
Συχνά βρίσκω ότι δημιουργώ βιβλιοθήκες για νέες ενσωματωμένες μονάδες από την αρχή με βάση το φύλλο δεδομένων της συσκευής. Κατά τη δημιουργία της βιβλιοθήκης, βρίσκομαι κολλημένος σε έναν κύκλο κώδικα, μεταγλωττίζω, προγραμματίζω και δοκιμάζω όταν διασφαλίζω ότι τα πράγματα λειτουργούν και είναι χωρίς σφάλματα. Συχνά ο χρόνος μεταγλώττισης και προγραμματισμού μπορεί να είναι πολύ μεγαλύτερος από τον χρόνο που απαιτείται για την επεξεργασία του κώδικα και έτσι ένας τρόπος για την αποκοπή αυτών των βημάτων κατά την ανάπτυξη θα ήταν πολύ βολικός.
Επίσης, συχνά βρίσκω ότι θέλω να διασυνδέσω μια ενσωματωμένη μονάδα με έναν υπολογιστή. Εάν η μονάδα δεν έχει συγκεκριμένη σύνδεση USB, κάτι που συμβαίνει συχνά, τότε γενικά πρέπει να αγοράσετε έναν υπερτιμημένο μετατροπέα USB που θα κάνει μια μόνο δουλειά, όπως απλά SPI ή απλώς I2C.
Για αυτούς τους λόγους αποφάσισα να δημιουργήσω την πλακέτα γενικής διεπαφής. Έχει σχεδιαστεί για να επιτρέπει την εύκολη επικοινωνία που βασίζεται σε υπολογιστή με ενσωματωμένες μονάδες.
Οι ενσωματωμένες λειτουργίες διεπαφής του πίνακα για τις οποίες αποφάσισα περιλαμβάνουν.
- Digitalηφιακό I/O
- I2C
- SPI
- UART
- PWM
- Βοηθητικό μοτέρ
- Είσοδος ADC
- Έξοδος DAC
Όλα αυτά μπορούν να χρησιμοποιηθούν εντελώς ανεξάρτητα.
Ο πίνακας διασύνδεσης μπορεί να ελεγχθεί μέσω σύνδεσης USB με τον υπολογιστή, αλλά διαθέτει επίσης προαιρετικές συνδέσεις μονάδων WIFI ή Bluetooth για να επιτρέψει τη χρήση της πλακέτας από απόσταση ή σε σενάριο τύπου IoT.
Χρησιμοποιώντας τις τυπικές κεφαλίδες SIL 2,54 mm, είναι δυνατή η απευθείας σύνδεση θηλυκών καλωδίων dupont μεταξύ της πλακέτας και της ενσωματωμένης μονάδας, επιτρέποντας γρήγορες, αξιόπιστες και χωρίς συγκόλληση συνδέσεις.
Σκέφτηκα επίσης να προσθέσω πράγματα όπως CAN, LIN, H-bridge κλπ, αλλά αυτά μπορεί να έρθουν αργότερα με μια αναθεώρηση v2.
Βήμα 1: Σχεδιασμός του PCB
Κατά το σχεδιασμό του PCB μου αρέσει να προσπαθώ και να διατηρώ τα πράγματα όσο το δυνατόν πιο απλά. Όταν πρόκειται να χτίσετε σανίδες με το χέρι, είναι σημαντικό να προσθέτετε εξαρτήματα μόνο όταν έχουν συγκεκριμένο σκοπό και να χρησιμοποιείτε όσο το δυνατόν περισσότερα εσωτερικά χαρακτηριστικά του μικροελεγκτή.
Κοιτάζοντας τον προτιμώμενο προμηθευτή ηλεκτρονικών ειδών, βρήκα ένα τσιπ με το οποίο ήμουν άνετος που είχε τις δυνατότητες που έψαχνα και ήταν ένα λογικό κόστος. Το τσιπ στο οποίο προσγειώθηκα ήταν το PIC18F24K50.
Με τις διαθέσιμες 23 ακίδες εισόδου/εξόδου αυτό μου επέτρεψε αυτές τις δυνατότητες
- Digtal I/O
- I2C
- SPI
- UART
- PWM x 2
- Servo Motor x 6
- Είσοδος ADC x 3
- Έξοδος DAC x 1
- Είσοδος/έξοδος από 5V ή 3V3
- LED κατάστασης
Ένα μειονέκτημα του IC που επέλεξα είναι ότι έχει μόνο ένα περιφερειακό UART και έτσι η χρήση της μεθόδου ελέγχου Bluetooth ή Wifi θα σας σταματήσει να μπορείτε να χρησιμοποιήσετε τη σύνδεση UART.
Στις παραπάνω εικόνες φαίνονται το τελικό σχήμα και το PCB.
Βήμα 2: Σχεδιασμός του πρωτοκόλλου
Το πρώτο βήμα στο σχεδιασμό του πρωτοκόλλου είναι να αποφασίσετε τι συγκεκριμένα θα χρειαστείτε για να μπορέσετε να κάνετε τον πίνακα. Η διάσπαση των πραγμάτων προσθέτει ένα καλύτερο επίπεδο ελέγχου, ενώ ο συνδυασμός των πραγμάτων απλοποιεί τη διεπαφή και μειώνει την κυκλοφορία comms μεταξύ του πίνακα και του υπολογιστή. Είναι ένα παιχνίδι ισορροπίας και δύσκολο να τελειοποιηθεί.
Για κάθε λειτουργία του πίνακα θα πρέπει να υποδείξετε τυχόν παραμέτρους και επιστροφές. Για παράδειγμα, μια συνάρτηση ανάγνωσης μιας εισόδου ADC μπορεί να έχει μια παράμετρο για τον καθορισμό της εισόδου στο δείγμα και μια τιμή επιστροφής που περιέχει το αποτέλεσμα.
Στο σχέδιό μου εδώ είναι η λίστα των λειτουργιών που ήθελα να συμπεριλάβω:
-
Digitalηφιακό I/O
- SetPin (PinNumber, State)
- Κατάσταση = GetPin (PinNumber)
-
SPI
- Αρχικοποίηση (Λειτουργία SPI)
- DataIn = Μεταφορά (DataOut)
- ControlChipSelect (κανάλι, κατάσταση)
- SetPrescaler (Τιμή)
-
I2C
- Αρχικοποίηση ()
- Έναρξη ()
- Επανεκκίνηση ()
- Να σταματήσει ()
- SlaveAck = Αποστολή (DataOut)
- DataIn = Λήψη (Τελευταίο)
-
UART
- Αρχικοποίηση ()
- Byte TX (DataOut)
- BytesAvailable = RX Count ()
- DataIn = RX Byte ()
-
SetBaud (Baud)
-
PWM
- Ενεργοποίηση (κανάλι)
- Απενεργοποίηση (κανάλι)
- SetFrequency (κανάλι, συχνότητα)
- GetMaxDuty (καθήκον)
- SetDuty (καθήκον)
-
Servo
- Ενεργοποίηση (κανάλι)
- Απενεργοποίηση (κανάλι)
- SetPosition (κανάλι, θέση)
-
ADC
ADCsample = Δείγμα (Κανάλι)
-
DAC
- επιτρέπω
- Καθιστώ ανίκανο
- SetOutput (Τάση)
-
WIFI
- SetSSID (SSID)
- Ορισμός κωδικού πρόσβασης (κωδικός πρόσβασης)
- Κατάσταση = CheckConnectionStatus ()
- IP = GetIPAddress ()
Οι παράμετροι εμφανίζονται στις αγκύλες και οι αποδόσεις εμφανίζονται πριν από το σύμβολο ίσα.
Πριν ξεκινήσω την κωδικοποίηση, εκχωρώ σε κάθε συνάρτηση έναν κωδικό εντολής που ξεκινά από το 128 (δυαδικό 0b10000000) και λειτουργεί προς τα πάνω. Τεκμηριώνω πλήρως το πρωτόκολλο για να διασφαλίσω ότι μόλις το κεφάλι μου είναι στον κώδικα, έχω ένα ωραίο έγγραφο για να αναφερθώ ξανά. Το πλήρες έγγραφο πρωτοκόλλου για αυτό το έργο επισυνάπτεται και περιλαμβάνει εισερχόμενους κωδικούς εντολών και πλάτη δυαδικών ψηφίων.
Βήμα 3: Σχεδιασμός του υλικολογισμικού
Μόλις καθιερωθεί το πρωτόκολλο, πρόκειται για περίπτωση εφαρμογής της λειτουργικότητας στο υλικό.
Υιοθετώ μια απλή προσέγγιση τύπου τύπου μηχανής κατά την ανάπτυξη συστημάτων υποτελείων για να προσπαθήσω και να μεγιστοποιήσω την πιθανή απόδοση εντολών και δεδομένων διατηρώντας το υλικολογισμικό απλό στην κατανόηση και τον εντοπισμό σφαλμάτων. Ένα πιο προηγμένο σύστημα όπως το Modbus θα μπορούσε να χρησιμοποιηθεί αν χρειάζεστε καλύτερη αλληλεπίδραση με άλλες συνδεδεμένες συσκευές, αλλά αυτό προσθέτει επιβάρυνση που θα επιβραδύνει τα πράγματα.
Το μηχάνημα κατάστασης αποτελείται από τρεις καταστάσεις:
1) Αναμονή εντολών
2) Λήψη παραμέτρων
3) Απάντηση
Οι τρεις καταστάσεις αλληλεπιδρούν ως εξής:
1) Περνάμε τα εισερχόμενα byte στο buffer μέχρι να έχουμε ένα byte που έχει το πιο σημαντικό bit. Μόλις λάβουμε ένα τέτοιο byte το ελέγχουμε με μια λίστα γνωστών εντολών. Αν βρούμε μια αντιστοίχιση τότε εκχωρούμε τον αριθμό των byte παραμέτρων και επιστρέφουμε bytes για να ταιριάξουμε με το πρωτόκολλο. Εάν δεν υπάρχουν bytes παραμέτρων, τότε μπορούμε να εκτελέσουμε την εντολή εδώ και είτε να μεταβούμε στην κατάσταση 3 είτε να κάνουμε επανεκκίνηση της κατάστασης 1. Εάν υπάρχουν bytes παραμέτρων, τότε μεταβαίνουμε στην κατάσταση 2.
2) Περνάμε τα εισερχόμενα byte αποθηκεύοντάς τα μέχρι να αποθηκεύσουμε όλες τις παραμέτρους. Μόλις έχουμε όλες τις παραμέτρους εκτελούμε την εντολή. Εάν υπάρχουν byte επιστροφής, τότε περνάμε στο στάδιο 3. Εάν δεν υπάρχουν byte επιστροφής για αποστολή, επιστρέφουμε στο στάδιο 1.
3) Περνάμε τα εισερχόμενα bytes και για κάθε byte αντικαθιστούμε το byte echo με ένα έγκυρο byte επιστροφής. Μόλις στείλουμε όλα τα bytes επιστροφής επιστρέφουμε στο στάδιο 1.
Χρησιμοποίησα το Flowcode για να σχεδιάσω το υλικολογισμικό καθώς δείχνει όμορφα οπτικά αυτό που κάνω. Το ίδιο πράγμα θα μπορούσε να γίνει εξίσου καλά στο Arduino ή σε άλλες ενσωματωμένες γλώσσες προγραμματισμού.
Το πρώτο βήμα είναι η δημιουργία επικοινωνιών με τον υπολογιστή. Για να γίνει αυτό, το micro πρέπει να διαμορφωθεί για να λειτουργεί με τη σωστή ταχύτητα και πρέπει να προσθέσουμε κώδικα για να οδηγήσουμε τα περιφερειακά USB και UART. Στο Flowcode αυτό είναι τόσο εύκολο όσο η μεταφορά στο έργο ενός σειριακού στοιχείου USB και ενός στοιχείου UART από το μενού στοιχείων Comms.
Προσθέτουμε μια διακοπή RX και ένα buffer για να πιάσουμε τις εισερχόμενες εντολές στο UART και κάνουμε τακτική δημοσκόπηση του USB. Στη συνέχεια, μπορούμε στη διαδικασία αναψυχής μας το buffer.
Επισυνάπτονται το έργο Flowcode και ο κωδικός C που δημιουργήθηκε.
Βήμα 4: Διασύνδεση μέσω κωδικού ροής
Η προσομοίωση Flowcode είναι πολύ ισχυρή και μας επιτρέπει να δημιουργήσουμε ένα στοιχείο για να μιλήσουμε στον πίνακα. Κατά τη δημιουργία του στοιχείου μπορούμε τώρα απλά να σύρουμε το στοιχείο στο έργο μας και να έχουμε άμεσα διαθέσιμες τις λειτουργίες του πίνακα. Ως πρόσθετο μπόνους, οποιοδήποτε υπάρχον στοιχείο που έχει περιφερειακό SPI, I2C ή UART μπορεί να χρησιμοποιηθεί στην προσομοίωση και τα δεδομένα comms μπορούν να διοχετευτούν στον πίνακα διασύνδεσης μέσω ενός στοιχείου Injector. Οι συνημμένες εικόνες δείχνουν ένα απλό πρόγραμμα εκτύπωσης ενός μηνύματος στην οθόνη. Τα δεδομένα επικοινωνίας που αποστέλλονται μέσω της πλακέτας διασύνδεσης στο πραγματικό υλικό της οθόνης και τη ρύθμιση των εξαρτημάτων με στοιχεία I2C Display, I2C Injector και Interface Board.
Η νέα λειτουργία SCADA για το Flowcode 8.1 είναι ένα απόλυτο πρόσθετο πλεονέκτημα στο ότι μπορούμε στη συνέχεια να πάρουμε ένα πρόγραμμα που κάνει κάτι στον προσομοιωτή Flowcode και να το εξάγουμε έτσι ώστε να λειτουργεί μόνο του σε οποιονδήποτε υπολογιστή χωρίς προβλήματα αδειοδότησης. Αυτό θα μπορούσε να είναι εξαιρετικό για έργα όπως δοκιμαστικές εγκαταστάσεις ή συστάδες αισθητήρων.
Χρησιμοποιώ αυτήν τη λειτουργία SCADA για να δημιουργήσω το εργαλείο διαμόρφωσης WIFI που μπορεί να χρησιμοποιηθεί για τη διαμόρφωση του SSID και του κωδικού πρόσβασης, καθώς και για τη συλλογή της διεύθυνσης IP της μονάδας. Αυτό μου επιτρέπει να ρυθμίσω τα πάντα χρησιμοποιώντας τη σύνδεση USB και στη συνέχεια να μεταφερθώ σε σύνδεση δικτύου WIFI μόλις εκτελούνται τα πράγματα.
Επισυνάπτονται ορισμένα παραδείγματα έργων.
Βήμα 5: Άλλες μέθοδοι διασύνδεσης
Εκτός από το Flowcode, μπορείτε να χρησιμοποιήσετε τη γλώσσα επιλογής προγραμματισμού για να επικοινωνήσετε με την πλακέτα διεπαφής. Χρησιμοποιήσαμε το Flowcode καθώς είχε ήδη μια βιβλιοθήκη με εξαρτήματα που θα μπορούσαμε να ξεκινήσουμε να λειτουργούμε αμέσως, αλλά αυτό ισχύει και για πολλές άλλες γλώσσες.
Ακολουθεί μια λίστα με γλώσσες και μεθόδους επικοινωνίας με την πλακέτα διασύνδεσης.
Python - Χρήση σειριακής βιβλιοθήκης για ροή δεδομένων σε θύρα COM ή διεύθυνση IP
Matlab - Χρήση εντολών File για ροή δεδομένων σε θύρα COM ή διεύθυνση IP
C ++ / C# / VB - Χρησιμοποιώντας είτε ένα προκαθορισμένο DLL, απευθείας πρόσβαση στη θύρα COM είτε στα Windows TCP / IP API
Labview - Χρησιμοποιώντας είτε ένα προκαθορισμένο DLL, το σειριακό στοιχείο VISA είτε το στοιχείο TCP/IP
Εάν κάποιος θέλει να δει τις παραπάνω γλώσσες να εφαρμόζονται, παρακαλώ ενημερώστε με.
Βήμα 6: Τελικό προϊόν
Το τελικό προϊόν θα είναι πιθανότατα ένα σημαντικό χαρακτηριστικό στο ενσωματωμένο κιτ εργαλείων μου για τα επόμενα χρόνια. Δη με βοήθησε να αναπτύξω εξαρτήματα για διάφορες οθόνες και αισθητήρες Grove. Μπορώ τώρα να βάλω τον κωδικό εντελώς καρφωμένο πριν καταφύγω σε οποιαδήποτε απατηλή συλλογή ή προγραμματισμό.
Έχω μοιράσει ακόμη και κάποιους πίνακες για συναδέλφους, ώστε να βελτιώσουν επίσης τη ροή της εργασίας τους και έχουν γίνει πολύ καλά.
Ευχαριστώ που διαβάσατε το Instructable μου, ελπίζω να το βρήκατε χρήσιμο και ελπίζω ότι θα σας εμπνεύσει να δημιουργήσετε τα δικά σας εργαλεία για να επιταχύνετε την παραγωγικότητά σας.
Συνιστάται:
Φτηνός διανομέας NMEA/AIS - RS232 to Wifi Bridge για ενσωματωμένη χρήση: 6 βήματα
Φτηνός διανομέας NMEA /AIS - RS232 στο Wifi Bridge για ενσωματωμένη χρήση: Ενημέρωση 9 Ιανουαρίου 2021 - Προστέθηκε επιπλέον σύνδεση TCP και επαναχρησιμοποίηση της τελευταίας σύνδεσης εάν συνδεθούν περισσότεροι πελάτες Ενημέρωση 13 Δεκεμβρίου 2020 - Δεν προστέθηκε καμία έκδοση διαμόρφωσης του κώδικα για σκάφη με υπάρχοντα δρομολογητές Εισαγωγή Αυτό το NMEA / Η γέφυρα AIS RS232 to WiFi είναι
Ενσωματωμένη οθόνη LED Arduino Games: 7 βήματα (με εικόνες)
Ενσωματωμένη οθόνη LED Arduino Games: γνωστή και ως σύστημα παιχνιδιών LED Ladder Display. Ένα Attiny-85 εξοπλισμένο με υλικό και λογισμικό για αναπαραγωγή πακέτων δράσης " βίντεο " παιχνίδια, σε ενσωματωμένη οθόνη LED. Διαθέτει οθόνη πολυμέσων 12 σκαλοπατιών LED και υποστηρίζει έως 6 εισόδους κουμπιών και οπτικό
Ενσωματωμένη κυλινδρική θήκη ασφάλειας (συνδετήρες): 15 βήματα (με εικόνες)
Ενσωματωμένη κυλινδρική θήκη ασφάλειας (Συνδέσεις): Αυτό το διδακτικό είναι για τις κυλινδρικές βάσεις ασφαλειών από γυαλί που δημιουργήθηκαν στο TinkerCAD. Αυτό το έργο ξεκίνησε τον Ιούνιο και συμμετείχε στον διαγωνισμό σχεδιασμού TinkerCAD. Υπάρχουν δύο τύποι ασφαλειών, ένας για τα κοινά 5x20mm και ένας για τους
Vertical Bartop Arcade με ενσωματωμένη οθόνη LED PIXEL: 11 βήματα (με εικόνες)
Vertical Bartop Arcade Με ενσωματωμένη οθόνη PIXEL LED: **** Ενημερώθηκε με νέο λογισμικό Ιούλιος 2019, λεπτομέρειες εδώ ****** Ένα bartop arcade build με τη μοναδική δυνατότητα που αλλάζει το περίβλημα LED μήτρας για να ταιριάζει με το επιλεγμένο παιχνίδι. Η τέχνη του χαρακτήρα στις πλευρές του ντουλαπιού είναι ένθετα κομμένα με λέιζερ και όχι κολλητικά
Πώς να χρησιμοποιήσετε το Arduino WeMos D1 WiFi UNO ESP8266 IOT IDE Συμβατή πλακέτα χρησιμοποιώντας το Blynk: 10 βήματα
Πώς να χρησιμοποιήσετε το Arduino WeMos D1 WiFi UNO ESP8266 IOT IDE Συμβατό πίνακα χρησιμοποιώντας το Blynk: Arduino WeMos D1 WiFi UNO ESP8266 IOT IDE Συμβατή πλακέτα Περιγραφή: WiFi ESP8266 Πίνακας Ανάπτυξης WEMOS D1. Το WEMOS D1 είναι ένας πίνακας ανάπτυξης WIFI που βασίζεται στο ESP8266 12E. Η λειτουργία είναι παρόμοια με αυτή του NODEMCU, εκτός από το ότι το υλικό είναι κατασκευασμένο