2011-10-30 12 views
5

Pracuję nad projektem, w którym używam Arduino z modułem Bluetooth i moim telefonem komórkowym Samsung Galaxy S II z systemem operacyjnym Android. Ideą projektu jest wysłanie niektórych poleceń z mojego telefonu komórkowego do Arduino przez Bluetooth. Chcę umieścić bazę danych w Arduino, więc gdy wyślę dane logowania z mojego telefonu komórkowego, Arduino sprawdzi bazę danych i jeśli dane logowania się zgadzają, pobiera niektóre dane z bazy danych i wysyła je do mojego telefonu komórkowego.Jak przechowywać bazę danych wewnątrz Arduino?

Jak mogę przechowywać bazę danych w Arduino? Czy powinienem kupić zewnętrzną pamięć EEPROM lub RAM? I jak sobie z tym radzić (dodawanie, usuwanie i manipulowanie danymi)?

Mój Ardunio jest typu UNO, BTW.

+0

To jest * droga * zbyt szeroka, aby można było na nie odpowiedzieć. Zasadniczo pytasz "Jak mam to wszystko zrobić?" bez nawet wystarczająco zbadanych, by zadać właściwe pytania. –

+0

@BrianRoach Po prostu proszę o właściwą drogę, nie proszę o szczegóły. –

+0

@ Eng.Fouad Proszę unikać terminu "baza danych" w takim kontekście, ponieważ baza danych to zupełnie inna bestia niż to, czego potrzebujesz. Zobacz [Wikipedia] (http://en.wikipedia.org/wiki/Database) –

Odpowiedz

7

W celu prostego logowania nie potrzebujesz bazy danych, prawdopodobnie potrzebujesz tylko prostej tabeli.

Przede wszystkim należy pamiętać, że zwykle EEPROM dopuszcza od 1000 do 100 000 cykli zapisu. Oznacza to, że jeśli napiszesz pojedynczą komórkę powyżej 100000, masz duże prawdopodobieństwo, że twoja komórka umrze, nie możesz jej już napisać.

Pytanie brzmi, ile loginów jest dozwolone? Jest to kwestia wyboru właściwej struktury danych i zrozumienia, jaka jest ilość wymaganej pamięci.

Znając moc obliczeniową Arduino: jeśli loginy to tylko 2 .. 50, wystarczyłaby prosta lista. Wstawienie na końcu to O (1), usunięcie to O (n), wyszukiwanie to O (n). Połączona lista pozwala jednak zmniejszyć liczbę zapisów do usunięcia do stałej małej wartości.

Jeśli login jest większy, 50 .. 1000, posortowana tablica z wyszukiwaniem binarnym jest wystarczająca. Wstawienie to O (n), usunięcie to O (n), wyszukiwanie to O (n log n). Jednak liczba zapisów to O (n) zarówno do usunięcia, jak i wstawienia, a ponieważ pisanie jest powolne i może nagrywać komórki, zależy to od liczby aktualizacji, które chcesz wykonać.

Jeśli loginy mają wartość 1000 lub więcej, drzewo binarne jest dobre. Wstawienie to O (n log n), usunięcie to O (n log n), wyszukiwanie to O (n log n). Dobrą rzeczą jest to, że do wstawiania i usuwania wystarczy niewielka, stała liczba zapisów.

Również hashtable jest dobre, ale zwykle zużywają więcej pamięci. Wstawienie jest uśrednione O (1), uśrednienie jest uśrednione O (1), wyszukiwanie jest uśrednione O (1). Wstawienie i usunięcie wymaga tylko małej stałej liczby operacji zapisu, mniejszej niż drzewo binarne. Jak już wspomniałem, ta struktura danych wykorzystuje więcej pamięci, prędkość jest kosztowna.

Nie potrzebujesz prawdziwej relacyjnej bazy danych, ale prawdopodobnie, jeśli potrzebujesz zbyt dużej liczby użytkowników, potrzebujesz zewnętrznej pamięci EEPROM.

Oczywiście dane te należy zapisać w pamięci flash wewnętrznej lub zewnętrznej, inaczej utracisz bazę danych po zresetowaniu lub wyłączeniu urządzenia.

Możemy również powiedzieć, że nie musisz przechowywać nazwy użytkownika i hasła, możesz po prostu zapisać skrót nazwy użytkownika i hasła. Jeśli istnieje zakodowana nazwa użytkownika i hasło, możesz zezwolić na logowanie. W ten sposób można użyć pamięci o stałym rozmiarze i mniejszej ilości pamięci. Możesz użyć MD5, to jest telefon z Androidem, który musi wysłać skrót MD5, czyli 16 bajtów, więc Arduino musi tylko sprawdzić, czy ten skrót MD5 istnieje na liście użytkowników, na przykład. A to jest łatwe i szybkie.

+0

+1 Dzięki kolego, to jest bardzo pomocne :) –

0

Ponieważ używasz połączenia bluetooth, możesz po prostu sprawdzić adres MAC telefonu i inne unikalne informacje.

Powiązane problemy