marți, 15 iulie 2014

Raspberry Pi = metoda "cum sa inveti programare"

Probabil ca daca citesti aceste rinduri esti interesat de programare si de hardware / electronica. Asta e doar de bine, caci uita-te in jur: peste tot gasesti electronica, peste tot sunt dispozitive electronice care "gandesc" intr-o anumita masura, deci e bine sa sti despre ele, poti avea chiar o viata profesionala in domeniu.

Ca sa te apuci de programare e simplu, ai deja un calculator, mai pui pe el ceva gen Python (gratis / OpenSource) si esti gata de drum. Ca sa te apuci de electronica e ceva mai lung drumul, ai nevoie de rabdare, de scule (care costa bani, daca nu iti place electronica, ramai cu ele, pe cand la programare e simplu, daca mergi pe OpenSource nu costa bani, daca nu iti place, un Delete - si nu mai sunt), indeminarea si experienta se castiga in timp etc.

Daca perseverezi, ajungi sa le faci pe ambele cumva, adica programul scris de tine sa interactioneze cu mediul extern: sa trimita semnale sau sa receptioneze semnale: aprinde un bec, stie ca ai apasat un intrerupator (cele mai simple lucruri).

Chestia e ca unii, fundatia Raspberry Pi au incercat sa atraga lumea spre acest domeniu - unde programezi, mai inveti ei electronica, apoi lipesti fire, aprinzi beculete etc.

De ceva vreme a aparut conceptul de single board computer (am scris aici despre BeagleBoard) si iata ca obiectul in sine - placa electronica a devenit accesibila ca si pret. Asta in forma Raspberry Pi proiectata de membrii fundatiei RPi - o placa electronica de marimea unui card bancar, cu porturi USB, cu port de retea, cu conector HDMI full HD, cu conector de alimentare micro USB.

Aici gasiti detalii despre miscarea RaspberryPi si aici gasiti de cumparat placa (nu e o clona, scrie pe ea Made in UK, element14).

Bun, acum eu va sfatuiesc sa luati o placa "cheala", caci aveti de toate in casa astfel incat sa o puteti utiliza si mai si invatati ceva pe deasupra.

Ce aveti nevoie:
-tastatura si maus USB
-TV cu intrare S-video (mufa RCA) sau HDMI / monitor de computer cu HDMI sau intrare digitala
-conectare la retea prin cablu Ethernet (conector RJ45)
-incarcator de la celular sau tableta cu conector micro USB
-card SD de 8 GB (sau micro SD cu adaptor la SD)
-acces la Internet
-computer cu Linux (de exemplu Ubuntu) - se poate si de sub Windows, dar urmatoarele rinduri se refera la prietenia dintre o placa Raspberry Pi si un computer cu Ubuntu

Sa intelegem cum functioneaza un Single Board Computer (SBC) Raspberry Pi (RPi):
-programelele lui sunt stocate pe un card de memorie SD (exact, din ala de care ai vazut la aparatul foto), deci acel card trebuie sa il "fabrici" cumva
-la pornire, adica atunci cand conectezi cablul cu micro USB (din ala ai la incarcatorul de smart phone / tableta), RPi-ul va cauta cardul SD si daca e ce trebuie acolo, va incepe procesul de boot-are
-dupa ce boot-eaza, RPiul este numai bun de folosit

1. Creearea cardului SD pt Raspberry Pi
-se da jos imaginea dorita (eu prefer sa folosesc Rasbian, NOOBS pare simplu de utilizat, dar pe mine m-a incurcat) - de aici: http://www.raspberrypi.org/downloads/
-se copiaza imaginea pe un card SD cu comanda dd sub Linux:
*care este cardul SD: df -h
*unmount la card in vederea scrierii imaginii (sdX este numele cardului): umount /dev/sdX
*scriem imaginea data jos mai inainte: dd bs=4M if=.img> of=/dev/sdX
Detalii: aici si aici.
-comanda sync, apoi dam un eject la cardul SD
-introducem cardul SD in placa RaspberryPi
-alimentam placa

2. Pornesti placa :)

Dupa cum se vede e destul de simplu, asta au avut in vedere cei de la fundatia RPi de la bun inceput: simplitate si costuri reduse (folosesti ce ai deja acasa: card SD, incarcator micro USB, cablu de retea si internet, TV sau monitor PC).

Mai sunt de facut cateva setari care aduc optiuni utile:
-vrei sa ai acces la RPi-ul tau si din afara retelei, asa ca poti sa il setezi sa fie accesibil din internet cu inaDyn si cu cont de DynDNS de pe afraid.freedns.org (aici am descris cum se face pt SBC BeagleBoard, aici gasesti pentru RPi)
sudo apt-get install inadyn

-din cauza ca RPi foloseste un card SD ce are o viata scurta (numar limitat de scrieri), e bine sa il crutati si sa instalati ramlog - o chestie utila a carei instalare este descrisa aici (cautati in text).
sudo apt-get install rsync
sudo apt-get install lsof
wget http://www.tremende.com/ramlog/download/ramlog_2.0.0_all.deb
sudo dpkg -i ramlog_2.0.0_all.deb

-de asemenea, daca te vei conecta prin SSH la RPi si vei da o comanda de compilare ce va dura 4-5-6 ore, vei avea surpriza ca daca intrerupi conexiunea (adica opresti computerul sau tai cablul de retea) - totul se duce de ripa - asa ca e bine sa deschizi o consola cu screen bash: aici sunt detaliile.
sudo apt-get install screen
Utillizare screen
screen bash #deschidem o instanta
CTRL + A # inchidem instanta deschisa si o lasam sa lucreze in backround
screen list # vedem toate instantele deschise
screen -r #ne conectam la o instanta specificata in screen list, daca e doar una, -r e suficient
CTRL + D #oprim instanta, nu va rula in background

-e bine sa ai imaginea cardului SD la indemina: la prima pornire vei avea de setat diverse detalii / compilat chestii (care pot dura 4-5-6 ore), daca dintr-un motiv sau altul strici cardul SD (adica ajungi sa il formatezi), vei reface detalii si pierzi vremea. De asta fa o imagine la configuratia actuala cu dd (detalii aici):
sudo dd if=/dev/sdb of=/home/RaspberryPi_sd_card.bin

Cum cream un card SD din imaginea facuta anterior:
dd if=/home/RaspberryPi_sd_card.bin of=/dev/sdb

Raspberry Pi (sistemul de operare Rasbian (un fel de Linux)) are un mediu de programare grafica usor de folosit de catre copii, Scratch se numeste, poti da copilului de lucru acolo ore bune :).

Tot pentru invatare, recomand Python, Rasbian il are preinstalat si pe net sunt multe tutoriale.

Spor!

Adaugat noiembrie 2014: daca apar mesaje de eroare "perl: please check that your locale settings...", trebuie definite setarile (am observat acest lucru si la Ubuntu 14.04):
sudo locale-gen ro_RO.utf8
sudo dpkg-reconfigure locales
sudo reboot
locale
locale -a

Niciun comentariu:

Trimiteți un comentariu