
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.

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

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

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

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

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








Cool? Ranking DIY