czujników - RS485 czy I2C?

Pracując nad projektem stacji pogodowej muszę zdecydować się na magistralę po której będę odczytywał informacje z czujników. W tej chwili wiem, że niektóre z nich w finalnej wersji płytki będą umieszczone na tym samym PCB co MCU i kontroler Ethernetu. Tak będzie chociażby w przypadku czujnika ciśnienia, który (tak samo jak m.in. RTC) będzie podłączono do magistrali I2C.

Problem zaczyna się w przypadku tych czujników, które będę musiał umieścić poza skrzynką z elektroniką. Najbliżej będzie mógł się znajdować sensor temperatury i wilgotności powietrza. Czy wystarczy przedłużyć magistralę I2C poza skrzynkę (tak mniej-więcej metr kabla) i ewentualnie odizolować czymś takim?

formatting link
Nie wykluczam jednak, że w przyszłości będą chciał dodać do stacji kolejne czujniki, które będą się znajdowały trochę dalej - pomiar prędkości i kierunku wiatru, nasłonecznienia itp. Jak bardzo mógłby "wydłużyć" I2C? Może jednak lepszym pomysłem będzie zastosowanie magistrali różnicowej, na skrętce, np. RS485 albo CAN?

Czy jeśli już zastosuję taką magistralę w projekcie, to w ogóle opłaca się łączyć jakiekolwiek zewnętrzne urządzenia za pomocą I2C? Może lepiej sklecić osobny modulik na jakimś ATTiny, niech czyta dane z czujników i wysyła je po właściwej magistrali?

A może w ogóle nie powinienem się bawić kablami, tylko zastosować któryś z tanich transceiverów ISM na SPI?

Reply to
Atlantis
Loading thread data ...

W dniu 2014-02-07 18:50, Atlantis pisze:

Najtaniej, prosto i bardzo skutecznie - RS485. Po stronie MCU (tak twojej "centralki" jak i np attiny przy czujnikach) obsługa banalna (bo to zwykły rs, szeregowy port jest prosty i oprzykładowany z każdej strony). Przecież nie potrzebujesz tam megabitów przepustowości.

Raczej tak. Wymyśl sobie jakiś protokół komunikacyjny na wspólną magistralę - centralka jako master, czujniki jako slave każdy ze swoim nr, jakiś stały format ramki i zasady odpowiedzi, enumeracji czujników itp, a wtedy pomiar z każdego typu czujnika (niezależnie od tego, czy fizycznie na czujniku analogowym, na ds18b20, czy na pirometrze, czujniku ciśnienia czy wiatru czy czegoś innego) będziesz mógł łatwo przeformatować na jego attiny i wcisnąć spójnie do jednego systemu/bazy/wizualizacji - uniezależniając się całkowicie od fizycznych czujników, które możesz dorabiać, przerabiać, przeprogramowywać - bez ruszania już "serca" stacji. Np stacja odlicza czujniki metodą wysyłania kolejnych nr cyklicznie i oczekiwania na odpowiedz, a każdy czujnik - który "usłyszy swój nr" odpowiada w formacie np Nr_czujnika,zmierzona_wartosc_w_int16 (bo chyba taka precyzja ci wystarczy?, gdzie 0=0'C, 0=0m/s, 1000=1000hPa itp ). Dzięki temu łatwo to będzie do jakiegoś np rrdtoola wrzucać do wizualizacji.

To już zależy od ciebie, jak sobie hardware całości wymyślasz. Nie ma problemu użyć np RF24L01P na 2.4GHz, bo jest niedrogi (~10zł za modulik na spi, bez dodatkowych wzmacniaczy mocy), i ma zasięgu kilkadziesiąt meetrów, tylko po co? Obsługa magistrali radiowej (tzn samego modułu radiowego) to trochę więcej kodu, niż prosta obsługa rs232/485 w przerwaniach "odebrałem znak" i "wyślij znak"

Reply to
BartekK

W dniu 2014-02-07 18:50, Atlantis pisze:

konkretnego czujnika lub do wszystkich.

problemu. U mnie sprawa jest prosta, bo zbieram tylko dane typu temperatura,

ogrzewanie czy nie.

Marcin

Reply to
Marcin

On 07.02.2014 23:10, Marcin wrote:

--
Pozdrawiam 
Jakub Rakus
Reply to
Jakub Rakus

--
Pozdrawiam 
Jakub Rakus
Reply to
Jakub Rakus

formatting link

--

| sibi@drut.org  GG:23319  tel +48 696455098  http://drut.org/ 
| http://www.allegro.pl/show_user_auctions.php?uid=338173
Reply to
BartekK

news:ld3si3$rv4$ snipped-for-privacy@node2.news.atman.pl...

zabezpieczenie tylko ESD).

P.G.

Reply to
Piotr Ga³ka

W dniu 2014-02-08 08:18, Piotr Gałka pisze:

Największe problemy przy długiej linii pojawiają się gdy na jej końcach nie są podciągnięte D+ do VCC i D_ do masy.

Reply to
Mario

I to jest bardzo słuszna koncepcja. Śmiem twierdzić, że ważniejsza niż terminatory linii.

Reply to
zapinio

W dniu 2014-02-08 01:49, BartekK pisze:

Dokładnie tak, lepiej bym tego nie ujął. A czasami jest jeszcze gorzej, bo zaczyna lecieć woda po ścianie, która potem zamarza itd... :) Czekałem na ocieplenie klimatu, ale się nie doczekałem, to trzeba samemu coś z tym zrobić.

Marcin

Reply to
Marcin

Problem występuje głównie na płaskich dachach, zwłaszcza przy dużych powierzchniach. Przy skośnych tak czy inaczej wszystko spłynie. Na płaskich czy słabo nachylonych robi się ba dachu basen z wodą i woda wnika do środka i cieknie po ścianach.

Reply to
Mario

W dniu 2014-02-08 01:08, Jakub Rakus pisze:

W pierwszej wersji urządzenia planowałem użyć po prostu SN75176 (takie akurat mam pod ręką). Powinienem jednak odejść od tego założenia i kupić lepsze scalaki? Zajrzałem do noty i z tego co widzę SN75176 ma zalecaną temperaturę pracy powyżej 0 stopni C. Niby samą skrzynkę z centralką mogę umieścić gdzieś wewnątrz budynku, ale z samymi sensorami już tak dobrze nie będzie...

Tak właściwie jak to jest z maksymalną ilością urządzeń na magistrali RS485. Czytałem gdzieś, że nie jest to ograniczenie programowe, ale chodzi o warstwę elektryczną. Czyżby więc liczba ta odnosiła się do transceiverów określonego typu i problem był możliwy do obejścia przez zastosowanie lepszych scalaków?

I jeszcze jedno pytanie chodzi mi po głowie. Jak wygląda praca z większą ilością urządzeń master na jednej magistrali? Teraz raczej nie będę miał takiej potrzeby, ale kto wie, czy za kilka lat nie zabiorę się za jakąś prostą automatykę domową (zdalne gaszenie światła, wykrywanie otwartych drzwi, itp.)

Reply to
Atlantis

W dniu 2014-02-07 20:16, BartekK pisze:

Dobry pomysł. Generalnie początkowo myślałem, żeby centralka zajmowała się wstępnym segregowaniem danych i wysyłała je przez HTTP POST jako zmienne o konkretnych nazwach, które z drugiej strony odbierałby jakiś skrypt PHP. Teraz jednak zastanawiam się czy lepszym pomysłem nie będzie proste forwardowanie tego w pakietach UDP, które będą zawierały numer węzła na magistrali (0 mogłoby oznaczać samą centralkę, która też będzie miała parę czujników), numery kolejnych czujek podłączonych do węzłów i wartości pomiarów.

Dzięki temu nie musiałbym kompilować nowego wsadu przy okazji każdej rozbudowy systemu o nowy czujnik. Wystarczyłoby dopisać kilka formułek do skryptu po stronie serwera, który odbierałby dane i wrzucał do bazy/pliku.

Reply to
Atlantis

Z tymi temperaturami to jest tak, że to może i działać, ale producent już tego nie gwarantuje. Z doświadczenia wiem, że zwykłe MAXy na zakres

0-70st.C głupiały.

Dokładnie tak, pierwotnie specyfikacja RS485 zakłada max. 32 odbiorniki. Przy stosowaniu odbiorników tzw. wysokoimpedancyjnych może ich być znacznie więcej.

Różne systemy automatyki domowej używające RS485 i pochodnych mają różne ograniczenia, ale oscyluje to w granicach 100-200 urządzeń. Ważny jest także iloczyn (długość przewodów * prędkość transmisji).

Reply to
Jakub Rakus

Np. dziwne kable ułożone przez ekipę budowlaną, ewentualnie kable poskładane po drodze z kilku kawałków, bo gdzieś tam koparka dziabnęła, gdzieś indziej ukradli, gdzieś tam osłona kabla naruszona i wilgoć zeżarła izolację itp. itd. Potem się okazuje że nawet punkt-punkt nie chce działać, a co dopiero myśleć o większej ilości urządzeń.

Reply to
Jakub Rakus

W dniu 2014-02-08 19:55, Jakub Rakus pisze:

Z tego co widzę MAX481 w wersji "E" są dostępne w TME:

formatting link
Jednak co dziwne, w opisie wymieniona jest temperatura pracy 0-70 stopni C. Pomyłka?

MAX481 do nich należy?

Hmm... Mógłbym zapytać jaki kabel do RS485 mógłbyś polecić i jaki jest jego orientacyjny koszt? Jak powinno się prowadzić magistralę? Dopuszczalne jest stosowanie niezbyt długich odgałęzień prowadzących do urządzenia, czy też jedynym akceptowalnym rozwiązaniem są dwa kable - wchodzący i wychodzący z urządzenia?

Czy jest jakiś standard, który określałby sposób wykonywania połączeń? Tak samo jak w Ethernecie mamy patch panele i RJ45, tutaj są jakieś zalecane złączki?

Reply to
Atlantis

--
Pozdrawiam 
Jakub Rakus
Reply to
Jakub Rakus

W dniu 2014-02-09 01:38, Jakub Rakus pisze:

Reply to
Atlantis

Może być, osobiście mam do czynienia z magistralami rs485 na których pracują jednocześnie max481 od maxima, sp481 od sipexa i jeszcze jakieś układy z serii adm z analog devices.

Wewnątrz pomieszczenia taka skrętka ethernetowa (ale ekranowana) będzie bardzo dobra. Jak na zewnątrz ją wsadzisz w jakąś rurkę to też może być. No i możesz pozostałymi żyłami zasilanie prowadzić.

Z założenia RS485 powinien pracować w topologii magistrali. I należy się tego trzymać, żeby potem nie dociekać dlaczego nie działa.

Reply to
Jakub Rakus

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.