Elektroda.pl
Elektroda.pl
X
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Stacja pogodowa na Arduino z komunikacją na 433 MHz

ghost666 19 Paź 2015 23:25 10911 5
  • Stacja pogodowa na Arduino z komunikacją na 433 MHz
    W poniższym projekcie autor zaprezentował, jak połączyć dwa moduły Arduino z pomoc komunikacji radiowej (bezprzewodowej). Autor wykorzystuje w poniższym projekcie umiejętności zdobyte podczas jego poprzednich projektów, aby skonstruować bezprzewodową stację meteorologiczną opartą o moduł RF433 do bezprzewodowej transmisji informacji, które następnie wyświetlane są na LCD podłączonym z pomocą interfejsu I²C.

    Krok 1: lista potrzebnych elementów

    Stacja pogodowa na Arduino z komunikacją na 433 MHz


    Oto czego potrzebujemy do złożenia układu:

    Dwa Moduły Arduino, autor wykorzystał jeden moduł UNO i jeden NANO
    Dwie płytki stykowej
    Parę modułów nadawczo-odbiorcych RF433
    Sensor temperatury LM35
    LCD z interfejsem szeregowym I²C
    Kabelki do połączenia wszystkiego w całość

    Moduły RF433 wykorzystane w tym projekcie idealnie nadają się do opisywanych zastosowań. Moduł nadawczo-odbiorczy ma około 14 metrów zasięgu bez anteny i nawet do 31 m, jeśli podłączymy do obu modułów w systemie anteny w postaci 17,4 cm przewodu. Oczywiście to tylko liczby z karty katalogowej i realne osiągi mogą się od tego różnić, w zależności od napięcia zasilania, temperatury i przeszkód terenowych po drodze. No ale ta czy inaczej, to bardzo dobry układ, ja za jednego dolara...

    Krok 2: podłączenie termometru LM35 i transmitera RF

    Stacja pogodowa na Arduino z komunikacją na 433 MHz Stacja pogodowa na Arduino z komunikacją na 433 MHz Stacja pogodowa na Arduino z komunikacją na 433 MHz


    Do tej części układu autor wybrał moduł Arduino UNO z uwagi na możliwość podpięci do niego zewnętrznego źródła zasilania. Najpierw do wyprowadzeń VCC i GND podłączamy płytkę stykową. Na płytce stykowej umieszczamy układ LM35 i podłączamy jego odpowiednie piny do zasilania (patrz zdjęcie powyżej). Środkowy pin układu podłączamy do wejścia A0 w Arduino.

    Następnie na płytce umieszczamy moduł RF433-TX, umieszczając go tak, aby jego piny DATA VCC i GND były ustawione w kierunku modułu Arduino. Zasilanie podłączamy do GND i VCC, a pin DATA łączymy z 12 cyfrowym pinem Arduino.

    Krok 3: Sketch nadajnika

    Kodowanie w projekcie rozpoczynamy od załadowania biblioteki VirtualWire, która posłuży nam do oprogramowania komunikacji pomiędzy modułami RF433.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Następnie definiujemy kilka zmiennych;

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Następnie znajduje się funkcja setup, w której definiujemy podłączenie danych z modułu TX i ustawiamy prędkość transmisji na 2000 bps:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    W funkcji loop znajduje się główna pętla programu. Odczytuje on temperaturę z sensora, przechowuje jej wartość w przygotowanej ku temu zmiennej i konwertuje wartość do stopni Celsjusza mnożąc przez 0,48828125

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Następnie zmieniamy wartość z typu float na macierz znaków, którą wyślemy do odbiornika:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    kompletny kod programu nadajnika i biblioteka VirtualWire pobrać można z poniższych linków:

    http://www.instructables.com/files/orig/FMO/G20M/IFD6KIDP/FMOG20MIFD6KIDP.ino
    http://www.instructables.com/files/orig/FD7/L29W/IFD6KIE6/FD7L29WIFD6KIE6.zip

    Krok 4: Połączenie Arduino NANO, odbiornika i LCD z interfejsem I²C

    Stacja pogodowa na Arduino z komunikacją na 433 MHz


    Teraz zajmujemy się podłączeniem do Arduino NANO odbiornika sygnału radiowego i wyświetlacza LCD. Podłączamy NANO do płytki stykowej, na niej umieszczamy moduł odbiorczy RF433. Podłączamy go do zasilania, a pin DATA do 12 pinu cyfrowego Arduino. Następnie podobnie robimy z LCD z interfejsem szeregowym - podłączamy zasilanie, a piny SDA i SCL wyświetlacza podpinamy do, odpowiednio, 4 i 5 pinu Arduino.

    Krok 5: Oprogramowanie odbiornika

    W tym programie dzieje się trochę więcej. Pisanie zaczynamy od załadowania bibliotek:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Następnie definiujemy kilka stałych i zmiennych i inicjalizujemy LCD:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    W funkcji setup onfigurujemy LCD, załączamy podświetlenie i stawiamy pin odczytu danych radiowych na 12 pin Arduino. Konfigurujemy też radio, ustawiając prędkość odczytu na 2000 bps i rozpoczynamy nasłuchiwanie.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    W głównej pętli programu sprawdzamy czy nie otrzymaliśmy transmisji z nadajnika i jeśli tak się stanie, na wyświetlacz LCD przesyłamy "The temp is:" w pierwszej linijce i temperatura odebrana z nadajnika w drugiej

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Program pobrać można także tutaj: http://www.instructables.com/files/orig/FAG/SN8C/IFD6KRAN/FAGSN8CIFD6KRAN.ino

    Źródło: http://www.instructables.com/id/Arduino-weather-station-with-RF433-MHz-modules/?ALLSTEPS

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    ghost666
    Tłumacz Redaktor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    ghost666 napisał 9436 postów o ocenie 7369, pomógł 157 razy. Mieszka w mieście Warszawa. Jest z nami od 2003 roku.
  • PCBway
  • PCBway
  • #3
    Freddy
    Poziom 43  
    No i co w związku z tym, to jest DIY Zagranica!
  • #5
    xdiax
    Poziom 22  
    Nazwałbym to raczej drogim termometrem bezprzewodowym, a nie stacją pogodową ...
  • #6
    PabloSSS
    Poziom 16  
    @kowal011 - Idąc Twoim tokiem rozumowania powinno się już zamknąć działy DIY, bo jest niezwykle mało prawdopodobne, żeby ktoś zamieścił projekt który w mniejszej lub większej części nie będzie kopią innego projektu. :D