piątek, 2 października 2015

Domoticz i bramka MySensors - Arduino Nano + NRF24L01 + odbiornik DHT11

Dotarły moje zamówione moduły Arduino Nano i NRF24L01 zakupione w sklepie Propox, w komplecie były kable USB, koszt 1 szt. Arduino Nano, to 30 zł i 4 zł moduł NRF24L01.


Zaraz na początku pojawiły się problemy z wykryciem Arduino w Windows na dołączonych kablach USB, musiałem użyć innych kabli mini USB.

Aby moduł został poprawnie wykryty wymagane są sterowniki FTDI w systemie, możemy je pobrać ze strony producenta, wybierając wersję odpowiednią do posiadanego systemu -> http://www.ftdichip.com/Drivers/D2XX.htm

Sterowniki można zainstalować automatycznie klikając program instalacyjny lub ręcznie po podłączeniu Arduino. Po zainstalowaniu w Menedżerze urządzeń powinien być widoczny nowy port COM, u mnie jest port COM10.


Gdy już mamy poprawnie zainstalowany sterownik i wykryty moduł Arduino zapamiętujemy nr portu COM.
Uruchamiamy program Arduino klimay Narzędzia i wybieramy Płyta Arduino Nano


Wybieramy procesor Atmega 328 i port COM jaki wykryło nam wcześniej w Mendżerze urządzeń


Teraz wybieramy z naszej biblioteki program do bramki SerialGateway, jak dodać bibloteki napisałem wcześniej w poście -> Instalacja bibliotek sensorów z mysenors
Plik -> Przykłady -> MySenosrs -> SerialGateway


Teraz wybieramy Zwerifkuj i Wgraj.

Bibliotek nie trzeba instalować, można je pobrać ze strony MySensors lub wgrać bezpośrednio na stronie-> http://www.mysensors.org/build/serial_gateway

Gdy już wgramy program bramki MySensors łączymy Arduino z modułem NRF24L01 zgodnie ze schematem


Na schemacie PIN2 nie jest podłączony, ja go jednak podłączyłem.

Gotowa bramka


Bramkę podłączamy kablem USB do wolnego portu USB w Rasberry Pi, uruchamiamy Domoticz, wchodzimy w Ustawienia -> Sprzęt i szukamy w Typ: My Sensors Gateway USB, Serial port powinno być /dev/ttyUSB0, wpisujemy nazwę, ja wpisałem MySenors i klikamy Dodaj.


Gdy wejdziemy w logi Ustawienia -> Logi zobaczymy, że nasza bramka została dodana


Teraz łączymy drugie Arduino Nano z NRF24L01 tak samo jak bramkę, będzie to odbiornik, gdzie podłącza się czujniki.
Ja podłączyłem czujnik DHT11


Moduł ten nie wymaga podłączenia rezystora podciągającego i ma diodę zasilania, w module są 3 piny GND, Data i VCC.
GND łączymy do GND w Arduino Nano, Data do pinu D3, a VCC do 5V.

Teraz trzeba jeszcze wgrać program do obsługi czujnika, będzie do program Humidity -> http://www.mysensors.org/build/humidity

Po wgraniu nasz odbiornik możemy zostawić podłączony do portu usb lub zasilić zewnętrznym zasilaczem.
Teraz w logach Domoticz powinniśmy zobaczyć, że wykryło nasz odbiornik


Jeżeli nie wykryje, to trzeba wcisnąć przycisk reset na module Arduino. Gdy wykryje nasz odbiornik z czujnikiem zobaczymy, to w logach oraz nowy czujnik w Urządzeniach, wybieramy go klikamy zieloną strzałkę wpisujemy nazwę i już mamy widoczny odczyt.


Odczyt z czujnika DHT11


Ponieważ pojawia się problem z obsługą nowych i starych bibliotek i programy nie chcą się kompilować, proponuję wypakować i skopiować do folderu:
Program Files -> Arduino -> libriares ten zestaw bibliotek -> Link
Do folderu Moje Dokumenty -> Arduino -> libraries wypakować i skopiować ten zestaw plików -> Link

W katalogu Moje Dokumenty -> Arduino -> libriares -> MySensors-master -> examples mamy większość kodów programów do obsługi czujników MySensors.

68 komentarzy:

  1. sprawdzałeś może, bądź wiesz ile maksymalnie czujników ogarnie 1 bramka przy raspberry? czy mozna słuchać większej ilości czujników, i nie tylko DHT11

    OdpowiedzUsuń
    Odpowiedzi
    1. No nie sprawdzałem, ale zastanawia mnie jak skleję z np. 3 programów jeden program i wrzucę do odbiornika na Arduino, to czy będzie działać, ale powinno i wtedy wykorzystam np. 3 piny na czujniki. Bo chcę zrobić do jednego Arduino Mini czujnik DHT22 i ciśnienia, zamknąć w jakimś pudełku z bateriami i umieścić za oknem.

      Usuń
    2. skleisz bez problemu, mało tego nawet udało mi sie odczytywać wartość napięcia akumulatora. Nie wiem czy tez to zauważyłeś, ale przy samym DHT11 nadajnik wysyła do domoticza tylko jedna wartość, np wilgotnosc, ponieważ temperatura się nie zmieniła. u mnie doprowadzalo to do sytuacji w ktorej domoticz uwazal urzadzenie za martwe. musialem zmodyfikowac kod, by dht wysyłał go nawet jesli temperatura byla rowna poprzedniej wartosci

      Usuń
    3. Możesz wrzucić kod np, na Dropbox i udostępnić?
      Na pewno przyda mi się i innym.

      Usuń
    4. http://pastebin.com/GkqJVGmP

      mocno zmodyfikowany (wywaliłem sporo kodu), mi działa :p

      Usuń
    5. http://pastebin.com/hKrFYMJi
      nowa wersja, zawiera również obsługę barometru BMP180 u mnie działa wspaniale: http://images67.fotosik.pl/1237/37860eda5975a8c2gen.png

      Usuń
    6. Super, fajnie to wygląda, też czekam na czujnik BMP180. Dzięki :)

      Usuń
    7. DHT11 jest zdefiniowane w tym kodzie na pin 3, a BMP180 na który pin?

      Usuń
    8. SDA/SCL A5/A4 na Arduino nano, sprawdź dla pewności na pinoucie. Na czujniku masz Vcc, gnd sda scl i 3,3v, vcc nie podłączaj, zasilaj 3v3V

      Usuń
    9. Dzięki właśnie zauważyłem, że do BMP180 używa się pinów analogowych.

      Usuń
  2. oh, i przy okazji, jak by ktos mial problem z sygnałem nawet pomimo niewielkiej odległości zalecam wlutowanie do NRF kondensatora 4,7uF (vcc i gnd)

    OdpowiedzUsuń
  3. Cześć,

    Gdzie kupujesz elektronikę ?

    Dzkięki
    Piotrek

    OdpowiedzUsuń
    Odpowiedzi
    1. Propox albo Telmal na Allegro, obydwa sklepu mają duży wybór.

      Usuń
  4. Panowie może wy jesteście mi w stanie pomóc. Mam RaspberryPi z modułem RaZberry do kontroli urządzeń w technologii z-wave (np. fibaro). Płytka wpięta w port GPIO w praktyce wykluczyła w prosty, bez kosztowy sposób podpięcia czegoś więcej. Ponieważ apetyt rośnie w miarę jedzenia ;-) pomyślałem o sterowaniu przez Domoticz swojego systemu alarmowego (poprzez magistralę X10 i RF 433MHz, tak uogólniając). Najszybciej i najprościej okazało się, że da się to zrobić na Arduino Mega. Tak więc do pinów D16 i D19 mam podpięty receiver a do pinów D14 i D15 transmitter, plus obydwa piny GND (to tak informacyjnie aby wiadomo było, które piny mam już zajęte). O ile z Raspberry jestem za pan brat i przerobiłem na nim kilkanaście projektów o tyle Arduino Mega używam od dwóch dni. Moje pytanie brzmi, jak podpiąć (do których pinów) do niego (Arduino Mega) jeszcze moduł PIR, czujnik temperatury i wilgotności DHT11, taki sam jat ten opisany powyżej oraz czujnik ciśnienia BMP 180? Oraz jak doinstalować odpowiednie biblioteki MySensors. Znam stronę MySensors i znam te projekty ale wszystkie opierają się na Mini Arduino Pro albo jak tutaj Arduino Nano a ja chcę podpiąć wszystko do jednej płytki Arduino MEGA. Ponieważ nie znam się zupełnie na Arduino to nie mam pojęcia, do których pinów oraz jak je wysterować. Arduino Mega mam spięte kablem USB z Raspberry, na którym stoi serwer Domoticz. Raspberry i Arduino mają swoje zasilanie po 2A tak więc mocy jest dość, dodatkowo nie mam potrzeby aby te czujniki działały bezprzewodowo więc moduły NRF24L01 są mi zbędne, no może poza PIR ale to już ogarnę ze strony MySensors, ale nie wierze, że wszystkiego nie da się połączyć i sczytać stany do wypasionej bądź co bądź Arduino Mega.

    OdpowiedzUsuń
    Odpowiedzi
    1. Zasadniczo wybór płytki arduino nie ma większego znaczenia. Dht, ds11 itd wpadasz do dowolnego wolnego pinu w arduino mega (swoją drogą a to co potrzebujesz to i tak za dużo) kwestia tylko odpowiedniego sketcha w arduino. Musisz połączyć kilka kodów że sobą by działało jak trzeba. Ni wiem jak odbywa si e komunikacja arduino rpi bez mysensors więc nie pomogę. Swoją drogą odseparowanie płytek od siebie jest logiczne w przypadku np zwarcia

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

    OdpowiedzUsuń
  6. Witam, ja mam pytanie odnośnie wykrywania bramki w domoticzu.
    Od kilku dni próbuję ustawić bramkę z leonardo jak i nano ale za nic w swiecie domoticz postwiony na raspberry nie widzi.
    Wgrywam przez ide plik/przyklady/MySensors/SerialGateway i proces konczy sie sukcesem zapisu ale po podlaczeniu do raspberry i probie dodania jej w domoticzu przy wersji widze znak zapytania.
    Co może być tego przyczyną?

    Dodam jeszcze, że nie mam dostępnego w liscie wyboru /dev/ttyUSB0, jest tylko dev/ttyAMA0

    OdpowiedzUsuń
  7. a żadnego innego portu USB nie masz do wyboru? co Ci pokazuje ls /dev/ |grep ttyUSB masz cos innego proc arduino podłączone do rpi?

    OdpowiedzUsuń
  8. Mam jeszcze ttyAMA0 ( tylko te dwa ).
    Żadnego innego sprzetu nie mam wpietego.
    Co pokazuje komenda podam za godzinke bo jestem poza domem.
    Ale z tego co pamietam to w lokalizacji dev nie ma żadnych USB.

    OdpowiedzUsuń
  9. Witam, udało się komuś ogarnąć podłączenie obojętnie jakiego czujnika, wyłącznika itp. podłączonego bezpośrednio do Arduino ale samo połączenie arduino z Domoticzem odbywa się po ethernet z pominięciem wszelkich modułów bezprzewodowych. Szukam już 3 dzień informacji jak to pożenić :) lecz praktycznie wszystko co znajduje to bramki ethernet bądź USB do transmisji bezprzewodowej.
    Drugie pytanie-prośba, może ktoś mnie naprowadzi jak wygląda komunikacja między Domoticzem a Arduino via ethernet

    OdpowiedzUsuń
    Odpowiedzi
    1. Witam,

      czy w temacie obsługi czujników przez Arduino komunikującej się z Domoticzem przez Ethernet macie jakieś sukcesy ?

      Usuń
  10. Zrobiłem wszystko tak jak opisywałeś i mam problem po podłączeniu bramki portem usb i dodaniu jej w domoticz wszystko wariuje i rozsypuje się domoticz.

    OdpowiedzUsuń
    Odpowiedzi
    1. Zainstaluj na nowo Domoticz, jak działa nieprawidłowo.

      Usuń
  11. Witajcie,
    to ja się dolacze do tematu. Mam problem podobnej masci do kolega Krychu K. Mianowicie Domoticz na RPi3 nie widzi Adruino UNO, żadnego urzadzenia TTYUSB :(
    Logi domoticza:
    ...
    MySensors: Using serial port: /dev/ttyACM0
    Error: MySensors: Error opening serial port!
    ...

    user@rpi:~/domoticz$ sudo ls /dev/ | grep ttyUSB
    user@rpi:~/domoticz$
    ...
    Jak moge zweryfikowac, dlaczego RPI nie widzi UNO?

    pozdrawiam

    OdpowiedzUsuń
    Odpowiedzi
    1. Wpisz w konsoli polecenie: lsusb
      Wtedy zobaczysz urządzenia podłączone do USB.
      Powinno być widoczne UNO, oczywiście po wgraniu programu bramki MySensors.
      U mnie po podłączeniu UNO mam:
      Bus 001 Device 007: ID 2341:0043 Arduino SA Uno R3 (CDC ACM)

      Masz coś jeszcze podłączone do portu USB? Jeżeli tak to odłącz.

      Usuń
    2. Witaj,

      zrobiłem niewielki postep, mianowicie, Serial Gateway jest już widoczny w Domoticz :)
      2016-09-12 21:11:41.280 MySensors: Using serial port: /dev/ttyACM0
      2016-09-12 21:11:42.918 MySensors: Gateway Ready...
      2016-09-12 21:11:42.994 MySensors: Gateway Version: 2.0.0
      Wyglada na to, ze RPi 3 urzadzenia USB sa wykrywane pod:
      /dev/ttyACM0

      Jednak to by było na tyle:(
      Serial gateway stoi na Arduino UNO, do niego podlaczony NRF24L01 zgodnie z opisem powyzej (bez kondensatora 47µF miedzy 3.3V and GND).
      Node jest na Anduino Leonardo (zamiennik). NRF24L01 podlaczony tak samo jak na UNO, jednak domoticz nie widzi zadnego podlaczonego czujnika :(
      Probowalem np szkicu "libraies -> MySensors ->RelayAcutator", gdzie przekazniki wpiete sa w piny D3, 4.
      Jakies porady, jak sprawdzić gdzie moze lezec problem?

      Usuń
    3. Załóż kondensator 4,7 uF i zobacz w logach Domoticz, czy wykrywa odbiornik.

      Usuń
    4. Elektrolity zalozone, jednak bez rezultatu - nie widzi odbiornika. Uzywam Anduino Leonardo - moze tu lezy problem. Zamowilem Arduino nano, zobaczymy co bedzie jak zmienie.

      Usuń
    5. Ciąg dalszy pasjonującej historii :)
      Temat nie daje mi spokoju, zatem znalazłem ciekawe narzędzie - "MYSController", oto logi jakie dostaje z Serial Gateway:
      [2016-09-14 20:08:57.789 Info] INFO *** Logging START ***
      [2016-09-14 20:08:57.790 Info] VERSION MYSController 0.1.2.282
      [2016-09-14 20:08:57.790 Info] STARTUP INI file loaded
      [2016-09-14 20:08:57.790 Info] STARTUP Loading FW repository...
      [2016-09-14 20:08:57.831 Info] REPO FW "Blink" loaded. t=10, v=1, blocks=72, crc=0xD098
      [2016-09-14 20:08:57.861 Info] REPO FW "TimeReporter" loaded. t=20, v=1, blocks=840, crc=0x4AC5
      [2016-09-14 20:08:57.920 Info] REPO FW "Sensebender Micro" loaded. t=100, v=1, blocks=1344, crc=0x3482
      [2016-09-14 20:08:57.940 Info] REPO FW "Sensebender Blink" loaded. t=110, v=1, blocks=768, crc=0x1314
      [2016-09-14 20:08:57.940 Info] REPO FW repository loaded. Items=4
      [2016-09-14 20:08:57.941 Info] STARTUP Initialize message types
      [2016-09-14 20:08:57.941 Info] NODE New node discovered, node id=0
      [2016-09-14 20:08:57.941 Info] NODE New node discovered, node id=255
      [2016-09-14 20:09:05.336 Info] INFO Flushing FIFO
      [2016-09-14 20:09:05.336 Info] INFO Connected to COM16
      [2016-09-14 20:09:07.175 Info] UPDATE 281474976713970
      [2016-09-14 20:09:07.221 Info] CHILD New child discovered, node id=0, child id=internal
      [2016-09-14 20:09:07.222 Info] RX 0;255;3;0;9;Starting gateway (RNNGA-, 2.0.0)
      [2016-09-14 20:09:07.222 Info] RX 0;255;3;0;9;TSM:INIT
      [2016-09-14 20:09:07.223 Info] RX 0;255;3;0;9;TSM:RADIO:OK
      [2016-09-14 20:09:07.223 Info] RX 0;255;3;0;9;TSM:GW MODE
      [2016-09-14 20:09:07.224 Info] RX 0;255;3;0;9;TSM:READY
      [2016-09-14 20:09:07.224 Info] RX 0;255;3;0;14;Gateway startup complete.
      [2016-09-14 20:09:07.224 Info] DEBUG Update child id=255, type=ARDUINO_RELAY
      [2016-09-14 20:09:07.225 Info] RX 0;255;0;0;18;2.0.0
      [2016-09-14 20:09:07.225 Info] RX 0;255;3;0;9;No registration required
      [2016-09-14 20:09:07.226 Info] RX 0;255;3;0;9;Init complete, id=0, parent=0, distance=0, registration=1
      [2016-09-14 20:09:07.226 Info] RX 0;255;3;0;9;TSP:MSG:READ 0-0-0 s=255,c=3,t=14,pt=0,l=25,sg=0:Gateway startup complete.
      [2016-09-14 20:09:07.227 Info] RX 0;255;3;0;9;!TSP:MSG:PVER mismatch
      [2016-09-14 20:09:07.227 Info] RX 0;255;3;0;9;TSP:MSG:READ 0-0-0 s=255,c=3,t=14,pt=0,l=25,sg=0:Gateway startup complete.
      [2016-09-14 20:09:07.227 Info] RX 0;255;3;0;9;!TSP:MSG:PVER mismatch
      [2016-09-14 20:09:07.228 Info] RX 0;255;3;0;9;TSP:MSG:READ 0-0-0 s=255,c=3,t=14,pt=0,l=25,sg=0:Gateway startup complete.
      [2016-09-14 20:09:07.229 Info] RX 0;255;3;0;9;!TSP:MSG:PVER mismatch
      ...
      i tak dalej - ktos moze cos dopomoze?

      Usuń
    6. Zresetuj odbiornik i zobacz w logach Domoticz, co się pokazuje, jak dalej nie wykryje, to próbuj z innym kodem programu do bramki lub odbiornika. Są na stronie MySensors.

      Usuń
    7. Witam :)
      podejrzewałem Andurino Leonardo - i słusznie :)
      Przyszły Arduino nano, podłączyłem, wgrałem przykładowy szkic "noda", Radio (NRF24L01) podłączone przez osobne zasilanie i elektrolit 47uF wstało :) W domoticzu widoczne - reszta poszła gładko.
      Myślę, że to "nodów" w przyszłości będę stosował Arduino Pro mini 5v, radio NRF24L01 zasilane przez przetwornicę np. DC/DC MP230. Planuje również dodać moduł pomiaru natężenia prądu ACS712.

      dzięki za zainteresowanie tematem i świetne posty BTW :)

      pozdr.

      Usuń
  12. witam. jestem pod wrazeniem calego projektu i mialem nadzieje wykorzystac wskazowki to analizy pogody na dzialce lecz u mnie mysensors i domoticz nie dziala... log domoticz konczy sie na:

    2016-09-28 19:51:42.890 MySensors: Using serial port: /dev/ttyUSB0
    2016-09-28 19:51:44.379 MySensors: Gateway Ready...
    2016-09-28 19:51:44.458 MySensors: Gateway Version: 2.0.0

    serial monitor (Arduino Uno z DHT11) pokazuje
    TSP:MSG:SEND 1-1-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc:
    TSM:FPAR
    TSP:MSG:SEND 1-1-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc:

    co robie nie tak? Dzieki za pomoc...

    OdpowiedzUsuń
    Odpowiedzi
    1. Czyli nie wykrywa Ci odbiornika z DHT11. A dałeś kondensator 4,7 uF do modułów NRF24L01?

      Usuń
  13. Dziala:)) Kondensator (1 uF) po stronie z DHT zle byl zamocowany.
    Dzieki za pomoc... Rozwijam wiec moja stacje dalej... Czy probowales moze z DIY czujnikiem predkosci, kierunku wiatru, deszczu i domoticz?

    OdpowiedzUsuń
    Odpowiedzi
    1. Nie interesowałem się tym, nie mam za bardzo wolnego czasu, a wiele rzeczy chciałbym jeszcze zrobić.

      Usuń
  14. Witam,

    Ma ktos może pomysł dlaczego nie chce się skompilować Humidity?

    Nie chce się skompilować, więc wgrać też nie można :(

    sketch_oct09e:73: error: no matching function for call to 'DHT::DHT()'

    DHT dht;

    ^

    C:\Users\admin\AppData\Local\Temp\untitled1488161327.tmp\sketch_oct09e\sketch_oct09e.ino:73:5: note: candidates are:

    In file included from C:\Users\admin\AppData\Local\Temp\untitled1488161327.tmp\sketch_oct09e\sketch_oct09e.ino:44:0:

    C:\Program Files (x86)\Arduino\libraries\DHT-sensor-library-master/DHT.h:40:4: note: DHT::DHT(uint8_t, uint8_t, uint8_t)

    DHT(uint8_t pin, uint8_t type, uint8_t count=6);

    ^

    C:\Program Files (x86)\Arduino\libraries\DHT-sensor-library-master/DHT.h:40:4: note: candidate expects 3 arguments, 0 provided

    C:\Program Files (x86)\Arduino\libraries\DHT-sensor-library-master/DHT.h:38:7: note: constexpr DHT::DHT(const DHT&)

    class DHT {

    ^

    C:\Program Files (x86)\Arduino\libraries\DHT-sensor-library-master/DHT.h:38:7: note: candidate expects 1 argument, 0 provided

    C:\Program Files (x86)\Arduino\libraries\DHT-sensor-library-master/DHT.h:38:7: note: constexpr DHT::DHT(DHT&&)

    C:\Program Files (x86)\Arduino\libraries\DHT-sensor-library-master/DHT.h:38:7: note: candidate expects 1 argument, 0 provided

    C:\Users\admin\AppData\Local\Temp\untitled1488161327.tmp\sketch_oct09e\sketch_oct09e.ino: In function 'void setup()':

    sketch_oct09e:91: error: 'class DHT' has no member named 'setup'

    dht.setup(DHT_DATA_PIN); // set data pin of DHT sensor

    ^

    sketch_oct09e:92: error: 'class DHT' has no member named 'getMinimumSamplingPeriod'

    if (UPDATE_INTERVAL <= dht.getMinimumSamplingPeriod()) {

    ^

    sketch_oct09e:97: error: 'class DHT' has no member named 'getMinimumSamplingPeriod'

    sleep(dht.getMinimumSamplingPeriod());

    ^

    C:\Users\admin\AppData\Local\Temp\untitled1488161327.tmp\sketch_oct09e\sketch_oct09e.ino: In function 'void loop()':

    sketch_oct09e:104: error: 'class DHT' has no member named 'readSensor'

    dht.readSensor(true);

    ^

    sketch_oct09e:107: error: 'class DHT' has no member named 'getTemperature'

    float temperature = dht.getTemperature();

    ^

    sketch_oct09e:114: error: 'class DHT' has no member named 'toFahrenheit'

    temperature = dht.toFahrenheit(temperature);

    ^

    sketch_oct09e:131: error: 'class DHT' has no member named 'getHumidity'

    float humidity = dht.getHumidity();

    ^

    exit status 1
    no matching function for call to 'DHT::DHT()'

    OdpowiedzUsuń
    Odpowiedzi
    1. Masz coś nie tak z bibloteką DHT, zainstaluj ją poprawnie.

      Usuń
  15. Na końcu dodałem opis jak poparawnie zainstalować nowe i stare biblioteki MySensors, ponieważ pojawiają się problemy z kompilacją.

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

    OdpowiedzUsuń
  17. Witam czy w ten sposób mogę dodać moje arduino co steruje roletami podnoszenie i opuszczanie

    OdpowiedzUsuń
  18. Rolety są zwykłe przerobie dodane są napędy które arduino nano steruje nimi

    OdpowiedzUsuń
  19. Czy do działania tego rozwiązania potrzebna jest jakaś sieć wifi, czy oba arduino "gadają" ze sobą bezpośrednio?

    OdpowiedzUsuń
  20. Moduły NRF komunikują się bezpośrednio ze sobą.

    OdpowiedzUsuń
  21. Super, dzięki za szybką odpowiedź. Jestem na etapie "wymyślania" co mi jest potrzebne, a potem przejdę do samej budowy systemu czujników w domu. Chodzi mi o pomiar temperatury i wilgotności w każdym z pomieszczeń w mieszkaniu (3 pokoje, korytarz, łazienka, kuchnia, schowek) a więc pomiary będę w 7 punktach. Do części z nich mam doprowadzoną skrętkę i chcę ją wykorzystać. Ale np. w kuchni czy łazience nie mam więc muszę wykorzystać coś bezprzewodowego. Natomiast nie chcę, aby czujniki wykorzystywały moją sieć wifi, bo ją wyłączam na noc.
    W tej chwili do testów mam jedno Arduino UNO i RPi2. Obecnie na czas testów mam podłączone 3 x DS18B20 bezpośrednio do RPi2 z domoticzem i wszystko działa. A czy tak samo mogę bezpośrednio do RPi2 podłączyć np. DHT11, czy lepiej do tego wykorzystać Arduino?
    Czy Arduino wpięte przez USB do RPi2 robi tylko za gateway, czy mogę do niego również przewodowo podpiąć np. DS18B20 czy DHT11?

    OdpowiedzUsuń
    Odpowiedzi
    1. Ja osobiście mam zrobioną bramkę ethernet https://www.mysensors.org/build/ethernet_gateway (pod ręką była mega2560 z modułem wiznet W5100 w postaci nakładki). Bezpośrednio do Maliny mam podpięty nieprodukowany już konwerter USB-1Wire http://www.meraprojekt.com.pl/files/mp00200.pdf do tego kilka czujników DS18B20. Kolejny czujnik podpięty do arduino z modułem NRF, tak samo kilka przekaźników. Na innym jeszcze barometr i na kolejnym czujnik Sensiriona SHT11 do którego musiałem trochę kodu dopisać. Pozostałe elementy praktycznie zaprogramowane kodem z przykładów.
      Z samą bramką ethernet miałem kilka dni walki ale w tym wypadku wina leżała po stronie menedżera płytek Arduino - działa wersja 1.6.11 w nowszych nie chodziło ale najnowszych nie sprawdzałem bo zdążyły wyjść po mojej "walce" ;)
      Co do podpinania czujników bezpośrednio pod moduł bramki to z opisów wynika że można to zrobić.
      Tak samo bezpośrednie podpięcie modułu NRF pod Malinę jest możliwe, nie potrzeba wtedy bramki na Arduino - przetestowane przez kumpla, choć wiem że też nie bez problemów. Aktualnie nie pamiętam dokładnie w czym był problem.
      Tak samo można podłączyć czujniki pod gpio maliny.

      Ogólnie polecam wczytać się w biblioteki mysensors ;) mi kilkudniowa analiza bardzo rozświetliła pogląd na to jak to wszystko działa;) Choć wiem że nie jest to łatwe, tym bardziej że jest to bardzo rozbudowane oprogramowanie.
      Chwilowo mam mały zastój, trochę chęci i czasu brak ale w głowie mam tyle pomysłów że nie wiadomo od czego zacząć.

      Ps. nie testowałem połączeń przewodowych po RS485, może ktoś się wypowie jak wygląda zrobienie bramki RS485 sprzęgniętej z modułem radiowym, tak żeby informacje pojawiające się w segmencie "RS" były przekazywane do części radiowej?

      Usuń
  22. Powrócę do tematu i ponownie zapytam, tym razem już nieco więcej udało mi się uruchomić, ale zatrzymałem się na pewnym etapie.
    Do RPi2 po USB mam wpięte Arduino z nRF24L01 jako SerialGateway. Mam też drugie arduino z nRF24L01 i tam wpięty DHT11, czyli układ opisany w powyższym artykule i wszystko działa.
    Chciałem pójść krok dalej, i do arduino poza DHT11 podpiąć też DS18B20 (a najlepiej kilka po 1-Wire) i również przesyłać te dane do bramki a nastepnie do Domoticza który stoi na RPi.
    Jak osiągnąć takie coś? Próbowałem grzebać w kodzie, udaje mi się odczytywać temperaturę z DS18B20 w monitorze portu szeregowe, ale jak to wysłać do drugiego arduino a tym samym do domoticza? Ktoś pomoże?

    OdpowiedzUsuń
    Odpowiedzi
    1. Na stronie MySensors masz kod do wgrania do odbiornika z DS18B20.

      Usuń
    2. https://www.mysensors.org/build/temp

      Usuń
    3. Dzięki, o to własnie chodziło. Co prawda jeszcze wczoraj udało mi się podłączyć naraz DHT11 i DS18B20 i wysłać dane do domoticza, ale problem pojawił się z kodem w momencie gdy chciałem uruchomić kilka DS18B20. Teraz już wszystko powinno zadziałać, po południu przetestuję.

      Usuń
    4. Możesz podzielić się kodem połączonych DHT11 DS18b20

      Usuń
  23. Wpadłem na tego bloga przypadkowo. SUPER robota. Dziękuje.
    Mam mały problem: mam RPI3 i Andruino Mega. W żaden sposób RPI nie wykrywa mi Arduino po USB. Coś pozmieniali czy czegoś nie wiem? W/g tego projektu na Andruino wszystko działa jak nalezy, ale chcialem to wpiąc do RPI3 (bramkę mam na nrf24l01). Jeśli można - proszę o pomoc. Będę wdzięczny za każdą podpowiedź.

    OdpowiedzUsuń
    Odpowiedzi
    1. Ogólnie nie działają Arduino na sterowniku CH340.

      Usuń
    2. Powinno działać Mega 2560 R3 na ATmega16U2.

      Usuń
  24. Ale ja mam własnie 2560 R3

    OdpowiedzUsuń
  25. Napiszę tutaj, może ktoś pomoże.
    Jak zmodyfikować ten kod: https://www.mysensors.org/build/binary
    na 2 czujniki? Jeden jak w kodzie działa extra.
    Pytanie brzmi: jak dodać drugi? Np. na pinie 2
    Pozdrawiam

    OdpowiedzUsuń
  26. witam. można zaktualizować linki.

    folderu Moje Dokumenty -> Arduino -> libraries wypakować i skopiować ten zestaw plików błąd 404

    OdpowiedzUsuń
    Odpowiedzi
    1. Nowe i stare biblioteki są na stronie MySensors https://www.mysensors.org/download
      Proponuje pobrać z Githuba

      Usuń
  27. Witam. Po lekturze strony zastanawiam się czy bramka na arduino jest to w ogóle potrzebna. Jak rozumiem można wgrać soft do maliny podłączyć radio czy RS485 i powinno tak samo działać jak zewnętrzna bramka?

    OdpowiedzUsuń
  28. https://www.mysensors.org/build/raspberry

    OdpowiedzUsuń
  29. Tak będzie działać tak samo, tylko mamy zajęte piny RPi i dodanie bramki z Arduino do Domoticz jest bardzo proste.

    OdpowiedzUsuń
    Odpowiedzi
    1. Roman, a idąc dalej, skoro Bramkę z czujnikiem można połączyć przez RS485, to czy nie można zrobić tego przez SPI? Wojtek

      Usuń
  30. Witam mam nadzieję że jeszcze odpowiadasz na pytania jestem nowy i mam mały problem. Mianowicie stworzyłem bramkę MySensors potem według twojego przykładu w drugim urządzeniu DHT22 i wszystko działa prawidłowo na Domoticzu. Teraz chciałem zrobić czujnik zewnętrzny w oparciu o Dallas DS18B20, nadmienię że czyjnik na przykładzie działa prawidłowo. Robię tak wgrywam na UNO SerialGetway a następnie kod:
    // Enable debug prints to serial monitor
    //#define MY_DEBUG

    // Enable and select radio type attached
    #define MY_RADIO_NRF24
    //#define MY_RADIO_RFM69

    #include
    #include
    #include
    #include


    #define COMPARE_TEMP 1 // Send temperature only if changed? 1 = Yes 0 = No
    #define ONE_WIRE_BUS 3 // Pin where dallase sensor is connected

    unsigned long SLEEP_TIME = 30000; // Sleep time between reads (in milliseconds)
    OneWire oneWire(ONE_WIRE_BUS); // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
    DallasTemperature sensors(&oneWire); // Pass the oneWire reference to Dallas Temperature.

    int numSensors=0;
    bool receivedConfig = false;
    bool metric = true;
    // Initialize temperature message
    MyMessage msg(0,V_TEMP);

    void before()
    {
    // Startup up the OneWire library
    sensors.begin();
    }

    void setup()
    {
    // requestTemperatures() will not block current thread
    sensors.setWaitForConversion(false);
    }

    void presentation() {
    // Send the sketch version information to the gateway and Controller
    sendSketchInfo("Temperature Sensor", "1.1");

    // Fetch the number of attached temperature sensors
    numSensors = sensors.getDeviceCount();



    }

    void loop()
    {
    // Fetch temperatures from Dallas sensors
    sensors.requestTemperatures();

    // query conversion time and sleep until conversion completed
    int16_t conversionTime = sensors.millisToWaitForConversion(sensors.getResolution());
    // sleep() call can be replaced by wait() call if node need to process incoming messages (or if node is repeater)
    sleep(conversionTime);




    // Only send data if temperature has changed and no error
    #if COMPARE_TEMP == 1

    #else
    if (temperature != -127.00 && temperature != 85.00) {
    #endif

    // Send in the new temperature
    send(msg.setSensor(i).set(temperature,1));
    // Save new temperatures for next compare
    lastTemperature[i]=temperature;
    }
    }
    sleep(SLEEP_TIME);
    }
    Wszystko się prawidłowo kompiluje natomiast serial monitor milczy lub pokazuje MY SENSORSO 2.2.0 i tyle. Pewnie robię jakiś głupi błąd tylko że nie wiem gdzie za pomoc był bym wdzięczny.

    OdpowiedzUsuń