Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

Teraz jest 18 gru 2014, o 20:26


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 16 ] 
Autor Wiadomość
 Tytuł: Raspberry Pi
PostNapisane: 11 sie 2013, o 15:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 cze 2012
Posty: 135
Pomógł: 0

Obrazek

Witam, wczoraj dostałem do zabawy i poznania Raspberry Pi w wersji drugiej nazywaną wersją "B".
Kiedyś słyszałem coś o tej płytce, że tani komputer, że wielkości karty kredytowej, że linux, itd.
Od wczoraj mam okazję trzymać Raspberry Pi w swoich rękach i coś nie coś o nim powiedzieć.
Oczywiście czytający ten temat nie koniecznie będą podzielać moje wypowiedzi z prostej przyczyny
jaką jest moje osobiste podejście do tego modułu. Z pewnością nie jest to komputer klasy PC,
na którym możemy swobodnie wykonywać popularne zadania jak odtwarzanie multimediów
czy też granie w gry, Raspberry Pi mimo że radzi sobie z tymi elementami to odbywa się to
w tak wolnym tempie że właściwie przestaje mieć sens takie użytkowanie. Jako przeglądarka
internetowa mógłby się nadać jeśli nie mamy na myśli odtwarzania filmików online, ale za to
przeglądanie forum, poczty, wiadomości, pogody, portali aukcyjnych jak najbardziej.
Płytka rzeczywiście ma wymiary zbliżone do karty kredytowej co jest fajną zaletą ze względu
na możliwość zamontowania Raspberry Pi w praktycznie dowolnym miejscu. Na rynku pokazały się
różnego rodzaju obudowy, które są łatwo dostępne i nie drogie, niektóre wyglądają naprawdę ciekawie.
Użytkownicy wykonują także obudowy samodzielnie z różnych materiałów, plastik, pleksa, drewno, metal,
widziałem też obudowę wykonaną z klocków lego. Raspberry Pi nie jest jakąś wyprodukowaną i szybko
zapomnianą platformą, zdecydowanie jest popularny i w sieci znajdziemy wiele ciekawych projektów
opartych na Raspberry Pi, poradniki opisujące jego możliwości, przykłady pisania programów,
możemy też dokupić różne dedykowane akcesoria do rozbudowy Raspberry Pi.

Obrazek

Mnie najbardziej zainteresowała możliwość swobodnego sterowania wyściami I/O,
które można programować wprost z poziomu Raspberry Pi podłączając do niego monitor i klawiaturę,
w dodatku do wyboru jest kilka języków i dla każdego znajdziemy wsparcie w sieci.
O takim właśnie wykorzystaniu Raspberry Pi chciałbym opowiedzieć w tym temacie,
być może kogoś zaciekawi ta płytka i sam kiedyś będzie miał ją ochotę wypróbować.
Jako że nie jestem mocno obeznany w Raspberry Pi to też przy opisywaniu kolejnych kroków
liczę na ewentualne wsparcie użytkowników znających tą tematykę, podpowiedzi, wskazówki,
w ten sposób całkiem możliwe że powstanie tutaj bardzo ładny poradnik dla Raspberry Pi.

Kolejne kroki z wystartowaniem Raspberry Pi będę opisywał kolejno w tym temacie, dlatego proszę
w tej chwili o pisanie postów dotyczących tego tematu w nowych wątkach, tak aby zachować
tutaj ciągłość kolejnych kroków.


Góra
 Zobacz profil  
 
PostNapisane: 11 sie 2013, o 15:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 cze 2012
Posty: 135
Pomógł: 0

Na początek kilka zdjęć Raspberry Pi wersja B żeby każdy zobaczył z czym będziemy tu mieli do czynienia.

Obrazek

Obrazek

Obrazek

Obrazek

Obrazek

Obrazek

Obrazek

Obrazek

Obrazek

Obrazek

Obrazek

Obrazek

Obrazek

Obrazek

Obrazek


Góra
 Zobacz profil  
 
PostNapisane: 11 sie 2013, o 15:40 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 cze 2012
Posty: 135
Pomógł: 0

Uruchomienie Raspberry Pi wymaga oczywiście podłączenie napięcia zasilającego, karty SD na którą zainstalujemy system,
monitora lub telewizora, klawiatury i myszki, jeśli chcemy mieć dostęp do internetu to będzie potrzebny także kabelek ethernetowy.
Jeśli chodzi o zasilanie to ja użyłem do tego ładowarki od telefonu komórkowego, karta SD powinna mieć minimum 4GB pojemności
i takiej właśnie karty użyję, monitor lub telewizor musi posiadać port HDMI lub RCA gdzie w moim przypadku
będzie to telewizor z wejściem HDMI, klawiatura i myszka dowolne z wtyczkami USB.

Obrazek

Obrazek

Obrazek

Obrazek

Obrazek

Obrazek

Mój Raspberry Pi tak będzie wyglądał gotowy do uruchomienia

Obrazek


Góra
 Zobacz profil  
 
PostNapisane: 11 sie 2013, o 20:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 cze 2012
Posty: 135
Pomógł: 0

Czas przygotować kartę pamięci czyli załadować system na którym będziemy pracować z Raspberry Pi.
Zaczynamy od ściągnięcia obrazu NOOBS ze strony http://downloads.raspberrypi.org/noobs
W czasie kiedy ściąga się obraz systemu możemy sformatować kartę pamięci. Zrobimy to za pomocą
programu SDFormatter, który ściągamy ze strony https://www.sdcard.org/downloads/formatter_4/
Proces formatowania karty pamięci przedstawiłem na poniższych screenach

Obrazek

Obrazek

Obrazek

Obrazek

Obrazek

Obrazek

Kiedy karta została sformatowana i mamy ściągnięty obraz systemu możemy wrzucić go na kartę.
Robimy to w bardzo prosty sposób, ściągnięty plik obrazu to spakowane archiwum zip, którego
zawartość należy wrzucić bezpośrednio na kartę pamięci

Obrazek

Karta pamięci jest przygotowana do pracy. Od teraz możemy uruchomić Raspberry Pi, przedstawię to w kolejnym poście.


Góra
 Zobacz profil  
 
PostNapisane: 11 sie 2013, o 21:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 cze 2012
Posty: 135
Pomógł: 0

Poniższe zdjęcia są słabej jakości ponieważ zrobione były na telewizorze, jednak są w pełni czytelne
i mam nadzieję że wystarczą do zobrazowania etapu uruchomienia Raspberry Pi.

Przy pierwszym uruchomieniu Raspberry Pi zostaniemy zapytani o wybór systemu linux, tutaj zgadzamy się na wybór
rekomendowany i zatwierdzamy przyciskiem Install OS

Obrazek

Po zatwierdzeniu zostaniemy ostrzeżeni o usunięciu danych z karty w celu instalacji systemu, oczywiście zgadzamy się

Obrazek

Od tego momentu rozpoczyna się instalacja systemu na karcie pamięci

Obrazek

Kiedy proces instalacji się zakończy, zostaniemy o tym poinformowani

Obrazek

Raspberry Pi zrestartuje się i uruchomi okno wstępnej konfiguracji, w tej chwili niczego nie zmieniamy,
będziemy to mogli wykonać później, klawiszem TAB wybieramy <Finish>

Obrazek

System został uruchomiony w domyślnej formie tekstowej

Obrazek

Uruchomimy sobie teraz graficzny interfejs wydając polecenie startx

Obrazek

No i gotowe, Raspberry Pi uruchomiony, możemy wstępnie zapoznać się z pulpitem

Obrazek

Jeśli mamy Raspberry Pi podłączone do routera i mamy standardowe ustawienia sieci domowej
tzn bez proxy itp to powinno zostać automatycznie ustawione połączenie sieciowe,
w takim przypadku możemy stronę naszego forum zobaczyć wprost z Raspberry Pi

Obrazek


Góra
 Zobacz profil  
 
PostNapisane: 12 sie 2013, o 18:40 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 cze 2012
Posty: 135
Pomógł: 0

Witam, dziś postaram się trochę więcej napisać, zacznę od spolszczenia Raspberry Pi. Nie chodzi tutaj o brak umiejętności
przetłumaczenia sobie kilku prostych słówek Open lub Close, ale o to że przyjemniej się patrzy na tekst napisany
w naszym ojczystym języku. Zanim jednak to zrobimy wspomnę jeszcze o automatycznym uruchamianiu Raspberry Pi
w trybie graficznym. Po kolejnym uruchomieniu systemu znowu musimy wpisać startx bo domyślnie uruchomi się tylko
tryb tekstowy. Jeśli Raspberry Pi zapyta nas o hasło dla domyślnego użytkownika pi to jest nim raspberry.
W celu ustawienia automatycznego uruchomienia trybu graficznego wpisujemy polecenie raspi-config poprzedzone prawami
administratora czyli sudo raspi-config, ujrzymy widziany już wcześniej ekran początkowej konfiguracji Raspberry Pi.
Od razu wybieramy interesującą nas pozycję i zatwierdzamy.

Obrazek

Obrazek

Obrazek

Od teraz kolejne uruchomienie Raspberry Pi będzie automatycznie włączało tryb graficzny.
Kolejną rzeczą którą chcemy wykonać to spolszczenie Raspberry Pi. W tym celu wybieramy
kolejne pozycje z menu konfiguracyjnego zgodnie z przedstawionymi zdjęciami

Obrazek

Obrazek

Z przewijanej listy wybieramy interesującą nas pozycję zaznaczając ją spacją, tak aby w nawiasach kwadratowych
pokazał się znak gwiazdki, następnie klawiszem TAB przechodzimy do zatwierdzenia wyboru <OK>

Obrazek

Oprócz spolszczenia systemu przyda się także ustawić odpowiadający nam układ klawiatury

Obrazek

Obrazek

Obrazek

Obrazek

Obrazek

Obrazek

Obrazek

Obrazek

Gotowe, teraz mamy Raspberry Pi w polskiej wersji językowej z domyślnym dla nas układem klawiatury.

Obrazek

Obrazek


Góra
 Zobacz profil  
 
PostNapisane: 12 sie 2013, o 20:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 cze 2012
Posty: 135
Pomógł: 0

Dobrym pomysłem będzie uruchomienie zdalnego dostępu do Raspberry Pi. Dla osób posiadających monitor przeznaczony
właściwie wyłącznie do pracy z Raspberry Pi może wydawać się ta funkcjonalność zbędna, jednak niektórzy nie posiadają
monitora z przeznaczeniem dla Raspberry Pi i ciągłe podłączanie się do telewizora męczy nie tylko samych użytkowników
Raspberry Pi ale także domowników, jeszcze inni mimo że posiadają monitor specjalnie dla Raspberry Pi to jednak wolą
zarządzać nim zdalnie z laptopa lub komputera. Spróbujmy więc uruchomić dostęp zdalny, na początek trzeba zainstalować
oprogramowanie dla Raspbery Pi, do tego konieczne będzie globalne połączenie internetowe w celu pobrania pakietów instalacyjnych.
W terminalu wpisujemy polecenie pobierające z repozytoriów i instalujące potrzebne pakiety sudo apt-get install tightvncserver


Obrazek

Obrazek

Kiedy pakiety zostały zainstalowane możemy spróbować wykonać resztę czynności zdalnie. Zanim jednak wykonamy cokolwiek
musimy dowiedzieć się jaki adres IP posiada Raspberry Pi. W tym celu wpisujemy w terminalu ifconfig i odczytujemy adres IP

Obrazek

Mojemu Raspbery Pi został przydzielony adres 192.168.0.17. Teraz dla pewności czy wszystko jest w porządku
możemy spróbować wykonać ping do Raspberry Pi z poziomu naszego komputera

Obrazek

Obrazek

Raspberry Pi odpowiada, wygląda na to że wszystko jest w porządku. To teraz spróbujmy połączyć się
za pomocą Putty przez SSH tak jak na przedstawionych screenach

Obrazek

Zostaniemy zapytani o login i hasło, jeśli nie zmienialiśmy to domyślnie login pi hasło raspberry

Obrazek

Skoro mamy zdalny dostęp do terminala Raspberry Pi to możemy uruchomić serwer VNC dzięki któremu
będziemy mieli zdalny dostęp do pulpitu Raspberry Pi i nie będzie nam już potrzebny telewizor.
Serwer VNC uruchamiamy poleceniem vncserver :1. Przy uruchomieniu serwera zostaniemy
poproszeni o stworzenie i powtórzenie hasła dostępu, musi to być hasło składające się
z minimum 6 znaków, ja dla testów użyłem sobie prostego hasła 123456

Obrazek

Od teraz Raspberry Pi posiada uruchomiony pulpit zdalny, po stronie komputera należy zainstalować
potrzebne oprogramowanie żeby z tego pulpitu skorzystać. Pobieramy więc instalkę ze strony
http://www.realvnc.com/download/vnc/latest/ i instalujemy

Obrazek

Obrazek

Obrazek

Obrazek

Obrazek

Obrazek

Uruchamiamy VNC ze skrótu na pulpicie i przed połączeniem w opcjach dodajemy sobie możliwość rozciągania widoku zdalnego pulpitu

Obrazek

Obrazek

Obrazek

Obrazek

Zostaniemy zapytani o hasło które wcześniej ustawiliśmy przy uruchomieniu serwera VNC na Raspberry Pi

Obrazek

To wszystko, od teraz nie potrzeba telewizorów

Obrazek

Obrazek


Góra
 Zobacz profil  
 
PostNapisane: 13 sie 2013, o 20:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 cze 2012
Posty: 135
Pomógł: 0

W tej chwili mamy wygodny zdalny dostęp do Raspberry Pi, niestety po jego restarcie musimy za każdym razem
uruchamiać serwer VNC poleceniem vncserver :1, bez tego próba włączenia zdalnego pulpitu zakończy się błędem.

Obrazek

Spróbujemy teraz wykonać automatyczne uruchamianie się serwera VNC po restarcie Raspberry Pi.
W tym celu uruchamiamy SSH i postępujemy zgodnie z przedstawionymi zdjęciami

Obrazek

Wykonujemy kolejno następujące polecenia
- pwd (sprawdzamy gdzie jesteśmy, powinniśmy znajdować się w tzw katalogu domowym użytkownika)
- cd .config (przechodzimy do ukrytego katalogu z ustawieniami, kropka mówi o tym że katalog jest ukryty)
- ls (sprawdzamy co jest w katalogu, a konkretnie czy istnieje w nim katalog autostart)
- mkdir autostart (tworzymy katalog autostart)
- cd autostart (przechodzimy do katalogu autostart)
- nano tightvnc.desktop (otwieramy nowy plik w edytorze tekstowym nano, plik bedzie skrótem do aplikacji VNC)

Obrazek

Wypełniamy pusty plik w sposób widoczny na screenie

[Desktop Entry]
Type=Application
Name=TightVNC
Exec=vncserver :1 -geometry 800x600 -depth 16
StartupNotify=false

Dodatkowe parametry przy uruchamianiu serwera VNC wymuszają jego tryb w rozdzielczości 800x600 z głębią 16bit.
Takie wymuszenie jest dobre głównie z dwóch powodów, pierwszy to mniejszy ruch w sieci bo mniej danych
potrzebne jest do przesłania obrazu pulpitu, drugi powód to lepsza czytelność pulpitu przy mniejszej rozdzielczości.
Kiedy mamy uzupełniony edytor nano możemy plik zapisać i zamknąć edytor, wykonujemy to następującymi
kombinacjami przycisków <lewy CTRL + O> (zapisz) <ENTER> (potwierdź) <lewy CTRL + X> (wyjdź)

Obrazek

Obrazek

Obrazek

Możemy teraz sprawdzić czy na pewno plik dobrze się zapisał przez polecenie cat tightvnc.desktop

Obrazek

Widać że wszystko jest w porządku, więc możemy uruchomić ponownie Raspberry Pi
i sprawdzić czy automatycznie wystartuje serwer VNC.

Obrazek

Serwer VNC startuje automatycznie, gdyby po włączeniu zdalnego pulpitu pokazał się powyżej widoczny błąd
to należy wyłączyć w Preferencje -> Ustawienia sesji -> Agent uwierzytelnienia Policykit

Obrazek

Obrazek

Teraz po ponownym uruchomieniu wszystko powinno być jak należy.
Wspomnę jeszcze że ponowne uruchomienie nie musi oznaczać pozbawienia Raspberry Pi zasilania,
możemy Raspberry Pi restartować programowo w terminalu lub przez SSH poleceniem sudo reboot -f

Obrazek

W Raspberry Pi znalazło by się jeszcze kilka ciekawych rzeczy do konfiguracji i ustawienia, jednak ten temat
nie był stworzony przeze mnie z takim zamysłem, myślę że po takich jak do tej pory opisanych ustawieniach
można rozpocząć już wygodnie pierwsze próby sterowania wyprowadzeniami I/O, czyli to do czego ja sam
nie mogę się już doczekać. Oczywiście jeśli czytający temat będą mieli jeszcze jakieś ważniejsze czy też
ułatwiające życie konfiguracje Raspberry Pi to chętnie opiszę to w tym temacie.
Póki co przy kolejnych postach postaram się użyć w końcu prototypowej płytki stykowej.


Góra
 Zobacz profil  
 
PostNapisane: 14 sie 2013, o 23:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 cze 2012
Posty: 135
Pomógł: 0

Tak jak obiecałem wcześniej, tym razem pierwszy raz wysterujemy w najprostszy sposób jedno wyprowadzenie Raspberry Pi,
na którym będzie podłączona jedna dioda świecąca LED. Zanim jednak przejdziemy do tej czynności, wykonamy jedno przydatne
ustawienie jakim jest uruchomienie serwera FTP, przyda nam się do przenoszenia plików pomiędzy Raspberry Pi i komputerem.
Zaczynamy od zainstalowania na Raspberry Pi serwera FTP poleceniem sudo apt-get install proftpd

Obrazek

Obrazek

Kończąc instalowanie serwera FTP zostaniemy zapytani o typ serwera, wybieramy standalone

Obrazek

Kiedy serwer jest zainstalowany w Raspberry Pi możemy na komputerze zainstalować klienta FTP, ja wybrałem
popularnego Total Commandera. Na kolejnych screenach przedstawię przykład ustawienia połączenia i przeszłania
do Raspberry Pi pliku graficznego w celu zmiany standardowej tapety. Po uruchomieniu Total Commandera
wybieramy z menu Sieć -> FTP Połączenia

Obrazek

Nie mamy jeszcze zdefiniowanych połączeń, więc tworzymy nowe

Obrazek

Uzupełniamy pola Sesja - to dowolna nazwa naszego połączenia, Nazwa hosta - tu wpisujemy adres IP Raspberry Pi,
dalej podajmy użytkownika na którego się logujemy i jego hasło, domyślnie login pi hasło raspberry

Obrazek

Kiedy utworzyliśmy nowe połączenie to możemy teraz się połączyć

Obrazek

W tej chwili na jednym panelu mamy komputer lokalny i na drugim Raspberry Pi domyślnie w katalogu domowym użytkownika

Obrazek

W panelu gdzie mamy komputer lokalny przechodzimy do lokalizacji gdzie znajduje się interesujący nas plik,
tutaj dla przykładu będzie to plik graficzny który mam na pulpicie, w panelu gdzie mamy Raspberry Pi przechodzimy
do pulpitu bo tam właśnie będziemy chcieli skopiować plik z komputera lokalnego.
Zaznaczamy plik który chcemy skopiować i naciskamy F5, spowoduje to skopiowanie zaznaczonego pliku
do lokalizacji znajdującej się na drugim panelu, działa tutaj także metoda przenieś i opuść.

Obrazek

No i gotowe, na pulpicie Raspberry Pi znajduje się nowy plik który właśnie został skopiowany z naszego komputera

Obrazek

Możemy teraz przy pomocy zdalnego pulpitu ustawić sobie nową tapetę w Raspberry Pi, klikamy prawym przyciskiem
myszy na pulpit Raspberry Pi i intuicyjnie zmieniamy tapete

Obrazek

Obrazek

Obrazek

Gotowe, mamy w Raspberry Pi nową taptę

Obrazek

Serwer FTP przyda nam się nie tylko do przenoszenia obrazków, ale także do przenoszenia np plików z programami,
które będziemy chcieli przechowywać na komputerze lokalnym.

Przyszedł czas na zaświecenie diody LED. Przede wszystkim trzeba wiedzieć gdzie diodę podpiąć
czyli poznać pinologię Raspberry Pi. Na ten cel przygotowałem dwa obrazki przedstawiające ułożenie I/O w Raspberry Pi.

Obrazek

Obrazek

Pierwszy test z diodą LED wykonam na GPIO7 czyli na 26tym wyprowadzeniu, dioda będzie połączona do GND,
więc użyję wyprowadzeń 25 i 26. Uwaga, należy pamiętać że logika wyprowadzeń Raspberry Pi dla stanu wysokiego
nie ma +5V tylko +3,3V, w przypadku naszej diody LED nie ma to znaczenia, ale w innych sytuacjach trzeba o tym pamiętać.
Diodę LED nie wpinamy bezpośrednio na wyprowadzenia 25 i 26, należy w szereg dołożyć rezystor mający około 47ohm.
Kiedy mamy przygotowany hardware to możemy zabrać się za software. Najprościej w tej chwili będzie jak otowrzymy
terminal i z marszu wstukamy kilka poleceń pythona, bo w pythonie właśnie będę opisywał sterowanie GPIO.
Zaczynamy od uruchomienia konsoli pythona poleceniem sudo python. Prawo administratora sudo jest tutaj konieczne
ponieważ będziemy chcieli dostać się do urządzeń sprzętowych Raspberry Pi. Wpisujemy kolejno

sudo python

import RPi.GPIO as gpio
(tutaj importujemy moduł pythona odpowiedzialny za sterowanie wyprowadzeniami, nadajemy mu nazwę gpio
i takiej uproszczonej nazwy będziemy później używać odwołując się do tego modułu)

gpio.setmode(gpio.BCM)
(tutaj ustawiamy sposób odwoływania się do wyprowadzeń, BCM oznacza numerację według GPIO,
gdybyśmy zamiast słowa BCM napisali BOARD to wtedy odwołanie byłoby zgodne z numerem pinu,
np dla wyprowadzenia 7 w BCM byłoby 26 w BOARD, proszę zerknąć na pinologię)

gpio.setup(7,gpio.OUT)

(tutaj ustalamy że wyprowadzenie GPIO7 będzie wyjściem)

gpio.output(7,gpio.HIGH)

(tutaj w końcu jakiś efekt wizualny, dioda się zaświeciła, w tym poleceniu pythona wyjście GPIO7
ustawiliśmy w stan wysoki)

gpio.output(7,gpio.LOW)

(tutaj koniec efektu wizualnego, dioda zgasła, w tym poleceniu jak się domyślamy ustawiliśmy wyjście GPIO7 w stan niski

gpio.cleanup()
(tutaj przywracamy wszystkie wyprowadzenia jako domyślnie wejściowe, inaczej mówiąc kasujemy
nasze wcześniejsze ustawienia czyli że GPIO7 było wyjściem)

Obrazek

Nie było wcale tak trudno, w kolejnych krokach spróbujemy napisać to w formie programu bez termianala.
Żeby wyjść z pytona bo w tej chwili terminal wykonuje tylko polecenia pythona, należy napisać polecenie exit()
lub nacisnąć kombinację klawiszy <lewy CTRL> + D


Góra
 Zobacz profil  
 
PostNapisane: 16 sie 2013, o 10:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 cze 2012
Posty: 135
Pomógł: 0

Zapowiedziałem wcześniej, że kolejnym krokiem będzie próba sterowania diodą LED w programie bez użycia terminala
i tak też teraz zrobimy. Musimy zacząć od zainstalowania jakiegoś lekkiego edytora, w którym będziemy mogli pisać
program oraz uruchamiać go. Instalację przeprowadzamy w terminalu i wpisujemy sudo apt-get install geany

Obrazek

Po zainstalowaniu termianal nie będzie nam już potrzebny. Uruchamiamy edytor Geany i zaraz po otwarciu zapisujemy
sobie nowy plik programu pod dowolną nazwą z rozszerzeniem *.py

Obrazek

Obrazek

Obrazek

Jak wiemy do sterowania gpio potrzebe jest prawo administratora, dlatego w opcjach uruchamiania programu
musimy dodać polecenie sudo przed składnią uruchamiającą program

Obrazek

Obrazek

Kiedy mamy już wszystko gotowe to możemy napisać prosty program migający diodą podłączoną do gpio7,
użyjemy tym razem pętli for, która 10 razy zaświeci i zgasi diodę w odstępach czasowych pół sekundy.
Składnia: [ Pobierz ] [ Ukryj ]
język python
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Po napisaniu programu wybieramy kolejno przyciski Zapisz oraz Wykonaj

Obrazek

Gdyby źle nam się pracowało na domyślnej wielkości czcionce to możemy ją dowolnie zmieniać w Widok -> Zmień czcionkę

Obrazek

Obrazek

Obrazek

W Raspberry Pi wersja B posiada dodatkowe złącze opisane jako P5 na którym znajdują się dodatkowe 4 gpio

Obrazek

Następnym razem opiszę pracę wyprowadzeń gpio jako wejśćia.


Góra
 Zobacz profil  
 
PostNapisane: 16 sie 2013, o 23:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 cze 2012
Posty: 135
Pomógł: 0

Jeśli chodzi o pracę gpio jako wejścia to sprawa jest bardzo prosta, poniżej przedstawię przykładowy kod,
który testować będziemy na przycisku podłączonym do GPIO10 czyli do 19go wyprowadzenia i do GND

Składnia: [ Pobierz ] [ Ukryj ]
język python
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


W efekcie działania powyższego programu, po naciśnięciu przycisku będzie migać dioda,
kiedy zwolnimy przycisk to dioda zgaśnie. Czasem potrzebna jest praca wejść w przerwaniach,
kiedy to ważny jest moment wystąpienia zbocza narastającego lub opadającego.
Poniżej przedstawię przykład użycia gpio jako wejście obsłużone w przerwaniu

Składnia: [ Pobierz ] [ Ukryj ]
język python
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Progam działa w taki sposób że po uruchomieniu mamy 10 sekund na zabawę ze zboczem opadającym,
po upływie 10 sekund obsługa przerwania zostaje wyłączona. Przez te 10 sekund każde naciśnięcie przycisku
będzie powodować jedno mrugnięcie diody led. Proszę zwrócić uwagę na tzw wcięcia w kodzie czyli znaki spacji
przed wybranymi liniami kodu, w języku python te wcięcia mówią gdzie zaczynają się i kończą podporządkowane
bloki instrukcji np dla pętli, funkcji itd.

Jeśli spodobała się nam zabawa z diodą i chcemy więcej to możemy spróbować obsłużyć pwm na naszej diodzie led.

Składnia: [ Pobierz ] [ Ukryj ]
język python
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


To teraz płynne rozjaśnianie i gaszenie diody led

Składnia: [ Pobierz ] [ Ukryj ]
język python
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Góra
 Zobacz profil  
 
PostNapisane: 17 sie 2013, o 17:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 cze 2012
Posty: 135
Pomógł: 0

Dziś pobawiłem się kilka minut obsługą gpio zdalnie przez przeglądarkę, okazuje się że na proste zastosowanie można
bardzo szybko uruchomić serwer za pomocą którego z przyjemnością da się zmieniać konfigurację kierunku gpio
(wejścia lub wyjścia) a także w przypadku wyjść zmieniać ich stany logiczne monitorując ciągle ich obecne ustawienia.
Teraz zamiast pisać program w pythonie do sterowania diodą led, można po prostu zalogować się na stronę i zrobić co chcemy.
Jeśli ktoś chce przeprowadzić podobne doświadczenie ze sterowaniem gpio w przeglądarce to proszę w terminalu
kolejno wpisywać poniższe polecenia ściągjące i instalujące serwer webiopi
Kod:
wget http://webiopi.googlecode.com/files/WebIOPi-0.6.0.tar.gz
tar xvzf WebIOPi-0.6.0.tar.gz
cd WebIOPi-0.6.0
sudo ./setup.sh

Teraz wystarczy uruchomić serwer poleceniem
Kod:
sudo /etc/init.d/webiopi start

Serwer zatrzymujemy poleceniem
Kod:
sudo /etc/init.d/webiopi stop

Logowanie się na serwer webiopi domyślnie będzie wymagało wpisanie w przeglądarce loginu i hasła,
którymi są login webiopi oraz hasło raspberry
Jeśli chcemy usunąć całkowicie to zabezpieczenie to wpisujemy w terminalu poniższe polecenie
oraz zatrzymujemy i ponownie uruchamiamy serwer jeśli był uruchomiony
Kod:
sudo rm /etc/init.d/webiopi/passwd

Jeśli zaś będziemy chcieli zmienić login i hasło to wpisujemy poniższe polecenie, po którym zostaniemy
poproszeni o podanie nowego loginu oraz dwukrotnie nowego hasła, gdy to zrobimy zostanie utworzony
nowy plik w /etc/init.d/webiopi/passwd
Kod:
sudo webiopi-passwd

Zamiast kasować plik passwd w celu usunięcia zabezpieczeń do strony, można uruchomić powyższe polecenie
i podać pusty login oraz puste hasło naciskając tylko Enter do zatwierdzania.

Adres strony na serwerze to adres IP Raspberry Pi oraz port domyślnie 8000, czyli w moim przypadku 192.168.0.17:8000
Można stronę otworzyć bezpośrednio na Raspberry Pi, wtedy wpisujemy w przeglądarce adres 127.0.0.1:8000
Wygląda to tak jak na poniższych zdjęciach, klikając na IN/OUT zmieniamy kierunek gpio, klikając na numer gpio
w przypadku ustawienia kierunku na OUT będziemy zmieniali stan logiczny

Obrazek

Obrazek

Obrazek

Obrazek

Obrazek


Góra
 Zobacz profil  
 
PostNapisane: 18 sie 2013, o 10:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 cze 2012
Posty: 135
Pomógł: 0

Na forum zdecydowanie panującym językiem programowania jest c, dlatego teraz spróbujemy właśnie w c napisać
obsługę gpio. Zaczniemy od ściągnięcia i zainstalowania potrzebnej biblioteki, w tym celu otwieramy terminal
i wykonujemy kolejno przedstawione poniżej polecenia
Kod:
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build

Potrzebne biblioteki wiringPi zostały zainstalowane. Przystosujemy teraz znany już nam edytor Geany, w którym
będziemy pisali pierwsze programy w c. Na pulpicie Raspberry Pi stworzymy sobie jakiś katalog w którym będą
przechowywane pliki programu, ja nazwę sobie ten katalog Projekt1. Uruchamiamy Geany, tworzymy w nim
nowy pusty plik i zapisujemy go pod nazwą main.c w stworzonym wcześniej katalogu. W pliku main.c możemy
napisać pierwszy program migający diodą LED podłączoną do gpio7
Kod:
#include <wiringPi.h>

int main()
{
    wiringPiSetupGpio(); //ustaw odwolywanie do gpio w trybie BCM
    pinMode(7,OUTPUT); //ustaw gpio7 jako wyjscie

    int i;
    for(i=0;i!=10;i++)
    {
        digitalWrite(7,HIGH); //ustaw gpio7 w stan wysoki
        delay(100); //czekaj 100ms
        digitalWrite(7,LOW);
        delay(100);
    }
    return 0;
}

Powyższy program po uruchomieniu 10 razy szybko zaświeci i wygasi diodę LED. Żeby można było uruchomić program
trzeba jeszcze utworzyć plik makefile. W tym celu tworzymy nowy pusty plik w Geany i uzupełniamy tak jak poniżej
Kod:
OBJS = main.o
CC = gcc
DEBUG = -g
CFLAGS = -Wall -c $(DEBUG)
LFLAGS = -Wall $(DEBUG)
LIBS = -I/usr/local/include -L/usr/local/lib -lwiringPi
 
all: $(OBJS)
    $(CC) $(LIBS) $(LFLAGS) $(OBJS) -o main.out
 
main.o: main.c
    $(CC) $(CFLAGS) main.c
 
clean:
    \rm *.o *~ main.out

Uwaga, wcięcia w trzech liniach pliku makefile czyli te znaki spacji przed trzema liniami to nie spacje, muszą to być
znaki tabulatora [TAB] po jednym przed każdą linią, znaki tabulatora to separatory dla pliku makefile i nie można ich
zastąpić spacjami. Po uzupełnieniu pliku zapisujemy go pod nazwą makefile w lokalizacji wcześniej utworzonego katalogu
tam gdzie mamy już plik main.c. Ostatnią czynnością będzie ustawienie poleceń budowania w Zbuduj -> Zdefiniuj polecenia budowania.
Pola uzupełniamy następująco
Kod:
Skompiluj -> make
Wykonaj -> sudo ./main.out

Resztę kasujemy i zostawiamy puste pola ponieważ nie będziemy ich używać. W tej chwili to już czysta przyjemność,
naciskamy kolejno przyciski Skompiluj oraz Wykonaj i obserwujemy jak dioda LED mruga według napisanego programu

Obrazek

Obrazek

Obrazek

Obrazek

Obrazek

Obrazek

Obrazek

Sprawa jest równie prosta jeśli chodzi o pracę gpio jako wejścia. Napiszmy przykładowy kod

Kod:
#include <wiringPi.h>

int main()
{   
    wiringPiSetupGpio();
    pinMode(7, OUTPUT);
    pinMode(10, INPUT); //ustaw gpio10 jako wjescie
    pullUpDnControl(10,PUD_UP); //podciagnij gpio10 do plusa

    for(;;)
    {
        if (digitalRead(10)==0) //jesli nacisniety przycisk czyli gpio10 polaczone do gnd
        {         
            digitalWrite(7, 1);    
            delay(100);
            digitalWrite(7, 0);
            delay(100);
        }
        else delay(10);
    }
    return 0;
}

Działanie programu jest takie że kiedy naciśniemy przycisk połączony do gpio10 oraz do gnd to dioda LED będzie szybko zaświecać się
i gaścić, zaś kiedy zwolnimy przycisk to dioda nie będzie świecić. Możemy dodać trochę efektów specjalnych do tego prostego progamu
przez uruchomienie programowego PWM który zamiast gwałtownego zaświecania i gaszenia diody będzie ją płynnie rozjaśniał i wygaszał

Kod:
#include <wiringPi.h>
#include <softPwm.h>

int main()
{   
    wiringPiSetupGpio();
    pinMode(10, INPUT);
    pullUpDnControl(10,PUD_UP);
    softPwmCreate(7,0,100); //uruchom programowy PWM na gpio7
    int i;

    for(;;)
    {
        if (digitalRead(10)==0)
        {         
            for (i=0;i<=100;i++)
            {
                softPwmWrite(7,i);
                delay(10);
            }
            for (i=100;i>=0;i--)
            {
                softPwmWrite(7,i);
                delay(10);
            }
        }
        else delay(100);
    }
    return 0;
}


Ostatnio edytowano 30 sie 2013, o 16:14 przez ariek44, łącznie edytowano 2 razy

Góra
 Zobacz profil  
 
PostNapisane: 18 sie 2013, o 17:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 cze 2012
Posty: 135
Pomógł: 0

Wiele osób w domu posiada wyświetlacz zgodny ze sterownikiem HD44780, można taki wyświetlacz w prosty sposób
połączyć i oprogramować w Raspberry Pi. Poniżej przedstawię przykład sterowania wyświetlacza w trybie 4 bitowym.
Jedna bardzo ważna uwaga dotycząca połączenia takiego wyświetlacza, przy połączeniu bezpośrednim należy
zawsze wyprowadzenie wyświetlacza RW łączyć do GND
co wymusi na wyświetlaczu pracę tylko w trybie odczytu,
nie możemy zezwolić wyświetlaczowi na wystawianie sygnałów ponieważ logika +5V wyświetlacza doprowadziłaby
do uszkodzenia gpio w Raspberry Pi. Nie będę opisywał wyprowadzeń wyświetlacza typu HD44780, są one dokładnie
opisane np tutaj http://mirekk36.blogspot.com/2012/04/lcd-hd4478-jak-podaczac.html
Wyprowadzenia wyświetlacza RS, E, D4, D5, D6, D7 podłączamy do dowolnych gpio w Raspberry Pi.
Kod:
#include <wiringPi.h>
#include <lcd.h>

int main()
{      
    wiringPiSetupGpio(); //ustaw odwolywanie do gpio w trybie BCM

    int lcd;
    lcd=lcdInit(4,20,4,7,8,25,24,23,18,0,0,0,0); //(Y,X,4,RS,E,D4,D5,D6,D7,0,0,0,0)

    lcdHome(lcd);
    lcdClear(lcd);
    lcdDisplay(lcd,1); //wlaczenie (1) lub wylaczenie (0) wyswietlacza
    lcdCursor(lcd,0);
    lcdCursorBlink(lcd,0);

    lcdPosition(lcd,0,0);
    lcdPuts(lcd,"Raspberry Pi");
    lcdPosition(lcd,0,1);
    lcdPuts(lcd,"forum.atnel.pl");
    lcdPosition(lcd,0,2);
    lcdPuts(lcd,"12345678901234567890");
    lcdPosition(lcd,0,3);
    lcdPuts(lcd,"abcdefghijklmnopqrst");
   
    return 0;
}

W poleceniu lcdInit(4,20,4,7,8,25,24,23,18,0,0,0,0) określamy ile linii i znaków w linii ma wyświetlacz, w moim przypadku 4x20,
dalej informujemy że sterowanie będzie odbywać się na 4 bitach, następnie podajemy 6 gpio do których podłączony jest
wyświetlacz i podajemy je w kolejności RS,E,D4,D5,D6,D7 oraz 4 zera ponieważ nie wykorzystujemy sterowania 8 bitowego.

Obrazek

Istnieje możliwość połączenia wielu wyświetlaczy jednocześnie i wszystkie niezależnie obsługiwać.
Połączenie wielu wyświetlaczy polega na łączeniu równoległym wyprowadzeń RS,D4,D5,D6,D7
i tylko wyprowadzenie E na osobnych gpio.

int lcd1;
int lcd2;
lcd1=lcdInit(4,20,4,7,8,25,24,23,18,0,0,0,0);
lcd2=lcdInit(2,16,4,7,9,25,24,23,18,0,0,0,0);
lcdClear(lcd1);
lcdClear(lcd2);


Góra
 Zobacz profil  
 
PostNapisane: 20 sie 2013, o 09:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 cze 2012
Posty: 135
Pomógł: 0

Prędzej czy później z samej ciekawości wiele osób próbuje na Raspberry Pi uruchomić radio internetowe.
Tym razem chciałbym przedstawić prosty sposób na radio internetowe sterowane przez gpio.
Do uruchomienia radia wystarczy nam jeden przycisk podłączony do gpio10 oraz jedna dioda LED na gpio7,
przycisk i dioda połączone są do gpio i do GND, czyli tak jak w poprzednich przykładach.
Zaczynamy od terminala w którym najpierw zaktualizujemy sobie pakiety odświeżając najpierw listę pakietów
Kod:
sudo apt-get update
sudo apt-get upgrade

Teraz możemy zainstalować prosty odtwarzać pracujący w terminalu
Kod:
sudo apt-get install mpd mpc

Po instalacji możemy w terminalu sprawdzić działanie, spróbujmy odtworzyć jakieś radio internetowe,
adresy możemy odnaleźć np tutaj http://www.shoutcast.com/, wystarczy pobrać wybrany skrót do radia
i otworzyć go w notatniku, w nim zobaczymy adres IP radia które nas interesuje, ja wybrałem RMF Maxxx.
Zatem podłączamy słuchawki do złącza audio i w terminalu wpisujemy kolejno

czyszczenie playlisty mpc
Kod:
mpc clear

dodanie do playlisty adresu wybranego radia
Kod:
mpc add http://217.74.72.12:9002

odtwarzanie internetowej stacji radiowej
Kod:
mpc play

gdyby w playliście było więcej niż jedna stacja radiowa to można dodać parametr w postaci miejsca na playliście
określający które konkretnie radio odtwarzać zaczynając od 0 dla pierwszej pozycji w playliście
Kod:
mpc play 0

ustawienie głośności na 100%
Kod:
mpc volume 100

zatrzymanie radia
Kod:
mpc stop


Kiedy nasze próby w terminalu powiodły się to teraz można napisać prosty program
który będzie wykonywał te same czynności i współpracujący z przyciskiem i diodą led
Kod:
#include <wiringPi.h>
#include <stdlib.h>

int main()
{
    system("mpc stop");
    system("mpc clear");   
       
    wiringPiSetupGpio();
    pinMode(7,OUTPUT);
    pinMode(10,INPUT);
    pullUpDnControl(10,PUD_UP);
   
    char key=0; //zmienna pamiętająca naciśnięcie przycisku
    char play=0; //zmienna pamiętająca odtwarzanie radia
   
    for(;;)
    {

        if (digitalRead(10)==0 && key==0 && play==0) //jeśli przycisk naciśnięty i pamięć naciśnięcia pusta i radio nie jest odtwarzane
        {
            key=1; //ustaw pamięć przycisku
            play=1; //ustaw pamięć odtwarzania
            delay(100); //eliminacja drgania styków
            system("mpc add http://217.74.72.12:9002");
            system("mpc play");
            system("mpc volume 100");
            digitalWrite(7,1); //zaświeć diodę LED na gpio7
        }

        if (digitalRead(10)==0 && key==0 && play==1) //jeśli przycisk naciśnięty i pamięć naciśnięcia pusta i radio jest odtwarzane
        {
            key=1; //ustaw pamięć przycisku
            play=0; //skasuj pamięć odtwarzania
            delay(100);
            system("mpc stop");
            system("mpc clear");
            digitalWrite(7,0); //wygaś diodę LED na gpio7
        }

        if (digitalRead(10)==1 && key==1) key=0; //jeśli przycisk zwolniony i pamięć przycisku ustawiona to skasuj pamięć przycisku

        delay(100);

    }

    return 0;

}

Działanie programu jest bardzo proste, naciskanie przycisku będzie przemiennie odtwarzać lub zatrzymywać odtwarzanie radia,
przy odtwarzaniu radia będzie zaświecona dioda LED. Zachęcam do modyfikacji programu, użycia większej liczby przycisków
i sterowaniu większą liczbą stacji radiowych oraz głośnością. Więcej poleceń odtwarzacza możemy zobaczyć wpisując w terminalu
Kod:
mpc help

Aktualną informację o odtwarzanej stacji radiowej można zobaczyć w terminalu przez polecenie
Kod:
mpc current

Nie wiem niestety jak przekierować taką informację do programu w celu np wyświetlenia jej na wyświetlaczu,
może któryś z bardziej obeznanych kolegów zaproponuje rozwiązanie?


Góra
 Zobacz profil  
 
PostNapisane: 20 sie 2013, o 23:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 cze 2012
Posty: 135
Pomógł: 0

Pozostając jeszcze chwilę przy temacie audio możemy do napisanych programów dodać efekty z syntezatora mowy
mówiącego po polsku np "Uruchomiono ..", "Proszę nacisnąć przycisk" itp. Korzystanie z syntezatora mowy wymaga
przede wszystkim zainstalowania potrzebnego pakietu, wykonujemy to poleceniem
Kod:
sudo apt-get install espeak

Kiedy syntezator jest zainstalowany to możemy w terminalu sprawdzić jego działanie
Kod:
espeak -v pl "to jest syntezator mowy" --stdout | aplay

Atrybut -v pl nakazuje mówić z polskim akcentem, istnieją inne przydatne atrybuty które możemy zobaczyć wpisując w termianalu
Kod:
espeak -h

Można regulować m.in. prędkość mówienia -s oraz amplitudę czyli głośność -a, przykładowo
Kod:
espeak -v pl -s 100 -a 200 "to jest syntezator mowy" --stdout | aplay

Przy każdej wypowiedzi do terminala zostaje wpisana informacja o parametrach dźwięku, którą możemy przekierować donikąd
Kod:
espeak -v pl -s 100 -a 200 "to jest syntezator mowy" --stdout | aplay 2>/etc/null

Wiedząc już jak posługiwać się syntezatorem możemy spróbować napisać jakiś program wykorzystując gpio oraz syntezator.
Działanie będzie podobne jak przy wcześniej omawianym radiu internetowym, czyli programowe wywołanie polecenia w terminalu,
jednak dla odmiany tym razem napiszemy to w pythonie
Kod:
import RPi.GPIO as gpio
import time
import os

gpio.setwarnings(False)
gpio.setmode(gpio.BCM)
gpio.setup(10,gpio.IN,pull_up_down=gpio.PUD_UP)
gpio.setup(7,gpio.OUT)

key=0
liczba=0

while (True):
    if (gpio.input(10)==0 and key==0):
        key=1
        time.sleep(0.1)
        liczba=liczba+1
        gpio.output(7,1)
        os.system('espeak -v pl -a 200 '+str(liczba)+' --stdout | aplay 2>/etc/null')
        gpio.output(7,0)
       
    if (gpio.input(10)==1 and key==1): key=0

    time.sleep(0.1)

Działanie programu jest następujące, jeśli mamy przycisk na gpio10 oraz diodę LED na gpio7 to przy każdym przyciśnięciu przycisku
syntezator powie który raz został przycisk naciśnięty. Pierwsze przyciśnięcie spowoduje wypowiedzenie "jeden", kolejne "dwa" itd.
Podczas wypowiadania liczby wciśnięć przycisku będzie zaświecała się dioda sygnalizująca wizualnie czas mówienia. Nie ma więc
na co czekać tylko słuchawki na uszy i przycisk do ręki :)

Panowie to jest chyba ostania część artykułu o Raspberry Pi jaką tutaj napiszę. Moim zdaniem po przeczytaniu tego wszystkiego
w całości każdy będzie mógł wystartować z Raspberry Pi i z pewnością poradzi sobie samodzielnie w dalszej zabawie mając za sobą
te podstawowe informacje. Można by jeszcze opisać kilka przydatnych rzeczy jak praca z 1wire czy I2C, ale w sieci jest tak duże
wsparcie dla Raspberry Pi że tak jak mówiłem wcześniej każdy zainteresowany po przeczytaniu tego tematu poradzi już sobie
w dalszej zabawie bez problemu.

Podziękowania należą się Mirkowi za przymknięcie oka na ilość zdjęć jaką wrzuciłem na serwer forum w tym temacie.
Pozdrawiam.


Góra
 Zobacz profil  
 
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 16 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO