2012-12-31

Zabawy z MOTD

Okres świąteczny więc nieco luźniejszy temat.
Ten post nie dotyczy tylko raspberry, ale ogólnie systemów linux/unix i przydatny jest raczej przy większej ilości serwerów/komputerów, ale kto nam zabroni trochę się pobawić;)

MOTD - czyli message of the day - w systemach Linux tekst wyświetlany po zalogowaniu się do systemu. W ten sposób zazwyczaj ostrzegamy, że nieautoryzowany dostęp do systemu jest karalny, a także możemy przekazywać różne informacje logującym się użytkownikom (którzy zazwyczaj tego nie czytają ;) ).
Ponadto może być wykorzystany do wyraźnego rozróżnienia systemów (przydatne jak ktoś pracuje późną nocą na dużej ilości serwerów).
No i przydatne żeby się nieco pobawić ;) 

Jest kilka pakietów, które mogą nam pomóc urozmaicić nieco nasze motd. 

figlet - "graficzne" przedstawienie tekstu 
figlet "M A L I N K A"



cowsay - (jakkolwiek dziwnie to brzmi) krowa lub inne zwierzę przekazuje nam jakąś treść
fortune-mod - jeśli ktoś chce jeszcze urozmaicić swój wpis o generowane cytaty lub słynne zdania...

przykładowe połączenie cowsay z fortune 
 /usr/games/fortune -s |  /usr/games/cowsay -f /usr/share/cowsay/cows/www.cow




Żeby sprawdzić wszystkie możliwości
for i in `ls /usr/share/cowsay/cows/`; do /usr/games/fortune -s | /usr/games/cowsay -f $i; done

Do wszystkich komend są dobre manuale, które polecam przejrzeć.

Ponadto możemy jeszcze dodać parę kolorków, np:
 echo  "$(tput setaf 1) `figlet R a s p b e r r y`"


Jak to wykorzystać? Możemy po prostu przekierować wynik do pliku /etc/motd lub stworzyć skrypt, który (jeśli chcemy mieć w jakiś sposób zmienną treść) będzie to robić przy każdym starcie systemu lub co jakiś czas (w cron-ie).

Przy okazji możemy edytować też plik /etc/issue - treść będzie widoczna lokalnie zanim się zalogujemy na konsoli.

A przy okazji - w związku z aktualną datą:


2012-12-27

Czujnik temperatury


Kolejnym krokiem w moich testach jest czujnik temperatury. Zakupiłem bardzo typowy, łatwo dostępny w Polsce czujnik DS18B20, kosztuje niecałe 4zł.

Dane techniczne:
DS18B20 - Czujnik temperatury TO92
  • Napięcie pracy: 3 - 5,5V
  • Mierzona temperatura: -55°C - + 125°C
  • Dokładność: 0,5°C
  • Interfejs: 1-Wire
  • Obudowa: TO92

Źródło: electropark.pl


Interfejs 1-wire powinien być możliwy do uruchomienia w każdym najnowszym jądrze...
Jeśli ktoś ma z problem z 1-wire polecam zajrzeć tutaj:

albo użyć systemu Adafruit - Occidentials:

W każdym razie na najnowszym Raspbianie również działa.

OSTRZEŻENIE !
Przy podłączaniu wszelkich kabelków należy zachować ostrożność, gdyż może zakończyć się to uszkodzeniem sprzętu lub uszczerbkiem na zdrowiu. Robisz to na własną odpowiedzialność.

UKŁAD

Tradycyjnie opis GPIO możemy znaleźć TUTAJ

Pierwszy pin czujnika to GND
Drugi pin do GPIO 4 (4 z lewej) oraz rezystor 4k7 do +
trzeci pin do +
no i + do 3.3V w RPI




Następnie ładujemy moduły (można je oczywiście dodać na stałe w /etc/modules)
sudo modprobe w1-gpio
sudo modprobe w1-therm

i weryfikujemy
cd  /sys/bus/w1/devices/

tu powinien być katalog zaczynający się na 28-...
# cat 28-000004458ce3/w1_slave 

3e 01 4b 46 7f ff 02 10 6c : crc=6c YES
3e 01 4b 46 7f ff 02 10 6c t=19875


czyli w moim przypadku temperatura to około 19,87 °C (wartość t= podzielona przez 1000)

MRTG
Jakiś czas temu napisałem krótkiego posta jak skonfigurować mrtg. Teraz jeden praktyczny pomysł jak to wykorzystać.
Podepniemy tu wyniki z czujnika, żeby rysowało nam wykresy.
Dodatkowo (dla większego bajeru;) ) jako porównanie dodamy drugą wartość - np temperaturę ze stolicy (to już oczywiście ściągane z internetu - np z www.wunderground.com)
Od razu zaznacze, że zapewne da się to zrobić inaczej/łatwiej, ale jako, że nie mam duszy programisty zrobiłem to właśnie tak.

Najpierw upewniamy się, że mamy zainstalowany pakiet links
Szukamy na www.wunderground.com miasta np Warszawa, klikamy na nazwie stacji pogodowej... na samym dole jest link do CDF (Comma Delimited File)
w przypadku Wawy ostateczny link to:
http://www.wunderground.com/history/airport/EPWA/2012/12/25/DailyHistory.html?format=1
ostatnia linia to najbardziej aktualny odczyt

W międzyczasie przypomniało mi się, że MRTG zaokrągla liczby (nie bierze pod uwagę wartości po przecinku, czyli 20,46°C to po prostu będzie 20). Dlatego postanowiłem zrobić małe obejście i pomnożyć każdy wynik * 10 - żeby mieć na wykresach nieco większą dokładność (czyli 20,46°C - to będzie 204 w moim przypadku). Tu tylko zaznaczę, że równie dobrze można wykorzystać czyste rrdtool, która ma dokładność do 3 miejsc po przecinku - ale szczerze mówiąc nie chciałem na to już zużywać zbyt dużo czasu.

Tak więc do /etc/mrtg.conf dodajemy

Title[temper]: Temperatura * 10
PageTop[temper]: Temperatura * 10
Target[temper]: `/projekty/temperatura/getTemp.sh`
MaxBytes[temper]: 500
Options[temper]: nopercent,growright,nobanner,nolegend,noinfo,gauge
ShortLegend[temper]: C
LegendI[temper]: Temperatura dom * 10
LegendO[temper]: Temperatura SF * 10
YLegend[temper]: Stopnie C

Tworzymy skrypt, który będzie weryfikował temperaturę lokalnie i z internetu.

#!/bin/bash

DATAdlaLINKSA=`date +%Y/%m/%d`
LINK_TEMP="http://www.wunderground.com/history/airport/EPWA/$DATAdlaLINKSA/DailyHistory.html?format=1"

# weryfikacja czy załadowany jest moduł
lsmod | grep w1_therm > /dev/null 2>/dev/null
if [ $? = 0 ]
then
        echo ok >/dev/null
else
        sudo modprobe w1_gpio
        sudo modprobe w1_therm
fi

TEMPczujnik=`cat "/sys/bus/w1/devices/28-000004458ce3/w1_slave"  | grep "t=" | cut -d "=" -f 2`
echo "scale=2;  $TEMPczujnik / 100" | bc

TEMPWAW=`links -width 150 -dump $LINK_TEMP | tail -1 | cut -d "," -f 2`
echo "scale=2; $TEMPWAW * 10" | bc


Przy zrzucie stronki przez links - ostatnia linia (zebrana przez tail -1) pokazuje standardowo tylko godzinę... pewnie jest na to inne rozwiązanie, ale nie chciałem za bardzo wnikać i poszerzyłem po prostu zakres dla linksa (-width 150).

Odpalamy jeszcze raz indexmaker i po jakimś czasie powinniśmy mieć wykresy.


Niebieska linia to wyniki z internetu, a zielone słupki to nasz czujnik.

Jeśli chodzi o już zupełnie praktyczne zastosowanie - myślę, że trochę tego jest - np. monitor temperatury w garażu, szklarni, pomieszczenia w którym szykujemy wino, serwerowni itp.
Można sięgnąć nieco (naprawdę tylko nieco) głębiej do kieszeni i zakupić wodoodporny czujnik i monitorować temperaturę płynów itp.

2012-12-24

Pierwsze kroki z elektroniką


WSTĘP

Zamówione części elektroniczne dotarły w końcu na miejsce, więc nadeszła pora na pierwsze testy.
Na początek zamówiłem min. :
trochę diod LED, 
trochę kabelków połączeniowych (na początek póki nie wykorzystam Cobbler-a szczególnie przydadzą się kabelki męsko - żeńskie), 
zestaw rezystorów,
wyświetlacz,
potencjometry,
przyciski,
kilka czujników (między innymi czujnik temperatury).
Dostałem też w prezencie używaną płytkę stykową (na 830 pól). Delikatnie stopiony kawałek ale działa :)

Z czasem przedstawię tu więcej szczegółów.

Do takich zabaw z RPI bardzo przydatna jest znajomość python-a, której na tą chwilę nie posiadam (a raczej znam tylko zupełne podstawy), więc ostatnio wolne chwile spędzam na dokształcaniu się z tego języka programowania. W międzyczasie - krótko mówiąc - wykorzystałem gotowce z internetu.

OSTRZEŻENIE !
Przy podłączaniu wszelkich kabelków należy zachować ostrożność, gdyż może zakończyć się to uszkodzeniem sprzętu lub uszczerbkiem na zdrowiu. Robisz to na własną odpowiedzialność.

Na początek należy upewnić się, że mamy zainstalowane paczki:
python-rpi.gpio
python-dev

DIODA LED

Źródło: greenprophet.com

Dioda LED - czyli w tym przypadku odpowiednik "hello world" dla programistów. Niemal każdy zaczyna od właśnie tego kroku.
O czym należy pamiętać?
Anoda (negativ) - to ta krótsza nóżka - nieraz ma "flat spot" - czyli płaski bok.
Katoda (positiv) - ta dłuższa.

Diody pracują z odpowiednimi parametrami. W moim przypadku (dla diody zielonej) to 
Napięcie pracy: 2,3V
Prąd: 20mA

Jak wiemy porty GPIO w RPI działają z napięciem 3,3V. Gdybyśmy podłączyli bezpośrednio taką diodę do portu GPIO to najprawdopodobniej uległa by ona uszkodzeniu. Należy więc dobrać odpowiedni rezystor.

Wzór jest bardzo prosty: 

R=(V wyj - V led)/I led 

czyli w tym przypadku: 

R=(3,3-2,3)/0,02

0,02 - czyli 20mA
Wynik to 50 Ohm.

Najbliższa dostępna wartość (bezpiecznie trzeba brać wyższą) to 56Ohm i taki muszę dobrać rezystor.
Jeśli komuś niezbyt chc>e się liczyć może się posłużyć min. tym narzędziem: 

Rezystory po przesyłce są oczywiście opisane, ale jak gdyby ktoś nie wiedział który ma wymaganą wartość możemy się posłużyć oznaczeniami. Zazwyczaj rezystory mają 4 kolorowe paski i na ich podstawie możemy oszacować wartość. 

Oznaczenie kolorów:
0 - czarny
1 - brązowy
2 - czerwony
3 - pomarańczowy
4 - żółty
5 - zielony
6 - niebieski
7 - fioletowy
8 - szary
9 - biał
y

Pierwsze 2 wstęgi to wartość, trzecia to mnożnik, a czwarta to tolerancja (w tym przypadku najczęściej spotykany jest kolor złoty, oznaczający +/- 5%).

Czyli np rezystor z paskami :
brąz czarny czerwony i złoty

Wyliczamy:
brąz (1), czarny (0)  - czyli 10 
czerwony to 2 - czyli mnożnik 100 (2 zera)
złoty +/- 5%
czyli rezystor może mieć wartości (10*100 +/- 5% ) - czyli 950 - 1050 Ohm, czyli ogólnie 1kOhm.
Oczywiście (znów) są narzędzia dla leniwych, np.

OK. Mamy diodę, rezystor i płytkę stykową z kabelkami.

Podłączamy - w jednym rzędzie anoda diody oraz rezystor podłączony do minusa. Minus płytki należy podłączyć do GND (ground) w RPI - np port 3 w prawym rzędzie.
Przypomnę tylko że opis GPIO jest TUTAJ 

Następnie katodę diody podłączamy np do portu GPIO 14 w RPI - czyli 4 w prawym rzędzie.




Następnie musimy utworzyć/skopiować skrypt obsługujący porty (może być w różnych językach, ja wybrałem python-a).
Najpierw należy upewnić się, że mamy zainstalowane potrzebne pakiety:
apt-get install python-rpi.gpio python-dev


Przykładowy skrypt:
import RPi.GPIO as gpio
import time

#set up pin 14 as an output
gpio.setmode(gpio.BCM)
gpio.setup(14, gpio.OUT)

gpio.output(14, gpio.HIGH)
time.sleep(3)
gpio.output(14, gpio.LOW)

Ewentualnie zamiast 3 ostatnich linii możemy spróbować pętle:

while True: 
           gpio.output(14, gpio.HIGH) 
           time.sleep(3) 
           gpio.output(14, gpio.LOW) 
           time.sleep(3)


i dioda będzie migać dopóki nie przerwiemy.

TACT SWITCH


Źródło: toscos.com

Dorzuciłem również "momentary button", czyli przycisk powodujący przekazanie sygnału tylko na czas wciśnięcia... Tu trzeba się upewnić, że każda (z 4) nóżka jest w osobnym rzędzie na płytce stykowej.

Układ:
nóżka pierwsza tact-a - do GPIO.17 w RPI (6 port z lewej), następnie poprzez rezystor 10k podłączamy do 3.3V, czyli 1port z lewej w RPI
druga nóżka tact-a do GND w RPI



Skrypt:
import RPi.GPIO as gpio

#set up pin 17 as an input
gpio.setmode(gpio.BCM)
gpio.setup(17, gpio.IN)

while True:
        input_value = gpio.input(17)
        if input_value == False:
                print('Przycisk wcisniety...')
                while input_value == False:
                        input_value = gpio.input(17)


Przy każdym wciśnięciu przycisku na konsoli pojawi się napis...
Przy okazji wspomnę, że w ten oto sposób możemy zrobić wyłącznik dla naszej Malinki. Czyli zamiast odcinać zasilanie przez wyciągnięcie kabla (co nie jest do końca przyjazne np dla karty SD), możemy zdefiniować czyste i bezpieczne wyłączenie systemu po wciśnięciu przycisku.

DIODA + TACT

czyli łączymy jedno z drugim...
zostawiamy układ tak jak powyżej (przy tact)
oraz znów anoda diody z rezystorem do innego portu GND
a katoda diody do portu GPIO 14 w RPI



Skrypt:
import RPi.GPIO as gpio
import time

#set up pin 14 as an output and 17 as input
gpio.setmode(gpio.BCM)
gpio.setup(14, gpio.OUT)
gpio.setup(17, gpio.IN)

while True:
        input_value = gpio.input(17)
        if input_value == False:
                gpio.output(14, gpio.HIGH)
                time.sleep(3)
                gpio.output(14, gpio.LOW)
                while input_value == False:
                        input_value = gpio.input(17)

spowoduje zapalenie diody na 3 sekundy po wciśnięciu guzika. 

Podstawy więc zaliczone. Łatwizna.

2012-12-21

Wesołych świąt!

W związku ze zbliżającymi się Świętami składam wszystkim życzenia!

WESOŁYCH ŚWIĄT!!!

Spełnienia marzeń i ciekawych projektów z raspberry pi (i nie tylko)

Źródło: conoroneill.net

2012-12-17

mapa świata RPI

(i znów) Ciekawostka

Chcesz zobaczyć kto i gdzie kupił już Raspberry? Chcesz dołączyć do tej społeczności? :)


Wejdź na stronę:
http://rastrack.co.uk/

Mapa utworzona przez 16-letniego Ryan-a Walmsley.
Na tą chwilę zarejestrowano tam 16663 urządzeń (np niejaki Mister Penguin na Antarktydzie ;) )

Proces produkcji RPI

Ciekawostka.
Jeśli chcesz się dowiedzieć jak powstaje raspberry - a także np jak to możliwe, że dziennie fabryka wytwarza 4000 RPI (sztuka co 7.5 sekundy) proponuję zajrzeć tutaj:


A także obejrzeć poniższy filmik:



2012-12-16

Żywotność karty SD a Linux

Używanie karty SD w RPI ma sporo plusów, ale oczywiście karty te mają ograniczoną żywotność (np. ilość zapisów) . Dlatego ważne są backupy ważnych plików no i trzeba być przygotowanym, że za jakiś czas trzeba będzie kupić kolejną kartę.

Źródło: raspberrypi.org


Jak nieco opóźnić ten proces? 

Ważnym czynnikiem jest posiadanie, w miarę możliwości, sporej ilości wolnego miejsca, żeby zapisy nie były ciągle na tych samych sektorach.
Innym sposobem jest ograniczenie ilości zapisów na kartę. 
Co generuje największą ilość takich operacji?  
Najczęściej są to logi. 
Co możemy zatem zrobić?
Możemy /var/log umieścić na zewnętrznym dysku (lokalnym/sieciowym) albo utworzyć do tego celu mały ramdisk. 
Każde z rozwiązań ma swoje plusy i minusy - teraz opiszę ostatnią opcję.

Możemy utworzyć oczywiście ręcznie ramdisk i zamontować /var/log na nim, ale ja wykorzystam gotowe rozwiązanie LINK 

Wg dokumentacji pliki będą zapisywane na wygenerowanym ramdisku do momentu restartu systemu lub serwisu (wtedy pliki zostaną przeniesione na dysk (przez rsync)). Jeśli skończy się miejsce to serwer niestety zacznie swapować więc musimy albo wcześniej zrestartować serwis ramdisk albo usunąć pliki.

Instalacja jest prosta, najpierw należy pobrać pakiet lsof (zależność)
apt-get install lsof
następnie:
wget http://www.tremende.com/ramlog/download/ramlog_2.0.0_all.deb
sudo dpkg -i ramlog_2.0.0_all.deb
Jeszcze definiujemy ile pamięci ma być przeznaczone:
sudo vi /etc/default/ramlog
TMPFS_RAMFS_SIZE=25m
I restartujemy :
sudo reboot

Teraz cały katalog /var/log powinien znajdować się na ramdisku.
# df -h | grep ramlog

ramlog-tmpfs     25M  5.2M   20M  18% /var/log 

UPDATE.
W związku z tym, że uruchomiłem MRTG i wrzuciłem jeszcze parę dodatków do monitorowania (opis TUTAJ), postanowiłem rozszerzyć nieco ideę ramdisku i ograniczyć kolejne zapisy na kartę. Popracowałem bowiem z katalogiem /var/www/mrtg (w końcu to kilkanaście zapisów co 5 minut). 
Można oczywiście stworzyć oddzielny ramdisk (np wykorzystując TEN opis), ale należy pamiętać, że po reboocie stracimy wszystkie pliki, więc trzeba by było stworzyć skrypt synchronizujący pliki (np przez rsync). Jako, że mamy tu gotowe rozwiązanie - poszedłem drogą na skróty i utworzyłem link dla katalogu mrtg na /var/log. W ten sposób ramlog również zajmie się plikami mrtg.
Na szybko:
mkdir /var/log/mrtg_pliki

cp -rapv /var/www/mrtg /var/log/mrtg_pliki

cd /var/www

mv mrtg mrtg.BACKUP

ln -s /var/log/mrtg_pliki/mrtg/ /var/www/mrtg

UPDATE.2.
Po pewnym czasie dodałem wpis do cron-a
15 * * * * root /etc/init.d/ramlog reload
spowoduje to, że jeśli malinka straci dostęp do sieci lub się np zawiesi, nie stracimy zbyt dużej ilości danych. W ten sposób bowiem co godzinę logi z ramdisku będą zapisywane na karcie SD.

Tak tylko dodam, że ta idea przydatna jest również wtedy, gdy chcemy przyspieszyć odczyt często używanych plików - np przy udostępnianiu plików przez apache.

2012-12-14

MRTG na RPI

MRTG umożliwia monitorowanie przez wyświetlaniem ładnych wykresół tak naprawdę czegokolwiek, co może zwrócić wartość liczbową. 
Po więcej szczegółów odsyłam na stronę twórcy Tobi Oetiker-a LINK



Ja mam zamiar wykorzystać to do kilku celów - narazie pokażę jak przebiega instalacja i podstawowa konfiguracja.
apt-get install mrtg apache2 snmp snmpd
do wyświetlania potrzebny jest serwer www (nie musi być oczywiście apache) oraz snmp które umożliwi wyciąganie różnych danych.

Następnie edytujemy plik:
/etc/snmp/snmpd.conf

i umożliwiamy pracę na wszystkich intefejsach 
agentAddress udp:161
dajemy "full access" dla lokalnego serwera
rocommunity public  localhost
Reszta może zostać jak w standardzie. Następnie generujemy konfig mrtg
cfgmaker public@localhost > /etc/mrtg.cfg
i "odhashowujemy" w tym pliku (mrtg.cfg) co chcemy monitorować

Na tej podstawie generujemy plik html dla apache 
indexmaker /etc/mrtg.cfg > /var/www/mrtg/index.html
i reszta za nas zrobi (standardowo co 5 minut) cron
/etc/cron.d/mrtg
Po jakimś czasie powinny generować się obrazki (możliwość podejrzenia dziennych, tygodniowych i rocznych statystyk).
http://IP_ADRES_RPI/mrtg/

W podstawowej konfiguracji monitorowana jest aktywność sieciowa, ale tak naprawdę możliwe jest podpięcie "wszystkiego" - nawet na podstawie utworzonych przez nas skryptów.

Jeszcze tylko 2 małe modyfikacje dotyczące syslog-a. W pliku /etc/default/cron ustawiłem opcję:
EXTRA_OPTS="-L 0"
W pliku /etc/default/snmpd zmodyfikowałem
SNMPDOPTS='-LS 0-4 d -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid' 

Zapobiegnie to zbędnym wpisom w logu przy każdym uruchomieniu zadania z cron-a, np. w stylu:
Dec 9 18:35:05 raspbian snmpd[2542]: Connection from UDP: [127.0.0.1]:48698->[127.0.0.1]
albo komunikatów z mrtg (cron).

2012-12-13

logo RPI :)

Mała ciekawostka.
Przeglądając forum RPI natrafiłem na wątek niejakiego Antario, który udostępnił stworzony przez siebie model 3D loga RPI. Naprawdę dobra robota :)

Mała próbka:









           

Może się komuś przydać.

Cała reszta tutaj:
http://sta.sh/2264mkup8sf6

a tutaj cały wątek:
http://www.raspberrypi.org/phpBB3/viewtopic.php?f=41&t=2323

2012-12-12

no-ip - czyli co zrobić jak nie mamy stałego IP

Dziś na szybko ...
nie dotyczy to oczywiście samego raspberry, tylko ogólnie dostępu z internetu w przypadku braku stałego publicznego IP. Jak wiemy dostawcy internetu często udostępniają publiczne IP ale w wersji dynamicznej, czyli nasz adres po prostu zmienia się co jakiś czas. 
Żeby dostać się do naszej Malinki z zewnątrz (np z pracy) musielibyśmy w jakiś sposób monitorować nasz adres co jest krótko mówiąc uciążliwe. Tak więc możemy wykorzystać np no-ip, który w takiej sytuacji umożliwia przypisanie nazwy DNS-owej. 


Źródło: no-ip.com
Jak to działa? 
Instalujemy i uruchamiamy na naszym komputerze demona no-ip, który co pewien zdefiniowany czas update-uje nasze IP w DNS-ie no-ip. I tyle :)
Są na to inne sposoby (np często dostępny dynDNS bezpośrednio na routerach), mi akurat pasuje no-ip bo od dłuższego czasu używam ich rozwiązania. 

Instalacja
Z tego co wiem nie ma jeszcze gotowej paczki pod architekturę arm - więc trzeba skompilować ją ręcznie.
Po założeniu konta na no-ip, ewentualnej konfiguracji przekierowań na routerze - ściągamy, instalujemy i uruchamiamy paczkę: 
wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz
tar xf noip-duc-linux.tar.gz
wchodzimy do nowo utworzonego katalogu i:
make
sudo make install
sudo /usr/local/bin/noip2
I to by było na tyle.

2012-12-11

raspberry pi + bluetooth + dualshock 3

Jak wspomniałem TUTAJ zakupiłem klucz bluetooth na USB. Co zrobić żeby go uruchomić?




Podobnie jak z wifi sprawdzamy czy został poprawnie wykryty (np przez lsusb). W moim przypadku:
Bus 001 Device 006: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Następnie należy zainstalować wymagane paczki
apt-get install bluetooth bluez-utils blueman
upewniamy się, że uruchomiony jest demon
/etc/init.d/bluetooth status
po czym możemy włączyć bluetooth w telefonie czy laptopie i zweryfikować, czy da się go wykryć z RPI
# hcitool scan
Scanning ...

        xx:xx:xx:xx:xx:xx      n/a
U mnie szybko wykryło mojego laptopa.

Ponadto możemy zweryfikować czy wszystko w porządku w:
# hciconfig -a
hci0:   Type: BR/EDR  Bus: USB
        BD Address: xx:xx:xx:xx:xx:xx  ACL MTU: 384:8  SCO MTU: 64:8
        UP RUNNING PSCAN
        RX bytes:1520 acl:0 sco:0 events:47 errors:0
        TX bytes:458 acl:0 sco:0 commands:47 errors:0
        Features: 0xff 0xff 0x8f 0xfe 0x9b 0xf9 0x00 0x80
        Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
        Link policy: RSWITCH HOLD SNIFF PARK
        Link mode: SLAVE ACCEPT
        Name: 'raspberrypi-0'
        Class: 0x420100
        Service Classes: Networking, Telephony
        Device Class: Computer, Uncategorized
        HCI Version: 2.0 (0x3)  Revision: 0x7a6
        LMP Version: 2.0 (0x3)  Subversion: 0x7a6
        Manufacturer: Cambridge Silicon Radio (10)
Oczywiście bardzo istotne jest tu zasilanie, którego jakości bardzo potrzebuje ten klucz. Przypadkiem wysunęła mi się wtyczka zasilania od powered huba i bluetooth niezbyt chciał działać. Pojawiały się błędy I/O error, connection timeout i hciconfig też lekko szalał.

Z działającym bluetooth można podłączyć np klawiaturę i mysz lub jeśli mamy problem z wifi lub nie mamy internetu w domu - teoretycznie możemy udostępnić internet z telefonu poprzez bluetooth i umożliwić dostęp dla RPI. 

Ja mam plan związany z kontrolerem do PlayStation - Dualshock 3.

Źródło: productreview.com

Znalazłem fajny, krótki opis TUTAJ
Pokrótce podstawowe kroki:

Ściągamy kod i kompilujemy:
wget http://www.pabr.org/sixlinux/sixpair.c
gcc -o sixpair sixpair.c -lusb
Podłączamy Dualshock kablem USB do RPI i odpalamy:
sudo ./sixpair

Current Bluetooth master: xx:xx:xx:xx:xx:xx 
Setting master bd_addr to: xx:xx:xx:xx:xx:xx
W ten sposób parujemy DS3 i RPI. 

Następnie:
wget http://sourceforge.net/projects/qtsixa/files/QtSixA%201.5.1/QtSixA-1.5.1-src.tar.gz
tar xfvz QtSixA-1.5.1-src.tar.gz
cd QtSixA-1.5.1/sixad
make
sudo mkdir -p /var/lib/sixad/profiles
sudo checkinstall
czyli ściągamy pakiet qtsixa i kompilujemy moduł sixad.
Po czym uruchamiamy jednorazowo:
sudo sixad --start
lub startujemy demon sixad.

Już oczywiście możemy odłączyć kabel Dualshock (potrzebny tylko do parowania) i po wciśnięciu przycisku PS - diody powinny radośnie zaświecić i kontroler powinien przez chwilę wibrować.

W syslog widać będzie coś w tym stylu:
Dec  10 17:14:18 raspberrypi kernel: [  188.457540] input: PLAYSTATION(R)3 Controller (xx:xx:xx:xx:xx:xx) as /devices/virtual/input/input2
Dec  10 17:14:22 raspberrypi sixad-sixaxis[2407]: Connected 'PLAYSTATION(R)3 Controller (xx:xx:xx:xx:xx:xx)' [Battery 05]
Czyli misja zakończona sukcesem (szczególnie fajnie, że przy wykorzystaniu klucza za 1€)
Co teraz z tym zrobić? Mam mały plan - ale szczegóły wkrótce.

W międzyczasie polecam przejrzeć jeszcze linki na temat bluetooth i raspberry:
czy też ogólnie o współpracy Dualshock z Linuxem : 

Przy okazji - jeśli ktoś nie ma PS3, a ma np Wii - może również podpiąć ich kontroler. Szczegóły np. http://www.brianhensley.net/2012/08/wii-controller-raspberry-pi-python.html.

2012-12-10

Raspberry PI + XBMC

Po uruchomieniu jedną z pierwszych rzeczy była próba instalacji XBMC.


Źródło: xbmc.org

Jak już wspomniałem TUTAJ- jako system można po prostu wykorzystać Xbian i mieć wszystko gotowe.
Po instalacji (defaultowy user xbian:raspberry) odpala się xbian-config (podobny do rasp-config), dzięki któremu łatwo i szybko możemy skonfigurować podstawowe elementy. Co ciekawe od razu zaimplementowana jest biblioteka libcec, która umożliwia obsługę xbmc za pomocą standardowego pilota do TV (obsługa przez hdmi)

W razie czego szybka weryfikacja:
# cec-client -l
Found devices: 1
device:              1
com port:            RPI
firmware version:    1
type:                Raspberry Pi
i możemy używać xbmc bez użycia klawiatury czy myszy.

Ale przetestowałem to również na Raspianie i muszę powiedzieć że też się da.

Przyda się kilka dodatkowych bibliotek 
sudo apt-get install libplist1 libmicrohttpd10 libtinyxml2.6.2 libyajl2 libssh-4 liblzo2-2 libfribidi0 liblockdev1 
Następnie ściągamy paczki przygotowane przez niejakiego Christopha - autora strony: 


Przy okazji wspomnę - że można pójść łatwiejszą drogą - udostępniony tu jest bowiem obraz iso gotowego systemu z zainstalowanymi już paczkami. Dobra robota :)
Co ważne jest tu również wspomniana wyżej paczka libcec, która instaluje się i działa bez problemu.

Instalując z paczek (przynajmniej w aktualnej wersji) jest problem z uruchomieniem xbmc. Brakuje bowiem biblioteki:
ldd /usr/lib/xbmc/xbmc.bin
(..)
libtag.so.1 => not found
(..)
mimo zainstalowanej paczki taglib

po weryfikacji paczki
dpkg -L taglib
widać że biblioteki są zainstalowane w /usr/local/lib

Więc albo dodajemy ten katalog jako źródło bibliotek albo (mniej profesjonalnie)
for i in `ls`; do sudo ln -s /usr/local/lib/$i /usr/lib/$i; done
i na koniec
cd /usr/lib
ln -s libtag.so.1.12.0 libtag.so.1
Pamiętamy, że uruchamiamy aplikację przez :
sudo /usr/lib/xbmc/xbmc.bin
UPDATE:
Po wszystkim na stronie autora znalazłem również rozwiązanie problemu. W sumie niemal takie same LINK

Na instalację XBMC jest też inny sposób - opisany TUTAJ - ale jeszcze go nie testowałem.

Oczywiście należy również dobrać odpowiednio ilość pamięci dla GPU - wg zaleceń należy przydzielić 128 MB - czyli zostanie 384 MB pamięci RAM do wykorzystania na system. Można to ustawić np przez raspi-config.

Tak więc wszystko działa ok - jednakże trzeba przyznać, że wolniej niż np na Xbianie.

Jeszcze tylko dodam, że (niezależnie od dystrybucji) warto w xbmc skonfigurować repozytorium fusion. Więcej szczegółów tutaj:
http://www.xbmchub.com/blog/2012/04/24/fusion-easy-addon-installation-for-xbmc/

Źródło: twimg.com


YES! I'm so gooood ;)

Wybór dystrybucji. Pierwsze uruchomienie

Pierwszym krokiem jest wybór dystrybucji. 
Lista dostępnych jest tutaj:

Oczywiście wszystko zależy od tego co potrzebujemy. 
Jeśli zależy nam tylko na Media Center to polecam Xbian - lekki, odchudzony (zmieści się na bez problemu kartę 2GB), preinstalowane xbmc, spora ilość modułów do jądra więc nie powinno być problemów z wykryciem karty wifi itp. Podobny jest też OpenElec, czy Raspbmc.
Ja postanowiłem przetestować Xbian, a także - jako że - zależy mi jednak na czymś więcej, bo - jak wspomniałem - chce pobawić się z różnymi urządzeniami, diodami, czujnikami, itp. więc wybrałem również standardową, polecaną wersję Raspbian. Tu jest większa szansa na uruchomienie wszelkich dodatków bez zbędnych wysiłków. 
W sumie do zabawy z takim sprzętem można polecić też system autorski Adafruit.

Po wyborze - iso wrzucić można na kartę poprzez proste dd lub (pod Windowsem) Image Writer

PIERWSZE URUCHOMIENIE

Na dzień dobry odpala się raspi-config, gdzie można ustawic podstawowe rzeczy (jak np. układ klawiatury), rozszerzyć partycję, tak żeby wykorzystać pełną kartę SD, zmienić hasło itp.
Jest też opcja overscan - która jest pomocna przy problemach z prawidłowym wyświetlaniem konsoli na ekranie.

Dość ważna uwaga - po pierwszym  starcie i zmianach zalecane jest "czyste" wyłączenie systemu np
sudo halt

oraz w przypadku Raspbiana wygenerowanie nowego klucza ssh (żebyśmy nie mieli takiego samego jak w iso)
rm /etc/ssh/ssh_host_* && dpkg-reconfigure openssh-server
Następnym ważnym krokiem jest oczywiście dostęp do sieci. Jeśli używać kabla nie powinno być żadnych problemów, jeśli wifi nieraz musić się nieco namęczyć. 
Jeśli zakupiłeś w miarę standardową kartę (np na chipsecie Realtek) powinna działać od razu. Weryfikacja najlepiej przez lsusb. W moim przypadku:
Bus 001 Device 007: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter
Jednak niektóre karty, mimo że widoczne nie działają wcale lub mało stabilnie - wtedy trzeba doinstalować sterownik/firmware.
Weryfikacja znów jest prosta. Komenda:
sudo iwlist wlan0 scan
powinna wykryć dostępne sieci.

Sama konfiguracja wifi nie jest oczywiście skomplikowana... albo uruchamiamy X-y (startx) i po prostu namierzamy naszą sieć przez Wifi manager.
Albo jeśli mamy jakiś problem z X-ami (lub gdy wolimy konsolę) to w pliku:
/etc/network/interfaces
dodajemy:
auto wlan0
iface wlan0 inet dhcp
    wpa-ssid "SSID"
    wpa-psk "HASŁO"
Restartujemy sieć cały system i mamy działające wifi .

Kolejnym krokiem powinna być aktualizacja. 
Warto sprawdzić czy nie ma nowego firmware dla RPI. 
Dobry opis TUTAJ. Czyli:
sudo wget http://goo.gl/1BOfJ -O /usr/bin/rpi-update
sudo chmod +x /usr/bin/rpi-update
sudo rpi-update
A także polecam update oprogramowania
apt-get update
apt-get dist-upgrade
apt-get upgrade
Przy okazji (szczególnie jak ktoś ma małą kartę SD) przed instalacją paczki są ściągane do:
/var/cache/apt/archives
Żeby uwolnić trochę miejsca:
apt-get clean
Ja standardowo instaluję też parę moich ulubionych paczek:
apt-get install links mc vim screen
Przy okazji możemy też zweryfikować jaki nam się trafił chipset, sprawdzić dokładniej jaki mamy procesor oraz numer seryjny (niezbędny np przy zakupie MPEG-2 license key)
cat /proc/cpuinfo

Processor       : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS        : 697.95
Features        : swp half thumb fastmult vfp edsp java tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xb76
CPU revision    : 7

Hardware        : BCM2708
Revision        : 000e
Serial          : xxxxxxxxxxxxxxxxxxx
Oraz chipset GPU
/opt/vc/bin/vcgencmd version

Nov 22 2012 18:12:01 
Copyright (c) 2012 Broadcom
version 352766 (release)
Jeszcze istotną informacją jest podział dostępnej pamięci pomiędzy GPU a RAM. Pozwolę sobie zacytować zalecenia z wiki:

gpu_mem=16 :  16M GPU,  240M/496M ARM split :
Maximum ARM memory. Good for ARM desktop use. No accelerated video or 3D possible.
gpu_mem=64 :  64M GPU,  192M/448M ARM split : 
Reasonable ARM memory. Simple video (omxplayer) or 3D (quake) is possible.
This is the default.
gpu_mem=128 : 128M GPU, 128M/384M ARM split :
Use this for heavy 3D work, or 3D plus video. Needed for XBMC.

Rozkład możemy ustawić przez raspi-config

Przy okazji komendą vcgencmd możemy sprawdzić jeszcze kilka innych rzeczy. Żeby sprawdzić możliwości wykonujemy ją z opcją:
/opt/vc/bin/vcgencmd commands
i np. możemy sprawdzić temperaturę na pokładzie:
/opt/vc/bin/vcgencmd measure_temp
temp=37.9'C
Nieco szerszy opis TUTAJ

Tak więc wszystkie podstawowe składniki działają ...

Następny challenge:

Źródło: imgur.com

;)

2012-12-09

Już jest!!!

A więc zamówiony sprzęcik dotarł...






Myślę więc że nieaktualne jest już to stwierdzenie:

Źródło: qkme.me
ale cały czas zgodzę się z tym:

Źródło: memecrunch.com

;)

Jak wspomniałem TUTAJ zamówiłem również obudowę (przezroczystą) oraz USB hub z zewnętrznym zasilaniem. Resztę starałem się zdobyć sam. 

Jeśli chodzi o obudowę to nie popisałem się - w momencie zamówienia nie pomyślałem, że bardzo przyda się łatwy dostęp do portów GPIO, a w tej wersji obudowy nie ma możliwości wykorzystać mojej przejściówki z adafruit. Będę coś musiał wymyśleć.
W każdym razie na obudowę można znaleźć wiele pomysłów w sieci - np. z klocków lego, wersję DIY (podoba mi się TEN pomysł), itp. Jest tego sporo.

Zasilacz "pożyczyłem" od IPhone. Na wyjściu ma 5V, 1A - więc jest niemal w sam raz dla RPI.  Kabelek USB - micro usb wziąłem z Kindle.
Kartę SD też miałem w domu jako backup do aparatu. 

Jako, że domowy router mam daleko od RPI musiałem kupić również kartę wifi. Znalazłem całkiem fajną na ebayu (za ok 7 €). Pod linuxem przedstawia się następująco:

Bus 001 Device 007: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter


Źródło: amazon.com
Ponadto mam plan jeśli chodzi o bluetooth więc kupiłem takie cudo (znów na ebay - łącznie z przesyłką całe 2 € ).

Bus 001 Device 006: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)

Źródło: dreamgreenhouse.com

Co ciekawe przetestowałem klucz wifi i bluetooth razem wpięte bezpośrednio do RPI (bez powered hub) i działało dobrze (wykorzystując wifi całkiem intensywnie). Przypominam, że mam zasilacz 1A.     

Ponadto postanowiłem również pożyczyć ze swojego PlayStation kamerkę PS EYE, która może służyć również jako mikrofon.
Źródło: amazon.com

Tak informacyjnie wspomnę tylko, że jeśli komuś bardzo zależy na prawidłowym wyświetlaniu czasu to musi zakupić hardware-owy zegar RTC, gdyż RPI nie ma takiego na pokładzie. W moim przypadku - jako, że mam zamiar używać wifi - wystarczy mi klient ntp.

W przypadku wątpliwości co do sprzętu proponuję przejrzeć listę już przetestowanego przez  użytkowników. 


No i na koniec - w razie jakichkolwiek problemów polecam przeczytać najpierw:


i z mojego "krótkiego" doświadczenia - jeśli coś przestaje działać (np HDMI albo całe RPI) - proponuję wszystko odłączyć i odczekać parę minut, po czym na spokojnie spróbować ponownie. 



2012-12-05

Raspberry wysłane!

Dziś dostałem informację, że moje zamówienie zostało wysłane z UK - także podejrzewam, że w przyszłym tygodniu będzie u mnie w domu :D


Źródło: framboise314.fr


RASPBERRY PI JUŻ W DRODZE :)

2012-12-04

Hardware RPI

Żeby pobawić się z RPI i dodatkami (np czujnikami) trzeba znać kilka szczegółów na temat sprzętowej części projektu. Polecam przeczytanie informacji na stronie elinux.org, np:


Tutaj zamieszczę jedynie część informacji.

Źródło: elinux.org

WYMIARY

85.0 x 56.0 mm

WAGA

39.45 g

CPU

Procesor  ARM1176JZF-S 700 MHz - można bezpiecznie podkręcić - co testowo spróbuję później zrobić.


GPU

4-rdzeniowy układ graficzny, zgodny z OpenGL ES2.0, OpenVG, umożliwia wyświetlanie materiału jakości 1080p30, dzięki sprzętowemu dekoderowi H.264.
Fundacja podaje możliwe osiągi:
1Gpixel/s, 1.5Gtexel/s lub 24 GFLOPs
Wg fundacji graficzne możliwości są na poziomie pierwszego Xbox-a (LINK)

ZASILANIE

Z tego co wyczytałem (TU) zalecane zasilanie dla rev.B to 5V DC, 700-1200mA. Nie jest to do końca uściślone, ale podobno do prawidłowej pracy (bez podłączonych urządzeń zewnętrznych) Raspberry wykorzystuje 700mA (3.5W). Więc jeśli podłączymy dodatkowe urządzenia - a w większości przypadków tak będzie, będziemy potrzebować lepszego (mocniejszego) zasilacza lub na przykład huba USB z dodatkowym zasilaniem.  
Jest też możliwość zasilania całego Raspberry z takiego powered hub-a, jednakże musi to być "głupie" (może "nieinteligentne" to lepsze określenie ;) ) urządzenie - czyli musi podawać zasilanie cały czas - nie tylko jak port USB o nie "poprosi". 
Przy okazji na płytce rev.B jak wiadomo są 2 wejścia USB - każde z nich ma ogranicznik na 140 mA, więc jeśli coś będzie potrzebowało więcej mocy (np niektóre klucze wifi usb, dysk USB) - niezbędny jest znów "powered usb hub". Można oczywiście spróbować bez, ale stabilne działanie nie jest gwarantowane. W tym przypadku polecałbym upewnić się, że wyłączone jest wszystko co się da - w celu ograniczenia poboru energii (np nieużywane urządzenia, a także wymagający software - np. X-y)
Na zasilaczu nie ma co oszczędzać. Na forum łatwo znaleźć parę postów, w których ludzie opisują duże problemy z "chińskimi" tanimi zasilaczami. (ja sobie poradziłem bez wydania złotówki, o czym wkrótce ;) ).

Jak przetestować czy "moje" zasilanie jest ok? 
Tu przyda się trochę wiedzy i miernik.
Opis z LINK : 

Przy użyciu miernika sprawdzamy 2 punkty na RPI: TP1 i TP2 i ustawiamy na zakres 20V. Wynik powien być 5V +/- 5% - czyli 4.75 do 5.25V.

Źródło: elinux.org

Jak rozpoznać problemy z zasilaniem? 
Kilka przykładów:
* niestabilne działanie (np klawiatury przy włączonych X-ach)
* problemy z siecią (szczególnie wifi)
* błędy na karcie SD

Słynny kondensator C6
O co chodzi? Jest to kondensator o parametrach 220μF, 16V, który stabilizuje prąd dochodzący przez wtyczkę micro usb. 

Źródło: elinux.org

Czemu jest taki słynny? Zdarza się bowiem, że ... odpada. Są przypadki, gdy ludzie wyciągając kabel zasilający "opierali się" na tym kondensatorze i po prostu nie wytrzymywał :) A gwarancja tego nie obejmuje.
W przyszłych wersjach RPI ma być to zrobione nieco inaczej, póki co trzeba uważać lub używać obudowy do całego RPI (ja zamówiłem).
Z tego co wyczytałem nawet jak odpadnie, to Malinka powinna dalej działać - jednak nie będzie stabilizacji prądu co może być dla niej niebezpieczne. 
Zawsze oczywiście można spróbować ją przylutować.

GPIO

Piny GPIO (General Purpose Input/Output) - jest ich 26 (2x13) - umożliwiają podpięcie nowych urządzeń (jak np. diody, różne czujniki) bezpośrednio do RPI. Można je oczywiście podłączyć bezpośrednio do pinów (ale ostrożnie - gdyż możemy uszkodzić Malinkę), ja wykorzystam wspomniany wcześniej Cobbler Breakout Kit, czyli w tym przypadku przejściówkę między Raspberry, a płytą stykową i wszystko będę podpinać do płytki.
Tu ważna uwaga. Piny obsługują napięcie 3.3 V(i nie ma ochrony przeciwprzepięciowej!) do 8 miliamperów (softwarowo można zwiększyć do 16mA ale nie jest to zalecane). Tak więc wyjściowa moc jest limitowana do 3.3V x 0.008A = 0.0264W czyli 26 miliwatów.
Tak więc dobierając urządzenia musimy o tym pamiętać. W tym przypadku przewagę ma np Arduino, które umożliwia podpięcie urządzeń 5V. 
Źródło: elinux.org
Więcej na ten temat przy okazji podłączania innych urządzeń :)

Przy okazji - wg teorii - jako że są piny GPIO 5V - można również przy ich użyciu zasilić całe Raspberry, ale trzeba być ostrożnym i znów pamiętać, że piny te nie mają żadnego zabezpieczenia prądowego.

I jeszcze mała uwaga. Jak wspomniałem należy być bardzo ostrożnym w przypadku podłączania czegokolwiek do pinów GPIO - jednakże różne rzeczy mogą się zdarzyć i możemy się pomylić. Niestety w dużej ilości przypadku Raspberry PI jest do wyrzucenia, ale jest parę przypadków, gdzie wystarczy odłączyć Malinkę na parę godzin i jest szansa, że znów zacznie działać KLIK.

2012-12-03

Raspberry PI

Słów kilka o głównym bohaterze tej stronki.

Źródło: demoniak.ch
Chyba każdy kto tu trafi wie co to jest Raspberry PI. Nie będę więc zbyt dużo na ten temat pisać. Jest to oczywiście w pełni funkcjonalny komputer, którego zaletą (oczywiście nie jedyną) jest stosunek ceny do możliwości. Twórcy postanowili zrobić ten projekt niemal "po kosztach" - tak więc nikt tak naprawdę na tym nie zarabia, ale m.in. dostarcza miejsca pracy (ochrona brytyjskiego rynku pracy to duży motyw tutaj - do poczytania na stronie fundacji).
Wg mnie (i to był też jeden z głównych założeń projektu) jednak najfajniejszą jego cechą jest to że "pobudził" masę ludzi (w tym mnie) do wesołej twórczości. Tak naprawdę masa rozwiązań mogłaby być zrobiona na każdym komputerze, ale dopiero zakup tego małego urządzenia odblokował w ludziach prawdziwy "research mode".
Społeczność RPI rozrasta się w sporym tempie, udostępnia swoje rozwiązania, kody źródłowe, dokumentacje. Wszyscy mają (mamy) się skąd uczyć... od podstaw elektroniki, poprzez raczkowanie w Linuksie, do całkiem potężnych projektów.
Jak wspomniałem nie będę tu wiele pisał na temat samego urządzenia bo jest masa fajnie opisanych stronek. Wrzucę za to ciekawy obrazek (proponuję kliknąć i obejrzeć w lepszym rozmiarze) -  z opisem co i jak w RPI (opis dla RPI rev A. ale większość się zgadza).


Screen z magazynu The Mag PI, który przy okazji polecam KLIK
A artykuł z ostatniego numeru (wkrótce będzie bardzo aktualny) - WYPASIK :D
Wiele mówiący tytuł :
" Catch Santa using home automation " 


Polecam też przejrzeć stronkę:
http://elinux.org/RPi_Hub

Zakupy

Zamówienie na Raspberry PI złożyłem w Farnell UK w zeszłym tygodniu. Wg informacji na stronie Malinka była dostępna od zaraz - choć okazało się, że nie do końca tak jest i (podobno) wysyłka ma wyruszyć do mnie w tym tygodniu. Przy okazji z tego samego źródła zamówiłem obudowę i USB HUB z oddzielnym zasilaniem. Mam bowiem zamiar podłączyć parę dodatków na USB i dodatkowe zasilanie jest niezbędne. Resztę "skombinowałem" w domu (szczegóły później). 

Przy okazji stwierdzam, że piękne hasło "komputer za 35$" (nieraz nawet mowa o 25$ w przypadku rev. A) jest nieco naciągane. Ponieważ doliczając niezbędne akcesoria (których większość ludzi normalnie nie ma w domu) - czyli karta pamięci, kabelki, zasilacz, przesyłka (nie mówiąc już o jakimś monitorze, klawiaturze, myszce - jeśli są potrzebne) powoduje że ogólny koszt wychodzi sporo wyższy. Ale i tak nie ma co narzekać :D

Oprócz RPI z różnych miejsc zamówiłem dodatkowe elementy:
np.
Cobbler Breakout Kit

TUTAJ szczegóły.

A także trochę drobnej elektroniki (min. diody, kabelki), trochę różnych czujników. Szczegóły wkrótce, ale zdecydowanie będzie się czym pobawić :) 
Niestety komplet będę miał dopiero w okolicach świąt, więc muszę uzbroić się w cierpliwość.

Hello World!!


CZEŚĆ!

To jest pierwszy wpis na tym "blogu". Z czasem (mam nadzieję) będą tu pojawiać się wpisy na temat Raspberry PI i moich prób zrobienia czegoś ciekawego (i nieraz przydatnego) małym kosztem. Oczywiście przy wsparciu popularnej już Maliny. Traktuję to jako element nauki, a także przyjemnego i "twórczego" sposobu spędzenia wolnego czasu :)

Tak naprawdę stronkę tworzę w celach dokumentacyjnych - żebym  po pewnym czasie nie musiał odkrywać czegoś na nowo...

A jeśli przy okazji komuś cokolwiek tutaj się przyda - tym lepiej. Jak narazie cała moja wiedza pochodzi właśnie z takich mniej więcej miejsc (blogi, fora, itp) tak więc odwdzięczyłbym się społeczności :) 

Na wstępie zaznaczę, że mój poziom wiedzy z zakresu elektroniki jest na tą chwilę bardzo niski - ale spróbuję mimo to udowodnić, że "się da".