Spisu treści:

Rejestrator temperatury WiFi (z ESP8266): 11 kroków (ze zdjęciami)
Rejestrator temperatury WiFi (z ESP8266): 11 kroków (ze zdjęciami)

Wideo: Rejestrator temperatury WiFi (z ESP8266): 11 kroków (ze zdjęciami)

Wideo: Rejestrator temperatury WiFi (z ESP8266): 11 kroków (ze zdjęciami)
Wideo: nettemp - działanie alarmu z czujką PIR i przekaźnikami 2024, Lipiec
Anonim
Image
Image
Materiały
Materiały

Witam, miło cię tu widzieć. Mam nadzieję, że w tej instrukcji znajdziesz przydatne informacje. Zapraszam do przesyłania mi sugestii, pytań, … Oto kilka podstawowych danych i szybki przegląd projektu. Dla użytkowników mobilnych: Wideo. Daj znać, co myślisz o projekcie w sekcji komentarzy, dzięki. Niedawno kupiłem płytę NodeMcu (opartą na esp8266), aby spróbować, więc nie jest to naprawdę zaawansowany projekt. Ale działa i to jest to, czego potrzebuję, więc jest ok. Główną funkcją tego rejestratora jest zbieranie temperatury i zapisywanie jej na serwerze. Pozwala to użytkownikom sprawdzać dane i wykresy online, nawet jeśli nie znajdują się w tej samej lokalizacji co rejestrator (na przykład w przypadku stacji pogodowej). Kolejną przydatną funkcją jest aktualizacja OTA zawarta w kodzie, która pozwala użytkownikowi łatwo aktualizować i dostosowywać oprogramowanie. Przeanalizuję dwa czujniki i związaną z nimi metodę akwizycji, aby zrównoważyć wszystkie zalety i wady.

Spoiler: po krótkich testach stwierdziłem, że czujnik cyfrowy, taki jak DS18B20, jest najlepszym rozwiązaniem, ponieważ zapewnia stabilność i wyższą dokładność. Jest już wodoodporny i z kablem.

Krok 1: Materiały

Materiały
Materiały
Materiały
Materiały
Materiały
Materiały

Jest to minimalny projekt z zaledwie kilkoma komponentami zewnętrznymi, do tego lista BOM będzie naprawdę krótka. Zobaczmy jednak, jaki materiał jest wymagany:

  • NodeMcu V3 (lub dowolny zgodny procesor ESP8266 μ);
  • Led RGB (wspólna anoda);
  • Rezystory do led (1x10Ω, 1x22Ω, 1x100Ω, 1x10kΩ)
  • DS18B20 (Zintegrowany termometr Maxim);
  • LM35 (termometr Texas Instrument);
  • Bateria zewnętrzna (opcjonalnie);
  • Kabel;
  • Złącze (aby było bardziej "zaawansowane");
  • Pudełko (opcjonalnie, ponownie, aby było bardziej „zaawansowane”);
  • Uchwyt na diody (opcjonalnie);

Uwaga: Jak powiedziałem, musisz wybrać jedną z dwóch metod. Jeśli wybierzesz termometr LM35, będziesz potrzebować kilku innych komponentów:

  • Attiny45/85;
  • programista AVR (lub Arduino jako ISP);
  • Rezystor (1x1kΩ, 1x2kΩ, 1x10kΩ, 1x18kΩ)
  • Złącze paska 2,54 mm (opcjonalnie)
  • Dioda (2x1N914)
  • Płyta perforowana lub PCB;

Krok 2: Wybór czujnika

Wybór czujnika
Wybór czujnika

Wybór czujnika może być trudnym krokiem: obecnie istnieje mnóstwo przetworników (TI oferuje 144 różnych elementów) zarówno analogowych, jak i cyfrowych o różnym zakresie temperatur, dokładności i obudowie. Czujniki analogowe (46 części dostępnych w TI): Zalety:

  • Rejestrator danych można łatwo zmienić z temperatury na inną wielkość (napięcie, prąd, …);
  • Może być trochę tańszy;
  • Łatwy w użyciu, ponieważ nie wymaga specjalnej biblioteki;

Cons:

  • Wymagaj przetwornika ADC (który może wpływać na dokładność pomiaru) i innych komponentów zewnętrznych. Ponieważ esp8266 ma tylko jeden ADC (i niezbyt dokładny) sugerowałbym użycie zewnętrznego.
  • Potrzebuje dedykowanego kabla z eliminacją szumów, ponieważ każde napięcie indukowane może zmienić wynik.

Po namyśle zdecydowałem się na zastosowanie czujnika liniowego LM35 o współczynniku skali +10mV/°C z dokładnością do 0,5°C i bardzo niskim prądem (około 60uA) o napięciu pracy od 4V do 30V. Po więcej szczegółów proponuję zapoznać się z arkuszem danych: LM35.

Czujniki cyfrowe (wysoce zalecane) Zalety:

Niemal wszystkie potrzebne komponenty zewnętrzne;

Zintegrowany ADC

Cons:

Zażądaj biblioteki lub oprogramowania do dekodowania sygnału cyfrowego (I2C, SPI, szeregowy, One Wire, …);

Droższe;

Wybrałem DS18B20, ponieważ znalazłem zestaw 5 wodoodpornych czujników na Amazon i ponieważ jest on szeroko udokumentowany w Internecie. Główną cechą jest pomiar 9-12 bitów, magistrala 1-Wire, napięcie zasilania od 3,0 do 5,5, dokładność 0,5°C. Ponownie, więcej szczegółów znajduje się w arkuszu danych: DS18B20.

Krok 3: LM35

LM35
LM35
LM35
LM35
LM35
LM35

Przeanalizujmy, jak zaimplementowałem zewnętrzny ADC i inną funkcję termometru LM35. Znalazłem kabel z trzema żyłami, jednym z ekranem i dwoma bez. Postanowiłem dodać kondensator odsprzęgający, aby ustabilizować napięcie zasilania w pobliżu czujnika. Do zamiany temperatury analogowej na cyfrową użyłem mikroprocesora Attiny85 w obudowie dip8 (więcej informacji w karcie katalogowej: attiny85). Najważniejszą rzeczą dla nas jest 10-bitowy ADC (nie do końca najlepszy, ale dla mnie wystarczająco precyzyjny). Do komunikacji z Esp8266 zdecydowałem się na komunikację szeregową pamiętając, że esp8266 pracuje z napięciem 3,3V i attiny85 przy 5V (ponieważ potrzebuje do zasilania czujnika). Aby to osiągnąć, użyłem prostego dzielnika napięcia (patrz schemat). Aby odczytać ujemną temperaturę musimy dodać kilka zewnętrznych elementów (rezystor 2x1N914 i 1x18k), ponieważ nie chcę używać ujemnego zasilacza. Oto kod: repozytorium TinyADC. Uwaga: aby skompilować ten kod należy zainstalować attiny to ide (wstaw to w opcji: https://drazzy.com/package_drazzy.com_index.json), jeśli nie wiesz jak to zrobić, po prostu wyszukaj w Google. Lub prześlij plik.hex bezpośrednio.

Krok 4: DS18B20

DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20

Kupiłem te czujniki od Amazona (5 kosztuje około 10 €). Przybył z osłoną ze stali nierdzewnej i kablem o długości 1m. Ten czujnik może zwracać 9 do 12 bitów danych o temperaturze. Wiele czujników można podłączyć do tego samego pinu, ponieważ wszystkie mają unikalne ID. Aby podłączyć DS18B20 do esp8266, wystarczy postępować zgodnie ze schematem (drugie zdjęcie). Ponieważ zdecydowałem, że mój rejestrator miałby trzy sondy, musiałem rozróżnić, która jest która. Pomyślałem więc, aby nadać im kolor powiązany za pomocą oprogramowania z ich adresem. Użyłem rurki termokurczliwej (trzecie zdjęcie).

Krok 5: Kod ESP8266

Kod ESP8266
Kod ESP8266
Kod ESP8266
Kod ESP8266

Ponieważ jestem nowy w tym świecie, postanowiłem skorzystać z wielu bibliotek. Jak wspomniano we wstępie, główne cechy to:

  • Aktualizacja OTA: nie musisz podłączać esp8266 do komputera za każdym razem, gdy chcesz wgrać kod (musisz to zrobić tylko za pierwszym razem);
  • Menedżer sieci bezprzewodowej, jeśli zmieni się sieć bezprzewodowa, nie musisz ponownie przesyłać szkicu. Możesz po prostu ponownie skonfigurować parametry sieciowe łączące się z punktem dostępu esp8266;
  • Przesyłanie danych Thingspeak;
  • Obsługiwane zarówno LM35, jak i DS18B20;
  • Prosty interfejs użytkownika (dioda RGB wskazuje kilka przydatnych informacji);

Proszę, przeproś mnie, ponieważ moje oprogramowanie nie jest najlepsze i nie jest dobrze uporządkowane. Przed wgraniem do urządzenia należy zmienić niektóre parametry, aby dopasować kod do konfiguracji. Tutaj możesz pobrać oprogramowanie. Wspólna konfiguracja LM35 i DS18B20 Musisz zmienić definicję pinów, token, numer kanału, użytkownika i hasło do aktualizacji OTA. Linia od 15 do 23.

#define red TWÓJ PINTHER #define green TWÓJ PINTHER

#define blue TWÓJPINHERE const char* host = "wybierz adres hosta"; //nie bardzo potrzebne, możesz zostawić esp8266-webupdate const char* update_path = "/firmware"; //zmienić adres do aktualizacji np: 192.168.1.5/firmware const char* update_username = "TWÓJUŻYTKOWNIK"; const char* update_password = "TWOJE HASŁO; unsigned long myChannelNumber = CHANNELNUMBERHERE; const char * myWriteAPIKey = "WRITEAPIHERE";

Krok 6: Kod ESP8266: użytkownik LM35

Trzeba podłączyć płytkę attiny do esp8266, aby zasilić jednostkę ADC użyj pinu VU i pinu G. Musisz wybrać pin, którego chcesz użyć do komunikacji szeregowej (aby sprzęt był wolny od portu szeregowego do celów debugowania). Pin Tx musi być wybrany, ale tak naprawdę nie jest używany. (wiersz 27). SoftwareSerial mySerial (RXPIN, TXPIN); Na górze musisz dodać: #define LM35USER

Krok 7: Kod ESP8266: Użytkownik DS18B20

Jako pierwszą operację musisz zidentyfikować adres urządzenia dla każdego czujnika. Skompiluj i zaprogramuj ten kod w esp i poszukaj wyników szeregowo. Kod można znaleźć tutaj (szukaj tego tytułu na stronie: «Odczytaj indywidualne adresy wewnętrzne DS18B20»). Podłącz tylko jeden czujnik, aby uzyskać adres, wyniki powinny wyglądać mniej więcej tak (tu losowa liczba! Tak jak przykład): 0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12Następnie musisz zmienić mój kod w dziale " Konfiguracja dla DS18B20" (linia 31 do 36)":

#define ONE_WIRE_BUS ONEWIREPINHERE #define TEMPERATURE_PRECISION TEMPBITPRECISION //(od 9 do 12) #define delayDallas READINTERVAL //(W milisekundach minimum to 15s lub 15000mS) DeviceAddress blueSensor = { 0x11, 0x22, 0x17 0x12}; //ZMIANA ADRESU DeviceAddress redSensor = { 0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; //ZMIANA ADRESU DeviceAddress greenSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12 }; //ZMIANA ADRESU Na górze należy dodać:#define DSUSER

Krok 8: ESP8266 mała sztuczka

ESP8266 Mała sztuczka
ESP8266 Mała sztuczka

Po krótkich testach stwierdziłem, że jeśli podłączysz esp8266 bez programowania, kod nie uruchomi się, dopóki nie naciśniesz raz resetu. Aby rozwiązać ten problem, po krótkich badaniach odkryłem, że musisz dodać rezystor podciągający z 3,3 V do D3. To powie procesorowi, aby wczytał kod z pamięci flash. Dzięki tej metodzie D3 może być bezpośrednio użyty do wprowadzania danych dla czujników DS18B20.

Krok 9: Pierwsza operacja

Pierwsza operacja
Pierwsza operacja
Pierwsza operacja
Pierwsza operacja

Jeśli poprawnie przesłałeś kod, ale nigdy nie korzystasz z biblioteki menedżera Wi-Fi, czas skonfigurować połączenie Wi-Fi. Poczekaj, aż dioda RGB zacznie migać szybciej niż wcześniej, a następnie wyszukaj za pomocą telefonu komórkowego lub komputera sieć Wi-Fi o nazwie „AutoConnectAp” i połącz się. Po połączeniu otwórz przeglądarkę internetową i wpisz 192.168.4.1, znajdziesz interfejs GUI menedżera Wi-Fi (patrz zdjęcia) i naciśnij "Konfiguruj Wifi". Poczekaj, aż esp8266 przeszuka sieci Wi-Fi i wybierz żądaną. Wprowadź hasło i naciśnij "zapisz". Esp8266 zrestartuje się (tym razem nie przejmuj się diodą RGB, ponieważ wyświetli losowe informacje) i połączy się z siecią.

Krok 10: Wniosek

Wniosek
Wniosek
Wniosek
Wniosek
Wniosek
Wniosek
Wniosek
Wniosek

Na koniec, oto wykres pobrany z rejestratora danych w akcji podczas rejestrowania temperatury w zamrażarce. Na pomarańczowo jest DS18B20, a na niebiesko LM35 i jego obwód. Widać największą różnicę w dokładności między czujnikiem cyfrowym a analogowym (z moim słabym "obwodem ADC"), które dają pewne niefizyczne dane. Podsumowując, jeśli chcesz zbudować ten logger, sugeruję użycie cyfrowego czujnika temperatury DS18B20, ponieważ jest prostszy w odczycie i prawie "plug and play", jest stabilniejszy i dokładniejszy, pracuje na 3,3V i wymaga tylko jednego pinu dla wielu czujników. Dzięki za uwagę mam nadzieję, że ten projekt jest dla Ciebie dobry i masz znalazłem przydatne informacje. A kto chce to zrealizować, chciałbym, abym udzielił wszystkich potrzebnych informacji. Jeśli nie, nie wahaj się zadać wszystkiego, chętnie odpowiem na wszystkie pytania. Ponieważ nie mówię po angielsku, jeśli coś jest nie tak lub niezrozumiałe, daj mi znać. Jeśli podobał Ci się ten projekt, zagłosuj na niego w konkursach i/lub zostaw komentarz ☺. Zachęci mnie to do ciągłego aktualizowania i publikowania nowych treści. Dziękuję Ci.

Zalecana: