Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Stacja meteo Wi-Fi, Bascom i Arduino

pier 14 Nov 2017 18:57 17850 11
Renex
  • 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:
    Code: c
    Log in, to see the code


    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 poprzez serial 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 poprzez serial.
    Bitmapy z ikonami pogody i faz księżyca zapisane są na karcie SD.
    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, więc i mniej przeze mnie spaprany.

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

    Program dla ESP8266:
    Code: c
    Log in, to see the code


    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, 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

    Cool? Ranking DIY
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
    About Author
    pier
    Level 24  
    Offline 
    Has specialization in: konstruktor cad
    pier wrote 2282 posts with rating 1766, helped 39 times. Live in city Biłgoraj. Been with us since 2006 year.
  • Renex
  • #2
    fotomh-s
    Level 24  
    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.
  • Renex
  • #3
    gdL
    Level 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
    Anonymous
    Anonymous  
  • #5
    macka2
    Level 10  
    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
    pier
    Level 24  
    macka2 wrote:
    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
    Jacek Rutkowski
    Level 27  
    fotomh-s wrote:
    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
    Anonymous
    Anonymous  
  • #10
    krisRaba
    Level 31  
    pier wrote:
    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 włą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ął :)
  • #11
    kalarepah
    Level 9  
    Czy czujnik BME280 w postaci modułu może być stosowany na zewnątrz?
    Czy nie ulegnie zbyt szybkiemu zniszczeniu?
    Czy dokładność i trwałość takiego czujnika jest podobna jak SHT11?
    Buduję podobną stację, ale planowałem użyć SHT11, a tu widzę, że BME280 można kupić w podobnej cenie, więc zastanawiam się jakie on ma wady.

    Moderated By Mirek Z.:

    Zabroniony link do aukcji usunąłem (oraz zbędne/niewłaściwe spacje przed znakami zapytania). https://www.elektroda.pl/rtvforum/faq.php - p.3.1.13, p.3.1.18.

  • #12
    skgroup12598
    Level 2  
    BME280 firmy Bosch to precyzyjny czujnik używany w niezliczonych zastosowaniach, od monitorowania pogody, przez sterowanie grami, po pomiar wysokości, gdzie wymagana jest dokładność zaledwie kilku stóp. Ten czujnik jest prosty w użyciu, jest wstępnie skalibrowany i nie wymaga żadnych dodatkowych komponentów, dzięki czemu można błyskawicznie rozpocząć pomiar wilgotności względnej, temperatury, ciśnienia barometrycznego i wysokości.

    Pomiar temperatury: BME280 może mierzyć temperatury w zakresie od -40°C do 85°C. W zakresie temperatur od 0 do 65°C dokładność wynosi ?1,0°C; poza tym zakresem dokładność spada do ?1,5°C.

    Pomiar wilgotności: BME280 może mierzyć wilgotność względną w zakresie od 0 do 100% z dokładnością ?3%.

    Pomiar ciśnienia: BME280 może mierzyć ciśnienie w zakresie od 300 Pa do 1100 hPa z absolutną dokładnością ?1 hPa.

    Obliczanie wysokości / wysokości: BME280 może mierzyć ciśnienie z taką precyzją (hałas na małej wysokości 0,25 m), że może być również używany jako wysokościomierz z dokładnością ? 1 metra.

    Przegląd sprzętu: BME280 IC
    Sercem modułu jest cyfrowy czujnik temperatury, wilgotności i ciśnienia nowej generacji firmy Bosch -- BME280. Jest następcą czujników takich jak BMP180, BMP085 i BMP183.