poniedziałek, 29 września 2014

Instalacja serwera www, php, bazy danych mysql oraz phpmyadmin.

    W świeżo zainstalowanym Raspbianie jest sporo pakietów, z których raczej nie korzystam. Mój system jest raczej przeznaczony do pracy zdalnej i szkoda mi miejsca na karcie SD. Wywaliłem całe  X-y i wszystkie aplikacje desktopowe. Do zarządzania oprogramowaniem w Raspbianie jest dokonały menadżer apt-get, dzięki któremu możemy instalować nowe programy, uaktualniać system itp. Po zalogowaniu się do konsoli, aby pozbyć się zbędnych pakietów wystarczy użyć programu apt-get z opcją remove  raz wypisać pakiety, których chcemy się pozbyć :

#sudo apt-get remove desktop-base lightdm lxappearance lxde-common lxde-icon-theme lxinput lxpanel lxpolkit lxrandr lxsession-edit lxtask lxterminal obconf openbox raspberrypi-artwork xarchiver xinit xserver-xorg-video-fbdev
#sudo apt-get autoclean


    Następnie odświeżam repozytorium pakietów i instaluję potrzebne mi pakiety. Na pewno potrzebuję serwer http aby oby zdalnie podglądać wyniki pomiarów i sterować moją automatyką domową. Mój wybór to apache. Wydajemy kolejne polecenia tak jak poniżej:

#sudo apt-get update
#sudo apt-get upgrade
#sudo apt-get install apache2 apache2-doc apache2-utils


Aplikacja której używam jako jako panel sterujący jest napisana w PHP, którą instaluję jako następne.

#sudo apt-get install libapache2-mod-php5 php5 php-pear php5-xcache

Archiwizację wyników i konfigurację pomiarów przechowuję w bazie danych. Zainstalowanie i konfiguracja bazy MYSQL apt-em nie nie jest skomplikowane. Wydajemy polecenie:

#sudo apt-get install mysql-server mysql-client php5-mysql libapache2-mod-auth-mysql

   Skrypt instalacyjny zapyta nas w oknie dialogowym o hasło do bazy danych dla administaratora czyli root, wpisujemy nasze nowe hasło i potwierdzamy. Hasło to nie musi być takie samo jak dla administratora systemu  a nawet lepiej jak się różnią.
    Do wygodnego zarządzania bazą danych warto zainstalować PHPMYADMIN, lecz nie jest to konieczne. Jeśli ktoś bardziej woli konsolę może pominąć ten krok:

#sudo apt-get phpmyadmin

    Skrypt instalacyjny przeprowadza także konfigurację pakietu. Zapyta nas o serwer HTTP, jesli robisz wszystko tak jak ja to wybierasz oczywiście Apache. Następne pytanie dotyczy, czy chcemy konfigurować odpowiednie wpisy czy instalator ma to zrobić automatycznie. Najlepiej wybrać opcję YES.  Kolejne pytanie o hasło do bazy danych. To te które wybraliśmy przy konfiguracji MYSQL. Ostatni krok to ustalenie hasła do serwisu PHPMYADMIN To hasło o które zostaniemy poproszni logując się poprzez www. W przeglądarce internetowej w polu adresu wpisujemy: http://adres_maliny/phpmyadmin, na przykład http:/192.168.1.100/phpmyadmin.

piątek, 26 września 2014

Sieć 1wire, moduły USB i I2C, OWFS

     Do komunikacji z chipami 1wire wykorzystuję konwerter brytyjskiej firmy AB Electronics zrealizowany na układzie DS2482-100.   Wpinany bezpośrednio w GPIO maliny, wykorzystuje piny na których jest zrealizowana szyna i2C.

Płytka konwertera
Konwerter zamontowany na malince


Płytka posiada złącze ma RJ12. Obszycie pinów wygląda następująco:

GNIAZDO RJ12 w module

 _____________     1- 5V
| ___________ |    2- GND
||I I I I I I||    3- DATA 1wire
||1 2 3 4 5 6||    4- GND 1wire
||___________||    5- NC
|____     ____|    6- NC
     |___|
Widok od przodu


Polska firma MERA-PROJEKT produkuje także konwertery USB na 1wire. Wykorzystywałem kiedyś moduł MP00200A oparty o chip DS2490. Niestety, nie jest już dostępny w sprzedaży.



Polski konwerter MP00200A produkcji MERA-PROJEKT


