- Wymagane składniki:
- Czujnik temperatury LM35:
- Łączenie LM35 z NodeMCU:
- Objaśnienie kodu:
- Kod HTML do wyświetlania temperatury na stronie internetowej:
- Pracujący:
W poprzednim samouczku Pierwsze kroki z NodeMCU widzieliśmy, czym jest NodeMCU i jak możemy go zaprogramować za pomocą Arduino IDE . Jak wiesz, NodeMCU ma wewnątrz układ Wi-Fi, więc może również łączyć się z Internetem. Tworzenie projektów IoT jest bardzo przydatne. Wcześniej używaliśmy ThingSpeak z Arduino do wykonania termometru IoT, ale tutaj stworzymy własną stronę internetową do wyświetlania temperatury.
W tym samouczku dowiemy się więcej o tym interesującym MCU i powoli zanurzymy się w świecie Internetu rzeczy, łącząc NodeMCU z Internetem. Tutaj użyjemy tego modułu, aby uzyskać temperaturę pokojową w przeglądarce internetowej, tj. Stworzymy serwer sieciowy do wyświetlania temperatury za pomocą LM35 jako czujnika temperatury.
Wymagane składniki:
- NodeMCU - ESP12
- Czujnik temperatury LM35
- Płytka prototypowa
- Złącza męsko-żeńskie
Czujnik temperatury LM35:
LM35 to analogowy liniowy czujnik temperatury. Jego moc jest proporcjonalna do temperatury (w stopniach Celsjusza). Zakres temperatur pracy od -55 ° C do 150 ° C. Napięcie wyjściowe zmienia się o 10 mV w odpowiedzi na każdy wzrost lub spadek temperatury o C. Może być zasilany zarówno napięciem 5 V, jak i 3,3 V, a prąd czuwania jest mniejszy niż 60uA.
Należy pamiętać, że LM35 jest dostępny w 3 wersjach serii, a mianowicie serii LM35A, LM35C i LM35D. Główna różnica polega na ich zakresie pomiarów temperatury. Seria LM35D jest przeznaczona do pomiaru od 0 do 100 stopni Celsjusza, podczas gdy seria LM35A jest przeznaczona do pomiaru w szerszym zakresie od -55 do 155 stopni Celsjusza. Seria LM35C jest przeznaczona do pomiaru od -40 do 110 stopni Celsjusza.
LM35 używaliśmy już z wieloma innymi mikrokontrolerami do pomiaru temperatury:
- Termometr cyfrowy z mikrokontrolerem LM35 i 8051
- Pomiar temperatury za pomocą mikrokontrolera LM35 i AVR
- Cyfrowy termometr wykorzystujący Arduino i czujnik temperatury LM35
- Pomiar temperatury w pomieszczeniu za pomocą Raspberry Pi
Łączenie LM35 z NodeMCU:
Schemat obwodu połączenia LM35 z NodeMCU przedstawiono poniżej:
LM35 jest czujnikiem analogowym, więc musimy przekonwertować to wyjście analogowe na cyfrowe. W tym celu używamy pinu ADC w NodeMCU, który jest zdefiniowany jako A0. Podłączymy wyjście LM35 do A0.
Na pinach NodeMCU mamy 3,3 V napięcia wyjściowego. Tak więc użyjemy 3,3 V jako Vcc dla LM35.
Objaśnienie kodu:
Kompletny kod z filmem demonstracyjnym znajduje się na końcu artykułu. Tutaj wyjaśniamy kilka części kodu. Wyjaśniliśmy już, jak przesłać kod do MCU za pomocą Arduino IDE.
Najpierw musimy dołączyć bibliotekę ESP8266wifi, aby uzyskać dostęp do funkcji Wi-Fi.
#zawierać
Następnie wprowadź swoją nazwę Wi-Fi i hasło w polu SSID i hasło . Zainicjowałem również zmienne i uruchom serwer na porcie 80 z szybkością transmisji 115200.
const char * ssid = "*********"; // Twój ssid const char * password = "***********"; // Twoje hasło float temp_celsius = 0; float temp_fahrenheit = 0; Serwer WiFiServer (80); void setup () { Serial.begin (115200);
Połączenie Wi-Fi jest ustanawiane przez wywołanie tych funkcji.
Serial.println (); Serial.println (); Serial.print ("Łączenie z"); Serial.println (ssid); WiFi.begin (ssid, hasło);
Nawiązanie połączenia może zająć kilka sekund, więc wyświetlaj „…”, aż połączenie nie zostanie nawiązane. Następnie system będzie czekał i sprawdzał, czy klient się połączył…
while (WiFi.status ()! = WL_CONNECTED) { opóźnienie (500); Serial.print („.”); } Serial.println („”); Serial.println („Wi-Fi jest podłączone”); server.begin (); Serial.println ("Serwer uruchomiony"); Serial.println (WiFi.localIP ()); }
W sekcji pętli odczytaj wartości czujników i zamień je na stopnie Celsjusza i Fahrenheita i wyświetl te wartości na monitorze szeregowym.
void loop () { temp_celsius = (analogRead (A0) * 330,0) / 1023,0; // Aby zamienić wartości analogowe na stopnie Celsjusza Na naszej płycie mamy 3,3 V i wiemy, że napięcie wyjściowe LM35 zmienia się o 10 mV na każdy stopień wzrostu / spadku Celsjusza. Zatem (A0 * 3300/10 ) / 1023 = Celsjusza temp_fahrenheita = Celsjusza * 1,8 + 32,0; Serial.print ("Temperatura ="); Serial.print (temp_celsius); Serial.print ("Celsjusz");
Kod HTML do wyświetlania temperatury na stronie internetowej:
Wyświetlamy temperaturę na stronie internetowej, aby była dostępna z dowolnego miejsca na świecie przez Internet. Kod HTML jest bardzo prosty; musimy po prostu użyć funkcji client.println, aby wyświetlić każdy wiersz kodu HTML, aby przeglądarka mogła go wykonać.
Ta część pokazuje kod HTML do stworzenia strony internetowej, która wyświetla wartość temperatury.
Klient WiFiClient = server.available (); client.println ("HTTP / 1.1 200 OK"); client.println ("Content-Type: text / html"); client.println ("Połączenie: zamknij"); // połączenie zostanie zamknięte po zakończeniu odpowiedzi client.println ("Refresh: 10"); // aktualizuj stronę po 10 sekundach client.println (); client.println (""); client.println (""); client.print ("
Termometr cyfrowy
"); client.print ("Temperatura (* C) = "); client.println (temp_celsius); client.print ("
Temperatura (F) = "); client.println (temp_fahrenheit); client.print ("
"); client.println (" "); opóźnienie (5000); }Pracujący:
Po wgraniu kodu za pomocą Arduino IDE, otwórz monitor szeregowy i naciśnij przycisk Reset na NodeMCU.
Teraz możesz zobaczyć, że płyta jest podłączona do sieci Wi-Fi, którą zdefiniowałeś w swoim kodzie, a także masz adres IP. Skopiuj ten adres IP i wklej go w dowolnej przeglądarce internetowej. Upewnij się, że system, na którym używasz przeglądarki internetowej, powinien być podłączony do tej samej sieci.
Twój cyfrowy termometr jest gotowy, a temperatura będzie odświeżana automatycznie w przeglądarce internetowej co 10 sekund.
Aby ta strona była dostępna z Internetu, wystarczy ustawić przekierowanie portów w routerze / modemie. Sprawdź pełny kod i wideo poniżej.
Sprawdź również:
- Stacja pogodowa Raspberry Pi: monitorowanie wilgotności, temperatury i ciśnienia przez Internet
- Monitorowanie temperatury i wilgotności na żywo przez Internet za pomocą Arduino i ThingSpeak