2011-10-30 15 views
5

Estoy trabajando en un proyecto donde utilizo un Arduino con un módulo Bluetooth y mi teléfono celular Samsung Galaxy S II con sistema operativo Android. La idea del proyecto es enviar algunos comandos desde mi teléfono celular al Arduino a través de Bluetooth. Quiero incluir una base de datos en Arduino para que cuando envíe información de inicio de sesión desde mi teléfono celular, el Arduino verifique la base de datos y si la información de inicio de sesión coincide, recupera algunos datos de la base de datos y los envía a mi teléfono celular.¿Cómo almacenar una base de datos dentro de un Arduino?

¿Cómo puedo almacenar una base de datos dentro de Arduino? ¿Debo comprar una EEPROM o RAM externa? ¿Y cómo puedo tratar con esa base de datos (agregar, eliminar y manipular datos)?

Mi Ardunio es del tipo UNO, BTW.

+0

Esta es * manera * demasiado amplia para ser respondida en SO. Básicamente estás preguntando "¿Cómo hago todo esto?" sin siquiera haber investigado lo suficiente como para hacer las preguntas correctas. –

+0

@BrianRoach Solo estoy preguntando por la forma correcta de hacerlo, no estoy pidiendo detalles. –

+0

@ Eng.Fouad Por favor, evite el término "base de datos" en dicho contexto, porque una base de datos es una bestia completamente diferente a la que necesita. Ver [Wikipedia] (http://en.wikipedia.org/wiki/Database) –

Respuesta

7

Solo para el inicio de sesión simple no necesita una base de datos, probablemente solo necesite una tabla simple.

Considere ante todo que, por lo general, las EEPROM permiten de 1000 a 100000 ciclos de escritura. Significa que si escribe una sola celda de más de 100000 tiene una alta probabilidad de que su celda muera, no puede escribir más.

La pregunta es, ¿cuántos inicios de sesión están permitidos? Es una cuestión de elegir la estructura de datos correcta y comprender cuál es la cantidad de memoria requerida.

Conociendo el poder computacional de Arduino: Si los inicios de sesión son solo 2 .. 50, una lista simple sería suficiente. La inserción al final es O (1), la eliminación es O (n), la búsqueda es O (n). Sin embargo, una lista vinculada le permitirá reducir el número de escrituras para su eliminación a un valor constante pequeño.

Si los inicios de sesión son más, 50 ... 1000, una matriz ordenada con búsqueda binaria es suficiente. La inserción es O (n), la eliminación es O (n), la búsqueda es O (n log n). Sin embargo, el número de escrituras es O (n) tanto para eliminación como para inserción, y dado que la escritura es lenta y puede grabar celdas, depende del número de actualizaciones que desee hacer.

Si los inicios de sesión son 1000 o más, un árbol binario es bueno. La inserción es O (n log n), la eliminación es O (n log n), la búsqueda es O (n log n). Lo bueno es que para la inserción y la eliminación solo necesitas un número pequeño y constante de escrituras.

También una tabla hash es buena, pero generalmente usan más memoria. La inserción se promedia O (1), la eliminación se promedia O (1), la búsqueda se promedia O (1). La inserción y eliminación requiere solo un pequeño número constante de operaciones de escritura, menos que un árbol binario. Como dije, esta estructura de datos usa más memoria, la velocidad tiene un costo.

No necesita una base de datos relacional real, pero probablemente si necesita demasiados usuarios, necesita una EEPROM externa.

Por supuesto, debe guardar esta información en una memoria flash, interna o externa, o perderá la base de datos cuando reinicie o apague la máquina.

También podemos decir que no necesita almacenar el nombre de usuario y la contraseña, solo puede almacenar un hash de la contraseña y el nombre de usuario. Si el nombre de usuario y la contraseña hash existen, entonces puede permitir el inicio de sesión. De esta forma puede usar memoria de tamaño fijo y menos memoria. Puede usar MD5, es el teléfono Android el que debe enviar el hash MD5, es decir, 16 bytes, por lo que el Arduino solo debe verificar si ese hash MD5 existe en la lista de usuarios allí, por ejemplo. Y esto es fácil y rápido.

+0

+1 Gracias amigo, esto es muy útil :) –

0

Dado que está utilizando la conexión bluetooth, simplemente puede validar la dirección MAC del teléfono u otra información única.

Cuestiones relacionadas