Inteligentny dom Automatyzacja mieszkania za pomoca platformy Arduino systemu Android i zwyklego komputera

background image
background image

Tytuł oryginału: Programming Your Home: Automate with Arduino, Android, and Your Computer

Tłumaczenie: Mikołaj Szczepaniak

ISBN: 978-83-246-5675-2

© Helion 2013.
All rights reserved.

Copyright © 2012 The Pragmatic Programmers, LLC.
All rights reserved.

No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form, or
by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior consent of
the publisher.

Many of the designations used by manufacturers and sellers to distinguish their products are claimed as
trademarks. Where those designations appear in this book, and The Pragmatic Programmers, LLC was
aware of a trademark claim, the designations have been printed in initial capital letters or in all capitals.
The Pragmatic Starter Kit, The Pragmatic Programmer, Pragmatic Programming, Pragmatic Bookshelf,
PragProg and the linking g device are trademarks of The Pragmatic Programmers, LLC.

Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje
naruszenie praw autorskich niniejszej publikacji.

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich
właścicieli.

Wydawnictwo HELION dołożyło wszelkich starań, by zawarte w tej książce informacje były kompletne
i rzetelne. Nie bierze jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym
ewentualne naruszenie praw patentowych lub autorskich. Wydawnictwo HELION nie ponosi również
żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w
książce.

Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail: helion@helion.pl
WWW: http://helion.pl (księgarnia internetowa, katalog książek)

Pliki z przykładami omawianymi w książce można znaleźć pod adresem:
ftp://ftp.helion.pl/przyklady/intdom.zip

Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/intdom
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.

Printed in Poland.

Kup książkę

Poleć książkę

Oceń książkę

Księgarnia internetowa

Lubię to! » Nasza społeczność

background image

Spis treci

Podzikowania .................................................................................... 13

Sowo wstpne .................................................................................... 15

Kto powinien przeczyta t ksik ................................................................... 16

Co znajduje si w tej ksice ............................................................................. 16

Arduino, Android, iPhone… mój Boe! .......................................................... 17

Przykady kodu i stosowane konwencje ............................................................. 20

Zasoby dostpne w internecie .......................................................................... 21

Cz I. Przygotowania ............................................23

Rozdzia 1. Pierwsze kroki ................................................................. 25

1.1. Czym jest automatyzacja domu? ................................................................ 25

1.2. Gotowe rozwizania dostpne na rynku ..................................................... 26

1.3. Rozwizania typu „zrób to sam” ............................................................... 27

1.4. Uzasadnienie inwestycji ............................................................................ 28

1.5. Przygotowywanie warsztatu ....................................................................... 30

1.6. Zapisywanie pomysów w formie szkiców ................................................... 31

1.7. Zapisywanie, czenie i testowanie ............................................................ 33

1.8. Dokumentowanie pracy ............................................................................ 34

Kup książkę

Poleć książkę

background image

8

Inteligentny dom

Rozdzia 2. Potrzebne elementy ........................................................ 37

2.1. Znajomo sprztu ................................................................................... 38

2.2. Znajomo oprogramowania ..................................................................... 45

2.3. Bezpiecznej zabawy! ................................................................................. 46

Cz II. Projekty ......................................................49

Rozdzia 3. System powiadamiania o poziomie wody .................... 51

3.1. Czego potrzebujemy ................................................................................. 53

3.2. Budowa rozwizania ................................................................................ 55

3.3. czenie .................................................................................................. 55

3.4. Tworzenie szkicu ...................................................................................... 56

3.5. Implementacja aplikacji internetowej wysyajcej poczt elektroniczn .......... 64

3.6. Dodanie moduu sieciowego ...................................................................... 67

3.7. czenie wszystkich elementów ................................................................. 71

3.8. Nastpne kroki ......................................................................................... 73

Rozdzia 4. Elektryczny pies stróujcy .......................................... 77

4.1. Czego potrzebujemy ................................................................................. 78

4.2. Budowa rozwizania ................................................................................ 80

4.3. System elektr

ycznego psa stróujcego .................................................... 82

4.4. Szkolenie psa ........................................................................................... 85

4.5. Testowanie .............................................................................................. 89

4.6. Spuszczamy psa ....................................................................................... 90

4.7. Nastpne kroki ......................................................................................... 91

Rozdzia 5. wierkajcy karmnik dla ptaków ................................. 93

5.1. Czego potrzebujemy ................................................................................. 95

5.2. Budowa rozwizania ................................................................................ 98

5.3. Czujnik grzdy ......................................................................................... 98

5.4. Czujnik ziarna ........................................................................................ 102

5.5. Komunikacja bezprzewodowa ................................................................. 106

5.6. wierkanie w Pythonie ........................................................................... 113

5.7. Koczenie projektu ................................................................................. 121

5.8. Nastpne kroki ....................................................................................... 123

Kup książkę

Poleć książkę

background image

Spis treci

9

Rozdzia 6. Wykrywacz dostarczania paczek ................................ 125

6.1. Czego potrzebujemy ............................................................................... 127

6.2. Budowa rozwizania .............................................................................. 128

6.3. czenie sprztu .................................................................................... 129

6.4. Pisanie kodu .......................................................................................... 131

6.5. Szkic systemu wykrywania dostarczonych paczek ...................................... 132

6.6. Testowanie szkicu wykrywajcego dostarczanie paczek ............................. 133

6.7. Skrypt przetwarzajcy komunikaty o przesykach ...................................... 134

6.8. Tworzenie bazy danych systemu wykrywania przesyek ............................. 135

6.9. Instalacja niezbdnych pakietów Pythona ................................................. 137

6.10. Pisanie skryptu ...................................................................................... 139

6.11. Testowanie skryptu przetwarzajcego komunikaty o paczkach ................... 144

6.12. Instalacja systemu .................................................................................. 145

6.13. Nastpne kroki ...................................................................................... 146

Rozdzia 7. Internetowy wcznik wiata .................................... 149

7.1. Czego potrzebujemy ............................................................................... 150

7.2. Budowa rozwizania .............................................................................. 153

7.3. czenie ................................................................................................ 154

7.4. Pisanie kodu klienta w formie aplikacji internetowej .................................. 158

7.5. Testowanie klienta aplikacji internetowej .................................................. 161

7.6. Pisanie kodu klienta dla systemu Android ................................................ 162

7.7. Testowanie aplikacji klienckiej dla systemu Android ................................. 167

7.8. Nastpne kroki ....................................................................................... 169

Rozdzia 8. Automatyzacja dziaania zasony ............................... 173

8.1. Czego potrzebujemy ............................................................................... 174

8.2. Budowa rozwizania .............................................................................. 177

8.3. Stosowanie silnika krokowego .................................................................. 178

8.4. Programowanie silnika krokowego ........................................................... 179

8.5. Doczanie czujników ............................................................................. 181

8.6. Pisanie szkicu ........................................................................................ 182

8.7. Instalacja sprztu .................................................................................... 187

8.8. Nastpne kroki ....................................................................................... 190

Kup książkę

Poleć książkę

background image

10

Inteligentny dom

Rozdzia 9. Zamek do drzwi sterowany przez Androida .............. 193

9.1. Czego potrzebujemy ............................................................................... 194

9.2. Budowa rozwizania .............................................................................. 197

9.3. Sterowanie zamkiem z poziomu Androida ............................................... 202

9.4. Pisanie kodu serwera dla systemu Android .............................................. 207

9.5. Pisanie aplikacji klienckiej dla systemu Android ....................................... 220

9.6. Testy i instalacja .................................................................................... 225

9.7. Nastpne kroki ....................................................................................... 226

Rozdzia 10. Dajmy przemówi naszemu domowi ........................ 229

10.1. Czego potrzebujemy .............................................................................. 230

10.2. Konfiguracja goników .......................................................................... 231

10.3. Wsuchajmy si w gos systemu ............................................................... 234

10.4. Kalibracja mikrofonu bezprzewodowego ................................................. 238

10.5. Programowanie mówicego systemu ........................................................ 240

10.6. Rozmowa z wasnym domem ................................................................. 249

10.7. Nastpne kroki ...................................................................................... 250

Cz III. Przewidywana przyszo ....................253

Rozdzia 11. Przysze projekty ......................................................... 255

11.1. Przyszo na wycignicie rki ............................................................... 256

11.2. Prognoza dugoterminowa ...................................................................... 260

11.3. Dom przyszoci .................................................................................... 262

Rozdzia 12. Wicej pomysów na projekty ................................... 267

12.1. Wykrywacz baaganu ............................................................................. 267

12.2. Monitor zuycia energii elektrycznej ........................................................ 268

12.3. Elektryczny strach na wróble .................................................................. 269

12.4. Pilot systemu domowej rozrywki ............................................................. 269

12.5. Wycznik urzdze domowych na czas snu ............................................ 270

12.6. Sterowanie nawadnianiem za pomoc czujnika wilgotnoci ....................... 270

12.7. Czujniki dymu przystosowane do komunikacji sieciowej ........................... 271

12.8. Zblieniowy mechanizm otwierania bramy garaowej ............................... 272

12.9. Inteligentny sterownik klimatyzacji i wentylacji ......................................... 272

Kup książkę

Poleć książkę

background image

Spis treci

11

12.10. Inteligentna skrzynka na listy ............................................................... 273

12.11. Inteligentne owietlenie ....................................................................... 273

12.12. Monitorowanie róde energii

zasilanych promieniami sonecznymi i wiatrem ..................................... 273

Cz IV. Dodatki ....................................................275

Dodatek A. Instalacja bibliotek platformy Arduino .................... 277

A.1.1. System Apple OS X ......................................................................... 277

A.1.2. System Linux ..................................................................................... 278

A.1.3. System Windows ................................................................................ 278

Dodatek B. Bibliografia .................................................................... 281

Skorowidz .......................................................................................... 283

Kup książkę

Poleć książkę

background image

12

Inteligentny dom

Kup książkę

Poleć książkę

background image

Rozdzia 5.

wierkajcy
karmnik dla ptaków

am dwójk dzieci, które wprost uwielbiaj ptaki. Ju jako mae dzie-
ci miay swoje pierwsze papuki. Lubiy te obserwowa dzikie
ptaki konstruujce gniazda i posilajce si w karmniku zamontowa-

nym przy oknie sypialni. Dokarmianie ptaków wie si jednak z pewnym
problemem — dzieci cigle zapominaj o uzupenianiu nasion dla ptaków
w karmnikach. Zdarzao si, e z rozmaitych powodów w karmniku brako-
wao nasion przez cae dnie, a nawet tygodnie. Czy nie byoby prociej,
gdyby sam karmnik informowa nas o koniecznoci uzupenienia karmy?

Historia pustego karmnika bya inspiracj dla tego projektu. Czy mona sobie
wyobrazi lepsz form powiadamiania o koniecznoci dosypania nasion ni
„wierkanie” na Twitterze? Zainteresowani znajomi i krewni mog ledzi
konto karmnika, aby wiedzie, kiedy karmnik jest odwiedzany przez ptaki,
kiedy wymaga uzupenienia karmy i czy nasiona zostay dosypane. (Patrz
rysunek 5.1 zatytuowany „Wysyanie powiadomie przez karmnik dla
ptaków za porednictwem Twittera”).

M

Kup książkę

Poleć książkę

background image

94

5.1. Czego potrzebujemy

Rysunek 5.1.

Wysyanie powiadomie przez karmnik dla ptaków
za porednictwem Twittera (w czasie, gdy karmnik jest
odwiedzany przez ptaki, oraz w sytuacji, gdy wymaga
uzupenienia nasion)

Skoro planujemy ledzi na Twitterze komunikaty o koniecznoci uzupe-
nienia karmnika, warto rozbudowa ten mechanizm o wasny czujnik in-
stalowany na grzdzie, który bdzie rejestrowa wizyty ptaków w karmniku
i analizowa czas ich przebywania na grzdzie. Przed publikacj wpisów
na Twitterze bdziemy rejestrowa te zdarzenia w bazie danych, aby umoli-
wi wizualne prezentowanie wzorców karmienia ptaków w czasie.

