Programowanie Arduino, czyli nauka podlewania

Mamy już gotową część sprzętową systemu nawadniania i wiemy jak będzie się komunikować z systemem narzędnym działającym na bazie OpenWRT. Pora zabrać się za oprogramowanie. Przygotowując je należy pamiętać, że posłuży ono za podstawę budowy kolejnych elementów inteligentranego domu (lub jak kto woli, automatyki domowej). Poza tym system podlewania także ma dodatkowe funkcje, co trzeba przewidzieć.

Podsumujmy, co jest do zrobienia:

  1. Obsługa Ethernet Shield
  2. Klient www na potrzeby zgłaszania zdarzeń do systemu nadrzędnego (mastera)
  3. Obsługa serwera www – do przyjmowania komunikatów
  4. Sterowanie czterema przekaźnikami (dwa do podlewania, dwa na razie wolne)
  5. Pilnowanie zmian czterech wejść (dwa kontaktrony na drzwiach i dwa czujniki zalania)
  6. Realizacja różnych faz podlewania ogrodu

Czytaj więcej

Reklamy

Komunikacja urządzeń inteligentnego domu – Arduino i OpenWRT

Zgodnie z koncepcją, przygotowałem część sprzętową mojego systemu odpowiedzielnego za podlewanie ogródka i parę innych rzeczy. Obiecałem, że wkrótce napiszę, jak to wszystko oprogramować. Wcześniej jednak należałoby zaprojektować komunikację różnych elementów systemu – nie tylko części odpowiedzialnej za podlewanie, ale urządzeń związanych z automatyką domową w szczególności.

Jak już wiecie z koncepcji systemu, „mózgiem” będą routery (jeden główny, drugi zapasowy) z oprogramowaniem w php. Oczywiście nie muszą to być routery – w szczególności mogą to być serwery, komputery, cienkie klienty lub inne urządzenia, na których można uruchomić Linuksa. Router (z zainstalowym OpenWRT) jest o tyle dobrym wyborem, że jest energooszczędny a dodatkowo i tak działa cały czas pełniąc inne funkcje.

Czytaj więcej

System nawadniania z Arduino – realizacja

Opisywałem ostatnio, jaka jest koncepcja przeniesienia mojego niewielkiego systemu nawadniania na nową platformę – Arduino. Mamy więc zebrane informacje, jaka będzie architektura i jakie elementy zostaną użyte. Co więcej, wszystko poza Arduino z osprzętem jest już gotowe. Pora więc zabrać się za montowanie całości i łączenie kabelków.

Ponieważ trudno zaakceptować wtykanie poszczególnych przewodów do złącz Arduino, więc najwygodniej jest zastosować moduł prototypowy And Proto Shield, który chwaliłem już wcześniej. Mimo, że na płytce nie będzie żadnych dodatkowych układów, to nawet dla pewnego umieszczenia przewodów we właściwych wejściach Arduino Uno, warto zastosować taki moduł. Docenia się to już po pierwszej konieczności odłączenia przewodów od Arduino i ponownego ich podłączenia.

Arduino - system podlewania

Czytaj więcej

Koncepcja nowego systemu nawadniania ogródka

Gdy dwa lata temu tworzyłem poprzedni system podlewania ogródka, który opisałem gościnnie na Nibyblogu, wiedziałem, że musi być sterowany „przez Internet”, z możliwością autonomicznego działania. Nie znałem jeszcze wtedy Arduino, a rozwiązanie zostało oparte o kartę przekaźnikową podłączoną przez USB do routera. Nie powiem, żeby źle działało, ale pora w zabawie pójść dalej. Pretekstem ku temu jest chęć rozbudowy mojego systemu inteligentnego domu z użyciem Arduino. System podlewania ma być swego rodzaju poligonem doświadczalnym – na nim będę testował stabilność rozwiązania i tworzył pierwsze wersje oprogramowania, którego kawałki potem użyję potem w głównym module.

Nadal zakładam, że nadrzędnym elementem w systemie będzie router z OpenWRT z oprogramowaniem głównie w php. Arduino za to będzie posiadać większą autonomię. Nie będzie, jak karta przekaźnikowa, dostawać prostych poleceń – włącz, wyłącz, przełącz, tylko bardziej złożone, w rodzaju – podlewaj trawę przez 20 minut a pozostałe przez 15. Arduino będzie wykonywać te polecenia i raportować do routera. Co na tym zyskuję? Jeżeli podczas podlewania zawiesi się router, wystąpią problemy z programem w php (np. padnie system plików, pendrive albo hub usb), to czynność zostanie dokończona, a przede wszystkim zatrzymana zgodnie z planem. Jeżeli natomiast popsułoby się Arduino, to router mnie o tym poinformuje i będę miał szansę interweniować.

Co więcej, zyskuję możliwość wprowadzenia, przynajmniej częściowej, odporności na awarię głównego routera sterującego. W przypadku gdy przestanie on działać lub program sterujący nie będzie odpowiadać, chciałbym, żeby jego funkcję przejęło inne urządzenie. Wszak w domu są 3 routery z OpenWRT, więc możliwości jest sporo i zakładam, że przynajmniej część funkcji mogą realizować wymiennie. Co prawda innym założeniem jest, że system nie ma być używany do zastosowań „krytycznych”, czyli takich, których niewykonanie lub złe wykonanie mogłoby czymś poważnym zgrażać, ale czemu ma wyschnąć trawnik przez awarię routera, gdy można się przed tym zabezpieczyć? Będzie więc mój system podlewania pracował w „klastrze niezawodnościowym”… A co? Trzeba mieć fantazję. Oczywiście nie zabezpieczy to przed awarią Arduino, ale o tym zostałbym powiadomiony.

Czytaj więcej