Как хранить базу данных внутри Arduino? - PullRequest
5 голосов
/ 30 октября 2011

Я работаю над проектом, в котором я использую Arduino с модулем Bluetooth и мой мобильный телефон Samsung Galaxy S II с ОС Android.Идея проекта заключается в том, чтобы отправить несколько команд с моего мобильного телефона на Arduino через Bluetooth.Я хочу включить базу данных в Arduino, чтобы при отправке информации для входа со своего мобильного телефона Arduino проверил базу данных и, если данные для входа в систему совпадали, извлекал некоторые данные из базы и отправлял их на мой мобильный телефон.

Как я могу хранить базу данных внутри Arduino?Должен ли я купить внешнюю EEPROM или RAM?И как я могу иметь дело с этой базой данных (добавление, удаление и манипулирование данными)?

Мой Ardunio имеет тип UNO , кстати.

Ответы [ 2 ]

7 голосов
/ 30 октября 2011

Просто для простого входа вам не нужна база данных, вам, вероятно, нужна простая таблица.

Прежде всего, учтите, что обычно EEPROM допускают от 1000 до 100000 циклов записи. Это означает, что если вы напишите одну ячейку более чем 100000, у вас есть высокая вероятность того, что ваша ячейка умрет, вы больше не сможете ее написать.

Вопрос в том, сколько входов разрешено? Все дело в том, чтобы выбрать правильную структуру данных и понять, каков объем необходимой памяти.

Знание вычислительной мощности Arduino: если логины всего 2 ... 50, простого списка будет достаточно. Вставка в конце - O (1), удаление - O (n), поиск - O (n). Однако связанный список позволит вам уменьшить количество записей для удаления до постоянного небольшого значения.

Если логинов больше, 50 .. 1000, достаточно отсортированного массива с двоичным поиском. Вставка - O (n), удаление - O (n), поиск - O (n log n). Однако количество записей равно O (n) как для удаления, так и для вставки, и поскольку запись идет медленно и может сжечь ячейки, это зависит от количества обновлений, которые вы хотите сделать.

Если логины 1000 или более, бинарное дерево хорошо. Вставка O (n log n), удаление O (n log n), поиск O (n log n). Хорошо, что для вставки и удаления вам просто нужно небольшое постоянное количество записей.

Также хорошо подходит хеш-таблица, но обычно она использует больше памяти. Вставка усредняется O (1), удаление усредняется O (1), поиск усредняется O (1). Для вставки и удаления требуется только небольшое постоянное количество операций записи, меньше, чем двоичное дерево. Как я уже сказал, эта структура данных использует больше памяти, скорость идет за счет.

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

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

Мы также можем сказать, что вам не нужно хранить имя пользователя и пароль, вы можете просто сохранить хэш пароля и имени пользователя. Если хэшированные имя пользователя и пароль существуют, вы можете разрешить вход в систему. Таким образом, вы можете использовать память фиксированного размера и меньше памяти. Вы можете использовать MD5, именно телефон Android должен отправлять хеш MD5, то есть 16 байтов, поэтому Arduino должен только проверять, например, существует ли этот хеш MD5 в списке пользователей. И это легко и быстро.

0 голосов
/ 04 апреля 2014

Поскольку вы используете соединение Bluetooth, вы можете просто проверить MAC-адрес телефона или другую уникальную информацию.

...