Czy w kwietniu ptaki s bardziej wygodniae ni na przykad w lipcu? Czy
ptaki czciej zagldaj do karmnika rano, czy popoudniami? Ile wynosi
redni czas przebywania ptaków na grzdzie w karmniku? Ile czasu mija
pomidzy kolejnymi wizytami ptaków? Jak czsto musimy uzupenia na-
siona w karmniku? wierkajcy karmnik dla ptaków umoliwia nam pro-
wadzenie ciekawych bada w poszukiwaniu odpowiedzi na te i inne wzorce
zachowa ptaków. Czas wzbi si w powietrze!

Kup książkę

Poleć książkę

background image

Rozdzia 5. • wierkajcy karmnik dla ptaków

95

5.1. Czego potrzebujemy

Poniewa wierkajcy karmnik bdzie naszym pierwszym projektem reali-
zowanym na zewntrz, koszty niezbdnego sprztu z kilku powodów bd
nieco wysze. Po pierwsze, jeli nie chcemy wierci dziur przez ca grubo
cian zewntrznych domu ani prowadzi przewodów sieciowych przez otwarte
drzwi czy okna, musimy znale sposób wysyania zdarze notowanych
przez czujniki przy uyciu technik bezprzewodowych. Na szczcie istniej
niskonapiciowe i stosunkowo tanie urzdzenia w formie nadajników radio-
wych XBee. Pocztkowa konfiguracja tych urzdze wymaga dodatkowych
nakadów i wikszego wysiku, jednak wspomniane urzdzenia s do nie-
zawodne, cakiem atwo nawizuj poczenia, a raz zainstalowane nie wy-
magaj naszej uwagi.

Po drugie, mimo e moglibymy zastosowa standardow platform Ar-
duino Uno (tak jak na schematach pocze prezentowanych w tym roz-
dziale), wymiary tej pytki mog si okaza zbyt due dla typowego karm-
nika dla ptaków. W tej sytuacji zachcam do wydania minimalnie wikszej
kwoty na zakup pytki Arduino Nano. Instalacja platformy Nano z pew-
noci bdzie prostsza, zwaywszy na ograniczon przestrze w karmniku.
Niewtpliw zalet pytki Nano jest niemal identyczna konfiguracja wtyków
i ukad elementów sprztowych jak w przypadku wikszego brata. Pytka
Nano oferuje wszystkie moliwoci tradycyjnej platformy Arduino, tyle e
zajmuje duo mniej miejsca.

Po trzecie, mimo e zasilanie tych czci elektronicznych za porednic-
twem dugiego przewodu podczonego do zewntrznego gniazdka (zain-
stalowanego z myl o dekoracjach witecznych) jest moliwe, tak zapro-
jektowany system nie bdzie wystarczajco autonomiczny. Co wicej, sys-
tem karmnika dla ptaków to wprost doskonaa okazja do zastosowania
ekologicznego róda energii.

I wreszcie w zwizku z koniecznoci ochrony elektroniki musimy zadba
o dobre zabezpieczenie systemu przed niesprzyjajcymi warunkami atmosfe-
rycznymi. Oto kompletna lista zakupów (komponenty uywane w tym pro-
jekcie pokazano te na rysunku 5.2 zatytuowanym „Czci systemu wierka-
jcego karmnika dla ptaków”):

1.

Platforma Arduino Uno lub Arduino Nano

1

.

1

http://www.makershed.com/ProductDetails.asp?ProductCode=MKGR1

Kup książkę

Poleć książkę

background image

96

5.1. Czego potrzebujemy

Rysunek 5.2.

Czci systemu wierkajcego karmnika dla ptaków

2.

Dwa moduy XBee z zestawami adapterów oraz przewód FTDI

2

.

3.

Fotokomórka.

4.

Kawaek folii aluminiowej.

5.

Przewód.

6.

Niewielki panel soneczny z wbudowanym akumulatorem i prze-
wodem USB (na przykad podobny do tego oferowanego w sklepie
Solio)

3

.

7.

Jeden rezystor 10 k

i jeden rezystor 10 M — warto sprawdzi

kolorowe paski na stosowanych rezystorach: rezystor 10 k

powinien

by oznaczony paskami brzowym, czarnym, pomaraczowym i zotym,
natomiast rezystor 10 M

powinien by oznaczony paskami brzo-

wym, czarnym, niebieskim i zotym. Potrzebne rezystory pokazano
na rysunku 5.3 zatytuowanym „Rezystory uywane w projekcie
wierkajcego karmnika dla ptaków”. Na zdjciu wida równie foto-
komórk (nazywan take fotorezystorem CdS).

8.

Karmnik dla ptaków z otworem na nasiona, w którym zmieci si
platforma Nano i modu XBee (zabezpieczone przed czynnikami
pogodowymi).

2

http://www.adafruit.com

3

http://www.solio.com/chargers/

Kup książkę

Poleć książkę

background image

Rozdzia 5. • wierkajcy karmnik dla ptaków

97

Rysunek 5.3.

Rezystory uywane w projekcie wierkajcego karmnika
dla ptaków

9.

Komputer (nie ma go na zdjciu), najlepiej z systemem Linux lub
Mac OS oraz zainstalowanym kompilatorem jzyka Python 2.6
lub nowszym (na potrzeby skryptu przetwarzajcego komunikaty
wysyane przez karmnik dla ptaków).

W razie decyzji o uyciu pytki Arduino Nano zamiast tradycyjnej pytki
Arduino Uno trzeba bdzie dodatkowo zakupi standardowy przewód
USB A-mini B (nie ma go na zdjciu), aby poczy pytk Arduino
Nano z komputerem. Co wicej, poniewa na platformie Arduino Nano
zastosowano wtyki mskie zamiast wtyków eskich (stosowanych w przy-
padku pytki Arduino Uno), zamiast standardowych przewodów bdzie-
my potrzebowali odpowiednich kocówek eskich (których take nie
pokazano na zdjciu). Odpowiednie kocówki uatwi czenie przewo-
dów z wtykami na pytce Nano bez koniecznoci ich trwaego lutowania.

Projekt jest bardziej zoony ni system powiadamiania o poziomie wody,
a najtrudniejszym krokiem procesu budowy tego rozwizania bdzie za-
pewnienie niezawodnej pracy moduów XBee. Mimo to projekt jest wart
niezbdnych nakadów — w jego wyniku bdziemy dysponowali nie tylko
supernowoczesnym karmnikiem na miar XXI wieku, ale te skonfiguro-
wanym systemem obejmujcym moduy komunikacji radiowej XBee, który
bdzie nam potrzebny w wielu pozostaych projektach. Gotowy zakasa
rkawy? Do dziea!

Kup książkę

Poleć książkę

background image

98

5.3. Czujnik grzdy

5.2. Budowa rozwizania

Poczenie wszystkich elementów tak, aby pasoway do wntrza karmnika,
moe wymaga pewnej pomysowoci, szczególnie jeli zbiornik na ziarno
nie oferuje dostatecznie duo przestrzeni. Zanim przystpimy do upycha-
nia elektroniki w karmniku, musimy upewni si, e wszystkie komponenty
dziaaj zgodnie z naszymi oczekiwaniami.

1.

Zaczniemy od najprostszego kroku, czyli poczenia z pytk Ar-
duino czujnika pojemnociowego z folii aluminiowej oraz napisania
funkcji, która w momencie zmiany stanu tego czujnika bdzie wy-
syaa komunikat do okna monitorowania portu szeregowego (a do-
celowo do moduu XBee podczonego do tego portu).

2.

W dalszej kolejnoci musimy podczy do pytki Arduino fotoko-
mórk i napisa kod reagujcy na zmiany stanu tego czujnika.

3.

Zaraz potem przystpimy do czenia pary moduów radiowych XBee,
tak aby informacje o wspomnianych zdarzeniach byy przekazywane
pomidzy nadajnikiem XBee poczonym z pytk Arduino a odbior-
nikiem XBee poczonym z komputerem za porednictwem prze-
wodu FTDI USB.

4.

I wreszcie musimy napisa skrypt jzyka Python, który pobierze dane
z bazy danych SQLite, sformatuje je i wyle w formie gotowego wpisu
do publikacji w serwisie Twitter.

Po dopracowaniu i poczeniu wszystkich komponentów bdziemy dyspo-
nowali systemem zoonym z pytki Arduino (najlepiej w wersji Nano),
moduu XBee, czujnika grzdy i fotokomórki — cao bdzie zabezpie-
czona przed czynnikami atmosferycznymi i zainstalowana w karmniku dla
ptaków. Po sprawdzeniu, czy wszystko dziaa prawidowo, naley wyj
na dwór i przetestowa ten system w warunkach polowych.

5.3. Czujnik grzdy

Karmniki dla ptaków maja róne ksztaty i wymiary. Zdecydowaem si za-
stosowa wyjtkowo proste rozwizanie w celu wykrywania zdarze ldowa-
nia ptaków na grzdzie karmnika. Mimo e skonstruowanie mechanizmu
wykrywajcego nacisk na grzdzie z pewnoci byoby moliwe, czas potrzeb-
ny na opracowanie tego rozwizania i jego koszty byyby stosunkowo due,
a przecie naszym jedynym celem jest wykrycie, czy co nie usiado na grzdzie.

Kup książkę

Poleć książkę

background image

Rozdzia 5. • wierkajcy karmnik dla ptaków

99

Alternatywnym rozwizaniem jest monitorowanie zmian pojemnoci elek-
trycznej.

Wystarczy owin grzd karmnika foli aluminiow oraz poczy t foli
z cyfrowymi wtykami na pytce Arduino przy uyciu rezystora. Na podstawie
wartoci bazowych i zmian wykrywanych przez ten czujnik w momencie ldo-
wania ptaka moemy wyznaczy warto progow, której przekroczenie po-
winno powodowa wygenerowanie i wysanie komunikatu o ldujcym ptaku.

Budowa czujnika

Budowa i testowanie czujnika grzdy to najprostszy element tego projektu.
Wystarczy uy kawaka folii aluminiowej wielkoci poowy opakowania
od listka gumy do ucia i owin grzd. Naley nastpnie poczy jeden
koniec rezystora 10 M

z wtykiem cyfrowym nr 7 na pytce Arduino oraz

drugi koniec z wtykiem nr 10. Przewód poczony z foli aluminiow naley
poczy z kocówk rezystora podczon do wtyku cyfrowego nr 7. Od-
powiedni schemat pocze pokazano na rysunku 5.4 zatytuowanym „Spo-
sób podczenia czujnika pojemnociowego”.

Rysunek 5.4.

Sposób podczenia czujnika pojemnociowego

Programowanie czujnika

Naley teraz poczy platform Arduino z komputerem, po czym uruchomi
rodowisko Arduino IDE w celu napisania kodu obsugujcego czujnik.

Kup książkę

Poleć książkę

background image

100

5.3. Czujnik grzdy

Podobnie jak w przypadku projektu systemu powiadamiania o poziomie
wody musimy napisa kod realizujcy nastpujce zadania:

1.

Wywietli wartoci odczytane przez czujnik pojemnociowy w oknie
monitora portu szeregowego rodowiska Arduino IDE.

2.

Zidentyfikuje warto bazow tego czujnika.

3.

Dostosuje natenie prdu w momencie dotykania czujnika palcem.

4.

Zarejestruje now warto uywan w roli wartoci progowej gene-
rujcej powiadomienie.

Aby uatwi sobie wykrywanie zmian natenia prdu elektrycznego w mo-
mencie dotknicia folii palcem lub wyldowania ptaka, skorzystamy z rozwi-
zania opracowanego przez jednego z mioników platformy Arduino —
Paula Badgera. Paul napisa bibliotek Arduino, dziki której mierzenie
zmian wartoci przekazywanych przez czujniki pojemnociowe (podob-
nych do folii uywanej w tym projekcie) jest dziecinnie proste. Biblioteka
nazwana Capacitive Sensing

4

umoliwia programistom platformy Arduino

przeksztacenie dwóch (lub wikszej liczby) wtyków na pytce Arduino
w czujnik pojemnociowy, który moe suy do wykrywania pojemnoci
elektrycznej ludzkiego ciaa. Ciao czowieka cechuje si znacznie wik-
sz pojemnoci ni ciao ptaka, std dotknicie czujnika powoduje duo
wiksz zmian wartoci. Poniewa jednak take pojemno elektryczn
ptaka mona zmierzy, wystarczy odpowiednio dostroi warto progow
stosowan przez nasz program.

Naley pobra t bibliotek, rozpakowa jej zawarto i skopiowa pliki
biblioteki do folderu libraries platformy Arduino. Wicej informacji na ten
temat mona znale w dodatku A zatytuowanym „Instalacja bibliotek plat-
formy Arduino”.

W nastpnym kroku musimy utworzy nowy projekt platformy Arduino
i uy wyraenia

#include CapSense.h;

.

Z powodu duo mniejszej wielkoci samego ciaa i powierzchni styku ciaa
z foli aluminiow wartoci dla ptaka bd zasadniczo róniy si od wartoci
dla czowieka. Jeli to moliwe, warto zmierzy te rónice przy pomocy
prawdziwego ptaka. Z radoci odkryem, e papuki moich dzieci s na tyle
akome, e ochoczo uczestnicz w testach, pod warunkiem e grzda z czujni-
kiem pozwoli im si dosta do ziaren w karmniku. Moje testowe pomiary

4

http://www.arduino.cc/playground/Main/CapSense

Kup książkę

Poleć książkę

background image

Rozdzia 5. • wierkajcy karmnik dla ptaków

101

wykazay, e waciwa warto bazowa powinna mieci si w przedziale
od 900 do 1400 oraz e pojemno elektryczna ciaa ptaka zwiksza t war-
to do ponad 1500. Na podstawie tych wartoci moemy opracowa iden-
tyczny kod warunkowy jak w przypadku systemu powiadamiania o poziomie
wody, tak aby program zmienia stan w odpowiedzi na powiadomienia o ldo-
waniu i odlatywaniu ptaków.

Zacznijmy od napisania kodu, który zaaduje bibliotek CapSense i b-
dzie wywietla odczytywane wartoci pojemnoci w oknie monitora portu
szeregowego.

Plik

TweetingBirdFeeder/BirdPerchTest.pde

#include <CapSense.h>

#define ON_PERCH 1500
#define CAP_SENSE 30
#define ONBOARD_LED 13

CapSense foil_sensor = CapSense(10,7); // czujnik pojemnociowy
// rezystor mostkujcy wtyki cyfrowe nr 10 i 7
// przewód poczony z rezystorem od strony
// wtyku nr 7
int perch_value = 0;
byte perch_state = 0;

void setup()
{
// na potrzeby komunikatów diagnostycznych w oknie portu szeregowego
Serial.begin(9600);

// ustawia wtyk dla wbudowanej diody LED
pinMode(ONBOARD_LED, OUTPUT);
}

void SendPerchAlert(int perch_value, int perch_state)
{
digitalWrite(ONBOARD_LED, perch_state ? HIGH : LOW);
if (perch_state)
Serial.print("Zdarzenie ldowania na grzdzie, perch_value=");
else
Serial.print("Zdarzenie opuszczenia grzdy, perch_value=");
Serial.println(perch_value);
}

void loop() {
// czeka sekund w kadej iteracji ptli
delay(1000);

// pobiera warto czujnika pojemnociowego
perch_value = foil_sensor.capSense(CAP_SENSE);

switch (perch_state)

Kup książkę

Poleć książkę

background image

102

5.4. Czujnik ziarna

{
case 0: // aden ptak nie siedzi obecnie na grzdzie
if (perch_value >= ON_PERCH)
{
perch_state = 1;
SendPerchAlert(perch_value, perch_state);
}
break;
case 1: // jaki ptak siedzi teraz na grzdzie
if (perch_value < ON_PERCH)
{
perch_state = 0;
SendPerchAlert(perch_value, perch_state);
}
break;
}
}

Warto zwróci uwag na warto staej

ON_PERCH

(równ 1500), któr porów-

nujemy z zarejestrowan wartoci zmiennej

perch_value

. Z uwagi na ró-

nice dotyczce przewodnictwa elektrycznego zastosowanej folii i samej po-
wierzchni czujnika kady powinien dostosowa warto progow reprezento-
wan przez sta

ON_PERCH

(tak jak dostosowywalimy odpowiednie progi

w projekcie systemu powiadamiania o poziomie wody). Naley te zwróci
uwag na warto 30 przypisan staej

CAP_SENSE

. Ta warto okrela licz-

b pobra próbnych wartoci w jednym cyklu mierzenia pojemnoci.

Skoro dysponujemy ju dziaajcym czujnikiem grzdy dla ptaków, czas opra-
cowa mechanizm wykrywajcy niski poziom ziarna. Jak to zrobi? Warto
zastosowa fotokomórk.

5.4. Czujnik ziarna

Fotokomórka mierzy intensywno wiata — wiksza intensywno prze-
kada si na wysze natenie prdu; sabsze wiato powoduje spadek
tego natenia. Szczegóowe wyjanienie dziaania fotokomórek i prze-
wodnik na temat ich stosowania mona znale na stronie internetowej
Ladyady

5

. Umieszczenie fotokomórki poniej normalnego poziomu ziaren

wsypanych do karmnika umoliwi nam wykrywanie zdarzenia polegajce-
go na spadku poziomu karmy poniej czujnika — do fotokomórki bdzie
wówczas docierao wicej wiata, a nasz system bdzie móg wygenerowa
komunikat o koniecznoci uzupenienia ziaren.

5

http://www.ladyada.net/learn/sensors/cds.html

Kup książkę

Poleć książkę

background image

Rozdzia 5. • wierkajcy karmnik dla ptaków

103

Przed wywierceniem dziur w karmniku i zainstalowaniem fotokomórki
musimy jeszcze napisa odpowiedni kod i przetestowa go w podobny sposób
jak w przypadku wasnorcznie skonstruowanego czujnika pojemnociowego.

Jedn kocówk fotokomórki naley poczy z wtykiem 5-woltowym na
pytce Arduino; drug kocówk naley poczy z wtykiem analogowym
nr 0. Wtyk analogowy nr 0 na pytce Arduino naley nastpnie zmostko-
wa z wtykiem uziemienia za pomoc rezystora 10 k

(patrz rysunek 5.5

zatytuowany „Schemat poczenia fotokomórki”). Czy opisany schemat
pocze nie wyglda znajomo? Tak — identyczn konfiguracj stosowali-
my ju dla innych czujników czonych z platform Arduino. Jest to do
typowy wzorzec czenia wielu typów czujników z pytk Arduino.

Rysunek 5.5.

Schemat poczenia fotokomórki

Po podczeniu fotokomórki naley poczy pytk Arduino z kompute-
rem (za pomoc przewodu szeregowego USB) i uruchomi rodowisko
Arduino IDE. Moemy teraz zastosowa t sam technik co w przypadku
czujnika pojemnociowego, aby przeledzi wartoci dla wtyku analogo-
wego nr 0 (wywietlane w oknie monitora portu szeregowego rodowiska
Arduino IDE) i na tej podstawie wyznaczy wartoci bazowe — okreli
warto dla odsonitej fotokomórki. Warto teraz zasoni czujnik palcem,
aby zablokowa dopyw wiata. Naley te zanotowa, jak zmienia si
warto odczytana z fotokomórki.

Tak jak w przypadku testów czujnika pojemnociowego, musimy opraco-
wa pewne procedury i wyraenia warunkowe, które sprawdz progi nat-
enia wiata. W praktyce moemy nawet skopiowa i wklei kod testujcy

Kup książkę

Poleć książkę

background image

104

5.4. Czujnik ziarna

czujnik pojemnociowy i ograniczy si do dostosowania nazw zmiennych
oraz przypisania odpowiednich wtyków.

Plik

TweetingBirdFeeder/SeedPhotocellTest.pde

#define SEED 500
#define ONBOARD_LED 13
#define PHOTOCELL_SENSOR 0
int seed_value = 0;
byte seed_state = 0;
void setup()
{
// na potrzeby komunikatów diagnostycznych w oknie portu szeregowego
Serial.begin(9600);

// ustawia wtyk dla wbudowanej diody LED
pinMode(ONBOARD_LED, OUTPUT);
}

void SendSeedAlert(int seed_value, int seed_state)
{
digitalWrite(ONBOARD_LED, seed_state ? HIGH : LOW);
if (seed_state)
Serial.print("Uzupenij ziarno, seed_value=");
else
Serial.print("Karma uzupeniona, seed_value=");
Serial.println(seed_value);
}

void loop() {
// czeka sekund w kadej iteracji ptli
delay(1000);

// sprawdza warto fotokomórki ledzcej poziom ziarna
seed_value = analogRead(PHOTOCELL_SENSOR);

switch (seed_state)
{
case 0: // pojemnik na ziarno zosta napeniony
if (seed_value >= SEED)
{
seed_state = 1;
SendSeedAlert(seed_value, seed_state);
}
break;
case 1: // pojemnik na ziarno jest pusty
if (seed_value < SEED)
{
seed_state = 0;
SendSeedAlert(seed_value, seed_state);
}
break;
}
}

Kup książkę

Poleć książkę

background image

Rozdzia 5. • wierkajcy karmnik dla ptaków

105

Zmierzenie i ustalenie odpowiedniej wartoci progowej dla fotokomórki
(reprezentowanej przez sta

SEED

) jest duo prostsze ni w przypadku czujni-

ka pojemnociowego, a uzyskana warto jest bardziej wiarygodna. Mimo
e fotokomórk mona zasoni palcem, aby zmierzy warto w warunkach
braku dopywu wiata, lepszym rozwizaniem bdzie zasypanie czujnika
prawdziwym ziarnem. Jeli z jakiego powodu nie chcemy wierci dziur
w karmniku dla ptaków, aby zainstalowa fotokomórk, moemy umieci
czujnik na dnie papierowego kubka.

Tak jak podczas kalibrowania wartoci progowych czujnika w systemie po-
wiadamiania o poziomie wody, naley doda nastpujce wiersze za wierszem

seed_value = analogRead(PHOTOCELL_SENSOR);

w gównej ptli programu:

Serial.print("seed_value=");
Serial.println(seed_value);

Naley zapisa warto pocztkow zmiennej

seed_value

, po czym wypeni

pojemnik ziarnem i zmierzy now warto. Na podstawie tych wartoci
naley okreli warto pocztkow i warto progow dla fotokomórki.

Jeli zasonicie fotokomórki nie powoduje adnej zmiany wartoci, warto
raz jeszcze sprawdzi wszystkie poczenia. W przypadku mojej fotokomórki
warto bazowa miecia si w przedziale od 450 do 550. Zasonicie
czujnika palcem powodowao natychmiastowy spadek tej wartoci poniej
100. Kady powinien zastosowa wartoci progowe dobrane na podstawie
wasnych testów. Musimy te pamita o koniecznoci ponownej kalibracji
czujnika ju po zamontowaniu w karmniku dla ptaków.

Skoro dysponujemy ju dziaajcymi mechanizmami monitorowania czujnika
grzdy i fotokomórki, musimy znale sposób sygnalizowania przekroczenia
wartoci progowych przyjtych dla tych czujników. Prowadzenie przewo-
du sieciowego od domowego koncentratora do gazi drzewa na zewntrz
budynku byoby niepraktyczne. Sporym wyzwaniem byaby take instala-
cja platformy Arduino z doczonym moduem sieciowym w bardzo ogra-
niczonej przestrzeni karmnika dla ptaków. W tej sytuacji warto zastosowa
wygodny mechanizm komunikacji bezprzewodowej (wymagajcy stosun-
kowo niewiele mocy elektrycznej), który w zupenoci wystarczy do prze-
syania powiadomie o przekroczeniu wartoci progowych przez wskaza-
nia czujników. Po nawizaniu komunikacji bezprzewodowej moemy uy
wikszej mocy obliczeniowej i wikszych zasobów pamiciowych do przetwa-
rzania i analizy gromadzonych danych.

Kup książkę

Poleć książkę

background image

106

5.5. Komunikacja bezprzewodowa

5.5. Komunikacja bezprzewodowa

