IOT / Linux · 6 lutego, 2023 0

Jak połączyć Arduino z bazą danych MariaDB / MySQL.

Hej, w tym wpisie pokażę Ci jak połączyć Arduino z bazą danych MySQL. Bazy danych są niezbędne do przechowywania i analizowania dużych ilości informacji, a łączenie ich z platformami takimi jak Arduino umożliwia tworzenie bardziej zaawansowanych projektów.

Do realizacji tego projektu potrzebujemy serwera, na którym zainstalujemy Apache Web Server , MariaDB fork MySQL oraz PHP. Ja do tego celu użyje Raspberry Pi z zainstalowanym standardowym RpiOS , ale możesz użyć innego dowolnego serwera fizycznego czy też chmury. Całą instalację oraz konfigurację w systemie Linux przeprowadzimy w terminalu.

Arduino za pomocą zapytania HTTP będzie wysyłało dane z czujnika do skryptu PHP umieszczonym na serwerze Apache, następnie skrypt będzie łączył się z bazą danych i zapisywał w niej dane.


Tak wygląda ten projekt na papierze

Ze strony sprzętowej Arduino potrzebujemy:

1 x Arduino Uno
1 x Ethernet Shield dla Arduino
1 x Kabel USB 2.0 A/B
1 x Kabel Ethernet
1 x Czujnik DHT11
1 x Zasilanie do Arduino UNO 9V (opcjonalnie)
1 x Płytka Prototypowa (opcjonalnie)

To są linki afiliacyjne. Jeśli kupisz komponenty poprzez te linki, otrzymam prowizję bez dodatkowych kosztów dla Ciebie. Całość przeznaczam na nowe publikacje.

1. Instalacja konfiguracja serwera MariaDB na Raspberry Pi

Łączymy się z naszym serwerem, a następnie instalujemy MariaDB

Konfigurujemy podstawowe ustawienia bezpieczeństwa.

Wpisz swoje hasło root-a
Zostawiamy logowanie tak jak jest wpisujemy n
Zmień hasło root-a wpisujemy n
Usuwamy anonimowych użytkowników wpisujemy Y
Dla bezpieczeństwa wyłączamy logowanie się root-a zdalnie Y
Usuwamy testową bazę danych, wpisujemy Y
Przeładuj tabele przywilej Y
Kongratki

2. Konfiguracja bazy oraz użytkownika

Uruchom MariaDB w terminalu wpisz poniższą komendę następnie wpisz swoje hasło:

Utwórz bazę danych w MariaDB , następnie przełącz się na nią.

Stwórz tabele dla danych z czujnika w nowej bazie. Do przechowywania danych utworzymy 4 kolumny id – klucz główny, temperature dla temperatury, humidity dla wilgotności oraz date, która przechowuje czas i datę, gdy dane z czujnika zostały zapisane. Tabele nazwiemy dht11

Utwórz nowego użytkownika i nadaj mu uprawnienia:

W powyższej komendzie arduino to nazwa użytkownika, localhost to adres hosta, a haslo to hasło.

Z Mariadb wychodzimy wpisując exit

3. Instalacja i konfiguracja PHP i Apache, skrypt do zapisywania danych

Ok, zakończyliśmy konfigurację MariaDB, teraz zainstalujemy Apache HTTP serwer, oraz PHP i je skonfigurujemy. Na końcu stworzymy skrypt PHP, który będzie zapisywał dane do bazy.

Zainstaluj Apache

Zainstaluj PHP w najnowszej wersji.

Potrzebny nam jeszcze pakiet php-mysql, który zawiera dodatek mysqli do PHP. Między innymi za pomocą tego dodatku będziemy łączyć się z naszą bazą danych.

Teraz musimy wyedytować plik konfiguracji i włączyć dodatek mysqli, żeby to zrobić przechodzimy do folderu, w którym znajduje się plik konfiguracji php.ini i edytujemy go.

W edytorze nano wciśnij kombinacje CTRL + W, aby szukać następnie wpisz mysqli i wciśnij Enter. 

Usuń komentarz, aby włączyć dodatek – skasuj średnik przed extension=mysqli. Zapisz plik CTRL + S, wyjdź z edytora CTRL + X.

Zrestartuj usługę apache2

Na koniec sprawdź, czy serwer działa w przeglądarce, wpisz adres swojego urządzenia, powinieneś zobaczyć stronę powitalna Apache.

Przechodzimy do katalogu publicznego i w edytorze nano tworzymy skrypt, z którego będzie korzystało Arduino, aby wysłać dane z czujnika do bazy.

Oto prosty skrypt, który będzie zapisywał dane do bazy. Zaczynamy od zadeklarowania zmiennych. Następnie tworzone jest połączenie z bazą danych na serwerze z użyciem danych logowania (nazwa użytkownika, hasło i nazwa bazy danych).

Jeśli połączenie jest pomyślne, dane temperatury i wilgotności są dodawane do tabeli w bazie danych. W przypadku błędu, skrypt wyświetla komunikat. Na koniec połączenie z bazą jest zamykane.

Zapisujemy plik i wychodzimy z edytora  CTRL +S, CTRL+X

4.Arduino UNO połączenie oraz programowanie.

Wciśnij Ethernet shield na Arduino jak na poniższym obrazku.

Połącz czujnik według poniższego schematu
Minus z czujnika do GND, Plus do zasilania 5V a sygnał do Pinu nr 7.

Podłącz Arduino do komputera kablem usb, następnie uruchom Arduino IDE i wybierz swoją płytkę.

W Menedżerze bibliotek znajdź i zainstaluj bibliotekę DHT sensor library od Adafruit.

Teraz wklej poniższy kod do swojego szkicu.

Jest to program, który wysyła dane z czujnika DHT11 do serwera Apache, upraszczając dopisuje do naszego skryptu  zapisz.php ?temp= i &hum= z pobranymi wartościami. Kolejno w funkcji setup() inicjalizuje się połączenie szeregowe, połączenie z czujnikiem oraz Ethernet. W funkcji loop() program łączy się z serwerem, odczytuje dane z czujnika i wysyła je do serwera za pomocą zapytania HTTP. Po wysłaniu danych zamykamy połączenie i opóźniamy kolejny odczyt o 20 sekund.
Pamiętaj, żeby podmienić adres serwera oraz nadać adres IP ze swojego zakresu sieci

Z menu Szkic wybieramy Prześlij, aby skompilować i wysłać program do Arduino.

Po chwili Arduino samo się zrestartuje, gdy tak się stanie z menu Narzędzia wybierz Monitor Portu Szeregowego.

W dolnej części programu otworzy nam się monitor upewnij się, że baud jest ustawiony na 9600. Program w pętli będzie wysyłał dane oraz informował o tym w monitorze portu. Czy rzeczywiście dane zapisywane są w bazie ?

5. Odczyt danych z bazy i wyświetlanie danych w przeglądarce

Sprawdźmy, czy jakiekolwiek dane trafiły do naszej bazy. Zalogujmy się do naszego serwera Linux, a następnie do MariaDB. Przejdź do swojej bazy i wyświetl wszystkie rekordy ze swojej tabeli

Dane trafiają do naszej bazy, pełen sukces!!! Na deser napiszemy skrypt, który będzie wyświetlał dane w przeglądarce. W konsoli przejdź do folderu publicznego Apache, usuń stronę główną i utwórz nową w edytorze nano

Wklej poniższy kod i zmień na swoje hasło oraz nazwę bazy. Zapisz plik i wyjdź z edytora.

Przejdź do strony głównej, w przeglądarce wpisz adres swojego serwera.
Oto dane temperatury oraz wilgotności. 😀

6. Podsumowanie

W tym tutorialu nauczyliśmy się jak wysyłać dane z Arduino do bazy danych MySQL na serwerze. Zaczynaliśmy od instalacji potrzebnych pakietów i uruchomienia serwera Apache na naszym komputerze. Następnie konfigurowaliśmy PHP oraz napisaliśmy skrypt do zapisu danych do bazy. W następnej części podłączyliśmy Arduino oraz napisaliśmy kod łączący wszystko i wysyłający dane do skryptu. W tym projekcie nie tylko nauczyliśmy się podstaw programowania w języku Arduino, ale także poznaliśmy trochę Linuxa i konfiguracje podstawowych usług serwera. To był świetny projekt i mam nadzieję, że tobie też się miło go budowało!

Do następnego! Cześć!