Elektroda.pl
Elektroda.pl
X
Relpol przekaźniki
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

ESP8266-12 + Mega2560 + DS18B20 + LED 8-seg TM1637 = wysyłanie pomarów MySQL WWW

szczepulek 26 Paź 2019 08:43 447 0
  • ESP8266-12 + Mega2560 + DS18B20 + LED 8-seg TM1637 = wysyłanie pomarów MySQL WWW
    *

    Witam po dłuższej przerwie, tym razem dział mikro kontrolerów.

    Wymagania dla projektu / założenia:
    Pomiar w pomieszczeniu/obudowie urządzenia/w zbiorniku temperatury powietrza/cieczy na wejściu i wyjściu. Wyświetlenie na żywo aktualnych wartości temperatur na wyświetlaczu LED x2. Wykrywanie przekroczenia ustalonych granic i alarmowanie poprzez przekaźnik sygnalizacją świetlną. Gdy urządzenie zewnętrzne daje sygnał o pracy do układu ESP ten co 5 min wysyła dane z czujników do bazy danych mysql poprzez stronę PHP na serwerze.

    Sprzęt:
    * ESP8266-12E - do komunikacji przez wifi do serwera z bazą danych
    * Arduino Mega2560 - pobranie temp. z czujników, wyświetlanie temperatur, wysyłanie po Serial pomiarów do ESP, i informacji o alarmach, Nr np. linii produkcyjnej/ pomieszczeniu/ urządzeniu monitorowanemu.
    * Arduino UNO r3 - do testów komunikacji po Serial/SoftwareSerial
    * DS18B20 x2 - czujniki temperatur w wersji wodoodpornej.
    * Moduł wyświetlacza czterocyfrowego LED 8 segmentowy na TM1637 x2 - wyświetlanie aktualnych temperatur, i parametrów urządzenia.
    * Kable, przekaźniki, i inne pierdołki.

    Na wstępie, projekt przedstawiłem na innym forum, nie ograniczam się do jednej społeczności forum, bo ludzie szukają rozwiązań w różnych miejscach, i pomocy.

    Początkowe problemy jakie miałem to:

    - Zbyt długi czas pomiaru na DS18B20 (przy 2 czujnikach ponad 1400ms /12bit rozdzielczość)
    + Częściowo rozwiązany poprzez ustawienie rozdzielczości na 9bit, czas pomiaru 1 czujnika około 35ms

    - Obsługa czujników DS na 1-wire i konieczność zaprogramowania na nowo płytki w momencie wymiany uszkodzonego czujnika na przykład
    + Rozwiązano poprzez wpięcie na różnych pinach osobno czujnika wejściowej temp, i wyjściowej. Co do konieczności zmiany indywidualnego znacznika każdego czujnika, ich numer jest na początku pobierany/odczytany dla obu linii komunikacyjnych i zapisywany tymczasowo w tablicy. Działa.

    - Wyświetlanie na dwóch wyświetlaczach/modułach LED z tm1637 (komunikacja po 2 przewodach, brak indywidualnych adresów wyświetlaczy)
    + Podłączenie na osobnych pinach każdego z modułu. Co do czasu na obsługę wyświetlacza około 42ms. sporo...

    - Wymiana informacji o pomiarach i podstawowych parametrach między płytkami pomiaru i wysyłania danych na serwer.
    + Rozwiązano, może nie profesjonalnie, ale działa. Niestety wszelakie poradniki, przykłady w sieci, nie działały.. lub były nie w pełni opisane/napisane. To mi zjadło najwięcej zdrowia. Po oglądnięciu kanału Elektromaniak'a, i zlepku informacji kilku stron o łączności szeregowej, itp. udało się połączyć ze sobą narazie Mega i Uno, ESP potem zajmę się.

    - Ustawienia i zapamiętanie na Mega 2560 wartości dla progu alarmu, wyświetlenie wartości na jednym z wyświetlaczy. A także zmiana nr pomieszczenia/urządzenia monitorowanego.
    + Do rozwiązania ... teraz za to się biorę.

    - Wysyłanie wartości zmierzonych do bazy danych.
    + jeszcze nie napisany kod, nie utworzona baza. W olejnych krokach będzie rozwiązywany ten punkt.

    UWAGI:

    Przede wszystkim na co należy zwrócić uwagę, jak zawsze.. czy prawidłowo podłączone okablowanie, zasilenie układów, modułów, dla komunikacji po serial'u nie zapomnieć połączyć GND obu płytek, a w przypadku ESP8266 linie TX, RX podłączyć przez konwerter stanów logicznych. Aha, do obsługi czujników temperatury użyłem biblioteki DS18B20.h ale w wersji 1 !!!, nowsze biblioteki lub Texas'a nie uwzględniają parametru rozdzielczości pomiarów dla linii kodu
    Code:
    sensor_airout.begin(9);
    wyrzucając błąd. Parametr w nawiasach w dla biblioteki w wersji 1.0 odpowiada rozdzielczości pomiarów. Czyli co 0.5 stopnia C.

    A teraz nieco kodu..
    Pomiar, wyświetlanie, serial TX - Arduino Mega2560
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Kod dla UNO (dla testów, domyślnie ESP) odbiór parametrów i pomiarów poprzez serial. Wyświetlenie w serial monitor czy wszystko przebiega prawidłowo.
    Oczywiście w materiale źródłowym wykorzystano kilka linii kodu do liczenia sum kontrolnych. Ja to pominąłem. Sprawdzane podczas odbioru są tylko znaki początkowe i końcowe przesyłanych danych, jeśli są poprawne i identyczne to wykonuje się zapis do tablic danych, i przeliczenie ich na wartość temperatur w postaci z ułamkiem.. np 21.50 *C,

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Jeszcze sporo pracy do wykonania.
    Postaram się na bieżąco informować o postępach.
    Zaznaczam że jestem mocno początkujący.. i osoby siedzące w temacie na pewno znajdą wiele uproszczeń i błędów, będę wdzięczny za sugestia..
    Chcę również podziękować RFM za pomoc i podpowiedzi. Postaram się w niedalekiej przyszłości wykorzystać je.

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    szczepulek
    Poziom 12  
    Offline 
    szczepulek napisał 137 postów o ocenie 10, pomógł 0 razy. Mieszka w mieście Bielsko-Biała. Jest z nami od 2006 roku.
  • Relpol przekaźniki