Ogólne

Arduino i MySQL

Pinterest LinkedIn Tumblr

php-mysqlW dzisiejszym wpisie zaprezentuje łatwy sposób jak połączyć Arduino i Mysql aby zwiększyć jego możliwości. Pokażę jak wrzucić odczytane dane do bazy MySQL a następnie wyświetlić je w przejrzystej i responsywnej stronie www. Jako przykład posłuży nam czujnik ruchu PIR HC-SR501. Będziemy wysyłać na serwer informację o wykrytym ruchu, lecz w zależności od potrzeb można wysyłać różne dane np: pomiary temperatury, użycie kart RFid czy naciśnięcie przycisku podłączonego do arduino.  Aby wysyłać dane na zewnętrzny serwer niezbędne będą następujące elementy:

  • Arduino Uno
  • Ethernet Shield
  • Czujnik ruchu PIR HC-SR501
  • Router, kabel ethernet
  • Dioda led, rezystor
  • Płytka prototypowa, kable połączeniowe
  • serwer z obsługą PHP i MySQL

Problem można rozwiązać na kilka sposobów. Pierwszy sposób – Arduino łączy się bezpośrednio z bazą danych MySQL i wysyła dane do odpowiedniej tabeli. Drugi sposób polega na tym, że Arduino uruchamia wcześniej przygotowany skrypt PHP i przesyła dane w zmiennej $POST. Nie jestem ekspertem od bezpieczeństwa i nie wiem która metoda jest bezpieczniejsza. Wydaje mi się, że bezpieczniej jest uruchomić zdalnie skrypt PHP (drugi sposób), niż przesyłać dane do serwera za każdym żądaniem wrzucenia danych do tabeli.

Opis procesu
Opis procesu

Opis procesu:

  1. Arduino monitoruje stan pinu do którego jest podpięty czujnik ruchu, czujnik działa cyfrowo więc wysyła stan 0 lub 1.
  2. Jeżeli został wykryty ruch, na pinie 6 pojawia się stan wysoki czyli „1”. Jest to warunek aby nawiązać połączenie z serwerem.
  3. W przypadku gdy na pinie 6 jest stan niski – nie łączymy się z serwerem. Dzięki temu ograniczamy pasmo i ilość wysłanych danych.
  4. Arduino po nawiązaniu połączenia z serwerem uruchamia skrypt PHP i przekazuje zmienną informującą o wykryciu ruchu.
  5. Skrypt pobiera zmienną i zapisuje do bazy. Dodatkowo w bazie danych MySQL została użyta funkcja CURRENT_TIMESTAMP, która automatycznie dopisuje datę i godzinę pomiaru.
  6. Odczekujemy kilka sekund aby nie wpisywać tego samego wykrycia do bazy.

Szkic Arduino: (POBIERZ)

Schemat układu:

układ
układ

Jak widać schemat jest bardzo prosty. Dioda led została umieszczona tylko w celach diagnostycznych, aby mieć pewność że czujnik działa prawidłowo. Do układu ethernet shield został podpięty kabel ethernet. Jest to niezbędne aby Arduino otrzymało komunikację z internetem.

Musimy utworzyć bazę danych i tabelę która będzie przechowywać pomiary. Polecam do tego użycie narzędzia phpMyAdmin i opcję importu. Plik z gotową bazą do importu można pobrać stąd.

Kolejnym krokiem jest wrzucenie na serwer skryptów PHP, które umożliwią zapisanie danych do bazy MySQL i wyświetlenie ich w czytelnej formie. Gotowy skrypt można pobrać tutaj.

Następnym krokiem jest uzupełnienie danych w pliku connect2.php. Musimy podać dane naszego serwera takie jak adres, nazwa użytkownika, hasło oraz nazwę bazy danych.

Ostatnim etapem jest wgranie poprawionych plików na nasz serwer www. Aplikację uruchamiamy podając ścieżkę nazwaserwera/index.php

Widok aplikacji:

widok pomiarów
widok pomiarów

 

 

Jeszcze raz krok po kroku:

  1. Budowa układu Arduino + Ethernet Shield wraz z czujnkiem ruchu
  2. Podłączenie Ethernet shield do sieci LAN
  3. Wgranie sketcha, test na diodzie LED
  4. Utworzenie bazy danych
  5. Podmiana danych do serwera, wrzucenie na właściwy serwer PHP
  6. Uruchomienie skryptu index.php

Gdyby były problemy z uruchomieniem, jestem do Waszej dyspozycji.

Miłego majsterkowania!