Programowanie mikrokontrolerów
mikrokontrolery24.pl
Internetowa stacja pogodowa
Spis treści
- Opis projektu
- Uruchomienie wyświetlacza OLED z płytką Wifi LoLin ModeMcu V3
- Uruchomienie czujnika temperatury, ciśnienia, wilgotności - BMP280
- Uruchomienie komunikacji WIFI
- Uruchomienie webserwera prezentującego wyniki na stronie www
- Utworzenie i konfiguracja bazy danych SQL
- Wysyłanie danych do bazy SQL za pomocą skryptu PHP
- Prezentacja wyników z bazy SQL w postaci wykresu z wykorzystaniem CanvasJS
- Kod programu
Poniższy projekt dotyczyć będzie budowy termometru internetowego z komunikacją Wifi. Głównym założeniem projektu jest skonstruowanie urządzenia które zapewni:
- Akwizycje danych w sieci Wifi przez dostęp do serwera WWW zawartego w urządzeniu
- Akwizycje danych przez bazę danych SQL na serwerze zewnętrznym z dostępem do danych przez serwis WWW umieszczony na serwerze hostingowym.
- Kreślenie wykresów na podstawie danych zebranych w bazie SQL poprzez stronę WWW
- Inne w miarę potrzeby
Projekt oparty będzie na następujących elementach:
- Płytka z modułem Wifi LoLin ModeMcu V3 (2 sztuki)
- Płytka pomiarowa I2C BMP280 (2 sztuki)
- Czujnik AM2302 (temperatura, wilgotność)
- Wyświetlacz OLED SSD1306 128X64 NONAME I2C
Dzięki modułowi BMP280 oprócz temperatury pozyskiwana będzie dodatkowo wartość wilgotności oraz ciśnienia atmosferycznego. Dane będzie można odczytać za pomocą zaimplementowanego ekranu OLED, przy pomocy połączenia z witryną generowaną przez serwer WWW zaimplementowany w module Wifi (dostępny tylko w sieci lokalnej) oraz przy pomocy strony internetowej generowanej na podstawie bazy danych MySQL. Pomiary realizowane będą za pomocą dwóch modułów pomiarowych BMP280 tak aby mierzyć parametry wewnątrz mieszkania oraz na zewnątrz. W dalszym opisie będę odwoływał się do fragmentów programu tworzonego dla układu wifi modeMcu tworzonego w środowisku Arduino, fragmentów kodu PHP wykorzystywanego do dodawania i zarządzania danymi przysłanymi przez moduł pomiarowy do bazy danych, fragmentów kogu HTML wykorzystywanych do wyświetlania wyników w sieci lokalnej przez serwer www w urządzeniu oraz językiem SQL w celu zarządzania danymi w bazie SQL. Z uwagi na szeroki zakres projektu oraz fakt że jestem samoukiem niektóre terminy oraz określenia mogą być nieprofesjonalne oraz nie precyzyjne jednak będą prowadzić do uruchomienia sprawnego urządzenia.
Projektowane urządzenie będzie działało zgodnie z poniższym schematem blokowym
Zgodnie z powyższym schematem blokowym czujniki dokonujące pomiarów komunikować się będą za pomocą sieci Wifi z kontem hostingowym obsługującym język programowania PHP. Za pomocą skryptu PHP wyniki otrzymywane z czujników dodawane będą do odpowiedniej tabeli w bazie danych SQL. Interpretacja wyników przebiegać będzie za pomocą odczytu wartości z tabeli SQL przez skrypt PHP i wyświetlanie ich w dwóch formach. Pierwszą z nich będzie prezentacja pomiarów w postaci tabeli. Drugą z nich będzie prezentacja wyników w postaci wykreślonego wykresu wartości pomierzonych. Czujniki dodatkowo wyposażone będą we własne wyświetlacze umożliwiające odczyt pomiarów oraz diagnostykę ich pracy. Budowę układu rozpoczniemy od zbudowania czujnika z możliwością diagnostyki jego pracy poprzez dodanie do niego wyświetlacza. Do budowy pierwszego z czujników wykorzystany zostanie wyświetlacz OLED SSD1306 128X64 NONAME I2C. Pierwszym krokiem będzie uruchomienie wyświetlacza tak aby współpracował z płytą Wifi LoLin ModeMcu V3.
2. Uruchomienie wyświetlacza OLED z płytką Wifi LoLin ModeMcu V3
Pierwszym krokiem będzie konfiguracja i uruchomienie wyświetlacza OLED opartym na sterowniku SSD1306 o rozdzielczości 128X64 komunikującym się po protokole I2C z płytką Wifi LoLin ModeMcu V3. Sposób uruchomienia został przedstawiony w odrębnej sekcji. (link do opisu uruchomienia OLED na I2C).
3. Uruchomienie czujnika temperatury, ciśnienia, wilgotności - BMP280
Układ pomiarowy zastosowany w projekcie oparty został na czujniku temperatury, ciśnienia, wilgotności - BMP280. Budowa zasada działania oraz uruchomienie czujnika BMP280 opisane zostało na osobnej podstronie. (link do opisu czujnika BMP280).
4. Uruchomienie komunikacji WIFI
Układ komunikacji bezprzewodowej zastosowany w projekcie oparty został na module WIFI - NodeMcu v3. Budowa zasada działania oraz uruchomienie modułu WIFI NodeMcu v3 opisane zostało na osobnej podstronie. (link do opisu modułu NodeMcu v3).
5. Uruchomienie serwera www prezentującego wyniki na stronie www (w sieci lokalnej)
Uruchomienie prostego serwera www na wykorzystywanym układzie przedstawione zostanie w osobnej sekcji (link do opisu uruchomienia serwera www na EP8266).
Poniżej przedstawiony zostanie kod źródłowy wykorzystany do wyświetlenia mierzonych przez czujnik wartości na stronie www którą możemy otworzyć w sieci lokalnej jako strona www dzięki zaimplementowanemu serwerowi www w nasz układ.
//**********************************************
Opracować
//*********************************************
dfdfdfdfd
6. Utworzenie i konfiguracja bazy danych SQL
Aby wykorzystywać możliwości bazy danych SQL musimy posiadać dostęp do takiej bazy. Projekt wykorzystuje podstawowe funkcje baz danych SQL tak więc wystarczy założyć sobie konto hostingowe u dowolnego dostawcy ( płatne lub darmowe) byle hosting oferował dostęp do bazy danych SQL oraz wspierał technologie PHP potrzebna do dodawania nowych danych do tabeli pomiarów.
7. Wysyłanie danych do bazy SQL za pomocą skryptu PHP
Wysyłanie danych do bazy SQL odbywa się za pomocą skryptu PHP umieszczonego na hostingu www. Aby wykorzystać możliwości bazy danych SQL potrzebujemy hosting wspierający obsługę języka PHP. Dodawanie danych do bazy SQL realizowane jest za pomocą skryptu PHP realizowanego przez serwer hostingowy na podstawie danych wejściowych wysyłanych w linku przez moduł wifi metodą POST. Wartości przekazywane przez link internetowy wysyłany przez moduł wifi NodeMcu są interpretowane przez skrypt PHP i dodawane do bazy danych SQL.
8. Prezentacja wyników z bazy SQL w postaci wykresu z wykorzystaniem CanvasJS
ddddddddddddddddddd
(link do opisu konfiguracji i obsługi pakietu CanvasJS).
ddddddddddd
piątek 23-kwi-21 14:46:02 CEST
23-kwi-2021 14:46:02 CEST
© mikroprocesory.info.pl@gmail.com 2013.