Darmowy fragment publikacji:
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ść
Spis treĂci
PodziÚkowania .................................................................................... 13
Sïowo wstÚpne .................................................................................... 15
Kto powinien przeczytaÊ tÚ ksiÈĝkÚ ................................................................... 16
Co znajduje siÚ w tej ksiÈĝce ............................................................................. 16
Arduino, Android, iPhone… mój Boĝe! .......................................................... 17
Przykïady kodu i stosowane konwencje ............................................................. 20
Zasoby dostÚpne w internecie .......................................................................... 21
CzÚĂÊ I. Przygotowania ............................................23
Rozdziaï 1. Pierwsze kroki ................................................................. 25
1.1. Czym jest automatyzacja domu? ................................................................ 25
1.2. Gotowe rozwiÈzania dostÚpne na rynku ..................................................... 26
1.3. RozwiÈzania 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ę8
Inteligentny dom
Rozdziaï 2. Potrzebne elementy ........................................................ 37
2.1. ZnajomoĂÊ sprzÚtu ................................................................................... 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 rozwiÈzania ................................................................................ 55
3.3. Èczenie .................................................................................................. 55
3.4. Tworzenie szkicu ...................................................................................... 56
3.5. Implementacja aplikacji internetowej wysyïajÈcej pocztÚ elektronicznÈ .......... 64
3.6. Dodanie moduïu sieciowego ...................................................................... 67
3.7. Èczenie wszystkich elementów ................................................................. 71
3.8. NastÚpne kroki ......................................................................................... 73
Rozdziaï 4. Elektryczny pies stróĝujÈcy .......................................... 77
4.1. Czego potrzebujemy ................................................................................. 78
4.2. Budowa rozwiÈzania ................................................................................ 80
4.3. System elektrycznego psa stróĝujÈcego .................................................... 82
4.4. Szkolenie psa ........................................................................................... 85
4.5. Testowanie .............................................................................................. 89
4.6. Spuszczamy psa ....................................................................................... 90
4.7. NastÚpne kroki ......................................................................................... 91
Rozdziaï 5. mwierkajÈcy karmnik dla ptaków ................................. 93
5.1. Czego potrzebujemy ................................................................................. 95
5.2. Budowa rozwiÈzania ................................................................................ 98
5.3. Czujnik grzÚdy ......................................................................................... 98
5.4. Czujnik ziarna ........................................................................................ 102
5.5. Komunikacja bezprzewodowa ................................................................. 106
5.6. mwierkanie w Pythonie ........................................................................... 113
5.7. Koñczenie projektu ................................................................................. 121
5.8. NastÚpne kroki ....................................................................................... 123
Kup książkęPoleć książkęSpis treĂci
9
Rozdziaï 6. Wykrywacz dostarczania paczek ................................ 125
6.1. Czego potrzebujemy ............................................................................... 127
6.2. Budowa rozwiÈzania .............................................................................. 128
6.3. Èczenie sprzÚtu .................................................................................... 129
6.4. Pisanie kodu .......................................................................................... 131
6.5. Szkic systemu wykrywania dostarczonych paczek ...................................... 132
6.6. Testowanie szkicu wykrywajÈcego dostarczanie paczek ............................. 133
6.7. Skrypt przetwarzajÈcy komunikaty o przesyïkach ...................................... 134
6.8. Tworzenie bazy danych systemu wykrywania przesyïek ............................. 135
6.9. Instalacja niezbÚdnych pakietów Pythona ................................................. 137
6.10. Pisanie skryptu ...................................................................................... 139
6.11. Testowanie skryptu przetwarzajÈcego komunikaty o paczkach ................... 144
6.12. Instalacja systemu .................................................................................. 145
6.13. NastÚpne kroki ...................................................................................... 146
Rozdziaï 7. Internetowy wïÈcznik Ăwiatïa .................................... 149
7.1. Czego potrzebujemy ............................................................................... 150
7.2. Budowa rozwiÈzania .............................................................................. 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. NastÚpne kroki ....................................................................................... 169
Rozdziaï 8. Automatyzacja dziaïania zasïony ............................... 173
8.1. Czego potrzebujemy ............................................................................... 174
8.2. Budowa rozwiÈzania .............................................................................. 177
8.3. Stosowanie silnika krokowego .................................................................. 178
8.4. Programowanie silnika krokowego ........................................................... 179
8.5. DoïÈczanie czujników ............................................................................. 181
8.6. Pisanie szkicu ........................................................................................ 182
8.7. Instalacja sprzÚtu .................................................................................... 187
8.8. NastÚpne kroki ....................................................................................... 190
Kup książkęPoleć książkę10
Inteligentny dom
Rozdziaï 9. Zamek do drzwi sterowany przez Androida .............. 193
9.1. Czego potrzebujemy ............................................................................... 194
9.2. Budowa rozwiÈzania .............................................................................. 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. NastÚpne kroki ....................................................................................... 226
Rozdziaï 10. Dajmy przemówiÊ naszemu domowi ........................ 229
10.1. Czego potrzebujemy .............................................................................. 230
10.2. Konfiguracja gïoĂników .......................................................................... 231
10.3. Wsïuchajmy siÚ w gïos systemu ............................................................... 234
10.4. Kalibracja mikrofonu bezprzewodowego ................................................. 238
10.5. Programowanie mówiÈcego systemu ........................................................ 240
10.6. Rozmowa z wïasnym domem ................................................................. 249
10.7. NastÚpne kroki ...................................................................................... 250
CzÚĂÊ III. Przewidywana przyszïoĂÊ ....................253
Rozdziaï 11. Przyszïe projekty ......................................................... 255
11.1. PrzyszïoĂÊ na wyciÈgniÚcie rÚki ............................................................... 256
11.2. Prognoza dïugoterminowa ...................................................................... 260
11.3. Dom przyszïoĂci .................................................................................... 262
Rozdziaï 12. WiÚcej pomysïów na projekty ................................... 267
12.1. Wykrywacz baïaganu ............................................................................. 267
12.2. Monitor zuĝycia energii elektrycznej ........................................................ 268
12.3. Elektryczny strach na wróble .................................................................. 269
12.4. Pilot systemu domowej rozrywki ............................................................. 269
12.5. WyïÈcznik urzÈdzeñ domowych na czas snu ............................................ 270
12.6. Sterowanie nawadnianiem za pomocÈ czujnika wilgotnoĂci ....................... 270
12.7. Czujniki dymu przystosowane do komunikacji sieciowej ........................... 271
12.8. Zbliĝeniowy mechanizm otwierania bramy garaĝowej ............................... 272
12.9. Inteligentny sterownik klimatyzacji i wentylacji ......................................... 272
Kup książkęPoleć książkęSpis treĂci
11
12.10. Inteligentna skrzynka na listy ............................................................... 273
12.11. Inteligentne oĂwietlenie ....................................................................... 273
12.12. Monitorowanie ěródeï energii
zasilanych promieniami sïonecznymi 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ę12
Inteligentny dom
Kup książkęPoleć książkęRozdziaï 5.
mwierkajÈcy
karmnik dla ptaków
M
am dwójkÚ dzieci, które wprost uwielbiajÈ ptaki. Juĝ jako maïe dzie-
ci miaïy swoje pierwsze papuĝki. Lubiïy teĝ obserwowaÊ dzikie
ptaki konstruujÈce gniazda i posilajÈce siÚ w karmniku zamontowa-
nym przy oknie sypialni. Dokarmianie ptaków wiÈĝe siÚ jednak z pewnym
problemem — dzieci ciÈgle zapominajÈ o uzupeïnianiu nasion dla ptaków
w karmnikach. Zdarzaïo siÚ, ĝe z rozmaitych powodów w karmniku brako-
waïo nasion przez caïe dnie, a nawet tygodnie. Czyĝ nie byïoby proĂciej,
gdyby sam karmnik informowaï nas o koniecznoĂci uzupeïnienia karmy?
Historia pustego karmnika byïa inspiracjÈ dla tego projektu. Czy moĝna sobie
wyobraziÊ lepszÈ formÚ powiadamiania o koniecznoĂci dosypania nasion niĝ
„Êwierkanie” na Twitterze? Zainteresowani znajomi i krewni mogÈ ĂledziÊ
konto karmnika, aby wiedzieÊ, kiedy karmnik jest odwiedzany przez ptaki,
kiedy wymaga uzupeïnienia karmy i czy nasiona zostaïy dosypane. (Patrz
rysunek 5.1 zatytuïowany „Wysyïanie powiadomieñ przez karmnik dla
ptaków za poĂrednictwem Twittera”).
Kup książkęPoleć książkę94
5.1. Czego potrzebujemy
Rysunek 5.1. Wysyïanie powiadomieñ przez karmnik dla ptaków
za poĂrednictwem Twittera (w czasie, gdy karmnik jest
odwiedzany przez ptaki, oraz w sytuacji, gdy wymaga
uzupeïnienia nasion)
Skoro planujemy ĂledziÊ na Twitterze komunikaty o koniecznoĂci uzupeï-
nienia karmnika, warto rozbudowaÊ ten mechanizm o wïasny czujnik in-
stalowany na grzÚdzie, który bÚdzie rejestrowaï wizyty ptaków w karmniku
i analizowaï czas ich przebywania na grzÚdzie. Przed publikacjÈ wpisów
na Twitterze bÚdziemy rejestrowaÊ te zdarzenia w bazie danych, aby umoĝli-
wiÊ wizualne prezentowanie wzorców karmienia ptaków w czasie.
Czy w kwietniu ptaki sÈ bardziej wygïodniaïe niĝ na przykïad w lipcu? Czy
ptaki czÚĂciej zaglÈdajÈ do karmnika rano, czy popoïudniami? Ile wynosi
Ăredni czas przebywania ptaków na grzÚdzie w karmniku? Ile czasu mija
pomiÚdzy kolejnymi wizytami ptaków? Jak czÚsto musimy uzupeïniaÊ na-
siona w karmniku? mwierkajÈcy karmnik dla ptaków umoĝliwia 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ęRozdziaï 5. • mwierkajÈcy karmnik dla ptaków
95
5.1. Czego potrzebujemy
Poniewaĝ ÊwierkajÈcy karmnik bÚdzie naszym pierwszym projektem reali-
zowanym na zewnÈtrz, koszty niezbÚdnego sprzÚtu z kilku powodów bÚdÈ
nieco wyĝsze. Po pierwsze, jeĂli nie chcemy wierciÊ dziur przez caïÈ gruboĂÊ
Ăcian zewnÚtrznych domu ani prowadziÊ przewodów sieciowych przez otwarte
drzwi czy okna, musimy znaleěÊ sposób wysyïania zdarzeñ notowanych
przez czujniki przy uĝyciu technik bezprzewodowych. Na szczÚĂcie istniejÈ
niskonapiÚciowe i stosunkowo tanie urzÈdzenia w formie nadajników radio-
wych XBee. PoczÈtkowa konfiguracja tych urzÈdzeñ wymaga dodatkowych
nakïadów i wiÚkszego wysiïku, jednak wspomniane urzÈdzenia sÈ doĂÊ nie-
zawodne, caïkiem ïatwo nawiÈzujÈ poïÈczenia, a raz zainstalowane nie wy-
magajÈ naszej uwagi.
Po drugie, mimo ĝe moglibyĂmy zastosowaÊ standardowÈ platformÚ Ar-
duino Uno (tak jak na schematach poïÈczeñ prezentowanych w tym roz-
dziale), wymiary tej pïytki mogÈ siÚ okazaÊ zbyt duĝe dla typowego karm-
nika dla ptaków. W tej sytuacji zachÚcam do wydania minimalnie wiÚkszej
kwoty na zakup pïytki Arduino Nano. Instalacja platformy Nano z pew-
noĂciÈ bÚdzie prostsza, zwaĝywszy na ograniczonÈ przestrzeñ w karmniku.
NiewÈtpliwÈ zaletÈ pïytki Nano jest niemal identyczna konfiguracja wtyków
i ukïad elementów sprzÚtowych jak w przypadku wiÚkszego brata. Pïytka
Nano oferuje wszystkie moĝliwoĂci tradycyjnej platformy Arduino, tyle ĝe
zajmuje duĝo mniej miejsca.
Po trzecie, mimo ĝe zasilanie tych czÚĂci elektronicznych za poĂrednic-
twem dïugiego przewodu podïÈczonego do zewnÚtrznego gniazdka (zain-
stalowanego z myĂlÈ o dekoracjach ĂwiÈtecznych) jest moĝliwe, tak zapro-
jektowany system nie bÚdzie wystarczajÈco autonomiczny. Co wiÚcej, sys-
tem karmnika dla ptaków to wprost doskonaïa okazja do zastosowania
ekologicznego ěródïa energii.
I wreszcie w zwiÈzku z koniecznoĂciÈ ochrony elektroniki musimy zadbaÊ
o dobre zabezpieczenie systemu przed niesprzyjajÈcymi warunkami atmosfe-
rycznymi. Oto kompletna lista zakupów (komponenty uĝywane w tym pro-
jekcie pokazano teĝ na rysunku 5.2 zatytuïowanym „CzÚĂci systemu Êwierka-
jÈcego karmnika dla ptaków”):
1. Platforma Arduino Uno lub Arduino Nano1.
1 http://www.makershed.com/ProductDetails.asp?ProductCode=MKGR1
Kup książkęPoleć książkę96
5.1. Czego potrzebujemy
Rysunek 5.2.
CzÚĂci systemu ÊwierkajÈcego karmnika dla ptaków
2. Dwa moduïy XBee z zestawami adapterów oraz przewód FTDI2.
3. Fotokomórka.
4. Kawaïek folii aluminiowej.
5. Przewód.
6. Niewielki panel sïoneczny z wbudowanym akumulatorem i prze-
wodem USB (na przykïad 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 brÈzowym, czarnym, pomarañczowym i zïotym,
natomiast rezystor 10 Mȍ powinien byÊ oznaczony paskami brÈzo-
wym, czarnym, niebieskim i zïotym. Potrzebne rezystory pokazano
na rysunku 5.3 zatytuïowanym „Rezystory uĝywane w projekcie
ÊwierkajÈcego karmnika dla ptaków”. Na zdjÚciu widaÊ równieĝ foto-
komórkÚ (nazywanÈ takĝe fotorezystorem CdS).
8. Karmnik dla ptaków z otworem na nasiona, w którym zmieĂci 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ęRozdziaï 5. • mwierkajÈcy karmnik dla ptaków
97
Rysunek 5.3.
Rezystory uĝywane w projekcie ÊwierkajÈcego karmnika
dla ptaków
9. Komputer (nie ma go na zdjÚciu), najlepiej z systemem Linux lub
Mac OS oraz zainstalowanym kompilatorem jÚzyka Python 2.6
lub nowszym (na potrzeby skryptu przetwarzajÈcego komunikaty
wysyïane przez karmnik dla ptaków).
W razie decyzji o uĝyciu pïytki Arduino Nano zamiast tradycyjnej pïytki
Arduino Uno trzeba bÚdzie dodatkowo zakupiÊ standardowy przewód
USB A-mini B (nie ma go na zdjÚciu), aby poïÈczyÊ pïytkÚ Arduino
Nano z komputerem. Co wiÚcej, poniewaĝ na platformie Arduino Nano
zastosowano wtyki mÚskie zamiast wtyków ĝeñskich (stosowanych w przy-
padku pïytki Arduino Uno), zamiast standardowych przewodów bÚdzie-
my potrzebowali odpowiednich koñcówek ĝeñskich (których takĝe nie
pokazano na zdjÚciu). Odpowiednie koñcówki uïatwiÈ ïÈczenie przewo-
dów z wtykami na pïytce Nano bez koniecznoĂci ich trwaïego lutowania.
Projekt jest bardziej zïoĝony niĝ system powiadamiania o poziomie wody,
a najtrudniejszym krokiem procesu budowy tego rozwiÈzania bÚdzie za-
pewnienie niezawodnej pracy moduïów XBee. Mimo to projekt jest wart
niezbÚdnych nakïadów — w jego wyniku bÚdziemy dysponowali nie tylko
supernowoczesnym karmnikiem na miarÚ XXI wieku, ale teĝ skonfiguro-
wanym systemem obejmujÈcym moduïy komunikacji radiowej XBee, który
bÚdzie nam potrzebny w wielu pozostaïych projektach. Gotowy zakasaÊ
rÚkawy? Do dzieïa!
Kup książkęPoleć książkę98
5.3. Czujnik grzÚdy
5.2. Budowa rozwiÈzania
PoïÈczenie wszystkich elementów tak, aby pasowaïy do wnÚtrza karmnika,
moĝe wymagaÊ pewnej pomysïowoĂci, szczególnie jeĂli zbiornik na ziarno
nie oferuje dostatecznie duĝo przestrzeni. Zanim przystÈpimy do upycha-
nia elektroniki w karmniku, musimy upewniÊ siÚ, ĝe wszystkie komponenty
dziaïajÈ zgodnie z naszymi oczekiwaniami.
1. Zaczniemy od najprostszego kroku, czyli poïÈczenia z pïytkÈ Ar-
duino czujnika pojemnoĂciowego z folii aluminiowej oraz napisania
funkcji, która w momencie zmiany stanu tego czujnika bÚdzie wy-
syïaïa komunikat do okna monitorowania portu szeregowego (a do-
celowo do moduïu XBee podïÈczonego do tego portu).
2. W dalszej kolejnoĂci musimy podïÈczyÊ do pïytki Arduino fotoko-
mórkÚ i napisaÊ kod reagujÈcy na zmiany stanu tego czujnika.
3. Zaraz potem przystÈpimy do ïÈczenia pary moduïów radiowych XBee,
tak aby informacje o wspomnianych zdarzeniach byïy przekazywane
pomiÚdzy nadajnikiem XBee poïÈczonym z pïytkÈ Arduino a odbior-
nikiem XBee poïÈczonym z komputerem za poĂrednictwem prze-
wodu FTDI USB.
4. I wreszcie musimy napisaÊ skrypt jÚzyka Python, który pobierze dane
z bazy danych SQLite, sformatuje je i wyĂle w formie gotowego wpisu
do publikacji w serwisie Twitter.
Po dopracowaniu i poïÈczeniu wszystkich komponentów bÚdziemy dyspo-
nowali systemem zïoĝonym z pïytki Arduino (najlepiej w wersji Nano),
moduïu XBee, czujnika grzÚdy i fotokomórki — caïoĂÊ bÚdzie zabezpie-
czona przed czynnikami atmosferycznymi i zainstalowana w karmniku dla
ptaków. Po sprawdzeniu, czy wszystko dziaïa prawidïowo, naleĝy wyjĂÊ
na dwór i przetestowaÊ ten system w warunkach polowych.
5.3. Czujnik grzÚdy
Karmniki dla ptaków maja róĝne ksztaïty i wymiary. Zdecydowaïem siÚ za-
stosowaÊ wyjÈtkowo proste rozwiÈzanie w celu wykrywania zdarzeñ lÈdowa-
nia ptaków na grzÚdzie karmnika. Mimo ĝe skonstruowanie mechanizmu
wykrywajÈcego nacisk na grzÚdzie z pewnoĂciÈ byïoby moĝliwe, czas potrzeb-
ny na opracowanie tego rozwiÈzania i jego koszty byïyby stosunkowo duĝe,
a przecieĝ naszym jedynym celem jest wykrycie, czy coĂ nie usiadïo na grzÚdzie.
Kup książkęPoleć książkęRozdziaï 5. • mwierkajÈcy karmnik dla ptaków
99
Alternatywnym rozwiÈzaniem jest monitorowanie zmian pojemnoĂci elek-
trycznej.
Wystarczy owinÈÊ grzÚdÚ karmnika foliÈ aluminiowÈ oraz poïÈczyÊ tÚ foliÚ
z cyfrowymi wtykami na pïytce Arduino przy uĝyciu rezystora. Na podstawie
wartoĂci bazowych i zmian wykrywanych przez ten czujnik w momencie lÈdo-
wania ptaka moĝemy wyznaczyÊ wartoĂÊ progowÈ, której przekroczenie po-
winno powodowaÊ wygenerowanie i wysïanie komunikatu o lÈdujÈcym ptaku.
Budowa czujnika
Budowa i testowanie czujnika grzÚdy to najprostszy element tego projektu.
Wystarczy uĝyÊ kawaïka folii aluminiowej wielkoĂci poïowy opakowania
od listka gumy do ĝucia i owinÈÊ grzÚdÚ. Naleĝy nastÚpnie poïÈczyÊ jeden
koniec rezystora 10 Mȍ z wtykiem cyfrowym nr 7 na pïytce Arduino oraz
drugi koniec z wtykiem nr 10. Przewód poïÈczony z foliÈ aluminiowÈ naleĝy
poïÈczyÊ z koñcówkÈ rezystora podïÈczonÈ do wtyku cyfrowego nr 7. Od-
powiedni schemat poïÈczeñ pokazano na rysunku 5.4 zatytuïowanym „Spo-
sób podïÈczenia czujnika pojemnoĂciowego”.
Rysunek 5.4.
Sposób podïÈczenia czujnika pojemnoĂciowego
Programowanie czujnika
Naleĝy teraz poïÈczyÊ platformÚ Arduino z komputerem, po czym uruchomiÊ
Ărodowisko Arduino IDE w celu napisania kodu obsïugujÈcego czujnik.
Kup książkęPoleć książkę100
5.3. Czujnik grzÚdy
Podobnie jak w przypadku projektu systemu powiadamiania o poziomie
wody musimy napisaÊ kod realizujÈcy nastÚpujÈce zadania:
1. WyĂwietli wartoĂci odczytane przez czujnik pojemnoĂciowy w oknie
monitora portu szeregowego Ărodowiska Arduino IDE.
2. Zidentyfikuje wartoĂÊ bazowÈ tego czujnika.
3. Dostosuje natÚĝenie prÈdu w momencie dotykania czujnika palcem.
4. Zarejestruje nowÈ wartoĂÊ uĝywanÈ w roli wartoĂci progowej gene-
rujÈcej powiadomienie.
Aby uïatwiÊ sobie wykrywanie zmian natÚĝenia prÈdu elektrycznego w mo-
mencie dotkniÚcia folii palcem lub wylÈdowania ptaka, skorzystamy z rozwiÈ-
zania opracowanego przez jednego z miïoĂników platformy Arduino —
Paula Badgera. Paul napisaï bibliotekÚ Arduino, dziÚki której mierzenie
zmian wartoĂci przekazywanych przez czujniki pojemnoĂciowe (podob-
nych do folii uĝywanej w tym projekcie) jest dziecinnie proste. Biblioteka
nazwana Capacitive Sensing4 umoĝliwia programistom platformy Arduino
przeksztaïcenie dwóch (lub wiÚkszej liczby) wtyków na pïytce Arduino
w czujnik pojemnoĂciowy, który moĝe sïuĝyÊ do wykrywania pojemnoĂci
elektrycznej ludzkiego ciaïa. Ciaïo czïowieka cechuje siÚ znacznie wiÚk-
szÈ pojemnoĂciÈ niĝ ciaïo ptaka, stÈd dotkniÚcie czujnika powoduje duĝo
wiÚkszÈ zmianÚ wartoĂci. Poniewaĝ jednak takĝe pojemnoĂÊ elektrycznÈ
ptaka moĝna zmierzyÊ, wystarczy odpowiednio dostroiÊ wartoĂÊ progowÈ
stosowanÈ przez nasz program.
Naleĝy pobraÊ tÚ bibliotekÚ, rozpakowaÊ jej zawartoĂÊ i skopiowaÊ pliki
biblioteki do folderu libraries platformy Arduino. WiÚcej informacji na ten
temat moĝna znaleěÊ w dodatku A zatytuïowanym „Instalacja bibliotek plat-
formy Arduino”.
W nastÚpnym kroku musimy utworzyÊ nowy projekt platformy Arduino
i uĝyÊ wyraĝenia #include CapSense.h;.
Z powodu duĝo mniejszej wielkoĂci samego ciaïa i powierzchni styku ciaïa
z foliÈ aluminiowÈ wartoĂci dla ptaka bÚdÈ zasadniczo róĝniïy siÚ od wartoĂci
dla czïowieka. JeĂli to moĝliwe, warto zmierzyÊ te róĝnice przy pomocy
prawdziwego ptaka. Z radoĂciÈ odkryïem, ĝe papuĝki moich dzieci sÈ na tyle
ïakome, ĝe ochoczo uczestniczÈ w testach, pod warunkiem ĝe grzÚda 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ęRozdziaï 5. • mwierkajÈcy karmnik dla ptaków
101
wykazaïy, ĝe wïaĂciwa wartoĂÊ bazowa powinna mieĂciÊ siÚ w przedziale
od 900 do 1400 oraz ĝe pojemnoĂÊ elektryczna ciaïa ptaka zwiÚksza tÚ war-
toĂÊ do ponad 1500. Na podstawie tych wartoĂci moĝemy opracowaÊ iden-
tyczny kod warunkowy jak w przypadku systemu powiadamiania o poziomie
wody, tak aby program zmieniaï stan w odpowiedzi na powiadomienia o lÈdo-
waniu i odlatywaniu ptaków.
Zacznijmy od napisania kodu, który zaïaduje bibliotekÚ CapSense i bÚ-
dzie wyĂwietlaï odczytywane wartoĂci pojemnoĂci 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 pojemnoĂciowy
// rezystor mostkujÈcy wtyki cyfrowe nr 10 i 7
// przewód poïÈczony 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 lÈdowania na grzÚdzie, perch_value= );
else
Serial.print( Zdarzenie opuszczenia grzÚdy, perch_value= );
Serial.println(perch_value);
}
void loop() {
// czeka sekundÚ w kaĝdej iteracji pÚtli
delay(1000);
// pobiera wartoĂÊ czujnika pojemnoĂciowego
perch_value = foil_sensor.capSense(CAP_SENSE);
switch (perch_state)
Kup książkęPoleć książkę102
5.4. Czujnik ziarna
{
case 0: // ĝaden ptak nie siedzi obecnie na grzÚdzie
if (perch_value = ON_PERCH)
{
perch_state = 1;
SendPerchAlert(perch_value, perch_state);
}
break;
case 1: // jakiĂ ptak siedzi teraz na grzÚdzie
if (perch_value ON_PERCH)
{
perch_state = 0;
SendPerchAlert(perch_value, perch_state);
}
break;
}
}
Warto zwróciÊ uwagÚ na wartoĂÊ staïej ON_PERCH (równÈ 1500), którÈ porów-
nujemy z zarejestrowanÈ wartoĂciÈ zmiennej perch_value. Z uwagi na róĝ-
nice dotyczÈce przewodnictwa elektrycznego zastosowanej folii i samej po-
wierzchni czujnika kaĝdy powinien dostosowaÊ wartoĂÊ progowÈ reprezento-
wanÈ przez staïÈ ON_PERCH (tak jak dostosowywaliĂmy odpowiednie progi
w projekcie systemu powiadamiania o poziomie wody). Naleĝy teĝ zwróciÊ
uwagÚ na wartoĂÊ 30 przypisanÈ staïej CAP_SENSE. Ta wartoĂÊ okreĂla licz-
bÚ pobrañ próbnych wartoĂci w jednym cyklu mierzenia pojemnoĂci.
Skoro dysponujemy juĝ dziaïajÈcym czujnikiem grzÚdy dla ptaków, czas opra-
cowaÊ mechanizm wykrywajÈcy niski poziom ziarna. Jak to zrobiÊ? Warto
zastosowaÊ fotokomórkÚ.
5.4. Czujnik ziarna
Fotokomórka mierzy intensywnoĂÊ Ăwiatïa — wiÚksza intensywnoĂÊ prze-
kïada siÚ na wyĝsze natÚĝenie prÈdu; sïabsze Ăwiatïo powoduje spadek
tego natÚĝenia. Szczegóïowe wyjaĂnienie dziaïania fotokomórek i prze-
wodnik na temat ich stosowania moĝna znaleěÊ na stronie internetowej
Ladyady5. Umieszczenie fotokomórki poniĝej normalnego poziomu ziaren
wsypanych do karmnika umoĝliwi nam wykrywanie zdarzenia polegajÈce-
go na spadku poziomu karmy poniĝej czujnika — do fotokomórki bÚdzie
wówczas docieraïo wiÚcej Ăwiatïa, a nasz system bÚdzie mógï wygenerowaÊ
komunikat o koniecznoĂci uzupeïnienia ziaren.
5 http://www.ladyada.net/learn/sensors/cds.html
Kup książkęPoleć książkęRozdziaï 5. • mwierkajÈcy 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 wïasnorÚcznie skonstruowanego czujnika pojemnoĂciowego.
JednÈ koñcówkÚ fotokomórki naleĝy poïÈczyÊ z wtykiem 5-woltowym na
pïytce Arduino; drugÈ koñcówkÚ naleĝy poïÈczyÊ z wtykiem analogowym
nr 0. Wtyk analogowy nr 0 na pïytce Arduino naleĝy nastÚpnie zmostko-
waÊ z wtykiem uziemienia za pomocÈ rezystora 10 kȍ (patrz rysunek 5.5
zatytuïowany „Schemat poïÈczenia fotokomórki”). Czy opisany schemat
poïÈczeñ nie wyglÈda 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 pïytkÈ Arduino.
Rysunek 5.5.
Schemat poïÈczenia fotokomórki
Po podïÈczeniu fotokomórki naleĝy poïÈczyÊ pïytkÚ Arduino z kompute-
rem (za pomocÈ przewodu szeregowego USB) i uruchomiÊ Ărodowisko
Arduino IDE. Moĝemy teraz zastosowaÊ tÚ samÈ technikÚ co w przypadku
czujnika pojemnoĂciowego, aby przeĂledziÊ wartoĂci dla wtyku analogo-
wego nr 0 (wyĂwietlane w oknie monitora portu szeregowego Ărodowiska
Arduino IDE) i na tej podstawie wyznaczyÊ wartoĂci bazowe — okreĂliÊ
wartoĂÊ dla odsïoniÚtej fotokomórki. Warto teraz zasïoniÊ czujnik palcem,
aby zablokowaÊ dopïyw Ăwiatïa. Naleĝy teĝ zanotowaÊ, jak zmieniïa siÚ
wartoĂÊ odczytana z fotokomórki.
Tak jak w przypadku testów czujnika pojemnoĂciowego, musimy opraco-
waÊ pewne procedury i wyraĝenia warunkowe, które sprawdzÈ progi natÚ-
ĝenia Ăwiatïa. W praktyce moĝemy nawet skopiowaÊ i wkleiÊ kod testujÈcy
Kup książkęPoleć książkę104
5.4. Czujnik ziarna
czujnik pojemnoĂciowy 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( Uzupeïnij ziarno, seed_value= );
else
Serial.print( Karma uzupeïniona, seed_value= );
Serial.println(seed_value);
}
void loop() {
// czeka sekundÚ w kaĝdej iteracji pÚtli
delay(1000);
// sprawdza wartoĂÊ fotokomórki ĂledzÈcej poziom ziarna
seed_value = analogRead(PHOTOCELL_SENSOR);
switch (seed_state)
{
case 0: // pojemnik na ziarno zostaï napeïniony
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ęRozdziaï 5. • mwierkajÈcy karmnik dla ptaków
105
Zmierzenie i ustalenie odpowiedniej wartoĂci progowej dla fotokomórki
(reprezentowanej przez staïÈ SEED) jest duĝo prostsze niĝ w przypadku czujni-
ka pojemnoĂciowego, a uzyskana wartoĂÊ jest bardziej wiarygodna. Mimo
ĝe fotokomórkÚ moĝna zasïoniÊ palcem, aby zmierzyÊ wartoĂÊ w warunkach
braku dopïywu Ăwiatïa, lepszym rozwiÈzaniem bÚdzie zasypanie czujnika
prawdziwym ziarnem. JeĂli z jakiegoĂ powodu nie chcemy wierciÊ dziur
w karmniku dla ptaków, aby zainstalowaÊ fotokomórkÚ, moĝemy umieĂciÊ
czujnik na dnie papierowego kubka.
Tak jak podczas kalibrowania wartoĂci progowych czujnika w systemie po-
wiadamiania o poziomie wody, naleĝy dodaÊ nastÚpujÈce wiersze za wierszem
seed_value = analogRead(PHOTOCELL_SENSOR); w gïównej pÚtli programu:
Serial.print( seed_value= );
Serial.println(seed_value);
Naleĝy zapisaÊ wartoĂÊ poczÈtkowÈ zmiennej seed_value, po czym wypeïniÊ
pojemnik ziarnem i zmierzyÊ nowÈ wartoĂÊ. Na podstawie tych wartoĂci
naleĝy okreĂliÊ wartoĂÊ poczÈtkowÈ i wartoĂÊ progowÈ dla fotokomórki.
JeĂli zasïoniÚcie fotokomórki nie powoduje ĝadnej zmiany wartoĂci, warto
raz jeszcze sprawdziÊ wszystkie poïÈczenia. W przypadku mojej fotokomórki
wartoĂÊ bazowa mieĂciïa siÚ w przedziale od 450 do 550. ZasïoniÚcie
czujnika palcem powodowaïo natychmiastowy spadek tej wartoĂci poniĝej
100. Kaĝdy powinien zastosowaÊ wartoĂci progowe dobrane na podstawie
wïasnych testów. Musimy teĝ pamiÚtaÊ o koniecznoĂci ponownej kalibracji
czujnika juĝ po zamontowaniu w karmniku dla ptaków.
Skoro dysponujemy juĝ dziaïajÈcymi mechanizmami monitorowania czujnika
grzÚdy i fotokomórki, musimy znaleěÊ sposób sygnalizowania przekroczenia
wartoĂci progowych przyjÚtych dla tych czujników. Prowadzenie przewo-
du sieciowego od domowego koncentratora do gaïÚzi drzewa na zewnÈtrz
budynku byïoby niepraktyczne. Sporym wyzwaniem byïaby takĝe instala-
cja platformy Arduino z doïÈczonym moduïem sieciowym w bardzo ogra-
niczonej przestrzeni karmnika dla ptaków. W tej sytuacji warto zastosowaÊ
wygodny mechanizm komunikacji bezprzewodowej (wymagajÈcy stosun-
kowo niewiele mocy elektrycznej), który w zupeïnoĂci wystarczy do prze-
syïania powiadomieñ o przekroczeniu wartoĂci progowych przez wskaza-
nia czujników. Po nawiÈzaniu komunikacji bezprzewodowej moĝemy uĝyÊ
wiÚkszej mocy obliczeniowej i wiÚkszych zasobów pamiÚciowych do przetwa-
rzania i analizy gromadzonych danych.
Kup książkęPoleć książkę106
5.5. Komunikacja bezprzewodowa
5.5. Komunikacja bezprzewodowa
Mimo ĝe istniejÈ moduïy platformy Arduino obsïugujÈce wszechobecny
standard Wi-Fi (802.11b/g), na przykïad WiFly Shield firmy Sparkfun,
w przypadku tej platformy do komunikacji bezprzewodowej czÚĂciej sto-
suje siÚ moduïy XBee. PoczÈtkowe nakïady zwiÈzane z zakupem zestawu
urzÈdzeñ XBee mogÈ byÊ doĂÊ wysokie. Duĝe koszty wynikajÈ z koniecz-
noĂci zakupu (oprócz pary moduïów XBee) przewodu FTDI USB po-
trzebnego do poïÈczenia jednego z tych moduïów z komputerem, tak aby
peïniï funkcjÚ bezprzewodowego portu szeregowego.
Drugi moduï XBee najczÚĂciej jest ïÈczony z platformÈ Arduino. IstniejÈ
teĝ dodatkowe zestawy upraszczajÈce ïÈczenie tych elementów — umoĝli-
wiajÈce instalowanie moduïów XBee przy uĝyciu specjalnych wtyczek i wy-
Ăwietlanie stanu transmisji danych za pomocÈ wbudowanych diod LED.
Takie wizualne wskaěniki mogÈ byÊ doĂÊ przydatne podczas diagnozowa-
nia poïÈczenia pary moduïów XBee i usuwania ewentualnych bïÚdów.
Mimo wszystkich trudnoĂci moĝliwoĂci oferowane przez moduïy XBee
(niski pobór prÈdu i stosunkowo duĝy zasiÚg — maksymalnie 50 metrów)
czyniÈ z tych urzÈdzeñ wprost doskonaïÈ technologiÚ komunikacji bezprze-
wodowej na potrzeby tego projektu.
Z myĂlÈ o uproszczeniu ïÈczenia moduïów XBee firma Adafruit zaprojekto-
waïa zestaw adapterów, który jednak wymaga przylutowania kilku niewiel-
kich komponentów do pïytki Arduino. Adaptery naleĝy stosowaÊ zgodnie
z instrukcjami dostÚpnymi na stronie internetowej Ladyady6.
Po poïÈczeniu moduïów XBee konfiguracja i nawiÈzanie komunikacji po-
miÚdzy parÈ tych moduïów nie sÈ trudne. Warto jednak pamiÚtaÊ, ĝe jedno
z najbardziej przydatnych narzÚdzi uïatwiajÈcych konfiguracjÚ tych mo-
duïów dziaïa tylko w systemie Windows.
Zgodnie z instrukcjami opisujÈcymi schemat ïÈczenia moduïów XBee w topo-
logii punkt – punkt dostÚpnymi na stronie Ladyady7 naleĝy poïÈczyÊ wtyki
zasilania, uziemienia (Gnd), odbioru (RX) i transmisji (TX) jednego
moduïu XBee z zamontowanym adapterem odpowiednio do wtyków 5V,
Gnd, cyfrowego nr 2 i cyfrowego nr 3 na pïytce Arduino. PïytkÚ Arduino
naleĝy nastÚpnie poïÈczyÊ z komputerem, umieĂciÊ na platformie program
6 http://www.ladyada.net/make/xbee/
7 http://ladyada.net/make/xbee/point2point.html
Kup książkęPoleć książkęRozdziaï 5. • mwierkajÈcy karmnik dla ptaków
107
testowy, otworzyÊ okno monitora portu szeregowego Ărodowiska Arduino
IDE i upewniÊ siÚ, ĝe jest ustawiona odpowiednia szybkoĂÊ transmisji
(9600). Naleĝy nastÚpnie (jeszcze przed odïÈczeniem platformy Arduino)
poïÈczyÊ komputer z drugim moduïem XBee za poĂrednictwem przewodu
FTDI USB. W nastÚpnym kroku musimy otworzyÊ sesjÚ terminala portu
szeregowego: program Hyperterminal w systemie Windows, polecenie screen
w systemie Mac lub rozmaite programy do obsïugi komunikacji szeregowej
dostÚpne dla systemu Linux, na przykïad Minicom8.
Po nawiÈzaniu poïÈczenia szeregowego wystarczy wpisaÊ kilka znaków w
oknie danych wejĂciowych uĝytej aplikacji. JeĂli oba moduïy XBee zostaïy
prawidïowo skonfigurowane, wpisane znaki powinny zostaÊ wyĂwietlone
w oknie monitora portu szeregowego Ărodowiska Arduino IDE.
Korzystanie z narzÚdzia screen
Aplikacja screen jest wygodnym narzÚdziem do monitorowania por-
tu szeregowego dostÚpnym dla platform na bazie systemu Unix,
czyli systemów Mac OS X i Linux. Aby uĝyÊ tego programu w systemie
OS X, naleĝy okreĂliÊ port szeregowy, do którego podïÈczono przewód
FTDI USB — moĝna to zrobiÊ za pomocÈ Ărodowiska Arduino IDE.
Z menu Tools tego Ărodowiska naleĝy wybraÊ opcjÚ Serial Port, aby zi-
dentyfikowaÊ przypisany port szeregowy.
W moim przypadku poïÈczenie adaptera FTDI USB z XBee jest ozna-
czone jako urzÈdzenie /dev/tty.usbserial-A6003SHc, jednak na innym
komputerze to samo poïÈczenie moĝe byÊ reprezentowane w inny
sposób (w zaleĝnoĂci od pozostaïych urzÈdzeñ podïÈczonych do
komputera). Po otwarciu aplikacji terminala naleĝy wpisaÊ polecenie
screen /dev/tty.YOURDEVICE 9600. W wyniku tego polecenia zostanie
otwarty port szeregowy i uzyskamy moĝliwoĂÊ wpisywania i otrzymy-
wania znaków z szybkoĂciÈ transmisji 9600. Aby zamknÈÊ narzÚdzie,
naleĝy nacisnÈÊ kolejno kombinacje klawiszy Ctrl+A oraz Ctrl+.
JeĂli do poïÈczenia moduïów XBee z pïytkÈ Arduino i przewodem FTDI
uĝyto odpowiednich adapterów, w czasie bezprzewodowej transmisji znaków
pomiÚdzy moduïami XBee powinny migaÊ diody LED (zielona podczas
wysyïania danych i czerwona podczas odbioru danych).
8 http://alioth.debian.org/projects/minicom/
Kup książkęPoleć książkę108
5.5. Komunikacja bezprzewodowa
JeĂli w oknie odbieranych danych nie widaÊ ĝadnych znaków, naleĝy jeszcze
raz sprawdziÊ przewody ïÈczÈce moduï XBee z odpowiednimi wtykami na
pïytce Arduino. Warto teĝ zamieniÊ te moduïy miejscami, aby sprawdziÊ, czy
oba urzÈdzenia sÈ rozpoznawane po poïÈczeniu z komputerem za pomocÈ
przewodu FTDI USB. W oknie terminala aplikacji portu szeregowego
naleĝy wpisaÊ polecenie AT i sprawdziÊ, czy w odpowiedzi otrzymamy po-
twierdzenie OK.
JeĂli moduïy XBee wciÈĝ nie mogÈ nawiÈzaÊ poïÈczenia, warto poprosiÊ
o pomoc sprzedawcÚ, u którego zakupiono ten sprzÚt.
Po udanej próbie nawiÈzania komunikacji przez parÚ moduïów XBee mo-
ĝemy ponownie podïÈczyÊ fotokomórkÚ i czujnik pojemnoĂciowy do pïytki
Arduino i poïÈczyÊ kod obsïugujÈcy ten moduï z kodem analizujÈcym warunki
progowe obu czujników. Kompletny schemat poïÈczeñ tego systemu pokaza-
no na rysunku 5.6 zatytuïowanym „mwierkajÈcy karmnik dla ptaków z czuj-
nikami i moduïem XBee podïÈczonymi do platformy Arduino”.
Rysunek 5.6.
mwierkajÈcy karmnik dla ptaków z czujnikami i moduïem
XBee podïÈczonymi do platformy Arduino
Kup książkęPoleć książkęRozdziaï 5. • mwierkajÈcy karmnik dla ptaków
109
Warto rozwaĝyÊ uĝycie uniwersalnej pïytki montaĝowej lub zlutowanie
czujników, uĝytych przewodów i odpowiednich wtyków na pïytce Arduino.
Czytelnicy, którzy do testów wolÈ uĝywaÊ pïytki uniwersalnej, muszÈ pamiÚ-
taÊ, ĝe taka pïytka najprawdopodobniej nie zmieĂci siÚ w karmniku, zatem
przewody ïÈczÈce elementy systemu trzeba bÚdzie przylutowaÊ dopiero po
instalacji w miejscu docelowym. W zaleĝnoĂci od poïoĝenia i orientacji
pïytki Arduino Uno lub Nano wewnÈtrz karmnika byÊ moĝe bÚdziemy
musieli uĝyÊ dla adaptera XBee prostych wtyków zamiast standardowych
wtyków wygiÚtych w prawo. Naszym celem jest umieszczenie wszystkich
potrzebnych elementów wewnÈtrz karmnika w sposób gwarantujÈcy bez-
pieczeñstwo i jednoczeĂnie moĝliwoĂÊ konserwacji systemu. Warto przy tym
pamiÚtaÊ, ĝe w przeciwieñstwie do pïytki Arduino Uno pïytka Arduino Na-
no stosuje mÚskie wtyki. Oznacza to, ĝe aby lepiej poïÈczyÊ mÚskie wtyki na
pïytce Nano, naleĝy zastosowaÊ przewody z ĝeñskimi koñcówkami.
Koñczenie szkicu
Musimy odczytywaÊ wartoĂci obu czujników — czujnika pojemnoĂciowe-
go z folii aluminiowej oraz fotokomórki. PoczÈtkowo odczytywane warto-
Ăci bÚdÈ trafiaïy do okna monitora portu szeregowego Ărodowiska Arduino
IDE, a docelowo (po wprowadzeniu drobnej zmiany w kodzie) bÚdÈ wy-
syïane przez moduï XBee. Na tym etapie naszym celem jest poïÈczenie
kodu sprawdzajÈcego wyznaczone wczeĂniej wartoĂci progowe dla czujni-
ka pojemnoĂciowego i fotokomórki z kodem wysyïajÈcym do moduïu
XBee ostrzeĝenia o przekroczeniu tych wartoĂci. Po dodaniu tej logiki do
napisanego wczeĂniej kodu testujÈcego stan grzÚdy i pojemnika na nasiona
moĝemy zakoñczyÊ 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 wysyïania/odbioru danych
// przez moduï XBee
NewSoftSerial XBeeSerial = NewSoftSerial(2, 3);
CapSense foil_sensor = CapSense(10,7); // czujnik pojemnoĂciowy
// rezystor mostkujÈcy wtyki cyfrowe
// nr 10 i 7
Kup książkęPoleć książkę110
5.5. Komunikacja bezprzewodowa
// przewód poïÈczony 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 poĂrednictwem moduïu 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 lÈdowania na grzÚdzie, perch_value= );
}
else
{
XBeeSerial.println( odlot );
Serial.print( Zdarzenie opuszczenia grzÚdy, 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( Uzupeïnij ziarno, seed_value= );
}
else
{
XBeeSerial.println( ziarnoWNormie );
Serial.print( Karma uzupeïniona, seed_value= );
}
Serial.println(seed_value);
}
void loop() {
// czeka sekundÚ w kaĝdej iteracji pÚtli
delay(1000);
Kup książkęPoleć książkęRozdziaï 5. • mwierkajÈcy karmnik dla ptaków
111
// sprawdza wartoĂÊ czujnika pojemnoĂciowego na grzÚdzie
perch_value = foil_sensor.capSense(CAP_SENSE);
// sprawdza wartoĂÊ fotokomórki ĂledzÈcej poziom ziarna
seed_value = analogRead(PHOTOCELL_SENSOR);
switch (perch_state)
{
case 0: // ĝaden ptak nie siedzi na grzÚdzie
if (perch_value = ON_PERCH)
{
perch_state = 1;
SendPerchAlert(perch_value, perch_state);
}
break;
case 1: // jakiĂ ptak siedzi teraz na grzÚdzie
if (perch_value ON_PERCH)
{
perch_state = 0;
SendPerchAlert(perch_value, perch_state);
}
break;
}
switch (seed_state)
{
case 0: // pojemnik na ziarno zostaï napeïniony
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 odwoïania do biblioteki obsïugujÈcej czujnik pojem-
noĂciowy i nowej biblioteki obsïugujÈcej komunikacjÚ za poĂrednictwem
portu szeregowego na poczÈtku tego szkicu. Zmienne, które bÚdÈ uĝywaïy
odwoïañ do tych bibliotek, zainicjalizowano w tym samym miejscu, w którym
ustawiono wartoĂci zmiennych progowych. W dalszej czÚĂci kodu konfigu-
rujemy poïÈczenia z oknem monitora portu szeregowego i moduïem XBee,
a takĝe z wbudowanÈ diodÈ LED na pïytce Arduino (wtyk nr 13). Po za-
koñczeniu inicjalizacji program uruchamia pÚtlÚ i czeka na przekroczenie
wartoĂci progowych dla czujników grzÚdy i (lub) ziarna. W razie wykrycia
Kup książkęPoleć książkę112
5.5. Komunikacja bezprzewodowa
zmiany warunków szkic wyĂle odpowiednie komunikaty zarówno do okna
monitorowania portu szeregowego w Ărodowisku Arduino IDE, jak i do
moduïu komunikacji radiowej XBee.
JeĂli zarówno czujnik pojemnoĂciowy, jak i fotokomórka prawidïowo prze-
kazujÈ wartoĂci, naleĝy przekierowaÊ dane z okna monitorowania portu
szeregowego Ărodowiska Arduino IDE do moduïu XBee poïÈczonego
z platformÈ Arduino. Warto jeszcze otworzyÊ okno aplikacji testujÈcej port
szeregowy w trybie Ăledzenia moduïu XBee podïÈczonego za pomocÈ
przewodu FTDI i sprawdziÊ, czy wszystko dziaïa prawidïowo — jeĂli tak,
dane wyĂwietlane w oknie monitora portu szeregowego Ărodowiska Arduino
IDE powinny byÊ widoczne takĝe w aplikacji portu szeregowego na kom-
puterze, do którego podïÈczono przewód FTDI. Czyĝ komunikacja bez-
przewodowa nie jest wspaniaïa?
Na tym etapie sprzÚt potrzebny do realizacji tego projektu jest prawidïowo
poïÈczony i przetestowany — caïa konstrukcja powinna przypominaÊ
karmnik mojego autorstwa pokazany na rysunku 5.7 zatytuïowanym „Pa-
puĝka moĝe pomóc w testowaniu i diagnozowaniu wartoĂci progowych
czujnika grzÚdy dla zdarzeñ lÈdowania i odlatywania ptaków”.
Rysunek 5.7.
Papuĝka moĝe pomóc w testowaniu i diagnozowaniu
wartoĂci progowych czujnika grzÚdy dla zdarzeñ lÈdowania
i odlatywania ptaków
Zanim jednak przystÈpimy do instalowania tego sprzÚtu w karmniku dla pta-
ków, musimy zbudowaÊ jeszcze jeden waĝny komponent. Uĝyjemy jÚzyka
Kup książkęPoleć książkęRozdziaï 5. • mwierkajÈcy karmnik dla ptaków
113
programowania Python do napisania krótkiego programu, który bÚdzie na-
sïuchiwaï komunikatów o lÈdujÈcych ptakach, sprawdzaï stan pojemnika
z nasionami i publikowaï stosowne wpisy na Twitterze. Przejděmy wiÚc do
pisania odpowiedniego kodu.
5.6. mwierkanie w Pythonie
Istnieje wiele jÚzyków programowania, w których moĝna zaimplementowaÊ
mechanizm monitorowania i interpretacji komunikatów przychodzÈcych
do konsoli portu szeregowego oraz wysyïania komunikatów za poĂrednic-
twem portu szeregowego. Istnieje teĝ wiele bibliotek Twittera dla róĝnych
jÚzyków programowania.
Wybraïem jÚzyk Python dla tego i wielu innych skryptów prezentowanych
w tej ksiÈĝce, poniewaĝ jÚzyk ten ma ïatwÈ w interpretacji skïadniÚ, jest do-
myĂlnie instalowany wraz z systemami operacyjnymi Linux i Mac OS X
oraz oferuje wiele przydatnych bibliotek (na przykïad SQLite) w swojej
podstawowej dystrybucji, zatem nie wymaga doinstalowywania tych kom-
ponentów. Czytelnikom, którzy chcÈ siÚ nauczyÊ programowania w jÚzyku
Python, polecam ksiÈĝkÚ Python. Wprowadzenie [LA03].
W tym projekcie bÚdziemy potrzebowali prostego skryptu o nazwie twe-
etingbirdfeeder.py, który bÚdzie realizowaï nastÚpujÈce zadania:
1. Rejestrowanie zdarzeñ (wraz z datÈ i godzinÈ) lÈdowania i odlo-
tów ptaków na podstawie komunikatów wysyïanych przez czujnik
grzÚdy. Dane majÈ byÊ zapisywane w tabeli birdfeeding bazy da-
nych tweetingbirdfeeder.
2. Rejestrowanie daty i godziny zdarzeñ polegajÈcych na wykryciu
braku ziaren i uzupeïnieniu pojemnika na karmÚ. Dane majÈ byÊ
zapisywane w tabeli seedstatus, która takĝe naleĝy do bazy danych
tweetingbirdfeeder.
3. Nasïuchiwanie danych przychodzÈcych i wysyïanie komunikatów
za poĂrednictwem nadajnika XBee poïÈczonego z komputerem przy
uĝyciu przewodu FTDI. Reagowanie na zdarzenia poprzez zapisy-
wanie danych wraz z datami, godzinami i rejestrowanymi warunkami.
4. NawiÈzywanie poïÈczenia z Twitterem za poĂrednictwem usïugi
uwierzytelniania OAuth i wysyïanie wpisów na temat karmienia pta-
ków i poziomu ziaren w karmniku.
Kup książkęPoleć książkę114
5.6. mwierkanie w Pythonie
Na potrzeby tego projektu bÚdziemy 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 przykïad czÚstotliwoĂci wizyt ptaków w karmniku, liczby tych odwie-
dzin wedïug dat i godzin oraz Ăredniego czasu pomiÚdzy uzupeïnianiem
karmy. Takie rozwiÈzanie umoĝliwi nam Ăledzenie trendów na podstawie
danych zarejestrowanych w ciÈgu godziny, doby, miesiÈca i roku. Warunkiem
prezentacji tego rodzaju statystyk jest gromadzenie danych w odpowiednim
formacie.
Konfiguracja bazy danych
Poniewaĝ poczÈwszy od wersji 2.5, jÚzyk Python oferuje wbudowanÈ obsïugÚ
baz danych SQLite i poniewaĝ nasze dane nie wymagajÈ wyszukanego,
autonomicznego serwera bazy danych, baza SQLite jest wprost idealnym
rozwiÈzaniem dla tego projektu. Mimo ĝe wartoĂci moĝna by zapisywaÊ
w zwykïym pliku CSV (z danymi oddzielonymi przecinkami), uĝycie bazy
danych SQLite ma dwie zasadnicze zalety. Po pierwsze, ten sposób prze-
chowywania danych uïatwi wykonywanie zapytañ analitycznych w przyszïo-
Ăci. Po drugie, baza danych oferuje wiÚkszÈ elastycznoĂÊ w zakresie gro-
madzenia danych o róĝnych rodzajach zdarzeñ i zarzÈdzania tymi danymi
— w wielu przypadkach wystarczy tylko dodaÊ odpowiednie kolumny do
tabeli.
Do utworzenia bazy danych w formacie pliku sqlite3 naleĝy uĝyÊ polecenia
wiersza poleceñ sqlite3. NarzÚdzie jest domyĂlnie instalowane wraz z syste-
mem Mac OS X. W wiÚkszoĂci systemów Linux naleĝy pobraÊ to narzÚdzie
z repozytorium aplikacji wïaĂciwego danej dystrybucji. W dystrybucjach syste-
mu Linux na bazie Debiana, na przykïad w systemie Ubuntu, instalacja apli-
kacji wymaga uĝycia polecenia sudo apt-get install sqlite3 libsqlite3-dev.
Uĝytkownicy systemu Windows bÚdÈ musieli pobraÊ narzÚdzie sqlite3.exe
z witryny internetowej bazy danych SQLite9.
Po zainstalowaniu systemu bazy danych naleĝy wpisaÊ polecenie sqlite3
w oknie terminala. Polecenie spowoduje wyĂwietlenie komunikatów podob-
nych do tych pokazanych poniĝej:
9 http://www.sqlite.org/download.html
Kup książkęPoleć książkęRozdziaï 5. • mwierkajÈcy 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 oczywiĂcie moĝe mieÊ
inny numer wersji.
Musimy teraz wpisaÊ wyraĝenie jÚzyka SQL tworzÈce nowÈ bazÚ danych.
W tym celu naleĝy opuĂciÊ powïokÚ poleceñ sqlite, wpisujÈc kolejno znaki
.q i naciskajÈc klawisz wïaĂciwy znakowi powrotu karetki. Zaraz potem nale-
ĝy ponownie uruchomiÊ narzÚdzie sqlite3, tym razem podajÈc nazwÚ bazy
danych, która ma zostaÊ otwarta.
BazÚ danych dla tego projektu nazwiemy tweetingbirdfeeder, a jej dane
bÚdÈ 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 narzÚdzie sqlite3. JeĂli na przykïad polecenie sqlite3
wpisaliĂmy z poziomu katalogu home, plik nowej bazy danych zostanie
utworzony wïaĂnie w tym katalogu.
W bazie danych tweetingbirdfeeder.sqlite naleĝy teraz utworzyÊ nowÈ tabelÚ
nazwanÈ birdfeeding. StrukturÚ tej tabeli pokazano poniĝej:
Nazwa
kolumny
Typ
danych
Klucz
gïówny?
Automatyczne
zwiÚkszanie?
Dopuszczalne
wartoĂci puste?
Unikatowa?
INTEGER TAK
TAK
id
time
DATETIME NIE
event
TEXT
NIE
NIE
NIE
NIE
NIE
NIE
TAK
NIE
NIE
OdpowiedniÈ tabelÚ moĝemy utworzyÊ, wpisujÈc nastÚpujÈce wyraĝenie jÚzy-
ka SQL w wierszu poleceñ narzÚdzia 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, bÚdzie naleĝaïa do tej
samej bazy danych:
Kup książkęPoleć książkę116
5.6. mwierkanie w Pythonie
Nazwa
kolumny
Typ
danych
Klucz
gïówny?
Automatyczna
inkrementacja?
Dopuszczalne
wartoĂci puste?
Unikatowa?
INTEGER TAK
TAK
id
time
DATETIME NIE
event
TEXT
NIE
NIE
NIE
NIE
NIE
NIE
TAK
NIE
NIE
Tak jak w przypadku tabeli birdfeeding, utworzenie nowej tabeli seedstatus
wymaga wpisania odpowiedniego wyraĝenia jÚzyka SQL w wierszu poleceñ
narzÚdzia 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 narzÚdzia systemu SQLite obsïugiwane z poziomu wiersza
poleceñ oferujÈ wszystkie elementy niezbÚdne do tworzenia baz da-
nych i zarzÈdzania tymi bazami, w pewnych przypadkach prostszym
rozwiÈzaniem jest korzystanie z aplikacji oferujÈcej graficzny inter-
fejs uĝytkownika. Aplikacje z takim interfejsem sÈ szczególnie przydat-
ne, jeĂli musimy przewijaÊ duĝÈ liczbÚ wierszy w jednym oknie. Istnieje
wiele aplikacji open source umoĝliwiajÈcych przeglÈdanie baz danych
SQLite i oferujÈcych graficzny interfejs uĝytkownika. Uĝytkowników prze-
glÈdarki internetowej Mozilla Firefox zachÚcam do instalacji dodatku SQ-
Lite Manager, który moĝna stosowaÊ na wielu róĝnych platformach10.
Instalacja tego dodatku jest bardzo prosta. Z menu przeglÈdarki Fire-
fox naleĝy wybraÊ opcjÚ Dodatki, po czym znaleěÊ dodatek SQLite Ma-
nager i kliknÈÊ przycisk Zainstaluj. Po zainstalowaniu dodatku naleĝy
otworzyÊ zakïadkÚ Rozszerzenia w oknie dodatków i kliknÈÊ przycisk Opcje
dla dodatku SQLite Manager. Utworzenie nowej bazy danych sprowa-
dza siÚ do klikniÚcia ikony New Database na pasku narzÚdzi dodatku
SQLite Manager. Równie proste jest zapisywanie i otwieranie plików
baz danych SQLite.
10https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/
Kup książkęPoleć książkęRozdziaï 5. • mwierkajÈcy karmnik dla ptaków
117
Dysponujemy juĝ gotowÈ bazÈ danych, zatem moĝemy przystÈpiÊ do pracy
nad kodem importujÈcym tÚ bazÚ oraz wspomniane wczeĂniej biblioteki Se-
rial i Twitter. Musimy teĝ przygotowaÊ skrypt nasïuchujÈcy zdarzeñ przesy-
ïanych za poĂrednictwem portu szeregowego i rejestrujÈcy te dane (wraz ze
znacznikami czasowymi) w odpowiedniej tabeli bazy danych.
Procedura przechwytywania zdarzenia powinna siÚ zakoñczyÊ publikacjÈ
wpisu na Twitterze. Zanim jednak bÚdziemy mogli wysyïaÊ takie wpisy
z poziomu programu, musimy utworzyÊ konto na Twitterze i zarejestrowaÊ
siÚ, aby uzyskaÊ klucz interfejsu Twitter API wraz z powiÈzanymi danymi
uwierzytelniajÈcymi standardu OAuth. Przejděmy wiÚc do procesu uzyski-
wania klucza do wspomnianego interfejsu API.
Dane uwierzytelniajÈce interfejsu API Twittera
Zanim bÚdziemy mogli umieszczaÊ wpisy na Twitterze, musimy oczywiĂcie
zaïoĝyÊ konto w tym serwisie. Co wiÚcej, zanim bÚdziemy mogli wysyïaÊ wpisy
z poziomu naszego programu, a konkretnie funkcji lub bibliotek jÚzyka
programowania obsïugujÈcych standard uwierzytelniania OAuth11, musimy
utworzyÊ identyfikator aplikacji przypisany do odpowiedniego konta na
Twitterze. Mimo ĝe moĝna wykorzystaÊ do tego celu istniejÈce konto na
Twitterze, moim zdaniem lepszym rozwiÈzaniem jest utworzenie zupeïnie
nowego konta specjalnie na potrzeby tego projektu. DziÚki temu uĝytkownicy
ĂledzÈcy moje dotychczasowe konto nie bÚdÈ niepokojeni eksperymentalnymi
powiadomieniami w zwiÈzku z tworzonymi projektami. Takie rozwiÈzanie
umoĝliwia teĝ bardziej selektywny wybór odbiorców postów publikowanych
przez tworzonÈ aplikacjÚ. Po rozwaĝeniu wszystkich argumentów naleĝy
utworzyÊ nowe konto i uzyskaÊ identyfikator aplikacji wygenerowany spe-
cjalnie dla projektu ÊwierkajÈcego karmnika dla ptaków.
Musimy teraz otworzyÊ stronÚ dev.twitter.com, zalogowaÊ siÚ przy uĝyciu
nowych danych uwierzytelniajÈcych i wybraÊ opcjÚ Create an app. Na otwar-
tej stronie Create an application naleĝy podaÊ unikatowÈ nazwÚ nowej
aplikacji, opis zïoĝony z co najmniej dziesiÚciu znaków oraz adres strony in-
ternetowej rejestrowanej aplikacji. Czytelnicy, którzy nie dysponujÈ wïasnymi
witrynami internetowymi oferujÈcymi moĝliwoĂÊ pobrania aplikacji, mogÈ
wpisaÊ jakiĂ tymczasowy adres. Naleĝy nastÚpnie zaznaczyÊ pole Client under
Application Type i wybraÊ opcjÚ Read Write z menu Default Access
11http://oauth.net/
Kup książkęPoleć książkę118
5.6. mwierkanie w Pythonie
Type. Moĝna teĝ wskazaÊ niestandardowÈ ikonÚ aplikacji, jednak ten krok
nie jest wymagany. Po wpisaniu tekstu zabezpieczenia CAPTCHA na-
leĝy kliknÈÊ przycisk Create your Twitter application na dole strony. Przed
przejĂciem do nastÚpnego kroku naleĝy 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Ê dostÚp do tokenu dostÚpu (oauth_token) i klucza tajnego tokenu
dostÚpu (oauth_token_secret), naleĝy kliknÈÊ opcjÚ My Access Token wi-
docznÈ po lewej stronie. Obie wartoĂci naleĝy skopiowaÊ i zapisaÊ w bez-
piecznym, odpowiednio chronionym pliku. Obie wartoĂci bÚdÈ potrzebne
do komunikacji z nowym kontem na Twitterze z poziomu kodu programu.
OczywiĂcie naleĝy zadbaÊ o zachowanie tych wartoĂci w Ăcisïej tajemnicy!
Nie chcemy przecieĝ, aby jakiĂ zïoĂliwy, pozbawiony skrupuïów uĝytkownik
przejÈï nasz tajny token, wykorzystywaï go do wysyïania spamu do naszych
przyjacióï i doprowadzaï do pasji caïÈ spoïecznoĂÊ uĝ
Pobierz darmowy fragment (pdf)