sobota, 28 maja 2016

Czujnik poziomu węgla na nadajniku MySensors

W komentarzach do wpisu na blogu opisującym bezprzewodowy czujnik poziomu węgla w zasobniku -> Link Mac C napisał, że chciałby wykorzystać czujnik w Domoticz i aby wyświetlał ilość węgla w procentach.

Zrobiłem, to w następujący sposób, oczywiście wymagana jest bramka MySensors jako odbiornik, opis tu -> Link

Najpierw, aby przetestować czy wszystko działa napisałem kod programu, który wyświetla odległość w cm i podaje wartość w procentach, przy założeniu, że 100% to jest 60 cm.

Schemat podłączenia będzie taki sam, jak w opisie bezprzewodowego czujnika węgla z diodami led.


Trig - podłączamy do pinu 3
Echo - do pinu 4
Vcc - 5V
GND - do GND

Kod programu wygląda tak


Do pobrania jest stąd -> Link

Jeżeli włączymy serial monitor, to wyświetla się odległość w cm i podaje ile to jest procent, przy założeniu, że 60 cm, to jest 100 %.


W kodzie programu na początku definiujemy odległość max.


Program przelicza odległość na procenty, tylko w przypadku ilości węgla 100% będzie wtedy, gdy zbiornik będzie pełny, a odległość będzie wynosiła 0, czyli w powyższym kodzie należy od wartości 100% odjąć wartość w procentach zmierzonej odległości, czyli:

Definiujemy sobie nową zmienną ilosc (int ilosc;)

i wtedy ilość węgla w zasobniku w procentach będzie, to ilosc = 100 - procent

Kod programu teraz wygląda tak:


Kod do pobrania stąd -> Link

Teraz w serial monitorze program wyświetla procentową ilość węgla, przy założeniu, że 60 cm (definiujemy sobie to na początku programu przy int max = 60;) będzie to pusty zbiornik.


Teraz, aby przesyłać dane do Domoticz przez bramkę MySensors, należy dodać wpisy w kodzie programu, zgodnie z tym, co opisałem wcześniej w wpisie Prezentacja i przesyłanie danych w nadajnikach MySensors -> Link

Jako typ czujnika gw.present wykorzystam S_WEIGHT , a rodzaj zmiennej MyMessage - V_IMPEDANCE, zgodnie z opisem, na stronie MySensors dla wagi pod pozycją 12 -> Link

Kod programu jest do pobrania tu -> Link

Po wgraniu, w logach Domoticz -> Konfiuguracja -> Logi powinna się pojawić nazwa programu


Teraz już wystarczy wejść w Konfiguracja -> Urządzenia i powinien być widoczny czujnik


Wystarczy już kliknąć w zieloną strzałkę, wpisać nazwę i kliknąć Dodaj urzadzenie


Urządzenie będzie widoczne w zakładce Użytkowe


W kodzie programu do celów demonstracji ustawiłem na końcu delay(1000); - czas w milisekundach, ale myślę, że można go ustawić na czas aktualizacji np. co pół godziny, czyli na 1800000 milisekund.

Działanie czujnika widać na poniższym filmie


25 komentarzy:

  1. Szkoda że twój blog tak topornie działa u mnie każda strona na rożnych łączach otwiera się ok 5-10min. Dzisiaj dojechało RPi wiec wieczorami zabieram się do roboty

    OdpowiedzUsuń
    Odpowiedzi
    1. Tak to super pomysł. Też wpadłem na dokładnie takie samo wykonanie pod koniec ub. roku). I od tamtego czasu działa ok. To był mój pierwszy działający na stałe czujnik w domoticzu :). Generalnie czasami przy pomiarach mam przekłamania (nie wiem z czego wynikają). Dalego wykonuje 60 pomiarów co 5 sekund i do domoticza wysyłam uśredniony wynik tj. co 5 minut.


      Usuń
  2. "Jako typ czujnika gw.present wykorzystam S_WEIGHT , a rodzaj zmiennej MyMessage - V_IMPEDANCE, zgodnie z opisem, na stronie MySensors dla wagi pod pozycją 12 -> Link"

    Witam
    Niestety ta część jest dla mnie nie zrozumiała. Nie działa link i nie wiem co gdzie mam uzupełnić proszę o podpowiedź.Używam biblioteki w wersji 2

    OdpowiedzUsuń
  3. Próbowałem przerobić na wersję bibliotek 2 nic mi nie wychodzi

    OdpowiedzUsuń
  4. Link rzeczywiscie nie dziala. Na stronie MySensors cigle cos sie zmienia, ale opisy rodzaju uzywanych danych sa na stronie MySensors.

    OdpowiedzUsuń
  5. Jak znajde czas napisze Ci program do nowych bibliotek. Moze zrobie nowy wpis o przesylaniu i odbieraniu danych na nowych bibliotekach, ale na razie nie mam czasu.

    OdpowiedzUsuń
  6. Ten komentarz został usunięty przez autora.

    OdpowiedzUsuń
  7. Sprawdziłem
    Bramka na bibliotece 2 Obsługuje czujnik poziomu węgla na starszej bibliotece.

    OdpowiedzUsuń
    Odpowiedzi
    1. Tak działa. Kody programów pisane pod starsze wersje bibliotek działają z bramką na bibliotece 2.0.

      Usuń
  8. Jakby ktoś chciał, to napisałem program na czujnik węgla dla bibliotek 2.0
    https://www.dropbox.com/s/zj0rblexzh6nepl/Mysensors_czujnik_ilosci_wegla_2.rar?dl=0

    OdpowiedzUsuń
  9. Fantastycznie dzięki. Jutro przetestuję

    OdpowiedzUsuń
  10. Da się dorobić do poziomu węgla temperaturę na ds1820 ?

    OdpowiedzUsuń
    Odpowiedzi
    1. Da sie w jakims wpisie opisalem jak odbywa sie komunikacja z odbiornikiem MySensors, poczytaj sobie to sobie dopiszesz kod na DS18B20.

      Usuń
    2. Da sie w jakims wpisie opisalem jak odbywa sie komunikacja z odbiornikiem MySensors, poczytaj sobie to sobie dopiszesz kod na DS18B20.

      Usuń
  11. jak zachowuje się czujnik po dłuższym użytkowaniu? chodzi mi o to czy pył z groszku nie powoduje złego działania czujnika

    OdpowiedzUsuń
  12. Pytanie.
    A jak ustawić aby pomiar robiony był powiedzmy co 30 minut.

    OdpowiedzUsuń
    Odpowiedzi
    1. Czytaj wyżej - cytat: W kodzie programu do celów demonstracji ustawiłem na końcu delay(1000); - czas w milisekundach, ale myślę, że można go ustawić na czas aktualizacji np. co pół godziny, czyli na 1800000 milisekund.

      Usuń
    2. Po prostu zmień sobie na końcu kodu programu na:
      delay(1800000); // opóźnienie

      Czas podajemy w milisekundach.
      Pomocny przelicznik
      https://www.jednostek-miary.info/przelicznik-jednostek.php?typ=czas

      Usuń
  13. Pomroczność jasna.Czas na urlop bo głowa już chyba nie myśli jak trzeb.Dzięki wielki.Poszukuje jakiegoś sensownie napisanego (jak dla idioty :-) ) poradnika o odpaleniu termostatu na domoticz.Chodzi mi o zastąpieniu zwykłych termostatów w domu wersja elektroniczną.

    OdpowiedzUsuń
  14. Do czego za każdym razem jest nrf24l01 nawet jak komunikujemy sie po eternecie albo usb to on i tak występuje ?

    OdpowiedzUsuń
    Odpowiedzi
    1. Odbiornik komunikuje się bramką z NRF24L01, którą podłączona jest do Raspberry Pi do portu USB, tak więc jest jedna bramka z którą komunikują się odbiorniki bezprzewodowo.

      Usuń
    2. Na demonstracji jest prototyp na płytce stykowej i podłączone jest tylko zasilanie USB do Arduino Nano. Normalnie używa się Arduino Mini Pro bez portu USB.

      Usuń