Mimo e istniej moduy platformy Arduino obsugujce wszechobecny
standard Wi-Fi (802.11b/g), na przykad WiFly Shield firmy Sparkfun,
w przypadku tej platformy do komunikacji bezprzewodowej czciej sto-
suje si moduy XBee. Pocztkowe nakady zwizane z zakupem zestawu
urzdze XBee mog by do wysokie. Due koszty wynikaj z koniecz-
noci zakupu (oprócz pary moduów XBee) przewodu FTDI USB po-
trzebnego do poczenia jednego z tych moduów z komputerem, tak aby
peni funkcj bezprzewodowego portu szeregowego.

Drugi modu XBee najczciej jest czony z platform Arduino. Istniej
te dodatkowe zestawy upraszczajce czenie tych elementów — umoli-
wiajce instalowanie moduów XBee przy uyciu specjalnych wtyczek i wy-
wietlanie stanu transmisji danych za pomoc wbudowanych diod LED.
Takie wizualne wskaniki mog by do przydatne podczas diagnozowa-
nia poczenia pary moduów XBee i usuwania ewentualnych bdów.
Mimo wszystkich trudnoci moliwoci oferowane przez moduy XBee
(niski pobór prdu i stosunkowo duy zasig — maksymalnie 50 metrów)
czyni z tych urzdze wprost doskona technologi komunikacji bezprze-
wodowej na potrzeby tego projektu.

Z myl o uproszczeniu czenia moduów XBee firma Adafruit zaprojekto-
waa zestaw adapterów, który jednak wymaga przylutowania kilku niewiel-
kich komponentów do pytki Arduino. Adaptery naley stosowa zgodnie
z instrukcjami dostpnymi na stronie internetowej Ladyady

6

.

Po poczeniu moduów XBee konfiguracja i nawizanie komunikacji po-
midzy par tych moduów nie s trudne. Warto jednak pamita, e jedno
z najbardziej przydatnych narzdzi uatwiajcych konfiguracj tych mo-
duów dziaa tylko w systemie Windows.

Zgodnie z instrukcjami opisujcymi schemat czenia moduów XBee w topo-
logii punkt – punkt dostpnymi na stronie Ladyady

7

naley poczy wtyki

zasilania, uziemienia (Gnd), odbioru (RX) i transmisji (TX) jednego
moduu XBee z zamontowanym adapterem odpowiednio do wtyków 5V,
Gnd, cyfrowego nr 2 i cyfrowego nr 3 na pytce Arduino. Pytk Arduino
naley nastpnie poczy z komputerem, umieci na platformie program

6

http://www.ladyada.net/make/xbee/

7

http://ladyada.net/make/xbee/point2point.html

Kup książkę

Poleć książkę

background image

Rozdzia 5. • wierkajcy karmnik dla ptaków

107

testowy, otworzy okno monitora portu szeregowego rodowiska Arduino
IDE i upewni si, e jest ustawiona odpowiednia szybko transmisji
(9600). Naley nastpnie (jeszcze przed odczeniem platformy Arduino)
poczy komputer z drugim moduem XBee za porednictwem przewodu
FTDI USB. W nastpnym kroku musimy otworzy sesj terminala portu
szeregowego: program Hyperterminal w systemie Windows, polecenie

screen

w systemie Mac lub rozmaite programy do obsugi komunikacji szeregowej
dostpne dla systemu Linux, na przykad Minicom

8

.

Po nawizaniu poczenia szeregowego wystarczy wpisa kilka znaków w
oknie danych wejciowych uytej aplikacji. Jeli oba moduy XBee zostay
prawidowo skonfigurowane, wpisane znaki powinny zosta wywietlone
w oknie monitora portu szeregowego rodowiska Arduino IDE.

Korzystanie z narzdzia screen

Aplikacja

screen

jest wygodnym narzdziem do monitorowania por-

tu szeregowego dostpnym dla platform na bazie systemu Unix,
czyli systemów Mac OS X i Linux. Aby uy tego programu w systemie
OS X, naley okreli port szeregowy, do którego podczono przewód
FTDI USB — mona to zrobi za pomoc rodowiska Arduino IDE.
Z menu Tools tego rodowiska naley wybra opcj Serial Port, aby zi-
dentyfikowa przypisany port szeregowy.

W moim przypadku poczenie adaptera FTDI USB z XBee jest ozna-
czone jako urzdzenie /dev/tty.usbserial-A6003SHc, jednak na innym
komputerze to samo poczenie moe by reprezentowane w inny
sposób (w zalenoci od pozostaych urzdze podczonych do
komputera). Po otwarciu aplikacji terminala naley wpisa polecenie

screen /dev/tty.YOURDEVICE 9600

. W wyniku tego polecenia zostanie

otwarty port szeregowy i uzyskamy moliwo wpisywania i otrzymy-
wania znaków z szybkoci transmisji 9600. Aby zamkn narzdzie,
naley nacisn kolejno kombinacje klawiszy Ctrl+A oraz Ctrl+\.

Jeli do poczenia moduów XBee z pytk Arduino i przewodem FTDI
uyto odpowiednich adapterów, w czasie bezprzewodowej transmisji znaków
pomidzy moduami XBee powinny miga diody LED (zielona podczas
wysyania danych i czerwona podczas odbioru danych).

8

http://alioth.debian.org/projects/minicom/

Kup książkę

Poleć książkę

background image

108

5.5. Komunikacja bezprzewodowa

Jeli w oknie odbieranych danych nie wida adnych znaków, naley jeszcze
raz sprawdzi przewody czce modu XBee z odpowiednimi wtykami na
pytce Arduino. Warto te zamieni te moduy miejscami, aby sprawdzi, czy
oba urzdzenia s rozpoznawane po poczeniu z komputerem za pomoc
przewodu FTDI USB. W oknie terminala aplikacji portu szeregowego
naley wpisa polecenie

AT

i sprawdzi, czy w odpowiedzi otrzymamy po-

twierdzenie

OK

.

Jeli moduy XBee wci nie mog nawiza poczenia, warto poprosi
o pomoc sprzedawc, u którego zakupiono ten sprzt.

Po udanej próbie nawizania komunikacji przez par moduów XBee mo-
emy ponownie podczy fotokomórk i czujnik pojemnociowy do pytki
Arduino i poczy kod obsugujcy ten modu z kodem analizujcym warunki
progowe obu czujników. Kompletny schemat pocze tego systemu pokaza-
no na rysunku 5.6 zatytuowanym „wierkajcy karmnik dla ptaków z czuj-
nikami i moduem XBee podczonymi do platformy Arduino”.

Rysunek 5.6.

wierkajcy karmnik dla ptaków z czujnikami i moduem
XBee podczonymi do platformy Arduino

Kup książkę

Poleć książkę

background image

Rozdzia 5. • wierkajcy karmnik dla ptaków

109

Warto rozway uycie uniwersalnej pytki montaowej lub zlutowanie
czujników, uytych przewodów i odpowiednich wtyków na pytce Arduino.
Czytelnicy, którzy do testów wol uywa pytki uniwersalnej, musz pami-
ta, e taka pytka najprawdopodobniej nie zmieci si w karmniku, zatem
przewody czce elementy systemu trzeba bdzie przylutowa dopiero po
instalacji w miejscu docelowym. W zalenoci od pooenia i orientacji
pytki Arduino Uno lub Nano wewntrz karmnika by moe bdziemy
musieli uy dla adaptera XBee prostych wtyków zamiast standardowych
wtyków wygitych w prawo. Naszym celem jest umieszczenie wszystkich
potrzebnych elementów wewntrz karmnika w sposób gwarantujcy bez-
pieczestwo i jednoczenie moliwo konserwacji systemu. Warto przy tym
pamita, e w przeciwiestwie do pytki Arduino Uno pytka Arduino Na-
no stosuje mskie wtyki. Oznacza to, e aby lepiej poczy mskie wtyki na
pytce Nano, naley zastosowa przewody z eskimi kocówkami.

Koczenie szkicu

Musimy odczytywa wartoci obu czujników — czujnika pojemnociowe-
go z folii aluminiowej oraz fotokomórki. Pocztkowo odczytywane warto-
ci bd trafiay do okna monitora portu szeregowego rodowiska Arduino
IDE, a docelowo (po wprowadzeniu drobnej zmiany w kodzie) bd wy-
syane przez modu XBee. Na tym etapie naszym celem jest poczenie
kodu sprawdzajcego wyznaczone wczeniej wartoci progowe dla czujni-
ka pojemnociowego i fotokomórki z kodem wysyajcym do moduu
XBee ostrzeenia o przekroczeniu tych wartoci. Po dodaniu tej logiki do
napisanego wczeniej kodu testujcego stan grzdy i pojemnika na nasiona
moemy zakoczy prac nad szkicem dla tego projektu.

Plik

TweetingBirdFeeder/TweetingBirdFeeder.pde

#include <CapSense.h>;
#include <NewSoftSerial.h>

#define ON_PERCH 1500
#define SEED 500
#define CAP_SENSE 30
#define ONBOARD_LED 13
#define PHOTOCELL_SENSOR 0

// ustawia wtyki cyfrowe na potrzeby szeregowego wysyania/odbioru danych
// przez modu XBee
NewSoftSerial XBeeSerial = NewSoftSerial(2, 3);
CapSense foil_sensor = CapSense(10,7); // czujnik pojemnociowy
// rezystor mostkujcy wtyki cyfrowe
// nr 10 i 7

Kup książkę

Poleć książkę

background image

110

5.5. Komunikacja bezprzewodowa

// przewód poczony z rezystorem
// od strony wtyku nr 7
int perch_value = 0;
byte perch_state = 0;
int seed_value = 0;
byte seed_state = 0;

void setup()
{
// na potrzeby komunikatów diagnostycznych w oknie portu szeregowego
Serial.begin(9600);

// na potrzeby transmisji danych za porednictwem moduu XBee
XBeeSerial.begin(9600);

// ustawia wtyk dla wbudowanej diody LED
pinMode(ONBOARD_LED, OUTPUT);
}

void SendPerchAlert(int perch_value, int perch_state)
{
digitalWrite(ONBOARD_LED, perch_state ? HIGH : LOW);
if (perch_state)
{
XBeeSerial.println("przylot");
Serial.print("Zdarzenie ldowania na grzdzie, perch_value=");
}
else
{
XBeeSerial.println("odlot");
Serial.print("Zdarzenie opuszczenia grzdy, perch_value=");
}
Serial.println(perch_value);
}

void SendSeedAlert(int seed_value, int seed_state)
{
digitalWrite(ONBOARD_LED, seed_state ? HIGH : LOW);
if (seed_state)
{
XBeeSerial.println("dosyp");
Serial.print("Uzupenij ziarno, seed_value=");
}
else
{
XBeeSerial.println("ziarnoWNormie");
Serial.print("Karma uzupeniona, seed_value=");
}
Serial.println(seed_value);
}

void loop() {
// czeka sekund w kadej iteracji ptli
delay(1000);

Kup książkę

Poleć książkę

background image

Rozdzia 5. • wierkajcy karmnik dla ptaków

111

// sprawdza warto czujnika pojemnociowego na grzdzie
perch_value = foil_sensor.capSense(CAP_SENSE);

// sprawdza warto fotokomórki ledzcej poziom ziarna
seed_value = analogRead(PHOTOCELL_SENSOR);

switch (perch_state)
{
case 0: // aden ptak nie siedzi na grzdzie
if (perch_value >= ON_PERCH)
{
perch_state = 1;
SendPerchAlert(perch_value, perch_state);
}
break;
case 1: // jaki ptak siedzi teraz na grzdzie
if (perch_value < ON_PERCH)
{
perch_state = 0;
SendPerchAlert(perch_value, perch_state);
}
break;
}

switch (seed_state)
{
case 0: // pojemnik na ziarno zosta napeniony
if (seed_value >= SEED)
{
seed_state = 1;
SendSeedAlert(seed_value, seed_state);
}
break;
case 1: // pojemnik na ziarno jest pusty
if (seed_value < SEED)
{
seed_state = 0;
SendSeedAlert(seed_value, seed_state);
}
break;
}
}

Warto zwróci uwag na odwoania do biblioteki obsugujcej czujnik pojem-
nociowy i nowej biblioteki obsugujcej komunikacj za porednictwem
portu szeregowego na pocztku tego szkicu. Zmienne, które bd uyway
odwoa do tych bibliotek, zainicjalizowano w tym samym miejscu, w którym
ustawiono wartoci zmiennych progowych. W dalszej czci kodu konfigu-
rujemy poczenia z oknem monitora portu szeregowego i moduem XBee,
a take z wbudowan diod LED na pytce Arduino (wtyk nr 13). Po za-
koczeniu inicjalizacji program uruchamia ptl i czeka na przekroczenie
wartoci progowych dla czujników grzdy i (lub) ziarna. W razie wykrycia

Kup książkę

Poleć książkę

background image

112

5.5. Komunikacja bezprzewodowa

zmiany warunków szkic wyle odpowiednie komunikaty zarówno do okna
monitorowania portu szeregowego w rodowisku Arduino IDE, jak i do
moduu komunikacji radiowej XBee.

Jeli zarówno czujnik pojemnociowy, jak i fotokomórka prawidowo prze-
kazuj wartoci, naley przekierowa dane z okna monitorowania portu
szeregowego rodowiska Arduino IDE do moduu XBee poczonego
z platform Arduino. Warto jeszcze otworzy okno aplikacji testujcej port
szeregowy w trybie ledzenia moduu XBee podczonego za pomoc
przewodu FTDI i sprawdzi, czy wszystko dziaa prawidowo — jeli tak,
dane wywietlane w oknie monitora portu szeregowego rodowiska Arduino
IDE powinny by widoczne take w aplikacji portu szeregowego na kom-
puterze, do którego podczono przewód FTDI. Czy komunikacja bez-
przewodowa nie jest wspaniaa?

Na tym etapie sprzt potrzebny do realizacji tego projektu jest prawidowo
poczony i przetestowany — caa konstrukcja powinna przypomina
karmnik mojego autorstwa pokazany na rysunku 5.7 zatytuowanym „Pa-
puka moe pomóc w testowaniu i diagnozowaniu wartoci progowych
czujnika grzdy dla zdarze ldowania i odlatywania ptaków”.

Rysunek 5.7.

Papuka moe pomóc w testowaniu i diagnozowaniu
wartoci progowych czujnika grzdy dla zdarze ldowania
i odlatywania ptaków

Zanim jednak przystpimy do instalowania tego sprztu w karmniku dla pta-
ków, musimy zbudowa jeszcze jeden wany komponent. Uyjemy jzyka

Kup książkę

Poleć książkę

background image

Rozdzia 5. • wierkajcy karmnik dla ptaków

113

programowania Python do napisania krótkiego programu, który bdzie na-
suchiwa komunikatów o ldujcych ptakach, sprawdza stan pojemnika
z nasionami i publikowa stosowne wpisy na Twitterze. Przejdmy wic do
pisania odpowiedniego kodu.

5.6. wierkanie w Pythonie

Istnieje wiele jzyków programowania, w których mona zaimplementowa
mechanizm monitorowania i interpretacji komunikatów przychodzcych
do konsoli portu szeregowego oraz wysyania komunikatów za porednic-
twem portu szeregowego. Istnieje te wiele bibliotek Twittera dla rónych
jzyków programowania.

Wybraem jzyk Python dla tego i wielu innych skryptów prezentowanych
w tej ksice, poniewa jzyk ten ma atw w interpretacji skadni, jest do-
mylnie instalowany wraz z systemami operacyjnymi Linux i Mac OS X
oraz oferuje wiele przydatnych bibliotek (na przykad SQLite) w swojej
podstawowej dystrybucji, zatem nie wymaga doinstalowywania tych kom-
ponentów. Czytelnikom, którzy chc si nauczy programowania w jzyku
Python, polecam ksik Python. Wprowadzenie [LA03].

W tym projekcie bdziemy potrzebowali prostego skryptu o nazwie twe-
etingbirdfeeder.py
, który bdzie realizowa nastpujce zadania:

1.

Rejestrowanie zdarze (wraz z dat i godzin) ldowania i odlo-
tów ptaków na podstawie komunikatów wysyanych przez czujnik
grzdy. Dane maj by zapisywane w tabeli

birdfeeding

bazy da-

nych

tweetingbirdfeeder

.

2.

Rejestrowanie daty i godziny zdarze polegajcych na wykryciu
braku ziaren i uzupenieniu pojemnika na karm. Dane maj by
zapisywane w tabeli

seedstatus

, która take naley do bazy danych

tweetingbirdfeeder

.

3.

Nasuchiwanie danych przychodzcych i wysyanie komunikatów
za porednictwem nadajnika XBee poczonego z komputerem przy
uyciu przewodu FTDI. Reagowanie na zdarzenia poprzez zapisy-
wanie danych wraz z datami, godzinami i rejestrowanymi warunkami.

4.

Nawizywanie poczenia z Twitterem za porednictwem usugi
uwierzytelniania OAuth i wysyanie wpisów na temat karmienia pta-
ków i poziomu ziaren w karmniku.

Kup książkę

Poleć książkę

background image

114

5.6. wierkanie w Pythonie

Na potrzeby tego projektu bdziemy musieli zainstalowa tylko dwie do-
datkowe biblioteki Pythona:

pyserial

i

python-twitter

.

Oprócz publikowania wpisów na wybranym koncie na Twitterze warto
zadba o odpowiedni wizualizacj trendów opisywanych w tych wpisach,
na przykad czstotliwoci wizyt ptaków w karmniku, liczby tych odwie-
dzin wedug dat i godzin oraz redniego czasu pomidzy uzupenianiem
karmy. Takie rozwizanie umoliwi nam ledzenie trendów na podstawie
danych zarejestrowanych w cigu godziny, doby, miesica i roku. Warunkiem
prezentacji tego rodzaju statystyk jest gromadzenie danych w odpowiednim
formacie.

Konfiguracja bazy danych

Poniewa poczwszy od wersji 2.5, jzyk Python oferuje wbudowan obsug
baz danych SQLite i poniewa nasze dane nie wymagaj wyszukanego,
autonomicznego serwera bazy danych, baza SQLite jest wprost idealnym
rozwizaniem dla tego projektu. Mimo e wartoci mona by zapisywa
w zwykym pliku CSV (z danymi oddzielonymi przecinkami), uycie bazy
danych SQLite ma dwie zasadnicze zalety. Po pierwsze, ten sposób prze-
chowywania danych uatwi wykonywanie zapyta analitycznych w przyszo-
ci. Po drugie, baza danych oferuje wiksz elastyczno w zakresie gro-
madzenia danych o rónych rodzajach zdarze i zarzdzania tymi danymi
— w wielu przypadkach wystarczy tylko doda odpowiednie kolumny do
tabeli.

Do utworzenia bazy danych w formacie pliku

sqlite3

naley uy polecenia

wiersza polece

sqlite3

. Narzdzie jest domylnie instalowane wraz z syste-

mem Mac OS X. W wikszoci systemów Linux naley pobra to narzdzie
z repozytorium aplikacji waciwego danej dystrybucji. W dystrybucjach syste-
mu Linux na bazie Debiana, na przykad w systemie Ubuntu, instalacja apli-
kacji wymaga uycia polecenia

sudo apt-get install sqlite3 libsqlite3-dev

.

Uytkownicy systemu Windows bd musieli pobra narzdzie sqlite3.exe
z witryny internetowej bazy danych SQLite

9

.

Po zainstalowaniu systemu bazy danych naley wpisa polecenie

sqlite3

w oknie terminala. Polecenie spowoduje wywietlenie komunikatów podob-
nych do tych pokazanych poniej:

9

http://www.sqlite.org/download.html

Kup książkę

Poleć książkę

background image

Rozdzia 5. • wierkajcy karmnik dla ptaków

115

SQLite version 3.7.6
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>

Instalacja systemu SQLite na komputerze czytelnika oczywicie moe mie
inny numer wersji.

Musimy teraz wpisa wyraenie jzyka SQL tworzce now baz danych.
W tym celu naley opuci powok polece

sqlite

, wpisujc kolejno znaki

.q

i naciskajc klawisz waciwy znakowi powrotu karetki. Zaraz potem nale-

y ponownie uruchomi narzdzie

sqlite3

, tym razem podajc nazw bazy

danych, która ma zosta otwarta.

Baz danych dla tego projektu nazwiemy

tweetingbirdfeeder

, a jej dane

bd przechowywane w pliku nazwanym tweetingbirdfeeder.sqlite. Poniewa
wspomniana baza danych jeszcze nie istnieje, system SQLite automatycznie
utworzy odpowiedni plik. Plik bazy danych zostanie utworzony w katalogu,
z którego uruchomiono narzdzie

sqlite3

. Jeli na przykad polecenie

sqlite3

wpisalimy z poziomu katalogu home, plik nowej bazy danych zostanie
utworzony wanie w tym katalogu.

W bazie danych tweetingbirdfeeder.sqlite naley teraz utworzy now tabel
nazwan

birdfeeding

. Struktur tej tabeli pokazano poniej:

Nazwa
kolumny

Typ
danych

Klucz
gówny?

Automatyczne
zwikszanie?

Dopuszczalne
wartoci puste?

Unikatowa?

id

INTEGER

TAK

TAK

NIE

TAK

time

DATETIME

NIE

NIE

NIE

NIE

event

TEXT

NIE

NIE

NIE

NIE

Odpowiedni tabel moemy utworzy, wpisujc nastpujce wyraenie jzy-
ka SQL w wierszu polece narzdzia sqlite:

[~]$ sqlite3 tweetingbirdfeeder.sqlite
SQLite version 3.7.6
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> CREATE TABLE "birdfeeding" ("id" INTEGER PRIMARY KEY NOT NULL UNIQUE,
"time" DATETIME NOT NULL,"event" TEXT NOT NULL);

Po utworzeniu tabeli

birdfeeding

potrzebujemy jeszcze jednej tabeli o po-

dobnej strukturze. Nowa tabela, nazwana

seedstatus

, bdzie naleaa do tej

samej bazy danych:

Kup książkę

Poleć książkę

background image

116

5.6. wierkanie w Pythonie

Nazwa
kolumny

Typ
danych

Klucz
gówny?

Automatyczna
inkrementacja?

Dopuszczalne
wartoci puste?

Unikatowa?

id

INTEGER

TAK

TAK

NIE

TAK

time

DATETIME

NIE

NIE

NIE

NIE

event

TEXT

NIE

NIE

NIE

NIE

Tak jak w przypadku tabeli

birdfeeding

, utworzenie nowej tabeli

seedstatus

wymaga wpisania odpowiedniego wyraenia jzyka SQL w wierszu polece
narzdzia sqlite:

[~]$ sqlite3 tweetingbirdfeeder.sqlite
SQLite version 3.7.6
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> CREATE TABLE "seedstatus" ("id" INTEGER PRIMARY KEY NOT NULL,
"time" DATETIME NOT NULL ,"event" TEXT NOT NULL );

Dodatek SQLite Manager

Mimo e narzdzia systemu SQLite obsugiwane z poziomu wiersza
polece oferuj wszystkie elementy niezbdne do tworzenia baz da-
nych i zarzdzania tymi bazami, w pewnych przypadkach prostszym
rozwizaniem jest korzystanie z aplikacji oferujcej graficzny inter-
fejs uytkownika. Aplikacje z takim interfejsem s szczególnie przydat-
ne, jeli musimy przewija du liczb wierszy w jednym oknie. Istnieje
wiele aplikacji open source umoliwiajcych przegldanie baz danych
SQLite i oferujcych graficzny interfejs uytkownika. Uytkowników prze-
gldarki internetowej Mozilla Firefox zachcam do instalacji dodatku SQ-
Lite Manager, który mona stosowa na wielu rónych platformach

10

.

Instalacja tego dodatku jest bardzo prosta. Z menu przegldarki Fire-
fox naley wybra opcj Dodatki, po czym znale dodatek SQLite Ma-
nager i klikn przycisk Zainstaluj. Po zainstalowaniu dodatku naley
otworzy zakadk Rozszerzenia w oknie dodatków i klikn przycisk Opcje
dla dodatku SQLite Manager. Utworzenie nowej bazy danych sprowa-
dza si do kliknicia ikony New Database na pasku narzdzi dodatku
SQLite Manager. Równie proste jest zapisywanie i otwieranie plików
baz danych SQLite.

10

https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/

Kup książkę

Poleć książkę

background image

Rozdzia 5. • wierkajcy karmnik dla ptaków

117

Dysponujemy ju gotow baz danych, zatem moemy przystpi do pracy
nad kodem importujcym t baz oraz wspomniane wczeniej biblioteki Se-
rial i Twitter. Musimy te przygotowa skrypt nasuchujcy zdarze przesy-
anych za porednictwem portu szeregowego i rejestrujcy te dane (wraz ze
znacznikami czasowymi) w odpowiedniej tabeli bazy danych.

Procedura przechwytywania zdarzenia powinna si zakoczy publikacj
wpisu na Twitterze. Zanim jednak bdziemy mogli wysya takie wpisy
z poziomu programu, musimy utworzy konto na Twitterze i zarejestrowa
si, aby uzyska klucz interfejsu Twitter API wraz z powizanymi danymi
uwierzytelniajcymi standardu OAuth. Przejdmy wic do procesu uzyski-
wania klucza do wspomnianego interfejsu API.

Dane uwierzytelniajce interfejsu API Twittera

Zanim bdziemy mogli umieszcza wpisy na Twitterze, musimy oczywicie
zaoy konto w tym serwisie. Co wicej, zanim bdziemy mogli wysya wpisy
z poziomu naszego programu, a konkretnie funkcji lub bibliotek jzyka
programowania obsugujcych standard uwierzytelniania OAuth

11

, musimy

utworzy identyfikator aplikacji przypisany do odpowiedniego konta na
Twitterze. Mimo e mona wykorzysta do tego celu istniejce konto na
Twitterze, moim zdaniem lepszym rozwizaniem jest utworzenie zupenie
nowego konta specjalnie na potrzeby tego projektu. Dziki temu uytkownicy
ledzcy moje dotychczasowe konto nie bd niepokojeni eksperymentalnymi
powiadomieniami w zwizku z tworzonymi projektami. Takie rozwizanie
umoliwia te bardziej selektywny wybór odbiorców postów publikowanych
przez tworzon aplikacj. Po rozwaeniu wszystkich argumentów naley
utworzy nowe konto i uzyska identyfikator aplikacji wygenerowany spe-
cjalnie dla projektu wierkajcego karmnika dla ptaków.

Musimy teraz otworzy stron dev.twitter.com, zalogowa si przy uyciu
nowych danych uwierzytelniajcych i wybra opcj Create an app. Na otwar-
tej stronie Create an application naley poda unikatow nazw nowej
aplikacji, opis zoony z co najmniej dziesiciu znaków oraz adres strony in-
ternetowej rejestrowanej aplikacji. Czytelnicy, którzy nie dysponuj wasnymi
witrynami internetowymi oferujcymi moliwo pobrania aplikacji, mog
wpisa jaki tymczasowy adres. Naley nastpnie zaznaczy pole Client under
Application Type
i wybra opcj Read & Write z menu Default Access

11

http://oauth.net/

Kup książkę

Poleć książkę

background image

118

5.6. wierkanie w Pythonie

Type. Mona te wskaza niestandardow ikon aplikacji, jednak ten krok
nie jest wymagany. Po wpisaniu tekstu zabezpieczenia CAPTCHA na-
ley klikn przycisk Create your Twitter application na dole strony. Przed
przejciem do nastpnego kroku naley jeszcze zapozna si z warunkami
korzystania z interfejsu Twitter API i zaakceptowa proponowane zapisy.

Po zaakceptowaniu dania wygenerowany zostanie unikatowy klucz API,
klucz konsumenta standardu OAuth oraz klucz tajny konsumenta. Aby
uzyska dostp do tokenu dostpu (oauth_token) i klucza tajnego tokenu
dostpu (oauth_token_secret), naley klikn opcj My Access Token wi-
doczn po lewej stronie. Obie wartoci naley skopiowa i zapisa w bez-
piecznym, odpowiednio chronionym pliku. Obie wartoci bd potrzebne
do komunikacji z nowym kontem na Twitterze z poziomu kodu programu.
Oczywicie naley zadba o zachowanie tych wartoci w cisej tajemnicy!
Nie chcemy przecie, aby jaki zoliwy, pozbawiony skrupuów uytkownik
przej nasz tajny token, wykorzystywa go do wysyania spamu do naszych
przyjació i doprowadza do pasji ca spoeczno uytkowników Twittera.

Skoro dysponujemy ju kontem na Twitterze i poprawnym kluczem interfejsu
API tego serwisu, moemy wykorzysta uzyskane dane uwierzytelniajce
w kodzie aplikacji jzyka Python napisanej dla naszego wierkajcego karm-
nika dla ptaków.

Biblioteka Python-Twitter

Mimo e mamy dostp do Twittera za porednictwem interfejsu API, wci
nie dysponujemy mechanizmem komunikacji z Twitterem z poziomu skryp-
tów jzyka Python. Warto wykorzysta do tego celu rozwizania dostpne
w bibliotece Python-Twitter

12

. Aby zainstalowa obie biblioteki potrzebne

do realizacji tego projektu, czyli Pyserial i Python-Twitter, naley pobra
najnowsze wersje tych bibliotek i uy standardowego polecenia

sudo python

setup.py install

. W przypadku instalowania tych bibliotek w systemie Mac

OS X 10.6 (Snow Leopard) lub nowszym mona skorzysta z ju zainsta-
lowanego narzdzia instalacyjnego Pythona nazwanego

easy_install

. Aby

jednak unikn problemów zwizanych z 64-bitowymi wersjami bibliotek,
odpowiednie polecenie naley poprzedzi flag architektury i386, aby zain-
stalowa bibliotek Python-Twitter bez adnych bdów. Kompletne polece-
nie dla tej biblioteki powinno mie nastpujc posta:

sudo env ARCHFLAGS="-

arch i386" easy_install python-twitter

.

12

http://code.google.com/p/python-twitter/

Kup książkę

Poleć książkę

background image

Rozdzia 5. • wierkajcy karmnik dla ptaków

119

Na tym etapie wszystkie niezbdne konta s skonfigurowane, a biblioteki
— zainstalowane. Moemy wic dokoczy projekt, czyli napisa skrypt jzy-
ka Python odpowiedzialny za nasuchiwanie komunikatów za porednictwem
moduu XBee podczonego do portu szeregowego, zapisywanie tych komu-
nikatów w bazie danych i publikowanie odpowiednich postów na Twitterze.
Spróbujmy wic napisa skrypt Python implementujcy ten zoony proces.

Plik

TweetingBirdFeeder/tweetingbirdfeeder.py

# importuje biblioteki Pythona: DateTime, Serial, SQLite3 i Twitter
from datetime import datetime
import serial
import sqlite3
import twitter

# importuje modu os w celu wyczyszczenia okna terminala i uruchomienia programu
# w systemie Windows naley uy polecenia "cls"; w systemach Linux i OS X naley
uy polecenia "clear"
import os

if sys.platform == "win32":
os.system("cls")
else:
os.system("clear")

# nawizuje poczenie z portem szeregowym; nazw URZDZENIE_SZEREGOWE naley zastpi
# nazw portu szeregowego, do którego podczono modu XBee (za pomoc przewodu FTDI)
XBeePort = serial.Serial('/dev/tty.URZDZENIE_SZEREGOWE', \
baudrate = 9600, timeout = 1)

# nawizuje poczenie z baz danych SQLite
sqlconnection = sqlite3.connect("tweetingbirdfeeder.sqlite3")

# tworzy kursor bazy danych
sqlcursor = sqlconnection.cursor()

# inicjalizuje obiekt interfejsu Twitter API
api = twitter.Api('klucz_konsumenta_OAuth', 'klucz_tajny_konsumenta_OAuth', \
'token_dostpu_OAuth', 'klucz_tajny_tokenu_dostpu_OAuth')

def transmit(msg):
# uzyskuje i odpowiednio formatuje biec dat i godzin
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

# sprawdza rodzaj komunikatu i przypisuje odpowiednie parametry odpowiedzi
if msg == "przylot":
tweet = "Jaki ptak wyldowa na grzdzie!"
table = "birdfeeding"
if msg == "odlot":
tweet = "Ptak odlecia z grzdy!"
table = "birdfeeding"
if msg == "dosyp":
tweet = "Pojemnik na ziarno dla ptaków jest pusty."

Kup książkę

Poleć książkę

background image

120

5.6. wierkanie w Pythonie

table = "seedstatus"
if msg == "ziarnoWNormie":
tweet = "Ziarno w karmniku zostao uzupenione."
table = "seedstatus"

print "%s - %s" % (timestamp.strftime("%Y-%m-%d %H:%M:%S"), tweet)

# zapisuje odpowiednie zdarzenie w bazie danych SQLite
try:
sqlstatement = "INSERT INTO %s (id, time, event) \
VALUES(NULL, \"%s\", \"%s\")" % (table, timestamp, msg)
sqlcursor.execute(sqlstatement)
sqlconnection.commit()
except:
print "Nie mona zapisa zdarzenia w bazie danych."
pass

# publikuje informacj na Twitterze
try:
status = api.PostUpdate(msg)
except:
print "Nie mona opublikowa postu na Twitterze"
pass

# gówna ptla programu
try:
while 1:
# nasuchuje znaków przychodzcych (wysyanych przez modu radiowy XBee
# zainstalowany w karmniku)
message = XBeePort.readline()

# w zalenoci od rodzaju otrzymanego komunikatu
# rejestruje odpowiednie zdarzenie w bazie danych i publikuje post na Twitterze
if "przylot" in message:
transmit("przylot")
if "odlot" in message:
transmit("odlot")
if "dosyp" in message:
transmit("dosyp")
if "ziarnoWNormie" in message:
transmit("ziarnoWNormie")

except KeyboardInterrupt:
# przerywa program w momencie wykrycia nacinicia kombinacji klawiszy Ctrl+C
print("\nProgram nasuchujcy komunikatów wierkajcego karmnika dla ptaków koczy prac.\n")
sqlcursor.close()
pass

Po zaadowaniu niezbdnych bibliotek

datetime

,

serial

,

sqlite

i

twitter

czycimy okno terminala (za pomoc polecenia

cls

w systemie Windows

lub polecenia

clear

w pozostaych systemach operacyjnych) i nawizujemy

poczenie z moduem XBee (poczonym z portem szeregowym kompu-
tera za pomoc przewodu FTDI). Zaraz potem nawizujemy poczenie

Kup książkę

Poleć książkę

background image

Rozdzia 5. • wierkajcy karmnik dla ptaków

121

z utworzonym wczeniej plikiem bazy danych tweetingbirdfeeder.sqlite3 i roz-
poczynamy wykonywanie nieskoczonej ptli

while

do momentu nacini-

cia kombinacji klawiszy Control-C, która powoduje zamknicie programu.
Jeli modu XBee otrzyma i prawidowo rozpozna komunikat, skrypt wywoa
funkcj

def transmit(msg)

, która odpowiada za analiz skadniow zmiennej

msg

, dodanie opisu danego zdarzenia, zapisanie odpowiedniego komunikatu

w bazie danych oraz opublikowanie postu na Twitterze.

Jeli platforma Arduino jest uruchomiona i jeli para moduów XBee nawi-
zaa poczenie i jest zasilana, moemy przetestowa wykrywanie przekra-
czania wartoci progowych, kilkukrotnie dotykajc czujnik grzdy i zasaniajc
fotokomórk, tak aby system wysa kilka sygnaów o tych zdarzeniach. Jeli
w oknie terminala nie zostay wywietlone adne bdy zwizane z wykony-
waniem tego skryptu, warto otworzy plik tweetingbirdfeeder.sqlite3 w oknie
Browse and Search narzdzia SQLite Manager i sprawdzi, czy informacje
o zdarzeniach dotyczcych obu czujników zostay zarejestrowane i oznaczone
odpowiednimi znacznikami czasowymi. Jeli wszystkie te mechanizmy za-
dziaay prawidowo, warto jeszcze zalogowa si na Twitterze (do konta
uywanego do publikowania komunikatów o tych zdarzeniach) i sprawdzi,
czy wszystkie posty zostay opublikowane we waciwej kolejnoci.

Nasz system jest prawie gotowy. Pozostao nam ju tylko kilka usprawnie
elementów sprztowych.

5.7. Koczenie projektu

Aby zapewni pen funkcjonalno tego projektu, musimy jeszcze zabezpie-
czy niezbdne urzdzenia (w tym przypadku pytk Arduino poczon
z moduem XBee) przed warunkami atmosferycznymi i zainstalowa w karm-
niku dla ptaków, zamontowa fotokomórk blisko podstawy karmnika, wsy-
pa ziarno do karmnika, poczy pytk Arduino i modu XBee ze ródem
zasilania oraz umieci cao na zewntrz budynku, ale w zasigu drugiego
moduu XBee (podczonego do komputera).

Kady, kto nie mieszka w strefie klimatycznej z rzadkimi opadami deszczu,
powinien dobrze zabezpieczy urzdzenia elektryczne przed dziaaniem wody.
W moich testów wynika, e umieszczenie tych elementów elektronicznych
w dwóch szczelnych workach w zupenoci wystarczy do zabezpieczenia pyt-
ki Arduino i moduu XBee przed deszczem. Jeli jednak nie planujemy
zasilania tych komponentów za pomoc 9-woltowej baterii, któr mona by

Kup książkę

Poleć książkę

background image

122

5.7. Koczenie projektu

umieci wraz z elektronik w workach (takie rozwizanie sprawdzioby si
w przypadku krótkich sesji gromadzenia danych, jednak nasz system bar-
dzo szybko wyczerpaby bateri), musimy doprowadzi do pytki Arduino
przewód zapewniajcy stay dopyw energii.

Aby doprowadzi przewód zasilajcy, wystarczy zrobi niewielki otwór
w workach foliowych, jednak takie rozwizanie narazi cay system na dziaa-
nie wilgoci. Aby zminimalizowa ryzyko zalania elementów elektronicznych,
warto zabezpieczy miejsce czenia worków z przewodem mocno nacignit
foli spoywcz, tak aby szczelnie zamkn worek i zabezpieczy czenie
przed poluzowaniem lub wylizgniciem si wskutek zmieniajcej si pogody.

Stosowanie odpowiednio zabezpieczonego przewodu zasilajcego (na przy-
kad przewodu sprzedawanego z myl o zasilaniu lampek w okresie wit
Boego Narodzenia) bdzie tasze i atwiejsze do testowania. Konstruktorzy
szczególnie dbajcy o rodowisko naturalne mog jednak zainwestowa
nieco wiksze rodki w alternatywne rozwizanie — w technologi energii
odnawialnej w formie fotowoltaicznego systemu zasilania.

Przed zakupem odpowiedniego przenonego systemu zasilania energi so-
neczn warto sprawdzi, czy produkt generuje napicie 5 V, jest odpo-
wiednio wytrzymay i zawiera wbudowany akumulator, który bdzie groma-
dzi energi. Dobrym przykadem stosunkowo niedrogich rozwiza tego
typu s zasilacze z serii Solio Bolt

13

.

Czytelnicy, którzy wol systemy fotowoltaiczne zawierajce akumulatory
o wikszych pojemnociach, musz by przygotowani na nieco wiksze koszty.
Takie firmy jak Sunforce Products maj w ofercie rozmaite rozwizania pod-
trzymujce napicie, ukady adowania akumulatorów i sterowniki projek-
towane z myl o wikszym obcieniu

14

.

Panel soneczny naley zamontowa w odpowiedniej odlegoci od karmnika,
tak aby by wystawiony na promienie soneczne. Jeli to moliwe, panel naley
zamontowa pod ktem dziewidziesiciu stopni do promieni sonecznych,
aby uzyska jak najwicej energii. W zalenoci od strefy klimatycznej i red-
niego poziomu nasonecznienia by moe trzeba bdzie poszuka alternatyw-
nych lub uzupeniajcych rozwiza, jak adowarka zasilana przez turbin
wiatrow lub nawet dynamo napdzane si mini.

13

http://www.solio.com/chargers/

14

http://www.sunforceproducts.com/results.php?CAT_ID=1

Kup książkę

Poleć książkę

background image

Rozdzia 5. • wierkajcy karmnik dla ptaków

123

W ramach tego projektu udao nam si osign cakiem sporo zupenie no-
wych celów — od zastosowania fotokomórki i wasnorcznie zbudowanego
czujnika pojemnociowego, przez opanowanie sztuki czenia w pary modu-
ów XBee i nawizywania komunikacji bezprzewodowej midzy nimi, po
napisanie skryptu rejestrujcego dane w ustrukturyzowanej bazie danych,
reagujcego na zdarzenia i publikujcego posty na Twitterze za porednic-
twem interfejsu API tego serwisu. Zastosowalimy take autonomiczny sys-
tem zasilania pytki Arduino i moduu XBee oraz zabezpieczylimy te wra-
liwe komponenty elektroniczne przed szkodliwym dziaaniem warunków
atmosferycznych.

Te cenne lekcje z pewnoci wykorzystamy przynajmniej w projektach
realizowanych w czci pozostaych rozdziaów.

5.8. Nastpne kroki

Czujnik pojemnociowy i fotokomórk mona wykorzysta w najróniejszych
projektach automatyzacji domu. Poniej opisaem zaledwie kilka pomysów,
które warto rozway:



Pytk Arduino z podczonymi fotokomórk i moduem XBee mona
umieci (wraz z bateriami) w lodówce lub zamraarce, aby wykry-
wa, jak czsto i jak dugo drzwi lodówki s otwarte. Na podstawie
zgromadzonych danych mona obliczy energi tracon w poszczegól-
nych miesicach w zwizku ze zbyt czstym zagldaniem do lodówki.
W razie stwierdzenia, e koszty traconej w ten sposób energii s zbyt
wysokie, system moe wysa wiadomoci poczty elektronicznej lub
powiadomienia na Twitterze przypominajce domownikom o gazach
cieplarnianych i globalnym ociepleniu.



Jeli uznamy, e szukanie wcznika wiata w ciemnociach jest zbyt
kopotliwe, by moe powinnimy zastosowa czujnik pojemnociowy
z folii aluminiowej i zainstalowa ten „wcznik” na cianie przy
wejciu do piwnicy lub garau bd na poziomej powierzchni stou
na wprost wejcia.



Na podstawie wartoci analogowych odczytywanych z fotokomórki
mona mierzy cykle dni i nocy oraz poziom nasonecznienia, aby
w ten sposób zgromadzi dane przydatne na przykad w ogrodnictwie.

Kup książkę

Poleć książkę

background image

124

5.8. Nastpne kroki

Czy sadzenie okrelonych gatunków kwiatów, owoców lub warzyw
w odpowiednio wybranym okresie pozwoli przyspieszy lub opóni
wzrost rolin? Jak dugo roliny byy wystawione na pene soce,
a przez ile dni niebo byo zachmurzone?

Oprócz wymienionych pomysów istnieje jeszcze mnóstwo sposobów ana-
lizowania danych gromadzonych na podstawie zdarze dotyczcych na-
szego karmnika dla ptaków. Moemy uy biblioteki jzyka Python gene-
rujcej wykresy (na przykad CairoPlot) do wizualizacji redniego czasu
przebywania ptaka w karmniku

15

. Ile czasu zajo ptakom zjedzenie caego

ziarna? Jaki wpyw na godziny przylotów i czas przebywania w karmniku
miaa pogoda na zewntrz? Czy zmiana rodzaju ziarna wpyna na czas
przebywania ptaków w karmniku i czstotliwo przylotów?

Warto rozway udostpnienie wpisów na Twitterze innym entuzjastom pta-
ków, aby zbudowa szerok sie spoecznociow uytkowników czytajcych
i przekazujcych dalej dane generowane przez nasz karmnik. By moe wzor-
ce zaobserwowane w jednym karmniku bd nieco inne ni w przypadku
karmników zamontowanych na innych obszarach geograficznych — znajomi
z serwisu spoecznociowego by moe bd zainteresowani wspóln ana-
liz trendów dotyczcych populacji ptaków, cykli migracyjnych i pozostaych
czynników wpywajcych na zachowania naszych upierzonych przyjació.

15

http://cairoplot.sourceforge.net/

Kup książkę

Poleć książkę

background image

Skorowidz

A

ADK, 41, 195, 257

IOIO, 41

adres IP, Patrz IP
aktywacja dwucewkowa, 180
Android, 27, 40, 162

ADK, 41, 257

Google@Home, 258

Android@Home, 40, 257

ADK, 195

aparat, 214

konfiguracja, 214
podgld zdjcia, 214

aplikacja kliencka, 220

kod, 221
konfiguracja, 222
testowanie, 224
uprawnienia dostpu, 224
zabezpieczenia, 221

AVD, 163
bezprzewodowe otwieranie drzwi,

195

aplikacja kliencka, 220
poczenia, 198
serwer WWW, 207
sterowanie, 202

Development Tools Eclipse, 164
Eclipse, 163
intencja, 208
interfejs API, 258
IOIO, 41
kod serwera, 207
konfiguracja urzdzenia, 210
okno dialogowe nowego projektu,

164

Open Accessory Development Kit,

Patrz ADK

SDK, 41, 163
serwer WWW, 211

testowanie, 219
tworzenie, 211

statyczny adres IP, 209

testowanie, 211

tryb diagnostyczny, 206

Kup książkę

Poleć książkę

background image

284

Inteligentny dom

Android

uprawnienia dostpu, 218
wiadomoci e-mail, 216

doczanie grafiki, 216

X10, 167

AppleScript, 240

Editor, 240
syntezator mowy, 242
testowanie, 249

Arduino, 31, 33, 37, 42

1.0, 256
ATMega 168/328, 42
biblioteki, 277

instalacja, 277

czujnik nacisku, 130
czujnik pojemnociowy, 99, 100
czujnik ugicia, 53

czenie, 55

Ethernet, 54
fotokomórka, 103
Fritzing, 31
IDE, 57, 69, 257

Adapter USB, 155
LED Blink, 57
Linux, 69
Serial Monitor, 62
Upload, 62
Verify, 62

Inkscape, 31
Integrated Development

Environment, Patrz IDE

konfiguracja, 57
mechanizm przesyania polece, 269
modu

dwikowy, 82
MP3, 81
sieciowy, 67

Nano, 95, 97
silnik krokowy, 173

czenie, 188

szkic, 42

struktura, 42

TDD, 33
Uno Ethernet, 54
wiadomoci e-mail, 64

hosting, 64
serwer poczty SMTP, 64

wirtualny emulator, 43
wysyanie komunikatu, 70
XBee, 43, 106, 130
zabezpieczanie powiadomie, 66
zasilanie, 122

Audacity, 84
automatyzacja domu, 25, 260

„zrób to sam”, 27
analiza inwestycji, 28
Android, 27
protokó komunikacji, 26

standaryzacja, 26
TCP/IP, 27
wysyania impulsów, 26

warsztat, 30

automatyczna zasona, 173

budowa rozwizania, 177
czci systemu, 175
czujnik temperatury, 181

warto progowa, 186

czujniki, 176

doczanie, 181
instalacji, 187

fotokomórka, 177

warto progowa, 185

instalacja sprztu, 187
lista komponentów, 174

Kup książkę

Poleć książkę

background image

Skorowidz

285

schemat pocze, 182
silnik krokowy

instalacja, 188
kalibracja, 188
programowanie, 179
sposób czenia, 179

szkic, 180, 182

testowanie, 186

wygld systemu, 189

B

baza danych, 114

Debian, 114
packagedelivery, 135

deliverystatus, 136
tracking, 136

SQLite, 114, 134
sqlite3, 114, 135
tweetingbirdfeeder, 115

birdfeeding, 115
seedstatus, 115

tworzenie, 114

bezprzewodowe otwieranie drzwi, 194

Android, 195

aplikacja kliencka, 220
poczenia, 198
serwer WWW, 207

budowa rozwizania, 197
IOIO, 195
instalacja systemu, 226
lista komponentów, 195
PowerSwitch Tail II, 194
przecznik przekanikowy, 194
rozbudowa, 226

Perfect Paper Passwords, 227

schemat pocze, 201

serwer WWW, 207

testowanie, 219

testowanie systemu, 225

biblioteka

AF_Wave, 85
AFMotor, 177, 179
android.net.wifi.WifiManager, 223
android.widget.Button, 223
Arduino Ethernet, 67
CairoPlot, 124
Capacitive Sensing, 100
datetime, 120
Ethernet, 70
interfejsu SPI, 67
IOIOLib, 202
java.io.InputStream, 165, 223
java.net.URL, 165, 223
MediaPlayer, 85, 86
os, 142
packagetrack, 137, 142
Pyserial, 114, 118
Python-Twitter, 114, 118
serial, 120, 142
Servo, 86
ServoTimer2, 86
smtplib, 142
sqlite, 120
sqlite3, 142
suds, 138
sys, 142
time, 142
twitter, 120
wavehc, 85

Bluetooth, 232, 234

nawizywanie poczenia, 233

Kup książkę

Poleć książkę

background image

286

Inteligentny dom

C

czujnik

dymu, 271
nacisku, 126

Arduino, 130
czenie, 130

odlegoci, 268
pojemnociowy, 99

Arduino, 99
budowa, 99
sposób podczenia, 99
zastosowania, 123

ruchu, 269
temperatury, 181

warto progowa, 186

ugicia, 53

Arduino, 53
montowanie, 72
próg generowania zdarzenia, 58
rozbudowa, 74
szkic, 58
tolerancja, 58
wiadomo e-mail, 64
wykorzystanie, 74

wilgotnoci, 270

D

DIY, 40
Django, 65

E

Eclipse, 163
Electric Sheep, 199
Elektor Electronic Toolbox, 32

elektryczny pies stróujcy, 77, 81

budowa rozwizania, 80
lista elementów, 79
monta, 90
PIR, 82
próbki dwików, 83
rozbudowa, 91
schemat pocze, 82
szkic, 85

testowanie, 89

F

fotokomórka, 102, 177

Adruino, 103
schemat pocze, 103
silnik krokowy, 181
warto bazowa, 105
warto progowa, 185
zastosowania, 123

fotowoltaniczny system zasilania, 122
Freemind, 31
Fritzing, 31

G

Gmail, 135
Google@Home, 258

H

Heyu, 150

kod ródowy, 156
x10.conf, 156

Hyperterminal, 107

Kup książkę

Poleć książkę

background image

Skorowidz

287

I

iCircuit, 32
IDE, 42, 57, 69, 257
Inkscape, 31
internetowy wcznik wiata, 149

Android, 162

testowanie, 167

biecy stan wiata, 162
budowa rozwizania, 153
kod klienta, 158, 162

testowanie, 161, 167

lista komponentów, 151
czenie, 154
rozbudowa, 170
Ruby on Rails, 158
X10, 150

CM11A, 155

IOIO, 195, 199

ADK, 41
IOIOLib, 202
schemat pocze, 201
serwer WWW, 212

IP, 68, 209

przypisanie staego adresu, 68

iPad, 32

Elektor Electronic Toolbox, 32
iCircuit, 32
iThoughts HD, 32
miniDraw, 32

K

karmnik dla ptaków, 93

Arduino Nano, 95, 97
budowa rozwizania, 98
czci systemu, 96

czujnik pojemnociowy, 98

budowa, 99
programowanie, 99

fotokomórka, 102
konfiguracja bazy danych, 114
lista komponentów, 95
nasuchiwanie komunikatów, 119
publikowanie wpisów, 113
schemat pocze, 108
szkic, 109
Twitter, 94
XBee, 95
zabezpieczenie urzdze, 121
zasilanie, 122

fotowoltaniczne, 122

klucz

API, 118
konsumenta standardu OAuth,

118

tajnego tokenu dostpu, 118
tajny konsumenta, 118

kompilator, 156
komunikacja bezprzewodowa, 106

Bluetooth, 234
Wi-Fi, 106
XBee, 43, 106

krok, 178

M

MAC, 68
metodyka wytwarzania sterowanego

testami, Patrz TTD

Minicom, 107
miniDraw, 32

Kup książkę

Poleć książkę

background image

288

Inteligentny dom

modu

dwikowy, 78

AF_Wave, 85
Arduino, 82
czenie, 82
próbki dwików, 83
szkic demonstracyjny, 85
zarzdzanie odtwarzaniem, 86

parowanie, 44
sieciowy, 67, 70

Arduino, 67
kodowanie, 67
przypisanie adresu, 68
stay adres IP, 68

multimetr, 34

O

open source, 31

Freemind, 31
Fritzing, 31
Heyu, 150
Inkscape, 31

P

parowanie moduów, 44
pasywny czujnik ruchu na

podczerwie, Patrz PIR

Perfect Paper Passwords, 227
PHP, 64, 65

hosting, 64
mail, 66
wiadomoci e-mail, 65

pin, Patrz wtyk
PIR, 77

instalacja, 90
czenie, 82

monitorowanie, 85
zasada dziaania, 84

pytki mikrokontrolerów, 37

Arduino, 37

pojemno elektryczna, 99
PowerSwitch Tail II, 194
powiadamianie o zdarzeniach, 230

konfiguracja goników, 231

Bluetooth, 232
nawizywanie poczenia, 233

lista komponentów, 231
mechanizm rozpoznawania mowy,

234
konfiguracja, 234
wczanie mówionych

komunikatów, 235

wybór gosu, 237

rozbudowa, 250
syntezator mowy, 237, 240

kod, 242
testowanie, 249

TTS, 230
wewntrzny mikrofon, 238

kalibracja, 239

protokó komunikacji, 26

SOAP, 138
standaryzacja, 26
TCP/IP, 27
wysyania impulsów, 26

przecznik przekanikowy, 194
Python, 33, 45

easy_install, 118
identyfikacja XBee, 143
implementacja dostarczania paczek,

139
testowanie skryptu, 144

Kup książkę

Poleć książkę

background image

Skorowidz

289

implementacja procesów karmnika,

113, 119

nasuchiwanie komunikatów, 119
os, 142
packagetrack, 137, 142
przetwarzanie komunikatów, 134
publikowanie wpisów, 113
Pyserial, 114, 118
python-fedex, 138
Python-Twitter, 114, 118
serial, 142
smtplib, 142
SQLite, 114
sqlite3, 142
suds, 138
sys, 142
testy jednostkowe, 33
time, 142

R

realizacja projektów, 37

Android, 40
Arduino, 42
bezpieczestwo, 47
elementy elektroniczne, 39
oprogramowanie, 38, 45
urzdzenia wykonawcze, 38
XBee, 43

Ruby on Rails, 33, 65, 158

konfiguracja, 161
RSpec, 33

S

screen, 107, 134
Serial Monitor, 62
serwer WWW, 207

Android, 211
IOIO, 212
testowanie, 219

serwomotor, 78

moment obrotowy, 91
sterowanie, 86

silnik krokowy, 173

aktywacja dwucewkowa, 180
Arduino, 173

czenie, 188

fotokomórka, 181
kalibracja, 188
koo pasowe, 176

instalacja, 188

krok, 178
liczba obrotów, 189
modu silnika, 190
programowanie, 179
sposób czenia, 179
zasada dziaania, 178
zastosowania, 190

Simple Object Access Protocol,

Patrz protokó SOAP

Siri, 259
SQLite, 114

Manager, 116

Browse and Search, 121

sqlite3, 114, 135
standard uwierzytelniania OAuth,

117

system powiadamiania o poziomie

wody, 51

Arduino, 55

konfiguracja, 57

budowa rozwizania, 55
czujnik ugicia, 53, 55
diagram pocze, 56

Kup książkę

Poleć książkę

background image

290

Inteligentny dom

system powiadamiania o poziomie wody

lista komponentów, 53
czenie, 55, 71
modu sieciowy, 67

kodowanie, 67
czenie, 67

rozbudowa, 74
spawik, 56
szkic, 56

testowanie, 63, 71
tworzenie, 58
uruchamianie, 62

wiadomoci e-mail, 64

szkic, 42, 56

#include, 42
automatyczna zasona, 182

testowanie, 186

czujnik nacisku, 131, 132

testowanie, 133
warto progowa, 134

czujnik pojemnociowy, 100
doczanie bibliotek, 68
fotokomórka, 103
IDE, 42
modu sieciowy, 67

testowanie, 71
wysyanie komunikatu, 70

monitorowanie czujnika PIR, 85

gówna ptla, 87
testowanie, 89

silnik krokowy, 180
struktura, 42
ugicie czujnika, 58

konfiguracja portu szeregowego,

59

próg generowania zdarzenia, 58

testowanie, 63
tolerancja, 58
uruchamianie, 62

wiadomoci e-mail, 64

hosting, 64
serwer poczty SMTP, 64

T

TDD, 33
testy jednostkowe, 33

py.test, 33

token dostpu, 118
TTS, 230
Twitter, 93

dane uwierzytelniajce, 117

klucze, 118

nowe konto, 117
publikacja wpisu, 117
Python, 113

U

urzdzenia wykonawcze, 38

V

VPS, 65

W

warsztat, 30

pomieszczenie, 30
wyposaenie, 30

wiadomoci e-mail, 64

Arduino, 64
czujnik ugicia, 64
PHP, 64, 65
serwer poczty SMTP, 64

Kup książkę

Poleć książkę

background image

Skorowidz

291

wirtualne serwery prywatne,

Patrz VPE

wtyk, 42
wykrywacz dostarczania paczek, 125,

131

budowa rozwizania, 128
czci systemu, 127
czujnik nacisku, 126
instalacja systemu, 145
lista komponentów, 127
czenie sprztu, 129
rozbudowa, 146
schemat pocze, 130
testowanie skryptu, 144
testowanie szkicu, 133

X

X10, 150

AM486 Appliance, 157
Android, 167
CM11A, 152, 155

adapter USB, 154
Arduino, 154
interfejs, 154

monitorowanie komunikacji, 157
podczanie, 154

Firecracker, 152
Heyu, 150
modu sterownika, 152
problemy, 158
protokó, 158
zasada dziaania, 153

x10.conf, 156
XBee, 43

Arduino, 43, 106, 130
komunikacja radiowa, 43
moliwoci, 106
nadajnik radiowy, 95
parowanie moduów, 44
schemat czenia, 106

Kup książkę

Poleć książkę

background image

292

Inteligentny dom

Kup książkę

Poleć książkę

background image
background image

Wyszukiwarka

Podobne podstrony:
Inteligentny dom Automatyzacja mieszkania za pomoca platformy Arduino systemu Android i zwyklego kom
Inteligentny dom Automatyzacja mieszkania za pomoca platformy Arduino systemu Android i zwyklego kom
informatyka inteligentny dom automatyzacja mieszkania za pomoca platformy arduino systemu android i
Inteligentny dom Automatyzacja mieszkania za pomoca platformy Arduino systemu Android i zwyklego kom
Inteligentny dom Automatyzacja mieszkania za pomoca platformy Arduino systemu Android i zwyklego kom
Inteligentny dom Automatyzacja mieszkania za pomoca platformy Arduino
Zabezpieczenie transformatora za pomocą zespołu automatyki(1), SPRAWOZDANIA czyjeś
Badanie współczynnika lepkości za pomocą wiskozymetru Hšplera, Automatyka i Robotyka
Zabezpieczenie transformatora za pomocą zespołu automatyki za
Widzenie fotopowe Za pomocą czopków2, wojtek studia, Automatyka, studia 2010, Technika ośw, Technika
Zabezpieczenie transformatora za pomocą zespołu automatyki za, SPRAWOZDANIA czyjeś
Pomiar wielkości fotometrycznych za pomocą walca fotometrycznego, wojtek studia, Automatyka, studia
AutoCAD Automatyzacja zadan grafiki za pomoca Delphi a20del
Ściągi, Automatyka 1, Technicznym przykładem sterowania jest regulacja temperatury pomieszczenia ogr
Widzenie fotopowe Za pomocą czopków1, wojtek studia, Automatyka, studia 2010, Technika ośw, Technika
Zabezpieczenie transformatora za pomocą zespołu automatyki(1), SPRAWOZDANIA czyjeś

więcej podobnych podstron