Aby chipy 1wire były widoczne w systemie posługuję się pakietem OWFS (One Wire File System). Program ten działa w ten sposób, że tworzy wirtualny system katalogów i plików, które w swej strukturze udostępniają parametry oferowane przez dany chip.  Poniżej przykład takiej struktury. W głównym katalogu, którego nazwa jest zgodna z ROM-em, czyli unikalnym numerem dla każdego wyprodukowanego układu, znajdują się pliki z wielkościami i parametrami chipa. Przykład  dla układu DS18S20 jest poniżej,nazwa katalogu 10.000010EF0000 to ROM układu, plik temperature przechowuje zmierzoną temperaturę:

10.000010EF0000
|-- address
|-- crc8
|-- die
|-- family
|-- id
|-- locator
|-- power
|-- present
|-- r_address
|-- r_id
|-- r_locator
|-- temperature
|-- temphigh
|-- templow
|-- trim
|-- trimblanket
|-- trimvalid
`-- type


Instalacja owfs w Raspbianie jest bardzo łatwa. Wydajmy polecenie:

#sudo apt-get install owfs

Przygotowujemy katalog do którego owfs zamontuje swój wirtualny system plików:

#sudo mkdir /mnt/1wire

Po poprawnym zainstalowaniu oprogramowania, uruchamiamy demona, który połączy się poprzez konwerter usb lub i2c z magistralą 1wire i pokaże podpięte układy.
Dla konwertera usb wydajemy polecenie:

#sudo owfs --allow_other --usb -m /mnt/1wire

Dla konwertera poprzez szynę i2c:

#sudo owfs --allow_other --i2c -m /mnt/1wire 

W opcjach polecenia owfs deklarujemy:
 --allow_other aby wszyscy użytkownicy systemu mieli dostęp do utworzonych katalogów i plików,
 --i2c lub --usb to rodzaj konwertera,
 -m /mnt/1wire to punkt montowania wirtualnego systemu plików.
Aby system po uruchomieniu udostępnił zawartość magistrali 1wire, trzeba dopisać jedno z powyższych poleceń w pliku /etc/init.d/rc.local. Przegladanie zawartości plików, można realizować poleceniami dostępnymi w systemie:

#ls -all /mnt/1wire
#cat /mnt/1wire/10.000010EF0000/temperature
Dzięki takiemu rozwiązaniu mamy dostęp do magistrali praktycznie z każdego języka programowania, który pozwala na czytanie plików.

środa, 24 września 2014

Konfiguracja karty wifi.

    Mam już sprawnie pracującą kartę WIFI, jej instalację opisałem w poprzednim poście.  Teraz trzeba spowodować aby działa w mojej sieci. Wystarczy wyedytować dwa pliki. Pierwszym jest plik interfaces w katalogu /etc/network. Zawartość plików konfiguracyjnych możemy zmieniać edytorem nano, oczywiście w trybie administratora np. sudo nano /etc/network/interfaces. Mój pliku interfaces wygląda ta:

auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp



    Karta ethernetowa eth0 ma przydzielone pobieranie adresu poprzez mechanizm dhcp. Dla karty wifi jeżeli mechanizm hotplug ją wykryje, konfiguracja zostanie przekazana do systemu wpa_supplicant, który odpowiada za połączenie w trybie szyfrowanego protokołu WPA. Konfiguracja ta jest przechowywana w pliku /etc/wpa_supplicant/wpa_supplicant.conf.

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="Nazwa_sieci"
    psk="Tajemne_haslo"
    proto=RSN
    key_mgmt=WPA-PSK
    pairwise=TKIP
    auth_alg=OPEN
}


Po zapisaniu plików konfiguracyjnych, restartujemy interfejs wifi poleceniem:


#sudo ifup wlan0


Po restarcie karta powinna połączyć się z routerem. No i żegnaj kabelku :)

wtorek, 23 września 2014

Instalacja karty TL-WN725N

   Korzystanie z kabelka ethernetowego jest niewygodne, stosuję go tylko do uruchomienia i skonfigurowania połączenia bezprzewodowego.  Opiszę teraz instalację karty wifi. Karta TP-LINK WN725N jest tanią i popularną kartą, lecz jej instalacja często stwarza problemy. Pokażę jak ja sobie radzę. Najpierw tworzę katalog o nazwie SKRYPTY w którym przechowuję wszelkiej maści skrypty, które pomagają zarządzać systemem maliny. W tym katalogu tworzę kolejny podkatalog o nazwie, która będzie mi sugerować co jest w środku np.WN725N:

#mkdir WN725N

Wchodzę do tego katalogu oczywiście poleceniem:

#cd WN725N


Następnie pobieram z githuba źródła, które pozwolą mi skompilować sterownik.

#git clone --depth 1 git://github.com/lwfinger/rtl8188eu.git rtl-8188eu
#git clone --depth 1 git://github.com/raspberrypi/linux.git rpi-linux
#git clone --depth 1 git://github.com/raspberrypi/firmware.git rpi-firmware

Wchodzę do katalogu rpi-linux i wydaję polecenie czyszczenia jeśli jakieś pliki były już skompilowane:

#cd rpi-linux
#make mrproper

Nastepne polecenia przygotowują konfigurację modułów:

#zcat /proc/config.gz > .config

Teraz następuje kompilacja pliku firmware sterownika:

#make modules_prepare


Kopiuję plik firmware do katalogu /lib/firmware/rtlwifi:

#sudo cp /home/pi/WN725N/rpi-firmware/extra/Module.symvers .



Przechodzę do katalogu rt-8188eu i kompiluję sterownik:


#cd /home/pi/ WN725N/rtl-8188eu
CONFIG_RTL8188EU=m make -C /home/pi/tplink/rpi-linux M=/home/pi/tplink/rtl-8188eu


Kopiowanie pliku sterownika do katalogu /lib/modules/wersja_jądra/kernel/drivers/net/wireless:

#sudo cp 8188eu.ko /lib/modules/`uname -r`/kernel/drivers/net/wireless


To polecenie buduje na nowo zależności między modułami:

#sudo depmod -a

Uruchamiam  sterownik poleceniem:

#sudo modprobe 8188eu

Teraz mam dostępny interface sieciowy wifi:

#ifconfig

Polecenie wypisze dostępne karty sieciowe.


Karta wifi to wlan0.

    Aby karta sama uruchamiała się po restarcie systemu dopisałem na końcu pliku /etc/init.d/rc.local polecenie: modprobe 8188eu.
Wszystkie te polecenia można zebrać razem  i utworzyć skrypt który sam zainstaluje kartę:

#!/bin/bash
# SKRYPT DO KOMPILOWANIA STEROWNIKA DLA KARTY TP-LINK TP-WN425N
# POBIERA DANE Z GITHUBA
# WYMAGANE POLACZENIE Z INTERNETEM

mkdir WN725N
cd WN725N
echo Pobieram pliki źródłowe z githuba
git clone --depth 1 git://github.com/lwfinger/rtl8188eu.git rtl-8188eu
git clone --depth 1 git://github.com/raspberrypi/linux.git rpi-linux
git clone --depth 1 git://github.com/raspberrypi/firmware.git rpi-firmware
cd rpi-linux
make mrproper
zcat /proc/config.gz > .config
echo
make modules_prepare
cp /home/pi/WN725N/rpi-firmware/extra/Module.symvers .
cd /home/pi/WN725N/rtl-8188eu
CONFIG_RTL8188EU=m make -C /home/pi/WN725N/rpi-linux M=/home/pi/WN725N/rtl-8188eu
sudo cp 8188eu.ko /lib/modules/`uname -r`/kernel/drivers/net/wireless
sudo echo "modprobe 8188eu" >> /etc/init.d/rc.local
sudo depmod -a
sudo modprobe 8188eu



   Zauważyłem, że karta samoczynnie zamiera jeśli jakiś czas nie ma aktywności sieciowej. Aby temu zaradzić trzeba stworzyłem plik o nazwie 8188eu.conf w katalogu /etc/modprobe  zawierający ustawienia sterownika.   Z konsoli wydałem polecenie :

#sudo touch /etc/modprobe.d/8188eu.conf

Następnie otwieram plik w nano:

#sudo nano /etc/modprobe.d/8188eu.conf

Dopisuję zawartość pliku:
options 8188eu rtw_power_mgnt=0 rtw_enusbss=0
Opcja ta eliminuje wyłączanie kary przez system.
   W tej chwili nasza malina może już pracować w sieci wifi. W następnym poście przedstawię sposoby konfiguracji sieci.

poniedziałek, 22 września 2014

RASPI-CONFIG, czyli konfiguracja maliny.

    Po pierwszym uruchomieniu się maliny zostaniemy poproszeni o konfigurację maliny poprzez program raspi-config. Program ten możemy wywołać także sami wydając polecenie "sudo raspi-config". Wyświetli się menu z opcjami, które po kolei możemy uruchamiać.

Raspi-config - menu główne.


Pierwsza opcja pozwala rozszerzyć partycję na całą dostępną kartę SD. Druga opcja pozwala zmienić hasło dostępu dla użytkownika "pi". Trzecia opcja określa sposób zachowania systemu po uruchomieniu, możliwość uruchomienia w trybie graficznym lub IDE Scratch, można ją pominąć.W punkcie czwartym konfigurujemy ustawienia międzynarodowe i klawiaturę. Piąty punkt to uruchomienie kamery dedykowanej do raspberry pi. W szóstym punkcie możemy zapisać się w serwisie Rastrack, który zbiera informację gdzie w świecie znajdują się malinki, wymagane połączenie z internetem. Następny punkt pozwala przetaktować malinę.
    Punkt ósmy to przejście do kolejnego menu w którym przedstawia się jako opcje zaawansowane.

Raspi-config - menu zaawansowane.


Tutaj wybieramy opcję A2 czy nadajemy nową nazwę naszemu komputerkowi. W opcji A3 dzielimy zasoby RAM pomiędzy CPU i GPU, 64 MB dla GPU dla naszych zastosowań wystarczy z pewnością.

niedziela, 21 września 2014

Uruchamiamy raspberry pi poprzez sieć.

    Świeżo upieczony właściciel RASPBERRY PI pragnie jak najszybciej uruchomić komputerek i tu pojawiają się problemy. Nie mamy adaptera HDMI/D-SUB aby podłączyć monitor, klawiatura jest na PS/2 lub nie mamy zbędnego monitora i klawiatury. Wyjściem jest połączyć się z maliną poprzez sieć ethernet. Jak to zrobić?
1. Wykorzystujemy router z domowej sieci lokalnej.
    Podłączymy się do routera, jeśli w routerze mamy ustawione automatyczne przydzielenie adresów IP poprzez usługę DHCP. W Raspbianie domyślnie mamy ustawione pobranie adresu IP poprzez DHCP. Teraz wystarczy w zajrzeć poprzez przeglądarkę www do panelu na routerze w zakładkę, gdzie można zobaczyć listę komputerów i ich adresy przydzielone poprzez mechanizm DHCP. Jeżeli ten sposób odpada, ponieważ nie mamy routera lub DHCP jest wyłączone można sobie poradzić w inny sposób.
2. Połączenie bezpośrednie pomiędzy komputerem i  Raspberry.
   Podpinam kabel ethernetowy bezpośrednio pomiędzy maliną a moim notebookiem. Nie musi być to kabel crossowany, Raspberry sama wykryje typ kabla i ustawi w odpowiedni  W notebooku wybieram  w Panelu Sterowania, Centrum Sieci i Udostępniania opcję Połączenia sieciowe. Otwieram właściwości karty WIFI prawoklikiem i w zakładce Udostępnienie zaznaczam ptaszek: Zezwalaj innym użytkownikom sieci na łączenie się z internetem poprzez połączenie internetowe tego komputera. Tak jak na zrzucie ekranu poniżej:

Zrzut ekranu z otwartym Panelem Sterowania.

Wybranie tej opcji spowoduje  przydzielenie automatycznie karcie  ethernetowej w notebooku nowego adresu (u mnie było 198.168.137.1) oraz uruchomienie DHCP. Po zainstalowaniu systemu, włożeniu karty w slot SD w malinie, podajemy zasilanie i czekamy na uruchomienie systemu.
     Jak się dowiedzieć jaki adres został przydzielony? Uruchamiamy w Windows z menu start wiersz poleceń cmd i wydajemy polecenie:

C:>arp -a

Polecenie zwróci MAC adresy  kart sieciowych i przyporządkowane im adresy IP.

Na czerwono zaznaczony adres IP malinki.


Pojawił się adres 192.168.137.100 i to jest nasza malina.
    Następnie uruchamiamy klienta protokołu ssh, ja korzystam z PUTTY. Wpisujemy adres IP i wreszcie możemy połączyć z naszym komputerkiem.

Okno programu Putty z wpisanym adresem malinki w polu Host Name(or IP address).


Teraz po wyświetleniu się konsoli logujemy się w systemie, wpisujemy login, czyli  "pi" oraz hasło "raspberry" (hasło nie wyświetla się podczas wpisywania). Po poprawnym zalogowaniu się, za pierwszym razem wyświetli się program konfiguracyjny raspi-config. Opis w następnym poście.

sobota, 20 września 2014

Przygotowanie karty SD, instalacja systemu.

    Na malinkę istnieje kilka dystrybucji systemu linux, jednak ja używam Raspbiana opartego o Debian  Whezzy. Obraz systemu można pobrać tutaj. Do nagrania karty SD po Windowsem można użyć darmowego i bardzo prostego programu Win32DiskImager.  Poniżej widać zrzut ekranu.



   Klikając na ikonkę folderu wybieramy obraz systemu, na  następnie opcję zapisz w celu przeniesienia obrazu na kartę SD. Po zakończeniu zapisu, co program sygnalizuje nowym okienkiem z komunikatem, że karta SD jest gotowa. Teraz trzeba umieścić kartę w gnieździe SD w malinie, podłączyć zasilacz i uruchomić malinkę z świeżym systemem operacyjnym. W następnym poście opiszę jak podłączyć się do malinki po sieci,  jeżeli nie mamy dodatkowej monitora i klawiatury.