ATNEL tech-forum https://forum.atnel.pl/ |
|
Raspberry Pi https://forum.atnel.pl/topic3828.html |
Strona 1 z 1 |
Autor: | ariek44 [ 11 sie 2013, o 15:04 ] |
Tytuł: | Raspberry Pi |
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. 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. |
Autor: | ariek44 [ 11 sie 2013, o 15:13 ] |
Tytuł: | Re: Raspberry Pi |
Na początek kilka zdjęć Raspberry Pi wersja B żeby każdy zobaczył z czym będziemy tu mieli do czynienia. |
Autor: | ariek44 [ 11 sie 2013, o 15:40 ] |
Tytuł: | Re: Raspberry Pi |
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. Mój Raspberry Pi tak będzie wyglądał gotowy do uruchomienia |
Autor: | ariek44 [ 11 sie 2013, o 20:13 ] |
Tytuł: | Re: Raspberry Pi |
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 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 Karta pamięci jest przygotowana do pracy. Od teraz możemy uruchomić Raspberry Pi, przedstawię to w kolejnym poście. |
Autor: | ariek44 [ 11 sie 2013, o 21:36 ] |
Tytuł: | Re: Raspberry Pi |
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 Po zatwierdzeniu zostaniemy ostrzeżeni o usunięciu danych z karty w celu instalacji systemu, oczywiście zgadzamy się Od tego momentu rozpoczyna się instalacja systemu na karcie pamięci Kiedy proces instalacji się zakończy, zostaniemy o tym poinformowani 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> System został uruchomiony w domyślnej formie tekstowej Uruchomimy sobie teraz graficzny interfejs wydając polecenie startx No i gotowe, Raspberry Pi uruchomiony, możemy wstępnie zapoznać się z pulpitem 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 |
Autor: | ariek44 [ 12 sie 2013, o 18:40 ] |
Tytuł: | Re: Raspberry Pi |
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. 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 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> Oprócz spolszczenia systemu przyda się także ustawić odpowiadający nam układ klawiatury Gotowe, teraz mamy Raspberry Pi w polskiej wersji językowej z domyślnym dla nas układem klawiatury. |
Autor: | ariek44 [ 12 sie 2013, o 20:09 ] |
Tytuł: | Re: Raspberry Pi |
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 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 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 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 Zostaniemy zapytani o login i hasło, jeśli nie zmienialiśmy to domyślnie login pi hasło raspberry 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 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 Uruchamiamy VNC ze skrótu na pulpicie i przed połączeniem w opcjach dodajemy sobie możliwość rozciągania widoku zdalnego pulpitu Zostaniemy zapytani o hasło które wcześniej ustawiliśmy przy uruchomieniu serwera VNC na Raspberry Pi To wszystko, od teraz nie potrzeba telewizorów |
Autor: | ariek44 [ 13 sie 2013, o 20:12 ] |
Tytuł: | Re: Raspberry Pi |
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. 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 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) 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ź) Możemy teraz sprawdzić czy na pewno plik dobrze się zapisał przez polecenie cat tightvnc.desktop Widać że wszystko jest w porządku, więc możemy uruchomić ponownie Raspberry Pi i sprawdzić czy automatycznie wystartuje serwer VNC. 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 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 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. |
Autor: | ariek44 [ 14 sie 2013, o 23:33 ] |
Tytuł: | Re: Raspberry Pi |
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 Kończąc instalowanie serwera FTP zostaniemy zapytani o typ serwera, wybieramy standalone 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 Nie mamy jeszcze zdefiniowanych połączeń, więc tworzymy nowe 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 Kiedy utworzyliśmy nowe połączenie to możemy teraz się połączyć W tej chwili na jednym panelu mamy komputer lokalny i na drugim Raspberry Pi domyślnie w katalogu domowym użytkownika 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ść. No i gotowe, na pulpicie Raspberry Pi znajduje się nowy plik który właśnie został skopiowany z naszego komputera 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 Gotowe, mamy w Raspberry Pi nową taptę 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. 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) 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 |
Autor: | ariek44 [ 16 sie 2013, o 10:42 ] |
Tytuł: | Re: Raspberry Pi |
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 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 Jak wiemy do sterowania gpio potrzebe jest prawo administratora, dlatego w opcjach uruchamiania programu musimy dodać polecenie sudo przed składnią uruchamiającą program 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. 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 Gdyby źle nam się pracowało na domyślnej wielkości czcionce to możemy ją dowolnie zmieniać w Widok -> Zmień czcionkę W Raspberry Pi wersja B posiada dodatkowe złącze opisane jako P5 na którym znajdują się dodatkowe 4 gpio Następnym razem opiszę pracę wyprowadzeń gpio jako wejśćia. |
Autor: | ariek44 [ 16 sie 2013, o 23:26 ] |
Tytuł: | Re: Raspberry Pi |
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 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 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. 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 |
Autor: | ariek44 [ 17 sie 2013, o 17:45 ] |
Tytuł: | Re: Raspberry Pi |
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 |
Autor: | ariek44 [ 18 sie 2013, o 10:04 ] |
Tytuł: | Re: Raspberry Pi |
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 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; } |
Autor: | ariek44 [ 18 sie 2013, o 17:38 ] |
Tytuł: | Re: Raspberry Pi |
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. 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); |
Autor: | ariek44 [ 20 sie 2013, o 09:02 ] |
Tytuł: | Re: Raspberry Pi |
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? |
Autor: | ariek44 [ 20 sie 2013, o 23:09 ] |
Tytuł: | Re: Raspberry Pi |
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. |
Autor: | owner1 [ 13 sty 2015, o 12:03 ] |
Tytuł: | Re: Raspberry Pi |
Bardzo przydatne informacje. A ja mam pytanie do autora i nie tylko. Kto pomoże ? Chcę malinką mierzyć temperature. Malinek będzie kilka w różnych miejscach oddalone od siebie nawet kilka kilometrów połączone do neta z dynamicznie przydzielanym IP. Te temperatury chcę przesyłać na swoją stronę www i je wyświetlać na bierząco. Jak zrobić by malinki wysyłały te informacjie? Czy można np. zainstalować klienta FTP i co jakiś czas logować się na strone podmieniając pliki? Proszę o pomoc. Pozdrawiam. |
Autor: | szopler [ 13 sty 2015, o 12:14 ] |
Tytuł: | Re: Raspberry Pi |
W centrali instalujesz serwer www np. apache i PHP. Każda malina ma klienta http... Po dokonaniu pomiaru malina wchodzi na stronę wystawioną na serwerze i przez PHP POST wrzuca dane (Swój ID i wynik pomiaru). Dynamiczne IP malin w tym przypadku nie jest problemem, za to serwer powinien mieć przynajmniej domenę z przekierowaniem po DynDNSie. |
Autor: | owner1 [ 13 sty 2015, o 12:32 ] |
Tytuł: | Re: Raspberry Pi |
Z maliną mam od niedawna do czynienia dla tego z góry przepraszam za laikowe pytania. A jak uruchomić bądź skorzystać z takiego klienta http? Proszę o jakieś naprowadzenie mnie na temat, bo nie wiem od czego zacząć. Z góry dziękuję. |
Autor: | sieja [ 18 lut 2015, o 03:08 ] |
Tytuł: | Re: Raspberry Pi |
Ktos pomógł koledze prywatnie? Czy pytanie nadal aktualne? Ja bym poszukał darmowego hostingu lub jakiegoś taniego płatnego do którego malinki by wysyłały dane tak jak kolega wyżej napisał poprzez POST Projekt pózniej można dowolnie rozwijać a taki hosting zawsze sie przyda Sam pracuje nad automatycznym włączaniem odwilżacza kiedy nawilżenie powietrza wzrośnie DHT22 mierzy także temperaturę wiec jako bonus tez będę chciał to zaimplementować Gdybys potrzebował pomocy daj znać |
Autor: | kwoka [ 25 lut 2015, o 11:10 ] |
Tytuł: | Re: Raspberry Pi |
Witam, Super zbiór informacji, szczególnie dla początkujących. Zainteresował mnie temat radia internetowego. Niestety nie jestem na tyle bystry żeby poradzić sobie z tym do końca. Chodzi mi o to, żeby można było wpisać w pamięć maliny kilka stacji, i dodatkowo dołożyć przycisk lub dwa które służyły by do wybierania stacji. Np. z jednym dodatkowym przyciskiem, który by przełączał na kolejną stację lub z dwoma przyciskami, którymi można by przełączać stacje w górę i w dół. No i fajnie byłoby jeszcze móc regulować głośność. Moja wielka prośba, czy jesteś w stanie pomóc w tym temacie i podesłać jakieś wskazówki ( dla początkującego) lub jakiś konkretny projekt tego? Będę mega wdzięczny za pomoc. Pozdrawiam Damian |
Autor: | Marvinn8686 [ 26 lut 2015, o 11:07 ] |
Tytuł: | Re: Raspberry Pi |
Witam, zacząłem kiedyś ten sam projekt na swoim raspberry, ale nie skończyłem z braku czasu na zabawę z hardware. Miałem już napisane jakieś tam skrypty shellowe do odtwarzania za pomocą vlc i pobierania informacji o odtwarzanym utworze. VLC wybrałem, bo jest dostępny na Raspbiana, Pidorę i Arch linuxa (te dystrybucje rozważałem) Wklejam kilka linków o tym temacie (chyba miałem ich więcej): http://www.bobrathbone.com/raspberrypi/ ... 0Radio.pdf http://contractorwolf.wordpress.com/raspberry-pi-radio/ http://www.sawistowski.net/prywatnie/pr ... pberry.htm https://learn.adafruit.com/pi-wifi-radio/parts-list Do wyświetlania informacji planowałem standardowy HD44780 http://pmb.neongrit.net/blog/?p=64 O podłączaniu buttonów sterujących http://www.cl.cam.ac.uk/projects/raspbe ... _switches/ To nie konkretnie o RPi, ale parę ciekawych informacji tam było http://mightyohm.com/blog/2009/05/build ... g-the-box/ |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |