Iklan

Tahukah Anda bahwa Arduino dapat menyimpan data saat dimatikan? Bukan sketsa yang tersimpan di memori flash. Saya berbicara tentang data variabel di EEPROM. Bergabunglah dengan saya ketika saya menunjukkan kepada Anda bagaimana membaca dan menulis kepadanya, dan apa yang dapat dilakukan untuk proyek Anda.

Jika Anda baru di Arduino, pastikan Anda memeriksa kami panduan pemula Memulai Dengan Arduino: A Beginner's GuideArduino adalah platform prototipe elektronik sumber terbuka yang didasarkan pada perangkat keras dan lunak yang fleksibel dan mudah digunakan. Ini ditujukan untuk seniman, perancang, penggemar, dan siapa pun yang tertarik untuk menciptakan objek atau lingkungan interaktif. Baca lebih banyak .

Apa itu EEPROM?

EEPROM adalah singkatan dari memori hanya-baca yang dapat diprogram yang dapat dihapus secara listrik. Ini adalah jenis memori yang tidak mudah menguap. Jangan khawatir jika Anda tidak mengerti apa arti semua itu. Ini hanya menyimpan data bahkan dengan daya yang dihilangkan (tidak seperti

RAM Panduan Cepat dan Kotor untuk RAM: Yang Perlu Anda KetahuiRAM adalah komponen penting dari setiap komputer, tetapi bisa membingungkan. Kami memecahnya dalam istilah yang mudah dipahami yang akan Anda pahami. Baca lebih banyak , yang membutuhkan listrik untuk menyimpan data apa pun).

Contoh tembakan EEPROM

EEPROM dibangun ke dalam segudang prosesor, seperti array gerbang yang dapat diprogram lapangan (FPGA) yang digunakan dalam Pencipta Matriks Pencipta Matriks untuk Ulasan Raspberry PiMatrix Creator adalah Pisau Swiss Army untuk Pi Anda, dengan 15 sensor, seperangkat protokol komunikasi, cincin LED RGB, array mikrofon, dan banyak lagi! Baca lebih banyak Pi HAT. Semua Arduino memiliki EEPROM tersedia, tetapi kapasitasnya bervariasi per model. Pastikan Anda melihat kami panduan pembelian Arduino Buying Guide: Papan Yang Seharusnya Anda Dapatkan?Ada begitu banyak jenis papan Arduino di luar sana, Anda akan dimaafkan karena bingung. Yang mana yang harus Anda beli untuk proyek Anda? Biarkan kami membantu, dengan panduan pembelian Arduino ini! Baca lebih banyak untuk detail lebih lanjut di setiap papan.

Bagaimana cara kerjanya?

EEPROM dihapus secara listrik dan diprogram menggunakan Penerowongan Fowler-Nordheim. Anda tidak perlu mengetahui detail teknis untuk dapat menggunakannya. Premis dasarnya adalah bahwa listrik digunakan untuk mengubah data biner (apa itu biner? Apa itu Biner? [Teknologi Dijelaskan]Mengingat bahwa biner sangat mendasar bagi keberadaan komputer, rasanya aneh bahwa kami tidak pernah membahas topik sebelumnya - jadi hari ini saya pikir saya akan memberikan tinjauan singkat tentang apa yang biner ... Baca lebih banyak ). Itu dapat dibaca, dihapus, dan ditulis ulang secara elektronik.

Untungnya, itu Bahasa Arduino membuatnya mudah untuk mengubah data, semua tanpa perlu gelar dalam ilmu komputer.

EEPROM Close Up

Harapan hidup

Meskipun mudah untuk menggunakan EEPROM di Arduino, itu memang memiliki umur yang terbatas. EEPROM ditentukan untuk menangani 100.000 siklus baca / hapus. Ini berarti Anda dapat menulis dan kemudian menghapus / menulis ulang data 100.000 kali sebelum EEPROM menjadi tidak stabil. Pada kenyataannya, Atmel (pabrikan dari semikonduktor Arduino "Chip") dapat menangani jumlah siklus yang lebih tinggi atau lebih rendah, tergantung pada toleransi masing-masing dan setiap prosesor.

EEPROM Close Up

Setelah lokasi telah ditulis dan dihapus berkali-kali dapat mulai menjadi tidak dapat diandalkan. Itu mungkin tidak mengembalikan data yang benar, atau mengembalikan nilai dari bit tetangga.

Ini mungkin terdengar seperti banyak tulisan, tetapi dapat dengan mudah mencapai batas ini jika membaca dan menulis secara terprogram (dalam lingkaran, sebagai contoh). Membaca data tidak menurunkan silikon, hanya tulisan yang bisa. Anda dapat membaca data dari EEPROM sebanyak yang Anda suka tanpa rasa takut!

Penting untuk dicatat bahwa batas ini berlaku untuk setiap lokasi memori. Arduino Anda mungkin memiliki 1.000 atau lebih lokasi memori yang tersedia di EEPROM, jadi jika Anda menulis berkali-kali ke satu lokasi, hanya lokasi yang terpengaruh, dan bukan yang lain. Nanti saya akan membahas leveling pakai, yang dapat mengurangi keausan EEPROM dengan mendistribusikan data secara merata - sesuatu yang SSD Cara Memperkirakan Umur Sisa SSD AndaSemua SSD memiliki masa pakai yang terbatas karena siklus tulis (meskipun umur ini jauh lebih lama daripada yang Anda kira). Inilah cara Anda dapat memperkirakan seberapa dekat Anda dengan akhir. Baca lebih banyak menggunakan.

Untuk Apa Bermanfaat?

EEPROM sangat berguna untuk proyek Arduino Anda. Karena mengingat data bahkan ketika daya dilepaskan, Anda bisa menyimpan keadaan Arduino. Mungkin Anda bisa membangun menara laser Pew pew! Cara Membangun Menara Laser Dengan ArduinoApakah kamu bosan? Mungkin juga membangun menara laser. Baca lebih banyak yang mengingat posisinya atau berapa banyak "amunisi" yang tersisa. Anda bisa menggunakannya untuk kontrol peralatan Anda Peralatan Kontrol Dari An Arduino: Awal Otomasi RumahTerakhir kali, saya menunjukkan kepada Anda beberapa cara untuk membuat pidato proyek Arduino Anda dikontrol melalui SiriProxy, OS X's item bawaan yang dapat digunakan, dan beberapa skrip Automator, atau bahkan perangkat keras pengenalan suara khusus keping SAYA... Baca lebih banyak , dan catat berapa kali alat Anda diaktifkan.

EEPROM paling cocok untuk hal-hal seperti pengaturan atau skor tinggi. Jika Anda ingin secara teratur menulis data yang kompleks, mungkin pertimbangkan sebuah perisai ethernet Berikan Proyek Arduino Anda Mini-Webserver Sendiri, Dengan Perisai EthernetBeberapa waktu yang lalu, saya menunjukkan kepada Anda bagaimana mengatur sistem kontrol internet untuk Arduino Anda - tetapi harus tetap terhubung ke komputer melalui USB untuk menjaga koneksi internet ... Baca lebih banyak (dengan slot SD bawaan) atau a Raspberry Pi Raspberry Pi: Tutorial Tidak ResmiBaik Anda pemilik Pi saat ini yang ingin mempelajari lebih lanjut atau calon pemilik perangkat ukuran kartu kredit ini, ini bukan panduan yang ingin Anda lewatkan. Baca lebih banyak .

EEPROM Close Up

Baca dan tulis

Sekarang setelah teorinya keluar, mari kita lihat cara membaca dan menulis beberapa data! Pertama, sertakan perpustakaan (ini dilengkapi dengan Arduino IDE):

#termasuk 

Sekarang tulis beberapa data:

EEPROM.write (0, 12);

Ini menulis nomornya 12 ke lokasi EEPROM 0. Setiap penulisan membutuhkan 3,3 milidetik (Nona, 1000 ms = 1 detik). Perhatikan bagaimana Anda tidak bisa menulis surat (arang), hanya angka dari nol hingga 255 yang diizinkan. Inilah sebabnya mengapa EEPROM ideal untuk pengaturan atau skor tinggi, tetapi tidak begitu baik untuk nama atau kata-kata pemain. Dimungkinkan untuk menyimpan teks menggunakan metode ini (Anda dapat memetakan setiap huruf dari alfabet ke angka), namun Anda harus memiliki beberapa lokasi memori - satu lokasi untuk setiap huruf.

Begini cara Anda membaca data itu:

EEPROM.read (0);

Nol adalah alamat yang Anda tulis sebelumnya. Jika Anda belum menulis ke alamat sebelumnya, itu akan mengembalikan nilai maksimum (255).

Ada beberapa metode yang sedikit lebih berguna yang tersedia. Katakanlah Anda ingin menyimpan tempat atau string desimal:

EEPROM.put (2, "12.67");

Ini menulis data ke beberapa lokasi - sesuatu yang akan mudah untuk ditulis sendiri, tetapi tidak kurang berguna. Anda masih perlu melacak berapa banyak lokasi yang telah ditulis untuk ini, sehingga Anda tidak secara tidak sengaja menimpa data Anda! Anda harus menggunakan Dapatkan metode untuk mengambil data ini lagi:

float f = 0.00f; EEPROM.get (2, f);

Nilai dari get disimpan ke float f variabel. Perhatikan bagaimana ini diinisialisasi dengan 0.00f sebagai nilai. Itu f membiarkan kompiler mengetahui bahwa Anda mungkin ingin menyimpan sejumlah besar dalam variabel ini, sehingga ia mengatur beberapa konfigurasi tambahan selama kompilasi.

Itu Dokumentasi EEPROM di Situs web Arduino memiliki lebih banyak contoh.

Leveling Pakai

Leveling keausan adalah teknik yang digunakan untuk mengurangi keausan dan meningkatkan kehidupan EEPROM. Jika Anda hanya mengerjakan proyek kecil, Anda mungkin tidak perlu khawatir tentang ini.

EEPROM Close Up

Hal paling sederhana yang dapat Anda lakukan untuk mempertahankan kehidupan EEPROM adalah membatasi tulisan Anda di lokasi tertentu. Anda dapat melakukan ini dengan membaca alamat terlebih dahulu, dan jika nilai yang ingin Anda tulis sudah ada, tidak perlu menuliskannya lagi (ingat, membaca data tidak ada salahnya). Begini cara Anda melakukannya:

int safeWrite (data int, alamat) {if (EEPROM.read (address)! = data) {EEPROM.write (alamat, data); } }

Itu sedikit kode yang sederhana, namun hanya berfungsi untuk integer! Alih-alih menciptakan kembali roda, gunakan fungsi yang ada di perpustakaan Arduino EEPROM:

EEPROM.update (alamat, val);

Metode ini memiliki tanda tangan yang persis sama dengan menulis metode, meskipun mungkin secara drastis mengurangi jumlah penulisan yang dibutuhkan!

Jika Anda perlu menulis banyak data, dan khawatir akan kehabisan silikon, Anda dapat melacak berapa banyak penulisan yang Anda lakukan, meskipun ini menggunakan lebih banyak data. Inilah implementasi kasar di kodesemu:

alamat var = 0. var writeCount = 0 jika (writeCount> 75.000) writeCount = 0 alamat + = 1 EEPROM.write (alamat, data)

Anda perlu menyimpan alamat dan writeCount di EEPROM (dan writeCount harus dipisah di lokasi alamat). Sebagian besar waktu, tingkat perlindungan ini tidak diperlukan. Arduino juga sangat murah, sehingga Anda mungkin merasa lebih mudah untuk membeli cadangan!

Anda sekarang harus cukup tahu untuk membuat beberapa proyek luar biasa. Beri tahu kami jika Anda membuat sesuatu yang keren! Bisakah Anda mengenali semua perangkat dalam gambar? Beri kami komentar di bawah!

Joe adalah lulusan Ilmu Komputer dari University of Lincoln, Inggris. Dia adalah pengembang perangkat lunak profesional, dan ketika dia tidak terbang drone atau menulis musik, dia sering ditemukan mengambil foto atau memproduksi video.