Spisu treści:
- Krok 1: Zestawienie materiałów
- Krok 2: Czujnik temperatury DS18B20
- Krok 3: Podłączanie czujników do NodeMCU
- Krok 4: Instalacja odpowiednich bibliotek
- Krok 5: Testowanie czujników
- Krok 6: Korzystanie z Blynk
- Krok 7: Wniosek
Wideo: IoT w prosty sposób: monitorowanie wielu czujników: 7 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
Kilka tygodni temu opublikowałem tutaj samouczek dotyczący monitorowania temperatury za pomocą DS18B20, czujnika cyfrowego, który komunikuje się przez magistralę 1-Wire, wysyłając dane przez Internet z NodeMCU i Blynk:
IoT w prosty sposób: monitorowanie temperatury w dowolnym miejscu
Ale to, czego nam brakowało w eksploracji, to jedna z wielkich zalet tego rodzaju czujnika, czyli możliwość zbierania wielu danych z wielu czujników podłączonych do tej samej magistrali 1-wire. A teraz nadszedł czas, aby to również zbadać.
Rozszerzymy to, co zostało opracowane w poprzednim samouczku, monitorując teraz dwa czujniki DS18B20, skonfigurowane jeden w Celsjusza, a drugi w Fahrenheit. Dane zostaną wysłane do aplikacji Blynk, jak pokazano na powyższym schemacie blokowym.
Krok 1: Zestawienie materiałów
- NodeMCU ESP 12-E (*)
- 2 X czujnik temperatury DS18B20
- Rezystor 4,7K Ohm
- Chlebak
- Okablowanie
(*) Tutaj można zastosować dowolny typ urządzenia ESP. Najczęstsze to NodeMCU V2 lub V3. Oba zawsze będą działać dobrze.
Krok 2: Czujnik temperatury DS18B20
W tym samouczku użyjemy wodoodpornej wersji czujnika DS18B20. Jest bardzo przydatny do zdalnej temperatury w wilgotnych warunkach, na przykład na wilgotnej glebie. Czujnik jest izolowany i może wykonywać pomiary do 125oC (Adafrut nie zaleca używania go powyżej 100oC ze względu na płaszcz kabla z PVC).
DS18B20 to czujnik cyfrowy, dzięki czemu można go używać nawet na duże odległości! Te 1-przewodowe cyfrowe czujniki temperatury są dość precyzyjne (±0,5°C w dużym zakresie) i mogą zapewnić do 12 bitów precyzji z wbudowanego konwertera cyfrowo-analogowego. Działają świetnie z NodeMCU za pomocą jednego cyfrowego pinu, a nawet można podłączyć wiele pinów do tego samego pinu, każdy ma unikalny 64-bitowy identyfikator wypalony w fabryce, aby je odróżnić.
Czujnik pracuje od 3.0 do 5.0V, co oznacza, że może być zasilany bezpośrednio z jednego z pinów NodeMCU 3.3V.
Czujnik posiada 3 przewody:
- Czarny: GND
- Czerwony: VCC
- Żółty: dane 1-przewodowe
Tutaj możesz znaleźć pełne dane: Arkusz danych DS18B20
Krok 3: Podłączanie czujników do NodeMCU
- Podłącz 3 przewody z każdego czujnika na mini Breadboard, jak pokazano na powyższym zdjęciu. Użyłem specjalnych złącz, aby lepiej zamocować na nim kabel czujnika.
-
Zauważ, że oba czujniki są równoległe. Jeśli masz więcej niż 2 czujniki, powinieneś zrobić to samo.
- Czerwony ==> 3,3V
- Czarny ==> GND
- Żółty ==> D4
- Użyj rezystora 4,7 kiloomów między VCC (3,3 V) a danymi (D4)
Krok 4: Instalacja odpowiednich bibliotek
Do prawidłowego korzystania z DS18B20 potrzebne będą dwie biblioteki:
- OneWire
- DallasTemperatura
Zainstaluj obie biblioteki w swoim depozycie bibliotek Arduino IDE.
Zauważ, że biblioteka OneWire MUSI być specjalna, zmodyfikowana do użycia z ESP8266, w przeciwnym razie podczas kompilacji pojawi się błąd. Ostatnią wersję znajdziesz pod powyższym linkiem.
Krok 5: Testowanie czujników
Aby przetestować czujniki, pobierz poniższy plik z mojego GitHub:
NodeMCU_DS18B20_Dual_Sensor_test.ino
/**************************************************************
* Test wielu czujników temperatury * * 2 x czujnik OneWire: DS18B20 * Podłączony do NodeMCU D4 (lub Arduino Pin 2) * * Opracowany przez Marcelo Rovai - 25 sierpnia 2017 **************** **********************************************/ #włączać # uwzględnij #define ONE_WIRE_BUS 2 // DS18B20 na styku NodeMCU D4 OneWire oneWire(ONE_WIRE_BUS); Dallas Temperatura DS18B20(&oneWire); void setup() { Serial.begin(115200); DS18B20.początek(); Serial.println("Testowanie danych z dwóch czujników"); } void loop() { float temp_0; pływak temp_1; DS18B20.requestTemperatures(); temp_0 = DS18B20.getTempCByIndex(0); // Czujnik 0 przechwyci Temp w stopniach Celsjusza temp_1 = DS18B20.getTempFByIndex(1); // Czujnik 0 przechwyci temperaturę w Fahrenheit Serial.print("Temp_0: "); Serial.print(temp_0); Serial.print(" oC. Temp_1: "); Serial.print(temp_1); Serial.println(" z"); opóźnienie (1000); }
Patrząc na powyższy kod, powinniśmy zauważyć, że najważniejsze wiersze to:
temp_0 = DS18B20.getTempCByIndex(0); // Czujnik 0 rejestruje temperaturę w stopniach Celsjusza
temp_1 = DS18B20.getTempFByIndex(1); // Czujnik 0 przechwyci temperaturę w stopniach Fahrenheita
Pierwszy zwróci wartość z czujnika [0] (patrz „indeks(0)”) w Celsjusza (patrz fragment kodu: „getTempC”. Druga linia jest związana z Sensor[1] i zwróci dane w stopniach Fahrenheita. Możesz mieć tutaj "n" czujników, ponieważ masz inny "indeks" dla każdego z nich.
Prześlij teraz kod do swojego NodeMCU i monitoruj temperaturę za pomocą monitora szeregowego.
Powyższe zdjęcie pokazuje oczekiwany rezultat. Trzymając każdy z czujników w dłoni, powinieneś zobaczyć, jak temperatura rośnie.
Krok 6: Korzystanie z Blynk
Gdy zaczniesz rejestrować dane o temperaturze, nadszedł czas, aby zobaczyć je z dowolnego miejsca. Zrobimy to za pomocą Blynk. Tak więc wszystkie przechwycone dane będą wyświetlane w czasie rzeczywistym na Twoim urządzeniu mobilnym, a także zbudujemy w tym celu historyczny depozyt.
Wykonaj poniższe kroki:
- Utwórz nowy projekt.
- Nadaj mu nazwę (w moim przypadku „Podwójny monitor temperatury”)
- Wybierz Nowe urządzenie - ESP8266 (WiFi) jako "Moje urządzenia"
- Skopiuj TOKEN UWIERZYTELNIENIA do wykorzystania w kodzie (możesz go wysłać na swój e-mail).
-
Zawiera dwa widżety „Wskaźnik”, definiujące:
- Wirtualny pin do użycia z każdym czujnikiem: V10 (Sensor[0]) i V11 (Sensor[1])
- Zakres temperatur: -5 do 100 oC dla czujnika [0]
- Zakres temperatur: 25 do 212 oC dla czujnika [1]
- Częstotliwość odczytu danych: 1 sekunda
- Zawiera widżet „History Graph”, definiujący V10 i V11 jako wirtualne szpilki
- Naciśnij "Odtwórz" (trójkąt w prawym górnym rogu)
Oczywiście aplikacja Blynk poinformuje Cię, że NodeMCU jest wyłączone. Czas wgrać pełny kod do swojego Arduino IDE. Możesz go dostać tutaj:
NodeMCU_Dual_Sensor_Blynk_Ext.ino
Zmień „dane fikcyjne” własnymi danymi uwierzytelniającymi.
/* Poświadczenia Blynk */
char auth = "TUTAJ TWÓJ KOD UWIERZYTELNIANIA BLYNK"; /* Poświadczenia Wi-Fi */ char ssid = "TWÓJ SSID"; char pass = "TWOJE HASŁO";
I to wszystko!
Poniżej pełny kod. Jest to w zasadzie poprzedni kod, w którym weszliśmy z parametrami Blynk i określonymi funkcjami. Zwróć uwagę na 2 ostatnie wiersze kodu. To są tutaj najważniejsze. Jeśli masz więcej czujników zbierających dane, powinieneś również mieć równoważne nowe linie jak te (ze zdefiniowanymi odpowiednimi nowymi wirtualnymi pinami).
/**************************************************************
* IoT Multiple Temperature Monitor with Blynk * Biblioteka Blynk jest licencjonowana na licencji MIT * Ten przykładowy kod jest w domenie publicznej. * * Wielokrotny czujnik OneWire: DS18B20 * Opracowany przez Marcelo Rovai - 25 sierpnia 2017 r. *********************************** ****************************/ /* ESP i Blynk */ #include #include #define BLYNK_PRINT Serial // Skomentuj to wyłącz wydruki i zaoszczędź miejsce /* poświadczenia Blynk */ char auth = "TWÓJ KOD UWIERZYTELNIANIA BLYNK"; /* Poświadczenia Wi-Fi */ char ssid = "TWÓJ SSID"; char pass = "TWOJE HASŁO"; /* TIMER */ #include SimpleTimer timer; /* Czujnik temperatury DS18B20 */ #include #include #define ONE_WIRE_BUS 2 // DS18B20 na arduino pin2 odpowiada D4 na płycie fizycznej OneWire oneWire(ONE_WIRE_BUS); Dallas Temperatura DS18B20(&oneWire); wewn temp_0; wewn temp_1; void setup() { Serial.begin(115200); Blynk.begin(auth, ssid, pass); DS18B20.początek(); timer.setInterval(1000L, getSendData); Serial.println(" "); Serial.println("Testowanie danych z dwóch czujników"); } void loop() { timer.run(); // Inicjuje SimpleTimer Blynk.run(); } /************************************************** *** * Wyślij dane z czujnika do Blynk ***************************************** *********/ void getSendData() { DS18B20.requestTemperatures(); temp_0 = DS18B20.getTempCByIndex(0); // Czujnik 0 przechwyci Temp w stopniach Celsjusza temp_1 = DS18B20.getTempFByIndex(1); // Czujnik 0 przechwyci temperaturę w Fahrenheit Serial.print("Temp_0: "); Serial.print(temp_0); Serial.print(" oC. Temp_1: "); Serial.print(temp_1); Serial.println(" z"); Blynk.virtualWrite(10, temp_0); //wirtualny pin V10 Blynk.virtualWrite(11, temp_1); //wirtualny pin V11 }
Po przesłaniu i uruchomieniu kodu sprawdź aplikację Blynk. Powinien teraz działać, jak pokazano na powyższym ekranie drukowania z mojego iPhone'a.
Krok 7: Wniosek
Jak zawsze mam nadzieję, że ten projekt pomoże innym odnaleźć się w ekscytującym świecie elektroniki, robotyki i IoT!
Odwiedź mój GitHub, aby uzyskać zaktualizowane pliki: NodeMCU Dual Temp Monitor
Więcej projektów znajdziesz na moim blogu: MJRoBot.org
Saludo z południa świata!
Do zobaczenia na mojej następnej instrukcji!
Dziękuję Ci, Marcelo
Zalecana:
PODŁĄCZENIE WIELU CZUJNIKÓW DO JEDNEGO PORTU SZEREGOWEGO ARDUINO UNO: 4 kroki
PODŁĄCZANIE WIELU CZUJNIKÓW DO JEDNEGO PORTU SZEREGOWEGO ARDUINO UNO: W tym samouczku rozszerzymy pojedynczy port szeregowy Arduino UNO UART (Rx/Tx), aby można było podłączyć wiele czujników Atlas. Rozszerzenie odbywa się za pomocą karty ekspandera portów szeregowych 8:1. Port Arduino jest połączony z ekspanderem po kilku
PODŁĄCZENIE WIELU CZUJNIKÓW DO RASPBERRY PI: 6 kroków (ze zdjęciami)
PODŁĄCZANIE WIELU CZUJNIKÓW DO RASPBERRY PI: W tym projekcie podłączymy trzy czujniki EZO firmy Atlas Scientific (pH, rozpuszczonego tlenu i temperatury) do Raspberry Pi 3B+. Zamiast podłączać obwody do Raspberry Pi, użyjemy nakładki Whitebox Labs Tentacle T3. T
UbiDots - podłączanie ESP32 i publikowanie danych z wielu czujników: 6 kroków
UbiDots-podłączanie ESP32 i publikowanie danych z wielu czujników: ESP32 i ESP 8266 to bardzo dobrze znane SoC w dziedzinie IoT. To swego rodzaju dobrodziejstwo dla projektów IoT. ESP 32 to urządzenie ze zintegrowanym WiFi i BLE. Po prostu podaj swój identyfikator SSID, hasło i konfiguracje IP i zintegruj rzeczy w
Monitorowanie stanu konstrukcji infrastruktury cywilnej za pomocą bezprzewodowych czujników drgań: 8 kroków
Monitorowanie stanu konstrukcji infrastruktury cywilnej za pomocą bezprzewodowych czujników wibracji: Pogorszenie stanu starego budynku i infrastruktury cywilnej może prowadzić do sytuacji śmiertelnych i niebezpiecznych. Stały monitoring tych struktur jest obowiązkowy. Monitorowanie stanu strukturalnego jest niezwykle ważną metodologią oceny
Robot autonomiczny Wallace - część 4 - dodanie czujników odległości na podczerwień i czujników „wzmacniacza”: 6 kroków
Robot autonomiczny Wallace – część 4 – Dodaj czujniki odległości na podczerwień i czujniki „wzmacniacza”: Witam, dzisiaj rozpoczynamy kolejny etap ulepszania możliwości Wallace'a. W szczególności staramy się poprawić jego zdolność wykrywania i omijania przeszkód za pomocą czujników odległości na podczerwień, a także wykorzystać możliwości kontrolera silnika Roboclaw