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 dalej

Zaszufladkowano do kategorii Inteligentny Dom | Otagowano , , , | Dodaj komentarz

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 dalej

Zaszufladkowano do kategorii Inteligentny Dom | Otagowano , , , | Dodaj komentarz

Ethernet Shield, czyli Arduino w Internecie

Ostatnio opisywałem mały router Edimaksa. Nie bez powodu. Zamierzam podłączyć Arduino do Internetu. Właściwie głównie do sieci lokalnej, ale z możliwością bezpośrednich zapytań „w świat”. Jak to zrobić? Przez Ethernet Shield – rozszerzenie nakładane na Arduino (kompatybilne zarówno z Uno jak i Mega).

Arduino z Ethernet Shield

Komunikuje się ono przez interfejs SPI, który w Arduino Uno wyprowadzony jest na wyjścia 11, 12 i 13, natomiast w Mega na 50, 51 i 52. I tu może pojawić się pytanie, w jaki sposób jest w takim razie, shield jest kompatybilny z obydwoma płytkami. Jest, bo używa pinów oznaczonych jako ICSP, które są połączone z właściwymi wyjściami konkretnego Arduino. Warto to wiedzieć, bo na rynku jest jeszcze kilka „wynalazków” bez złącza ICSP, które używają zwykłych wyjść i nie współpracują poprawnie z wersją Mega (można je zmusić, ale nie w sposób elegancki). Oficjalna wersja działa w każdym razie poprawnie w każdym przypadku.

Czytaj dalej

Zaszufladkowano do kategorii Inteligentny Dom | Otagowano , , , , | Dodaj komentarz

Edimax BR-6258n – router jak pudełko zapałek

Taki tani? Niestety jeszcze nie, ale taki mały. Zastanawiacie się, po co komu taki gadżet? Można go zabrać ze sobą w podróż, podłączyć w hotelu do sieci przewodowej i mieć wifi. Albo podłączyć do wifi i mieć sieć przewodową. Oczywiście, można, ale to trochę naciągane. Zastosowania jednak są a samo urządzenie ma kilka istotnych zalet.

Edimax BR-6258n wielkości pudełka zapałek Czytaj dalej

Zaszufladkowano do kategorii Komputery | Otagowano , , , | Dodaj komentarz

Czujnik zalania CZ 01

System nawadniania ogrodu powinien „wiedzieć”, kiedy pada deszcz. Gdy używałem karty przekaźnikowej (w wersji z cyfrowymi wejściami), to miałem do niej podłączony sensor opadów wykonany w oparciu o czujnik zalania CZ 01 firmy Sigma Projekt. Czujnik ten bardzo dobrze będzie współpracował z Arduino. Może nie jest to najprostsze możliwe rozwiązanie w przypadku niebieskiej płytki, ale do tej pory świetnie się sprawdzało i chcę je zachować.

Czujnik zalania CZ 01 Czytaj dalej

Zaszufladkowano do kategorii Majsterkowanie | Otagowano , , , , , | Dodaj komentarz

Kontaktron, czyli Arduino pilnuje drzwi

Przy okazji przenoszenia funkcjonalności systemu podlewania z karty przekaźnikowej do Arduino, muszę podłączyć także czujniki otwarcia drzwi. Opierają się one na kontaktronach. Co to takiego? To po prostu łącznik sterowany polem magnetycznym. A w zrozumiałych słowach, w popularnym wydaniu – tanie i proste urządzenie składające się z magnesu, montowanego zwykle na drzwiach i części wykrywającej pole, z której wychodzą dwa kabelki – montowanej na futrynie. Jak magnes jest w pobliżu kontaktronu (czyli zwykle gdy drzwi są zamknięte), to przewody są zwarte, gdy dalej – nie. Kontaktron działa więc na takiej samej zasadzie jak włącznik, przynamniej z punktu widzenia Arduino.

Kontaktron Czytaj dalej

Zaszufladkowano do kategorii Inteligentny Dom | Otagowano , , , | Dodaj komentarz

Moduł przekaźnikowy do Arduino

Dawno nie miałem okazji nic napisać, z powodu zupełnego braku czasu. Ponieważ jednak planuję w najbliższej przyszłości kilka zmian w moim ekosystemie inteligentnego domu, myślę, że wpisy będą się pojawiać częściej.

W pierwszej kolejności będę chciał przenieść mój system nawadniania ogrodu z karty przekaźnikowej na Arduino. Dlatego też zaopatrzyłem się w tanie moduły przekaźników, które z powodzeniem można wykorzystać z Arduino.

Moduły przekaźników dla Arduino Czytaj dalej

Zaszufladkowano do kategorii Inteligentny Dom | Otagowano , , , , | Dodaj komentarz

Mój pierwszy „shield” do Arduino

