Реклама

Знаете ли вы, Arduino может хранить данные, когда он выключен? Не скетч хранится во флеш-памяти. Я говорю о переменных данных в EEPROM. Присоединяйтесь ко мне, покажу вам, как читать и писать, и что он может сделать для ваших проектов.

Если вы новичок в Arduino, обязательно ознакомьтесь с нашими руководство для начинающих Начало работы с Arduino: руководство для начинающихArduino - это платформа для создания прототипов электроники с открытым исходным кодом, основанная на гибком, простом в использовании аппаратном и программном обеспечении. Он предназначен для художников, дизайнеров, любителей и всех, кто заинтересован в создании интерактивных объектов или сред. Прочитайте больше .

Что такое EEPROM?

EEPROM расшифровывается как электрически стираемое программируемое постоянное запоминающее устройство. Это тип энергонезависимой памяти. Не беспокойтесь, если вы не понимаете, что это значит. Он просто сохраняет данные даже при отключенном питании (в отличие от баран Краткое и грязное руководство по оперативной памяти: что нужно знать

Оперативная память является важным компонентом каждого компьютера, но это может сбивать с толку. Мы разберем его в понятных для понимания терминах. Прочитайте больше , который нуждается в электричестве, чтобы сохранить любые данные).

Пример EEPROM

EEPROM встроен в множество процессоров, таких как программируемая пользователем вентильная матрица (FPGA), используемая в Матрица Создатель Matrix Creator для Raspberry Pi ОбзорMatrix Creator - это швейцарский армейский нож для вашего Pi, с 15 датчиками, набором протоколов связи, кольцом светодиодов RGB, массивом микрофонов и многим другим! Прочитайте больше Пи хат. Все Arduinos имеют EEPROM, но емкость зависит от модели. Убедитесь, что вы посмотрите на наши руководство по покупке Руководство по покупке Arduino: какую доску взять?Существует так много разных видов плат Arduino, что вы будете прощены за то, что запутались. Что вы должны купить для своего проекта? Позвольте нам помочь с этим руководством по покупке Arduino! Прочитайте больше для более подробной информации о каждой доске.

Как это работает?

EEPROM электрически стирается и программируется с использованием Фаулер-Нордхайм туннелирование. Вам не нужно знать технические детали, чтобы иметь возможность его использовать. Основная предпосылка заключается в том, что электричество используется для изменения двоичных данных (что такое бинарный Что такое бинарный? [Технология объяснила]Учитывая, что двоичный файл является настолько фундаментальным для существования компьютеров, кажется странным, что мы никогда раньше не занимались этой темой - поэтому сегодня я подумал, что дам краткий обзор того, что двоичный файл ... Прочитайте больше ). Его можно читать, стирать и переписывать в электронном виде.

К счастью, Arduino Language позволяет легко изменять данные, и все это без необходимости получения ученой степени в области компьютерных наук.

EEPROM Close Up

Продолжительность жизни

Хотя EEPROM легко использовать в Arduino, он имеет ограниченный срок службы. EEPROM предназначен для обработки 100 000 циклов чтения / стирания. Это означает, что вы можете записывать, а затем стирать / перезаписывать данные 100 000 раз, прежде чем EEPROM станет нестабильным. В реальности, Atmel (производители Arduino «Chip») полупроводники могут обрабатывать большее или меньшее количество циклов, в зависимости от допусков каждого процессора.

EEPROM Close Up

Как только место было написано и стерто слишком много раз, оно может стать ненадежным. Он может не возвращать правильные данные или возвращать значение из соседнего бита.

Это может звучать как много записей, но может быть легко достичь этого предела, если читать и писать программно (в петля, например). Чтение данных не ухудшает кремний, только письмо делает. Вы можете читать данные из EEPROM столько, сколько хотите без страха!

Важно отметить, что этот предел применяется к каждой ячейке памяти. Ваш Arduino может иметь 1000 или более ячеек памяти, доступных в EEPROM, поэтому, если вы пишете слишком много раз в одну ячейку, это влияет только на эту ячейку, а не на любую другую. Позже я буду обсуждать выравнивание износа, который может уменьшить износ EEPROM, распределяя данные равномерно - то, что SSD-накопители Как оценить оставшийся срок службы вашего SSDВсе твердотельные накопители имеют ограниченный срок службы из-за циклов записи (хотя этот срок службы намного больше, чем вы думаете). Вот как вы можете оценить, насколько вы близки к концу. Прочитайте больше использовать.

Для чего это полезно?

EEPROM невероятно полезен для ваших проектов Arduino. Поскольку он запоминает данные, даже когда питание отключено, вы можете сохранить состояние Arduino. Может быть, вы могли бы построить лазерная башня Пью Пью! Как построить лазерную башню с ArduinoВам скучно? Можно также построить лазерную башню. Прочитайте больше который помнит свою позицию или сколько осталось боеприпасов. Вы можете использовать его для управляйте своими приборами Устройства управления от Arduino: начало домашней автоматизацииВ прошлый раз я показал вам несколько способов заставить ваши проекты Arduino управлять голосом через SiriProxy, OS X встроенные голосовые элементы и некоторые сценарии Automator или даже специальное оборудование для распознавания голоса чип. Я... Прочитайте больше и зарегистрируйте, сколько раз ваше устройство было активировано.

ЭСППЗУ лучше всего подходит для таких вещей, как настройки или рекорды. Если вы хотите регулярно писать сложные данные, возможно, рассмотрите сетевой экран Дайте вашему проекту Arduino собственный мини-веб-сервер с сетевым экраномНекоторое время назад я показал вам, как настроить систему управления интернетом для вашего Arduino, но для поддержания интернет-соединения он должен был оставаться подключенным к компьютеру через USB ... Прочитайте больше (со встроенным слотом SD) или Raspberry Pi Raspberry Pi: неофициальный урокНезависимо от того, являетесь ли вы текущим владельцем Pi, который хочет узнать больше, или потенциальным владельцем этого устройства размером с кредитную карту, вы не хотите пропустить это руководство. Прочитайте больше .

EEPROM Close Up

Прочти и напиши

Теперь, когда теория вышла из-под контроля, давайте посмотрим, как читать и записывать некоторые данные! Во-первых, включите библиотеку (это идет с IDE Arduino):

#включают 

Теперь напишите некоторые данные:

EEPROM.write (0, 12);

Это пишет номер 12 в расположение EEPROM 0. Каждая запись занимает 3,3 миллисекунды (Миз1000 мс = 1 секунда). Обратите внимание, как вы не можете писать письма (голец), разрешены только цифры от нуля до 255. Вот почему EEPROM идеально подходит для настроек или рекордов, но не так хорош для имен игроков или слов. С помощью этого метода можно сохранить текст (вы можете сопоставить каждую букву алфавита с числом), однако вам необходимо иметь несколько ячеек памяти - одно место для каждой буквы.

Вот как вы читаете эти данные:

EEPROM.read (0);

Ноль - это адрес, который вы написали ранее. Если вы не написали адрес раньше, он вернет максимальное значение (255).

Есть несколько более полезных методов. Скажем, вы хотите сохранить десятичное место или строку:

EEPROM.put (2, «12,67»);

Это позволяет записывать данные в разные места - это легко написать самостоятельно, но, тем не менее, удобно. Вам все равно нужно будет отслеживать количество мест, в которые оно записано, чтобы случайно не перезаписать ваши данные! Вы должны использовать получить метод для получения этих данных снова:

поплавок f = 0,00f; EEPROM.get (2, f);

Значение из get сохраняется в float е переменная. Обратите внимание, как это инициализируется с 0.00f в качестве значения. е позволяет компилятору знать, что вы можете хранить большое число в этой переменной, поэтому он устанавливает некоторые дополнительные конфигурации во время компиляции.

Документация EEPROM на Сайт Arduino есть еще много примеров.

Выравнивание износа

Выравнивание износа - это метод, используемый для уменьшения износа и увеличения срока службы EEPROM. Если вы работаете только над небольшим проектом, вам не нужно об этом беспокоиться.

EEPROM Close Up

Самая простая вещь, которую вы можете сделать, чтобы сохранить жизнь EEPROM, - это ограничить ваши записи определенным местом. Вы можете сделать это, сначала прочитав адрес, и если значение, которое вы хотите записать, уже присутствует, нет необходимости записывать его снова (помните, что чтение данных не вредит). Вот как вы это сделаете:

int safeWrite (int data, address) {if (EEPROM.read (address)! = data) {EEPROM.write (адрес, данные); } }

Это довольно простой фрагмент кода, однако он работает только для целых чисел! Вместо того, чтобы заново изобретать колесо, используйте функцию, встроенную в библиотеку Edurom для Arduino:

EEPROM.update (адрес, val);

Этот метод имеет точно такую ​​же подпись, что и записывать метод, хотя это может резко сократить количество необходимых записей!

Если вам нужно записать много данных и беспокоиться об износе кремния, вы можете отслеживать, сколько записей вы делаете, хотя при этом используется больше данных. Вот примерная реализация в псевдокод:

var address = 0. var writeCount = 0 if (writeCount> 75 000) writeCount = 0 address + = 1 EEPROM.write (адрес, данные)

Вам нужно будет хранить address и writeCount в EEPROM (и writeCount нужно будет разделить по адресам). В большинстве случаев этот уровень защиты не будет необходим. Arduinos также настолько дешевы, что вам может быть проще купить резервную копию!

Теперь вы должны знать достаточно, чтобы сделать несколько потрясающих проектов. Дайте нам знать, если вы сделаете что-нибудь классное! Можете ли вы распознать все устройства на картинках? Оставьте нам комментарий ниже!

Джо - выпускник факультета компьютерных наук Университета Линкольна, Великобритания. Он профессиональный разработчик программного обеспечения, и когда он не летает на дронах и не пишет музыку, его часто можно встретить, фотографируя или снимая видео.