User Tools

Site Tools


alkomat

Idea projektu

Celem projektu jest samodzielne stworzenie rozproszonego systemu zgodnie z koncepcją internetu rzeczy IoT przez społeczność akademicką. Istotne jest by w rozwiązaniu tym wykorzystać następujące umiejętności:

  • budowanie urządzeń elektronicznych
  • obsługa bazy danych
  • aplikacje WWW
  • aplikacje mobilne
  • aplikacje dla systemów wbudowanych

Projektem spełniającym takie kryteria jest system alkomatów, działających w miejscach w których studenci spędzają wolny czas. Systematyczny pomiar stężenia alkoholu we krwi uświadamia o zagrożeniach jakie niesie ten zgubny nałóg. Ponadto dzięki aplikacji mobilnej można na bieżąco informować gdzie badani mają wysokie lub niskie stężenie alkoholu. Informacje takie mogę być niezwykle istotne przed podjęciem decyzji o wyborze miejsca, w którym zamierza się spędzić wolny czas. Aplikacja mobilna może automatycznie odczytywać te informacje z bazy danych i alarmować użytkownika, gdy stężenie alkoholu przekracza lub spada poniżej pewnego poziomu. Dodatkowo przewiduje się możliwość gromadzenia własnych statystyk, przy zapewnieniu anonimowości.

Architektura systemu

System składa się z wielu węzłów (alkomatów) podłączonych do sieci. Za pośrednictwem internetu węzły przesyłają do bazy danych informacje z rezultatami pomiaru zawartości C2H5-OH w wydychanym powietrzu.

Z bazy danych korzysta serwer WWW, który umożliwia odczyt informacji o stanie trzeźwości na w miejscach, gdzie rozmieszczone są alkomaty. Ponadto z bazy danych informacje pobierane są przez aplikacje mobilne, które automatycznie powiadamiają swojego użytkownika o zbyt wysokiej średniej. Informacje takie mogą być kluczowe przy planowaniu spędzenia wolnego czasu.

Alkomat

Podstawowy węzeł w systemie. Odpowiada za pomiar alkoholu u badanego oraz przesyłanie tej informacji do centralnej bazy danych.

Sprzęt

W pierwszej fazie projektu sprzęt dobrano tak by uprościć samodzielną budowę zestawu bez konieczności lutowania skomplikowanej elektroniki. W tym celu urządzenie podzielona na dwa funkcjonalne moduły, komunikujące się za pomocą magistrali USB:

  1. Moduł obsługi sieci
  2. Moduł czujnika

Docelowo oba moduły mają być zintegrowane.

Moduł obsługi sieci

Może być zrealizowany na dowolnym komputerze z USB oraz kartą sieciową, począwszy od Onion Omega 2, a skończywszy na komputerze z procesorem x86. Optymalnym rozwiązaniem dla developera/testera jest jednak minikomputer Raspberry Pi 3.

Oprócz czujnika alkoholu, moduł obsługuje (lub może obsługiwać) również:

  • przycisk, który rozpoczyna pomiar
  • diodę (brzęczyk) sygnalizującą koniec pomiaru
  • wyświetlacz prezentujący rezultat pomiaru
  • czytnik RFID, który umożliwia zapis statystyk dla konkretnej osoby przy zapewnieniu anonimowości

Moduł czujnika

Początkowo zrealizowany w oparciu o Arduino Uno R3. Zastosowanie gotowego, łatwo dostępnego elementu umożliwi w szyki sposób podjęcie pracy nad projektem nowym osobom. Pominą one etap kupowania płytki PCB oraz jej lutowania.

Oprogramowanie

Moduł obsługi sieci

Moduł czujnika

Moduł czujnika oprogramowano z pominięciem środowiska arduino. Zastąpiono je systemem czasu rzeczywistego FreeRTOS oraz dodatkami opracowanymi w ramach projektu platformy dydaktycznej https://www.google.pl/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&ved=0ahUKEwjRufPV147XAhWkK5oKHVFRAoIQFgg_MAQ&url=https%3A%2F%2Fwww.thinkmind.org%2Fdownload.php%3Farticleid%3Dtele_v4_n34_2011_7&usg=AOvVaw2BJsncsS-4Y_sHsuSxrKbI

Aktualne oprogramowanie zawiera system FreeRTOS z dwoma wątkami, które - Wątek 1 zapala i gasi diodę w arduino. Tutaj będzie główna pętla programu - Wątek 2 obsługuje interpreter poleceń. Można dodawać własne polecenia. Programy wykonywane w ramach poleceń mogą czytać ze strumienia wejścia i wysyłać (działa fprintf i fscanf)

Kompilacja i uruchomienie oprogramowania

Projekt można pobrać z repozytorium github wpisując polecenie: git clone https://github.com/knzubr/firmware

Sam projekt zapisany jest w katalogu FreeRtos/projektyZubr/c2h5ohino. W katalogu tym jest plik z projektem dla Code::Blocks. W edytorze tym działa przycisk z trybem do kompilowania projektu

Projekt można skompilować również z konsoli po wydaniu polecenia make (trzeba być w katalogu projektu) W celu wgrania oprogramowania na arduino należy wpisać make program

Testowanie

W celu połączenia się z intepreterem poleceń należy uruchomić program minicom i wybrać następujące ustawienia:

A - Urządzenie szeregowe : /dev/ttyACM0
B - Lokalizacja pliku blokującego : /var/lock
C - Program Callin :
D - Program Callout :
E - Bps/Parzystość/Bity : 500000 8N1
F - Sprzętowa kontrola przepływu : Nie
G - Programowa kontrola przepływu : Nie

Po wpisaniu polecenia help i naciśnięciu enter widoczne są wszystkie polecenia wraz z opisem. Długość polecenia ograniczona jest do 31 znaków, a historia (można ją przeglądać za pomocą strzałki w górę i dół) do 4 ostatnich poleceń.

Aktualna wersja programu nie jest stabilna. Nie dobrałem w odpowiedni sposób rozmiaru sterty dla systemu FreeRTOS. Nie wiem również w ajkim stopniu wykorzystana jest sterta. Trzeba ją wykorzystać w 100% zwiększając rozmiary stosu dla obu wątków. Najlepiej również by zwiększyć rozmiar samej sterty, dbając o to, by zmieściła się w pamięci. AVR nie ma jednostki ochrony pamięci (MPU) co utrudnia sprawę.

Baza danych

Serwer WWW

Aplikacje mobilne

alkomat.txt · Last modified: 2017/10/26 18:29 by adam.kaliszan