Πίνακας περιεχομένων:

Ενσωματωμένη πλακέτα Universal Interface - Έλεγχος USB/Bluetooth/WIFI: 6 βήματα
Ενσωματωμένη πλακέτα Universal Interface - Έλεγχος USB/Bluetooth/WIFI: 6 βήματα

Βίντεο: Ενσωματωμένη πλακέτα Universal Interface - Έλεγχος USB/Bluetooth/WIFI: 6 βήματα

Βίντεο: Ενσωματωμένη πλακέτα Universal Interface - Έλεγχος USB/Bluetooth/WIFI: 6 βήματα
Βίντεο: How to use ESP32 WiFi and Bluetooth with Arduino IDE full details with examples and code 2024, Νοέμβριος
Anonim
Ενσωματωμένη πλακέτα καθολικής διεπαφής - USB/Bluetooth/WIFI Control
Ενσωματωμένη πλακέτα καθολικής διεπαφής - USB/Bluetooth/WIFI Control
Ενσωματωμένη πλακέτα καθολικής διεπαφής - USB/Bluetooth/WIFI Control
Ενσωματωμένη πλακέτα καθολικής διεπαφής - USB/Bluetooth/WIFI Control

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

Επίσης, συχνά βρίσκω ότι θέλω να διασυνδέσω μια ενσωματωμένη μονάδα με έναν υπολογιστή. Εάν η μονάδα δεν έχει συγκεκριμένη σύνδεση 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
Σχεδιασμός του PCB
Σχεδιασμός του PCB
Σχεδιασμός του PCB
Σχεδιασμός του PCB
Σχεδιασμός του PCB
Σχεδιασμός του PCB
Σχεδιασμός του 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 μου, ελπίζω να το βρήκατε χρήσιμο και ελπίζω ότι θα σας εμπνεύσει να δημιουργήσετε τα δικά σας εργαλεία για να επιταχύνετε την παραγωγικότητά σας.

Συνιστάται: