Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00209 006509 13598908 na godz. na dobę w sumie
Arduino w akcji - książka
Arduino w akcji - książka
Autor: , , Liczba stron: 368
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-6356-9 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> elektronika >> arduino
Porównaj ceny (książka, ebook (-25%), audiobook).

Poznaj możliwości platformy Arduino!

Arduino to niesamowita platforma, która otworzyła świat elektroniki przed wszystkimi. Dzięki niej możesz zbudować zaawansowany układ elektroniczny bez konieczności wykonywania czasochłonnych projektów i żmudnych obliczeń. Arduino błyskawicznie zyskało ogromną popularność, a w ślad za nią pojawiły się w sprzedaży liczne dodatkowe moduły. Pozwalają one zbudować dowolne urządzenie — ogranicza Cię tylko Twoja wyobraźnia!

Ta wyjątkowa książka została w całości poświęcona platformie Arduino. Znajdziesz tu szczegółowe omówienie możliwości platformy, liczne przykłady oraz opisy. W trakcie lektury dowiesz się, jak przygotować środowisko pracy, oraz rozpoczniesz tworzenie prostych projektów, korzystających z cyfrowych portów wejścia-wyjścia. W kolejnych rozdziałach poznasz coraz bardziej zaawansowane możliwości Arduino. Wykorzystasz silniki prądu stałego i serwomechanizmy, zastosujesz czujniki ultradźwiękowe oraz wyświetlisz informacje na wyświetlaczu LCD. Ponadto przekonasz się, że można zintegrować Arduino z systemem iOS oraz innym oprogramowaniem. Książka ta jest doskonałą lekturą dla wszystkich pasjonatów elektroniki.

Dzięki tej książce:

Twoja przepustka do świata elektroniki!

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

Darmowy fragment publikacji:

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. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis tre(cid:258)ci Wst(cid:218)p 11 Podzi(cid:218)kowania 13 O ksi(cid:200)(cid:285)ce 15 CZ(cid:125)(cid:165)(cid:109) I ZACZYNAMY 19 Rozdzia(cid:239) 1. Witaj, Arduino 21 1.1. Krótka historia Arduino 22 1.2. Arduino 23 Arduino Uno 23 1.2.1. Arduino Duemilanove 24 1.2.2. Arduino Ethernet 24 1.2.3. Arduino Mega 25 1.2.4. Inne wersje Arduino 25 1.2.5. Atak klonów 27 1.2.6. 1.2.7. Zaczynamy prac(cid:218) z Arduino 28 Przygotowywanie (cid:258)rodowiska pracy 28 1.3.1. 1.3.2. 1.3.3. Oprogramowanie dla Arduino 28 Podstawowa konfiguracja sprz(cid:218)tu 29 Twój niezb(cid:218)dnik Arduino 29 1.3. 1.4. Niech co(cid:258) si(cid:218) wydarzy! 30 1.5. Twoja pierwsza migaj(cid:200)ca dioda (cid:258)wiec(cid:200)ca 30 Szkic b(cid:239)yskaj(cid:200)cy diod(cid:200) (cid:258)wiec(cid:200)c(cid:200) 30 (cid:146)(cid:200)czymy wszystko razem 31 (cid:146)adowanie i testowanie programu 32 1.4.1. 1.4.2. 1.4.3. 1.4.4. Poznajemy zintegrowane (cid:258)rodowisko programistyczne 33 1.5.1. 1.5.2. Monitor portu szeregowego 34 1.5.3. Wy(cid:239)apywanie b(cid:239)(cid:218)dów 36 1.5.4. Przetwarzanie kodu 36 Edytor kodu 34 1.6. Budowa szkicu 37 1.6.1. 1.6.2. Procedura „setup” 37 Niesko(cid:241)czona p(cid:218)tla 37 1.7. Komentowanie kodu 38 1.8. Podsumowanie 39 Kup książkęPoleć książkę 4 Spis tre(cid:258)ci Rozdzia(cid:239) 2. Cyfrowe wej(cid:258)cia i wyj(cid:258)cia 41 2.1. 2.2. Schemat obwodu 42 Diody (cid:258)wiec(cid:200)ce 44 Po(cid:239)(cid:200)czenia 44 Szkic b(cid:239)yskaj(cid:200)cy pi(cid:218)cioma diodami 44 Za(cid:239)adowanie i test 47 Zaczynamy 41 2.1.1. Wykorzystanie p(cid:239)ytki stykowej 42 2.1.2. 2.1.3. 2.1.4. 2.1.5. 2.1.6. Przej(cid:218)cie kontroli 47 2.2.1. 2.2.2. 2.2.3. Wtr(cid:200)caj(cid:200)ce si(cid:218) przerwania 49 2.2.4. 2.2.5. 2.2.6. 2.2.7. Schemat obwodu 47 Po(cid:239)(cid:200)czenia 47 Szkic pozwalaj(cid:200)cy kontrolowa(cid:202) diody przy pomocy przycisku 49 Za(cid:239)adowanie i test 52 Czas na przerw(cid:218) 52 Za(cid:239)adowanie i test 53 2.3. Miernik refleksu 53 2.3.1. 2.3.2. 2.3.3. 2.3.4. Schemat obwodu 53 Po(cid:239)(cid:200)czenia 53 Szkic do pomiaru refleksu 53 Za(cid:239)adowanie i test 56 2.4. Miernik refleksu — kto naprawd(cid:218) jest najszybszy? 56 2.4.1. 2.4.2. Podsumowanie 58 Szkic do pomiaru refleksu 57 Za(cid:239)adowanie i test 58 2.5. Rozdzia(cid:239) 3. Proste projekty: wej(cid:258)cie i wyj(cid:258)cie 61 Jaka jest ró(cid:285)nica pomi(cid:218)dzy sygna(cid:239)em analogowym i cyfrowym? 62 Odczyt sygna(cid:239)u z potencjometru 63 Pod(cid:239)(cid:200)czanie elementów 64 Szkic do odczytu ustawienia potencjometru 64 Za(cid:239)adowanie i test 66 3.1. 3.2. Pora na (cid:258)wiat analogowy 62 3.1.1. 3.1.2. 3.1.3. 3.1.4. 3.1.5. Przetwornik piezoelektryczny 67 3.2.1. 3.2.2. 3.2.3. Schemat obwodu 68 Po(cid:239)(cid:200)czenia 69 Szkic pozwalaj(cid:200)cy mierzy(cid:202) impulsy pochodz(cid:200)ce z przetwornika piezoelektrycznego 70 Za(cid:239)adowanie i test 72 Obwód z dodanym g(cid:239)o(cid:258)niczkiem 72 Po(cid:239)(cid:200)czenia 72 Szkic generuj(cid:200)cy d(cid:283)wi(cid:218)k 74 Za(cid:239)adowanie i test 74 3.2.4. 3.2.5. 3.2.6. 3.2.7. 3.2.8. 3.3. Budowa pentatonicznej klawiatury muzycznej 75 3.3.1. 3.3.2. 3.3.3. 3.3.4. Podsumowanie 79 Schemat obwodu 75 Po(cid:239)(cid:200)czenia 75 Szkic obs(cid:239)uguj(cid:200)cy klawiatur(cid:218) pentatoniczn(cid:200) 77 Za(cid:239)adowanie i test 78 3.4. Kup książkęPoleć książkę Spis tre(cid:258)ci 5 CZ(cid:125)(cid:165)(cid:109) II ZAPRZ(cid:125)GAMY ARDUINO DO PRACY 81 Rozdzia(cid:239) 4. Rozszerzanie Arduino 83 4.1. Zwi(cid:218)kszanie mo(cid:285)liwo(cid:258)ci Arduino poprzez dodatkowe biblioteki programistyczne 84 4.2. Biblioteka podstawowa 84 4.3. Biblioteki standardowe 85 Projektowanie sterowane testami przy u(cid:285)yciu biblioteki ArduinoTestSuite 85 Zapisywanie warto(cid:258)ci w pami(cid:218)ci EEPROM 86 Zapisywanie wi(cid:218)kszych ilo(cid:258)ci danych na kartach SD 87 Pod(cid:239)(cid:200)czanie do sieci w standardzie Ethernet 89 Komunikacja szeregowa z u(cid:285)yciem protoko(cid:239)u Firmata 90 4.3.1. 4.3.2. 4.3.3. 4.3.4. 4.3.5. 4.3.6. Wy(cid:258)wietlanie informacji przy u(cid:285)yciu biblioteki LiquidCrystal 91 4.3.7. 4.3.8. 4.3.9. 4.3.10. Komunikacja przy u(cid:285)yciu magistrali dwuprzewodowej 95 4.3.11. Uzyskiwanie wi(cid:218)kszej liczby portów szeregowych Sterowanie serwomechanizmami 92 Sterowanie silnikiem krokowym 92 Komunikacja z urz(cid:200)dzeniami na magistrali SPI 93 przy pomocy biblioteki SoftwareSerial 95 4.4. Biblioteki udost(cid:218)pnione przez u(cid:285)ytkowników 98 4.4.1. Instalowanie nowej biblioteki 98 4.5. Rozbudowa Arduino przy u(cid:285)yciu nak(cid:239)adek 99 4.5.1. 4.5.2. Podsumowanie 103 Popularne nak(cid:239)adki 99 Pu(cid:239)apka: czy to b(cid:218)dzie dzia(cid:239)a(cid:202) z moim Arduino? 102 4.6. Rozdzia(cid:239) 5. Arduino w ruchu 105 5.2. 5.1. Nabieranie pr(cid:218)dko(cid:258)ci z silnikami pr(cid:200)du sta(cid:239)ego 106 Uruchamianie i zatrzymywanie silnika 107 Szkic uruchamiaj(cid:200)cy i zatrzymuj(cid:200)cy ma(cid:239)y silnik pr(cid:200)du sta(cid:239)ego 108 (cid:146)(cid:200)czenie komponentów 108 Za(cid:239)adowanie i test szkicu 110 5.1.1. 5.1.2. 5.1.3. 5.1.4. Sterowanie pr(cid:218)dko(cid:258)ci(cid:200) 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 Uk(cid:239)ad L293D 114 5.2.3. (cid:146)(cid:200)czenie elementów 115 5.2.4. Szkic steruj(cid:200)cy uk(cid:239)adem L293D 116 5.2.5. Za(cid:239)adowanie i test szkicu 117 5.2.6. Zmiana pr(cid:218)dko(cid:258)ci obrotów silnika 117 5.2.7. 5.2.8. Za(cid:239)adowanie i test szkicu 118 Silniki krokowe: jeden krok naraz 119 5.3.1. 5.3.2. 5.3.3. 5.3.4. 5.3.5. Silniki bipolarne i unipolarne 119 (cid:146)(cid:200)czenie komponentów 122 Funkcje biblioteki silnika krokowego 123 Szkic steruj(cid:200)cy silnikiem krokowym 125 Za(cid:239)adowanie i test szkicu 126 5.3. Kup książkęPoleć książkę 6 5.4. Spis tre(cid:258)ci Serwomechanizmy nie s(cid:200) takie straszne 126 Sterowanie serwomechanizmem 126 5.4.1. Funkcje i metody steruj(cid:200)ce serwomechanizmem 127 5.4.2. Szkic steruj(cid:200)cy serwomechanizmem 128 5.4.3. 5.4.4. (cid:146)(cid:200)czenie komponentów 129 Za(cid:239)adowanie i test szkicu 129 5.4.5. 5.5. Wielka si(cid:239)a ma(cid:239)ego silnika bezszczotkowego 130 5.5.1. 5.5.2. 5.5.3. 5.5.4. 5.5.5. 5.5.6. 5.5.7. 5.5.8. 5.5.9. Dlaczego bez szczotek 130 Sterowanie 131 Szkic steruj(cid:200)cy silnikiem bezszczotkowym 132 (cid:146)(cid:200)czenie komponentów 134 Za(cid:239)adowanie i test szkicu 134 Obroty w przeciwnym kierunku 135 Szkic zmieniaj(cid:200)cy kierunek obrotów silnika bezszczotkowego 135 (cid:146)(cid:200)czenie komponentów 136 Za(cid:239)adowanie i test szkicu 136 5.6. Nak(cid:239)adka steruj(cid:200)ca kilkoma silnikami 136 5.7. Podsumowanie 137 Rozdzia(cid:239) 6. Wykrywanie przedmiotów 139 Trzy lub cztery przewody 141 Szkice do ultrad(cid:283)wi(cid:218)kowego wykrywania przedmiotów 142 (cid:146)(cid:200)czenie elementów 144 Za(cid:239)adowanie i test szkicu 145 6.2. 6.1. Ultrad(cid:283)wi(cid:218)kowe wykrywanie przedmiotów 139 6.1.1. Wybór czujnika ultrad(cid:283)wi(cid:218)kowego 140 6.1.2. 6.1.3. 6.1.4. 6.1.5. Pomiar odleg(cid:239)o(cid:258)ci za pomoc(cid:200) podczerwieni 145 6.2.1. 6.2.2. 6.2.3. 6.2.4. 6.2.5. 6.2.6. (cid:146)(cid:200)czenie czujników podczerwieni i ultrad(cid:283)wi(cid:218)kowego 146 Czujnik Sharp GP2D12 146 Nieliniowy algorytm obliczania odleg(cid:239)o(cid:258)ci 146 Szkic do pomiaru odleg(cid:239)o(cid:258)ci 147 (cid:146)(cid:200)czenie elementów 149 Za(cid:239)adowanie i test szkicu 149 6.3. Wykrywanie ruchu metod(cid:200) pasywnej podczerwieni 149 U(cid:285)ycie czujnika Parallax 151 Szkic do wykrywania ruchu za pomoc(cid:200) podczerwieni 151 (cid:146)(cid:200)czenie elementów 152 Za(cid:239)adowanie i test szkicu 153 6.3.1. 6.3.2. 6.3.3. 6.3.4. Podsumowanie 154 6.4. Rozdzia(cid:239) 7. Wy(cid:258)wietlacze LCD 155 7.1. Wprowadzenie do wy(cid:258)wietlaczy LCD 156 7.1.1. Ci(cid:200)gi znaków: zmienne typu String i char 156 7.2. Równoleg(cid:239)y wy(cid:258)wietlacz znakowy Hitachi HD44780 158 7.2.1. Wy(cid:258)wietlacz 4-bitowy czy 8-bitowy? 159 7.2.2. 7.2.3. 7.2.4. Biblioteka i funkcje 159 Schemat uk(cid:239)adu 159 (cid:146)(cid:200)czenie komponentów w trybie 4-bitowym 160 Kup książkęPoleć książkę Spis tre(cid:258)ci 7 7.3. Szkic steruj(cid:200)cy wy(cid:258)wietlaczem Hitachi HD44780 162 Za(cid:239)adowanie i test szkicu 163 7.2.5. 7.2.6. Stacja meteorologiczna z szeregowym wy(cid:258)wietlaczem LCD 164 7.3.1. Wy(cid:258)wietlacze szeregowe i równoleg(cid:239)e 164 7.3.2. 7.3.3. 7.3.4. 7.3.5. 7.3.6. 7.3.7. 7.3.8. Biblioteka SerLCD i jej funkcje 165 Czujnik temperatury Maxim DS18B20 166 Biblioteki OneWire i DallasTemperature 167 Schemat uk(cid:239)adu 167 (cid:146)(cid:200)czenie wszystkich komponentów 167 Szkic dla stacji meteorologicznej z wy(cid:258)wietlaczem LCD 169 Za(cid:239)adowanie i test szkicu 170 7.4. Wy(cid:258)wietlacz graficzny Samsung KS0108 171 Biblioteka i funkcje 171 Schemat po(cid:239)(cid:200)cze(cid:241) 171 (cid:146)(cid:200)czenie wszystkich komponentów 172 Szkic do rysowania na wy(cid:258)wietlaczu graficznym 173 Za(cid:239)adowanie i test szkicu 175 7.4.1. 7.4.2. 7.4.3. 7.4.4. 7.4.5. Podsumowanie 176 7.5. Rozdzia(cid:239) 8. Komunikacja 177 8.1. 8.2. Biblioteka Ethernet 179 Nak(cid:239)adka Ethernet z kart(cid:200) SD 180 Technologia Ethernet 178 8.1.1. 8.1.2. Serwer WWW Arduino 181 8.2.1. 8.2.2. 8.2.3. 8.2.4. Konfiguracja serwera 181 Szkic konfiguruj(cid:200)cy serwer WWW 182 Za(cid:239)adowanie i test szkicu 184 Usuwanie usterek 184 8.3. (cid:109)wir, (cid:202)wir — komunikacja z portalem Twitter 184 8.3.1. 8.3.2. 8.3.3. 8.3.4. 8.3.5. Twitter i tokeny 185 Biblioteki i funkcje 185 Schemat uk(cid:239)adu i po(cid:239)(cid:200)czenia komponentów 185 Szkic do wysy(cid:239)ania tweeta po naci(cid:258)ni(cid:218)ciu przycisku 186 Za(cid:239)adowanie i test szkicu 187 8.4. (cid:146)(cid:200)czno(cid:258)(cid:202) Wi-Fi 188 8.4.1. 8.4.2. 8.4.3. 8.4.4. 8.4.5. 8.4.6. Nak(cid:239)adka Arduino WiFi 189 Biblioteka WiFi i jej funkcje 190 Ruchy cia(cid:239)a i bezprzewodowe przyspieszeniomierze 192 (cid:146)(cid:200)czenie komponentów 192 Szkic do komunikacji Bluetooth 193 Za(cid:239)adowanie i test szkicu 196 8.5. Bezprzewodowa (cid:239)(cid:200)czno(cid:258)(cid:202) Bluetooth 196 8.5.1. 8.5.2. 8.5.3. 8.5.4. Interfejs SPI 200 8.6.1. 8.6.2. 8.6. P(cid:239)yta ArduinoBT 196 Dodawanie modu(cid:239)u Bluetooth 198 Nawi(cid:200)zywanie po(cid:239)(cid:200)czenia Bluetooth 198 Szkic do komunikacji Bluetooth 199 Biblioteka SPI 200 Urz(cid:200)dzenia SPI i potencjometry cyfrowe 201 Kup książkęPoleć książkę 8 Spis tre(cid:258)ci 8.6.3. 8.6.4. Schemat uk(cid:239)adu i po(cid:239)(cid:200)czenia elementów 202 Szkic cyfrowego sterownika diod LED 203 8.7. Rejestrowanie danych 204 8.7.1. 8.7.2. 8.7.3. Serwis Xively 207 8.8.1. 8.8.2. 8.8.3. 8.8.4. Podsumowanie 212 8.8. 8.9. Rodzaje pami(cid:218)ci 205 Karty SD i biblioteka SD 205 Szkic rejestruj(cid:200)cy na karcie SD dane z czujnika 206 Tworzenie konta i pobieranie klucza API 208 Tworzenie nowego kana(cid:239)u danych 208 Szkic do rejestrowania danych z czujnika w serwisie Xively 209 Za(cid:239)adowanie i test szkicu 211 Rozdzia(cid:239) 9. Czas na gry 213 9.1. Nintendo Wii pozdrawia Ci(cid:218) 213 Kontroler Wii Nunchuk 214 Po(cid:239)(cid:200)czenie z kontrolerem Nunchuk 216 9.1.1. 9.1.2. 9.1.3. Wii zaczyna mówi(cid:202) 218 9.1.4. Wii testuje 226 9.2. Wej(cid:258)cie konsoli Xbox na rynek 227 9.2.1. 9.2.2. 9.2.3. Po(cid:239)(cid:200)czenie 228 Biblioteka hosta USB 229 Pozyskiwanie informacji o kontrolerze Xbox za pomoc(cid:200) nak(cid:239)adki hosta USB 229 Obowi(cid:200)zek raportowania przez kontroler Xbox 231 Czas na uruchomienie 233 (cid:146)(cid:200)czenie za pomoc(cid:200) kodu 233 Szkic Xboxhid.ino 235 (cid:146)(cid:200)czenie i testowanie uk(cid:239)adów 239 9.2.4. 9.2.5. 9.2.6. 9.2.7. 9.2.8. Podsumowanie 239 9.3. Rozdzia(cid:239) 10. Integracja Arduino z urz(cid:200)dzeniami iOS 241 10.1. Pod(cid:239)(cid:200)czanie urz(cid:200)dzenia iOS do Arduino 243 10.1.1. 10.1.2. Ostateczne po(cid:239)(cid:200)czenie 244 Przewód szeregowy Redpark 243 10.2. Kod iOS 245 10.2.1. Tworzenie jednookienkowej aplikacji w (cid:258)rodowisku Xcode 245 10.2.2. Tworzenie kodu 250 10.3. Anga(cid:285)ujemy Arduino 253 Szkic do sterowania diod(cid:200) LED z urz(cid:200)dzenia iOS 253 10.3.1. 10.3.2. Testowanie szkicu 254 10.4. Zróbmy co(cid:258) wi(cid:218)cej w Xcode 255 10.4.1. Dodawanie kontrolki Slider 255 10.5. Obs(cid:239)uga suwaka w Arduino 259 10.5.1. Uk(cid:239)ad Arduino do obs(cid:239)ugi suwaka 260 10.5.2. Testowanie uk(cid:239)adu 261 Kup książkęPoleć książkę Spis tre(cid:258)ci 9 10.6. Wysy(cid:239)anie danych do urz(cid:200)dzenia iOS 262 10.6.1. Kodowanie w (cid:258)rodowisku Xcode 262 10.6.2. 10.6.3. Test 267 Podczerwony czujnik odleg(cid:239)o(cid:258)ci GP2D12 265 10.7. Podsumowanie 267 Rozdzia(cid:239) 11. Elektroniczne gad(cid:285)ety 269 11.1. Wprowadzenie do p(cid:239)yty LilyPad 270 11.1.1. Akcesoria LilyPad 271 11.1.2. Przewodz(cid:200)ce nici i tkaniny 272 11.2. Kurtka z wy(cid:239)(cid:200)cznikami 274 11.3. Osobiste pianino 276 11.4. P(cid:239)yta Arduino Pro Mini 279 11.5. Inteligentne s(cid:239)uchawki 280 11.6. Kurtka z kompasem 282 11.7. Podsumowanie 286 Rozdzia(cid:239) 12. Stosowanie nak(cid:239)adek 287 12.1. Podstawowe informacje o nak(cid:239)adkach 287 12.2. Nak(cid:239)adka silnikowa Adafruit 288 12.2.1. Biblioteka AFMotor 289 12.2.2. 12.2.3. 12.2.4. Zastosowanie nak(cid:239)adki z silnikiem krokowym 290 Zastosowanie nak(cid:239)adki z silnikiem pr(cid:200)du sta(cid:239)ego 292 Zakup nak(cid:239)adki silnikowej 294 12.3. Jak zbudowa(cid:202) w(cid:239)asn(cid:200) nak(cid:239)adk(cid:218) 295 Pami(cid:218)(cid:202) 295 Przesuwniki poziomów 296 12.3.1. 12.3.2. 12.3.3. Uchwyt karty SD 296 12.3.4. 12.3.5. 12.3.6. Test nak(cid:239)adki 302 Pod(cid:239)(cid:200)czanie karty SD do p(cid:239)yty Arduino 297 Przygotowywanie p(cid:239)yty perforowanej 299 12.4. Podsumowanie 303 Rozdzia(cid:239) 13. Integracja z oprogramowaniem 305 13.1. Kana(cid:239) komunikacji szeregowej 306 13.2. Serwomechanizm (cid:258)ledz(cid:200)cy twarz 307 13.2.1. Monta(cid:285) mechanizmu (cid:258)ledz(cid:200)cego twarz 308 13.2.2. Kod do (cid:258)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(cid:283)wi(cid:218)ku w (cid:258)rodowisku Processing 315 13.3.3. Monta(cid:285) elementów equalizera 315 13.3.4. Kod equalizera 316 13.4. Zastosowanie Pure Data do budowy syntezatora 319 13.4.1. Monta(cid:285) komponentów syntezatora 320 13.4.2. Kod syntezatora 320 Kup książkęPoleć książkę 10 Spis tre(cid:258)ci 13.5. Zastosowanie j(cid:218)zyka Python do mierzenia temperatury 324 13.5.1. Biblioteka szeregowa w j(cid:218)zyku Python 324 13.5.2. Monta(cid:285) komponentów termometru 325 13.5.3. Kod monitoruj(cid:200)cy temperatur(cid:218) 326 13.6. Podsumowanie 328 Dodatek A Instalacja (cid:258)rodowiska Arduino IDE 329 A.1. Windows 329 A.1.1. Instalacja sterowników do p(cid:239)yty Arduino 329 A.2. Mac OS X 332 A.3. Linux 333 Dodatek B Podr(cid:218)cznik kodowania 337 B.1. Historia j(cid:218)zyka Arduino 337 B.2. Zmienne 338 B.2.1. B.2.2. B.2.3. B.2.4. B.2.5. Typy zmiennych 339 Tabele 340 Ci(cid:200)gi znaków 341 Sta(cid:239)e 341 Zasi(cid:218)g zmiennych 342 B.3. Przej(cid:218)cie kontroli 343 B.3.1. B.3.2. B.3.3. Instrukcje if, else, else if 344 Instrukcja switch-case 346 Operatory logiczne 347 B.4. Zap(cid:218)tlenie 348 B.4.1. B.4.2. B.4.3. P(cid:218)tla for 348 P(cid:218)tla while 349 P(cid:218)tla do while 350 B.5. Funkcje 350 B.6. Podsumowanie 351 Dodatek C Biblioteki 353 C.1. Anatomia biblioteki 353 C.1.1. C.1.2. Plik .h (nag(cid:239)ówkowy) 353 Plik .cpp 354 C.2. U(cid:285)ycie biblioteki 355 C.2.1. C.2.2. Zastosowanie biblioteki w szkicu 355 Rozpowszechnianie biblioteki 356 Dodatek D Lista komponentów 357 Dodatek E Przydatne odno(cid:258)niki 361 Skorowidz 363 Kup książkęPoleć książkę Komunikacja Rozdzia(cid:225) ten omawia: (cid:81) konfiguracj(cid:266) serwera WWW udost(cid:266)pniaj(cid:261)cego dane z Arduino, (cid:81) przesy(cid:225)anie komunikatów z Arduino do portalu Twitter, (cid:81) komunikacj(cid:266) z Arduino za pomoc(cid:261) WiFi i Bluetooth, (cid:81) zapisywanie danych na karcie SD i w sieci Internet w serwisie Xively, (cid:81) komunikacj(cid:266) z innymi urz(cid:261)dzeniami za pomoc(cid:261) protoko(cid:225)u SPI (ang. Serial Peripheral Interface, szeregowy interfejs urz(cid:261)dze(cid:276) peryferyjnych). W poprzednim rozdziale dowiedzia(cid:239)e(cid:258) si(cid:218), jak otrzymywa(cid:202) za pomoc(cid:200) wy(cid:258)wietlaczy LCD wizualn(cid:200) informacj(cid:218) zwrotn(cid:200) z Arduino. Wyobra(cid:283) sobie mo(cid:285)liwo(cid:258)(cid:202) prezento- wania informacji z Arduino na zewn(cid:218)trznym ekranie i przesy(cid:239)anie jej przez Internet w szeroki (cid:258)wiat! A gdyby jeszcze mo(cid:285)na by(cid:239)o zdalnie sterowa(cid:202) p(cid:239)yt(cid:200) Arduino? Pod(cid:239)(cid:200)czenie Arduino do Internetu i zdalne wysy(cid:239)anie danych do Twojego kompu- tera to dwie z wielu mo(cid:285)liwych form komunikacji dost(cid:218)pnych w Arduino. Przyjrzymy si(cid:218) komunikacji wykorzystuj(cid:200)cej technologie Ethernet, WiFi, Bluetooth i SPI. Poniewa(cid:285) wiele Twoich projektów b(cid:218)dzie wykorzystywa(cid:202) komunikacj(cid:218) przez Inter- net, zajmijmy si(cid:218) ni(cid:200) od razu i sprawd(cid:283)my, jak Arduino mo(cid:285)e przesy(cid:239)a(cid:202) dane przez sie(cid:202) komputerow(cid:200). Kup książkęPoleć książkę 178 ROZDZIA(cid:224) 8. Komunikacja 8.1. Technologia Ethernet Jedn(cid:200) z najbardziej u(cid:285)ytecznych form komunikacji dost(cid:218)pnych w Arduino jest tech- nologia Ethernet. Jest to przyj(cid:218)ty standard budowy sieci komputerowych, umo(cid:285)liwia- j(cid:200)cy urz(cid:200)dzeniom wszelkiego rodzaju komunikacj(cid:218) mi(cid:218)dzy sob(cid:200) poprzez wysy(cid:239)anie i odbieranie strumieni danych (zwanych pakietami lub ramkami). Technologia Ethernet umo(cid:285)liwia wyj(cid:200)tkowo szybk(cid:200) i niezawodn(cid:200) transmisj(cid:218) danych przez sie(cid:202). Ka(cid:285)de urz(cid:200)dzenie posiada unikalny identyfikator zwany adresem IP, umo(cid:285)- liwiaj(cid:200)cy komunikacj(cid:218) przy u(cid:285)yciu ró(cid:285)nych protoko(cid:239)ów sieciowych. Komunikacja Arduino z sieci(cid:200) Internet jest prosta dzi(cid:218)ki nak(cid:239)adce i bibliotece Ether- net, ale zanim omówimy te komponenty, poznajmy kilka poj(cid:218)(cid:202) zwi(cid:200)zanych z sieciami komputerowymi. Nawet je(cid:285)eli ju(cid:285) je znasz, warto przypomnie(cid:202) sobie terminologi(cid:218) i technologie opisane w tabeli 8.1. Tabela 8.1. Najwa(cid:298)niejsze terminy i poj(cid:266)cia technologii Ethernet Termin Ethernet Protokó(cid:225) Adres MAC TCP/IP Adres IP Lokalny adres IP Opis Ethernet jest standardow(cid:261) technologi(cid:261) wykorzystywan(cid:261) do budowy sieci komputerowych, opisuj(cid:261)c(cid:261) sposób przesy(cid:225)ania danych pomi(cid:266)dzy komputerami lub innymi urz(cid:261)dzeniami przez sie(cid:252) przewodow(cid:261). Protoko(cid:225)y s(cid:261) to przyj(cid:266)te j(cid:266)zyki komunikacji umo(cid:298)liwiaj(cid:261)ce urz(cid:261)dzeniom porozumiewanie si(cid:266) mi(cid:266)dzy sob(cid:261). Aby dwa urz(cid:261)dzenia mog(cid:225)y si(cid:266) ze sob(cid:261) komunikowa(cid:252), musz(cid:261) u(cid:298)ywa(cid:252) tego samego j(cid:266)zyka. Na przyk(cid:225)ad protokó(cid:225) HTTP (ang. Hypertext Transfer Protocol, protokó(cid:225) przesy(cid:225)ania dokumentów hipertekstowych) jest powszechnie stosowanym protoko(cid:225)em, który mo(cid:298)esz wykorzysta(cid:252) w p(cid:225)ycie Arduino skonfigurowanej jako serwer WWW. Protokó(cid:225) HTTP okre(cid:286)la j(cid:266)zyk, dzi(cid:266)ki któremu serwer WWW Arduino rozumie komunikaty i zapytania odbierane od innych systemów, na przyk(cid:225)ad komputerów z przegl(cid:261)darkami. Adres MAC (ang. Media Access Control, kontrola dost(cid:266)pu do medium) jest to unikatowy identyfikator przypisywany urz(cid:261)dzeniom wykorzystuj(cid:261)cym Ethernet lub inn(cid:261) technologi(cid:266) sieciow(cid:261). Adres MAC umo(cid:298)liwia jednoznaczne zidentyfikowanie urz(cid:261)dzenia w sieci, aby mog(cid:225)o komunikowa(cid:252) si(cid:266) z innymi. Nak(cid:225)adka Ethernet Arduino posiada etykiet(cid:266) z przypisanym adresem MAC. Protoko(cid:225)y TCP (ang. Transmission Control Protocol, protokó(cid:225) sterowania transmisj(cid:261) danych) oraz IP (ang. Internet Protocol, protokó(cid:225) internetowy) umo(cid:298)liwiaj(cid:261) przesy(cid:225)anie komunikatów przez globaln(cid:261) sie(cid:252) Internet (b(cid:266)d(cid:261)c(cid:261) fundamentem znanej i lubianej przez nas sieci WWW). Adres IP jest to unikatowy identyfikator wykorzystywany przez urz(cid:261)dzenia i serwery do identyfikacji w globalnej sieci Internet. Na przyk(cid:225)ad przy otwieraniu strony internetowej www.helion.pl us(cid:225)uga DNS (ang. Directory Name Service, us(cid:225)uga s(cid:225)ownika nazw) zamienia adres http://www.helion.pl na numeryczny adres IP 188.117.147.100. Lokalny adres IP jest podobny do zwyk(cid:225)ego adresu IP, ale jest u(cid:298)ywany w szczególno(cid:286)ci do komunikacji pomi(cid:266)dzy komputerami i urz(cid:261)dzeniami w lokalnej sieci. Na przyk(cid:225)ad w Twojej domowej sieci ka(cid:298)dy komputer ma przypisany lokalny adres IP, u(cid:298)ywany do komunikacji z routerem i innymi komputerami. Sieci komputerowe i technologia Ethernet s(cid:200) z(cid:239)o(cid:285)onymi zagadnieniami, których pe(cid:239)ne poznanie mo(cid:285)e zaj(cid:200)(cid:202) ca(cid:239)e lata, ale w tabeli 8.1 wymienione s(cid:200) najbardziej podstawowe poj(cid:218)cia, które musisz zna(cid:202), aby zrozumie(cid:202) pozosta(cid:239)(cid:200) cz(cid:218)(cid:258)(cid:202) tego rozdzia(cid:239)u. Teraz, po zapoznaniu si(cid:218) z tabel(cid:200), przejd(cid:283)my do biblioteki Ethernet i sprawd(cid:283)my, do czego s(cid:239)u(cid:285)y. Kup książkęPoleć książkę 8.1. Technologia Ethernet 179 8.1.1. Biblioteka Ethernet Biblioteka Ethernet jest dostarczana razem ze (cid:258)rodowiskiem Arduino IDE. Umo(cid:285)liwia ona konfiguracj(cid:218) nak(cid:239)adki Ethernet i komunikacj(cid:218) ze (cid:258)wiatem zewn(cid:218)trznym oraz skon- figurowanie do czterech (w sumie) równolegle dzia(cid:239)aj(cid:200)cych serwerów i klientów. Ser- wer przyjmuje po(cid:239)(cid:200)czenia przychodz(cid:200)ce od klientów, po czym wysy(cid:239)a i odbiera dane. Natomiast klient najpierw zestawia z serwerem po(cid:239)(cid:200)czenie wychodz(cid:200)ce, dzi(cid:218)ki któremu mo(cid:285)e wysy(cid:239)a(cid:202) i odbiera(cid:202) od niego dane. Wi(cid:218)cej na ten temat powiemy wkrótce, ale teraz spójrzmy na tabel(cid:218) 8.2, zawieraj(cid:200)c(cid:200) przegl(cid:200)d funkcji dost(cid:218)pnych w bibliotece Ethernet. Tabela 8.2. Przegl(cid:261)d funkcji klas Ethernet, Server i Client dost(cid:266)pnych w bibliotece Ethernet Funkcja Opis Ethernet.begin(mac) Ethernet.begin(mac, ip) Ethernet.begin(mac, ip, brama) Ethernet.begin(mac, ip, brama, (cid:180)podsie(cid:232)) 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() Inicjuje bibliotek(cid:266) za pomoc(cid:261) adresu MAC nak(cid:225)adki i automatycznie konfiguruje adres IP za pomoc(cid:261) serwera DHCP. Opcjonalnie mo(cid:298)na r(cid:266)cznie poda(cid:252) adres IP, bram(cid:266) (najcz(cid:266)(cid:286)ciej jest to adres IP routera) i mask(cid:266) podsieci (informuj(cid:261)c(cid:261) nak(cid:225)adk(cid:266), jak interpretowa(cid:252) adres IP; domy(cid:286)lna maska to 255.255.255.0). Tworzy serwer nas(cid:225)uchuj(cid:261)cy na okre(cid:286)lonym porcie. Uruchamia serwer oczekuj(cid:261)cy na komunikaty. Zwraca obiekt klienta, je(cid:298)eli s(cid:261) ju(cid:298) odebrane od niego dane. Wysy(cid:225)a dane do wszystkich pod(cid:225)(cid:261)czonych klientów. Wysy(cid:225)a dane do wszystkich klientów. Liczby s(cid:261) wysy(cid:225)ane jako ci(cid:261)gi znaków ASCII, na przyk(cid:225)ad liczba 123 jest wysy(cid:225)ana jako ci(cid:261)g trzech znaków: ‘1’, ‘2’ i ‘3’. Dzia(cid:225)a podobnie jak Server.print(), ale dodatkowo wysy(cid:225)a znak nowego wiersza na ko(cid:276)cu ka(cid:298)dego komunikatu. Tworzy obiekt klienta, który mo(cid:298)e (cid:225)(cid:261)czy(cid:252) si(cid:266) z okre(cid:286)lonym adresem IP i portem. Zwraca informacj(cid:266), czy klient jest po(cid:225)(cid:261)czony z serwerem. Je(cid:298)eli po(cid:225)(cid:261)czenie jest zamkni(cid:266)te, a jakie(cid:286) dane wci(cid:261)(cid:298) nie s(cid:261) odczytane, funkcja zwraca warto(cid:286)(cid:252) true. Nawi(cid:261)zuje po(cid:225)(cid:261)czenie. Wysy(cid:225)a dane do serwera. Wysy(cid:225)a dane do serwera. Liczby s(cid:261) wysy(cid:225)ane jako ci(cid:261)gi znaków ASCII, na przyk(cid:225)ad liczba 123 jest wysy(cid:225)ana jako ci(cid:261)g trzech znaków: ‘1’, ‘2’ i ‘3’. Dzia(cid:225)a podobnie jak Client.print(), ale dodatkowo wysy(cid:225)a znak nowego wiersza na ko(cid:276)cu ka(cid:298)dego komunikatu. Zwraca liczb(cid:266) bajtów gotowych do odczytania (liczb(cid:266) bajtów wys(cid:225)anych przez serwer). Odczytuje nast(cid:266)pny bajt odebrany z serwera. Usuwa wszystkie bajty wys(cid:225)ane do klienta, ale jeszcze przez niego nieodczytane. Zamyka po(cid:225)(cid:261)czenie z serwerem. Oprócz klas Ethernet, Server oraz Client biblioteka Ethernet zawiera przydatne klasy ogólnego przeznaczenia, obs(cid:239)uguj(cid:200)ce protokó(cid:239) UDP (ang. User Datagram Protocol, Kup książkęPoleć książkę 180 ROZDZIA(cid:224) 8. Komunikacja protokó(cid:239) danych u(cid:285)ytkownika) do rozg(cid:239)aszania informacji w sieci. Je(cid:285)eli serwer lub klient nie jest wymagany, mo(cid:285)esz do wysy(cid:239)ania i odbierania danych z Arduino u(cid:285)y(cid:202) klasy EthernetUDP. Tabela 8.3 zawiera szczegó(cid:239)owy opis funkcji tej klasy. Tabela 8.3. Przegl(cid:261)d g(cid:225)ównych funkcji klasy EthernetUDP w bibliotece Ethernet Funkcja Opis EthernetUDP.begin(port) EthernetUDP.read(bufor_pakietów, maks_wielko(cid:295)(cid:232)) EthernetUDP.write(komunikat) EthernetUDP.beginPacket(ip, port) Okre(cid:286)la adres IP i port urz(cid:261)dzenia docelowego. Funkcja musi Inicjuje obiekt UDP i okre(cid:286)la port do nas(cid:225)uchu. Odczytuje z bufora pakiety UDP. Wysy(cid:225)a komunikat do innego urz(cid:261)dzenia. EthernetUDP.endPacket() EthernetUDP.parsePacket() EthernetUDP.available() by(cid:252) wywo(cid:225)ana przed wys(cid:225)aniem komunikatu. Ko(cid:276)czy komunikat. Funkcja wywo(cid:225)ywana po wys(cid:225)aniu komunikatu. Sprawdza, czy jaki(cid:286) komunikat oczekuje na odczytanie. Zwraca ilo(cid:286)(cid:252) danych odebranych i gotowych do odczytania. Teraz, kiedy znamy ju(cid:285) funkcje i klasy biblioteki Ethernet, przyjrzyjmy si(cid:218) samej nak(cid:239)adce. Nak(cid:239)adk(cid:218) stosuje si(cid:218) w celu rozszerzenia funkcjonalno(cid:258)ci sprz(cid:218)towych Arduino. Dzi(cid:218)ki niej mo(cid:285)esz pod(cid:239)(cid:200)czy(cid:202) p(cid:239)yt(cid:218) do sieci Ethernet. 8.1.2. Nak(cid:225)adka Ethernet z kart(cid:261) SD Oryginalna nak(cid:239)adka Ethernet jest kamieniem milowym w rozwoju platformy Arduino. Umo(cid:285)liwia ona komunikacj(cid:218) projektów z innymi urz(cid:200)dzeniami przez sie(cid:202) kompute- row(cid:200) lub Internet. Nak(cid:239)adka wykorzystuje uk(cid:239)ad WIZnet W5100 i oferuje obs(cid:239)ug(cid:218) stosu IP wraz z protoko(cid:239)ami TCP i UDP poprzez (cid:239)(cid:200)cza Ethernet 10/100 Mbit/s. Nak(cid:239)adka jest wyposa(cid:285)ona w standardowe gniazdo RJ45 umo(cid:285)liwiaj(cid:200)ce po(cid:239)(cid:200)czenie i wspó(cid:239)prac(cid:218) z modemem, routerem lub innymi standardowymi urz(cid:200)dzeniami. Nowsza, szeroko dost(cid:218)pna wersja nak(cid:239)adki zawiera ulepszenie w postaci slotu na kart(cid:218) microSD. Dzi(cid:218)ki niemu mo(cid:285)na odczytywa(cid:202) i zapisywa(cid:202) pliki (za pomoc(cid:200) biblioteki SD, po umieszczeniu karty SD w slocie). Nale(cid:285)y pami(cid:218)ta(cid:202), (cid:285)e zarówno uk(cid:239)ad W5100, jak i karta SD komunikuj(cid:200) si(cid:218) z Arduino za pomoc(cid:200) interfejsu SPI (wi(cid:218)cej informacji na temat komunikacji SPI znajduje si(cid:218) w podrozdziale 8.6). W wi(cid:218)kszo(cid:258)ci p(cid:239)yt Arduino wykorzystywane s(cid:200) w tym celu piny nr 11, 12 i 13, natomiast w p(cid:239)ycie Mega piny 50, 51 i 52. W obu p(cid:239)ytach pin nr 10 jest u(cid:285)ywany do wybrania do komunikacji uk(cid:239)adu W5100, natomiast pin nr 4 do wybrania karty SD. Jest to istotne z tego wzgl(cid:218)du, (cid:285)e nie mo(cid:285)na tych pinów u(cid:285)ywa(cid:202) jako wej(cid:258)ciowych lub wyj(cid:258)ciowych pinów ogólnego przeznaczenia. UWAGA: Zarówno uk(cid:239)ad W5100, jak i karta SD korzystaj(cid:200) z szyny SPI, ale tylko jedno z nich mo(cid:285)e by(cid:202) aktywne w danej chwili. Aby móc korzysta(cid:202) z karty SD, nale(cid:285)y skonfigurowa(cid:202) pin nr 4 jako wyj(cid:258)cie i ustawi(cid:202) na nim stan wysoki (HIGH). Natomiast w przypadku uk(cid:239)adu W5100 nale(cid:285)y jako wyj(cid:258)cie skonfigurowa(cid:202) pin nr 10 i ustawi(cid:202) na nim stan wysoki. Sprz(cid:218)towego pinu SS (w wi(cid:218)kszo(cid:258)ci p(cid:239)yt jest Kup książkęPoleć książkę 8.2. Serwer WWW Arduino 181 to pin nr 10, a w p(cid:239)ycie Mega nr 53) mo(cid:285)na nie u(cid:285)ywa(cid:202), ale aby móc korzysta(cid:202) z karty SD, biblioteki Ethernet i interfejsu SPI, trzeba ustawi(cid:202) go jako wyj(cid:258)cie (domy(cid:258)lna konfiguracja). 8.2. Serwer WWW Arduino Maj(cid:200)c w ma(cid:239)ym palcu podstawy technologii, bibliotek(cid:218) i nak(cid:239)adk(cid:218), mo(cid:285)esz zacz(cid:200)(cid:202) prac(cid:218) nad swoim pierwszym projektem wykorzystuj(cid:200)cym Ethernet. Zbudujesz serwer WWW, czyli system odpowiadaj(cid:200)cy na zapytania wysy(cid:239)ane przez klientów i wysy(cid:239)aj(cid:200)cy do nich dane (jak przedstawia rysunek 8.1). Aby to osi(cid:200)gn(cid:200)(cid:202), 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(cid:218)dziesz potrzebowa(cid:202) pewnych informacji. Po pierwsze, musisz zna(cid:202) adres MAC swojej nak(cid:239)adki Ethernet. Powinien on by(cid:202) wydrukowany na etykiecie na nak(cid:239)adce. W kodzie serwera adres MAC zapiszesz w tabeli bajtów, na przyk(cid:239)ad tak: byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; Pami(cid:218)taj, (cid:285)e jest to unikatowy adres sprz(cid:218)towy, wykorzystywany przez nak(cid:239)adk(cid:218) do bez- po(cid:258)redniej komunikacji z innymi urz(cid:200)dzeniami przez sie(cid:202) Ethernet. Je(cid:285)eli posiadasz star(cid:200) nak(cid:239)adk(cid:218) bez etykiety albo j(cid:200) zgubi(cid:239)e(cid:258), mo(cid:285)esz wykorzysta(cid:202) adres MAC z powy(cid:285)szego przyk(cid:239)adu. Je(cid:285)eli do sieci jest do(cid:239)(cid:200)czonych wi(cid:218)cej ni(cid:285) jedno urz(cid:200)dzenie, wa(cid:285)ne jest, aby ka(cid:285)de posiada(cid:239)o swój w(cid:239)asny unikatowy adres MAC. W nast(cid:218)pnym kroku b(cid:218)dziesz potrzebowa(cid:202) adresu IP. Od wersji 1.0 Arduino wbu- dowana biblioteka Ethernet obs(cid:239)uguje protokó(cid:239) DHCP (Dynamic Host Configuration Protocol, protokó(cid:239) dynamicznego konfigurowania urz(cid:200)dzenia), umo(cid:285)liwiaj(cid:200)cy Arduino automatyczne przypisanie adresu IP. Adres IP zostanie automatycznie skonfigurowa- ny niezale(cid:285)nie od tego, czy p(cid:239)yta jest pod(cid:239)(cid:200)czona bezpo(cid:258)rednio do modemu, czy do routera, o ile tylko na tych urz(cid:200)dzeniach jest w(cid:239)(cid:200)czona us(cid:239)uga DHCP (zazwyczaj jest). Je(cid:285)eli w Twojej sieci nie jest u(cid:285)ywany protokó(cid:239) DHCP albo u(cid:285)ywasz wersji Ar- duino starszej ni(cid:285) 1.0, musisz dowiedzie(cid:202) si(cid:218), jaki adres IP ma router, i r(cid:218)cznie przy- pisa(cid:202) nak(cid:239)adce Ethernet jaki(cid:258) inny adres IP. W zale(cid:285)no(cid:258)ci od konfiguracji jest kilka sposobów wykonania tej operacji. Je(cid:285)eli p(cid:239)yta Arduino jest pod(cid:239)(cid:200)czona bezpo(cid:258)rednio do modemu, jego adres IP jest przypisany przez operatora internetowego ISP. W takim przypadku najprostszym Kup książkęPoleć książkę 182 ROZDZIA(cid:224) 8. Komunikacja sposobem poznania adresu IP jest pod(cid:239)(cid:200)czenie komputera do modemu i skorzystanie z jednej z wielu stron w Internecie rozpoznaj(cid:200)cych Twój adres IP. (Proste wyszukanie frazy „adres IP” powinno pomóc w znalezieniu odpowiedniej strony, ewentualnie mo(cid:285)esz skorzysta(cid:202) z http://www.adres-ip.pl.) Zwró(cid:202) uwag(cid:218), (cid:285)e adres IP Twojego routera jest automatycznie przypisywany przez operatora ISP i mo(cid:285)e si(cid:218) zmienia(cid:202) od czasu do czasu. Je(cid:285)eli p(cid:239)yta Arduino jest do(cid:239)(cid:200)czona do sieci przez router, musisz r(cid:218)cznie przypisa(cid:202) do nak(cid:239)adki jaki(cid:258) niewykorzystywany adres IP. Aby to zrobi(cid:202), musisz posiada(cid:202) nieco wi(cid:218)cej informacji na temat konfiguracji swojej sieci. Adres IP routera mo(cid:285)esz pozna(cid:202), korzystaj(cid:200)c z komputera do(cid:239)(cid:200)czonego do sieci i opisanej wy(cid:285)ej us(cid:239)ugi internetowej. Mo(cid:285)esz równie(cid:285) otworzy(cid:202) panel administracyjny swojego routera, wpisuj(cid:200)c w przegl(cid:200)- darce jego domy(cid:258)lny adres IP. Na przyk(cid:239)ad w przypadku urz(cid:200)dze(cid:241) Linksys jest to adres http://192.168.1.1, a dla innych marek http://10.0.0.1. Je(cid:285)eli Twój router ma np. adres 192.168.1.1, musisz nak(cid:239)adce Ethernet nada(cid:202) adres 192.168.1.x, gdzie x oznacza dowoln(cid:200) liczb(cid:218) od 2 do 254. Ka(cid:285)dy komputer lub inne urz(cid:200)dzenie w sieci posiada swój unika- towy adres 192.168.1.x, w którym ostatnia liczba identyfikuje to urz(cid:200)dzenie w sieci. Dlatego musisz si(cid:218) upewni(cid:202), (cid:285)e Twoja nak(cid:239)adka nie wchodzi w konflikt z innymi urz(cid:200)- dzeniami. Ta sama zasada obowi(cid:200)zuje, gdy Twój router wykorzystuje inn(cid:200) adresacj(cid:218), na przyk(cid:239)ad 10.0.0.x. Je(cid:285)eli musisz r(cid:218)cznie przypisa(cid:202) adres IP, mo(cid:285)esz wykorzysta(cid:202) obiekt IPAddress, na przyk(cid:239)ad: IPAddress manualIP(192, 168, 1, 2); Liczby w powy(cid:285)szym kodzie oznaczaj(cid:200) adres, który chcesz przypisa(cid:202). Na koniec je(cid:285)eli jeste(cid:258) pod(cid:239)(cid:200)czony do sieci i wykorzystujesz router do po(cid:239)(cid:200)czenia z Internetem, musisz równie(cid:285) ustawi(cid:202) jego adres IP jako bram(cid:218). Utwórz tabel(cid:218) typu byte i zapisz w niej adres IP routera, który b(cid:218)dzie u(cid:285)yty jako adres bramy. Poni(cid:285)ej przed- stawiony jest przyk(cid:239)ad: byte gateway[] = { 192, 168, 1, 1}; Teraz, kiedy znasz ju(cid:285) konfiguracj(cid:218) IP sieci, przejd(cid:283)my do kodu. 8.2.2. Szkic konfiguruj(cid:261)cy serwer WWW Listing 8.1 stanowi praktyczne zastosowanie omówionych wcze(cid:258)niej zagadnie(cid:241) do skonfigurowania serwera WWW na p(cid:239)ycie Arduino. Serwer b(cid:218)dzie mia(cid:239) za zadanie do(cid:239)(cid:200)czy(cid:202) si(cid:218) do Internetu (lub do sieci lokalnej), przyjmowa(cid:202) po(cid:239)(cid:200)czenia przychodz(cid:200)ce od klientów (wysy(cid:239)ane przez przegl(cid:200)darki) i odpowiada(cid:202) w(cid:239)asnym komunikatem. Listing jest doskona(cid:239)ym szablonem do tworzenia niemal dowolnej aplikacji serwerowej. Listing 8.1. Serwer WWW na p(cid:225)ycie Arduino #include SPI.h #include Ethernet.h byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; Przypisanie unikatowego adresu MAC Kup książkęPoleć książkę 8.2. Serwer WWW Arduino 183 IPAddress manualIP(192,168,1,120); EthernetServer server(80); boolean dhcpConnected = false; R(cid:266)czne przypisanie adresu IP, je(cid:298)eli DHCP nie dzia(cid:225)a Inicjalizacja serwera void setup() { if (!Ethernet.begin(mac)){ Ethernet.begin(mac, manualIP); } server.begin(); } Uruchomienie serwera Po(cid:225)(cid:261)czenie za pomoc(cid:261) DHCP R(cid:266)czne po(cid:225)(cid:261)czenie, je(cid:298)eli DHCP nie dzia(cid:225)a void loop() { EthernetClient client = server.available(); if (client) { boolean currentLineIsBlank = true; while (client.connected()) { if (client.available()) { char c = client.read(); Oczekiwanie na po(cid:225)(cid:261)czenia od klientów Po(cid:225)(cid:261)czenie i odczyt danych od klienta Koniec zapytania i odes(cid:225)anie odpowiedzi do klienta if (c == 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 == ) { currentLineIsBlank = true; } else if (c != ) { currentLineIsBlank = false; } } } delay(1); client.stop(); } } Zw(cid:225)oka na odczytanie danych przez klienta Zamkni(cid:266)cie po(cid:225)(cid:261)czenia Najpierw inicjowany jest serwer HTTP na porcie nr 80 spróbowa(cid:202) pod(cid:239)(cid:200)czy(cid:202) Arduino do sieci Ethernet, korzystaj(cid:200)c z us(cid:239)ugi DHCP nie b(cid:218)dzie to mo(cid:285)liwe, r(cid:218)cznie przypisuj(cid:200)c adres wera i w g(cid:239)ównej p(cid:218)tli rozpoczyna si(cid:218) nas(cid:239)uchiwanie po(cid:239)(cid:200)cze(cid:241) . Po zainicjowaniu mo(cid:285)esz , a je(cid:285)eli . Dalej nast(cid:218)puje uruchomienie ser- Gdy do serwera pod(cid:239)(cid:200)czy si(cid:218) klient i odebrane zostan(cid:200) dane, wówczas znak nowego wiersza b(cid:218)dzie oznacza(cid:239) koniec komunikatu, po czym do klienta zostanie odes(cid:239)ana odpowied(cid:283) . . Kup książkęPoleć książkę 184 ROZDZIA(cid:224) 8. Komunikacja 8.2.3. Za(cid:225)adowanie i test szkicu Skopiuj dok(cid:239)adnie kod z listingu 8.1 do (cid:258)rodowiska Arduino IDE. Teraz mo(cid:285)esz za(cid:239)a- dowa(cid:202) szkic do Arduino. Po za(cid:239)adowaniu i uruchomieniu kodu mo(cid:285)esz zdalnie po(cid:239)(cid:200)czy(cid:202) si(cid:218) z serwerem Arduino, otwieraj(cid:200)c w dowolnej przegl(cid:200)darce adres http://twój_adres_arduino. Twoja przegl(cid:200)darka (klient) wy(cid:258)le do serwera (cid:285)(cid:200)danie po(cid:239)(cid:200)czenia, który z kolei odpowie komu- nikatem „Witaj, jestem Twoim serwerem Arduino!”. Tak to dzia(cid:239)a. Chcesz otrzymywa(cid:202) rzeczywiste dane? Pod(cid:239)(cid:200)cz potencjometr lub czujnik do wej(cid:258)cia analogowego nr 0 i zamie(cid:241) wiersz: client.println( Witaj, jestem Twoim serwerem Arduino! ); na nast(cid:218)puj(cid:200)cy: client.println(analogRead(0)); Mamy nadziej(cid:218), (cid:285)e szkic zadzia(cid:239)a bez problemów, ale je(cid:285)eli nie otrzymasz (cid:285)adnej odpo- wiedzi, przeczytaj poni(cid:285)szy punkt po(cid:258)wi(cid:218)cony usuwaniu usterek. 8.2.4. Usuwanie usterek Je(cid:285)eli nie mo(cid:285)esz nawi(cid:200)za(cid:202) po(cid:239)(cid:200)czenia z Arduino, pierwsz(cid:200) rzecz(cid:200), któr(cid:200) nale(cid:285)y sprawdzi(cid:202), s(cid:200) ustawienia adresu IP. Je(cid:285)eli jeste(cid:258) absolutnie pewny, (cid:285)e konfiguracja IP jest poprawna i jeste(cid:258) pod(cid:239)(cid:200)czony do sieci domowej, mo(cid:285)liwe, (cid:285)e musisz skonfiguro- wa(cid:202) na routerze przekierowanie portów. Przekierowanie portów powoduje, (cid:285)e router w specjalny sposób przesy(cid:239)a komunikaty przeznaczone dla Twojego Arduino. Konfi- guracja przekierowania portów nie jest trudna; musisz j(cid:200) wykona(cid:202) na swoim routerze. Aby uzyska(cid:202) wi(cid:218)cej informacji, zajrzyj do dokumentacji routera, jak ustawi(cid:202) przekiero- wanie na adres IP Arduino. To powinno rozwi(cid:200)za(cid:202) problem. 8.3. (cid:251)wir, (cid:252)wir — komunikacja z portalem Twitter Tworzenie serwera WWW komunikuj(cid:200)cego si(cid:218) ze (cid:258)wiatem zewn(cid:218)trznym to wspa- nia(cid:239)e zaj(cid:218)cie, ale inn(cid:200) u(cid:285)yteczn(cid:200) opcj(cid:200) jest po(cid:239)(cid:200)czenie z us(cid:239)ugami w Internecie. Jedn(cid:200) z us(cid:239)ug, z której warto skorzysta(cid:202), jest portal Twitter. Zasada dzia(cid:239)ania portalu Twitter jest prosta. Je(cid:285)eli masz w nim swoje konto, mo(cid:285)esz rozsy(cid:239)a(cid:202) w ca(cid:239)ej sieci Twitter tweety (komunikaty) o d(cid:239)ugo(cid:258)ci maksymalnie 140 zna- ków. U(cid:285)ytkownicy mog(cid:200) zapisywa(cid:202) si(cid:218) do Twojego kana(cid:239)u i automatycznie otrzymy- wa(cid:202) aktualizacje Twoich tweetów. Ale to nie wszystko. Twitter dobrze wspó(cid:239)pracuje z innymi us(cid:239)ugami, czyli mo(cid:285)esz równie(cid:285) automatycznie wysy(cid:239)a(cid:202) swoje tweety do konta w portalu Facebook. Czy nie by(cid:239)oby wspaniale skonfigurowa(cid:202) kana(cid:239) Twitter dostarczaj(cid:200)cy aktualnych informacji o tym, co si(cid:218) dzieje z Twoim Arduino? Jest to mo(cid:285)liwe. W tym podrozdziale dowiesz si(cid:218), jak skonfigurowa(cid:202) Arduino i nak(cid:239)adk(cid:218) Ethernet, aby po naci(cid:258)ni(cid:218)ciu przyci- sku pod(cid:239)(cid:200)czonego do p(cid:239)yty automatycznie wysy(cid:239)a(cid:202) komunikaty do portalu Twitter. Kup książkęPoleć książkę 8.3. (cid:109)wir, (cid:202)wir — komunikacja z portalem Twitter 185 8.3.1. Twitter i tokeny Je(cid:285)eli nie masz jeszcze konta w portalu Twitter albo na potrzeby tego projektu chcesz za(cid:239)o(cid:285)y(cid:202) nowe, odwied(cid:283) stron(cid:218) www.twitter.com i utwórz konto. Nast(cid:218)pnie pobierz specjalny token, który umo(cid:285)liwi autoryzacj(cid:218) Arduino podczas wysy(cid:239)ania komunikatów przez Twoje konto. Ten token umo(cid:285)liwia po(cid:258)redniemu ser- werowi WWW mediacj(cid:218) pomi(cid:218)dzy Arduino a portalem Twitter. Mo(cid:285)liwa jest rów- nie(cid:285) bezpo(cid:258)rednia komunikacja z portalem, ale korzystanie z us(cid:239)ugi po(cid:258)rednicz(cid:200)cej jest lepsze, poniewa(cid:285) zapobiega przerwaniu wykonywania Twojego kodu w przypadku, gdy Twitter zmieni swój protokó(cid:239) komunikacyjny lub sposób autoryzacji. Równie(cid:285) biblioteka Twitter jest mniejsza dzi(cid:218)ki us(cid:239)udze po(cid:258)rednicz(cid:200)cej. Oszcz(cid:218)dza si(cid:218) w ten spo- sób cenn(cid:200) pami(cid:218)(cid:202) Arduino. Aby pobra(cid:202) token, otwórz stron(cid:218) http://arduino-tweet.appspot.com i kliknij odno- (cid:258)nik Step 1: Get a token to post a message using OAuth (Krok 1. Pobierz token do wysy- (cid:239)ania komunikatów za pomoc(cid:200) us(cid:239)ugi OAuth). Po skonfigurowaniu konta pora przyjrze(cid:202) si(cid:218) bli(cid:285)ej bibliotece, z której b(cid:218)dziemy korzysta(cid:202). 8.3.2. Biblioteki i funkcje Aby móc komunikowa(cid:202) si(cid:218) z portalem Twitter, musisz zainstalowa(cid:202) bibliotek(cid:218) Twitter, dost(cid:218)pn(cid:200) pod adresem www.arduino.cc/playground/Code/TwitterLibrary. Po pobraniu biblioteki zapisz j(cid:200) w folderze sketchbook lub libraries. Tabela 8.4 przedstawia opis funkcji zawartych w bibliotece Twitter. Tabela 8.4. Przegl(cid:261)d funkcji biblioteki Twitter Funkcja Opis Twitter(string token) bool post(const char *komunikat) bool checkStatus(Print *debug) int status() int wait(Print *debug) Konstruktor klasy, przyjmuj(cid:261)cy token jako argument. Rozpoczyna wysy(cid:225)anie komunikatu. Zwraca warto(cid:286)(cid:252) true po pomy(cid:286)lnym nawi(cid:261)zaniu po(cid:225)(cid:261)czenia z portalem Twitter lub false w przypadku b(cid:225)(cid:266)du. Sprawdza, czy (cid:298)(cid:261)danie opublikowania komunikatu jest wci(cid:261)(cid:298) realizowane (mo(cid:298)na pomin(cid:261)(cid:252) argument debug, je(cid:298)eli nie jest wymagana informacja zwrotna). Zwraca kod HTTP odpowiedzi z portalu Twitter, na przyk(cid:225)ad 200 OK Status jest dost(cid:266)pny dopiero po opublikowaniu komunikatu, gdy funkcja checkStatus() zwróci warto(cid:286)(cid:252) false. Czeka na zako(cid:276)czenie publikacji komunikatu. Zwraca kod HTTP odpowiedzi z portalu Twitter. 8.3.3. Schemat uk(cid:225)adu i po(cid:225)(cid:261)czenia komponentów Je(cid:285)eli konto w portalu Twitter i (cid:258)rodowisko Arduino IDE s(cid:200) skonfigurowane, zbudujmy prosty uk(cid:239)ad wysy(cid:239)aj(cid:200)cy tweeta, gdy u(cid:285)ytkownik naci(cid:258)nie przycisk. Przylutuj przycisk do p(cid:239)yty lub zbuduj uk(cid:239)ad na p(cid:239)ycie prototypowej. Pod(cid:239)(cid:200)cz jedn(cid:200) z ko(cid:241)cówek przycisku z pinem 5 V, a drug(cid:200) z pinem masy GND poprzez rezystor obni(cid:285)aj(cid:200)cy 100 k(cid:525). T(cid:218) sam(cid:200) ko(cid:241)cówk(cid:218) przycisku (pod(cid:239)(cid:200)czon(cid:200) do masy) do(cid:239)(cid:200)cz do wej(cid:258)cia cyfrowego nr 2, jak pokazuje rysunek 8.2. Kup książkęPoleć książkę 186 ROZDZIA(cid:224) 8. Komunikacja Rysunek 8.2. Prosty uk(cid:225)ad do wysy(cid:225)ania tweetów po naci(cid:286)ni(cid:266)ciu przycisku 8.3.4. Szkic do wysy(cid:225)ania tweeta po naci(cid:286)ni(cid:266)ciu przycisku Po pod(cid:239)(cid:200)czeniu przycisku i umieszczeniu na Arduino nak(cid:239)adki Ethernet skopiuj poni(cid:285)- szy kod (listing 8.2) do (cid:258)rodowiska Arduino IDE i mo(cid:285)esz zaczyna(cid:202). Przeczytaj uwa(cid:285)nie komentarze w kodzie i upewnij si(cid:218), (cid:285)e kod zawiera ustawienia odpowiadaj(cid:200)ce konfi- guracji Twojej sieci. Je(cid:285)eli potrzebujesz wyja(cid:258)nie(cid:241) dotycz(cid:200)cych jakiego(cid:258) poj(cid:218)cia siecio- wego lub terminu, wró(cid:202) do podrozdzia(cid:239)u 8.1. Listing 8.2. Szkic do wysy(cid:225)ania komunikatu do portalu Twitter po naci(cid:286)ni(cid:266)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(cid:286)lenie pinu przycisku Przypisanie unikatowego adresu MAC R(cid:266)czne przypisanie adresu IP, je(cid:298)eli DHCP nie dzia(cid:225)a Kup książkęPoleć książkę 8.3. (cid:109)wir, (cid:202)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(cid:225)(cid:261)czenie za pomoc(cid:261) DHCP R(cid:266)czne po(cid:225)(cid:261)czenie, je(cid:298)eli DHCP nie dzia(cid:225)a Zestawienie po(cid:225)(cid:261)czenia szeregowego Sformatowanie i wys(cid:225)anie tweeta 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. ); } } void loop() { if(digitalRead(b1Pin) == HIGH) { pressCount++; sendTweet( Liczba nacisniec przycisku: + pressCount); delay(2000); } } Sprawdzenie przycisku i wys(cid:225)anie tweeta Najpierw Arduino próbuje pod(cid:239)(cid:200)czy(cid:202) si(cid:218) do sieci Ethernet, korzystaj(cid:200)c z us(cid:239)ugi DHCP . Po pod(cid:239)(cid:200)czeniu otwierane jest po(cid:239)(cid:200)czenie szeregowe, poprzez które wysy(cid:239)ane s(cid:200) komu- nikaty diagnostyczne do monitora portu szeregowego , a je(cid:285)eli nie b(cid:218)dzie to mo(cid:285)liwe, za pomoc(cid:200) r(cid:218)cznie przypisanego adresu IP . Je(cid:285)eli po(cid:239)(cid:200)czenie z portalem zostanie nawi(cid:200)zane, zastosowana zostanie funkcja . Kod sprawdza, czy zosta(cid:239) sendTweet, odpowiednio formatuj(cid:200)ca i wysy(cid:239)aj(cid:200)ca tweeta naci(cid:258)ni(cid:218)ty przycisk, po czym wysy(cid:239)a tweeta . 8.3.5. Za(cid:225)adowanie i test szkicu Je(cid:285)eli jeste(cid:258) pewien, (cid:285)e szkic zawiera poprawne dane, skompiluj go i za(cid:239)aduj do Ardu- ino. Teraz mo(cid:285)esz rozg(cid:239)asza(cid:202) naci(cid:258)ni(cid:218)cia przycisku w portalu Twitter. Sprawd(cid:283), czy p(cid:239)yta Arduino wykonuje kod i czy jest pod(cid:239)(cid:200)czona do Internetu przewodem Ethernet. To jest ca(cid:239)a konfiguracja. Kup książkęPoleć książkę 188 ROZDZIA(cid:224) 8. Komunikacja Naci(cid:258)nij przycisk pod(cid:239)(cid:200)czony do Arduino i zaloguj si(cid:218) do portalu Twitter. Powi- niene(cid:258) w nim zobaczy(cid:202) ostatni tweet o tre(cid:258)ci „Liczba nacisniec przycisku: 1”, jak poka- zuje rysunek 8.3. Po ka(cid:285)dym naci(cid:258)ni(cid:218)ciu przycisku pojawi si(cid:218) nowy tweet ze zwi(cid:218)k- szaj(cid:200)c(cid:200) si(cid:218) liczb(cid:200) naci(cid:258)ni(cid:218)(cid:202). Fajna zabawa. Rysunek 8.3. Widok tweetu w portalu Twitter po naci(cid:286)ni(cid:266)ciu przycisku UWAGA: Twitter blokuje wielokrotne wysy(cid:239)anie w krótkim przedziale czasu tego samego komunikatu. W listingu 8.2 komunikat jest zmieniany po ka(cid:285)dym naci- (cid:258)ni(cid:218)ciu przycisku (zwi(cid:218)kszana jest liczba naci(cid:258)ni(cid:218)(cid:202)), a wi(cid:218)c nie b(cid:218)dzie problemu z wys(cid:239)aniem tweeta. W wi(cid:218)kszo(cid:258)ci przypadków okresowego wysy(cid:239)ania komuni- katów lub komunikatów ró(cid:285)ni(cid:200)cych si(cid:218) mi(cid:218)dzy sob(cid:200) ten problem nie powinien wyst(cid:200)pi(cid:202). Niemniej jednak warto o tym pami(cid:218)ta(cid:202). Jak zapewne si(cid:218) domy(cid:258)lasz, mo(cid:285)esz rozg(cid:239)asza(cid:202) wiele innych po(cid:285)ytecznych informacji, nie tylko dotycz(cid:200)cych naci(cid:258)ni(cid:218)cia przycisku. Na przyk(cid:239)ad czujnik mo(cid:285)e wysy(cid:239)a(cid:202) sygna(cid:239), gdy drzwi do Twojego domu zostan(cid:200) otwarte lub zamkni(cid:218)te. Mo(cid:285)esz wysy(cid:239)a(cid:202) bie(cid:285)(cid:200)ce dane i przedstawia(cid:202) je w swojej galerii. To tylko zarys mo(cid:285)liwo(cid:258)ci. 8.4. (cid:224)(cid:261)czno(cid:286)(cid:252) Wi-Fi Nak(cid:239)adka Ethernet b(cid:239)yskawicznie pod(cid:239)(cid:200)czy Twoj(cid:200) p(cid:239)yt(cid:218) Arduino do sieci, ale w nie- których sytuacjach przydaje si(cid:218) (cid:239)(cid:200)czno(cid:258)(cid:202) bezprzewodowa. Na przyk(cid:239)ad gdy musisz odbiera(cid:202) na bie(cid:285)(cid:200)co dane z samobie(cid:285)nego robota w(cid:239)asnej konstrukcji albo gdy Twój uk(cid:239)ad musi by(cid:202) pod(cid:239)(cid:200)czony do sieci, a w pobli(cid:285)u nie ma (cid:239)(cid:200)cza ani routera przewodowego. Si(cid:218)gnij wtedy po nak(cid:239)adk(cid:218) WiFi, eleganckie rozwi(cid:200)zanie umo(cid:285)liwiaj(cid:200)ce pod(cid:239)(cid:200)czenie Arduino do sieci bezprzewodowej i przesy(cid:239)anie danych. UWAGA: Je(cid:285)eli posiadasz nak(cid:239)adk(cid:218) SparkFun WiFly (popularny odpowiednik oficjalnej nak(cid:239)adki Arduino WiFi) albo z jakiego(cid:258) powodu musisz j(cid:200) wykorzysta(cid:202) w projekcie, na stronie internetowej oryginalnego wydania ksi(cid:200)(cid:285)ki znajdziesz odpowiednio zmienion(cid:200) wersj(cid:218) tego podrozdzia(cid:239)u (w j(cid:218)zyku angielskim). Odno- (cid:258)nik do niego zamie(cid:258)cili(cid:258)my w dodatku E. Kup książkęPoleć książkę 8.4. (cid:146)(cid:200)czno(cid:258)(cid:202) Wi-Fi 189 8.4.1. Nak(cid:225)adka Arduino WiFi Nak(cid:239)adka Arduino WiFi umo(cid:285)liwia pod(cid:239)(cid:200)czenie p(cid:239)yty do dowolnej sieci bezprzewo- dowej typu 802.11b/g. Wykorzystuje modu(cid:239) bezprzewodowy H D Wireless HDG104, oferuj(cid:200)cy uzyskanie zoptymalizowanego, energooszcz(cid:218)dnego po(cid:239)(cid:200)czenia radiowego. Nak(cid:239)adka umo(cid:285)liwia komunikacj(cid:218) za pomoc(cid:200) protoko(cid:239)ów TCP i UDP, a jej u(cid:285)ycie jest bardzo proste i polega na zamontowaniu na p(cid:239)ycie Arduino i wpisaniu w szkicu kilku wierszy kodu wykorzystuj(cid:200)cego bibliotek(cid:218) WiFi. (cid:146)(cid:200)czówki nak(cid:239)adki posiadaj(cid:200) w górnej cz(cid:218)(cid:258)ci gniazda, umo(cid:285)liwiaj(cid:200)ce (cid:239)atwe wykorzystanie pinów Arduino albo za(cid:239)o- (cid:285)enie dodatkowych nak(cid:239)adek. Oprócz obs(cid:239)ugi sieci bezprzewodowych w standardzie 802.11b/g nak(cid:239)adka WiFi oferuje szyfrowanie WEP oraz WPA2. Po za(cid:239)adowaniu szkicu i skonfigurowaniu p(cid:239)yty Arduino mo(cid:285)na j(cid:200) od(cid:239)(cid:200)czy(cid:202) od komputera, zasili(cid:202) z zewn(cid:218)trznego (cid:283)ród(cid:239)a i zestawi(cid:202) dwukierunkow(cid:200) komunikacj(cid:218) z dowolnego miejsca w zasi(cid:218)gu routera bezprzewodowego. Ale to nie wszystko. Nak(cid:239)adka WiFi zawiera równie(cid:285) slot na kart(cid:218) microSD, który mo(cid:285)e by(cid:202) wykorzystany zarówno przez p(cid:239)yt(cid:218) Arduino Uno, jak i Mega, dzi(cid:218)ki prostej w u(cid:285)yciu bibliotece SD. Jest to bardzo przydatna funkcjonalno(cid:258)(cid:202), je(cid:285)eli zamierzasz zapisa(cid:202) dane, a nast(cid:218)pnie przes(cid:239)a(cid:202) je przez sie(cid:202). W podrozdziale 8.7 dowiesz si(cid:218) dok(cid:239)ad- nie, jak korzysta(cid:202) z biblioteki SD. Wa(cid:298)na informacja na temat pinów wej(cid:286)cia/wyj(cid:286)cia Nak(cid:225)adka Arduino WiFi oraz czytnik kart SD komunikuj(cid:261) si(cid:266) z Arduino za pomoc(cid:261) szyny SPI (opisanej ni(cid:298)ej w podrozdziale 8.6), któr(cid:261) cechuje kilka istotnych szczegó(cid:225)ów zwi(cid:261)za- nych z wykorzystaniem pinów wej(cid:286)cia/wyj(cid:286)cia. W p(cid:225)ycie Arduino Uno komunikacja jest realizowana na pinach nr 11, 12 i 13, natomiast w p(cid:225)ycie Mega na pinach nr 50, 51 i 52. W obu p(cid:225)ytach pin nr 10 jest u(cid:298)ywany do wy- brania do komunikacji uk(cid:225)adu HDG104, natomiast pin nr 4 do wybrania czytnika karty SD. Sprz(cid:266)towy pin SS w p(cid:225)ycie Mega (pin cyfrowy nr 53) nie jest u(cid:298)ywany ani przez czytnik kart, ani przez uk(cid:225)ad HDG104, ale musi by(cid:252) skonfigurowany jako wyj(cid:286)cie, aby interfejs SPI dzia(cid:225)a(cid:225) prawid(cid:225)owo. Pin cyfrowy nr 7 jest u(cid:298)ywany do przesy(cid:225)ania danych pomi(cid:266)dzy nak(cid:225)adk(cid:261) WiFi a Arduino. Bardzo wa(cid:298)ne jest wi(cid:266)c, aby (cid:298)aden z wymienionych wy(cid:298)ej pinów nie by(cid:225) wykorzystywany do innych operacji wej(cid:286)cia/ wyj(cid:286)cia. I wreszcie poniewa(cid:298) zarówno uk(cid:225)ad HDG104 w nak(cid:225)adce WiFi, jak równie(cid:298) czytnik kart SD korzystaj(cid:261) z tej samej szyny SPI, tylko jeden z komponentów mo(cid:298)e by(cid:252) aktywny w danej chwili. Je(cid:298)eli wykorzystywane s(cid:261) oba, biblioteki SD oraz WiFi realizuj(cid:261) ich ob- s(cid:225)ug(cid:266) automatycznie. Ale je(cid:298)eli jest wykorzystywany tylko jeden z nich, nale(cid:298)y jawnie odseparowa(cid:252) drugi (je(cid:298)eli nie jest u(cid:298)ywany czytnik kard SD, nale(cid:298)y go r(cid:266)cznie odse- parowa(cid:252)), jak pokazuje przyk(cid:225)adowy kod. Konstrukcja nak(cid:239)adki WiFi jest starannie przemy(cid:258)lana i oprócz nawi(cid:200)zywania po(cid:239)(cid:200)- cze(cid:241) bezprzewodowych oferuje szereg przydatnych funkcjonalno(cid:258)ci. Jej budowa jest ca(cid:239)kowicie otwarta. Nak(cid:239)adka jest wyposa(cid:285)ona w port Micro-USB na potrzeby przysz(cid:239)ych aktualizacji wbudowanego oprogramowania. Zawiera równie(cid:285) seri(cid:218) diod LED dostar- czaj(cid:200)cych przydatnych informacji, takich jak status po(cid:239)(cid:200)czenia (zielona dioda LINK), b(cid:239)(cid:218)dy transmisji (czerwona dioda ERROR) i wysy(cid:239)anie lub odbieranie danych (niebie- ska dioda DATA). Kup książkęPoleć książkę 190 ROZDZIA(cid:224) 8. Komunikacja JAK U(cid:297)YWA(cid:251) NAK(cid:224)ADKI WIFI ZE STARSZYMI P(cid:224)YTAMI ARDUINO? Nak(cid:239)adka WiFi wykorzystuje pin IOREF, dost(cid:218)pny w nowszych wersjach p(cid:239)yty Arduino, do wykrywania napi(cid:218)cia odniesienia dla pinów wej(cid:258)cia/wyj(cid:258)cia, do których jest pod- (cid:239)(cid:200)czona. Oznacza to, (cid:285)e w przypadku zastosowania p(cid:239)yty Arduino Uno lub Mega2560 w wersji wcze(cid:258)niejszej ni(cid:285) REV3 trzeba koniecznie zewrze(cid:202) piny nak(cid:239)adki IOREF oraz 3.3V (pokazane na rysunku 8.4). Rysunek 8.4. Uk(cid:225)ad pinów nak(cid:225)adki WiFi 8.4.2. Biblioteka WiFi i jej funkcje Biblioteka WiFi realizuje niskopoziomow(cid:200) komunikacj(cid:218) bezprzewodow(cid:200) i obs(cid:239)uguje wiele polece(cid:241) i funkcjonalno(cid:258)ci oferowanych przez nak(cid:239)adk(cid:218). W tym miejscu warto zapozna(cid:202) si(cid:218) z tabel(cid:200) 8.5, zawieraj(cid:200)c(cid:200) przegl(cid:200)d najwa(cid:285)niej- szych funkcji z biblioteki WiFi. Po przejrzeniu tabeli 8.5 mo(cid:285)esz przej(cid:258)(cid:202) do opisu przyk(cid:239)adowego projektu, w którym przez sie(cid:202) bezprzewodow(cid:200) b(cid:218)d(cid:200) przesy(cid:239)ane dane z czujnika gestów. Kup książkęPoleć książkę 8.4. (cid:146)(cid:200)czno(cid:258)(cid:202) Wi-Fi 191 Tabela 8.5. Przegl(cid:261)d funkcji klas WiFi, WiFiServer oraz WiFiClient Funkcja Opis WiFi.begin() WiFi.begin(char[] ssid) WiFi.begin(char[] ssid, (cid:180)char[] haslo) WiFi.begin(char[] ssid, int iindeksKlucza, char[] klucz) WiFi.disconnect() WiFi.SSID() WiFi.BSSID(bssid) WiFi.RSSI() WiFi.encryptionType() WiFi.encryptionType (cid:180)(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() Inicjuje bibliotek(cid:266) WiFi i rozpoczyna komunikacj(cid:266) z urz(cid:261)dzeniem. Umo(cid:298)liwia pod(cid:225)(cid:261)czenie do dowolnej otwartej sieci, jak równie(cid:298) do sieci zabezpieczonej z szyfrowaniem WPA po podaniu identyfikatora SSID i has(cid:225)a oraz sieci z szyfrowaniem WEP po podaniu indeksu i klucza (w szyfrowaniu WEP mog(cid:261) by(cid:252) zastosowane cztery klucze, dlatego trzeba poda(cid:252) jego indeks). Funkcja zwraca status po(cid:225)(cid:261)czenia z sieci(cid:261) WiFi. Od(cid:225)(cid:261)cza si(cid:266) od bie(cid:298)(cid:261)cej sieci. Odczytuje identyfikator SSID bie(cid:298)(cid:261)cej sieci i zwraca go jako ci(cid:261)g znaków typu String. Odczytuje adres MAC routera, z którym jest nawi(cid:261)zane po(cid:225)(cid:261)czenie, i umieszcza go w 6-bajtowej tabeli przekazanej jako argument (na przyk(cid:225)ad byte bssid[6]). Zwraca si(cid:225)(cid:266) sygna(cid:225)u po(cid:225)(cid:261)czenia jako liczb(cid:266) typu Long. Zwraca rodzaj szyfrowania bie(cid:298)(cid:261)cego (lub wskazanego) punktu dost(cid:266)powego. Zwracana warto(cid:286)(cid:252) jest typu byte. W przypadku szyfrowania TKIP (WPA) = 2, WEP = 5, CCMP (WPA) = 4, NONE = 7, AUTO = 8. Zwraca warto(cid:286)(cid:252) typu byte zawieraj(cid:261)c(cid:261) liczb(cid:266) wykrytych sieci bezprzewodowych. Zwraca pierwsze dost(cid:266)pne gniazdo po(cid:225)(cid:261)czenia. Zwraca 6-bajtow(cid:261) tabel(cid:266) zawieraj(cid:261)c(cid:261) adres MAC nak(cid:225)adki WiFi. Zwraca adres IP nak(cid:225)adki (jako obiekt typu IPAddress). Zwraca mask(cid:266) podsieci nak(cid:225)adki (jako obiekt typu IPAddress). Zwraca adres IP bramy (jako obiekt typu IPAddress). Tworzy serwer nas(cid:225)uchuj(cid:261)cy na zadanym porcie. Uruchamia serwer oczekuj(cid:261)cy na komunikaty. Zwraca obiekt klienta, je(cid:298)eli s(cid:261) ju(cid:298) odebrane od niego dane. Wysy(cid:225)a dane (typu byte lub char) do wszystkich do(cid:225)(cid:261)czonych klientów. Wysy(cid:225)a dane do wszystkich klientów. Liczby s(cid:261) wysy(cid:225)ane jako ci(cid:261)gi znaków ASCII, na przyk(cid:225)ad liczba 123 jest wysy(cid:225)ana jako ci
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:


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ą: