niedziela, 16 kwietnia 2017

MySensors - komunikacja przewodowa RS485

Jeżeli nie chcemy korzystać z komunikacji bezprzewodowej za pomocą modułów NRF24L01 pomiędzy bramką MySensors, a odbiornikami MySensors możemy wykorzystać bramkę np. na Arduino Uno z podłączonym modułem RS485 i przekazywać i odbierać dane do kolejnych Arduino z modułami RS485.

Moduł RS485 wygląda i posiada takie sygnały jak pokazano niżej.


Więcej o komunikacji RS485 można poczytać tu -> Link

Moduły do komunikacji używają gniazd oznaczonych jako A i B, łączymy je ze sobą, od pierwszego modułu do drugiego, od drugiego do trzeciego itd...

Moduły RS485 wymagają zasilania 5V, pin RO łączymy do pinu 8 Arduino, DI do pinu 9, a RE i DE łączymy razem do pinu 2 Arduino.

Ja bramkę zbudowałem na Arduino Uno, a odbiornik na Arduino Mini Pro 5V i schemat połączenia wygląda tak.


Zgodnie z tym, co napisali na stronie Mysensors -> Link, do poprawnego działania wymagana jest biblioteka AltSoftSerial, do pobrania tu -> Link, wypakowujemy ją do: Moje dokumenty\Arduino\libraries.

Do bramki wgrywamy kod -> Link

Do odbiornika przykładowy kod ze strony MySensors na czujnik ruchu PIR -> Link

Czujnik ruchu PIR podłączamy do pinu 3 Arduino w odbiorniku i VCC oraz GND do Arduino.

Po wgraniu kodu do bramki podłączamy ją do Raspberry Pi do portu USB i dodajemy bramkę Mysensors jak niżej.


U mnie bramka działa na porcie ACM0.

Po dodaniu bramki i połączeniu odbiornika zgłosi się nam w logach Domoticz (Konfiguracja -> Logi) bramka i czujnik ruchu PIR.


Dodajemy go w Konfiguracja -> Urządzenia klikając w zieloną strzałkę, pojawi się w menu Przełączniki.

Zmieniamy jeszcze rodzaj na Motion Sensor i już powinno działać wykrywanie ruchu.




Inne kody programów do odbiorników z RS485.

Kod programu do odbiornika na przekażnik -> Link


Kod programu dla czujnika temperatury i wilgotności DHT11 lub DHT22 -> Link

27 komentarzy:

  1. Witam potrzebuję przykładu programu do odbiornika rs485 do sterowania 2 przekaźnikami ale żeby można było sterować jeszcze włącznikami. Czy da się to załatwić ?

    OdpowiedzUsuń
    Odpowiedzi
    1. Zobacz w komentarzach w tym wpisie http://projektpimalina.blogspot.com/2016/09/odbiornik-mysensors-i-sterowanie.html
      Tylko zamiast definicji NRF dajesz:
      // Enable RS485 transport layer
      #define MY_RS485

      // Define this to enables DE-pin management on defined pin
      #define MY_RS485_DE_PIN 2

      // Set RS485 baud rate to use
      #define MY_RS485_BAUD_RATE 9600

      Usuń
  2. A w arduino uno to ma być podłączone do pinu 12 czy 2 ?? bo w nano do 2

    OdpowiedzUsuń
    Odpowiedzi
    1. Na schemacie wkradł się błąd. Ma być tak jak napisałem: RE i DE łączymy razem do pinu 2 Arduino, czyli do UNO ma być podłączone do pinu 2.

      Usuń
  3. Już poprawiłem schemat.

    OdpowiedzUsuń
  4. Coś mi nie działa to rs485 Wykrywa bramke ale jak podłącze czujnik to mi go nie wykrywa.

    OdpowiedzUsuń
    Odpowiedzi
    1. Czy mógł by mi ktoś z tym pomóc ?

      Usuń
    2. Jaki czujnik i jaki kod wgrywasz?

      Usuń
    3. Wgrywam przykłady z biblioteki mysensors 2.1.1 na czujnik ruchu

      Usuń
    4. Ten komentarz został usunięty przez autora.

      Usuń
    5. Wyreguluj dobrze czujnik pir albo podaj 5 v na pin 3 i zobacz czy wykryje.

      Usuń
    6. W logach Domoticz cos sie pokazuje?

      Usuń
    7. W logach wykrywa tylko bramke. Zaraz podepne do pinu 3 to 5V

      Usuń
    8. NIe działa :( a ta biblioteka AltSoftSerial jest potrzebna ?

      Usuń
  5. Witam, mam ten sam problem. bramka widoczna i nic więcej, czy możesz ponownie udostępnić kod bramki?

    OdpowiedzUsuń
    Odpowiedzi
    1. Wszystko testowałem i działa. Kod do bramki i inne są na stronie MySensors.
      Wszystkie kody są tu
      https://github.com/mysensors/MySensors/tree/master/examples

      Usuń
    2. A podpięcie pod arduino mega jest takie samo ?

      Usuń
    3. Nie wiem, czytajcie wiecej na stronie MySensors. Testowalem na Uno i Pro Mini.

      Usuń
    4. Nie wiem, czytajcie wiecej na stronie MySensors. Testowalem na Uno i Pro Mini.

      Usuń
    5. Wgrywałeś kod ze strony MySensors
      https://www.mysensors.org/build/rs485 i działało,
      czy wprowadzałeś jakieś zmiany lub coś dodawałeś?
      Szczególnie jeśli chodzi o kod bramki.
      Wklejam żywcem kod bramki jak i czujnika i niestety nie gadają ze sobą

      Usuń
    6. Nie pamiętam, a jakimś sposobem usunęło mi ten plik z dropbox i go teraz nie mam.

      Usuń
    7. Jest to napewno wina softu lub biblioteki bo wgrałem program nie na mysensors na świecenie diody led przyciskiem i działało.

      Usuń
  6. Witam, też miałem problem z widocznością czujników. Rozwiązaniem było dodanie #define MY_NODE_ID 1 przed #include MySensors.h, tylko w nodach (nie bramce). Jeśli posiadacie więcej czujników to każdemu przypisujecie kolejny numer.

    OdpowiedzUsuń
  7. Czy komuś udało się uruchomić to na RS485?

    OdpowiedzUsuń
  8. Czy da się to ożenić z adapterm USB 485 pod malinę i pominąć bramkę ?

    OdpowiedzUsuń
  9. Polecam nasz projekt open hardware na ten temat:
    https://www.openhardware.io/view/639/RS485-MCU-Module

    Jest już moduł procesorowy, kilka shieldów i gateway. Do tego całkiem działające oprogramowanie.

    OdpowiedzUsuń
  10. Hej.
    Czy można zmienić domyślne piny komunikacji D8 i D9 na D0 i D1 czyli sprzętowy UART?

    OdpowiedzUsuń