Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00366 006378 12421984 na godz. na dobę w sumie
Inteligentny dom. Automatyzacja mieszkania za pomocą platformy Arduino, systemu Android i zwykłego komputera - książka
Inteligentny dom. Automatyzacja mieszkania za pomocą platformy Arduino, systemu Android i zwykłego komputera - książka
Autor: Liczba stron: 296
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-5675-2 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> elektronika >> arduino
Porównaj ceny (książka, ebook, audiobook).

Przejmij kontrolę nad swoim domem!

Chcesz, żeby Twój dom był inteligentny? Wszystko jest w Twoim zasięgu! Miłośnik technologii, Mike Riley, pomoże Ci zrealizować różne nietypowe projekty automatyzacji domu. Przeprowadzi Cię krok po kroku przez proces zdobywania potrzebnych elementów, budowy fizycznych rozwiązań i tworzenia potrzebnego kodu. Nauczysz się używać ciekawych technologii i usług oraz rozwijać dostępne rozwiązania.

System powiadamiający o poziomie wody, elektryczny pies obronny czy system wykrywający dostarczone paczki to tylko część pomysłów, które pozwolą Ci opanować niuanse tworzenia własnych projektów. Dzięki lekturze tej książki samodzielnie zbudujesz karmnik, który będzie publikował na Twitterze wpisy o przylatujących ptakach i konieczności uzupełnienia ziarna. Będziesz sterował oświetleniem wewnątrz i na zewnątrz domu za pomocą odpowiedniego programu. Zabezpieczysz swój dom przed nieproszonymi gośćmi. Stworzysz autonomiczny system podnoszenia i opuszczania zasłon zależnie od temperatury i natężenia światła w pokoju. Sprawisz, że Twój dom przemówi w momencie, gdy przyjdzie do Ciebie e-mail lub odwiedzą Cię goście... Książka ta będzie niewyczerpanym źródłem inspiracji dla kolejnych innowacji w Twoim domu. Spróbuj tego, naprawdę warto!

Sprawdź, jak zaszczepić inteligencję w Twoim domu, i zaprogramuj:

Już za chwilę możesz mieszkać w niezwykłym i najinteligentniejszym miejscu w okolicy!

Znajdź podobne książki Ostatnio czytane w tej kategorii

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)

Gdzie kupić całą publikację:

Inteligentny dom. Automatyzacja mieszkania za pomocą platformy Arduino, systemu Android i zwykłego komputera
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: