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



Podobne dokumenty
Poznaj możliwości platformy Arduino! Twoja przepustka do świata elektroniki!

Seria P-662HW-Dx. Bezprzewodowy modem ADSL2+ z routerem. Skrócona instrukcja obsługi

Instrukcja programu PControl Powiadowmienia.

Elementy podłączeniowe.

Konfigurator opisuje proces instalacji i konfiguracji karty sieciowej bezprzewodowej D-Link DWL-520+ w systemach /2000/XP /

MUltimedia internet Instrukcja Instalacji

Instrukcja obsługi zamka. bibi-z50. (zamek autonomiczny z czytnikiem identyfikatora Mifare)

VinCent Office. Moduł Drukarki Fiskalnej

System Informatyczny CELAB. Przygotowanie programu do pracy - Ewidencja Czasu Pracy

VLAN Ethernet. być konfigurowane w dowolnym systemie operacyjnym do ćwiczenia nr 6. Od ćwiczenia 7 należy pracować ć w systemie Linux.

REJESTRATOR RES800 INSTRUKCJA OBSŁUGI

Budowa systemów komputerowych

Przewodnik AirPrint. Ten dokument obowiązuje dla modeli atramentowych. Wersja A POL

Systemy mikroprocesorowe - projekt

Microsoft Management Console

Spis zawartości Lp. Str. Zastosowanie Budowa wzmacniacza RS485 Dane techniczne Schemat elektryczny

Komunikacja w sieci Industrial Ethernet z wykorzystaniem Protokołu S7 oraz funkcji PUT/GET

PERSON Kraków

Karta sieciowa WiFi Micro USB N300 (N300MA)

epuap Ogólna instrukcja organizacyjna kroków dla realizacji integracji

Type ETO2 Controller for ice and snow melting

Sieci komputerowe. Definicja. Elementy

Oprogramowanie FonTel służy do prezentacji nagranych rozmów oraz zarządzania rejestratorami ( zapoznaj się z rodziną rejestratorów FonTel ).

Spis treści. Rozdział 1 ewyniki. mmedica - INSTR UKC JA UŻYTKO W NIKA

Pracownia internetowa w ka dej szkole (edycja 2004/2005)

HERCULES DJCONTROLWAVE I DJUCED DJW PIERWSZE KROKI

CZYTNIK ZBLIŻENIOWY RFID-UR80D

Oprogramowanie klawiatury matrycowej i alfanumerycznego wyświetlacza LCD

Moduł GSM generacja 1

2.1 INFORMACJE OGÓLNE O SERII NX

elektroniczna Platforma Usług Administracji Publicznej

Specyfikacja usługi CCIE R&S

Instalacja. Wzmacniacz sygnału sieci WiFi N300. Model WN3100RP

PODRĘCZNIK UŻYTKOWNIKA

Zdalne odnawianie certyfikatów do SWI

Zintegrowane Systemy Zarządzania Biblioteką SOWA1 i SOWA2 SKONTRUM

Pracownia internetowa w każdej szkole. Opiekun pracowni internetowej SBS 2003 PING

Siemens IO-Link. Smart TIA integration of sensors and actuators

Program Google AdSense w Smaker.pl

Zainstalowana po raz pierwszy aplikacja wymaga aktualizacji bazy danych obsługiwanych sterowników.

SpedCust 5 instrukcja instalacji

System nagłośnieniowy i dźwiękowy system ostrzegawczy Bosch Praesideo

Przewodnik Google Cloud Print

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym Magento (plugin dostępny w wersji ecommerce)

ARKUSZ EGZAMINACYJNY ETAP PRAKTYCZNY EGZAMINU POTWIERDZAJ CEGO KWALIFIKACJE ZAWODOWE CZERWIEC 2012

Wykład 2. Interfejsy I 2 C, OneWire, I 2 S

Instrukcja zarządzania systemem informatycznym służącym do przetwarzania danych osobowych

Sieci komputerowe cel

Urządzenia do bezprzerwowego zasilania UPS CES GX RACK. 10 kva. Wersja U/CES_GXR_10.0/J/v01. Praca równoległa

Instrukcja wprowadzania ocen do systemu USOSweb

raceboard-s Szybki start

Polish edition copyright 2014 by Helion S.A. All rights reserved.

ARKUSZ EGZAMINACYJNY ETAP PRAKTYCZNY EGZAMINU POTWIERDZAJ CEGO KWALIFIKACJE ZAWODOWE CZERWIEC 2012

Sieć komputerowa grupa komputerów lub innych urządzeo połączonych ze sobą w celu wymiany danych lub współdzielenia różnych zasobów, na przykład:

Instrukcja wgrywania synoptyki pola (wersja modelu danych do 634)

PROCEDURA ROZWIĄZYWANIA PROBLEMÓW Z SYSTEMEM SD-NAVI (wersja 1.00)

Opis obsługi systemu Ognivo2 w aplikacji Komornik SQL-VAT

Konfiguracja OpenVPN

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

Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych ul. Koszykowa 75, Warszawa

INSTRUKCJA OBSŁUGI URZĄDZENIA: HC8201

Instrukcja procesu aktywacji oraz obsługi systemu Banku Internetowego dla BS Mikołajki

Instrukcja obsługi panelu operacyjnego XV100 w SZR-MAX-1SX

Instalacja. Zawartość. Wyszukiwarka. Instalacja Konfiguracja Uruchomienie i praca z raportem Metody wyszukiwania...

Adapter USB do CB32. MDH-SYSTEM ul. Bajkowa 5, Lublin tel./fax lub kom e mail: info@mdh-system.pl

Instrukcja programowania systemu IP-DECT KIRK 300 w centralach MICRA, SIGMA, OPTIMA, DELTA

ARKUSZ EGZAMINACYJNY ETAP PRAKTYCZNY EGZAMINU POTWIERDZAJ CEGO KWALIFIKACJE ZAWODOWE CZERWIEC 201

ARKUSZ EGZAMINACYJNY ETAP PRAKTYCZNY EGZAMINU POTWIERDZAJ CEGO KWALIFIKACJE ZAWODOWE CZERWIEC 2012

Dziękujemy za wybór urządzenia Mobile WiFi. Mobile WiFi umożliwia szybką, bezprzewodową łączność z sieciami komputerowymi.

emszmal 3: Automatyczne księgowanie przelewów w menedżerze sprzedaży BaseLinker (plugin dostępny w wersji ecommerce)

Wdrożenie modułu płatności eservice dla systemu Virtuemart 2.0.x

Automatyzacja procesu publikowania w bibliotece cyfrowej

SKRÓCONA INSTRUKCJA OBSŁUGI ELEKTRONICZNEGO BIURA OBSŁUGI UCZESTNIKA BADANIA BIEGŁOŚCI

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

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla uŝytkowników modułu wyszukiwania danych Warszawa 2007

PRZEMYSŁOWY ODTWARZACZ PLIKÓW MP3 i WAV

Bazy danych. Andrzej Łachwa, UJ, /15

O autorze... 9 Wprowadzenie... 11

Elementy i funkcjonalno

Chmura obliczeniowa. do przechowywania plików online. Anna Walkowiak CEN Koszalin

Bezprzewodowa karta sieciowa Micro USB N150 - Podręcznik instalacji

Rozwiązywanie nazw w sieci. Identyfikowanie komputerów w sieci

DJCONTROL INSTINCT I DJUCED PIERWSZE KROKI

24 portowy przełącznik sieciowy Asmax 100/10 Mb/s 24-Port 100/10Mbps Fast Ethernet Switch. Podręcznik użytkownika

Skrócony podręcznik obsługi dla programu Wizualna poczta głosowa w wersji 8.5 lub nowszej

System kontroli wersji SVN

Programator pamięci EEPROM

Sterownik Silnika Krokowego GS 600

EGZAMIN POTWIERDZAJ CY KWALIFIKACJE W ZAWODZIE Rok 2015 CZ PRAKTYCZNA

ANALOGOWE UKŁADY SCALONE

Instalacja Plugin. Rys. 1. Folder Plugin.

Jabra Link 850. Podręcznik użytkownika.

DYSTRYBUCJA : DJ-DISTRIBUTION NUMARK POLSKA

Wtedy wystarczy wybrać właściwego Taga z listy.

Zmiany w wersji 1.18 programu VinCent Office.

Konfiguracja funkcji Skanowanie do

db powernet Instalacja czytnika kart mikroprocesorowych (instrukcja)

ARKUSZ EGZAMINACYJNY ETAP PRAKTYCZNY EGZAMINU POTWIERDZAJ CEGO KWALIFIKACJE ZAWODOWE CZERWIEC 2012

Instrukcja dotycząca generowania klucza dostępowego do Sidoma v8

Transkrypt:

Tytuł oryginału: Arduino in Action Tłumaczenie: Jacek Janczyk (wstęp, rozdz. 1 4), Andrzej Watrak (rozdz. 5-13, dodatki) Projekt okładki: Studio Gravite/Olsztyn Obarek, Pokoński, Pazdrijowski, Zaprucki ISBN: 978-83-246-6356-9 Original edition copyright 2013 by Manning Publications Co. All rights reserved Polish edition copyright 2014 by HELION SA. All rights reserved. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher. 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. Autor oraz Wydawnictwo HELION dołożyli 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) Materiały graficzne na okładce zostały wykorzystane za zgodą Shutterstock Images LLC. Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/arduak.zip Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/arduak Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Printed in Poland. Oceń książkę Księgarnia internetowa Lubię to!» Nasza społeczność

Spis tre ci Wst p 11 Podzi kowania 13 O ksi ce 15 CZ I ZACZYNAMY 19 Rozdzia 1. Witaj, Arduino 21 1.1. Krótka historia Arduino 22 1.2. Arduino 23 1.2.1. Arduino Uno 23 1.2.2. Arduino Duemilanove 24 1.2.3. Arduino Ethernet 24 1.2.4. Arduino Mega 25 1.2.5. Inne wersje Arduino 25 1.2.6. Atak klonów 27 1.2.7. Zaczynamy prac z Arduino 28 1.3. Przygotowywanie rodowiska pracy 28 1.3.1. Oprogramowanie dla Arduino 28 1.3.2. Podstawowa konfiguracja sprz tu 29 1.3.3. Twój niezb dnik Arduino 29 1.4. Niech co si wydarzy! 30 1.4.1. Twoja pierwsza migaj ca dioda wiec ca 30 1.4.2. Szkic b yskaj cy diod wiec c 30 1.4.3. czymy wszystko razem 31 1.4.4. adowanie i testowanie programu 32 1.5. Poznajemy zintegrowane rodowisko programistyczne 33 1.5.1. Edytor kodu 34 1.5.2. Monitor portu szeregowego 34 1.5.3. Wy apywanie b dów 36 1.5.4. Przetwarzanie kodu 36 1.6. Budowa szkicu 37 1.6.1. Procedura setup 37 1.6.2. Niesko czona p tla 37 1.7. Komentowanie kodu 38 1.8. Podsumowanie 39

4 Spis tre ci Rozdzia 2. Cyfrowe wej cia i wyj cia 41 2.1. Zaczynamy 41 2.1.1. Wykorzystanie p ytki stykowej 42 2.1.2. Schemat obwodu 42 2.1.3. Diody wiec ce 44 2.1.4. Po czenia 44 2.1.5. Szkic b yskaj cy pi cioma diodami 44 2.1.6. Za adowanie i test 47 2.2. Przej cie kontroli 47 2.2.1. Schemat obwodu 47 2.2.2. Po czenia 47 2.2.3. Wtr caj ce si przerwania 49 2.2.4. Szkic pozwalaj cy kontrolowa diody przy pomocy przycisku 49 2.2.5. Za adowanie i test 52 2.2.6. Czas na przerw 52 2.2.7. Za adowanie i test 53 2.3. Miernik refleksu 53 2.3.1. Schemat obwodu 53 2.3.2. Po czenia 53 2.3.3. Szkic do pomiaru refleksu 53 2.3.4. Za adowanie i test 56 2.4. Miernik refleksu kto naprawd jest najszybszy? 56 2.4.1. Szkic do pomiaru refleksu 57 2.4.2. Za adowanie i test 58 2.5. Podsumowanie 58 Rozdzia 3. Proste projekty: wej cie i wyj cie 61 3.1. Pora na wiat analogowy 62 3.1.1. Jaka jest ró nica pomi dzy sygna em analogowym i cyfrowym? 62 3.1.2. Odczyt sygna u z potencjometru 63 3.1.3. Pod czanie elementów 64 3.1.4. Szkic do odczytu ustawienia potencjometru 64 3.1.5. Za adowanie i test 66 3.2. Przetwornik piezoelektryczny 67 3.2.1. Schemat obwodu 68 3.2.2. Po czenia 69 3.2.3. Szkic pozwalaj cy mierzy impulsy pochodz ce z przetwornika piezoelektrycznego 70 3.2.4. Za adowanie i test 72 3.2.5. Obwód z dodanym g o niczkiem 72 3.2.6. Po czenia 72 3.2.7. Szkic generuj cy d wi k 74 3.2.8. Za adowanie i test 74 3.3. Budowa pentatonicznej klawiatury muzycznej 75 3.3.1. Schemat obwodu 75 3.3.2. Po czenia 75 3.3.3. Szkic obs uguj cy klawiatur pentatoniczn 77 3.3.4. Za adowanie i test 78 3.4. Podsumowanie 79

Spis tre ci 5 CZ II ZAPRZ GAMY ARDUINO DO PRACY 81 Rozdzia 4. Rozszerzanie Arduino 83 4.1. Zwi kszanie mo liwo ci Arduino poprzez dodatkowe biblioteki programistyczne 84 4.2. Biblioteka podstawowa 84 4.3. Biblioteki standardowe 85 4.3.1. Projektowanie sterowane testami przy u yciu biblioteki ArduinoTestSuite 85 4.3.2. Zapisywanie warto ci w pami ci EEPROM 86 4.3.3. Zapisywanie wi kszych ilo ci danych na kartach SD 87 4.3.4. Pod czanie do sieci w standardzie Ethernet 89 4.3.5. Komunikacja szeregowa z u yciem protoko u Firmata 90 4.3.6. Wy wietlanie informacji przy u yciu biblioteki LiquidCrystal 91 4.3.7. Sterowanie serwomechanizmami 92 4.3.8. Sterowanie silnikiem krokowym 92 4.3.9. Komunikacja z urz dzeniami na magistrali SPI 93 4.3.10. Komunikacja przy u yciu magistrali dwuprzewodowej 95 4.3.11. Uzyskiwanie wi kszej liczby portów szeregowych przy pomocy biblioteki SoftwareSerial 95 4.4. Biblioteki udost pnione przez u ytkowników 98 4.4.1. Instalowanie nowej biblioteki 98 4.5. Rozbudowa Arduino przy u yciu nak adek 99 4.5.1. Popularne nak adki 99 4.5.2. Pu apka: czy to b dzie dzia a z moim Arduino? 102 4.6. Podsumowanie 103 Rozdzia 5. Arduino w ruchu 105 5.1. Nabieranie pr dko ci z silnikami pr du sta ego 106 5.1.1. Uruchamianie i zatrzymywanie silnika 107 5.1.2. Szkic uruchamiaj cy i zatrzymuj cy ma y silnik pr du sta ego 108 5.1.3. czenie komponentów 108 5.1.4. Za adowanie i test szkicu 110 5.2. Sterowanie pr dko ci i obracanie silnika w przeciwnym kierunku 111 5.2.1. Modulacja PWM przybywa na ratunek 112 5.2.2. Mostek H do sterowania silnikiem 112 5.2.3. Uk ad L293D 114 5.2.4. czenie elementów 115 5.2.5. Szkic steruj cy uk adem L293D 116 5.2.6. Za adowanie i test szkicu 117 5.2.7. Zmiana pr dko ci obrotów silnika 117 5.2.8. Za adowanie i test szkicu 118 5.3. Silniki krokowe: jeden krok naraz 119 5.3.1. Silniki bipolarne i unipolarne 119 5.3.2. czenie komponentów 122 5.3.3. Funkcje biblioteki silnika krokowego 123 5.3.4. Szkic steruj cy silnikiem krokowym 125 5.3.5. Za adowanie i test szkicu 126

6 Spis tre ci 5.4. Serwomechanizmy nie s takie straszne 126 5.4.1. Sterowanie serwomechanizmem 126 5.4.2. Funkcje i metody steruj ce serwomechanizmem 127 5.4.3. Szkic steruj cy serwomechanizmem 128 5.4.4. czenie komponentów 129 5.4.5. Za adowanie i test szkicu 129 5.5. Wielka si a ma ego silnika bezszczotkowego 130 5.5.1. Dlaczego bez szczotek 130 5.5.2. Sterowanie 131 5.5.3. Szkic steruj cy silnikiem bezszczotkowym 132 5.5.4. czenie komponentów 134 5.5.5. Za adowanie i test szkicu 134 5.5.6. Obroty w przeciwnym kierunku 135 5.5.7. Szkic zmieniaj cy kierunek obrotów silnika bezszczotkowego 135 5.5.8. czenie komponentów 136 5.5.9. Za adowanie i test szkicu 136 5.6. Nak adka steruj ca kilkoma silnikami 136 5.7. Podsumowanie 137 Rozdzia 6. Wykrywanie przedmiotów 139 6.1. Ultrad wi kowe wykrywanie przedmiotów 139 6.1.1. Wybór czujnika ultrad wi kowego 140 6.1.2. Trzy lub cztery przewody 141 6.1.3. Szkice do ultrad wi kowego wykrywania przedmiotów 142 6.1.4. czenie elementów 144 6.1.5. Za adowanie i test szkicu 145 6.2. Pomiar odleg o ci za pomoc podczerwieni 145 6.2.1. czenie czujników podczerwieni i ultrad wi kowego 146 6.2.2. Czujnik Sharp GP2D12 146 6.2.3. Nieliniowy algorytm obliczania odleg o ci 146 6.2.4. Szkic do pomiaru odleg o ci 147 6.2.5. czenie elementów 149 6.2.6. Za adowanie i test szkicu 149 6.3. Wykrywanie ruchu metod pasywnej podczerwieni 149 6.3.1. U ycie czujnika Parallax 151 6.3.2. Szkic do wykrywania ruchu za pomoc podczerwieni 151 6.3.3. czenie elementów 152 6.3.4. Za adowanie i test szkicu 153 6.4. Podsumowanie 154 Rozdzia 7. Wy wietlacze LCD 155 7.1. Wprowadzenie do wy wietlaczy LCD 156 7.1.1. Ci gi znaków: zmienne typu String i char 156 7.2. Równoleg y wy wietlacz znakowy Hitachi HD44780 158 7.2.1. Wy wietlacz 4-bitowy czy 8-bitowy? 159 7.2.2. Biblioteka i funkcje 159 7.2.3. Schemat uk adu 159 7.2.4. czenie komponentów w trybie 4-bitowym 160

Spis tre ci 7 7.2.5. Szkic steruj cy wy wietlaczem Hitachi HD44780 162 7.2.6. Za adowanie i test szkicu 163 7.3. Stacja meteorologiczna z szeregowym wy wietlaczem LCD 164 7.3.1. Wy wietlacze szeregowe i równoleg e 164 7.3.2. Biblioteka SerLCD i jej funkcje 165 7.3.3. Czujnik temperatury Maxim DS18B20 166 7.3.4. Biblioteki OneWire i DallasTemperature 167 7.3.5. Schemat uk adu 167 7.3.6. czenie wszystkich komponentów 167 7.3.7. Szkic dla stacji meteorologicznej z wy wietlaczem LCD 169 7.3.8. Za adowanie i test szkicu 170 7.4. Wy wietlacz graficzny Samsung KS0108 171 7.4.1. Biblioteka i funkcje 171 7.4.2. Schemat po cze 171 7.4.3. czenie wszystkich komponentów 172 7.4.4. Szkic do rysowania na wy wietlaczu graficznym 173 7.4.5. Za adowanie i test szkicu 175 7.5. Podsumowanie 176 Rozdzia 8. Komunikacja 177 8.1. Technologia Ethernet 178 8.1.1. Biblioteka Ethernet 179 8.1.2. Nak adka Ethernet z kart SD 180 8.2. Serwer WWW Arduino 181 8.2.1. Konfiguracja serwera 181 8.2.2. Szkic konfiguruj cy serwer WWW 182 8.2.3. Za adowanie i test szkicu 184 8.2.4. Usuwanie usterek 184 8.3. wir, wir komunikacja z portalem Twitter 184 8.3.1. Twitter i tokeny 185 8.3.2. Biblioteki i funkcje 185 8.3.3. Schemat uk adu i po czenia komponentów 185 8.3.4. Szkic do wysy ania tweeta po naci ni ciu przycisku 186 8.3.5. Za adowanie i test szkicu 187 8.4. czno Wi-Fi 188 8.4.1. Nak adka Arduino WiFi 189 8.4.2. Biblioteka WiFi i jej funkcje 190 8.4.3. Ruchy cia a i bezprzewodowe przyspieszeniomierze 192 8.4.4. czenie komponentów 192 8.4.5. Szkic do komunikacji Bluetooth 193 8.4.6. Za adowanie i test szkicu 196 8.5. Bezprzewodowa czno Bluetooth 196 8.5.1. P yta ArduinoBT 196 8.5.2. Dodawanie modu u Bluetooth 198 8.5.3. Nawi zywanie po czenia Bluetooth 198 8.5.4. Szkic do komunikacji Bluetooth 199 8.6. Interfejs SPI 200 8.6.1. Biblioteka SPI 200 8.6.2. Urz dzenia SPI i potencjometry cyfrowe 201

8 Spis tre ci 8.6.3. Schemat uk adu i po czenia elementów 202 8.6.4. Szkic cyfrowego sterownika diod LED 203 8.7. Rejestrowanie danych 204 8.7.1. Rodzaje pami ci 205 8.7.2. Karty SD i biblioteka SD 205 8.7.3. Szkic rejestruj cy na karcie SD dane z czujnika 206 8.8. Serwis Xively 207 8.8.1. Tworzenie konta i pobieranie klucza API 208 8.8.2. Tworzenie nowego kana u danych 208 8.8.3. Szkic do rejestrowania danych z czujnika w serwisie Xively 209 8.8.4. Za adowanie i test szkicu 211 8.9. Podsumowanie 212 Rozdzia 9. Czas na gry 213 9.1. Nintendo Wii pozdrawia Ci 213 9.1.1. Kontroler Wii Nunchuk 214 9.1.2. Po czenie z kontrolerem Nunchuk 216 9.1.3. Wii zaczyna mówi 218 9.1.4. Wii testuje 226 9.2. Wej cie konsoli Xbox na rynek 227 9.2.1. Po czenie 228 9.2.2. Biblioteka hosta USB 229 9.2.3. Pozyskiwanie informacji o kontrolerze Xbox za pomoc nak adki hosta USB 229 9.2.4. Obowi zek raportowania przez kontroler Xbox 231 9.2.5. Czas na uruchomienie 233 9.2.6. czenie za pomoc kodu 233 9.2.7. Szkic Xboxhid.ino 235 9.2.8. czenie i testowanie uk adów 239 9.3. Podsumowanie 239 Rozdzia 10. Integracja Arduino z urz dzeniami ios 241 10.1. Pod czanie urz dzenia ios do Arduino 243 10.1.1. Przewód szeregowy Redpark 243 10.1.2. Ostateczne po czenie 244 10.2. Kod ios 245 10.2.1. Tworzenie jednookienkowej aplikacji w rodowisku Xcode 245 10.2.2. Tworzenie kodu 250 10.3. Anga ujemy Arduino 253 10.3.1. Szkic do sterowania diod LED z urz dzenia ios 253 10.3.2. Testowanie szkicu 254 10.4. Zróbmy co wi cej w Xcode 255 10.4.1. Dodawanie kontrolki Slider 255 10.5. Obs uga suwaka w Arduino 259 10.5.1. Uk ad Arduino do obs ugi suwaka 260 10.5.2. Testowanie uk adu 261

Spis tre ci 9 10.6. Wysy anie danych do urz dzenia ios 262 10.6.1. Kodowanie w rodowisku Xcode 262 10.6.2. Podczerwony czujnik odleg o ci GP2D12 265 10.6.3. Test 267 10.7. Podsumowanie 267 Rozdzia 11. Elektroniczne gad ety 269 11.1. Wprowadzenie do p yty LilyPad 270 11.1.1. Akcesoria LilyPad 271 11.1.2. Przewodz ce nici i tkaniny 272 11.2. Kurtka z wy cznikami 274 11.3. Osobiste pianino 276 11.4. P yta Arduino Pro Mini 279 11.5. Inteligentne s uchawki 280 11.6. Kurtka z kompasem 282 11.7. Podsumowanie 286 Rozdzia 12. Stosowanie nak adek 287 12.1. Podstawowe informacje o nak adkach 287 12.2. Nak adka silnikowa Adafruit 288 12.2.1. Biblioteka AFMotor 289 12.2.2. Zastosowanie nak adki z silnikiem krokowym 290 12.2.3. Zastosowanie nak adki z silnikiem pr du sta ego 292 12.2.4. Zakup nak adki silnikowej 294 12.3. Jak zbudowa w asn nak adk 295 12.3.1. Pami 295 12.3.2. Przesuwniki poziomów 296 12.3.3. Uchwyt karty SD 296 12.3.4. Pod czanie karty SD do p yty Arduino 297 12.3.5. Przygotowywanie p yty perforowanej 299 12.3.6. Test nak adki 302 12.4. Podsumowanie 303 Rozdzia 13. Integracja z oprogramowaniem 305 13.1. Kana komunikacji szeregowej 306 13.2. Serwomechanizm ledz cy twarz 307 13.2.1. Monta mechanizmu ledz cego twarz 308 13.2.2. Kod do ledzenia twarzy 309 13.3. Zastosowanie oprogramowania Firmata do budowy equalizera 313 13.3.1. Zastosowanie Firmata w Twojej aplikacji 314 13.3.2. Analiza d wi ku w rodowisku Processing 315 13.3.3. Monta elementów equalizera 315 13.3.4. Kod equalizera 316 13.4. Zastosowanie Pure Data do budowy syntezatora 319 13.4.1. Monta komponentów syntezatora 320 13.4.2. Kod syntezatora 320

10 Spis tre ci 13.5. Zastosowanie j zyka Python do mierzenia temperatury 324 13.5.1. Biblioteka szeregowa w j zyku Python 324 13.5.2. Monta komponentów termometru 325 13.5.3. Kod monitoruj cy temperatur 326 13.6. Podsumowanie 328 Dodatek A Instalacja rodowiska Arduino IDE 329 A.1. Windows 329 A.1.1. Instalacja sterowników do p yty Arduino 329 A.2. Mac OS X 332 A.3. Linux 333 Dodatek B Podr cznik kodowania 337 B.1. Historia j zyka Arduino 337 B.2. Zmienne 338 B.2.1. Typy zmiennych 339 B.2.2. Tabele 340 B.2.3. Ci gi znaków 341 B.2.4. Sta e 341 B.2.5. Zasi g zmiennych 342 B.3. Przej cie kontroli 343 B.3.1. Instrukcje if, else, else if 344 B.3.2. Instrukcja switch-case 346 B.3.3. Operatory logiczne 347 B.4. Zap tlenie 348 B.4.1. P tla for 348 B.4.2. P tla while 349 B.4.3. P tla do while 350 B.5. Funkcje 350 B.6. Podsumowanie 351 Dodatek C Biblioteki 353 C.1. Anatomia biblioteki 353 C.1.1. Plik.h (nag ówkowy) 353 C.1.2. Plik.cpp 354 C.2. U ycie biblioteki 355 C.2.1. Zastosowanie biblioteki w szkicu 355 C.2.2. Rozpowszechnianie biblioteki 356 Dodatek D Lista komponentów 357 Dodatek E Przydatne odno niki 361 Skorowidz 363

Komunikacja Rozdzia ten omawia: konfiguracj serwera WWW udost pniaj cego dane z Arduino, przesy anie komunikatów z Arduino do portalu Twitter, komunikacj z Arduino za pomoc WiFi i Bluetooth, zapisywanie danych na karcie SD i w sieci Internet w serwisie Xively, komunikacj z innymi urz dzeniami za pomoc protoko u SPI (ang. Serial Peripheral Interface, szeregowy interfejs urz dze peryferyjnych). W poprzednim rozdziale dowiedzia e si, jak otrzymywa za pomoc wy wietlaczy LCD wizualn informacj zwrotn z Arduino. Wyobra sobie mo liwo prezentowania informacji z Arduino na zewn trznym ekranie i przesy anie jej przez Internet w szeroki wiat! A gdyby jeszcze mo na by o zdalnie sterowa p yt Arduino? Pod czenie Arduino do Internetu i zdalne wysy anie danych do Twojego komputera to dwie z wielu mo liwych form komunikacji dost pnych w Arduino. Przyjrzymy si komunikacji wykorzystuj cej technologie Ethernet, WiFi, Bluetooth i SPI. Poniewa wiele Twoich projektów b dzie wykorzystywa komunikacj przez Internet, zajmijmy si ni od razu i sprawd my, jak Arduino mo e przesy a dane przez sie komputerow.

178 ROZDZIA 8. Komunikacja 8.1. Technologia Ethernet Jedn z najbardziej u ytecznych form komunikacji dost pnych w Arduino jest technologia Ethernet. Jest to przyj ty standard budowy sieci komputerowych, umo liwiaj cy urz dzeniom wszelkiego rodzaju komunikacj mi dzy sob poprzez wysy anie i odbieranie strumieni danych (zwanych pakietami lub ramkami). Technologia Ethernet umo liwia wyj tkowo szybk i niezawodn transmisj danych przez sie. Ka de urz dzenie posiada unikalny identyfikator zwany adresem IP, umo liwiaj cy komunikacj przy u yciu ró nych protoko ów sieciowych. Komunikacja Arduino z sieci Internet jest prosta dzi ki nak adce i bibliotece Ethernet, ale zanim omówimy te komponenty, poznajmy kilka poj zwi zanych z sieciami komputerowymi. Nawet je eli ju je znasz, warto przypomnie sobie terminologi i technologie opisane w tabeli 8.1. Tabela 8.1. Najwa niejsze terminy i poj cia technologii Ethernet Termin Ethernet Protokó Adres MAC TCP/IP Adres IP Lokalny adres IP Opis Ethernet jest standardow technologi wykorzystywan do budowy sieci komputerowych, opisuj c sposób przesy ania danych pomi dzy komputerami lub innymi urz dzeniami przez sie przewodow. Protoko y s to przyj te j zyki komunikacji umo liwiaj ce urz dzeniom porozumiewanie si mi dzy sob. Aby dwa urz dzenia mog y si ze sob komunikowa, musz u ywa tego samego j zyka. Na przyk ad protokó HTTP (ang. Hypertext Transfer Protocol, protokó przesy ania dokumentów hipertekstowych) jest powszechnie stosowanym protoko em, który mo esz wykorzysta w p ycie Arduino skonfigurowanej jako serwer WWW. Protokó HTTP okre la j zyk, dzi ki któremu serwer WWW Arduino rozumie komunikaty i zapytania odbierane od innych systemów, na przyk ad komputerów z przegl darkami. Adres MAC (ang. Media Access Control, kontrola dost pu do medium) jest to unikatowy identyfikator przypisywany urz dzeniom wykorzystuj cym Ethernet lub inn technologi sieciow. Adres MAC umo liwia jednoznaczne zidentyfikowanie urz dzenia w sieci, aby mog o komunikowa si z innymi. Nak adka Ethernet Arduino posiada etykiet z przypisanym adresem MAC. Protoko y TCP (ang. Transmission Control Protocol, protokó sterowania transmisj danych) oraz IP (ang. Internet Protocol, protokó internetowy) umo liwiaj przesy anie komunikatów przez globaln sie Internet (b d c fundamentem znanej i lubianej przez nas sieci WWW). Adres IP jest to unikatowy identyfikator wykorzystywany przez urz dzenia i serwery do identyfikacji w globalnej sieci Internet. Na przyk ad przy otwieraniu strony internetowej www.helion.pl us uga DNS (ang. Directory Name Service, us uga s ownika nazw) zamienia adres http://www.helion.pl na numeryczny adres IP 188.117.147.100. Lokalny adres IP jest podobny do zwyk ego adresu IP, ale jest u ywany w szczególno ci do komunikacji pomi dzy komputerami i urz dzeniami w lokalnej sieci. Na przyk ad w Twojej domowej sieci ka dy komputer ma przypisany lokalny adres IP, u ywany do komunikacji z routerem i innymi komputerami. Sieci komputerowe i technologia Ethernet s z o onymi zagadnieniami, których pe ne poznanie mo e zaj ca e lata, ale w tabeli 8.1 wymienione s najbardziej podstawowe poj cia, które musisz zna, aby zrozumie pozosta cz tego rozdzia u. Teraz, po zapoznaniu si z tabel, przejd my do biblioteki Ethernet i sprawd my, do czego s u y.

8.1. Technologia Ethernet 179 8.1.1. Biblioteka Ethernet Biblioteka Ethernet jest dostarczana razem ze rodowiskiem Arduino IDE. Umo liwia ona konfiguracj nak adki Ethernet i komunikacj ze wiatem zewn trznym oraz skonfigurowanie do czterech (w sumie) równolegle dzia aj cych serwerów i klientów. Serwer przyjmuje po czenia przychodz ce od klientów, po czym wysy a i odbiera dane. Natomiast klient najpierw zestawia z serwerem po czenie wychodz ce, dzi ki któremu mo e wysy a i odbiera od niego dane. Wi cej na ten temat powiemy wkrótce, ale teraz spójrzmy na tabel 8.2, zawieraj c przegl d funkcji dost pnych w bibliotece Ethernet. Tabela 8.2. Przegl d funkcji klas Ethernet, Server i Client dost pnych w bibliotece Ethernet Funkcja Ethernet.begin(mac) Ethernet.begin(mac, ip) Ethernet.begin(mac, ip, brama) Ethernet.begin(mac, ip, brama, podsie ) Server(port) Server.begin() Server.available() Server.write() Server.print() Server.println() Client(ip, port) Client.connected() Client.connect() Client.write() Client.print() Client.println() Client.available() Client.read() Client.flush() Client.stop() Opis Inicjuje bibliotek za pomoc adresu MAC nak adki i automatycznie konfiguruje adres IP za pomoc serwera DHCP. Opcjonalnie mo na r cznie poda adres IP, bram (najcz ciej jest to adres IP routera) i mask podsieci (informuj c nak adk, jak interpretowa adres IP; domy lna maska to 255.255.255.0). Tworzy serwer nas uchuj cy na okre lonym porcie. Uruchamia serwer oczekuj cy na komunikaty. Zwraca obiekt klienta, je eli s ju odebrane od niego dane. Wysy a dane do wszystkich pod czonych klientów. Wysy a dane do wszystkich klientów. Liczby s wysy ane jako ci gi znaków ASCII, na przyk ad liczba 123 jest wysy ana jako ci g trzech znaków: 1, 2 i 3. Dzia a podobnie jak Server.print(), ale dodatkowo wysy a znak nowego wiersza na ko cu ka dego komunikatu. Tworzy obiekt klienta, który mo e czy si z okre lonym adresem IP i portem. Zwraca informacj, czy klient jest po czony z serwerem. Je eli po czenie jest zamkni te, a jakie dane wci nie s odczytane, funkcja zwraca warto true. Nawi zuje po czenie. Wysy a dane do serwera. Wysy a dane do serwera. Liczby s wysy ane jako ci gi znaków ASCII, na przyk ad liczba 123 jest wysy ana jako ci g trzech znaków: 1, 2 i 3. Dzia a podobnie jak Client.print(), ale dodatkowo wysy a znak nowego wiersza na ko cu ka dego komunikatu. Zwraca liczb bajtów gotowych do odczytania (liczb bajtów wys anych przez serwer). Odczytuje nast pny bajt odebrany z serwera. Usuwa wszystkie bajty wys ane do klienta, ale jeszcze przez niego nieodczytane. Zamyka po czenie z serwerem. Oprócz klas Ethernet, Server oraz Client biblioteka Ethernet zawiera przydatne klasy ogólnego przeznaczenia, obs uguj ce protokó UDP (ang. User Datagram Protocol,

180 ROZDZIA 8. Komunikacja protokó danych u ytkownika) do rozg aszania informacji w sieci. Je eli serwer lub klient nie jest wymagany, mo esz do wysy ania i odbierania danych z Arduino u y klasy EthernetUDP. Tabela 8.3 zawiera szczegó owy opis funkcji tej klasy. Tabela 8.3. Przegl d g ównych funkcji klasy EthernetUDP w bibliotece Ethernet Funkcja EthernetUDP.begin(port) EthernetUDP.read(bufor_pakietów, maks_wielko ) EthernetUDP.write(komunikat) EthernetUDP.beginPacket(ip, port) EthernetUDP.endPacket() EthernetUDP.parsePacket() EthernetUDP.available() Opis Inicjuje obiekt UDP i okre la port do nas uchu. Odczytuje z bufora pakiety UDP. Wysy a komunikat do innego urz dzenia. Okre la adres IP i port urz dzenia docelowego. Funkcja musi by wywo ana przed wys aniem komunikatu. Ko czy komunikat. Funkcja wywo ywana po wys aniu komunikatu. Sprawdza, czy jaki komunikat oczekuje na odczytanie. Zwraca ilo danych odebranych i gotowych do odczytania. Teraz, kiedy znamy ju funkcje i klasy biblioteki Ethernet, przyjrzyjmy si samej nak adce. Nak adk stosuje si w celu rozszerzenia funkcjonalno ci sprz towych Arduino. Dzi ki niej mo esz pod czy p yt do sieci Ethernet. 8.1.2. Nak adka Ethernet z kart SD Oryginalna nak adka Ethernet jest kamieniem milowym w rozwoju platformy Arduino. Umo liwia ona komunikacj projektów z innymi urz dzeniami przez sie komputerow lub Internet. Nak adka wykorzystuje uk ad WIZnet W5100 i oferuje obs ug stosu IP wraz z protoko ami TCP i UDP poprzez cza Ethernet 10/100 Mbit/s. Nak adka jest wyposa ona w standardowe gniazdo RJ45 umo liwiaj ce po czenie i wspó prac z modemem, routerem lub innymi standardowymi urz dzeniami. Nowsza, szeroko dost pna wersja nak adki zawiera ulepszenie w postaci slotu na kart microsd. Dzi ki niemu mo na odczytywa i zapisywa pliki (za pomoc biblioteki SD, po umieszczeniu karty SD w slocie). Nale y pami ta, e zarówno uk ad W5100, jak i karta SD komunikuj si z Arduino za pomoc interfejsu SPI (wi cej informacji na temat komunikacji SPI znajduje si w podrozdziale 8.6). W wi kszo ci p yt Arduino wykorzystywane s w tym celu piny nr 11, 12 i 13, natomiast w p ycie Mega piny 50, 51 i 52. W obu p ytach pin nr 10 jest u ywany do wybrania do komunikacji uk adu W5100, natomiast pin nr 4 do wybrania karty SD. Jest to istotne z tego wzgl du, e nie mo na tych pinów u ywa jako wej ciowych lub wyj ciowych pinów ogólnego przeznaczenia. UWAGA: Zarówno uk ad W5100, jak i karta SD korzystaj z szyny SPI, ale tylko jedno z nich mo e by aktywne w danej chwili. Aby móc korzysta z karty SD, nale y skonfigurowa pin nr 4 jako wyj cie i ustawi na nim stan wysoki (HIGH). Natomiast w przypadku uk adu W5100 nale y jako wyj cie skonfigurowa pin nr 10 i ustawi na nim stan wysoki. Sprz towego pinu SS (w wi kszo ci p yt jest

8.2. Serwer WWW Arduino 181 to pin nr 10, a w p ycie Mega nr 53) mo na nie u ywa, ale aby móc korzysta z karty SD, biblioteki Ethernet i interfejsu SPI, trzeba ustawi go jako wyj cie (domy lna konfiguracja). 8.2. Serwer WWW Arduino Maj c w ma ym palcu podstawy technologii, bibliotek i nak adk, mo esz zacz prac nad swoim pierwszym projektem wykorzystuj cym Ethernet. Zbudujesz serwer WWW, czyli system odpowiadaj cy na zapytania wysy ane przez klientów i wysy aj cy do nich dane (jak przedstawia rysunek 8.1). Aby to osi gn, wykorzystasz klasy Server oraz Client z biblioteki Ethernet. Rysunek 8.1. Schemat komunikacji klienta z serwerem WWW Arduino 8.2.1. Konfiguracja serwera Do skonfigurowania serwera b dziesz potrzebowa pewnych informacji. Po pierwsze, musisz zna adres MAC swojej nak adki Ethernet. Powinien on by wydrukowany na etykiecie na nak adce. W kodzie serwera adres MAC zapiszesz w tabeli bajtów, na przyk ad tak: byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED ; Pami taj, e jest to unikatowy adres sprz towy, wykorzystywany przez nak adk do bezpo redniej komunikacji z innymi urz dzeniami przez sie Ethernet. Je eli posiadasz star nak adk bez etykiety albo j zgubi e, mo esz wykorzysta adres MAC z powy szego przyk adu. Je eli do sieci jest do czonych wi cej ni jedno urz dzenie, wa ne jest, aby ka de posiada o swój w asny unikatowy adres MAC. W nast pnym kroku b dziesz potrzebowa adresu IP. Od wersji 1.0 Arduino wbudowana biblioteka Ethernet obs uguje protokó DHCP (Dynamic Host Configuration Protocol, protokó dynamicznego konfigurowania urz dzenia), umo liwiaj cy Arduino automatyczne przypisanie adresu IP. Adres IP zostanie automatycznie skonfigurowany niezale nie od tego, czy p yta jest pod czona bezpo rednio do modemu, czy do routera, o ile tylko na tych urz dzeniach jest w czona us uga DHCP (zazwyczaj jest). Je eli w Twojej sieci nie jest u ywany protokó DHCP albo u ywasz wersji Arduino starszej ni 1.0, musisz dowiedzie si, jaki adres IP ma router, i r cznie przypisa nak adce Ethernet jaki inny adres IP. W zale no ci od konfiguracji jest kilka sposobów wykonania tej operacji. Je eli p yta Arduino jest pod czona bezpo rednio do modemu, jego adres IP jest przypisany przez operatora internetowego ISP. W takim przypadku najprostszym

182 ROZDZIA 8. Komunikacja sposobem poznania adresu IP jest pod czenie komputera do modemu i skorzystanie z jednej z wielu stron w Internecie rozpoznaj cych Twój adres IP. (Proste wyszukanie frazy adres IP powinno pomóc w znalezieniu odpowiedniej strony, ewentualnie mo esz skorzysta z http://www.adres-ip.pl.) Zwró uwag, e adres IP Twojego routera jest automatycznie przypisywany przez operatora ISP i mo e si zmienia od czasu do czasu. Je eli p yta Arduino jest do czona do sieci przez router, musisz r cznie przypisa do nak adki jaki niewykorzystywany adres IP. Aby to zrobi, musisz posiada nieco wi cej informacji na temat konfiguracji swojej sieci. Adres IP routera mo esz pozna, korzystaj c z komputera do czonego do sieci i opisanej wy ej us ugi internetowej. Mo esz równie otworzy panel administracyjny swojego routera, wpisuj c w przegl darce jego domy lny adres IP. Na przyk ad w przypadku urz dze Linksys jest to adres http://192.168.1.1, a dla innych marek http://10.0.0.1. Je eli Twój router ma np. adres 192.168.1.1, musisz nak adce Ethernet nada adres 192.168.1.x, gdzie x oznacza dowoln liczb od 2 do 254. Ka dy komputer lub inne urz dzenie w sieci posiada swój unikatowy adres 192.168.1.x, w którym ostatnia liczba identyfikuje to urz dzenie w sieci. Dlatego musisz si upewni, e Twoja nak adka nie wchodzi w konflikt z innymi urz dzeniami. Ta sama zasada obowi zuje, gdy Twój router wykorzystuje inn adresacj, na przyk ad 10.0.0.x. Je eli musisz r cznie przypisa adres IP, mo esz wykorzysta obiekt IPAddress, na przyk ad: IPAddress manualip(192, 168, 1, 2); Liczby w powy szym kodzie oznaczaj adres, który chcesz przypisa. Na koniec je eli jeste pod czony do sieci i wykorzystujesz router do po czenia z Internetem, musisz równie ustawi jego adres IP jako bram. Utwórz tabel typu byte i zapisz w niej adres IP routera, który b dzie u yty jako adres bramy. Poni ej przedstawiony jest przyk ad: byte gateway[] = { 192, 168, 1, 1; Teraz, kiedy znasz ju konfiguracj IP sieci, przejd my do kodu. 8.2.2. Szkic konfiguruj cy serwer WWW Listing 8.1 stanowi praktyczne zastosowanie omówionych wcze niej zagadnie do skonfigurowania serwera WWW na p ycie Arduino. Serwer b dzie mia za zadanie do czy si do Internetu (lub do sieci lokalnej), przyjmowa po czenia przychodz ce od klientów (wysy ane przez przegl darki) i odpowiada w asnym komunikatem. Listing jest doskona ym szablonem do tworzenia niemal dowolnej aplikacji serwerowej. Listing 8.1. Serwer WWW na p ycie Arduino #include <SPI.h> #include <Ethernet.h> byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED ; Przypisanie unikatowego adresu MAC

8.2. Serwer WWW Arduino 183 IPAddress manualip(192,168,1,120); EthernetServer server(80); R czne przypisanie adresu IP, je eli DHCP nie dzia a Inicjalizacja serwera boolean dhcpconnected = false; void setup() { if (!Ethernet.begin(mac)){ Ethernet.begin(mac, manualip); server.begin(); Uruchomienie serwera void loop() { EthernetClient client = server.available(); if (client) { boolean currentlineisblank = true; while (client.connected()) { if (client.available()) { char c = client.read(); Po czenie za pomoc DHCP R czne po czenie, je eli DHCP nie dzia a Oczekiwanie na po czenia od klientów Po czenie i odczyt danych od klienta if (c == '\n' && currentlineisblank) { client.println("http/1.1 200 OK"); client.println("content-type: text/html"); client.println(); client.println("witaj, jestem Twoim serwerem Arduino!"); break; if (c == '\n') { currentlineisblank = true; else if (c!= '\r') { currentlineisblank = false; delay(1); Zw oka na odczytanie danych przez klienta client.stop(); Zamkni cie po czenia Koniec zapytania i odes anie odpowiedzi do klienta Najpierw inicjowany jest serwer HTTP na porcie nr 80. Po zainicjowaniu mo esz spróbowa pod czy Arduino do sieci Ethernet, korzystaj c z us ugi DHCP, a je eli nie b dzie to mo liwe, r cznie przypisuj c adres. Dalej nast puje uruchomienie serwera i w g ównej p tli rozpoczyna si nas uchiwanie po cze. Gdy do serwera pod czy si klient i odebrane zostan dane, wówczas znak nowego wiersza b dzie oznacza koniec komunikatu, po czym do klienta zostanie odes ana odpowied.

184 ROZDZIA 8. Komunikacja 8.2.3. Za adowanie i test szkicu Skopiuj dok adnie kod z listingu 8.1 do rodowiska Arduino IDE. Teraz mo esz za adowa szkic do Arduino. Po za adowaniu i uruchomieniu kodu mo esz zdalnie po czy si z serwerem Arduino, otwieraj c w dowolnej przegl darce adres http://twój_adres_arduino. Twoja przegl darka (klient) wy le do serwera danie po czenia, który z kolei odpowie komunikatem Witaj, jestem Twoim serwerem Arduino!. Tak to dzia a. Chcesz otrzymywa rzeczywiste dane? Pod cz potencjometr lub czujnik do wej cia analogowego nr 0 i zamie wiersz: client.println("witaj, jestem Twoim serwerem Arduino!"); na nast puj cy: client.println(analogread(0)); Mamy nadziej, e szkic zadzia a bez problemów, ale je eli nie otrzymasz adnej odpowiedzi, przeczytaj poni szy punkt po wi cony usuwaniu usterek. 8.2.4. Usuwanie usterek Je eli nie mo esz nawi za po czenia z Arduino, pierwsz rzecz, któr nale y sprawdzi, s ustawienia adresu IP. Je eli jeste absolutnie pewny, e konfiguracja IP jest poprawna i jeste pod czony do sieci domowej, mo liwe, e musisz skonfigurowa na routerze przekierowanie portów. Przekierowanie portów powoduje, e router w specjalny sposób przesy a komunikaty przeznaczone dla Twojego Arduino. Konfiguracja przekierowania portów nie jest trudna; musisz j wykona na swoim routerze. Aby uzyska wi cej informacji, zajrzyj do dokumentacji routera, jak ustawi przekierowanie na adres IP Arduino. To powinno rozwi za problem. 8.3. wir, wir komunikacja z portalem Twitter Tworzenie serwera WWW komunikuj cego si ze wiatem zewn trznym to wspania e zaj cie, ale inn u yteczn opcj jest po czenie z us ugami w Internecie. Jedn z us ug, z której warto skorzysta, jest portal Twitter. Zasada dzia ania portalu Twitter jest prosta. Je eli masz w nim swoje konto, mo esz rozsy a w ca ej sieci Twitter tweety (komunikaty) o d ugo ci maksymalnie 140 znaków. U ytkownicy mog zapisywa si do Twojego kana u i automatycznie otrzymywa aktualizacje Twoich tweetów. Ale to nie wszystko. Twitter dobrze wspó pracuje z innymi us ugami, czyli mo esz równie automatycznie wysy a swoje tweety do konta w portalu Facebook. Czy nie by oby wspaniale skonfigurowa kana Twitter dostarczaj cy aktualnych informacji o tym, co si dzieje z Twoim Arduino? Jest to mo liwe. W tym podrozdziale dowiesz si, jak skonfigurowa Arduino i nak adk Ethernet, aby po naci ni ciu przycisku pod czonego do p yty automatycznie wysy a komunikaty do portalu Twitter.

8.3. wir, wir komunikacja z portalem Twitter 185 8.3.1. Twitter i tokeny Je eli nie masz jeszcze konta w portalu Twitter albo na potrzeby tego projektu chcesz za o y nowe, odwied stron www.twitter.com i utwórz konto. Nast pnie pobierz specjalny token, który umo liwi autoryzacj Arduino podczas wysy ania komunikatów przez Twoje konto. Ten token umo liwia po redniemu serwerowi WWW mediacj pomi dzy Arduino a portalem Twitter. Mo liwa jest równie bezpo rednia komunikacja z portalem, ale korzystanie z us ugi po rednicz cej jest lepsze, poniewa zapobiega przerwaniu wykonywania Twojego kodu w przypadku, gdy Twitter zmieni swój protokó komunikacyjny lub sposób autoryzacji. Równie biblioteka Twitter jest mniejsza dzi ki us udze po rednicz cej. Oszcz dza si w ten sposób cenn pami Arduino. Aby pobra token, otwórz stron http://arduino-tweet.appspot.com i kliknij odno- nik Step 1: Get a token to post a message using OAuth (Krok 1. Pobierz token do wysy- ania komunikatów za pomoc us ugi OAuth). Po skonfigurowaniu konta pora przyjrze si bli ej bibliotece, z której b dziemy korzysta. 8.3.2. Biblioteki i funkcje Aby móc komunikowa si z portalem Twitter, musisz zainstalowa bibliotek Twitter, dost pn pod adresem www.arduino.cc/playground/code/twitterlibrary. Po pobraniu biblioteki zapisz j w folderze sketchbook lub libraries. Tabela 8.4 przedstawia opis funkcji zawartych w bibliotece Twitter. Tabela 8.4. Przegl d funkcji biblioteki Twitter Funkcja Twitter(string token) bool post(const char *komunikat) bool checkstatus(print *debug) int status() int wait(print *debug) Opis Konstruktor klasy, przyjmuj cy token jako argument. Rozpoczyna wysy anie komunikatu. Zwraca warto true po pomy lnym nawi zaniu po czenia z portalem Twitter lub false w przypadku b du. Sprawdza, czy danie opublikowania komunikatu jest wci realizowane (mo na pomin argument debug, je eli nie jest wymagana informacja zwrotna). Zwraca kod HTTP odpowiedzi z portalu Twitter, na przyk ad 200 OK Status jest dost pny dopiero po opublikowaniu komunikatu, gdy funkcja checkstatus() zwróci warto false. Czeka na zako czenie publikacji komunikatu. Zwraca kod HTTP odpowiedzi z portalu Twitter. 8.3.3. Schemat uk adu i po czenia komponentów Je eli konto w portalu Twitter i rodowisko Arduino IDE s skonfigurowane, zbudujmy prosty uk ad wysy aj cy tweeta, gdy u ytkownik naci nie przycisk. Przylutuj przycisk do p yty lub zbuduj uk ad na p ycie prototypowej. Pod cz jedn z ko cówek przycisku z pinem 5 V, a drug z pinem masy GND poprzez rezystor obni aj cy 100 k. T sam ko cówk przycisku (pod czon do masy) do cz do wej cia cyfrowego nr 2, jak pokazuje rysunek 8.2.

186 ROZDZIA 8. Komunikacja Rysunek 8.2. Prosty uk ad do wysy ania tweetów po naci ni ciu przycisku 8.3.4. Szkic do wysy ania tweeta po naci ni ciu przycisku Po pod czeniu przycisku i umieszczeniu na Arduino nak adki Ethernet skopiuj poni szy kod (listing 8.2) do rodowiska Arduino IDE i mo esz zaczyna. Przeczytaj uwa nie komentarze w kodzie i upewnij si, e kod zawiera ustawienia odpowiadaj ce konfiguracji Twojej sieci. Je eli potrzebujesz wyja nie dotycz cych jakiego poj cia sieciowego lub terminu, wró do podrozdzia u 8.1. Listing 8.2. Szkic do wysy ania komunikatu do portalu Twitter po naci ni ciu przycisku #include <SPI.h> #include <Ethernet.h> #include <Twitter.h> byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED ; IPAddress manualip(192,168,1,120); int b1pin = 2; int presscount = 0; Okre lenie pinu przycisku R czne przypisanie adresu IP, je eli DHCP nie dzia a Przypisanie unikatowego adresu MAC

8.3. wir, wir komunikacja z portalem Twitter 187 Twitter twitter("twoj-token"); Inicjalizacja tokena do portalu Twitter void setup() { delay(1000); if(!ethernet.begin(mac)){ Ethernet.begin(mac, manualip); Serial.begin(9600); Po czenie za pomoc DHCP R czne po czenie, je eli DHCP nie dzia a Zestawienie po czenia szeregowego void sendtweet(const char msgtosend[]) { Serial.println("Laczenie..."); if (twitter.post(msgtosend)) { int status = twitter.wait(&serial); if (status == 200) { Serial.println("OK."); else { Serial.print("Blad : kod "); Serial.println(status); else { Serial.println("Polaczenie nieudane."); Sformatowanie i wys anie tweeta void loop() { if(digitalread(b1pin) == HIGH) { presscount++; sendtweet("liczba nacisniec przycisku: " + presscount); delay(2000); Sprawdzenie przycisku i wys anie tweeta Najpierw Arduino próbuje pod czy si do sieci Ethernet, korzystaj c z us ugi DHCP, a je eli nie b dzie to mo liwe, za pomoc r cznie przypisanego adresu IP. Po pod czeniu otwierane jest po czenie szeregowe, poprzez które wysy ane s komunikaty diagnostyczne do monitora portu szeregowego. Je eli po czenie z portalem zostanie nawi zane, zastosowana zostanie funkcja sendtweet, odpowiednio formatuj ca i wysy aj ca tweeta. Kod sprawdza, czy zosta naci ni ty przycisk, po czym wysy a tweeta. 8.3.5. Za adowanie i test szkicu Je eli jeste pewien, e szkic zawiera poprawne dane, skompiluj go i za aduj do Arduino. Teraz mo esz rozg asza naci ni cia przycisku w portalu Twitter. Sprawd, czy p yta Arduino wykonuje kod i czy jest pod czona do Internetu przewodem Ethernet. To jest ca a konfiguracja.

188 ROZDZIA 8. Komunikacja Naci nij przycisk pod czony do Arduino i zaloguj si do portalu Twitter. Powiniene w nim zobaczy ostatni tweet o tre ci Liczba nacisniec przycisku: 1, jak pokazuje rysunek 8.3. Po ka dym naci ni ciu przycisku pojawi si nowy tweet ze zwi kszaj c si liczb naci ni. Fajna zabawa. Rysunek 8.3. Widok tweetu w portalu Twitter po naci ni ciu przycisku UWAGA: Twitter blokuje wielokrotne wysy anie w krótkim przedziale czasu tego samego komunikatu. W listingu 8.2 komunikat jest zmieniany po ka dym naci- ni ciu przycisku (zwi kszana jest liczba naci ni ), a wi c nie b dzie problemu z wys aniem tweeta. W wi kszo ci przypadków okresowego wysy ania komunikatów lub komunikatów ró ni cych si mi dzy sob ten problem nie powinien wyst pi. Niemniej jednak warto o tym pami ta. Jak zapewne si domy lasz, mo esz rozg asza wiele innych po ytecznych informacji, nie tylko dotycz cych naci ni cia przycisku. Na przyk ad czujnik mo e wysy a sygna, gdy drzwi do Twojego domu zostan otwarte lub zamkni te. Mo esz wysy a bie ce dane i przedstawia je w swojej galerii. To tylko zarys mo liwo ci. 8.4. czno Wi-Fi Nak adka Ethernet b yskawicznie pod czy Twoj p yt Arduino do sieci, ale w niektórych sytuacjach przydaje si czno bezprzewodowa. Na przyk ad gdy musisz odbiera na bie co dane z samobie nego robota w asnej konstrukcji albo gdy Twój uk ad musi by pod czony do sieci, a w pobli u nie ma cza ani routera przewodowego. Si gnij wtedy po nak adk WiFi, eleganckie rozwi zanie umo liwiaj ce pod czenie Arduino do sieci bezprzewodowej i przesy anie danych. UWAGA: Je eli posiadasz nak adk SparkFun WiFly (popularny odpowiednik oficjalnej nak adki Arduino WiFi) albo z jakiego powodu musisz j wykorzysta w projekcie, na stronie internetowej oryginalnego wydania ksi ki znajdziesz odpowiednio zmienion wersj tego podrozdzia u (w j zyku angielskim). Odno- nik do niego zamie cili my w dodatku E.

8.4. czno Wi-Fi 189 8.4.1. Nak adka Arduino WiFi Nak adka Arduino WiFi umo liwia pod czenie p yty do dowolnej sieci bezprzewodowej typu 802.11b/g. Wykorzystuje modu bezprzewodowy H&D Wireless HDG104, oferuj cy uzyskanie zoptymalizowanego, energooszcz dnego po czenia radiowego. Nak adka umo liwia komunikacj za pomoc protoko ów TCP i UDP, a jej u ycie jest bardzo proste i polega na zamontowaniu na p ycie Arduino i wpisaniu w szkicu kilku wierszy kodu wykorzystuj cego bibliotek WiFi. czówki nak adki posiadaj w górnej cz ci gniazda, umo liwiaj ce atwe wykorzystanie pinów Arduino albo za o- enie dodatkowych nak adek. Oprócz obs ugi sieci bezprzewodowych w standardzie 802.11b/g nak adka WiFi oferuje szyfrowanie WEP oraz WPA2. Po za adowaniu szkicu i skonfigurowaniu p yty Arduino mo na j od czy od komputera, zasili z zewn trznego ród a i zestawi dwukierunkow komunikacj z dowolnego miejsca w zasi gu routera bezprzewodowego. Ale to nie wszystko. Nak adka WiFi zawiera równie slot na kart microsd, który mo e by wykorzystany zarówno przez p yt Arduino Uno, jak i Mega, dzi ki prostej w u yciu bibliotece SD. Jest to bardzo przydatna funkcjonalno, je eli zamierzasz zapisa dane, a nast pnie przes a je przez sie. W podrozdziale 8.7 dowiesz si dok adnie, jak korzysta z biblioteki SD. Wa na informacja na temat pinów wej cia/wyj cia Nak adka Arduino WiFi oraz czytnik kart SD komunikuj si z Arduino za pomoc szyny SPI (opisanej ni ej w podrozdziale 8.6), któr cechuje kilka istotnych szczegó ów zwi zanych z wykorzystaniem pinów wej cia/wyj cia. W p ycie Arduino Uno komunikacja jest realizowana na pinach nr 11, 12 i 13, natomiast w p ycie Mega na pinach nr 50, 51 i 52. W obu p ytach pin nr 10 jest u ywany do wybrania do komunikacji uk adu HDG104, natomiast pin nr 4 do wybrania czytnika karty SD. Sprz towy pin SS w p ycie Mega (pin cyfrowy nr 53) nie jest u ywany ani przez czytnik kart, ani przez uk ad HDG104, ale musi by skonfigurowany jako wyj cie, aby interfejs SPI dzia a prawid owo. Pin cyfrowy nr 7 jest u ywany do przesy ania danych pomi dzy nak adk WiFi a Arduino. Bardzo wa ne jest wi c, aby aden z wymienionych wy ej pinów nie by wykorzystywany do innych operacji wej cia/ wyj cia. I wreszcie poniewa zarówno uk ad HDG104 w nak adce WiFi, jak równie czytnik kart SD korzystaj z tej samej szyny SPI, tylko jeden z komponentów mo e by aktywny w danej chwili. Je eli wykorzystywane s oba, biblioteki SD oraz WiFi realizuj ich obs ug automatycznie. Ale je eli jest wykorzystywany tylko jeden z nich, nale y jawnie odseparowa drugi (je eli nie jest u ywany czytnik kard SD, nale y go r cznie odseparowa ), jak pokazuje przyk adowy kod. Konstrukcja nak adki WiFi jest starannie przemy lana i oprócz nawi zywania po cze bezprzewodowych oferuje szereg przydatnych funkcjonalno ci. Jej budowa jest ca kowicie otwarta. Nak adka jest wyposa ona w port Micro-USB na potrzeby przysz ych aktualizacji wbudowanego oprogramowania. Zawiera równie seri diod LED dostarczaj cych przydatnych informacji, takich jak status po czenia (zielona dioda LINK), b dy transmisji (czerwona dioda ERROR) i wysy anie lub odbieranie danych (niebieska dioda DATA).

190 ROZDZIA 8. Komunikacja JAK U YWA NAK ADKI WIFI ZE STARSZYMI P YTAMI ARDUINO? Nak adka WiFi wykorzystuje pin IOREF, dost pny w nowszych wersjach p yty Arduino, do wykrywania napi cia odniesienia dla pinów wej cia/wyj cia, do których jest pod- czona. Oznacza to, e w przypadku zastosowania p yty Arduino Uno lub Mega2560 w wersji wcze niejszej ni REV3 trzeba koniecznie zewrze piny nak adki IOREF oraz 3.3V (pokazane na rysunku 8.4). Rysunek 8.4. Uk ad pinów nak adki WiFi 8.4.2. Biblioteka WiFi i jej funkcje Biblioteka WiFi realizuje niskopoziomow komunikacj bezprzewodow i obs uguje wiele polece i funkcjonalno ci oferowanych przez nak adk. W tym miejscu warto zapozna si z tabel 8.5, zawieraj c przegl d najwa niejszych funkcji z biblioteki WiFi. Po przejrzeniu tabeli 8.5 mo esz przej do opisu przyk adowego projektu, w którym przez sie bezprzewodow b d przesy ane dane z czujnika gestów.

8.4. czno Wi-Fi 191 Tabela 8.5. Przegl d funkcji klas WiFi, WiFiServer oraz WiFiClient Funkcja WiFi.begin() WiFi.begin(char[] ssid) WiFi.begin(char[] ssid, char[] haslo) WiFi.begin(char[] ssid, int iindeksklucza, char[] klucz) WiFi.disconnect() WiFi.SSID() WiFi.BSSID(bssid) WiFi.RSSI() WiFi.encryptionType() WiFi.encryptionType (wifiaccesspoint) WiFi.scanNetworks() WiFi.getSocket() WiFi.macAddress() WiFi.localIP() WiFi.subnetMask() WiFi.gatewayIP() WiFiServer(int port) WiFiServer.begin() WiFiServer.available() WiFiServer.write(data) WiFiServer.print() WiFiServer.println() WiFiClient() WiFiClient.connected() WiFiClient.connect(ip, port) WiFiClient.connect(URL, port) WiFiClient.write(data) WiFiClient.print() Opis Inicjuje bibliotek WiFi i rozpoczyna komunikacj z urz dzeniem. Umo liwia pod czenie do dowolnej otwartej sieci, jak równie do sieci zabezpieczonej z szyfrowaniem WPA po podaniu identyfikatora SSID i has a oraz sieci z szyfrowaniem WEP po podaniu indeksu i klucza (w szyfrowaniu WEP mog by zastosowane cztery klucze, dlatego trzeba poda jego indeks). Funkcja zwraca status po czenia z sieci WiFi. Od cza si od bie cej sieci. Odczytuje identyfikator SSID bie cej sieci i zwraca go jako ci g znaków typu String. Odczytuje adres MAC routera, z którym jest nawi zane po czenie, i umieszcza go w 6-bajtowej tabeli przekazanej jako argument (na przyk ad byte bssid[6]). Zwraca si sygna u po czenia jako liczb typu Long. Zwraca rodzaj szyfrowania bie cego (lub wskazanego) punktu dost powego. Zwracana warto jest typu byte. W przypadku szyfrowania TKIP (WPA) = 2, WEP = 5, CCMP (WPA) = 4, NONE = 7, AUTO = 8. Zwraca warto typu byte zawieraj c liczb wykrytych sieci bezprzewodowych. Zwraca pierwsze dost pne gniazdo po czenia. Zwraca 6-bajtow tabel zawieraj c adres MAC nak adki WiFi. Zwraca adres IP nak adki (jako obiekt typu IPAddress). Zwraca mask podsieci nak adki (jako obiekt typu IPAddress). Zwraca adres IP bramy (jako obiekt typu IPAddress). Tworzy serwer nas uchuj cy na zadanym porcie. Uruchamia serwer oczekuj cy na komunikaty. Zwraca obiekt klienta, je eli s ju odebrane od niego dane. Wysy a dane (typu byte lub char) do wszystkich do czonych klientów. Wysy a dane do wszystkich klientów. Liczby s wysy ane jako ci gi znaków ASCII, na przyk ad liczba 123 jest wysy ana jako ci g trzech znaków: 1, 2 i 3. Dzia a podobnie jak WiFiServer.print(), ale dodatkowo wysy a znak nowego wiersza na ko cu ka dego komunikatu. Tworzy obiekt klienta, który mo e czy si z okre lonym adresem IP i portem okre lonym w funkcji connect(). Zwraca informacj, czy klient jest po czony z serwerem. Je eli po czenie jest zamkni te, a jakie dane wci nie s odczytane, funkcja zwróci warto true. Nawi zuje po czenie z okre lonym adresem IP i portem. Adres URL jest zamieniany na adres IP. Wysy a dane (typu byte lub char) do serwera. Wysy a dane do klienta. Liczby s wysy ane jako ci gi znaków ASCII, na przyk ad liczba 123 jest wysy ana jako ci g trzech znaków: 1, 2 i 3.

192 ROZDZIA 8. Komunikacja Tabela 8.5. Przegl d funkcji klas WiFi, WiFiServer oraz WiFiClient ci g dalszy Funkcja WiFiClient.println() WiFiClient.available() WiFiClient.read() WiFiClient.flush() WiFiClient.stop() Opis Dzia a podobnie jak WiFiClient.print(), ale dodatkowo wysy a znak nowego wiersza na ko cu ka dego komunikatu. Zwraca liczb bajtów gotowych do odczytania (liczb bajtów wys anych przez serwer). Odczytuje nast pny bajt odebrany z serwera. Usuwa wszystkie bajty wys ane do klienta, ale jeszcze przez niego nieodczytane. Zamyka po czenie z serwerem. 8.4.3. Ruchy cia a i bezprzewodowe przyspieszeniomierze W tym przyk adzie zastosujesz Arduino z funkcj WiFi do bezprzewodowego przesy ania danych z przyspieszeniomierza. Przyspieszeniomierze to czujniki znakomicie nadaj ce si do realizacji wszelkiego rodzaju interakcji za pomoc ruchów cia a. Mo na dzi ki nim testowa nowe scenariusze gier (jak w popularnych konsolach Nintendo Wii) lub po umieszczeniu ich na ciele tancerza wykorzystywa jego ruchy do sterowania efektami wizualnymi i d wi kowymi. Przyspieszeniomierzy mo na równie u ywa do wspomagania osób niepe nosprawnych fizycznie. Jak widzisz, jest mnóstwo praktycznych zastosowa przyspieszeniomierzy i na pewno przychodz Ci do g owy kolejne. W tym przyk adzie b d Ci potrzebne: p yta Arduino, nak adka Arduino WiFi, przynajmniej jeden przyspieszeniomierz. W przyk adzie u yjesz j zyka Processing do utworzenia serwera, za pomoc którego b dziesz przesy a i analizowa dane z bezprzewodowych przyspieszeniomierzy. 8.4.4. czenie komponentów Pod czenie nak adki WiFi jest bardzo proste i polega na za o eniu jej bezpo rednio na p yt Arduino od jej wierzchniej strony. Sposób pod czenia przyspieszeniomierza jest ró ny i zale y od zastosowanego modelu. Je eli korzystasz z trójosiowego przyspieszeniomierza ADXL335 posiadaj cego niezale ne wyj cia analogowe dla ka dej osi (x, y, z), po cz go zgodnie z rysunkiem 8.5. Je eli posiadasz inny model, po czenia mog by podobne albo zamiast wej ciowych pinów analogowych mog by zastosowane piny PWM. W przypadku zastosowania innego rodzaju przyspieszeniomierza zajrzyj do jego danych technicznych lub dokumentacji, jak go poprawnie pod czy. Po pod czeniu nak adki WiFi i przyspieszeniomierza mo esz zacz ta czy rockand-rolla.