Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Kategoria: Akumulatorki / Baterie / Ładowarki

Arduino - mini stacja meteo

Crayou 29 Mar 2016 21:13
  • #31 29 Mar 2016 21:13
    Crayou
    Poziom 11  

    Mała kontynuacja:
    1. Dołożyłem barometr BMP180
    2. Zdefiniowałem symbole na LCD: termometr, kropelka, stopnie C, "ś"
    3. Przeorganizowałem ekrany

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Tak się prezentuje na chwilę obecną:

    Link


    W planach: czujka Dallasa bezprzewodowo.

    Jako że temat trochę się rozrósł - można zmienić tytuł/przenieść wątek - nie mam nic przeciwko.

  • #32 31 Mar 2016 10:42
    zster

    Poziom 10  

    Witam Kolegę :)
    Wybacz brak odpowiedzi na temat migania wyświetlacza - czy udało Ci się rozwiązać ten problem?

  • #33 31 Mar 2016 11:05
    Crayou
    Poziom 11  

    Cześć.
    No niestety, nie umiem znaleźć przyczyny. Nie tyle miganie, co jedno mignięcie. Każdy "ekran" ma tą samą konfigurację ale przy pierwszym mignięcia nie ma...

  • #34 31 Mar 2016 12:57
    JacekCz
    Poziom 31  

    dondu napisał:

    Crayou napisał:
    Korzystam z bibliotek:
    <OneWire.h>
    <DS18B20.h>

    Jak mamy sprawdzić ich poprawność skoro ich nie załączasz? Bibliotek o tej nazwie do obsługi DS18B20 jest wiele.



    I wiele, jak można się domyślić, średniej jakości. Wybaczcie złośliwość ale tak to widzę.

  • #35 31 Mar 2016 14:02
    Crayou
    Poziom 11  

    Wiesz, nie było w nich napisane nic o jakości... Nie mogę tego sprawdzić. Korzystam z tych, które udostępniają inni w swoich projektach, przykładach.
    Biblioteki w załączniku.

  • #36 01 Kwi 2016 00:39
    JacekCz
    Poziom 31  

    Crayou napisał:
    Wiesz, nie było w nich napisane nic o jakości... Nie mogę tego sprawdzić. Korzystam z tych, które udostępniają inni w swoich projektach, przykładach.


    Niewiele jest publikowanych bibliotek, które totalnie nie chodzą. Nikt nie che wyjśc na głupka.

    Myślę że wiele, prawie wszystkie, chodzą przynajmniej w "przychylnym otoczeniu".
    Problem gdy to otoczenie wychodzi w taką stronę, jakiej programista nigdy nie projektował czy nie testował.

    Nie złośliwy przykład: Popularna DOBRA biblioteka do enkodera - ale nie do dwóch enkoderów różnych typów w jednym projekcie - to nie jest planowane.

    Wiele mocno ŚREDNICH bibliotek np powstałych w ciepłych krajach, dallasa tam tak nie testowano ;-) w Polsce też. Ekspres do kawy, zwis na twardo gdy jednocześnie braknie wody i kawy - żartuję zawodowo, programista nie odróżniał & i &&

  • #38 17 Mar 2017 19:08
    Crayou
    Poziom 11  

    Wracam do tematu.
    W międzyczasie stacja dorobiła się łączności bezprzewodowej na nRF24L01 - przesyła tylko temperaturę zewnętrzną (docelowo więcej parametrów). Od niedawna uruchamiam wyświetlacz matrycowy 8x32 pix, który ma zastąpić LCD z projektu. Zasadniczo już zastąpił ale mam pewien kłopot z transmisją bezprzewodową.
    Otóż - zarówno wyświetlacz jak i nRF24L01 do działania potrzebują z Arduino pinów MOSI, MISO, SCK i SS. Po podłączeniu tego razem wyświetlacz głupieje. Jak rozumiem, te dwa urządzenia nie mogą współistnieć na tych samych pinach...? To nie zadziała jak I2C, gdzie urządzenia łączy się jedno za drugim (?).
    Jeśli nie można łączyć razem tych dwóch modułów poprzez wspomniane piny, to jest jakaś alternatywa?
    Pozdrawiam.

    EDIT:
    Arduino - mini stacja meteo
    ...no jakoś się zrobić da ;)

  • #39 19 Mar 2017 16:25
    Crayou
    Poziom 11  

    Póki co przesiadłem się na RF433 z racji ich mniejszej "pinożerności". Tylko mam mały kłopot - wysyła mi tylko dwie cyferki... Gdzie mam błąd?
    Kod wysyłania nadajnika:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Nie wklejam całego kodu, bo jest obszerny - obsługuje też LCD. Korzystam z biblioteki VirtualWire.

    W odbiorniku:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    ...i wyświetlając buffer na wyświetlaczu, zawsze mam 2 cyrfy i dwa zera po przecinku. Np. wysyłam temperaturę 24.56 a odbieram 24.00. Kombinowałem mnożąc temperaturę wysyłaną przez 100, aby uniknąć przecinków i wysyłać int a nie float, odbierać int, dzielić przez 100 ale to też się nie udało...
    Jakieś sugestie? Bo mi tu pół niedzieli spełzło na niczym :(


    EDIT:
    A tu kłopot z mnożeniem temperatury razy 100.
    Napiszę prostszy program, aby uświadomić Wam w czym leży problem.
    Pomiar temperatury na DS18B20 wysyłany drogą radiową przez RF433:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Tu wszystko działa OK. Ale gdy chcę stworzyć nowy int (lub float), który będzie temperaturą pomnożoną *100 (unikam przecinka przy wysyłaniu przez radio), wtedy mam tylko dwa poprawne pomiary a potem DS19B20 "wariuje".

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Tak to wygląda:
    Arduino - mini stacja meteo
    Dlaczego psuje mi się float temperature? Przecież po dokonaniu odczytu go nie dotykam. Wrzucam tylko do innej zmiennej...

  • #40 20 Mar 2017 17:56
    Crayou
    Poziom 11  

    Troszkę monolog z mojej strony ale - zostawię rozwiązania dla potomnych. Przyczyna wyświetlania tylko 2 cyfr dość banalna jak się okazało:
    - zmienna Sensor1Data była zadeklarowana jako int - zmieniono na float
    - konwersja Sensor1Data = atoi(Sensor1CharMsg); w prawidłowej postaci powinna wyglądać Sensor1Data = atof(Sensor1CharMsg);
    Śmiga - trzeba rozbudowywać projekt o nowe gadżety ;)