Arduino to bardzo fajna zabawka. Świetnie wspomaga naukę podstaw współczesnej elektroniki. W budowaniu własnych układów szczególnie pomocna jest płytka stykowa. Dzięki niej można szybko i wygodnie tworzyć prototypowe urządzenia bez lutowania. Wtykamy tylko kabelki i elementy na płytkę, podłączamy do Arduino i już działa. Bardzo dobrze testuje się w ten sposób działanie różnych elementów elektronicznych oraz sprawdza, czy wymyślone koncepcje układów będą działać.

Tylko, że płytka stykowa nijak nie daje się użyć przy gotowym układzie – elementy można z niej wyszarpnąć, całość zajmuje dużo miejsca, same wady. Oczywiście, można powiedzieć, że Arduino do tego nie służy, że na gotowo można zbudować własny układ na mikrokontrolerze. Ale nie trzeba, bo Arduino nadaje się do gotowego układu, o ile ma elegancką powłokę (shield). Tylko, że amatorsko ciężko taką zrobić – trzeba zaprojektować i przygotować (lub zamówić) płytkę drukowaną, a potem polutować elementy (co w porównaniu z przygotowaniem płytki jest banalne). Czy aby na pewno trzeba?

Czytaj dalej

Zaszufladkowano do kategorii Majsterkowanie | Otagowano , , , , | Dodaj komentarz

Arduino w służbie inteligentnego domu – koncepcja

Minęło już trochę czasu odkąd testuję Arduino Uno R3, więc pewnie pora zbudować koncepcję rozbudowy mojej niskobużetowej, amatorskiej instalacji inteligentnego domu, o której pisałem wcześniej. Chciałbym dołożyć dodatkowe funkcjonalności, a przy okazji pozbyć się jednej z kart przekaźnikowych na rzecz Arduino (skoro już jest, nie ma potrzeby mnożyć bytów). Nie chcę oczywiście odcinać się od routerów z OpenWRT i tego, co już osiągnąłem. Pora podsumować cały projekt, stan obecny i wizję przyszłości.

Stan obecny

Na początek małe podsumowanie (w skrócie) tego, jak system wygląda bez Arduino. Centralnym urządzeniem w środowisku automatyki domowej jest router TPlink TL-WR1043ND z zainstalowanym systemem OpenWRT. Dostarcza on Internet (sieć w ogólności) przewodowo do różnych punktów w domu i bezprzewodowo. Zlokalizowany jest w garażu, skąd rozchodzi się gwiaździście okablowanie do dużej części pomieszczeń w domu. Do routera podłączony jest dysk USB, który w przeszłości był źródłem dla odtwarzacza multimediów podłączonego do telewizora w salonie. W tej chwili z tej funkcji router został odciążony przez Iomega iConnect, stanowiący centrum składowania i serwowania danych. Do routera podłączona jest za to magistrala one-wire i kilkanaście termometrów w całym domu (w tym wiele w kotłowni do monitorowania kotła). Router gromadzi dane, rysuje wykresy i je udostępnia. Analizuje też temperatury z kotłowni i powiadamia smsem o różnych zdarzeniach, np. wygaśnięciu pieca. Router otwiera też bramę wjazdową, co opisywałem ostatnio i steruje ogrzewaniem (przełącza kocioł na ekogroszek w coś w rodzaju trybu bardzo oszczędnego).

Czytaj dalej

Zaszufladkowano do kategorii Inteligentny Dom | Otagowano , , , , , , , | Dodaj komentarz

Wielozadaniowość w Arduino?

Programowanie Arduino jest bardzo proste. Do takiego wniosku można dojść obserwując najprostsze przykłady programów. Spójrzmy chociażby na, prezentowany już wcześniej, program mrugający diodą podłączoną do wyjścia numer 13. Dla łatwiejszych dalszych rozważań został on jeszcze trochę uproszczony:

#define LED1 13

void setup() {                
  pinMode(LED1, OUTPUT); // ustawiamy pin 13 jako wyjście
}

int led1_state=0; // na początku zmienna będzie 0 (nie świeci)

void loop() {
  digitalWrite(LED1, led1_state); // ustawiamy stan wyjścia diody zgodnie 
                                  // z wartością zmiennej led1_state: 
                                  // 1 - świeci, 0 - nie
  delay(1000);             // czekamy sekundę
  led1_state=1-led1_state; // zmieniamy stan z 0 na 1 lub z 1 na 0
}

Nie ma w nim oczywiście nic wyszukanego – co sekundę zmieniamy stan wyjścia, a co za tym idzie diody świecącej. Przypominam, że 13 została wybrana nieprzypadkowo, ponieważ do tego wyjścia podłączona jest na stałe dioda znajdująca się na płytce Arduino.

Czytaj dalej

Zaszufladkowano do kategorii Programowanie | Otagowano , | Dodaj komentarz