Πίνακας περιεχομένων:
Βίντεο: Κάντε οποιοδήποτε αισθητήρα από ένα FPGA: 4 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:34
Οι περισσότεροι κατασκευαστές προσπάθησαν να δημιουργήσουν τουλάχιστον μία φορά στη ζωή τους ένα θερμόμετρο, ίσως αυτό που έχουν στο σπίτι δεν είναι αρκετά έξυπνο ή ίσως πιστεύουν ότι μπορούν να κατασκευάσουν το επόμενο NEST. Παρ 'όλα αυτά, κάποια στιγμή είχαν έναν μικροελεγκτή με το υπερσύγχρονο λογισμικό τους συνδεδεμένο με έναν αισθητήρα θερμοκρασίας (και ίσως άλλους αισθητήρες: πίεση, φως). Μέχρι τώρα όλα ήταν τέλεια, το λογισμικό λειτουργεί και ο αισθητήρας ανιχνεύει. Ας το δοκιμάσουμε!
Χμμμ … ίσως πρέπει να ζεστάνει τον αισθητήρα χρησιμοποιώντας πιστολάκι και να τον ψύξει χρησιμοποιώντας πάγο, λειτουργεί για λίγο. Αλλά δεν φαίνεται επαγγελματικό, ο αισθητήρας αλλάζει τιμές πολύ γρήγορα αν τον ζεστάνετε, δεν θερμαίνεται περισσότερο από δύο βαθμούς. Το έργο είναι προτομή! Αλλά ο αλγόριθμος είναι νέος, λαμβάνει υπόψη πολλούς παράγοντες, κρίμα που κόλλησε σε αυτό το ηλίθιο μικρό πράγμα.
Η λύση μου είναι η εξής: κάντε ένα FPGA να λειτουργεί ως αισθητήρας με τιμές που ρέουν από έναν υπολογιστή (ή αποθηκεύονται στη μνήμη ή δημιουργούνται ad-hoc μέσα στο FPGA). Έτσι, για το πολύτιμο MCU σας, το FPGA μοιάζει με αισθητήρα, αλλά όχι με οποιονδήποτε αισθητήρα: όποιος αισθητήρας σας αρέσει. Maybeσως αποφασίσετε ότι χρειάζεστε περισσότερη ανάλυση ή γρηγορότερο χρόνο απόκρισης από τον αναμενόμενο, πρέπει να αλλάξετε τον αισθητήρα. Παραγγείλτε το στο διαδίκτυο, θα φτάσει σε μερικές μέρες, σε μερικούς μήνες, ποιος ξέρει. Στερεώστε το PCB σας ή παραγγείλετε μια μονάδα με τον νέο αισθητήρα. Or… μερικά κλικ και το FPGA έχει διαμορφωθεί ως ο ολοκαίνουργιος αισθητήρας σας και μπορεί να μιμηθεί την ακριβή εσωτερική διαμόρφωση.
Τη στιγμή που γράφω αυτό, το FPGA θα μπορούσε να λειτουργήσει ως LM75 με δεδομένα θερμοκρασίας αποθηκευμένα στο BRAM (στο FPGA).
Βήμα 1: Το MCU
Το MCU της επιλογής μου είναι ένα LPC4337 σε ένα LPCXpresso. Πάνω από αυτό έχω μια ασπίδα (LPC General Purpose Shield) με οθόνη και πραγματικό αισθητήρα LM75. Το LPC4337 είναι ένα ARM Cortex M4 που λειτουργεί στα 200MHz και ένα μικρότερο Cortex M0 (δεν χρησιμοποιείται εδώ). Ο πραγματικός αισθητήρας συνδέεται με περιφερειακό I2C1 και ο εικονικός μας θα συνδεθεί με I2C0. Η πηγή είναι διαθέσιμη στο GitHub μου.
Πώς να το χτίσετε; Κατεβάστε το LPCXpresso IDE μαζί με τη βιβλιοθήκη LPCOpen. Εισαγάγετε τη βιβλιοθήκη στο IDE και ανοίξτε επίσης το έργο από το GitHub. Όλα πρέπει να ρυθμιστούν και μπορείτε να κάνετε κλικ στο "Debug" στην κάτω αριστερή γωνία.
Ολόκληρο το έργο βασίζεται σε ένα από τα παραδείγματα του NXP (για να δείξω ότι το έργο μου προσομοιώνει έναν πραγματικό αισθητήρα και δεν χρειάζεται ειδικό κώδικα από την πλευρά του MCU). Στο κύριο αρχείο (που ονομάζεται iox_sensor.cpp) βρίσκεται αυτός ο κωδικός:
#define SENSORS_ON_SHIELD
#if defined (SENSORS_ON_SHIELD) #define SHIELD_I2C I2C1 #elif defined (SENSORS_ON_FPGA) #define SHIELD_I2C I2C0 #endif
Αλλάζοντας το SENSOR_ON_SHIELD και το SENSOR_OR_FPGA, ο χρήστης μπορεί να αλλάξει κατά τη μεταγλώττιση σε ποιον αισθητήρα θα μιλήσει, τον πραγματικό ή τον εικονικό, καθώς βρίσκονται σε διαφορετικές ακίδες I2C.
Βήμα 2: Το FPGA
Ο πίνακας επιλογής μου FPGA είναι ένα Artix 7 της Digilent, με Xilinx Arty 7. Δύο από τους συνδετήρες PMod χρησιμοποιούνται, ένας για εντοπισμό σφαλμάτων και ένας για πραγματικό ωφέλιμο φορτίο, η σύνδεση με την πλακέτα MCU.
Και πάλι, ο πηγαίος κώδικας για το FPGA είναι διαθέσιμος στο GitHub μου (φάκελος fpgaSide).
Πώς να το χτίσετε; Κατεβάστε, αγοράστε ή ανοίξτε το Xilinx Vivado IDE. Εισαγάγετε τα αρχεία έργου από το GitHub. Ένα από τα αρχεία (content.coe) είναι τα δεδομένα θερμοκρασίας σε ακατέργαστη μορφή που πρόκειται να μεταδοθούν στον ψεύτικο αισθητήρα. Υπάρχει επίσης ένα αρχείο Excel με το ίδιο όνομα που βοηθά στη μετατροπή δεδομένων αναγνώσιμης θερμοκρασίας από τον άνθρωπο σε ακατέργαστα δεδομένα LM75. Σχεδιάζω να το αλλάξω σε μια αυτοματοποιημένη διαδικασία με ένα κομμάτι λογισμικού γραμμένο σε Java, αλλά μέχρι τότε αυτή η λύση λειτουργεί. Η σύνθεση και η υλοποίηση πρέπει να διαρκέσουν λίγο, λάβετε αυτό υπόψη.
Βήμα 3: Πώς λειτουργεί;
Όπως είπα, για το MCU, το FPGA μοιάζει με αισθητήρα, πιο συγκεκριμένα με αισθητήρα I2C. Η έξοδος του περιφερειακού I2C συνδέεται με την είσοδο του FPGA. Μέσα στο FPGA υπάρχουν 3 κύρια συστατικά:- Ελεγκτής I2C- Συσκευή I2C- Δεδομένα Ο ελεγκτής I2C λαμβάνει δεδομένα I2C από τις ακίδες του FPGA και τα στέλνει στα υπόλοιπα FPGA και κάνει το ίδιο με αντίστροφη σειρά. Διατηρεί μια εσωτερική μηχανή κατάστασης για το πρωτόκολλο I2C (παρεμπιπτόντως, εδώ είναι η τεκμηρίωση για αυτό). Τι στέλνει αυτό το στοιχείο στη συσκευή I2C; Το τρέχον byte, θέση αυτού του byte στην τρέχουσα επικοινωνία και αν το MCU γράφει ή διαβάζει από το FPGA. Η συσκευή I2C λαμβάνει τα αποστελλόμενα byte και ενημερώνει την προσομοιωμένη εσωτερική δομή του αισθητήρα. Μπορεί απλώς να ενημερώσει τον δείκτη καταχωρητή ή να ζητήσει νέα δεδομένα από την πηγή δεδομένων. Το στοιχείο δεδομένων μεταδίδει νέα σημεία δεδομένων. Προς το παρόν είναι απλώς μια μνήμη ROM της οποίας η διεύθυνση αυξάνεται (περίπου) δύο φορές το δευτερόλεπτο.
Ποιος είναι ο τελικός μου στόχος; Εμφανίζεται στη δεύτερη εικόνα. Δηλαδή: καταστήστε δυνατή την προσομοίωση περισσότερων συσκευών I2C (αισθητήρες και άλλες) ταυτόχρονα στο FPGA. Τα δεδομένα στο backend του αισθητήρα που αποθηκεύονται στο FPGA και μεταδίδονται από υπολογιστή μέσω USB ή Ethernet. Υποστηρίξτε πιο προηγμένους αισθητήρες και άλλες συσκευές I2C (μνήμη, προγράμματα οδήγησης LED κ.λπ.).
Βήμα 4: Το βάζουμε όλα μαζί
Τώρα είναι η ώρα να τα συνδέσουμε όλα μαζί. Θεωρητικά, είναι απλό: η πλακέτα mcu διαθέτει υποδοχή PMod (I2C0 & SSP0 (μπορεί να λειτουργήσει σαν SPI)). Ο πίνακας Artix διαθέτει 4 υποδοχές PMod που μπορούν να χρησιμοποιηθούν όπως θέλετε. Επιλέγω τον σύνδεσμο D για να μιλήσω με το MCU και τον σύνδεσμο B για να συνδεθώ στο Logic Analyzer μου.
Προειδοποίηση
Δεν μπορείτε να συνδέσετε τους δύο πίνακες μαζί έτσι ακριβώς. Γιατί; Το PMod δημιουργήθηκε για να διευκολύνει τη σύνδεση μιας πλακέτας Master/Host (που δίνει ενέργεια) σε μια πλακέτα Slave/Sensor (που λαμβάνει ενέργεια). Αλλά σε αυτό το έργο και οι δύο πίνακες δίνουν ισχύ και αν συνδέσετε την έξοδο 3.3V από τη μία πλακέτα στην έξοδο 3.3V της άλλης πλακέτας θα μπορούσαν να συμβούν άσχημα πράγματα. Αλλά μπορεί να μην το κάνουν και εσείς απλά να αλλάξετε τις παραμέτρους των ράβδων ισχύος του FPGA (είναι πολύ προσεκτικά σχεδιασμένες). Μην παίρνετε λοιπόν αυτό το ρίσκο και μετακινήστε τη φίσα μία ακίδα προς τα αριστερά (και επίσης γυρίστε την πλακέτα FPGA) όπως φαίνεται στις παραπάνω εικόνες. Εδώ είναι η προδιαγραφή PMod, μπορείτε να τη μελετήσετε, αυτό που έκανα με λίγα λόγια είναι να μην συνδέσω τα VCCs των δύο σανίδων.
Συνιστάται:
Δημιουργήστε ένα ερασιτεχνικό ραδιόφωνο APRS RX Only IGate χρησιμοποιώντας ένα Raspberry Pi και ένα RTL-SDR Dongle σε λιγότερο από μισή ώρα: 5 βήματα
Δημιουργήστε ένα ερασιτεχνικό ραδιόφωνο APRS RX Only IGate χρησιμοποιώντας ένα Raspberry Pi και ένα RTL-SDR Dongle σε λιγότερο από μισή ώρα: Λάβετε υπόψη ότι αυτό είναι τώρα αρκετά παλιό, οπότε ορισμένα μέρη είναι λανθασμένα και παλιά. Τα αρχεία που πρέπει να επεξεργαστείτε έχουν αλλάξει. Έχω ενημερώσει τον σύνδεσμο για να σας δώσω την πιο πρόσφατη έκδοση της εικόνας (χρησιμοποιήστε το 7-zip για να την αποσυμπιέσετε) αλλά για πλήρη εγκατάσταση
Μετατρέψτε (Μόνο Σχετικά) Οποιοδήποτε Αρχείο Μέσων σε (Μόνο Σχετικά) Σε οποιοδήποτε Άλλο Αρχείο Μέσων Δωρεάν!: 4 Βήματα
Μετατροπή (μόνο για) Οποιοδήποτε αρχείο πολυμέσων σε (μόνο για) Σε οποιοδήποτε άλλο αρχείο πολυμέσων Δωρεάν! είναι πιο καθολικό, like.wmv ή.mov. Έψαξα σε αμέτρητα φόρουμ και ιστότοπους και έπειτα βρήκα ένα πρόγραμμα που ονομάζεται
Χρησιμοποιήστε οποιοδήποτε σύστημα ηχείων 5.1 με οποιοδήποτε πρόγραμμα αναπαραγωγής MP3 ή υπολογιστή, για φθηνό!: 4 βήματα
Χρησιμοποιήστε οποιοδήποτε σύστημα ηχείων 5.1 με οποιοδήποτε πρόγραμμα αναπαραγωγής MP3 ή υπολογιστή, για φθηνό!: (Αυτή είναι η πρώτη μου διδασκαλία και τα αγγλικά δεν είναι η μητρική μου γλώσσα) Παλαιότερα, αγόραζα ένα σετ ηχείων Creative Inspire 5100 φθηνά. Το χρησιμοποίησα με την επιφάνεια εργασίας μου που είχε κάρτα ήχου 5.1 (PCI). Στη συνέχεια, το χρησιμοποίησα με το φορητό υπολογιστή μου που είχε
Μετατρέψτε ένα Trackpad από ένα σπασμένο φορητό υπολογιστή σε ένα ποντίκι PS/2: 6 βήματα
Μετατρέψτε ένα Trackpad από ένα σπασμένο φορητό υπολογιστή σε ένα ποντίκι PS/2: Ένας φίλος μου έδωσε ένα σπασμένο φορητό υπολογιστή HP Pavilion. Με λίγη δουλειά, μπορείτε να αφαιρέσετε το trackpad και να συνδεθείτε σε σειριακή θύρα PS/2 ή 9-pin. Συνδεθείτε στον υπολογιστή σας και χρησιμοποιήστε το ως απλό ποντίκι, ή ακόμα και ως καλώδιο σε Arduino για μια μοναδική διεπαφή για το
Μινιμαλιστικό στυλό IR: Χωρίς συγκόλληση, κάτω από ένα λεπτό, κάτω από ένα δολάριο .: 3 βήματα
Μινιμαλιστικό στυλό IR: No Soldering, Under a Minute, Under a Dollar .: Το πρώτο μου εκπαιδευτικό, ελπίζω να είναι χρήσιμο: Αν θέλετε να δοκιμάσετε το JC Lee (το JC σημαίνει Johnny Chung, αλλά κάνει κάπως και θαύματα. ..) ή το πρόγραμμα Smoothboard στο www.smoothboard.net (έτη φωτός μπροστά, επειδή ο Boon Jin ξεκίνησε