2011-10-30 6 views
5

Je travaille sur un projet où j'utilise un Arduino avec un module Bluetooth et mon téléphone portable Samsung Galaxy S II avec Android OS. L'idée du projet est d'envoyer quelques commandes de mon téléphone portable à l'Arduino via Bluetooth. Je veux inclure une base de données dans l'Arduino de sorte que lorsque j'envoie des informations de connexion de mon téléphone portable, l'Arduino vérifie la base de données et si les informations de connexion correspondent, il récupère des données de la base de données.Comment stocker une base de données dans un Arduino?

Comment puis-je stocker une base de données dans l'Arduino? Dois-je acheter une mémoire EEPROM ou RAM externe? Et comment puis-je gérer cette base de données (ajouter, supprimer et manipuler des données)?

Mon Ardunio est de type UNO, BTW.

+0

Ceci est * way * trop large pour être répondu sur SO. Vous demandez essentiellement "Comment puis-je faire tout cela?" sans même avoir suffisamment étudié pour poser les bonnes questions. –

+0

@BrianRoach Je ne fais que demander la bonne façon de le faire, je ne demande pas de détails. –

+0

@ Eng.Fouad S'il vous plaît éviter le terme "base de données" dans un tel contexte, car une base de données est complètement autre que ce dont vous avez besoin. Voir [Wikipedia] (http://en.wikipedia.org/wiki/Database) –

Répondre

7

Juste pour une connexion simple, vous n'avez pas besoin d'une base de données, vous avez probablement besoin d'un simple tableau. Considérons tout d'abord que les EEPROM permettent généralement de 1000 à 100000 cycles d'écriture. Cela signifie que si vous écrivez une seule cellule de plus de 100 000, vous avez une forte probabilité que votre cellule meure, vous ne pouvez plus l'écrire.

La question est, combien de connexions sont autorisées? Il s'agit de choisir la bonne structure de données et de comprendre quelle est la quantité de mémoire requise. Connaître la puissance de calcul d'Arduino: Si les connexions ne sont que de 2 à 50, une simple liste suffirait. L'insertion à la fin est O (1), la suppression est O (n), la recherche est O (n). Une liste liée vous permettra cependant de réduire le nombre d'écritures à supprimer à une petite valeur constante.

Si les connexions sont plus, 50 .. 1000, un tableau trié avec une recherche binaire est suffisant. L'insertion est O (n), la suppression est O (n), la recherche est O (n log n). Cependant, le nombre d'écritures est O (n) à la fois pour la suppression et l'insertion, et puisque l'écriture est lente et peut graver des cellules, cela dépend du nombre de mises à jour que vous voulez faire.

Si les connexions sont de 1000 ou plus, un arbre binaire est bon. L'insertion est O (n log n), la suppression est O (n log n), la recherche est O (n log n). La bonne chose est que pour l'insertion et la suppression, vous avez juste besoin d'un petit nombre constant d'écritures.

De plus, une table de hachage est bonne, mais elle utilise généralement plus de mémoire. L'insertion est moyennée O (1), la suppression est moyennée O (1), la recherche est moyennée O (1). L'insertion et la suppression nécessitent seulement un petit nombre constant d'opérations d'écriture, moins qu'une arborescence binaire. Comme je l'ai dit, cette structure de données utilise plus de mémoire, la vitesse a un coût.

Vous n'avez pas besoin d'une vraie base de données relationnelle, mais probablement si vous avez besoin de trop d'utilisateurs, vous avez besoin d'une EEPROM externe.

Bien sûr, vous devez enregistrer ces données dans une mémoire flash, interne ou externe, ou vous perdrez la base de données lorsque vous réinitialisez ou éteignez la machine.

Nous pouvons également dire que vous n'avez pas besoin de stocker le nom d'utilisateur et mot de passe, vous pouvez simplement stocker un hachage du mot de passe et nom d'utilisateur. Si le nom d'utilisateur et le mot de passe hashés existent, vous pouvez autoriser la connexion. De cette façon, vous pouvez utiliser une mémoire de taille fixe et moins de mémoire. Vous pouvez utiliser MD5, c'est le téléphone Android qui doit envoyer le hachage MD5, c'est-à-dire 16 octets, donc l'Arduino doit seulement vérifier si ce hachage MD5 existe dans la liste des utilisateurs, par exemple. Et c'est facile et rapide.

+0

+1 Merci mon pote, c'est très utile :) –

0

Étant donné que vous utilisez la connectivité Bluetooth, vous pouvez simplement valider l'adresse MAC du téléphone ou d'autres informations uniques.

Questions connexes