Opiszę tutaj budowę elektronicznej konewki - mojego pierwszego projektu, w którym
postanowiłem skorzystać z innej niż Arduino Uno R3 płytki z mikrokontrolerem ATmega.
I pierwszego, w którym zrezygnowałem z płytki stykowej i zacząłem lutować.
Układ korzystając z podłączonego czujnika sprawdza poziom wilgotności w doniczce i jeśli jest on niewystarczający uruchamia na trzy sekundę pompę, która podlewa roślinkę. Jeśli roślinka nie wymaga podlewania konewka przy pomocy sygnalizacji dźwiękowej informuje o przeprowadzonej inspekcji wilgotności i zasypia na kolejne 24 godziny. Dodatkowo układ wyposażony został w przycisk resetu czasu podlewania, który pozwala na zmianę pory uruchamiania cyklu nawadniania i ręczne uruchomienie pompy.
Dlaczego nie Uno? Powody są dwa i oba oczywiste:
- duże rozmiary płytki
- wysoka cena Arduino Uno R3 (nawet jeśli tylko klona)
Po rozpatrzeniu możliwych wariantów zdecydowałem zbudować mój projekt z wykorzystaniem Arduino Pro Mini, które jest względnie tanie, małe i zgodne z Arduino Uno R3.
Do załadowania program do Arduino Pro Mini wykorzystałem konwerter PL2303TA z wyjściem USB - UART/RS232. W tym celu podłączyłem wyprowadzenia konwertera do złącza programowania Arduino Pro Mini:
- czerwone - VCC;
- czarne - GND;
- zielone - RXI;
- białe - TX0.
Aby ładowanie programu mogło zakończyć się sukcesem, po skompilowaniu programu i wyświetleniu przez Arduino IDE komunikatu o rozpoczęciu wgrywania należy wcisnąć na chwilę przycisk Reset na płytce Arduino Pro Mini.
Elementy układu:
- 1 x Arduino Pro Mini 5V/16MHz
- 1 x płytka prototypowa 5 x 7
- 1 x mini pompa do wody 3V/5V DC, 3W
- 1 x czujnik wilgotności gleby FC-28
- 1 x stabilizator napięcia LM7805CV
- 2 x kondensatory ceramiczne 100nF
- 1 x tranzystor MOSFET IRL540N
- 1 x opornik 10kΩ
- 1 x tact switch
- 1 x buzzer bez generatora
- 2 x złącze ARK dwupinowe
- 1 z złącze szpilkowe dwupinowe
Realizacja:
Stabilizacja napięcia. Podstawowym problemem w przypadku projektu wykorzystującego pompę (a konkretnie silnik, który ją napędza), jest zabezpieczenie Arduino przed skutkami wysokiego poboru prądu i wahaniami napięcia wynikającego z załączania i wyłączania silnika. Co prawda Arduino posiada wbudowany stabilizator napięcia jednak jego możliwości są ograniczone i bezpieczniej jest wykorzystać zewnętrzny stabilizator. Ja zdecydowałem się na układ LM7805CV, który zapewnia stabilizację napięcia dostarczanego do Arduino na poziomie 5V przy maksymalnym prądzie 1,5A. Napięcie zasilania powinno zawierać się w zakresie od 7 do 25V. Dla zabezpieczenia przed ewentualnymi zakłóceniami, między masą a złączami Vin oraz Vout stabilizatora umieszcza się kondensatory ceramiczne 100nF.
Sterowanie pompą. Pompa wykorzystywana w projekcie wymaga większego prądu niż ten, który jest w stanie dostarczyć Arduino (czyli maksymalnie 40mA na pin). Podłączona zostanie więc bezpośrednio do zewnętrznego źródła zasilania a sterowanie jego załączaniem i wyłączaniem będzie realizowane przez Arduino z MOSFETEM IRL540N w roli przełącznika. W tym celu Bramkę tranzystora łączę z Arduino (do niej kierowany będzie sygnał sterujący z pinu 8 mikrokontrolera), Dren łączę z masą pompy a Źródło z masą mikrokontrolera. Między Bramkę a Źródło wpinam rezystor sprzęgający, co zapewni występowanie na Bramce stanu niskiego zawsze, kiedy Arduino nie wysyła na nią stanu wysokiego. Masy źródła zasilania pompy i Arduino muszą być ze sobą połączone. Kiedy Arduino poda stan wysoki na Bramkę, tranzystor zaczyna przewodzić prąd zasilający pompę (jej plus podłączony jest bezpośrednio pod źródło zasilania).

Podłączenie czujnika wilgotności. Czujnik wilgotności gleby FC-28 posiada cztery złącza:
- GND łączę z masą układu;
- VCC podłączam do pinu 11 Arduino;
- złącze analogowe A0 podłączam do pinu A0 mikrokontrolera;
- wyjście cyfrowe D0 pozostawiam niepodłączone (sterowanie wilgotnością chcę regulować z mikrokontrolera w zależności od odczytanego poziomu sygnału analogowego a nie cyfrowo poprzez regulację potencjometru wbudowanego w czujnik).
Komentarza wymaga podłączenie zasilania czujnika (VCC) do pinu 11 zamiast do pinu 5V Arduino. Dzięki takiemu podejściu napięcie na czujniku nie jest utrzymywane przez cały czas a podawane tylko zgodnie z cyklem monitorowania wilgotności (który został ustawiony na 24 godziny). Nie tylko pozwala to na zaoszczędzenie energii ale również opóźnia proces starzenia się czujnika.
Wyposażenie opcjonalne. Dla zapewnienia większej kontroli nad systemem nawadniającym dodałem jeszcze tact switch (podłączony do pinu 10 Arduino), którego wciśnięcie powoduje reset zegara cyklu monitorowania i uruchomienie pierwszego podlewania. Długość cyklu ustawiona na 24 godziny i czasu podlewania ustawionego na 3 sekundy nie ulega zmianie - te dwie zmienne wydają mi się optymalnie dobrane do potrzeb życiowych roślinki. Po wypełnieniu się cyklu Arduino podaje napięcie na czujnik, dokonuje pomiaru wilgotności i w razie potrzeby uruchamia pompę podlewającą roślinkę. Jeżeli wilgotność jest wystarczająco wysoka i nie ma potrzeby podlewania uruchamiany jest buzzer (podłączony do portu 9), który sygnalizuje że nawadnianie tym razem jest zbędne. Buzzer wykorzystany jest także do sygnalizacji skorzystania z tact switcha.
Całość zlutowałem na płytce prototypowej 5x7cm zamontowanej w estetycznym półprzezroczystym pojemniku (pierwotnie przeznaczonym do celów spożywczych). Do płytki przylutowałem jeszcze dwa dwupinowe złącza ARK (jedno do podłączenia pompy a drugie do połączenia płytki z gniazdem do obudowy) oraz złącze szpilkowe do połączenia z zamontowanym na obudowie tact switchem. Arduino Pro Mini zostało podłączone z płytką za pośrednictwem wtyków kołkowych (to one a nie mikrokontroler są do niej przylutowane) co umożliwia w razie potrzeby łatwy demontaż.
Sketch Arduino:
Pliki do pobrania: Tutaj.