Rozpoczęcie projektu: od pomysłu do pierwszych testów
Wszystko zaczęło się od pomysłu, by stworzyć system monitorowania mikroklimatu w miejskich szklarniach, które zyskały popularność jako alternatywa dla tradycyjnych upraw. Chciałem mieć pełną kontrolę nad warunkami – od wilgotności i temperatury, po poziom dwutlenku węgla. Wybór padł na Raspberry Pi, bo to urządzenie jest nie tylko relatywnie tanie, ale też daje szerokie możliwości rozbudowy. Od początku wiedziałem, że potrzebuję czegoś, co będzie działało stabilnie i pozwoli mi na zbieranie danych w czasie rzeczywistym.
Po przemyśleniu decyzji, zacząłem od wyboru czujników. Wiedziałem, że dokładność i odporność na warunki atmosferyczne to kluczowe kwestie. Ostatecznie zdecydowałem się na czujniki wilgotności i temperatury DHT22, które są popularne, łatwe w obsłudze i dobrze znane w społeczności makerów. Do pomiaru CO2 wybrałem czujnik MH-Z19, który nie tylko jest precyzyjny, ale też ma interfejs UART, co ułatwia integrację z mikrokontrolerami.
Projektowanie architektury systemu
Chciałem, aby system był modularny i łatwy do rozbudowy. W głównym serwerze, opartym na Raspberry Pi, miał działać mikroserwer, który zbierał dane z czujników, przetwarzał je i przesyłał do chmury lub lokalnej bazy danych. Do komunikacji z czujnikami wykorzystałem interfejs GPIO i UART, a do przesyłania danych sieć Wi-Fi. Podczas planowania architektury zdecydowałem się na REST API, które umożliwi mi łatwe odpytywanie i monitorowanie stanu mikroklimatu z dowolnego urządzenia.
Ważnym aspektem była też kwestia zasilania. Szklarnie często nie mają stałego dostępu do prądu, więc rozważałem zastosowanie zasilania bateryjnego lub paneli słonecznych. Ostatecznie zdecydowałem się na zasilanie z gniazdka, ale zamierzam w przyszłości podłączyć system do energii słonecznej, aby zwiększyć jego autonomię.
Implementacja: kodowanie i konfiguracja
Podczas kodowania postawiłem na Python, bo to język, który dobrze znam i który świetnie sprawdza się przy obsłudze czujników i komunikacji sieciowej. Napisałem moduł odczytujący dane z czujników DHT22 i MH-Z19, korzystając z bibliotek takich jak Adafruit_DHT i pySerial. Ważne było, aby odczyty były stabilne i nie generowały błędów nawet przy długotrwałej pracy.
W międzyczasie skonfigurowałem serwer Flask, który obsługiwał REST API. Dzięki temu mogłem odpytywać system w prosty sposób – wysyłałem zapytania GET i otrzymywałem aktualne wartości. Całość działała na Raspberry Pi, które miało dostęp do lokalnej sieci Wi-Fi, co ułatwiało monitorowanie i zarządzanie systemem.
Oprócz tego, aby zapewnić niezawodność, dodałem mechanizmy automatycznego ponownego odczytu danych w przypadku błędów komunikacji. Z czasem okazało się, że trzeba też zadbać o synchronizację czasu, więc postawiłem na NTP, aby pomiary miały poprawną stempel czasowy.
Testy w warunkach miejskich szklarniach
Kiedy system był już wstępnie skonfigurowany, postawiłem go w jednej z miejskich szklarni. Już od pierwszych dni pracy zauważyłem, że warunki w szklarni są bardziej zmienne, niż się spodziewałem. Silne nasłonecznienie, wiatr, a także różne poziomy wilgotności powietrza powodowały, że czujniki czasami odczytywały wartości, które wymagały korekty lub filtracji danych.
Wyzwanie stanowiło też utrzymanie stabilności połączenia Wi-Fi, które w niektórych miejscach szklarniach było niestabilne. Wprowadziłem więc dodatkowe mechanizmy automatycznego restartu modułów komunikacyjnych oraz zapis danych lokalnie na karcie SD, gdy połączenie się urywało. Takie rozwiązanie pozwoliło na nieprzerwaną pracę systemu i późniejsze synchronizacje.
Podczas testów okazało się, że konieczne jest kalibrację czujników. Na początku odczyty często się różniły od wartości referencyjnych, co wymagało dostosowania parametrów i czasami wymiany czujników. Jednak po kilku tygodniach system zaczął działać stabilnie, dostarczając precyzyjne dane, które można było wykorzystać do optymalizacji warunków w szklarni.
Wyzwania i rozwiązania techniczne
Największym wyzwaniem okazała się kwestia stabilności połączenia i precyzji odczytów. Czujniki, mimo że popularne, czasami dawały odchylenia, zwłaszcza przy wysokiej wilgotności czy dużej różnicy temperatur. Aby temu zaradzić, zastosowałem filtrowanie danych – średnie z kilku odczytów, a także kalibrację względem wartości referencyjnych.
Drugim problemem była konieczność optymalizacji kodu tak, by system działał efektywnie na Raspberry Pi, które nie jest sprzętem dedykowanym do długotrwałej pracy w środowisku przemysłowym. W tym celu korzystałem z lekkich bibliotek, minimalizowałem obciążenie procesora i regularnie monitorowałem stan systemu.
Trzecim aspektem była rozbudowa systemu – planuję dodanie funkcji automatycznego powiadamiania o nieprawidłowościach, co wymaga integracji z serwerami mailingowymi lub komunikatorami. Z tymi zadaniami poradziłem sobie, korzystając z prostych bibliotek Pythona i narzędzi automatyzacji.
Podsumowanie i dalsze plany
Stworzenie własnoręcznego mikroserwera do monitorowania mikroklimatów w miejskich szklarniach okazało się nie tylko satysfakcjonującym wyzwaniem, ale też cenną lekcją z zakresu elektroniki, programowania i inżynierii środowiskowej. System działa stabilnie, dostarcza precyzyjne dane i daje mi realny wgląd w warunki panujące w uprawach miejskich.
W przyszłości planuję rozbudować system o dodatkowe czujniki – na przykład pomiar poziomu światła czy jakości powietrza. Chciałbym też zintegrować go z automatycznym systemem nawadniania i wentylacji, co stworzyłoby w pełni autonomiczną i ekologicznie świadomą szklarnię miejską. Jeśli masz podobny projekt na myśli, nie bój się eksperymentować – czasem najprostsze rozwiązania okazują się najbardziej skuteczne. W końcu, własnoręcznie zbudowany system to nie tylko satysfakcja, ale i realna korzyść dla środowiska, w którym żyjemy.