By chałupa była fifna



Podobne dokumenty
SCL > Pin 21 SDA > Pin 20 VCC > 5V GND > GND

LABORATORIUM - ELEKTRONIKI Układy mikroprocesorowe cz.2

Język C. Wykład 9: Mikrokontrolery cz.2. Łukasz Gaweł Chemia C pokój 307

Uczeń/Uczennica po zestawieniu połączeń zgłasza nauczycielowi gotowość do sprawdzenia układu i wszystkich połączeń.

Prosty system alarmowy z Arduino

Commander

Immobilizer samochodowy otwierający dostęp poprzez kod czteroznakowy.

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

UNO R3 Starter Kit do nauki programowania mikroprocesorów AVR

Instrukcja dla: Icomsat v1.0 SIM900 GSM/GPRS shield for Arduino oraz dla GPRS Shield produkcji Seeedstudio.

Pilot RF 4-kanałowy + odbiornik XY-DJM-5V umożliwia zdalne sterowanie do czterech urządzeń. Nadajnik pilot MX804. Odbiornik XY-DJM.

Rafał Staszewski Maciej Trzebiński, Dominik Derendarz

Przyrząd do grania bluesa Projekt zaliczeniowy z przedmiotu Programowanie Mikrokontrolerów

Notatka lekcja_#3_1; na podstawie W.Kapica 2017 Strona 1

Arduino jako wyłącznik z opóźnieniem

Klawiatura matrycowa

dokument DOK wersja 1.0

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Spis treści. 1. Rozdział Rozdział Rozdział Rozdział Koniec spisu treści -

BEZPRZEWODOWY VIDEODOMOFON XT GHz Cyfrowa transmisja

PROJECT OF FM TUNER WITH GESTURE CONTROL PROJEKT TUNERA FM STEROWANEGO GESTAMI

Uwaga: dioda na wyjściu 13 świeci gdy na wyjście podamy 0.

Kamera. Nr produktu

Systemy Wbudowane. Arduino - rozszerzanie. Podłączanie wyświetlacza LCD. Podłączanie wyświetlacza LCD. Podłączanie wyświetlacza LCD

INSTRUKCJA OBSŁUGI. Przekaźnik czasowy ETM ELEKTROTECH Dzierżoniów. 1. Zastosowanie

PROGRAMOWALNA CZUJKA TEMPERATURY td-1_pl 01/13

ze względu na jego zaokrąglony kształt musimy go umieścić w innych bloczkach np. ze zmienną: lub jeśli chcemy sprawdzić jaki właśnie znak odczytujemy:

Centrala alarmowa ALOCK-1

Instrukcja obsługi. Zamek szyfrowy ATLO-KRM. Dane techniczne oraz treść poniższej instrukcji mogą ulec zmianie bez uprzedzenia.

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Sygnały, czyli pogadajmy z Arduino

INSTRUKCJA INSTALACJI DARWIN 02/04/06/08 bariera podczerwieni

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

Pilot. Instrukcja instalacji

Instrukcja obsługi. Zamek szyfrowy ATLO-RM (wersja bez klawiatury) Dane techniczne oraz treść poniższej instrukcji mogą ulec zmianie bez uprzedzenia.

DWUKIERUNKOWY REGULATOR SILNIKA DC VDC 20A

Zespół Szkół Technicznych w Skarżysku - Kamiennej. Projekt budowy Zasilacza regulowanego. Opracował: Krzysztof Gałka kl. 2Te

Instrukcja obsługi. Zamek szyfrowy ATLO-KRM. Dane techniczne oraz treść poniższej instrukcji mogą ulec zmianie bez uprzedzenia.

TERMOSTAT Z WYŚWIETLACZEM LED - 50,0 do +125,0 C

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

INSTRUKCJA OBSŁUGI. Zegar ścienny szpiegowski z kamerą HD OctaCam (PX3788)

Spis treści. Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Krótki kurs montażu płyteczki do SM48 H0.

Elpro 10 PLUS PROGRAMATOR ELEKTRONICZNY DO BRAM PRZESUWNYCH. Elektrozamek i oświetlenie dodatkowe do 2 do 255s. FUNKCJA FURTKI do 3 do 30s

MIKROPROCESOROWY ODSTRASZACZ DŹWIĘKOWY V2.0

INSTRUKCJA OBSŁUGI IMMOBILIZERA TRANSPONDEROWEGO

Odbiornik Systemu Radiowego RXI4N8

Laboratorium Elektrycznych Systemów Inteligentnych

Laboratorium Analogowych Układów Elektronicznych Laboratorium 4

Kurs Arduino dla początkujących - Michał Jaworski str. 1. Lekcja 5

INSTRUKCJA INSTALACJI SPN-IR INSTRUKCJA INSTALACJI I OBSŁUGI. Sterownik Pracy Naprzemiennej SPN-IR

Zestaw przedłużacza, 4K HDMI HDBaseT, 70 m

Zestaw przedłużacza, 4K HDMI HDBaseT, 100 m

3. Wyświetlacz LCD. 4. Przycisk [TIME]

GAMMA_X_1Cw. 1. Dane techniczne. 2. Opis urządzenia Sterowanie: możliwość sterowania 1 napędem. 2. Pamięć: do 20 nadajników

Stacja pogodowa WS 9130IT Nr art.:

Instrukcja. Silnik Portos DELUX- R

ODBIORNIK JEDNOKANAŁOWY GAMMA X

POLITECHNIKA WROCŁAWSKA WYDZIAŁ ELEKTRYCZNY KATEDRA ENERGOELEKTRYKI LABORATORIUM INTELIGENTNYCH INSTALACJI ELEKTRYCZNYCH

Elpro 10 PLUS PROGRAMATOR ELEKTRONICZNY DO BRAM PRZESUWNYCH. F6=630mA 24V Elektrozamek i oświetlenie dodatkowe do 2 do 255s

INSTRUKCJA OBSŁUGI K3-3. Czytnik kart i zamek kodowy z kontrolerem dostępu i interfejsem Wiegand. Copyright Domster T. Szydłowski

Drivery LED PWM oraz prosty sterownik Świt Zmierzch oparty na Arduino

Inteligentna automatyka budynkowa

AKTUATOR DO SYSTEMU DUO Q

Zestaw 20 Przywoływaczy Klienta Classic Instrukcja Obsługi

MONITOR SMILE VDS BASIC. comodín (przycisk uniwersalny)

Podstawy elektroniki: praktyka

EV Termostat cyfrowy do urządzeń chłodniczych

Multi-CZUJNIK 68. Programowany Multi-CZUJNIK zawierający czujnik. położenia, uderzenia i spadku napięcia.

Wyłącznik czasowy GAO EMT757

LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2

LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program

Spis treści. Opis urządzenia. Pierwsze użycie

REER ELECTRONICS. BEZPRZEWODOWY VIDEODOMOFON XT GHz Cyfrowa transmisja. Spis treści

INSTRUKCJA MONTAŻU I OBSŁUGI PRZENOŚNEGO PANELU KONTROLUJĄCEGO

Zmierzyć się z żywiołami, czyli jak zbudować własną stację badawczą! Zaczynamy! Pole komunikatów programu. Nawigacja w programie Arduino

ZAPRASZAMY NA NASZE AUKCJE SCIGANY81 (c) Copyright

Kurs Arduino #2 podstawy programowania, porty I/O. 2 //Zawartość programu. 1 int main() { void setup() { //Instrukcje, które wykonają się jeden raz

Stair Lighting Driver. Sterownik oświetlenia schodowego Instrukcja użytkowania

Instruktaż konfiguracji

Systemy Wbudowane. Arduino C. Arduino C - stałe. Arduino C - Stałe. Arduino C - Stałe. Funkcje matematyczne. Arduino C - Stałe

EDO-uP nowoczesny mikroprocesorowy ściemniacz oświetlenia wnętrza auta.

PROGRAMATOR ELEKTRONICZNY DO BRAM PRZESUWNYCH 2-SKRZYDŁOWYCH

Zamki szyfrowe ZS40 / ZS41 / ZS42 / ZS43

INSTRUKCJA OBSŁUGI. Pilot zdalnego sterowania klimatyzatorów MSH- xx HRN1

Higrometr Testo 623, %RH, -10 do +60 C

Pomiar odległości z Arduino czujniki, schematy, przykładowe kody

Touch button module. Moduł przycisku dotykowy z podświetleniem LED

Schemat blokowy architektury AVR

Kontrola dostępu. Instrukcja obsługi szyfratora KS-01. RoHS

WAKEBOX BT MT3148. Instrukcja obsługi

Przełącznik KVM USB. Przełącznik KVM USB z obsługą sygnału audio i 2 portami. Przełącznik KVM USB z obsługą sygnału audio i 4 portami

BEZPRZEWODOWY DOM. bezprzewodowa kontrola urządzeń i oświetlenia

INSTRUKCJA OBSŁUGI. Automatyczny Stabilizator Napięcia AVR-1000, AVR-2000, AVR-3000, AVR-5000

Instrukcja ST-226/ST-288

Instrukcja obsługi programowalnego zegara cyfrowego

Termostat cyfrowy do stacjonarnych urządzeń chłodniczych z funkcją oszczędzania energii

Instrukcja do oprogramowania ENAP DEC-1

PROGRAMOWANIE PWM. Porty, które mogą być zamienione na PWM w każdym module RaT16 to port 3,4,5,6

EKSPANDER NA SZYNĘ DIN int-iors_pl 10/14

Transkrypt:

E-Szkoła Wielkopolska Zespół Szkół Ogólnokształcących w Wolsztynie Grupa projektowa: Smart House czyli fifna chałupa za mało bejmów pod opieką mgr inż. Marcina Klessy By chałupa była fifna PORADNIK MAJSTERKOWICZA Wolsztyn 2014

Spis treści Od autora...3 Wstęp...4 Rozdział 1. Warsztat...5 Podrozdział 1.1. Narzędzia ręczne...5 Podrozdział 1.2. Elektronarzędzia...6 Podrozdział 1.3. Narzędzia do lutowania...7 Podrozdział 1.4. Podzespoły elektroniczne...9 Podrozdział 1.5. Miejsce pracy...10 Podrozdział 1.6. Oprogramowanie i sprzęt komputerowy...11 Rozdział 2. Dla początkujących...12 Podrozdział 2.1. Dzwonek domowy...12 Podrozdział 2.2. PARKTRONIC - czujnik parkowania...14 Podrozdział 2.3. Jak wysłać sms'a z arduino...17 Rozdział 3. Dla zaawansowanych...20 Podrozdział 3.1. Sterowanie oświetleniem domowym...20 Podrozdział 3.2. Oświetlenie schodowe...25 Podrozdział 3.3. Automatyczne rolety...28 Podrozdział 3.4. Alarm ppoż z wysyłaniem powiadomienia...33 Podrozdział 3.5. Jak zrobić sterowanie systemem grzejąco- chłodzącym...36 Rozdział 4. Zegar jako elektroniczny woźny...44 Podsumowanie...59-2-

Od autora Niniejsze opracowanie jest efektem pracy w ramach projektu E-szkoła wielkopolska grupy o wdzięcznej nazwie Smart House czyli fifna chałupa za mało bejmów. Stanowi kompendium wiedzy z zakresu działań projektowych związanych z tematyką szeroko pojętej automatyki użytkowej rozumianej w aspekcie wykorzystania jej w automatyzacji domów i mieszkań. Należy mieć na uwadze charakter pracy oraz wiek, zaawansowanie naukowe jej twórców i nie traktować jako studium naukowego, lecz jako inspiracje i poradnik ułatwiający wykonanie podobnych systemów na własny użytek. Wszystkie zamieszczone informacje są na wolnej licencji i można z nich korzystać do woli. Autor nie ponosi odpowiedzialności za szkody związane z wadliwym działaniem układów i wynikających z tego problemu. Niemniej życzy miłej zabawy! :-) Grupa projektowa Smart House czyli Fifna1 Chałupa2 za mało bejmów3 Damian Bandel, Julia Bernakiewicz, Mateusz Błoszyk, Łukasz Franek, Kamil Górny, Michalina Hallmann, Katarzyna Kalitka, Patryk Kasprowiak, Katarzyna Kozioł, Daniel Kromski, Bartosz Skrzypczak, Filip Szyjakowski Opiekun mgr inż. Marcin Klessa 1 2 3 fifny [gwara poznańska] - sprytny chałupa [gwara poznańska] - dom bejmy [gwara poznańska] - pieniądze -3-

Wstęp Od zarania dziejów ludzkość ułatwia sobie życie zaprzęgając coraz to nowsze narzędzia i technologie by pracowały, bawiły i ułatwiały życie. Najprawdopodobniej ten proces się nie zatrzyma i będziemy światkami galopującej technokracji życia. Nasze otoczenie będzie coraz bardziej zautomatyzowane, nie będzie działało bez zasilania i internetu. Nie inaczej dzieje się w przypadku biur, mieszkań i domów. Już od dawna nikt nie wstaje do telewizora, by przełączyć kanał a wielu nie musi wstawać z fotela by zmienić oświetlenie, czy zaparzyć kawę. Coraz częstsze są przypadki montowania systemów Smart House, Home Center, czy innych tym podobnych systemów wyręczających domowników. Nasza praca w ramach projektu przyniosła efekty w postaci poradników i wideotutoriali, których nie chcemy trzymać w szufladzie. Chcemy, aby ten poradnik stał się inspiracją dla majsterkowiczów, którzy własnoręcznie zbudują sobie taki nowoczesny inteligentny dom. Nie trzeba ponosić wielkich wydatków by zamieszkać w takim smart house. Wystarczy trochę części elektronicznych, narzędzi, tego podręcznika i samozaparcia. -4-

Rozdział 1. Warsztat Wiadomo nie od dziś i potwierdzi to każdy fachowiec, że podstawa to narzędzia. Można pracować używając majsla4 i młotka, ale o wiele przyjemniej i dokładniej pracuje się narzędziami specjalistycznymi niż uniwersalnymi. Poniższe zestawienie należy traktować jako ułatwienie wyboru narzędzi, a nie jako niezbędne minimum. Bez wielu z tych narzędzi można się obyć inne natomiast można mieć lepsze. My posługiwaliśmy się tym co mieliśmy, a zobaczyć je można poniżej. Podrozdział 1.1. Narzędzia ręczne Podstawowe narzędzia ręczne znajdują się prawie w każdym domu, w warsztacie to już na pewno. Więc nie będzie to raczej konieczny wydatek. Można się śmiało posługiwać tylko szczypcami uniwersalnymi, ale w niektórych przypadkach drobne specjalistyczne szczypce będą poręczniejsze. Ta zasada dotyczy także pozostałych narzędzi. 4 Majsel [gwara poznańska] przecinak do metalu -5-

Podrozdział 1.2. Elektronarzędzia Elektronarzędzia nie są niezbędne. Zawsze można używać wiertarki ręcznej lub świdra zamiast wiertarki, wkrętaka zamiast wkrętarki, pilnika zamiast szlifierki. Oczywiście nikt nie zabrania używania tradycyjnych ręcznych narzędzi. Szybciej, łatwiej i niejednokrotnie dokładniej wykonasz swoją pracę elektronarzędziami. Czasami są one wręcz niezbędne. Życzę powodzenia wywiercenia dziury w ścianie pod obrazek w bloku z wielkiej płyty za pomocą wiertarki ręcznej. W przypadku elektroniki można się bez nich obejść, ale mieć warto. Wiadomo wydatek jest to duży jednak przy odpowiednim zakupie starczy na lata. Każde z poniższych narzędzi można kupić w lepszej lub gorszej konfiguracji. Zależne jest to zazwyczaj od zasobności portfela i przeznaczenia. My używaliśmy głównie wkrętarki i multiszlifierki, która jest nieocenionym narzędziem w warsztacie każdego majsterkowicza. a) Multiszlifierka Sama nazwa wskazuje na przeznaczenie tego kombajnu narzędziowego. Multiszlifierka posiada nieskończone możliwości, które zależą tylko od dostępnych końcówek i inwencji twórczej właściciela. Z podstawowych funkcji należy tutaj wymienić: szlifowanie, frezowanie, wiercenie, polerowanie, grawerowanie i ostrzenie. Jako dodatkowe akcesorium można dokupić elastyczny wężyk z uchwytem narzędzi. Ułatwi to znaczniej operowanie narzędziem przy precyzyjniejszych pracach. Multiszlifierka przyda się między innymi do wiercenia otworów w płytkach PCB, cięcia laminatów i innych elementów oraz naostrzenia i wypolerowania ulubionego scyzoryka. -6-

b) Wkrętarka Wkrętarka jest uniwersalnym narzędziem mogącym zastąpić zarówno wkrętak, jak i wiertarkę. W drugą stronę to nie zawsze działa, ponieważ wkrętarka ma większy moment obrotowy nie ma natomiast spotykanego w wiertarkach udaru. Wybierając wkrętarkę proponuję dokonać zakupu firmowego narzędzia, które można znaleźć w promocji w atrakcyjnej cenie. Warto zwrócić uwagę na moc, napięcie oraz pojemność akumulatora. Ważne są również obroty i ich możliwości regulacji oraz zestaw dostępnych akcesoriów i końcówek. Podrozdział 1.3. Narzędzia do lutowania Lutowanie to podstawowa czynność w tej dziedzinie. Lutownica to nieodzowne narzędzie każdego elektronika. Przyda się w warsztacie i to dość często. Wybór narzędzi jest ogromny więc jest w czym wybierać. -7-

Lutownice i stacje lutownicze W temacie lutowania można wiele napisać od wyboru konkretnego narzędzia po techniki i rodzaje lutowania. W naszym przypadku mówimy o lutowaniu tzw. miękkim, czyli poniżej 450 oc. Należy mieć na względzie do czego będziemy używać naszej lutownicy i jak często będziemy się nią posługiwać. Ważne jest, czy to będzie praca ciągła, czy chwilowa, czy będziemy lutować elektronikę czy nieco większe elementy. Od tych aspektów zależy, jaką lutownicę wybrać, o jakiej mocy i z jakim grotem. Najtańsze lutownice można kupić za kilka złotych, najdroższe stacje lutownicze kosztują kilka tysięcy. Jest więc z czego wybierać. Najczęściej spotykane są: - lutownice kolbowe czyli oporowe w zależności od ich mocy i kształtu grota można ich używać do mniejszych lub większych elementów, długo się nagrzewają dlatego nie polecane są do pracy przerywanej, - lutownice transformatorowe zwane też pistoletowymi ze względu na swój kształt służą do pracy przerywanej, bardzo szybko się nagrzewają, mają szeroki zakres mocy więc można wybrać coś dla siebie, polecane początkującym elektronikom, - stacje lutownicze - wykorzystywane do prac profesjonalnych, mają regulowany zakres temperatur i wymienne groty, ze względu na koszty polecane raczej zawodowcom, Nie da się lutować bez lutu. Najczęściej jest to lut cynowy z różnymi domieszkami w tym z topnikiem. W większości przypadków nie trzeba więc używać dodatkowego topnika, zależy to jednak od zastosowanego rodzaju lutu. Topnik, którego głównym zadaniem jest usuwanie tlenków podczas lutowania bardzo przydaje się przy bieleniu końcówek przewodów. W naszym projekcie używaliśmy lutownic kolbowych i transformatorowych tych drugich o wiele częściej. -8-

Podrozdział 1.4. Podzespoły elektroniczne Zbieractwo w przypadku majsterkowiczów jest rzeczą normalną i nie należy się tym przejmować, ponieważ zawsze się coś może przydać. Nie inaczej jest z podzespołami elektronicznymi. Po jakimś czasie dorobicie się pokaźnego zestawu niewykorzystanych lub gdzieś wyszperanych diód, rezystorów, kondensatorów, tranzystorów, końcówek, przewodów i innych skarbów. Warto je zbierać i mieć uporządkowane, żeby łatwo odnaleźć właściwy element. W przypadku mechatroników będą to jeszcze dodatkowo podzespoły mechaniczne, płytki prototypowe, programatory, płytki arduino, mikrokontrolery, czujniki, przekażniki itd. Podczas trwania naszego projektu wykorzystaliśmy blisko 30 metrów przewodów (nie licząc tych do płytek prototypowych), kilkadziesiąt rezystorów, kilkanaście rezystorów, kilka wyświetlaczy, kondensatorów, przekaźników. Wyliczać by można długo. Nie będziemy tutaj omawiać wszystkich elementów elektronicznych, bo nie chcemy powielać publikacji, podręczników i stron internetowych. Jeżeli będzie taka potrzeba to polecam zajrzeć na naszą stronę do działu Baza wiedzy. Znajdują się tam opisy podstawowych podzespołów oraz prawa dotyczące prądu. Na zdjęciu poniżej widać tylko wycinek naszych skarbów. Ważnym elementem jest tam multimetr, który z pewnością przyda się w pracy. Proponuję zakup tego urządzenia jako jednego z pierwszych, bo na pewno się przyda. Na potrzeby początkujących wystarczy taki za kilka złotych. -9-

Podrozdział 1.5. Miejsce pracy Dobre miejsce pracy to podstawa. Duże biurko lub stół roboczy z dobrym oświetleniem i ergonomiczne krzesło to marzenie większości. Nie wszyscy jednak mogą na takie warunki sobie pozwolić, mieszkając np. w bloku. Niezależnie od wielkości stołu roboczego i tak zapanuje na nim artystyczny nieład. Jeśli się tak nie stanie, to albo mało pracujesz, albo jesteś naprawdę poukładanym człowiekiem. Bawiąc się w mechatronikę musimy mieś nieco więcej miejsca, ponieważ prócz zabawek elektronicznych musi się zmieścić jeszcze komputer do programowania. W najgorętszym stadium naszego projektu nie było nawet miejsca w klasie szkolnej i niektórzy pracowali na zapleczu, pomiędzy różnymi jeszcze kiedyś przydatnymi rzeczami. Nie zostanie tutaj pokazane zdjęcie idealnego miejsca pracy, bo takowe nie istnieje. Zawsze na coś zabraknie miejsca. Zobaczyć można za to nasze miejsce pracy. Tyle potrafi się zmieścić na półce pod klawiaturę Tak wyglądała nasza pracownia komputerowa -10-

Podrozdział 1.6. Oprogramowanie i sprzęt komputerowy Nasz projekt budowany był w oparciu o wolne i otwarte oprogramowanie, które umożliwia realizacje dowolnych zadań bez ponoszenia kosztów. Czym zatem jest WiOO? Cytując za naszą stroną internetową: WiOO to oprogramowanie które rozpowszechniane jest wraz z kodem źródłowym. Licencja pozwala na dowolną modyfikację i rozpowszechnianie programu zarówno w wersji oryginalnej jaki i po zmodyfikowaniu. Oczywiście nie namawiamy nikogo do stosowania konkretnych rozwiązań, niemniej polecamy WiOO jako darmową alternatywę do komercyjnych rozwiązań. Pozwala to znacznie obniżyć koszty projektów będąc w pełni legalnym. Poniżej wymienione zostaną programy, z których korzystaliśmy i które mogą być przydatne w realizowanych projektach. System operacyjny Linux trzy dystrybucje SRU Desktop, Linux Mint oraz Ubuntu, Programowanie to Eclipse i Arduino IDE Projektowanie Sweet Home model 3D i LibreCAD oraz DraftSight (jedyny freeware) projekty 2D, Projektowanie układów elektronicznych Fritzing, Grafika Gimp (rastrowa) i Inkscape (wektorowa), Pakiet biurowy - LibreOffice Sprzęt komputerowy każdy jakiś zazwyczaj ma i nie będziemy nic polecać. Do WiOO nada się prawie każdy. -11-

Rozdział 2. Dla początkujących Podrozdział 2.1. Dzwonek domowy OPIS W tym poradniku pokażemy wam, jak łatwo można zbudować dzwonek domowy z układem Arduino, głośnikiem i przyciskiem. ELEMENTY NARZĘDZIA - płytka stykowa, -lutownica - rezystor 220Ω, - buzzer, - button, - ARDUINO UNO, - kable ok.8, SCHEMAT -12-

KOD ŹRÓDŁOWY int button=1; //deklaracja przycisku podłączonego do DIGITAL nr 1. int ring=2; //j.w. tyle ze dla ring pod DIGITAL nr 2. void setup() //pętla początkowa pinmode(button, OUTPUT); //deklaracja butona jako sygnału wyjściowego digitalwrite(button, LOW); //początkowe ustawienie butona jako urządzenia o sygnale niskim pinmode(ring, OUTPUT); //j.w. tyle ze dla dzwonka digitalwrite(ring, LOW); //j.w. tyle ze dla ringa void loop() //pętla główna if(digitalread(button)==high) //jeśli przycisk przejdzie do stanu sygnału wysokiego (ktoś go nacisnął)... digitalwrite(ring, HIGH); //podłączamy prąd do dzwonka DelayMicroseconds(3000); //odczekujemy 3 sekundy... Tone(2,261); //dzwonek dzwoni z częstotliwością... (tu 261Hz) NoTone(2); //po tym czasie dzwonek bezwzględnie wyłączał sygnał. digitalwrite(ring, LOW); //odłączamy prąd od dzwonka Jak to działa? Zadaniem powyższego układu jest po prostu reagowanie na nadanie sygnału z przycisku. Jeśli wciskamy button, program automatycznie przyjmuje, że jest w innym stanie niż początkowym przez co reaguje włączeniem dzwonka. Gdy puszczamy przycisk, program powraca do stanu początkowego co skutkuje wyłączeniem buzzera. -13-

Dokładną instrukcję budowy znajdziesz TUTAJ Podsumowanie Cały program nie jest trudny w budowie co jest definitywnie jego plusem, jednak należy tu zauważyć, że będzie on dzwonił dość monotonnym dźwiękiem. Aby jednak to zmienić, trzeba by pobawić się funkcjami dźwiękowymi w ARDUINO, do czego trzeba by użyć bardziej zaawansowanych trików. Alternatywa Powyższy układ da się wykonać w inny sposób. Cały układ należy wtedy podłączyć do baterii(buzzer i prowizoryczny przycisk). Następnie należy zastąpić przycisk połową klamerki z jednej strony przymocowaną do czegoś, a z drugiej strony przodem umieścić pineskę, a tyłem sprężynką trzymającą w dystansie drugą pineskę umocowaną do buzzera. Gdy wciśniemy układ dzwonek dzwoni, gdy puścimy, sprężynka odrzuci dwie pineski przez co układ zostanie przerwany. Podrozdział 2.2. PARKTRONIC - czujnik parkowania OPIS Parctronic to czujnik odległości, który umiejscowiony w garażu zapewnia nam bezpieczeństwo parkowania samochodu. ELEMENTY - płytka stykowa - Arduino Uno - rezystor 220Ω 3 szt - rezystor 2200Ω 1 szt - dioda led czerwona 1 szt - dioda led żółta 1 szt - dioda led zielona 1 szt - czujnik ruchu 1szt - buzzer Ultrasonic -14-

SCHEMAT KOD ŻRÓDŁOWY #include Ultrasonic miernik(5,6); int dioda1 = 2; int dioda2 = 3; int dioda3 = 4; int speakerpin = 8; -15-

void setup() Serial.begin(9600); pinmode(dioda1, OUTPUT); digitalwrite(dioda1, LOW); pinmode(dioda2, OUTPUT); digitalwrite(dioda2, LOW); pinmode(dioda3, OUTPUT); digitalwrite(dioda3, LOW); void loop() int x = miernik.ranging(cm); Serial.println(x); if (x<4) digitalwrite(dioda1,high); digitalwrite(dioda2,low); digitalwrite(dioda3,low); tone(speakerpin,2000); delay(100); if(x>5 && x<8) digitalwrite(dioda1,low); digitalwrite(dioda2,high); digitalwrite(dioda3,low); if(x>8) digitalwrite(dioda1,low); digitalwrite(dioda2,low); digitalwrite(dioda3,high); delay(200); -16-

Jak to działa? Czujnik ruchu umieszczony w ścianie włącza odpowiednią diodę w zależności od odległości pojazdu od ściany garażu. Są 3 poziomy zbliżenia do ściany, więc możliwość stłuczki została zredukowana praktycznie do zera. Jeśli chcesz zobaczyć jak to działa zajrzyj TUTAJ Podsumowanie Czujnik jest przystosowany do działania, należy go jedynie zamontować. Można go również zastosować do automatycznego otwierania np. lodówki jeśli odpowiednio blisko do niej podejdziemy :). Jeśli chodzi o liczbę zastosowań to jesteśmy w tym przypadku ograniczeni tylko własną inwencją. Podrozdział 2.3. Jak wysłać sms'a z arduino OPIS Umiejętność wysyłania sms'a z arduino stwarza wiele możliwości, które można wykorzystać w inteligentnym domu. Konkretne przykłady zastosowań znajdziesz w innych instrukcjach. Tutaj dowiesz się jak zaimplementować podstawową komunikację między arduino a GSM. To rozwiązanie opiera się na starym telefonie za parę złotych i nie wymaga zakupu drogiego shielda do komunikacji GSM. ELEMNTY - telefon komórkowy tutaj Motorolla C168 NARZĘDZIA - lutownica - płytka stykowa, - rezystor 10kΩ 1 szt - przewody - wtyczka jack 1 szt - button 1 szt SCHEMAT -17-

KOD ŹRÓDŁOWY #include SoftwareSerial telefon(3, 2); //piny do których podłączamy telefon void setup() pinmode(13, OUTPUT); //pin diody wbudowanej w arduino pinmode(8, INPUT); // pin przycisku telefon.begin(4800); void loop() if (digitalread(8) == HIGH) digitalwrite(13, HIGH); telefon.println("at"); //jeżeli wciśnięto przycisk // zapal diodę //prześlij do tel info o gotowości delay(500); telefon.println("at+cmgf=1"); //przejście w tryb SMS delay(1000); telefon.println("at+cmgw=\"+48601234567\""); //nr odbiorcy delay(1000); telefon.print("to ja- twoja Fifna Chalupa masz list");//treść sms'a delay(1000); telefon.write(byte(26)); //koniec wiadomości delay(1000); telefon.println("at+cmss=1"); //wysyłanie sms'a digitalwrite(13, LOW); delay(250); digitalwrite(13, HIGH); -18-

Delay(10000); telefon.println("at+cmgd=1"); //czas na wysłanie sms'a //zakończenie digitalwrite(13, LOW); delay(250); Jak to działa? Arduino łączy się z telefonem poprzez protokół RX/TX z wykorzystaniem komend AT. Znajomość kombinacji poleceń pozwala na korzystanie z telefonu jako modemu. Zobacz TUTAJ jak to działa. Podsumowanie Możliwości jakie daje korzystanie z telefonu komórkowego jako modemu GSM są bardzo szerokie. Użycie telefonu za ok 10-15 zł znacznie obniża koszty budowy takiego układu i staje się praktycznie dostępny dla każdego. Alternatywa W tym projekcie można użyć także innych telefonów, które wykorzystują port szeregowy do komunikacji. Popularną alternatywą dla tego rozwiązania jest zastosowanie tzw. Shield GSM czyli modułu do arduino. Ma on o wiele większe możliwości niż powyższy układ natomiast jego cena jest dziesięciokrotnie wyższa. -19-

-20-

Rozdział 3. Dla zaawansowanych Ten rozdział przeznaczony jest dla nieco bardziej zaawansowanych użytkowników arduino. Pomysły są bardziej rozbudowane, kod jest dłuższy i podane są konkretne zastosowania układów. Podrozdział 3.1. Sterowanie oświetleniem domowym OPIS Dzisiaj, naszym zadaniem będzie budowa inteligentnego oświetlenia. Będziemy mogli wykorzystać poniższy układ w celu np. włączania i wyłączania światła pilotem oraz autosterowania oświetleniem w całym domu. ELEMENTY NARZĘDZIA - ARDUINO UNO, - lutownica. - płytka stykowa, - dioda RGB, - rezystor 220Ω 3 szt, - fotorezystory 3 szt, - rezystor 10kΩ 3 szt, - odbiornik podczerwieni, - pilot, - przewody ok.25 szt. -21-

KOD ŹRÓDŁOWY //PAMIĘTAJ! dioda podczerwieni=dioda IR=dioda odbiorcza #include //deklaracja biblioteki diody IR #define irpin 11 //deklaracja miejsca podpięcia diody IR IRrecv irrecv(irpin); //dyrektywa diody odbiorczej decode_results results; //j.w. int red=5; //tu i.. int green=6; int blue=7; //tu i.. //tu deklaracja podpięcia kolorów diody RGB do ARDUINO void setup() //pętla początkowa irrecv.enableirin(); pinmode(red,output); //kolejne polecenie biblioteki IR //ustawienie koloru jako sygnału wyjściowego digitalwrite(red, LOW); //ustawienie początkowe tego dla koloru jako sygnału niskiego pinmode(green,output); //odtąd... digitalwrite(green, LOW); pinmode(blue,output); digitalwrite(blue, LOW); //dotąd dokładnie to samo tyle że dla innych kolorów void loop() //pętla główna int srednia; //deklaracje zmiennych logicznych -22-

int skladowa1; //i odczytów z fotokomórek dla int skladowa2; //w pełni poprawnego działania int skladowa3; //programu int trybauto=1; int lightred=0; int lightgreen=0; int lightblue=0; do //rozpoczęcie pętli wykonawczej 'do' skladowa1=analogread(0); //tu i.. skladowa2=analogread(1); //tu i.. skladowa3=analogread(2); //tu, odczyt z fotorezystorów srednia=(skladowa1+skladowa2+skladowa3)/3; //uśrednienie wyników if (irrecv.decode(&results))//jeśli został nadany sygnał z nadajnika sygnału podczerwieni... switch(results.value) //wybieramy.. case 0xFF6897: //wybór pierwszy.. if(trybauto==1) //jeśli tryb auto jest włączony.. trybauto--; //wyłącza go digitalwrite(red, LOW); //wyłącza wszystkie digitalwrite(green, LOW); //barwy digitalwrite(blue, LOW); //światla break; //przerwanie funkcji i wykonanie tej opcji jeśli został spelniony warunek case 0xFF9867: //wybór drugi... if(trybauto==0) //jeśli tryb auto jest wyłączony.. trybauto++; //włącz go... break; //j.w. case 0xFFE21D: //wybór trzeci... if(lightred==0) // jeśli światło czerwone jest wyłączone... digitalwrite(red, HIGH); lightred++; //włącz je.. //zmiana wartości logicznej- -23-

dioda czerwona świeci if(trybauto==1) //caly warunek wyłącza tryb //o ile był on włączony trybauto--; break; //j.w. case 0xFFA25D: //wybór czwarty... if(lightred==1) //jeśli włączone jest światło czerwone.. digitalwrite(red, LOW); lightred--; //wyłącz je.. //zmiana wartości logicznej - światło czerwone wyłączone break; //j.w. case 0xFFC23D: if(lightgreen==0) //wybór piaty... //jeśli wyłączony jest kolor zielony digitalwrite(green, HIGH); //włącz go lightgreen++; //j.w. tyle ze dla koloru zielonego if(trybauto==1) //wyłączenie trybu auto o ile był on //włączony... trybauto--; break; //j.w. case 0xFF22DD: if(lightgreen==1) //wybór szósty.. //jeśli światło zielone jest włączone.. digitalwrite(green, LOW); //wyłącz je.. lightgreen--; //j.w. tyle ze dla zielonego break; case 0xFF906F: if(lightblue==0) //j.w. //wybór siódmy... //jeśli niebieski jest wyłączony... digitalwrite(blue, HIGH); lightblue++; włącz go.. //j.w. tyle ze dla niebieskiego if(trybauto==1) //j.w. -24-

trybauto--; break; case 0xFFE01F: //j.w. //wybór ósmy... if(lightblue==1) //jeśli niebieski włączony... digitalwrite(blue, LOW); //wyłącz go... lightblue--; //j.w. tyle ze dla niebieskiego break; //j.w. irrecv.resume(); //dyrektywa kasacji sygnału sprawdzonego i/lub wykorzystanego z diody IR if(trybauto==1 && srednia<=400) //jeśli tryb auto włączony i średni pomiar jest mniejszy lub równy 400.. if(lightred==0 && lightgreen==0 && lightblue==0) // i jeśli światła są wyłączone digitalwrite(red, HIGH); //włącz... digitalwrite(green, HIGH); //wszystkie... digitalwrite(blue, HIGH); //światła... lightred++; lightgreen++; lightblue++; // i oczywiście wszędzie... //zmiana wartości logicznych... //dla wszystkich kolorów światła if(trybauto==1 && srednia>400) //jeśli tryb auto włączony i średni pomiar większy niż 400... if(lightred==1 && lightgreen==1 && lightblue==1) //i jeśli światła już się świecą... digitalwrite(red, LOW); //wyłączamy... digitalwrite(green, LOW); //wszystkie.. digitalwrite(blue, LOW); //światła... lightred--; // i firmowo zmiana... lightgreen--; //wszystkich wartości... lightblue--; //logicznych kolorów świateł... -25-

//tu zakończenie pętli wykonawczej 'do'... while(1>0); //warunek dla 'do' po całej pętli Jak to działa? Cały układ przez nas skonstruowany ma za zadanie reagować, w zależności od naszych poleceń,na najbliższe otoczenie. O co w tym chodzi? Otóż gdy będziemy chcieli, aby to ARDUINO zdecydowało za nas, czy w domu jest za ciemno lub za jasno, pozostawiamy uruchomiony tryb auto (można go bez problemu uruchomić z pilota; domyślnie jest on włączony). W zależności od wyników badań natężenia światła fotorezystorów w pomieszczeniu, uruchamiane lub gaszone jest światło w mieszkaniu. Jednak jeśli zdecydujemy, że to my chcemy decydować o palącym się świetle, natychmiast wyłączamy tryb auto i dowolnie sterujemy uruchamianiem się kolorów dostępnych w diodzie RGB. TUTAJ dowiesz się jak krok po kroku zbudować i zaprogramować ten układ. Podsumowanie Trzeba przyznać, że ten projekt ARDUINO nie należy do prostszych. Jednakże sądzę, że satysfakcja po pomyślnym ukończeniu tego projektu jest godna włożonej w niego pracy i czasu. Podkreślam tu, że nie ma żadnych zastrzeżeń do tego, aby móc podłączyć np. taśmę LED, zamiast diody RGB. Jak widzimy na filmiku wszystko gra i od teraz to my będziemy mogli decydować nad oświetleniem w swoim domu. Ogółem rzecz biorąc można by jeszcze ulepszyć ten układ o czujnik ruchu, czego nie zamieściłem. Sądzę za to, że przy rozsądnym korzystaniu z możliwości powyższego układu, nie jest on tu potrzebny. Alternatywa W przypadku tego układu, trudno mówić o jego alternatywie. Jednakże można by dokonać tu małej zmiany, o ile chcielibyśmy skonstruować coś o własnych siłach dobry efekt dałoby stworzenie tzw. potykaczy, tj. stworzenie układu składającego się z fotorezystora oświetlonego przez stale świecący laser. Gdybyśmy przerwali wiązkę stale oświetlającą fotokomórkę, światło w pomieszczeniu zapalałoby się. Drugie przerwanie wiązki oznaczałoby wyłączenie światła itd. -26-

Podrozdział 3.2. Oświetlenie schodowe OPIS Ten poradnik pokaże wam, jak w prosty sposób, wykorzystując zaawansowany czujnik ruchu, wykonać specjalne oświetlenie schodowe. ELEMENTY NARZĘDZIA - płytka stykowa, -lutownica, - rezystor 220Ω 6 szt, -wkrętarka, - diody typu RGB 2 szt, -wkręty 3 szt. - kable ok. 30 szt, - kable typu jednostronnie żeńskiego 3 szt, - ARDUINO UNO, - czujnik ruchu PIR typu HC-SR501, SCHEMAT -27-

KOD ŹRÓDŁOWY int red1=2; int red2=3; int green1=4; int green2=5; int blue1=8; int blue2=9; int czujnik=1; //aż dotąd deklaracja pinów kolorów diod RGB //deklaracja pinu czujnika ruchu void setup() //pętla ustawień początkowych pinmode(red1, OUTPUT); //kolor 'red1' jest sygnałem wyjściowym digitalwrite(red1, LOW); // kolor 'red1' deklarowany początkowo jako zlacze o wylaczonej energii pinmode(red2, OUTPUT); digitalwrite(red2, LOW); pinmode(green1, OUTPUT); digitalwrite(green1, LOW); pinmode(green2, OUTPUT); digitalwrite(green2, LOW); pinmode(blue1, OUTPUT); -28-

digitalwrite(blue1, LOW); pinmode(blue2, OUTPUT); digitalwrite(blue2, LOW); pinmode(czujnik, INPUT); digitalwrite(czujnik, LOW); kolorow // az dotad dokladnie to samo tyle ze dla innych void loop() //rozpoczacie glownej petli wykonawczej do //rozpoczęcie 'do' jako czegoś co ma być wykonywane gdy spełniony jest jego warunek if(digitalread(czujnik == HIGH)) // jeśli coś się rusza przed czujnikiem ruchu to.. digitalwrite(red1, HIGH); // odtąd.. digitalwrite(green2, HIGH); delay(1000); digitalwrite(red1, LOW); digitalwrite(green2, LOW); digitalwrite(green1, HIGH); digitalwrite(blue2, HIGH); delay(1000); digitalwrite(green1, LOW); digitalwrite(blue2, LOW); digitalwrite(blue1, HIGH); digitalwrite(red2, HIGH); delay(1000); digitalwrite(blue1, LOW); digitalwrite(red2, LOW); delay(1000); //dotąd robimy migające diody w różnych kolorach zmieniające barwę co 1 sekunde while(1>0); nieskończoność //warunek 'do' - zawsze 1>0 wiec pętla będzie powtarzana w -29-

Jak to działa? Zasada działania układu jest niezwykle prosta. Gdy fotorezystor umieszczony w czujniku ruchu wykryje jakiekolwiek anomalię, przechodzi on na kilka sekund do stanu sygnału wysokiego. Wtedy, jak widać w kodzie, dwie diody RGB (w naszym domu mogą być to równie dobrze paski LED), zaczną przemiennie świecić kolorami od czerwonego przez zielony aż po niebieski. Po przejściu z powrotem do stanu niskiego, wszystkie diody RGB (lub jak kto woli paski LED), wyłączają się i oczekują na kolejną anomalię zaraportowaną przez czujnik. TUTAJ dowiesz się jak krok po kroku zbudować i zaprogramować ten układ. Podsumowanie Projekt zaprezentowany powyżej jest tylko z pozornie trudny i myślę, że da radę wykonać go każdy początkujący programista ARDUINO. Co więcej, sądzę, że u każdego w domu przydałby się podobny układ choćby ze względu na jego duże możliwości. Wiem, że gotowe układy czujników ruchu są do kupienia w sklepach po dość wygórowanych cenach (przynajmniej te lepsze), za to nasz czujnik jest niezwykle czuły i do tego w niskiej cenie. Stąd jak najbardziej zachęcam do podjęcia się tego wyzwania i budowy detektora ruchu domowej roboty. Alternatywa Jeśli ktokolwiek chciałby podjąć się tego wyzwania, lecz z pewnych powodów np. nie ma dostępu do czujnika ruchu, jak najbardziej można zastąpić go najprostszymi fotorezystorami. Będą miały one jednak tym razem dość zaawansowany kod, gdyż cały układ będzie musiał przystosować się m. in. do zaciemnień otoczenia ze względu na porę dnia itd. jednakże stosowanie odpowiednich poleceń rozwiązałoby powyższy problem. Poza tym jak wcześniej wspominałem, powyższy kod da się zastosować dla pasków LED-owych. Trzeba wtedy jednak pamiętać o dodatkowym źródle ich zasilania. Podrozdział 3.3. Automatyczne rolety OPIS W tej części poradnika pokażemy wam, jak wykonać automatyczne rolety reagujące na jasność -30-

otoczenia. Nasz gadżet będzie miał także funkcje zamykania ich na sygnał z pilota. ELEMENTY NARZĘDZIA - płytka stykowa, - lutownica - rezystor 10kΩ 3 szt, - fotorezystor 3 szt, - odbiornik podczerwieni, - mostek H typu L293D, - ARDUINO UNO, - kable ok. 30 szt, SCHEMAT -31-

KOD ŹRÓDŁOWY //w razie co wyjaśniam --> odbiornik podczerwieni = dioda IR #include //deklaracja biblioteki diody IR #define irpin 10//pin pod który podłączamy odbiornik podczerwieni IRrecv irrecv(irpin); // tu i... decode_results results; //...tu deklaracja innych wytycznych IR int otworz=6; //pin pierwszego podpięcia kabla wiodącego z L293D do ARDUINO int zamknij=7; //pin drugiego podpięcia kabla wiodącego z L293D do ARDUINO void setup() //początkowe ustawienia aż do kolejnej klamry irrecv.enableirin(); //początkowe ustawienie dla diody IR pinmode(otworz,output); //ustawienie 'otwórz' jako sygnału wejściowego digitalwrite(otworz,low); //początkowe wyłączenie prądu biegnącego do mostka H dla tego portu pinmode(zamknij,output); //jak wyżej tyle ze dla 'zamknij' digitalwrite(zamknij,low); //jak wyżej tyle ze do tego portu void loop() //otwarcie głównej pętli wykonawczej int trybauto=1; int zamkniete=0; //deklaracje zmiennych logicznych // typu 'prawda'(jako '1') i 'fałsz'(jako '0') int otwarte=1; int pomiar1; //tu i... int pomiar2; // tu i... int pomiar3; //tu dane dt. natężenia światła badanego przez fotorezystory int srednia; // zmienna dla uśrednienia pomiarów do //funkcja 'do' mówi że coś ma się powtarzać if (irrecv.decode(&results)) // jeśli jest nadany sygnał z pilota //rozpoczęcie pętli warunku 'jeśli' switch(results.value) podczerwieni //wybiera któreś -32- z rozwiązań dla danego sygnału w

//rozpoczęcie pętli wyboru opcji w zależności od sygnału case 0xFF30CF: //wybór pierwszy if(trybauto==1) //jeśli tryb auto jest włączony trybauto--; //wyłącz go(przyjecie wartości fałsz tj '0') break; //wyjście z funkcji wyboru 'switch' jeśli warunek się zgadza case 0xFF18E7: //wybór drugi if(trybauto==0) //jeśli tryb auto jest wyłączony trybauto++; //włącz go(przyjecie wartości prawdy tj '1') break; //wyjście z funkcji wyboru 'switch' jeśli warunek się zgadza case 0xFFA857: if(otwarte==1) //wybór trzeci //jeśli rolety są odsłonięte... if(trybauto==1) //jeśli tryb auto jest włączony... trybauto--; //wyłącz go digitalwrite(zamknij, HIGH); //włączenie zamykania rolet delay(2000); //odczekanie 2 sekund digitalwrite(zamknij, LOW); //wyłączenie zamykania rolet zamkniete++; otwarte--; //zmiana funkcji logicznej(prawda dla zamknięte) //zmiana funkcji logicznej(falsz dla otwarte) break; //wyjście z funkcji wyboru 'switch' jeśli warunek się zgadza case 0xFF629D: if(zamkniete==1) //wybór trzeci //jeśli rolety są zasłonięte... if(trybauto==1) //jeśli tryb auto jest włączony... trybauto--; //wyłącz go digitalwrite(otworz, HIGH); delay(2000); //włączenie otwierania rolet //odczekanie 2 sekund digitalwrite(otworz, LOW); //wyłączenie otwierania rolet zamkniete--; //zmiana funkcji logicznej(fałsz dla zamknięte) otwarte++; //zmiana funkcji logicznej(prawda dla otwarte) break; //wyjście z funkcji wyboru 'switch' jeśli warunek się zgadza -33-

irrecv.resume(); //dyrektywa dla biblioteki diody IR dla porzucenia sygnału jeśli został on wykonany lub nie ma go zatwierdzonego w 'switch' if(trybauto==1) //jeśli tryb auto jest włączony... pomiar1=analogread(0); 'analog 0' //pobierz pomiar fotorezystora podpiętego pod wejście pomiar2=analogread(1); 'analog 1' //pobierz pomiar fotorezystora podpiętego pod wejście pomiar3=analogread(2); 'analog 2' //pobierz pomiar fotorezystora podpiętego pod wejście srednia=(pomiar1+pomiar2+pomiar3)/3; zmiennej 'srednia' if(srednia>=400 && zamkniete==1) są zamknięte... //uśrednienie wyniku i zapisanie go do //jeśli pomiar jest większy lub równy 400 a okna digitalwrite(otworz, HIGH); delay(2000); //odczekanie 2 sekund digitalwrite(otworz, LOW); zamkniete--; otwarte++; //włączenie otwierania rolet //wyłączenie otwierania rolet //zmiana funkcji logicznej(fałsz dla zamknięte) //zmiana funkcji logicznej(prawda dla otwarte) if(srednia<400 && otwarte==1) otwarte... //jeśli pomiar jest mniejszy niz 400 a okna sa digitalwrite(zamknij, HIGH); delay(2000); //odczekanie 2 sekund digitalwrite(zamknij, LOW); zamkniete++; otwarte--; //włączenie zasilania rolet //wyłączenie zasilania rolet //zmiana funkcji logicznej(prawda dla zamkniete) //zmiana funkcji logicznej(fałsz dla otwarte) //tu kończy się funkcja 'do' while(1>0); //warunek żeby funkcja 'do' się powtarzała //zamkniecie całego 'void loop' Jak to działa? Jeśli wszystko podłączymy zgodnie z powyższym opisem i damy do tego nasz kod, cały układ powinien sam interpretować otaczające go natężenie światła, po czym zgodnie z odczytami zasłaniać lub odsłaniać okna. Po za tym, jeśli wciśniemy odpowiedni klawisz na naszym nadajniku -34-

sygnału podczerwieni, system sam wyłączy tryb auto dla ręcznego sterowania. Potem znów będziemy mogli powrócić do trybu auto. TUTAJ dowiesz się jak krok po kroku zbudować i zaprogramować ten układ. Podsumowanie Nie da się ukryć, że powyższy układ jest dość zaawansowany. Wymaga on umiejętności i wprawy w konstrukcjach z ARDUINO. Pomimo tego sądzę, że warto poświęcić kilka godzin na zrozumienie i budowę owego projektu, ponieważ jak widać, na pewno przyda się on w życiu codziennym, ażeby okna były zasłaniane każdego zmierzchu. Alternatywa Odzwierciedleniem tego układu może być oczywiście w pełni skonfigurowany układ sterowania roletami w domu. Wystarczy tylko podłączyć do układu więcej fotorezystorów; uśrednienie większej ilości wyników daje realniejsze efekty. Po za tym, wystarczy podłączyć lepsze źródło energii i lepszy silnik (taki który w życiu codziennym poradzi sobie z roletami). Tym właśnie sposobem otrzymamy jeden z elementów naszego nowego, inteligentnego domu. Podrozdział 3.4. Alarm ppoż z wysyłaniem powiadomienia OPIS Bezpieczeństwo domowników i dobytku to priorytet każdego z właścicieli domu. Możliwość szybkiego zaalarmowania służb i właściciela pozwala na reakcję i ochronę dobytku. Niniejszy układ pozwoli zbudować taki system zbudować samemu niewielkim kosztem. Oparty jest on na wcześniej opisanym układzie z wysyłaniem sms'a. ELEMNTY NARZĘDZIA - telefon komórkowy tutaj Motorolla C168 - lutownica - płytka stykowa, - rezystor 10kΩ 2 szt - przewody - wtyczka jack 1 szt - button 1 szt - czujnik dymy MQ-2 SCHEMAT -35-

KOD ŹRÓDŁOWY #include <SoftwareSerial.h> SoftwareSerial telefon(3, 2); #include <HardwareSerial.h> #define MAX_ANALOG_READ 1023 #define APIN_SMOKE A2 //wejscie czujnika dymu #define SMOKE_ALARM_PIN 8 // podłączenie tel. #define #define SMOKE_ALARM_VALUE LOOP_MILLIS 20000 550 //wartość zareaguje przy //opóźnienie potrzebne reakcji telefonu extern HardwareSerial Serial; void f_smoke(); void timesync(); unsigned int lasttime = 0; int smoke = 0; boolean wyslano = false; -36- której do system odczytu i

void setup() pinmode(apin_smoke, INPUT); Serial.begin(9600); delay(1000); Serial.setTimeout(10); pinmode(13, OUTPUT); telefon.begin(4800); void loop() f_smoke(); timesync(); void f_smoke() smoke = analogread(apin_smoke); if (smoke == 0) return; Serial.println(smoke); if(smoke > SMOKE_ALARM_VALUE) if(!wyslano) Serial.print('pali sie'); digitalwrite(smoke_alarm_pin, HIGH); wyslano = true; digitalwrite(13, HIGH); telefon.println("at"); delay(500); telefon.println("at+cmgf=1"); delay(1000); telefon.println("at+cmgw=\"+twój nr tel\""); -37-

delay(1000); telefon.print("pozar!!!"); delay(1000); telefon.write(byte(26)); delay(1000); telefon.println("at+cmss=1"); digitalwrite(13, LOW); delay(250); digitalwrite(13, HIGH); delay(10000); telefon.println("at+cmgd=1"); digitalwrite(13, LOW); delay(250); else wyslano = false; digitalwrite(smoke_alarm_pin, LOW); int minmax(int v, int min, int max) return min(max(v, min), max); void timesync() delay(minmax(loop_millis + lasttime - millis(), 0, LOOP_MILLIS)); lasttime = millis(); Jak to działa? Czujnik dymu wysyła odczyty do arduino. W momencie osiągnięcia wartości granicznej zostaje wysłany sms z informacją Podsumowanie Korzyści wynikającej z tego rozwiązania nie trzeba chyba wymieniać. Każdy z nas chce bezpiecznego domu i jest to warte każdej ceny. Tutaj mamy to za bardzo małe pieniądze. Alternatywa Alternatywą dla tego systemu jest zakup drogich układów. Pytanie tylko po co? -38-

Ten konkretny czujnik można również zaadoptować do wykrywania gazów. Należy tylko odpowiednio skalibrować czujnik. Podrozdział 3.5. Jak zrobić sterowanie systemem grzejącochłodzącym OPIS Układ ma za zadanie sterować kominkiem, klimatyzacją oraz oknem w zależności od temperatury wewnątrz domu, jak i na zewnątrz. Jest połączony z wyświetlaczem LCD, który informuje nas, jaka jest obecnie pogoda (temperatura oraz opady deszczu). ELEMENTY NARZĘDZIA - płytka stykowa, - lutownica - rezystor 220Ω 1 szt, - wkrętak - dioda led czerwona 1 szt, - wiertarka - czujnik temperatury 3 szt, - wyświetlacz LCD 1 szt, - potencjometr 1 szt, - serwomechanizm 1 szt, - wentylator 1 szt, - czujnik deszczu 1 szt. SCHEMAT -39-

KOD ŹRÓDŁOWY #include LiquidCrystal lcd(13,11,5,4,3,2); #include Servo okno; int poz=10; int poz2=45; int button1=7; int button2=6; int klima=10; int kominek=11; int czujnikdeszczu=6; float temp; float temp2; float temp3; -40-

float tmax=-100.0; float tmin=100.0; byte stopien[8] = B11100, B10100, B11100, B00000, B00000, B00000, B00000, B00000, ; byte sloneczko[8] = B10101, B01110, B11111, B01110, B10101, B00000, B00000, B00000, ; byte ksiezyc[8] = B01100, B00110, B00111, B00011, B00011, B00111, B00110, B01100, ; void setup() -41-

lcd.createchar(1,stopien); lcd.createchar(2,sloneczko); lcd.createchar(3,ksiezyc); lcd.createchar(4,stopien); lcd.createchar(5,stopien); lcd.begin(16,2); okno.attach(9); pinmode(kominek,output); pinmode(klima, OUTPUT); pinmode(czujnikdeszczu, OUTPUT); pinmode(button1, INPUT); pinmode(button2, INPUT); digitalwrite(kominek, LOW); digitalwrite(klima, LOW); digitalwrite(button1, HIGH); digitalwrite(button2, HIGH); Serial.begin(9600); void loop() int deszcz = analogread(3); //Odczyt temperatury i czujnika deszczu: temp= (analogread(0)*5/1024.0); temp2= (analogread(1)*5/1024.0); temp3= (analogread(2)*5/1024.0); temp = temp - 0.602; //Kalibrujemy czujniki; w tym przypadku na podstawie badań przeprowadzonych przy pomocy elektronicznego i rtęciowego termometru ustaliliśmy, że wartość 0.602 temp2 = temp2-0.602; //pozwala na uzyskanie dokładniejszych odczytów. temp3 = temp3-0.602; temp= temp/0.01; temp2= temp2/0.01; temp3= temp3/0.01; delay(2000); Serial.println("Temperatura - parter: "); Serial.println (temp); Serial.println("Temperatura - pietro: "); Serial.println(temp2); Serial.println("Temperatura na zewnatrz: "); Serial.println(temp3); Serial.println(button1); Serial.println(button2); -42-

lcd.setcursor(0,0); lcd.print("t.part.: "); lcd.print(temp); lcd.write(1); lcd.setcursor(0,1); lcd.print("t.pie.: "); lcd.print(temp2); lcd.write(4); delay(2000); lcd.clear(); lcd.setcursor(0,0); lcd.print("t.zew.: "); lcd.print(temp3); lcd.write(5); //TRYB DZIENNY: if (digitalread(button1)==low) digitalwrite(button2, HIGH); digitalwrite(button1,low); lcd.setcursor(0,15); lcd.write(2); if(temp<19 && temp2<19 && temp3<19) //Sytuacja, gdy w domu i na zewnątrz jest zimno. okno.write(poz); digitalwrite(kominek,high); digitalwrite(klima,low); if(temp<19 && temp2<19 && temp3>20) //Sytuacja, gdy na dworze jest nieco cieplej, niż w domu. digitalwrite(kominek, LOW); okno.write(poz2); digitalwrite(klima, LOW); if(temp==22 && temp2==22) //Sytuacja, gdy w domu panuje idealna temperatura. digitalwrite(kominek,low); digitalwrite(klima,low); -43-

okno.write(poz); if(temp>22 && temp2>22 &&temp3>22) //Sytuacja, gdy w domu i na dworze jest zbyt gorąco. digitalwrite(klima, HIGH); digitalwrite(kominek, LOW); okno.write(poz); if(temp>22 && temp2>22 &&temp3<19) okno.write(poz2); //TRYB NOCNY: if (digitalread(button2)==low) digitalwrite(button1, HIGH); digitalwrite(button2, LOW); lcd.setcursor(0,15); lcd.write(3); if(temp<17 && temp2<17 && temp3<17) //Sytuacja, gdy w domu i na zewnątrz jest zimno. okno.write(poz); digitalwrite(kominek,high); digitalwrite(klima,low); if(temp<17 && temp2<17 && temp3>19) //Sytuacja, gdy na dworze jest nieco cieplej, niż w domu. digitalwrite(kominek, LOW); okno.write(poz2); digitalwrite(klima, LOW); if(temp==17 && temp2==17) //Sytuacja, gdy w domu panuje idealna temperatura. -44-

digitalwrite(kominek,low); digitalwrite(klima,low); okno.write(poz); if(temp>17 && temp2>17 &&temp3>17) //Sytuacja, gdy w domu i na dworze jest zbyt gorąco. digitalwrite(klima, HIGH); digitalwrite(kominek, LOW); okno.write(poz); if(temp>17 && temp2>17 &&temp3<17) okno.write(poz2); Jak to działa? Trzy czujniki temperatury (dwa umieszczone na parterze i piętrze domu, jeden na dworze) kontrolują jej poziom wewnątrz domu i na zewnątrz. Zależnie od odczytów, uruchamiają się połączone z czujnikami urządzenia: kominek, klimatyzator, albo otwiera się okno. Układ posiada także czujnik deszczu, który pozwala nam uniknąć pechowych zdarzeń, takich, jak otwarcie okna w czasie ulewy. Programując, ustalamy zakres temperatur, dla których mają zostać wykonane dane czynności (rozpalenie ognia w kominku, otwarcie okna, włączenie klimatyzacji). Działając, program sprawdza, czy zmiana temperatury nie jest wywołana działalnością któregoś z elementów układu. Podsumowanie Budując nasz układ, udało nam się uwzględnić wszystkie elementy, które chcieliśmy w nim zamieścić. Zarówno kominek, klimatyzator, jak i serwomechanizm otwierający okno działają. Jedyne, na co należy zwrócić uwagę, to konieczność polecenia programowi, aby wyliczał średnią z odczytów czujników temperatury, ponieważ różnią się one nieco od siebie. -45-

Rozdział 4. Zegar jako elektroniczny woźny OPIS Ten poradnik pokażejak używając płytki arduino i kilku podzespołów wykonać zegar z wyświetlaczem 7LED. ELEMENTY ZEGAR: - DS1307 1 szt, - kwarc 32.768kHz 1 szt, - bateria CR2032 1 szt. MÓZG : - ARDUINO UNO, - PCF8574 1 szt, - ATMEGA328P 1 szt. OPORNIKI, KONDENSATORY: -kondensator ceramiczny 22pF 2 szt, -kondensator elektrolityczny 100uF 2 szt, -rezystor 10k om 4 szt, -rezystor 4,7k om 2 szt, -rezystor 220 om 1 szt. POZOSTAŁE: -wyświetlacz 7 seg LED ze wspólną anodą 4 szt, -tranzystor BC237 4 szt, -dioda led 1 szt, -kwarc 16 MHz -bateria AA 1,5v 4 szt, -7805 1 szt -przewodów sporo ;), -46-

-płytki stykowe JAK TO DZIAŁA 1. DS1307 to właśnie nasz zegar. Komunikacja z arduino odbywa się za pomocą pinów SCL, oraz SDA oraz linii I C. Podłączamy w następujący sposób: X1, X2 wejście na kwarc 32,768 khz, Vcc napięcie, GND masa, oraz SCL, SDA jako sygnał. Po ustawieniu daty i czasu, nasz DS1307 zacznie odliczać czas, tak długo jak będziemy dostarczać mu zasilenie. Jeśli chcemy by działał bez bezpośredniego zasilania, możemy podłączyć napięcie pod Vbat. Komunikacja z zegarem podłączonego do Arduino odbywa się za pomocą biblioteki RTClib, która znacznie ułatwia pracę z tym podzespołem. 2. PCF8574 nasz rozszerzacz wejść (ekspander), dodaje nam 8 wejść /wyjść cyfrowych. Komunikacja tak jak poprzednio odbywa się za pomocą magistrali I2C. Wejścia działają w następujący sposób: -A0, A2, A3 adres układu, -47-