Raspberry Pi
Receptury
Raspberry
Pi sukcesywnie zdobywa coraz więcej użytkowników. Dla
niektórych jest to sposób na realizację życiowych
pasji, dla innych - praktyczny, tani komputer, który może
pracować pod kontrolą Linuksa i pełnić funkcję platformy obsługującej
przeróżne urządzenia elektroniczne. Skupiona
wokół Raspberry Pi społeczność nieprzerwanie tworzy nowe
oprogramowanie oraz płytki interfejsów. To wszystko sprawia,
że możliwości Raspberry stale rosną. Pojawiające się technologie przy
odrobinie kreatywności mogą łatwo przeobrazić się w praktyczne i
niedrogie, a przy tym zdecydowanie innowacyjne i nowoczesne rozwiązania.
To zaktualizowane wydanie znakomitego zbioru receptur ułatwiających
wykorzystanie potencjału Raspberry Pi. Uwzględniono tu nowe modele tego
komputera, a także zmiany i ulepszenia systemu operacyjnego Raspbian.
Dodano rozdziały traktujące o dźwięku i automatyce domowej. Te
receptury bez trudu wykorzystasz dla zwiększenia wygody we własnym
domu. Dzięki lekturze poznasz podstawowe reguły tej technologii, aby
łatwiej zrozumieć zagadnienia dotyczące konkretnej płytki czy kodu. Z
tej pozycji możesz korzystać podobnie jak z książki kucharskiej:
przeczytać od deski do deski albo skupić się na rozwiązaniu jednego,
konkretnego problemu. Być może docenisz, że w recepturach dotyczących
sprzętu uwzględniono przede wszystkim rozwiązania niewymagające
lutowania obwodów.
W
tej książce znajdziesz receptury, dzięki którym:
- rozpoczniesz pracę z
Raspberry Pi, również w sieci
- zaprogramujesz Raspberry
Pi w języku Python
- wykorzystasz technologię
rozpoznawania obrazów
- będziesz sterować pracą
silników, czujników i innych elementów
elektroniki
- połączysz Raspberry Pi z
różnymi urządzeniami wejściowymi
- podłączysz swój
dom do internetu rzeczy
Wstęp
do wydania trzeciego 15
1.
Podłączanie
i konfiguracja 19
1.0. Wprowadzenie 19
1.1. Wybór modelu Raspberry Pi 19
1.2. Podłączanie urządzeń zewnętrznych do Raspberry Pi 22
1.3. Zamknięcie Raspberry Pi w obudowie 24
1.4. Wybór zasilacza 26
1.5. Wybór dystrybucji systemu operacyjnego 29
1.6. NOOBS - zapis na kartę mikro-SD 30
1.7. Instalacja systemu operacyjnego bez NOOBS 34
1.8. Użycie PiBakery do konfiguracji i zapisu karty SD 35
1.9. Użycie PiBakery do konfiguracji Raspberry Pi bez monitora 37
1.10. Uruchamianie systemu z zewnętrznego dysku twardego lub z
pendrive'a 39
1.11. Podłączanie monitora wyposażonego w interfejs DVI lub VGA 42
1.12. Korzystanie z telewizora lub monitora podłączonego za
pośrednictwem złącza composite video 42
1.13. Zmiana rozmiaru obrazu wyświetlanego na monitorze 44
1.14. Maksymalizacja wydajności 46
1.15. Zmiana hasła 48
1.16. Wyłączanie Raspberry Pi 50
1.17. Instalacja modułu kamery 51
1.18. Użycie Bluetootha 55
2.
Praca w sieci 59
2.0. Wprowadzenie 59
2.1. Łączenie z siecią przewodową 59
2.2. Ustalanie własnego adresu IP 61
2.3. Przypisywanie stałego adresu IP 62
2.4. Zmiana nazwy, pod którą Raspberry Pi jest widoczne w
sieci 65
2.5. Nawiązywanie połączenia z siecią bezprzewodową 68
2.6. Korzystanie z kabla konsolowego 70
2.7. Zdalne sterowanie Raspberry Pi za pomocą protokołu SSH 74
2.8. Sterowanie Raspberry Pi za pomocą VNC 76
2.9. Zdalne sterowanie Raspberry Pi za pomocą zdalnego pulpitu 78
2.10. Udostępnianie plików w sieci komputerów
Macintosh 79
2.11. Używanie Raspberry Pi jako magazynu NAS 81
2.12. Drukowanie sieciowe 84
3.
System
operacyjny 87
3.0. Wprowadzenie 87
3.1. Przenoszenie plików w interfejsie graficznym 87
3.2. Kopiowanie plików na pamięć USB 89
3.3. Uruchamianie sesji Terminala 90
3.4. Przeglądanie plików i folderów za pomocą
Terminala 91
3.5. Kopiowanie plików i folderów 95
3.6. Zmiana nazwy pliku lub folderu 96
3.7. Edycja pliku 96
3.8. Oglądanie zawartości pliku 99
3.9. Tworzenie plików bez użycia edytora 99
3.10. Tworzenie katalogów 100
3.11. Kasowanie plików i katalogów 100
3.12. Wykonywanie zadań z uprawnieniami administratora 101
3.13. Co oznaczają atrybuty plików? 102
3.14. Modyfikacja atrybutów plików 104
3.15. Zmiana właściciela pliku 105
3.16. Wykonywanie zrzutów ekranu 106
3.17. Instalacja oprogramowania za pomocą polecenia apt-get 107
3.18. Usuwanie zainstalowanego oprogramowania za pomocą polecenia
apt-get 108
3.19. Instalowanie bibliotek Pythona za pomocą Pip 108
3.20. Pobieranie plików za pomocą wiersza poleceń 109
3.21. Pobieranie kodu źródłowego za pomocą polecenia git 110
3.22. Pobieranie materiałów pomocniczych do tej książki 112
3.23. Automatyczne uruchamianie programu lub skryptu przy starcie
Raspberry Pi 115
3.24. Automatyczne uruchamianie programu lub skryptu jako usługi 116
3.25. Automatyczne uruchamianie programu lub skryptu w regularnych
odstępach czasu 118
3.26. Wyszukiwanie 119
3.27. Korzystanie z historii wiersza poleceń 120
3.28. Monitorowanie aktywności procesora 122
3.29. Obsługa archiwów 124
3.30. Wyświetlanie listy podłączonych urządzeń USB 124
3.31. Zapisywanie w pliku komunikatów wyświetlanych w
wierszu poleceń 125
3.32. Łączenie plików 126
3.33. Korzystanie z potoków 126
3.34. Ukrywanie danych wyjściowych wyświetlanych w oknie Terminala 127
3.35. Uruchamianie programów w tle 128
3.36. Tworzenie aliasów poleceń 129
3.37. Ustawianie daty i godziny 129
3.38. Ustalanie ilości wolnego miejsca na karcie pamięci 130
3.39. Sprawdzanie wersji systemu operacyjnego 131
3.40. Aktualizacja systemu Raspbian 132
4.
Oprogramowanie 133
4.0. Wprowadzenie 133
4.1. Tworzenie multimedialnego centrum rozrywki 133
4.2. Instalowanie oprogramowania biurowego 135
4.3. Uruchamianie serwera kamery internetowej 136
4.4. Uruchamianie emulatora klasycznej konsoli do gier 138
4.5. Uruchamianie gry Minecraft 140
4.6. Raspberry Pi jako nadajnik radiowy 141
4.7. Edycja grafiki rastrowej 143
4.8. Edycja grafiki wektorowej 144
4.9. Radio internetowe 145
5.
Podstawy Pythona 147
5.0. Wprowadzenie 147
5.1. Wybór pomiędzy Pythonem 2 a 3 147
5.2. Edytowanie programów Pythona z Mu 148
5.3. Korzystanie z konsoli Pythona 152
5.4. Uruchamianie programów napisanych w Pythonie za pomocą
Terminala 153
5.5. Zmienne 155
5.6. Wyświetlanie danych generowanych przez program 155
5.7. Wczytywanie danych wprowadzonych przez użytkownika 156
5.8. Działania arytmetyczne 157
5.9. Tworzenie łańcuchów 157
5.10. Scalanie (łączenie) łańcuchów 158
5.11. Konwersja liczb na łańcuchy 159
5.12. Konwersja łańcuchów na liczby 160
5.13. Ustalanie długości łańcucha 161
5.14. Ustalanie pozycji łańcucha w łańcuchu 161
5.15. Wydobywanie fragmentu łańcucha 162
5.16. Zastępowanie fragmentu łańcucha innym łańcuchem 163
5.17. Zamiana znaków łańcucha na wielkie lub małe litery 163
5.18. Uruchamianie poleceń po spełnieniu określonych
warunków 164
5.19. Porównywanie wartości 166
5.20. Operatory logiczne 167
5.21. Powtarzanie instrukcji określoną liczbę razy 168
5.22. Powtarzanie instrukcji do momentu, w którym zostanie
spełniony określony warunek 169
5.23. Przerywanie działania pętli 169
5.24. Definiowanie funkcji 170
6.
Python
- listy i słowniki 173
6.0. Wprowadzenie 173
6.1. Tworzenie list 173
6.2. Uzyskiwanie dostępu do elementu znajdującego się na liście 174
6.3. Ustalanie długości listy 175
6.4. Dodawanie elementów do listy 175
6.5. Usuwanie elementów z listy 176
6.6. Tworzenie listy w wyniku przetwarzania łańcucha 177
6.7. Iteracja listy 178
6.8. Numerowanie elementów listy 178
6.9. Sortowanie listy 179
6.10. Wycinanie fragmentu listy 180
6.11. Przetwarzanie elementów listy przez funkcję 181
6.12. Tworzenie słownika 182
6.13. Uzyskiwanie dostępu do elementów znajdujących się w
słowniku 183
6.14. Usuwanie elementów ze słownika 184
6.15. Iteracja słownika 185
7.
Python
- zaawansowane funkcje 187
7.0. Wprowadzenie 187
7.1. Formatowanie liczb 187
7.2. Formatowanie dat 188
7.3. Zwracanie więcej niż jednej wartości 189
7.4. Definiowanie klasy 190
7.5. Definiowanie metody 191
7.6. Dziedziczenie 192
7.7. Zapis danych w pliku 193
7.8. Odczytywanie pliku 194
7.9. Serializacja 195
7.10. Obsługa wyjątków 196
7.11. Stosowanie modułów 197
7.12. Liczby losowe 199
7.13. Wysyłanie żądań do sieci Web 200
7.14. Argumenty Pythona w wierszu poleceń 201
7.15. Uruchamianie poleceń Linuxa z Pythona 202
7.16. Wysyłanie wiadomości pocztą elektroniczną z poziomu aplikacji
Pythona 202
7.17. Prosty serwer sieci Web napisany w Pythonie 204
7.18. Usypianie programu Pythona 205
7.19. Wykonywanie kilku zadań naraz 206
7.20. Python i Minecraft Pi 207
7.21. Przetwarzanie danych do formatu JSON 209
7.22. Tworzenie interfejsu użytkownika 211
7.23. Wyszukiwanie tekstu za pomocą wyrażeń regularnych 212
7.24. Sprawdzanie poprawności wprowadzanych danych przy użyciu wyrażeń
regularnych 215
7.25. Pozyskiwanie danych ze stron internetowych przy użyciu wyrażeń
regularnych 216
8.
Rozpoznawanie
obrazów 219
8.0. Wprowadzenie 219
8.1. Instalacja programu SimpleCV 219
8.2. Ustawienie kamery USB do rozpoznawania obrazów 220
8.3. Użycie modułu kamery do Raspberry Pi do rozpoznawania
obrazów 222
8.4. Liczenie monet 223
8.5. Wykrywanie twarzy 227
8.6. Wykrywanie ruchu 228
8.7. Optyczne rozpoznawanie znaków 231
9.
Podstawowy
sprzęt elektroniczny 233
9.0. Wprowadzenie 233
9.1. Styki złącza GPIO 233
9.2. Bezpieczne korzystanie ze złącza GPIO 235
9.3. Konfiguracja magistrali I2C 236
9.4. Korzystanie z narzędzi I2C 239
9.5. Przygotowanie do pracy interfejsu SPI 240
9.6. Instalowanie biblioteki PySerial pozwalającej na korzystanie z
portu szeregowego przez aplikacje Pythona 242
9.7. Testowanie portu szeregowego za pomocą aplikacji Minicom 243
9.8. Łączenie Raspberry Pi z płytką prototypową za pomocą
przewodów połączeniowych 244
9.9. Łączenie modułu Pi Cobbler z płytką prototypową 245
9.10. Użycie Raspberry Squid 247
9.11. Użycie przycisku Raspberry Squid 249
9.12. Zmniejszanie napięcia sygnałów z 5 do 3,3 V za pomocą
dwóch rezystorów 250
9.13. Korzystanie z modułu przetwornika obniżającego napięcie
sygnałów z 5 do 3,3 V 252
9.14. Zasilanie Raspberry Pi za pomocą baterii 253
9.15. Zasilanie Raspberry Pi za pomocą akumulatora litowo-polimerowego
(LiPo) 255
9.16. Rozpoczęcie pracy z Sense HAT 256
9.17. Rozpoczęcie pracy z Explorer HAT Pro 258
9.18. Rozpoczynanie pracy z płytką RaspiRobot 259
9.19. Używanie płytki prototypowej Pi Plate 261
9.20. Tworzenie HAT 265
9.21. Pi Zero i Pi Zero W 268
10.
Sterowanie
sprzętem elektronicznym 271
10.0. Wprowadzenie 271
10.1. Podłączanie diody LED 271
10.2. Pozostawienie pinów GPIO w bezpiecznym stanie 274
10.3. Regulacja jasności diody LED 275
10.4. Sterowanie pracą urządzenia o dużej mocy zasilanego prądem stałym
za pośrednictwem tranzystora 277
10.5. Włączanie urządzeń o dużej mocy za pomocą przekaźnika 279
10.6. Sterowanie urządzeniami zasilanymi wysokim napięciem przemiennym
282
10.7. Sterowanie sprzętem za pomocą Androida i Bluetootha 283
10.8. Tworzenie interfejsu pozwalającego na włączanie i wyłączanie
elektroniki podłączonej do Raspberry Pi 287
10.9. Tworzenie interfejsu użytkownika pozwalającego na sterowanie mocą
diod i silników za pomocą modulacji czasu trwania impulsu 288
10.10. Zmiana koloru diody RGB LED 289
10.11. Stosowanie analogowego woltomierza w charakterze wyświetlacza
wskazówkowego 292
11.
Silniki 295
11.0. Wprowadzenie 295
11.1. Sterowanie pracą serwomotoru 295
11.2. Dokładne sterowanie serwomotorami 300
11.3. Sterowanie pracą wielu serwomotorów 302
11.4. Sterowanie prędkością obrotową silnika zasilanego prądem stałym
305
11.5. Zmienianie kierunku obrotów silnika zasilanego prądem
stałym 307
11.6. Używanie unipolarnych silników krokowych 310
11.7. Korzystanie z bipolarnych silników krokowych 314
11.8. Sterowanie pracą bipolarnego silnika krokowego za pomocą Stepper
Motor HAT 316
11.9. Sterowanie pracą bipolarnego silnika krokowego za pośrednictwem
płytki RasPiRobot 317
11.10. Budowa prostego jeżdżącego robota 319
12.
Cyfrowe
wejścia 323
12.0. Wprowadzenie 323
12.1. Podłączanie przełącznika chwilowego 323
12.2. Korzystanie z przełącznika chwilowego 326
12.3. Korzystanie z dwupozycyjnego przełącznika bistabilnego lub
suwakowego 328
12.4. Korzystanie z przełącznika trójpozycyjnego 329
12.5. Redukcja drgań styków powstających podczas wciskania
przycisku 332
12.6. Korzystanie z zewnętrznego rezystora podciągającego 334
12.7. Korzystanie z (kwadrantowego) enkodera obrotowego 335
12.8. Korzystanie z bloku klawiszy 338
12.9. Wykrywanie ruchu 341
12.10. Raspberry Pi i moduł GPS 343
12.11. Wprowadzanie danych z klawiatury 347
12.12. Przechwytywanie ruchów myszy 348
12.13. Korzystanie z modułu zegara czasu rzeczywistego 349
12.14. Dodanie włącznika do Raspberry Pi 353
13.
Czujniki
357
13.0. Wprowadzenie 357
13.1. Korzystanie z czujników rezystancyjnych 357
13.2. Pomiar jasności światła 361
13.3. Pomiar temperatury za pomocą termistora 362
13.4. Wykrywanie metanu 364
13.5. Pomiar stężenia dwutlenku węgla 367
13.6. Pomiar napięcia 369
13.7. Stosowanie dzielnika napięcia 372
13.8. Podłączanie rezystancyjnego czujnika do przetwornika
analogowo-cyfrowego 374
13.9. Pomiar temperatury za pomocą przetwornika analogowo-cyfrowego 376
13.10. Pomiar temperatury procesora Raspberry Pi 378
13.11. Pomiar temperatury, wilgotności i ciśnienia za pomocą Sense HAT
379
13.12. Pomiar temperatury za pomocą cyfrowego czujnika 381
13.13. Pomiar przyspieszenia przy użyciu modułu MMA8452Q 384
13.14. Wyznaczanie magnetycznej północy przy użyciu Sense
HAT 388
13.15. Wykorzystanie inercyjnej jednostki zarządzania nakładki Sense
HAT 389
13.16. Wykrywanie magnesu przy użyciu kontraktonu 390
13.17. Wykrywanie magnesu przy użyciu nakładki Sense HAT 391
13.18. Pomiar odległości przy użyciu ultradźwiękowego dalmierza 392
13.19. Pomiar odległości przy użyciu czujnika Time-of-Flight 395
13.20. Pojemnościowy czujnik dotyku 397
13.21. Odczyt kart elektronicznych przy użyciu RFID 399
13.22. Wyświetlanie mierzonych wielkości 402
13.23. Zapisywanie danych do dziennika utworzonego w pamięci USB 404
14.
Wyświetlacze
407
14.0. Wprowadzenie 407
14.1. Korzystanie z czterocyfrowego wyświetlacza LED 407
14.2. Wyświetlanie komunikatów za pomocą wyposażonego w
interfejs I2C wyświetlacza składającego się z matrycy diod LED 409
14.3. Korzystanie z wyświetlacza składającego się z matrycy diod LED na
nakładce Sense HAT 411
14.4. Wyświetlanie komunikatów na alfanumerycznej nakładce
LCD HAT 414
14.5. Korzystanie z wyświetlacza OLED 416
14.6. Korzystanie z taśmy LED RGB 418
14.7. Korzystanie z nakładki Unicorn HAT firmy Pimoroni 421
14.8. Korzystanie z papieru elektronicznego 423
15.
Dźwięk
425
15.0. Wprowadzenie 425
15.1. Podłączenie głośnika 425
15.2. Kontrolowanie wyjścia audio 427
15.3. Odtwarzanie dźwięku z linii poleceń 429
15.4. Odtwarzanie dźwięku za pomocą Pythona 429
15.5. Użycie mikrofonu na USB 430
15.6. Generowanie brzęczącego dźwięku 433
16.
Internet
rzeczy 435
16.0. Wprowadzenie 435
16.1. Sterowanie złączem GPIO za pomocą sieci Web 435
16.2. Wyświetlanie odczytów czujników na stronie
internetowej 439
16.3. Rozpoczęcie pracy z Node-RED 442
16.4. Wysyłanie powiadomień z użyciem IFTTT 446
16.5. Wysyłanie tweetów za pomocą ThingSpeak 450
16.6. CheerLights 452
16.7. Wysyłanie odczytów czujnika do ThingSpeak 453
16.8. Odpowiadanie na tweety przy użyciu Dweet i IFTTT 456
17.
Inteligentny dom 461
17.0. Wprowadzenie 461
17.1. Raspberry Pi jako Message Broker 461
17.2. Korzystanie z Node-RED i MQTT 464
17.3. Wgrywanie nowego oprogramowania układowego na bezprzewodowy
przełącznik Sonoff Wi-Fi Smart Switch 469
17.4. Konfiguracja przełącznika Sonoff Wi-Fi Smart Switch 475
17.5. Użycie przełącznika Sonoff z MQTT 477
17.6. Użycie przełącznika Sonoff z Node-RED 480
17.7. Panel sterowania w Node-RED 483
17.8. Planowanie zdarzeń z Node-RED 487
17.9. Publikowanie wiadomości MQTT z WeMos D1 489
17.10. Użycie WeMos D1 z Node-RED 492
18.
Raspberry
Pi i Arduino 495
18.0. Wprowadzenie 495
18.1. Programowanie Arduino za pośrednictwem Raspberry Pi 496
18.2. Komunikacja z Arduino za pośrednictwem monitora portu szeregowego
498
18.3. Sterowanie Arduino za pomocą biblioteki PyFirmata zainstalowanej
na Raspberry Pi 500
18.4. Sterowanie pracą cyfrowych wyjść Arduino za pomocą Raspberry Pi
502
18.5. Sterowanie Arduino za pomocą biblioteki PyFirmata za
pośrednictwem portu szeregowego 504
18.6. Odczytywanie danych z cyfrowych wejść Arduino za pomocą
biblioteki PyFirmata 506
18.7. Odczytywanie danych z analogowych wejść Arduino za pomocą
biblioteki PyFirmata 508
18.8. Obsługa wyjść analogowych (PWM) za pomocą biblioteki PyFirmata 510
18.9. Sterowanie pracą serwomotoru za pomocą biblioteki PyFirmata 512
18.10. Podłączanie do Raspberry Pi mniejszych płytek Arduino 514
18.11. Korzystanie z płytki z wbudowanym Wi-Fi (ESP8266) 515
A. Komponenty i dystrybutorzy 519
B. Piny Raspberry Pi 525
528
stron, Format: 17.0x24.0cm, oprawa miękka