- Ροή έργου:
- Απαιτήσεις έργου
- Διάγραμμα κυκλώματος:
- Εγκατάσταση εξαρτήσεων για παλμογράφο Raspberry Pi:
- Κωδικός Python για παλμογράφο Raspberry Pi:
- Raspberry Pi Oscilloscope in Action:
Γεια σας, καλώς ήρθατε στη σημερινή ανάρτηση. Ένα από τα πιο συναρπαστικά πράγματα για το να είσαι κατασκευαστής είναι να ξέρεις πώς να αναπτύξεις αυτοσχέδια εργαλεία, ποτέ δεν θα κολλήσεις να δουλεύεις σε οποιοδήποτε έργο όταν έχεις τέτοιου είδους ευελιξία. Σήμερα λοιπόν, θα μοιραστώ πώς να φτιάξω μια προσωρινή έκδοση με βάση το Raspberry Pi ενός από τα πιο σημαντικά εργαλεία στην ηλεκτρολογία / Ηλεκτρονική μηχανική. Το παλμογράφο.
Το παλμογράφο είναι ένα ηλεκτρονικό όργανο δοκιμής που επιτρέπει την οπτικοποίηση και παρατήρηση διαφόρων τάσεων σήματος, συνήθως ως δισδιάστατη πλοκή με ένα ή περισσότερα σήματα να σχεδιάζονται ενάντια στον χρόνο. Το σημερινό έργο θα επιδιώξει να αναπαράγει τις δυνατότητες οπτικοποίησης σήματος του παλμογράφου χρησιμοποιώντας το Raspberry Pi και μια μονάδα αναλογικού σε ψηφιακό μετατροπέα.
Ροή έργου:
Η αναπαραγωγή της οπτικοποίησης σήματος του παλμογράφου χρησιμοποιώντας το Raspberry Pi απαιτεί τα ακόλουθα βήματα.
1. Εκτελέστε ψηφιακή σε αναλογική μετατροπή του σήματος εισόδου
2. Προετοιμάστε τα προκύπτοντα δεδομένα για αναπαράσταση
3. Σχεδιάστε τα δεδομένα σε ένα γράφημα ζωντανής ώρας
Ένα απλοποιημένο διάγραμμα μπλοκ για αυτό το έργο θα μοιάζει με το παρακάτω διάγραμμα.
Απαιτήσεις έργου
Η απαίτηση για αυτό το έργο μπορεί να ταξινομηθεί σε δύο:
- Απαιτήσεις υλικού
- Απαιτήσεις λογισμικού
Απαιτήσεις υλικού
Για την κατασκευή αυτού του έργου, απαιτούνται τα ακόλουθα στοιχεία / τμήμα
- Raspberry pi 2 (ή οποιοδήποτε άλλο μοντέλο)
- Κάρτα SD 8 ή 16 GB
- Καλώδιο LAN / Ethernet
- Τροφοδοτικό ή καλώδιο USB
- ADS1115 ADC
- LDR (Προαιρετικό όπως προορίζεται για δοκιμή)
- 10k ή 1k αντίσταση
- Καλώδια αλτών
- Ψωμί
- Παρακολούθηση ή με οποιονδήποτε άλλο τρόπο προβολής της επιφάνειας εργασίας του pi (συμπεριλαμβανομένου του VNC)
Απαιτήσεις λογισμικού
Οι απαιτήσεις λογισμικού για αυτό το έργο είναι βασικά οι μονάδες python ( matplotlib και drawow ) που θα χρησιμοποιηθούν για οπτικοποίηση δεδομένων και η ενότητα Adafruit για διασύνδεση με το τσιπ ADS1115 ADC. Θα δείξω πώς να εγκαταστήσω αυτές τις ενότητες στο Raspberry Pi καθώς προχωράμε.
Ενώ αυτό το σεμινάριο θα λειτουργήσει ανεξάρτητα από το Raspberry pi OS που χρησιμοποιείται, θα χρησιμοποιήσω το Raspberry Pi stretch OS και θα υποθέσω ότι είστε εξοικειωμένοι με τη ρύθμιση του Raspberry Pi με το Raspbian stretch OS και γνωρίζετε πώς να SSH στο βατόμουρο pi χρησιμοποιώντας ένα τερματικό λογισμικό όπως στόκος. Εάν έχετε προβλήματα με οποιοδήποτε από αυτά, υπάρχουν τόνοι σεμιναρίων Raspberry Pi σε αυτόν τον ιστότοπο που μπορούν να σας βοηθήσουν.
Με όλα τα εξαρτήματα υλικού στη θέση τους, ας δημιουργήσουμε τα σχήματα και συνδέουμε τα στοιχεία μαζί.
Διάγραμμα κυκλώματος:
Για να μετατρέψουμε τα αναλογικά σήματα εισόδου σε ψηφιακά σήματα που μπορούν να οπτικοποιηθούν με το Raspberry Pi, θα χρησιμοποιήσουμε το τσιπ ADS1115 ADC. Αυτό το τσιπ γίνεται σημαντικό επειδή το Raspberry Pi, σε αντίθεση με το Arduino και τους περισσότερους μικροελεγκτές, δεν διαθέτει ενσωματωμένο αναλογικό προς ψηφιακό μετατροπέα (ADC). Ενώ θα μπορούσαμε να χρησιμοποιήσουμε οποιοδήποτε ADC chip συμβατό με βατόμουρο, προτιμώ αυτό το τσιπ λόγω της υψηλής ανάλυσής του (16bits) και του καλά τεκμηριωμένου φύλλου δεδομένων και οδηγίες χρήσης από την Adafruit. Μπορείτε επίσης να δείτε το σεμινάριο Raspberry Pi ADC για να μάθετε περισσότερα σχετικά με αυτό.
Το ADC είναι μια συσκευή που βασίζεται σε I2C και πρέπει να συνδεθεί με το Raspberry Pi όπως φαίνεται στα παρακάτω σχήματα.
Για λόγους σαφήνειας, περιγράφεται παρακάτω η σύνδεση ακίδων μεταξύ των δύο στοιχείων.
Συνδέσεις ADS1115 και Raspberry Pi:
VDD - 3.3v
GND - GND
SDA - SDA
SCL - SCL
Με όλες τις συνδέσεις ολοκληρωμένες, ενεργοποιήστε το pi και προχωρήστε στην εγκατάσταση των εξαρτήσεων που αναφέρονται παρακάτω.
Εγκατάσταση εξαρτήσεων για παλμογράφο Raspberry Pi:
Προτού αρχίσουμε να γράφουμε το σενάριο python για να τραβήξουμε δεδομένα από το ADC και να το σχεδιάσουμε σε ένα ζωντανό γράφημα, πρέπει να ενεργοποιήσουμε τη διεπαφή επικοινωνίας I2C του raspberry pi και να εγκαταστήσουμε τις απαιτήσεις λογισμικού που αναφέρθηκαν νωρίτερα. Αυτό θα γίνει στα παρακάτω βήματα, ώστε να είναι εύκολο να ακολουθηθεί:
Βήμα 1: Ενεργοποίηση διεπαφής Raspberry Pi I2C
Για να ενεργοποιήσετε το I2C, από το τερματικό, εκτελέστε.
sudo raspi-config
Όταν ανοίξουν τα πλαίσια διαμόρφωσης, επιλέξτε επιλογές διεπαφής, επιλέξτε I2C και κάντε κλικ στο ενεργοποίηση.
Βήμα 2: Ενημερώστε το Raspberry pi
Το πρώτο πράγμα που κάνω πριν ξεκινήσω οποιοδήποτε έργο είναι η ενημέρωση του Pi. Μέσω αυτού, είμαι βέβαιος ότι κάθε πράγμα στο λειτουργικό σύστημα είναι ενημερωμένο και δεν θα αντιμετωπίσω πρόβλημα συμβατότητας με οποιοδήποτε τελευταίο λογισμικό που επιλέγω να εγκαταστήσω στο Pi. Για να το κάνετε αυτό, εκτελέστε κάτω από δύο εντολές:
sudo apt-get ενημέρωση sudo apt-get αναβάθμιση
Βήμα 3: Εγκαταστήστε τη βιβλιοθήκη Adafruit ADS1115 για ADC
Με την ενημέρωση, είμαστε πλέον έτοιμοι να εγκαταστήσουμε τις εξαρτήσεις ξεκινώντας από τη μονάδα Adafruit python για το τσιπ ADS115. Βεβαιωθείτε ότι βρίσκεστε στον αρχικό κατάλογο του Raspberry Pi εκτελώντας.
cd ~
στη συνέχεια εγκαταστήστε τα βασικά απαραίτητα εκτελώντας.
sudo apt-get install build-essential python-dev python-smbus git
Στη συνέχεια, κλωνοποιήστε το φάκελο Adafruit git για τη βιβλιοθήκη εκτελώντας.
git clone https://github.com/adafruit/Adafruit_Python_ADS1x15.git
Μεταβείτε στον κατάλογο του κλωνοποιημένου αρχείου και εκτελέστε το αρχείο εγκατάστασης.
cd Adafruit_Python_ADS1x1z sudo python setup.py εγκατάσταση
Μετά την εγκατάσταση, η οθόνη σας θα μοιάζει με την παρακάτω εικόνα.
Βήμα 4: Δοκιμάστε τη βιβλιοθήκη και την επικοινωνία 12C.
Πριν προχωρήσουμε στο υπόλοιπο έργο, είναι σημαντικό να δοκιμάσετε τη βιβλιοθήκη και να διασφαλίσετε ότι το ADC μπορεί να επικοινωνήσει με το βατόμουρο pi μέσω του I2C. Για να το κάνουμε αυτό θα χρησιμοποιήσουμε ένα παράδειγμα σεναρίου που συνοδεύει τη βιβλιοθήκη.
Ενώ βρίσκεστε ακόμα στο φάκελο Adafruit_Python_ADS1x15, αλλάξτε τον κατάλογο στον κατάλογο παραδειγμάτων εκτελώντας.
παραδείγματα cd
Στη συνέχεια, εκτελέστε το παράδειγμα sampletest.py που εμφανίζει την τιμή των τεσσάρων καναλιών στο ADC σε μορφή πίνακα.
Εκτελέστε το παράδειγμα χρησιμοποιώντας:
python simpletest.py
Εάν η μονάδα I2C είναι ενεργοποιημένη και οι καλές συνδέσεις, θα πρέπει να δείτε τα δεδομένα όπως φαίνεται στην παρακάτω εικόνα.
Εάν παρουσιαστεί σφάλμα, ελέγξτε για να βεβαιωθείτε ότι το ADC είναι καλά συνδεδεμένο στο PI και ότι η επικοινωνία I2C είναι ενεργοποιημένη στο Pi.
Βήμα 5: Εγκαταστήστε το Matplotlib
Για να απεικονίσουμε τα δεδομένα, πρέπει να εγκαταστήσουμε τη μονάδα matplotlib που χρησιμοποιείται για τη σχεδίαση όλων των ειδών γραφημάτων στο python. Αυτό μπορεί να γίνει τρέχοντας.
sudo apt-get εγκαταστήστε το python-matplotlib
Θα πρέπει να δείτε ένα αποτέλεσμα όπως η παρακάτω εικόνα.
Βήμα 6: Εγκαταστήστε τη μονάδα Drawnow python
Τέλος, πρέπει να εγκαταστήσουμε τη μονάδα drawow python. Αυτή η ενότητα μας βοηθά να παρέχουμε ζωντανές ενημερώσεις στην πλοκή δεδομένων.
Θα εγκαταστήσουμε το drawow μέσω του προγράμματος εγκατάστασης πακέτων python. pip , οπότε πρέπει να διασφαλίσουμε ότι είναι εγκατεστημένο. Αυτό μπορεί να γίνει τρέχοντας.
sudo apt-get εγκαταστήστε το python-pip
Στη συνέχεια μπορούμε να χρησιμοποιήσουμε το pip για να εγκαταστήσουμε το πακέτο drawow εκτελώντας:
sudo pip install drawow
Θα πρέπει να έχετε ένα αποτέλεσμα όπως η παρακάτω εικόνα αφού το εκτελέσετε.
Με όλες τις εξαρτήσεις εγκατεστημένες, είμαστε πλέον έτοιμοι να γράψουμε τον κώδικα.
Κωδικός Python για παλμογράφο Raspberry Pi:
Ο κωδικός python για αυτό το Pi Oscilloscope είναι αρκετά απλός ειδικά αν είστε εξοικειωμένοι με τη μονάδα python matplotlib . Πριν μας δείξετε ολόκληρο τον κώδικα, θα προσπαθήσω να τον χωρίσω σε μέρος και να εξηγήσω τι κάνει κάθε μέρος του κώδικα, ώστε να έχετε αρκετές γνώσεις για να επεκτείνετε τον κώδικα για να κάνετε περισσότερα πράγματα.
Σε αυτό το στάδιο είναι σημαντικό να μεταβείτε σε μια οθόνη ή να χρησιμοποιήσετε το πρόγραμμα προβολής VNC, οτιδήποτε μπορείτε να δείτε στην επιφάνεια εργασίας του Raspberry Pi, καθώς το γράφημα που σχεδιάζεται δεν θα εμφανίζεται στο τερματικό.
Με την οθόνη ως διεπαφή ανοίξτε ένα νέο αρχείο python. Μπορείτε να το ονομάσετε οποιοδήποτε όνομα θέλετε, αλλά θα το ονομάσω lingkup.py.
sudo nano scope.py
Με το αρχείο που δημιουργήθηκε, το πρώτο πράγμα που κάνουμε είναι να εισαγάγουμε τις ενότητες που θα χρησιμοποιούμε.
εισαγωγή χρόνου εισαγωγής matplotlib.pyplot ως plt από drawow εισαγωγή * εισαγωγή Adafruit_ADS1x15
Στη συνέχεια, δημιουργούμε μια παρουσία της βιβλιοθήκης ADS1x15 που καθορίζει το ADS1115 ADC
adc = Adafruit_ADS1x15.ADS1115 ()
Στη συνέχεια, ορίζουμε το κέρδος του ADC. Υπάρχουν διαφορετικά εύρη κέρδους και θα πρέπει να επιλέξετε με βάση την τάση που περιμένετε κατά την είσοδο του ADC. Για αυτό το σεμινάριο, εκτιμούμε 0 - 4,09v, οπότε θα χρησιμοποιήσουμε κέρδος 1. Για περισσότερες πληροφορίες σχετικά με το κέρδος, μπορείτε να δείτε το φύλλο δεδομένων ADS1015 / ADS1115.
Κέρδος = 1
Στη συνέχεια, πρέπει να δημιουργήσουμε τις μεταβλητές πίνακα που θα χρησιμοποιηθούν για την αποθήκευση των δεδομένων που πρόκειται να σχεδιαστούν και μια άλλη για να χρησιμοποιηθεί ως μέτρηση.
Val = cnt = 0
Στη συνέχεια, γνωστοποιούμε τις προθέσεις μας να κάνουμε γνωστό το διαδραστικό σχέδιο έτσι ώστε να μας επιτρέψει να σχεδιάσουμε τα δεδομένα ζωντανά.
pltion ()
Στη συνέχεια, ξεκινάμε τη συνεχή μετατροπή ADC καθορίζοντας το κανάλι ADC, στην περίπτωση αυτή, το κανάλι 0 και καθορίζουμε επίσης το κέρδος.
Πρέπει να σημειωθεί ότι και τα τέσσερα κανάλια ADC στο ADS1115 μπορούν να διαβαστούν ταυτόχρονα, αλλά 1 κανάλι είναι αρκετό για αυτήν την επίδειξη.
adc.start_adc (0, κέρδος = GAIN)
Στη συνέχεια δημιουργούμε μια συνάρτηση def makeFig , για να δημιουργήσουμε και να ορίσουμε τα χαρακτηριστικά του γραφήματος που θα κρατήσουν τη ζωντανή πλοκή μας. Πρώτα απ 'όλα θέτουμε τα όρια του άξονα y χρησιμοποιώντας το ylim , μετά το οποίο εισάγουμε τον τίτλο της γραφικής παράστασης και το όνομα της ετικέτας πριν καθορίσουμε τα δεδομένα που θα σχεδιαστούν και το στυλ και το χρώμα της πλοκής του χρησιμοποιώντας το plt.plot (). Μπορούμε επίσης να δηλώσουμε το κανάλι (όπως δηλώθηκε το κανάλι 0) ώστε να μπορούμε να αναγνωρίσουμε κάθε σήμα όταν χρησιμοποιούνται τα τέσσερα κανάλια του ADC. Το plt.legend χρησιμοποιείται για να καθορίσει πού θέλουμε να εμφανίζονται οι πληροφορίες σχετικά με αυτό το σήμα (π.χ. κανάλι 0) στην εικόνα.
plt.ylim (-5000,5000) plt.title ('Osciloscope') plt.grid (True) plt.ylabel ('ADC outputs') plt.plot (val, 'ro-', label = 'lux') plt.legend (loc = 'κάτω δεξιά')
Στη συνέχεια γράφουμε το κατά βρόχο που θα χρησιμοποιηθούν συνεχώς την ανάγνωση δεδομένων από το ADC και να ενημερώσετε το οικόπεδο αναλόγως.
Το πρώτο πράγμα που κάνουμε είναι να διαβάσετε την τιμή μετατροπής ADC
τιμή = adc.get_last_result ()
Έπειτα εκτυπώνουμε την τιμή στο τερματικό για να μας δώσουμε έναν άλλο τρόπο επιβεβαίωσης των σχεδιαζόμενων δεδομένων. Περιμένουμε λίγα δευτερόλεπτα μετά την εκτύπωση και μετά προσθέτουμε τα δεδομένα στη λίστα (val) που δημιουργήθηκε για την αποθήκευση των δεδομένων για αυτό το κανάλι.
εκτύπωση («Κανάλι 0: {0}». μορφή (τιμή)) time.sleep (0,5) val.append (int (τιμή))
Στη συνέχεια, καλούμε drawow για ενημέρωση της πλοκής.
drawow (makeFig)
Για να διασφαλίσουμε ότι τα πιο πρόσφατα δεδομένα είναι αυτά που είναι διαθέσιμα στην πλοκή, διαγράφουμε τα δεδομένα στο ευρετήριο 0 μετά από κάθε 50 μετρήσεις δεδομένων.
cnt = cnt + 1 εάν (cnt> 50): val.pop (0)
Αυτό είναι όλο!
Ο πλήρης κωδικός Python δίνεται στο τέλος αυτού του σεμιναρίου.
Raspberry Pi Oscilloscope in Action:
Αντιγράψτε τον πλήρη κώδικα python και επικολλήστε το αρχείο python που δημιουργήσαμε νωρίτερα, θυμηθείτε ότι θα χρειαστεί μια οθόνη για να δείτε την πλοκή, οπότε όλα αυτά πρέπει να γίνουν είτε από VNC είτε με συνδεδεμένη οθόνη ή οθόνη.
Αποθηκεύστε τον κώδικα και εκτελέστε τη χρήση.
sudo python lingkop.py
Εάν χρησιμοποιούσατε διαφορετικό όνομα εκτός από το cakupan.py, μην ξεχάσετε να το αλλάξετε για να ταιριάζει.
Μετά από λίγα λεπτά, θα πρέπει να δείτε τα δεδομένα ADC να εκτυπώνονται στο τερματικό. Περιστασιακά ενδέχεται να λάβετε μια προειδοποίηση από το matplotlib (όπως φαίνεται στην παρακάτω εικόνα) η οποία θα πρέπει να καταργηθεί, αλλά δεν επηρεάζει τα δεδομένα που εμφανίζονται ή την πλοκή ούτως ή άλλως. Ωστόσο, για την καταστολή της προειδοποίησης, οι ακόλουθες γραμμές κώδικα μπορούν να προστεθούν μετά τις γραμμές εισαγωγής στον κωδικό μας.
Εισαγωγή προειδοποιήσεων εισαγωγή matplotlib.cbook warnings.filterwarnings (" Αγνοήστε ", κατηγορία = matplotlib.cbook.mplDeprecation)
Αυτό είναι για όλους τους μαθητές, για να δοκιμάσετε πλήρως τον παλμογράφο σας, μπορείτε να συνδέσετε μια αναλογική συσκευή όπως ένα ποτενσιόμετρο σε ένα κανάλι στο ADC και θα πρέπει να βλέπετε τα δεδομένα να αλλάζουν με κάθε στροφή του ποτενσιόμετρου. Ή μπορείτε να εισάγετε ημιτονοειδές ή τετραγωνικό κύμα για να ελέγξετε την έξοδο.
Ευχαριστούμε που διαβάσατε, αν έχετε ερωτήσεις ή κάτι που θα θέλατε να προσθέσω, απλώς αφήστε μου ένα σχόλιο.
Μέχρι την επόμενη φορά, συνεχίστε!