Διαφήμιση
Γνωρίζατε ότι το Arduino μπορεί να αποθηκεύσει δεδομένα όταν είναι απενεργοποιημένο; Όχι το σκίτσο που είναι αποθηκευμένο στη μνήμη flash. Μιλώ για μεταβλητά δεδομένα στο EEPROM. Ελάτε μαζί μου καθώς σας δείχνω πώς να διαβάσετε και να γράψετε σε αυτό, και τι μπορεί να κάνει για τα έργα σας.
Εάν είστε νέοι στο Arduino, βεβαιωθείτε ότι έχετε δει το δικό μας οδηγός για αρχάριους Ξεκινώντας με το Arduino: Ένας οδηγός για αρχάριουςΤο Arduino είναι μια πλατφόρμα πρωτοτύπων ηλεκτρονικής ανοικτής πηγής που βασίζεται σε ευέλικτο, εύχρηστο υλικό και λογισμικό. Προορίζεται για καλλιτέχνες, σχεδιαστές, χομπίστες και όσους ενδιαφέρονται να δημιουργήσουν διαδραστικά αντικείμενα ή περιβάλλοντα. Διαβάστε περισσότερα .
Τι είναι το EEPROM;
Το EEPROM σημαίνει ηλεκτρικά διαγράψιμη προγραμματιζόμενη μνήμη μόνο για ανάγνωση. Είναι ένας τύπος μη πτητικής μνήμης. Μην ανησυχείτε αν δεν καταλαβαίνετε τι σημαίνει αυτό. Αποθηκεύει απλά δεδομένα ακόμη και με την αφαιρεθείσα ισχύ (σε αντίθεση με ΕΜΒΟΛΟ Ένας γρήγορος και βρώμικος οδηγός για τη μνήμη RAM: Τι πρέπει να γνωρίζετε Η μνήμη RAM είναι ένα κρίσιμο στοιχείο κάθε υπολογιστή, αλλά μπορεί να προκαλέσει σύγχυση. Το αναλύουμε με εύχρηστους όρους που θα καταλάβετε. Διαβάστε περισσότερα , η οποία χρειάζεται ηλεκτρική ενέργεια για να διατηρήσει οποιαδήποτε δεδομένα).
Το EEPROM είναι ενσωματωμένο σε μια πληθώρα επεξεργαστών, όπως ο πίνακας πύλης με δυνατότητα προγραμματισμού (FPGA) που χρησιμοποιείται στο Δημιουργός Matrix Matrix Creator για αναθεώρηση Raspberry PiΤο Matrix Creator είναι ένα ελβετικό μαχαίρι στρατού για το Pi σας, με 15 αισθητήρες, μια σειρά πρωτοκόλλων επικοινωνιών, έναν δακτύλιο RGB LED, μια σειρά μικροφώνων και πολλά άλλα! Διαβάστε περισσότερα ΠΙ ΧΑΤ. Όλα τα Arduinos διαθέτουν EEPROM, αλλά η χωρητικότητα ποικίλλει ανά μοντέλο. Φροντίστε να ρίξετε μια ματιά στο οδηγός αγοράς Οδηγός αγοράς Arduino: Ποιος πίνακας πρέπει να πάρετε;Υπάρχουν τόσα πολλά είδη σανίδων Arduino εκεί έξω, θα σας συγχωρούσαν που μπερδεύτηκα. Ποιο θα πρέπει να αγοράσετε για το έργο σας; Ας βοηθήσουμε, με αυτόν τον οδηγό αγοράς Arduino! Διαβάστε περισσότερα για περισσότερες λεπτομέρειες σε κάθε πίνακα.
Πώς λειτουργεί?
Το EEPROM διαγράφεται και προγραμματίζεται ηλεκτρικά Σήραγγα Fowler-Nordheim. Δεν χρειάζεται να γνωρίζετε τις τεχνικές λεπτομέρειες για να μπορείτε να τις χρησιμοποιήσετε. Η βασική προϋπόθεση είναι ότι ο ηλεκτρισμός χρησιμοποιείται για την αλλαγή των δυαδικών δεδομένων (τι είναι δυαδικό Τι είναι το δυαδικό; [Τεχνολογία εξηγείται]Δεδομένου ότι το δυαδικό είναι τόσο απολύτως θεμελιώδες για την ύπαρξη υπολογιστών, φαίνεται περίεργο που δεν έχουμε αντιμετωπίσει ποτέ το θέμα - έτσι σήμερα σκέφτηκα ότι θα έδινα μια σύντομη επισκόπηση του τι δυαδικό ... Διαβάστε περισσότερα ). Μπορεί να διαβαστεί, να διαγραφεί και να ξαναγραφεί ηλεκτρονικά.
Ευτυχώς, το Γλώσσα Arduino διευκολύνει την αλλαγή δεδομένων, χωρίς να χρειάζεται πτυχίο στην επιστήμη των υπολογιστών.
Προσδόκιμο ζωής
Ενώ είναι εύκολο στη χρήση του EEPROM στο Arduino, έχει περιορισμένη διάρκεια ζωής. Το EEPROM έχει καθοριστεί για να χειρίζεται 100.000 κύκλους ανάγνωσης / διαγραφής. Αυτό σημαίνει ότι μπορείτε να γράψετε και, στη συνέχεια, να διαγράψετε / ξαναγράψετε δεδομένα 100.000 φορές πριν το EEPROM γίνει ασταθές. Στην πραγματικότητα, Άτμελ (οι κατασκευαστές των ημιαγωγών Arduino "Chip") μπορούν να χειριστούν μεγαλύτερο ή μικρότερο αριθμό κύκλων, ανάλογα με τις ανοχές του κάθε επεξεργαστή.
Μόλις μια τοποθεσία έχει γραφτεί και διαγραφεί πάρα πολλές φορές, μπορεί να αρχίσει να γίνεται αναξιόπιστη. Μπορεί να μην επιστρέψει τα σωστά δεδομένα ή να επιστρέψει την τιμή από ένα γειτονικό bit.
Αυτό μπορεί να ακούγεται σαν πολλές γραφές, αλλά μπορεί να είναι εύκολο να φτάσετε αυτό το όριο εάν διαβάζετε και γράφετε μέσω προγραμματισμού (σε βρόχος, για παράδειγμα). Η ανάγνωση δεδομένων δεν υποβαθμίζει το πυρίτιο, μόνο το γράψιμο. Μπορείτε να διαβάσετε δεδομένα από την EEPROM όσο θέλετε χωρίς φόβο!
Είναι σημαντικό να σημειωθεί ότι αυτό το όριο ισχύει για κάθε τοποθεσία μνήμης. Το Arduino μπορεί να έχει 1.000 ή περισσότερες θέσεις μνήμης διαθέσιμες στο EEPROM, οπότε αν γράφετε πάρα πολλές φορές σε μια τοποθεσία, επηρεάζεται μόνο αυτή η τοποθεσία και όχι κάποια από τις άλλες. Αργότερα θα συζητήσω φθορά ισοπέδωση, η οποία μπορεί να μειώσει τη φθορά της EEPROM με την ομοιόμορφη κατανομή δεδομένων - κάτι τέτοιο SSD Πώς να εκτιμήσετε την υπολειπόμενη διάρκεια ζωής του SSD σαςΌλα τα SSD έχουν περιορισμένη διάρκεια ζωής λόγω κύκλων εγγραφής (αν και αυτή η διάρκεια ζωής είναι πολύ μεγαλύτερη από ό, τι νομίζετε). Δείτε πώς μπορείτε να εκτιμήσετε πόσο κοντά είστε στο τέλος. Διαβάστε περισσότερα κάνουν χρήση του.
Σε τι χρησιμεύει;
Το EEPROM είναι απίστευτα χρήσιμο για τα έργα σας στο Arduino. Καθώς θυμάται δεδομένα ακόμα και όταν αφαιρεθεί το ρεύμα, θα μπορούσατε να αποθηκεύσετε την κατάσταση του Arduino. Ίσως θα μπορούσατε να δημιουργήσετε ένα πυργίσκος λέιζερ Pew Pew! Πώς να φτιάξετε έναν πυργίσκο λέιζερ με ένα ArduinoΒαριέσαι? Μπορεί επίσης να δημιουργήσετε έναν πυργίσκο λέιζερ. Διαβάστε περισσότερα που θυμάται τη θέση του ή πόσα "πυρομαχικά" απομένουν. Θα μπορούσατε να το χρησιμοποιήσετε για ελέγξτε τις συσκευές σας Συσκευές ελέγχου από ένα Arduino: Η αρχή του οικιακού αυτοματισμούΤην τελευταία φορά, σας έδειξα μερικούς τρόπους για να ρυθμίσετε την ομιλία σας στα έργα Arduino μέσω SiriProxy, OS X's ενσωματωμένα στοιχεία με δυνατότητα ομιλίας και ορισμένα σενάρια Automator ή ακόμη και ένα ειδικό υλικό αναγνώρισης φωνής πατατακι. ΕΓΩ... Διαβάστε περισσότερα και καταγράψτε πόσες φορές ενεργοποιήθηκε η συσκευή σας.
Το EEPROM ταιριάζει καλύτερα σε πράγματα όπως ρυθμίσεις ή υψηλές βαθμολογίες. Εάν θέλετε να γράφετε τακτικά πολύπλοκα δεδομένα, ίσως να το σκεφτείτε ασπίδα ethernet Δώστε στο Arduino Project το δικό του Mini-Webserver, με ένα Ethernet ShieldΠριν από λίγο καιρό, σας έδειξα πώς να ρυθμίσετε ένα σύστημα ελέγχου διαδικτύου για το Arduino σας - αλλά έπρεπε να παραμείνει συνδεδεμένο σε έναν υπολογιστή μέσω USB για να διατηρήσει τη σύνδεση στο Διαδίκτυο ... Διαβάστε περισσότερα (με ενσωματωμένη υποδοχή SD) ή a Raspberry Pi Raspberry Pi: Το ανεπίσημο σεμινάριοΕίτε είστε τρέχων κάτοχος Pi που θέλετε να μάθετε περισσότερα ή δυνητικός κάτοχος αυτής της συσκευής μεγέθους πιστωτικής κάρτας, αυτός δεν είναι ένας οδηγός που θέλετε να χάσετε. Διαβάστε περισσότερα .
Διάβασε και γράψε
Τώρα που η θεωρία είναι εκτός δρόμου, ας δούμε πώς να διαβάζουμε και να γράφουμε μερικά δεδομένα! Πρώτα, συμπεριλάβετε τη βιβλιοθήκη (συνοδεύεται από το Arduino IDE):
#περιλαμβάνω
Τώρα γράψτε μερικά δεδομένα:
EEPROM.write (0, 12);
Αυτό γράφει τον αριθμό 12 στην τοποθεσία EEPROM 0. Κάθε εγγραφή διαρκεί 3,3 χιλιοστά του δευτερολέπτου (Κυρία, 1000ms = 1 δευτερόλεπτο). Παρατηρήστε πώς δεν μπορείτε να γράψετε γράμματα (απανθρακώνω), επιτρέπονται μόνο οι αριθμοί από το μηδέν έως το 255. Γι 'αυτό το EEPROM είναι ιδανικό για ρυθμίσεις ή υψηλές βαθμολογίες, αλλά όχι τόσο καλό για ονόματα παικτών ή λέξεις. Είναι δυνατό να αποθηκεύσετε κείμενο χρησιμοποιώντας αυτήν τη μέθοδο (θα μπορούσατε να αντιστοιχίσετε κάθε γράμμα του αλφαβήτου σε έναν αριθμό), ωστόσο θα πρέπει να έχετε πολλές θέσεις μνήμης - μία θέση για κάθε γράμμα.
Δείτε πώς διαβάζετε αυτά τα δεδομένα:
EEPROM.read (0);
Το μηδέν είναι η διεύθυνση στην οποία έχετε γράψει προηγουμένως. Εάν δεν έχετε γράψει προηγουμένως σε μια διεύθυνση, θα επιστρέψει τη μέγιστη τιμή (255).
Υπάρχουν μερικές ελαφρώς πιο χρήσιμες μέθοδοι διαθέσιμες. Ας πούμε ότι θέλετε να αποθηκεύσετε ένα δεκαδικό ψηφίο ή συμβολοσειρά:
EEPROM.put (2, "12,67");
Αυτό γράφει τα δεδομένα σε πολλές τοποθεσίες - κάτι που θα ήταν εύκολο να γράψετε τον εαυτό σας, αλλά εύχρηστο. Θα πρέπει ακόμα να παρακολουθείτε πόσες τοποθεσίες έχει γράψει σε αυτό, ώστε να μην αντικαταστήσετε κατά λάθος τα δεδομένα σας! Πρέπει να χρησιμοποιήσετε το παίρνω μέθοδος για την ανάκτηση αυτών των δεδομένων ξανά:
float f = 0,00f; EEPROM.get (2, στ);
Η τιμή από το get αποθηκεύεται στο float φά μεταβλητός. Παρατηρήστε πώς αρχικοποιείται 0.00f ως η τιμή. ο φά επιτρέπει στον μεταγλωττιστή να γνωρίζει ότι μπορεί να θέλετε να αποθηκεύσετε έναν μεγάλο αριθμό σε αυτήν τη μεταβλητή, οπότε δημιουργεί ορισμένες πρόσθετες διαμορφώσεις κατά τη διάρκεια της μεταγλώττισης.
ο Τεκμηρίωση EEPROM στο Ιστοσελίδα Arduino έχει πολλά περισσότερα παραδείγματα.
Φορέστε ισοπέδωση
Η ισοπέδωση φθοράς είναι μια τεχνική που χρησιμοποιείται για τη μείωση της φθοράς και την αύξηση της διάρκειας ζωής του EEPROM. Εάν εργάζεστε μόνο σε ένα μικρό έργο, ίσως να μην χρειάζεται να ανησυχείτε για αυτό.
Το απλούστερο πράγμα που μπορείτε να κάνετε για να διατηρήσετε τη ζωή του EEPROM είναι να περιορίσετε τις εγγραφές σας σε μια συγκεκριμένη τοποθεσία. Μπορείτε να το κάνετε διαβάζοντας πρώτα τη διεύθυνση και αν η τιμή που θέλετε να γράψετε υπάρχει ήδη, δεν χρειάζεται να την γράψετε ξανά (να θυμάστε, η ανάγνωση δεδομένων δεν βλάπτει). Δείτε πώς θα το κάνατε αυτό:
int safeWrite (int data, address) {if (EEPROM.read (διεύθυνση)! = data) {EEPROM.write (διεύθυνση, δεδομένα); } }
Αυτό είναι ένα απλό κομμάτι κώδικα, ωστόσο λειτουργεί μόνο για ακέραιους αριθμούς! Αντί να ανακαλύψετε εκ νέου τον τροχό, χρησιμοποιήστε τη λειτουργία που είναι ενσωματωμένη στη βιβλιοθήκη Arduino EEPROM:
EEPROM.update (διεύθυνση, val);
Αυτή η μέθοδος έχει ακριβώς την ίδια υπογραφή με το γράφω μέθοδος, αν και μπορεί να μειώσει δραστικά τον αριθμό των απαιτούμενων γραφών!
Εάν πρέπει να γράψετε πολλά δεδομένα και ανησυχείτε για τη φθορά του πυριτίου, μπορείτε να παρακολουθείτε πόσες γραφές κάνετε, αν και αυτό χρησιμοποιεί περισσότερα δεδομένα. Ακολουθεί μια πρόχειρη εφαρμογή στο ψευδοκώδικας:
διεύθυνση var = 0. var writeCount = 0 if (writeCount> 75,000) writeCount = 0 διεύθυνση + = 1 EEPROM.write (διεύθυνση, δεδομένα)
Θα χρειαστεί να αποθηκεύσετε τη διεύθυνση και το writeCount στο EEPROM (και το writeCount θα πρέπει να χωριστεί σε τοποθεσίες διευθύνσεων). Το μεγαλύτερο μέρος του χρόνου, αυτό το επίπεδο προστασίας δεν θα είναι απαραίτητο. Τα Arduinos είναι επίσης τόσο φθηνά, οπότε μπορεί να είναι ευκολότερο να αγοράσετε ένα αντίγραφο ασφαλείας!
Τώρα πρέπει να γνωρίζετε αρκετά για να κάνετε μερικά υπέροχα έργα. Ενημερώστε μας εάν κάνετε κάτι δροσερό! Μπορείτε να αναγνωρίσετε όλες τις συσκευές στις εικόνες; Αφήστε μας ένα σχόλιο παρακάτω!
Ο Joe είναι απόφοιτος της Επιστήμης Υπολογιστών από το Πανεπιστήμιο του Λίνκολν του Ηνωμένου Βασιλείου. Είναι επαγγελματίας προγραμματιστής λογισμικού και όταν δεν πετάει drones ή γράφει μουσική, μπορεί συχνά να βρεθεί να φωτογραφίζει ή να δημιουργεί βίντεο.