Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Stacja meteo Wi-Fi. Bascom i Arduino.

pier 14 Lis 2017 18:57 4395 9
  • Stacja meteo Wi-Fi. Bascom i Arduino.
    Witam.

    Przedstawiam stację meteo nad którą pracuję już kawałek czasu.
    Początek prac to też mój początek zabawy z Arduino.
    Zaczęło się od gotowego projektu malutkiej stacji z wyświetlaczem oled.
    Stacja meteo Wi-Fi. Bascom i Arduino.
    Wtedy już samo wgranie programu do ESP8266 było wyczynem dla mnie. Później zaczęło się kombinowanie, poprawianie tego i owego próbowanie innych softów.
    Na bazie tej stacji powstał odbiornik danych z sieci.

    Następnym krokiem było zrobienie zewnętrznego czujnika warunków pogodowych.
    Powstały trzy wersje.
    Wersja pierwsza.
    Stacja meteo Wi-Fi. Bascom i Arduino.

    Całkowita porażka. Układ zasilany był z akumulatora Li-ion poprzez przetwornicę buck-boost 3,3V. Akumulator ładowany układem TP4056 z 2W ogniwa słonecznego. Układ również nie był cyklicznie usypiany co skutkowało ciągłym poborem prądu 80mA. Wyniki można było odczytać na wyświetlaczu i poprzez połączenie z urządzeniem na stronie przeglądarki. Taki układ nie miał prawa bytu.

    Druga wersja.
    Stacja meteo Wi-Fi. Bascom i Arduino.

    W tej wersji zostało poprawione już prawie wszystko. ESP8266 dostał cykliczne wybudzenie ze stanu "Deepsleep" co 30min, zrezygnowałem również z przetwornicy na rzecz stabilizatora LDO, wyniki pomiarów wysyłane są na serwer BLYNK-a i Thingspeak-a, niezmienna pozostała możliwość odczytu na wyświetlaczu oled.
    Dodałem też odczyt napięcia akumulatora.
    Teraz układ co pół godziny pobiera przez kilka sekund 80mA a przez resztę czasu około 2mA i to z racji iż wyświetlacz jest włączony na stałe.

    Schemat:
    Stacja meteo Wi-Fi. Bascom i Arduino.





    Na schemacie widnieje jeszcze HTU21d i BMP280 w wersji otatecznej zmienione na BME280.


    Wersja trzecia.
    Stacja meteo Wi-Fi. Bascom i Arduino.

    W tej wersji został tylko poprawiony i zmieniony czujnik. We wcześniejszych wersjach czujnik znajdował się wewnątrz obudowy teraz jest w obudowie radiacyjnej. HTU21d i BMP280 został zastąpiony jednym czujnikiem BME280.
    Obudowa radiacyjna wykonana tradycyjnie z podstawek od doniczek, skręcone razem na nierdzewnych prętach M3.
    Dane z takiego czujnika możemy odczytać na cztery sposoby. Bezpośrednio na wyświetlaczu, smartfonem za pomocą aplikacji Blynk, na naszym kanale Thingspeak i na samej stacji meteo.

    Program wersji ostatecznej.

    Kod: c
    Zaloguj się, aby zobaczyć kod



    Kiedy już miałem część pomiarową przyszła kolej na samą stację.
    Od dawna "walał" mi się wyświetlacz 3,5' na sterowniku SSD2119. Kupiłem go ponieważ jest dla niego gotowa procedura obsługi w Bascomie i tak przeleżał ze dwa lata w szufladzie. Teraz użył bym zupełnie innego Lcd bo ten jest wolny i potrzebuje dużo pinów I/0.
    Całością steruje atmega128 na jakiejś płytce. Nawet nie wiem do czego ta płytka była, taką kupiłem. Jako że wyświetlacz toleruje tylko zasilanie 3,3V i takim napięciem jest zasilana atmega jest też ona mocno przetaktowana, 16Mhz przy 3,3V. Wiem że to przegięcie ale zanim powstała cała stacja długo testowałem działanie całości i nic złego się nie działo.
    Do atmegi podłączone są po I2C czujniki HTU21d, BH1750 i RTC DS3231.
    Standardowo mega odczytuje z nich dane i posyła na wyświetlacz. Czujnik światła potrzebny jest do automatycznej zmiany intensywności podświetlania-atmega steruje poprzez PWM przetwornicą na płytce wyświetlacza. Zrezygnowałem z synchronizacji czasu z serwerem bo i tak trzeba samemu ten czas w programie zmieniać zimowy/letni, zresztą DS3231 oferuje sporą dokładność. Kontroler odbiera również dane z ESP poprzez serial-a.
    Częścią bezprzewodową zajmuje się ESP8266 z programem w Arduino. ESP łączy się z siecią Wi-Fi, odczytuje prognozy pogody na dzień aktualny i dwa dni do przodu z serwera Weatherunderground jak i wiek księżyca, ostatnie wartości z mojego kanału Thingspeak i czas z serwera NTP. Jak pisałem wcześniej czasu nie wykorzystuje. Następnie te dane formatuje i wysyła po serialu co minutę. Dane te odbiera atmega i prezentuje na wyświetlaczu.
    Program jest w większości gotowcem z sieci. Ja go posklejałem z chyba czterech różnych i dodałem wysyłanie danych po serialu.
    Bitmapy z ikonami pogody i faz księżyca zapisane są na karcie SD.
    A faza księżyca obliczana jest z jego wieku. Zajmuje się tym oczywiście atmega.

    Cóż wiem że dało by się to zrobić prościej. Sam ESP spokojnie uwinął by się ze wszystkim, ale chciałem wykorzystać części jakie miałem. Z drugiej strony chyba nie widziałem 3,5' wyświetlacza który by współpracował z ESP no i nie wiem czy nie brakło by mu pinów.

    Zasilanie 5V. Pobór prądu przy maksymalnej jasności podświetlania 480mA.

    Obudowę wykonałem z laminatu. Poszczególne jej elementy zostały zaprojektowane w Eaglu i wykonane jak zwykłe pcb. Łączenie poszczególnych elementów poprzez lutowanie. Tylna część mocowana śrubkami. Muszę ją jedynie prysnąć jakimś lakierem aby mi się miedź nie utleniła ale teraz nie mam do tego warunków.


    Przy komentowaniu programów szczególnie tego w Bascomie proszę uwzględnić że nigdy żadnego języka programowania się nie uczyłem i jest to napisane jak jest. Ten do ESP jest prostszy a więc i mniej przeze mnie spaprany.

    Źródła programu dla atmegi będą w załączniku.

    Program dla ESP8266:
    Kod: c
    Zaloguj się, aby zobaczyć kod



    Stacja działa od kilku tygodni i nie zawiesza się. Jedyny mankament jaki zauważyłem to czasami po starcie zasilania Atmega "nie widzi" karty SD. Jest to sygnalizowane komunikatem na wyświetlaczu. Pomaga reset bądź ponowne włączenie zasilania. Związane jest to zapewne z przetaktowaniem.

    Wiem że sam czujnik już prezentowałem w dziale diy ale wtedy był on samodzielnym urządzeniem a teraz stał się częścią całości stacji meteo.

    Jeśli o czymś zapomniałem zapomniałem Piszcie, pytajcie.

    I coś dla oka.

    Stacja meteo Wi-Fi. Bascom i Arduino.

    Stacja meteo Wi-Fi. Bascom i Arduino.

    Stacja meteo Wi-Fi. Bascom i Arduino.

    Stacja meteo Wi-Fi. Bascom i Arduino.

    Stacja meteo Wi-Fi. Bascom i Arduino.

    Stacja meteo Wi-Fi. Bascom i Arduino.


    Stacja meteo Wi-Fi. Bascom i Arduino.


    Stacja meteo Wi-Fi. Bascom i Arduino.


    Fajne!
  • #2 14 Lis 2017 20:37
    fotomh-s
    Poziom 16  

    Do tych OLEDów także są procedury lub biblioteki lub jakikolwiek dostępny kod w Bascomie?
    Pytam bo są one dosyć tanie jak na wyświetlacze graficzne, jednak pisanie własnych procedur tylko po to aby wyświetlić stringa to lekka przesada, a zastanawiam się nad sprawieniem sobie takiego modułu OLED. Ponadto w tej samej cenie są wersje dwukolorowe (yellow-blue). Ceny tych modułów to chyba koło 20zł, albo nawet mniej.

  • #3 14 Lis 2017 21:19
    gdL
    Poziom 27  

    Pozdrawiam serdecznie miłośnika Meteo na elektrodzie. Bardzo fajny projekt. Czy planujesz jego dalszy rozwój?
    Co do kodu to od pewnego czasu ja osobiście staram się stosować klasy. Mnie to pomaga wszystko logicznie poukładać i wrócić do projektu bezboleśnie nawet po dłuższym czasie.
    Oczywiście masz mój głos.

  • #4 14 Lis 2017 23:11
    R-MIK
    Poziom 37  

    fotomh-s napisał:
    Do tych OLEDów także są procedury lub biblioteki lub jakikolwiek dostępny kod w Bascomie?

    Napisałem w C, na podstawie kodu na Arduino (C++). Łatwo to przepisać na Bascom, wiele tego nie ma. Jak sa zainteresowani, mogę udostępnić.
    Swoją drogą, ze jeszcze nie pojawił sie konwerter C -> Bascom? Ciekawe jakie byłoby zainteresowanie takim programem.

    fotomh-s napisał:

    Ceny tych modułów to chyba koło 20zł, albo nawet mniej.

    Kupowałem w KAMAMI za 18zł.

  • #5 15 Lis 2017 10:13
    macka2
    Poziom 2  

    Zwykle, więszkość małych czujniczków, ekraników itp. kupuję bezpośrednio od Chińczyka na eBayu.
    Ostatnio za czujniki BH1750 i BME280 razem zapłaciłem ok.20zł, a małe wyświetlacze OLED kupiłem za niecałe 3$ sztuka. Oczywiście trzeba trochę poczekać aż nasza poczta je dostarczy, bo zwykle najdłużej zajmuje trasa urząd celny->poczta polska->klient :/ Trasa z Chin do Polski często zajmuje mniej niż dostarczenie jej dalej przez pocztę.

    PS. Gdzie dostałeś takie ładne przeźroczyste, wodoszczelne pudełko? Masz jakiegoś linka? Czy może sam robiłeś?

  • #6 15 Lis 2017 11:04
    pier
    Poziom 23  

    macka2 napisał:

    PS. Gdzie dostałeś takie ładne przeźroczyste, wodoszczelne pudełko? Masz jakiegoś linka? Czy może sam robiłeś?

    Obudowa firmy Gainta z TME.

  • #7 15 Lis 2017 23:20
    Jacek Rutkowski
    Poziom 22  

    fotomh-s napisał:
    Do tych OLEDów także są procedury lub biblioteki lub jakikolwiek dostępny kod w Bascomie?
    Pytam bo są one dosyć tanie jak na wyświetlacze graficzne, jednak pisanie własnych procedur tylko po to aby wyświetlić stringa to lekka przesada, a zastanawiam się nad sprawieniem sobie takiego modułu OLED. Ponadto w tej samej cenie są wersje dwukolorowe (yellow-blue). Ceny tych modułów to chyba koło 20zł, albo nawet mniej.

    Dwukolorowść polega na tym że góra ok 16 wierszy jest żółta a reszta niebieska itp. Nie widziałem jeszcze OLED z SSD1306 aby zmieniał kolory...
    Jeśli jesteś zainteresowany mam przykład obsługi SSD1306 po I2C pod BASCOM AVR.

  • #8 16 Lis 2017 01:50
    R-MIK
    Poziom 37  

    Jacek Rutkowski napisał:
    Nie widziałem jeszcze OLED z SSD1306 aby zmieniał kolory

    Jak pamietam, SSD1306 może obsłużyć max 128x64 piksele mono.

  • #9 16 Lis 2017 06:54
    Jacek Rutkowski
    Poziom 22  

    R-MIK napisał:
    Jacek Rutkowski napisał:
    Nie widziałem jeszcze OLED z SSD1306 aby zmieniał kolory

    Jak pamietam, SSD1306 może obsłużyć max 128x64 piksele mono.

    Dokładnie tak a wyświetlacze dwu kolorowe maja po prostu część wyświetlacza np. żółtego reszta niebieska.

  • #10 17 Lis 2017 21:23
    krisRaba
    Poziom 23  

    pier napisał:
    Jedyny mankament jaki zauważyłem to czasami po starcie zasilania Atmega "nie widzi" karty SD.

    Nie dałeś schematu stacji, więc nie można sprawdzić - czy masz rezystory polaryzujące poszczególne linie przy karcie SD? Kiedyś miałem problem, że co któryś raz karta się nie inicjowała poprawnie przy załączaniu urządzenia. Na karcie jest procedura wyboru sposobu komunikacji. Jeśli nie masz osobnego sterowania jej zasilaniem, to ewentualne stany nieustalone występujące zanim wstanie MCU mogą namieszać i po SPI już się nie dogadasz. W moim przypadku pomogła polaryzacja linii rezystorami podciągającymi. Od tamtego czasu jak ręką odjął :)

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME