Wilgotność i temperatura są bardzo powszechnymi parametrami do pomiarów w wielu miejscach, takich jak farma, szklarnia, medycyna, przemysł i biura. Omówiliśmy już pomiar wilgotności i temperatury za pomocą Arduino i wyświetliliśmy dane na wyświetlaczu LCD.
W tym projekcie IoT zamierzamy monitorować wilgotność i temperaturę przez Internet za pomocą ThingSpeak, gdzie pokażemy aktualne dane dotyczące wilgotności i temperatury przez Internet za pomocą serwera ThingSpeak. Jest to realizowane poprzez komunikację danych między Arduino, modułem czujnika DHT11, modułem WIFI ESP8266 i wyświetlaczem LCD. Termometr w skali Celsjusza i miernik wilgotności w skali procentowej wyświetla temperaturę i wilgotność otoczenia na wyświetlaczu LCD, a także wysyła je do serwera ThingSpeak w celu monitorowania na żywo z dowolnego miejsca na świecie.
Konfiguracja robocza i ThingSpeak:
Ten projekt oparty na IoT składający się z czterech sekcji, po pierwsze Czujnik wilgotności i temperatury DHT11 wykrywa dane dotyczące wilgotności i temperatury . Po drugie, Arduino Uno wyodrębnia dane czujnika DHT11 jako odpowiednią liczbę w procentach i skali Celsjusza i wysyła je do modułu Wi-Fi. Po trzecie, moduł Wi-Fi ESP8266 przesyła dane do serwera ThingSpeak. I wreszcie ThingSpeak analizuje dane i przedstawia je w formie wykresu. Opcjonalny wyświetlacz LCD służy również do wyświetlania temperatury i wilgotności.
ThingSpeak zapewnia bardzo dobre narzędzie do projektów opartych na IoT dla Arduino. Korzystając ze strony ThingSpeak, możemy monitorować nasze dane przez Internet z dowolnego miejsca, a także możemy kontrolować nasz system przez Internet, korzystając z kanałów i stron internetowych udostępnianych przez ThingSpeak. ThingSpeak „zbiera” dane z czujników, „analizuje i wizualizuje” dane i „działa”, wywołując reakcję. Tutaj wyjaśniamy, jak wysłać dane do serwera ThingSpeak za pomocą modułu WIFI ESP8266:
1. Najpierw użytkownik musi założyć konto na ThingSpeak.com, a następnie zalogować się i kliknąć Get Started.
2. Teraz przejdź do menu „Kanały” i kliknij opcję Nowy kanał na tej samej stronie, aby kontynuować proces.
3. Teraz zobaczysz formularz tworzenia kanału, wypełnij nazwę i opis według własnego uznania. Następnie wypełnij pola „Wilgotność” i „Temperatura” w etykietach Pola 1 i Pola 2, zaznacz pola wyboru dla obu Pól. Zaznacz również pole wyboru opcji „Udostępnij publicznie” poniżej w formularzu i na końcu Zapisz kanał. Twój nowy kanał został utworzony.
4. Teraz kliknij zakładkę „Klucze API” i zapisz klucze API zapisu i odczytu, tutaj używamy tylko klucza zapisu. Musisz skopiować ten klucz w char * api_key w kodzie.
5. Następnie kliknij „Import / Eksport danych” i skopiuj adres URL żądania aktualizacji kanału kanału GET, który jest:
api.thingspeak.com/update?api_key=SIWOYBX26OXQ1WMS&field1=0
6. Teraz użytkownik musi otworzyć „api.thingspeak.com” używając funkcji httpGet z postUrl jako „update? Api_key = SIWOYBX26OXQ1WMS & field1 = 0”, a następnie wysłać dane przy użyciu źródła danych lub adresu żądania aktualizacji.
Przed wysłaniem danych użytkownik musi edytować ten ciąg zapytania lub postUrl z polami danych temperatury i wilgotności, jak pokazano poniżej. Tutaj dodaliśmy oba parametry w ciągu, który musimy wysłać za pomocą żądania GET do serwera, po czym użyliśmy httpGet do wysłania danych na serwer. Sprawdź pełny kod poniżej.
Sprintf (postUrl, "update? Api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet („api.thingspeak.com”, postUrl, 80);
Cały proces jest przedstawiony w sekcji Wideo na końcu tego artykułu.
Działanie tego projektu opiera się na jednoprzewodowej komunikacji szeregowej do pobierania danych z DHT11. Najpierw Arduino wysyła sygnał startu do modułu DHT, a następnie DHT daje sygnał odpowiedzi zawierający dane. Arduino zbiera i wyodrębnia dane w dwóch częściach: najpierw wilgotność, a druga temperatura, a następnie wysyła je do 16x2 LCD i serwera ThingSpeak. ThingSpeak wyświetla dane w formie wykresu, jak poniżej:
Możesz dowiedzieć się więcej o czujniku DHT11 i jego połączeniu z Arduino tutaj.
Opis obwodu:
Połączenia w tym projekcie monitorowania temperatury i wilgotności ThingSpeak są bardzo proste. Tutaj do wyświetlania temperatury i wilgotności służy wyświetlacz ciekłokrystaliczny, który jest bezpośrednio podłączony do Arduino w trybie 4-bitowym. Piny LCD, a mianowicie RS, EN, D4, D5, D6 i D7 są podłączone do cyfrowych pinów Arduino 14, 15, 16, 17, 18 i 19. Ten wyświetlacz LCD jest opcjonalny.
Moduł czujnika DHT11 jest podłączony do cyfrowego pinu 12 Arduino. Piny Vcc i GND modułu Wi-Fi ESP8266 są bezpośrednio podłączone do 3,3 V, a GND Arduino i CH_PD jest również podłączone do 3,3 V. Piny Tx i Rx ESP8266 są bezpośrednio podłączone do pinów 2 i 3 Arduino. Biblioteka oprogramowania szeregowego jest tu również używana, aby umożliwić komunikację szeregową na pinach 2 i 3 Arduino. Omówiliśmy już szczegółowo interfejs modułu Wi-Fi ESP8266 z Arduino.
Część programistyczna:
Część programowa tego projektu odgrywa bardzo ważną rolę przy wykonywaniu wszystkich operacji. Przede wszystkim dołączamy wymagane biblioteki i inicjalizujemy zmienne.
#include "dht.h" // Zawiera bibliotekę dla dht #include
Następnie wprowadź swój klucz Write API i weź kilka ciągów.
char * api_key = "SIWOYBX26OXQ1WMS"; // Wpisz swój klucz Write API z ThingSpeak static char postUrl; int humi, tem; void httpGet (String ip, String path, int port = 80);
W funkcji void loop () odczytujemy temperaturę i wilgotność, a następnie wyświetlamy te odczyty na wyświetlaczu LCD.
Funkcja void send2server () służy do wysyłania danych do serwera. Funkcja Send2server to procedura obsługi przerwania timera, wywołująca co 20 sekund. Kiedy wywołujemy funkcję aktualizacji, wywoływana jest procedura obsługi przerwania timera.
void send2server () {char tempStr; char humidStr; dtostrf (tem, 5, 3, tempStr); dtostrf (humi, 5, 3, humidStr); sprintf (postUrl, "update? api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet („api.thingspeak.com”, postUrl, 80); }