Projekty Arduino – Stacja meteo, czyli pierwsze funkcjonalne urządzenie.

10 marca 2019

Gdy znamy już podstawy działania platformy Arduino, potrafimy lutować i co najważniejsze chcemy zbudować nasze pierwsze działające urządzenie warto zacząć od czegoś prostego. Dobrym projektem na początek jest stacja meteo, teoretycznie możemy stworzyć urządzenie które będzie przetwarzać takie informacje jak wilgotność oraz temperatura powietrza, ciśnienie atmosferyczne, podawać informacje o opadach deszczu, czy też prędkości i kierunku wiatru. Aby zbyt nie utrudniać całego zadania skupimy się na dwóch pierwszych elementach, czyli pomiarze temperatury oraz wilgotności powietrza w pomieszczeniu oraz pomiarze temperatury poza domem. Wszystkie pomiary będziemy mogli odczytać na wyświetlaczu LCD.

Elementy potrzebne do budowy urządzenia.

Do budowy urządzenia potrzebne będzie nam kilka narzędzi oraz elementów elektronicznych, jeśli chodzi o same narzędzia, to z pewnością masz je pod ręką, bo są to:

-lutownica oraz cyna

-śrubokręt do przykręcenia kilku śrubek

-narzędzie do ściągania izolacji z przewodów, może być to nóż, lub automatyczny ściągacz izolacji

-cążki do obcinania kabli

-śrubki wraz z kołkami rozporowymi, abyśmy całe urządzenie mogli przykręcić do ściany.

Jeśli chodzi o elementy elektroniczne, to potrzebujemy:

-Arduino Pro Mini

-stabilizator napięcia 5V L7805CV

-czujnik DHT11

-czujnik DS18B20 w obudowie wodoodpornej, lub bez obudowy, ale tutaj musimy dobrze zabezpieczyć czujnik przed wilgocią, bo będzie znajdował się poza domem

-wyświetlacz LCD 16×2 z konwerterem I2C

-listwy goldpin męskie i żeńskie

-gniazdo DC 2.1 / 5.5mm

-płytka drukowana uniwersalna, taka o wymiarach 5x7cm powinna w zupełności wystarczyć

-trochę kabli żeńsko-żeńskich, męsko-żeńskich oraz przewodów które będziemy mogli wykorzystać do połączeń na płytce uniwersalnej. Osobiście często kupuje skrętkę LAN i z niej pozyskuje kable do lutowania.

Ostatnim elementem jest obudowa drukowana w 3D, do wykonania projektu użyłem programu Fusion360, sam obiekt wydrukowałem z białego materiału PET-G.

Budowa prototypu na płytce stykowej, czyli pierwszy krok do sukcesu.

Jednym z ważniejszych kroków podczas budowy samego urządzenia jest budowa prototypu. Prototyp tworzymy głównie dlatego, aby sprawdzić funkcjonalność całego urządzenia, oraz pozbyć się błędów które mogłyby sprawiać problemy w gotowym urządzeniu. Już tutaj warto zastanowić się do jakich pinów podłączone będą poszczególne komponenty oraz skąd będziemy czerpać zasilanie. Nasze urządzenie zasilimy za pomocą zasilacza podającego 12V, dlatego też, aby ustabilizować zasilanie będziemy musieli użyć stabilizatora napięcia, który obniży podawane napięcie do 5V, czyli napięcia na którym pracuje Arduino. Cały schemat połączeń pokaże oczywiście na grafice.

Cały układ może wyglądać na skomplikowany, ale taki nie jest, jest tylko parę kwestii na które powinniśmy zwrócić uwagę. Pierwsza z nich, to fakt, że w jednym jak i drugim czujniku szynę danych mostkujemy z VCC za pomocą rezystora 4.7kOHM lub innego o podobnej wartości. Musimy też pamiętać o  prawidłowym podłączeniu stabilizatora napięcia, dopiero z jego wyjścia możemy podłączyć zasilanie na płytce stykowej, jeśli podłączymy do płytki napięcie z gniazda DC możemy uszkodzić każdy z układów, ponieważ wszystkie pracują na logice 5V.

Gdy zbudowaliśmy już układ możemy przejść do napisania programu, na samym początku musimy wgrać biblioteki do obsługi czujników oraz wyświetlacza.

Biblioteka wyświetlacza na I2C – https://bit.ly/1Nkj9IT

Biblioteka czujnika DS18B20 – https://bit.ly/2EkOmNI oraz https://bit.ly/2M2eyMf

Biblioteka czujnika DHT11 – https://bit.ly/2wkBpvV

Omówienie programu podzielimy na dwa etapy, jeden omówi wszystko co dzieje się do funkcji loop(), a drugi samą funkcję loop(). Spowodowane jest to tym, że sam program jest dosyć spory.

Jeśli chodzi o tą sekcję, to myślę, że cały program jest jasny, na początku deklarujemy jakie biblioteki będą używane w programie, następnie definiujemy podłączenie czujnika DS18B20 oraz określamy adres wyświetlacza oraz jego wielkość. W samym void setup() uruchamiamy czujnik DS18B20, wyświetlacz i jego podświetlenie, oraz określamy do jakiego pinu podłączony został czujnik DHT11. Ostatnim elementem jest wyświetlenie napisu początkowego na wyświetlaczu, został on umieszczony w sekcji setup, ze względu na to, że ma wyświetlić się tylko raz, podczas uruchamiania urządzenia. Przejdźmy teraz do kolejnej części kodu.

Już na samym początku sekcji loop widzimy linijkę kodu która może wydawać nam się dziwna, ale już spieszę z wyjaśnieniami. Czujnik DHT11 lubi czasem wysłać błędne dane, mają one wartość 0 i można je łatwo wyeliminować za pomocą tej linijki kodu, dzięki czemu program zaczeka aż czujnik poda poprawne dane, z reguły trwa to krócej niż sekundę. Po pobraniu danych z DS18B20 tworzymy zmienne typu float, przechowuje ona liczby. Gdy stworzymy zmienne możemy przejść do wyświetlania danych na wyświetlaczu, całość jest na tyle prosta i zrozumiała, że tłumaczenie jest zbędne, w razie kłopotów odsyłam do poradnika o wyświetlaczach. Pora teraz na wgranie programu do Arduino i sprawdzenie, czy całość działa!

Lutownice w dłoń, jesteśmy coraz bliżej mety!

Gdy prototyp jest w pełni sprawny możemy przejść do lutowania, nie będzie go zbyt dużo, ale warto ten temat poruszyć, na początek najlepiej przyciąć goldpiny męskie i żeńskie na odpowiednią długość, potem umiejscowić całość w płytce i ocenić rozplanowanie przestrzeni na niej. Miejsca w których przylutowałem goldpiny są wybrane przeze mnie i nie muszą stanowić wzorca, połączenia na płytce powinny pokrywać się z tymi na płytce stykowej. Jeśli już ulokowaliśmy goldpiny na płytce, a ich położenie nam odpowiada możemy przejść do przylutowania ich, u mnie płytka wygląda w ten sposób, od razu przylutowałem też stabilizator napięcia.

Gdy przylutowaliśmy podstawowe elementy możemy przejść do połączenia tego co znajduje się na płytce, w prawym dolnym rogu znajduje się listwa do podpięcia wyświetlacza, jest ona opcjonalna, podłączyłem do niej tylko zasilanie, ponieważ w Pro Mini wyprowadzenie magistrali i2C jest dosyć problematyczne, ponieważ nie można go wyprowadzić z pinów które mamy doprowadzone na płytkę, lecz z górnej warstwy samego Arduino, oczywiście nic nie stoi na przeszkodzie aby wyprowadzić je przewodem na płytkę, ale wygodniejszym rozwiązaniem jest doprowadzenie przewodu bezpośrednio do wyświetlacza. Następnie możemy przylutować rezystory i przewody, ja do tego użyłem przewodów ze skrętki.

Teraz zostało nam przylutowanie przewodów zakończonych żeńskimi goldpinami do czujników, przylutowanie gniazda DC do przewodów, przewody lutujemy do stabilizatora napięcia, musimy pamiętać o tym, że stabilizator łączymy z gniazdem według polaryzacji zasilacza, gdy wtyczka zasilacza ma GND na zewnątrz (a z reguły tak jest), to zewnętrzny pin lutujemy do środkowego pinu stabilizatora, ponieważ jest to pin GND, analogicznie postępujemy tak z pinem od VCC. Gdy skończyliśmy lutowanie możemy włożyć Pro Mini do gold pinów, podłączyć wyświetlacz i uruchomić urządzenie, aby sprawdzić, czy całość działa. Jeśli tak, to możemy przejść do zamocowania całości w obudowie i umocowania całości w miejscu w którym urządzenie będzie pracowało. Po umocowaniu całości w obudowie możemy umocować ją do ściany i cieszyć się w pełni działającym urządzeniem które sami wykonaliśmy!

Produkty użyte w poradniku:

Projekt obudowy do wydruku: link do Google Drive

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *