Spisu treści:

IoT w prosty sposób: monitorowanie wielu czujników: 7 kroków
IoT w prosty sposób: monitorowanie wielu czujników: 7 kroków

Wideo: IoT w prosty sposób: monitorowanie wielu czujników: 7 kroków

Wideo: IoT w prosty sposób: monitorowanie wielu czujników: 7 kroków
Wideo: NASZE STEROWNIKI Smart Home NIPPY! | Na szynę DIN i do puszek | Na magistralę i w topologii gwiazdy 2024, Listopad
Anonim
IoT stało się proste: monitorowanie wielu czujników
IoT stało się proste: monitorowanie wielu czujników
IoT stało się proste: monitorowanie wielu czujników
IoT stało się proste: monitorowanie wielu czujników

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

Czujnik temperatury DS18B20
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łączanie czujników do NodeMCU
Podłączanie czujników do NodeMCU
  1. 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.
  2. 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
  3. 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:

  1. OneWire
  2. 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

Testowanie czujników
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

Korzystanie z Blynka
Korzystanie z Blynka
Korzystanie z Blynka
Korzystanie z Blynka

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:

  1. Utwórz nowy projekt.
  2. Nadaj mu nazwę (w moim przypadku „Podwójny monitor temperatury”)
  3. Wybierz Nowe urządzenie - ESP8266 (WiFi) jako "Moje urządzenia"
  4. Skopiuj TOKEN UWIERZYTELNIENIA do wykorzystania w kodzie (możesz go wysłać na swój e-mail).
  5. 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
  6. Zawiera widżet „History Graph”, definiujący V10 i V11 jako wirtualne szpilki
  7. 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

Wniosek
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: