Jeżeli nie mamy możliwości podłączenia bramki MySensors do portu USB w Rasberry Pi, możemy zbudować bramkę Ethernet podłączaną do domowej sieci lan za pomocą skrętki.
Budowa bramki MySensors Ethernet opisana jest na stronie MySensors -> Link
Ja do budowy bramki wykorzystałem Arduino Uno i Ethernet Shield z czytnikiem kart microSD, widoczny niżej.
Schemat podłączenia modułu NRF24L01 do Ethernet Shield.
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.
Dzisiaj opiszę testy i kombinacje połączeń różnych czujników do odbiornika MySensors.
Test czujnika DHT 22
Czujnik DHT22 i DHT11 posiada cztery nóżki, które kolejno od lewej posiadają wejścia 1 - VCC, 2 - Data, 3 - nie używany, 4 - GND
Do nóżki numer 2 - Data należy podłączyć zasilanie poprzez rezystor podciągający 10K.
Schemat podłączenia do odbiornika MySensors
Do podłączenia czujnika DHT wykorzystano pin 3 odbiornika MySensors.
Kod programu do wgrania do Arduino jest do pobrania tu -> Link
W 14-stej linijce kodu, określono nr pinu do przesyłania danych:
#define DHT_DATA_PIN 3
W 21-szej linijce kodu określony jest czas w milisekundach pomiędzy kolejnymi odczytami i przesyłaniem danych do Domoticz:
static const uint64_t UPDATE_INTERVAL = 30000;
Możemy go dowolnie modyfikować pamiętając, że minimalny czas dla czujnika DHT22 to 1000 ms, czyli 1 sekunda, a dla DHT11 to 2000 ms, czyli 2 sekundy.
Po wgraniu do Arduino w logach Domoticz -> Konfiguracja -> Logi wyświetli się nazwa programu.
Po wejściu w Konfiguracja -> Urządzenia w Domoticz pojawi się czujnik.
Urządzenie dodajemy po kliknięciu w zieloną strzałkę i po wpisaniu nazwy odczyt temperatury i wilgotności będzie widoczny w zakładce Temperatura.
Test czujnika ruchu PIR HC-SR501
Do testów wykorzystałem czujnik PIR HC-SR501 niebieski.
Czujnik posiada 2 potencjometry T1 i T2, zworkę którą można ustawić w pozycji L lub H i wyjścia/wejścia VCC, OUT i GND.
Potencjometrami T1 i T2 regulujemy: T1 - czas trwania stanu wysokiego po wykryciu obiektu T2 - czułość czujnika (dystans, w którym wykrywa ruch obiektu)
Zworkę proponuję ustawić w pozycji H, co będzie skutkowało, tym że po wykryciu ruchu na pinie OUT pojawi się stan wysoki i będzie on utrzymywany dopóki trwa ruch, w pozycji L po wykryciu ruchu na wyjściu OUT pojawi się stan wysoki i zaraz przejdzie w stan niski.
Potencjometr T1, czyli czas reakcji proponuję ustawić maksymalnie w lewo, a T2 czyli odległość na jakiej będzie wykrywany ruch tak jak pokazano niżej.
Kod programu do wgrania do Arduino jest do pobrania tu -> Link
W kodzie programu w 41 linijce kodu określamy pin Arduino, do którego podłączamy wyjście OUT czujnika PIR.
Ja wykorzystałem pin 4, czyli:
#define DIGITAL_INPUT_SENSOR 4
W 40 linijce kodu ustawiamy czas w milisekundach, pomiędzy którym będzie wykrywany ruch, najlepiej ustawić go na jak najmniejszy ja ustawiłem 1 sekundę czyli 1000 ms:
unsigned long SLEEP_TIME = 1000;
Schemat podłączenia
Po wgraniu kodu do Arduino w logach Domoticz wyświetli się nazwa programu:
W urządzeniach pojawi się:
Po kliknięciu w zielona strzałkę czujnik pir pojawi się w Przełącznikach w menu Domoticz jak zwykły włącznik, musimy jeszcze kliknąc Edycja i zmienić go na Motion Sensor.
Tak wygląda dodany czujnik ruchu.
Po wykryciu ruchu czujnik podświetli się na czerwono.
Połączenie czujnika DHT22 i czujnika PIR HC-SR501
Kod wykorzystujący jednocześnie czujnik DHT22 i czujniku ruchu PIR HC-SR501 na jednym odbiorniku MySensors jest do pobrania tu -> Link
Czujnik DHT22 podłączony do zasilania tak jak na początku wpisu na blogu, poprzez rezystor podciągający 10K.
W Domoticz mamy:
Zmontowane czujniki
Połączenie czujnika ciśnienia BMP180 i DHT22
Czujnik ciśnienia BMP180 wykorzystałem w budowie mojej stacji pogody, którą opisałem w tym wpisie na blogu -> Link
Czujnik BMP180 wymaga zasilania 3,3V i działa jedynie na pinach SCL i SDA Arduino, są to odpowiednio piny A5 i A4, na innych pinach czujnik nie będzie działać.
Pojawiła się nowa wersja oprogramowania dla RFLink R44 z obsługą MySensors, do pobrania tu -> Link
Dla dobrego zasięgu najlepiej zamontowac moduł NRF24L01 z zewnętrzną antenką.
Po ściągnięciu rozpakowujemy archiwum i programujemy tak jak opisałem we wcześniejszym wpisie na blogu -> Link
Uruchamiamy plik RFLinkLoader.exe i w Select file wybieramy plik RFLink.cpp.hex z rozpakowanego archiwum, odpowiedni port com w Serial Port i klikamy Upload/Program Firmware to device.
Po wgraniu oprogramowania klikamy Serial Port Logging i najlepiej włączyć wszystkie opcje dla modułu NRF, czyli NodoNRF:ON, MiLight:ON, BLE:ON, MySensors:ON.
Po włączeniu tych opcji powinniśmy zobaczyć wykryte urządzenia w logu jak wyżej.
Teraz już wystarczy podłączyć i dodać RFLink jak opisałem we wcześniejszym wpisie na blogu -> Link
Po jakimś czasie w Konfiguracja -> Urządzenia powinniśmy zobaczyć wykryte urządzenia MySensors przez RFLink.
Dodajemy je klikając w zieloną strzałkę i wpisując nazwę.
Z tego co zauważyłem RFLink nie pokazuje poprawnych wartości dla niektórych odbiorników MySensors i nie wykrywa wszystkich rodzaji czujników MySensors, nie wykrywa mi np. czujnika jakości powietrza z czym bramka MySensors nie ma problemu.
Dzisiaj opiszę działanie czujnika pyłu i jakości powietrza Sharp GP2Y1010AU0F na odbiorniku MySensors.
Czujnik można kupić za około 30 zł w tym sklepie -> Link
Czujnik GP2Y1010AU0F wygląda, jak na zdjęciu niżej i w zestawie otrzymujemy rezystor 150 ohm i kondensator 220 uF.
Czujnik GP2Y1010AU0F posiada następujące parametry techniczne:
napięcie zasilania: DC5 ± 2 V pobór Prądu: 20mA (szczyt) czułość: 0.5 V/(0.1 mg/m3) minimalny poziom wykrywanych cząstek: 0.8 μm temperatura pracy:-10 ~ 65 wymiary: 46mm x 30mm x 17.6mm
Schemat podłączenia do odbiornika MySensors wygląda następująco.
Czujnik GP2Y1010AU0F posiada przewody, które podłączamy następująco:
1. Biały podłączamy przez rezystor 150 ohm do zasilania 5V 2. Niebieski do GND 3. Zielony do pinu 3 Arduino 4. Żółty do GND 5. Czarny do pinu analogowego A1 Arduino 6. Czerwony do zasilania 5V
Między białym (plus) przed rezystorem 150 ohm, a masą GND (minus) na niebieskim, dajemy kondensator 220 uF.
Kod programu do wgrania do Arduino jest do pobrania tu -> Link
Na końcu kodu w delay(10000); określamy sobie czas w milisekundach między kolejnymi odczytami. Ja ustawiłem na 10000 milisekund, czyli 10 sekund.
Po wgraniu kodu do Arduino w logach Domoticz (Konfiguracja -> Logi) pojawi się log z nazwą programu.
Teraz już tylko wystarczy wejść w Konfiguracja -> Urządzenia i kliknąć w zieloną strzałkę, aby dodać urządzenie.
Czujnik będzie widoczny w zakładce użytkowe.
Działanie czujnika widać na poniższym filmie.
Jak widać po zapaleniu papierosa, wzrosło stężenie cząstek.
Normalnie w pomieszczeniu pokazuje stężenie 10 ug/m3, po wystawieniu za okno wzrosło do około 42 ug/m3, co w okresie grzewczym na wsi mieści się w zakresie dopuszczalnym.
Zmodyfikowany i ulepszony kod programu, do pobrania -> Link
Dzisiaj opiszę działanie czujnika MQ-2 na odbiorniku MySensors.
Czujnik MQ-2 wykrywa takie gazy jak: propan, butan, metan, LPG, a także alkohol i dym. Czujnik mierzy stężenie tych gazów w powietrzu do wartości 10 000 ppm.
Czujnik MQ-2 wygląda jak na zdjęciu niżej, a koszt to około 10 zł.
Czujnik MQ-2 posiada następujące wejścia i wyjścia:
Do odbiornika MySensors podłączamy pin A0 czujnika do pinu A1 odbiornika oraz napięcie VCC +5V i masę GND.
Do odbiornika wgrywamy kod programu ze strony MySensors -> Link
W kodzie programu ze strony MySensors musimy sobie zmodyfikować domyślny pin na A1 i możemy również czas aktualizacji i przesyłania danych na 1000 mili sekund, czyli 1 sekundę, tak jak pokazano niżej.
Zmodyfikowany kod programu do pobrania jest tu -> Link
Po wgraniu programu do Arduino, w logach Domoticz -> Konfiguracja -> Logi pojawi się nazwa programu.
Teraz, aby wykryło czujnik i był on widoczny w Urządzeniach Domoticz musimy podać gaz z zapalniczki na czujnik. Po podaniu gazu zapali się zielona dioda na czujniku, czułość możemy regulować potencjometrem na płytce.
Powinno się pojawić w Urządzeniach Domoticz, Konfiguracja -> Urządzenia, urządzenie o nazwie Air Quality.
Teraz wystarczy już tylko kliknąć w zieloną strzałkę i wpisać nazwę urządzenia. Urządzenie będzie widoczne w zakładce Użytkowe.
Jak już napisałem na początku czujnik MQ-2 wykrywa gaz LPG, czyli wykryje gaz z zapalniczki, co widać na poniższym filmie.
Czujnik wykrywa również alkohol, ja użyłem zwykłego perfumu.