venerdì 13 settembre 2013

Attivare WiFi su Raspberry Pi

La scheda Raspberry Pi fa ormai parte da giorni della mia scrivania e dei miei progetti. Come per Arduino, dopo qualche giorno di tempo trascorso su altri progetti, mi sono accorto che non mi ricordo piu' come ho raggiunto alcuni risultati (sara' colpa dell'età??), per evitare di ricominciare sempre tutto da capo, mi sono deciso anche in questo caso, a raccontare gli sviluppi ed i progressi con Raspberry Pi qui sul blog, in maniera tale da essere utile anche a qualcuno di voi lettori che seguite le mie indicazioni.


Quindi, uno dei primi scogli che ho dovuto scavalcare e' stata la corretta gestione della chiavetta WiFi compatibile.
 Qui di seguito i passi che ho compiuto per farla riconoscere al sistema e far comunicare la Raspberry Pi con l' AP della mia stazione.
Intanto la chiavetta che ho scelto e' questa   per il costo esiguo, solo 8 euro e per la sua totale compatibilita' con Raspberry Pi.
Naturalmente il collegamento alla Raspberry mod. B e' piu' semplice, in quanto il modello B e' dotato di 2 porte USB, quindi in una si puo' installare la chiavetta e nell'altro la tastiera per effettuare le modifiche, nel caso della Rasp mod. A invece, si deve scegliere due strade, o utilizzare un HUB USB autoalimentato ( perche la Rasp non ce la fa a fornire corrente sia per l'alimentazione dell'HUB che per la chiavetta ) e quindi poter cosi' utilizzare la tastiera direttamente collegata via USB, oppure collegare la Rasp mod A via serale al Mac e comunicare tramite seriale con la Shell per le relative modifiche e settaggi. In questo caso ho utilizzato questa seconda scelta ( mi piace complicarmi la vita!!)
Si parte quindi con il  collegamento della Raspberry Pi mod A attraverso i PIN della GPIO ad un adattatore seriale USB che sara' collegato al Mac. Io ho utilizzato questo, ma va bene anche questo , collegato alla USB ed ai PIN  TX, RX, GND della GPIO. Per comunicare da Mac si deve aprire la finestra di Terminale e col comando " ls /dev " si deve controllare il nome con cui viene  "vista" la scheda USB-seriale , nel mio caso tty.usbmodem431 .
A questo punto ci si collega col programma " screen " al device e con la velocita' di default della Raspberry PI che e' 115200 baud.
screen /dev/tty.usbmodem431 115200
A questo punto si collega l'alimentazione alla Raspberry e, se tutto e' andato a buon fine, nella finestra di terminale dovrebbero scorrere le scritte del boot di sistema.
Fare quindi il login con utente e password, che di default con il sistema operativo raspbian sono "pi" e "raspberry" .
i successivi comandi dipendono anche dalla configurazione del AP casalingo, nel mio caso ho soltanto il controllo del Mac address, ho scelto di eliminare le chiavi WPA e di utilizzare solamente il controllo del mac address, quindi non ho necessita' di configurare il wpa_supplicant, comunque ho aggiunto due righe alla sua configurazione ugualmente.
questi i comandi in sequenza
sudo apt-get update
sudo apt-get upgrade
 
sudo vi /etc/network/interfaces
 
Questa e' la configurazione standard:
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
 
Ho modificato  questo punto 
iface wlan0 inet manual
per far si che Raspberry si aspetti la registrazione in rete attraverso un server dhcp che le fornira'  la corretta numerazione con questo
iface wlan0 inet dhcp
cosi' ho ottenuto il mio settaggio definitivo:
auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
wireless-essid OpenWrtCova
wireless-mode managed
iface default inet dhcp

 Ma si puo' anche scegliere di dare una numerazione fissa alla Rasp modificando il file con  questi comandi:
 
auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
iface wlan0 inet manual
address 192.168.0.100
netmask 255.255.255.0
gateway 192.168.0.1
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
 
A questo punto ho modificato la configurazione di wpa_supplicant cosi':
 
sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
 
Aggiungedo a quanto gia' scritto nel file questa parte:
network={
ssid="SSID-GOES-HERE"
}
Nel caso che avessi la protezione con chiave WPA  avrei dovuto modificare cosi':
 
network={
ssid="SSID-GOES-HERE"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
psk="WIFI-PASSWORD-GOES-HERE"
}
 A questo punto per vedere se la chiavetta WiFi viene correttamente vista dal sistema due semplici controlli:
 
iwlist scan
Operazione che rende la lista degli AP "sentiti" dalla chiavetta, tra i quali ci dovrebbe essere anche quello di casa.
 
poi
 
ifconfig wlan0 up
Per "dire" al sistema di accendere il WiFi
 
e quindi:
iwconfig wlan0 essid nome_rete key off
Per accedere alla connessione con l'AP ( modificare il nome_rete con il vero nome dell'AP di casa), e ricordo che key off va bene nel mio caso perche' non ho controlli WPA, altrimenti il comando sarebbe stato key open
 
A questo punto la chiavetta si dovrebbe essere gia' illuminata e dovrebbe gia' aver cominciato il colloquio con l'AP
per ricevere la corretta numerazione da parte del server dhcp, l'ultimo comando
dhclient wlan0
Adesso , se tutto e' andato bene,si dovrebbe essere collegati tramite la chiavetta all'AP di casa, e quindi dovrebbe essere possibile creare una connessione ssh anche da un altro computer della nostra rete domestica.
 
In bocca al lupo e Stay Tuned
Tecnogeppetto
 

Security Cam ovvero, Esperienze con Raspberry Pi, Motion e Linux


Security Cam ovvero, Esperienze con Raspberry Pi, Motion e Linux.
Motion è un programma che gira su Linux, l'ho scoperto qualche giorno fa per caso, parlando con un amico che stava cercando di monitorare una istallazione promozionale -un maxischermo promozionale per la precisione- attraverso una chiamata ad un utente Skype costruito per l'occasione. Gia' di per se era una esperienza interessante, che prima o poi recensiro' con un articolo ad hoc.



Raspberry
Parlando di come poter concludere  quel progetto, mentre stavamo in hangup su Skype, glooggavo qua e la sull'argomento. Mi sono interessato da subito a Motion dopo aver letto questa guida trovata durante il mio zapping.
Ho subito pensato che si potesse realizzare anche con la  Rasperry Pi, la nota scheda di prototipazione che da qualche mese ho qui a disposizione per i miei esperimenti.
Quindi ho iniziato seguendo la guida l'istallazione e la configurazione del programma. Funziona! Ho ottenuto, dopo un paio di giorni di prove, un server di video sorveglianza facilmente configurabile e piuttosto completo.
Adesso quindi passo alla descrizione del progetto:
Componenti:
1) Raspberry Pi mod B rev 2 (appena ricevuta da RsComponents) - La Raspberry in questione ha la porta ethernet, molto utile per poter trasmettere i filmati e le foto ricavate da Motion su un file server privato e su un sito internet esterno.
2) Webcam usb - io ho utilizzato una Trust HD cam che ha una qualita' dell'immagine dignitosa (1920 x 1080),viene riconosciuta subito dal sistema operativo ed è piuttosto economica (39 euro circa)Trust Webcam HD
  



- Ho fatto comunque anche delle prove con un'altra webcam usb la Hercules Classic che ha una qualita' inferiore (max 640x 480 pixels) ma ha il buon requisito di economicita' ( si trova  a circa 9 - 14 euro al supermercato), anche questa telecamera non e' stata un problema, appena attaccata alla presa usb e' stata riconosciuta ed ha iniziato a funzionare, senza necessita' di driver aggiuntivi
3) accesso ad internet per l'istallazione dei programmi necessarie per la condivisione su server remoto dei file video e jpg registrati dal sistema di video sicurity.
4) una scheda SD con istallata l'ultima versione del sistema operativo di Raspberry Pi .
 non sono indispensabilil monitor, mouse, tastiera e hub usb, in quanto la raspberry puo' essere approntata anche con una connessione da remoto via ssh, questa infatti e' la strada che ho percorso io. L'hub usb potrebbe essere necessario se l'assorbimento della webcam  dovesse superare i valori  erogati dalla nostra scheda che dipendono dalla scheda ma anche dall'alimentatore che stiamo utilizzando per alimentare  tutto il sistema.
A questo punto, direi che e' venuto il momento di collegare l'alimentazione alla Raspberry Pi e far partire il sistema operativo opportunamente prelevato dal sito ufficiale della Rasp.
Seguire a questo punto le istruzioni della guida all'istallazione di Motion da qui 
 A questo punto configurare il programma come descritto nella giuda tenendo conto che:
Dalle esperienze che ho potuto fare in questi giorni di porve, il programma fa tante cose, alcune delle quali possono essere inibite.Vediamo come:
Intanto va stoppato il programma che dopo l'istallazione parte in automatico con il comando

# /etc/init.d/motion stop

poi bisogna modificare i seguenti  files
/etc/motion/motion.conf
/etc/motion/threadXY.conf
Il primo e' il motore del programma, mentre il secondo serve per configurare le eventuali altre webcam collegate al sistema - se il sitema ha solo una webcam, non c'e' bisogno di modificare il secondo file.
Per modificare il file diconfigurazione si possono utilizzare diverse strade, io preferisco quella della modifica diretta attraverso il classico editor di test di Linux vi, ma si puo' agire su ogni elemento della configurazione anche attraverso il browser web che si attiva alla partenza del programma motion. ( quindi chi volesse fare cosi' deve far partire il programma con il comando " sudo motion " digitato dall'interno della cartella costruita ad hoc nella nostra home - nel mio caso " $HOME/motion "  - e chiamare il configuratore online all'indirizzo http://localhost:8080 attraverso il browser interno di Raspberry, oppure, se e' stato gia' definito il parametro " webcam_localhost off " , anche da un browser residente su un qualsiasi altro computer della rete -cioe' in rete interna con una numerazione ip sulla stessa classe della raspberry - ).
Ma come dicevo sopra, io preferiso entrare nella configurazione del Motion attraverso il semplice programma di editor testuale " vi ", con il comando
" sudo vi /etc/motion/motion.conf "
A questo punto come detto sopra, si puo' rendere disponibile il server a tutti i pc della rete interna con la modifica del parametro " webcam_localhost off "
Facendo questo si rende disponibile, oltre all'accesso alla configurazione, anche la pagina di controllo della telecamera, che viene aggiornata in continuazione con cio' che inquadra la cam. Questa pagina la si raggiunge all'indirizzo
" http://localhost:8081 " .
Se l'indirizzo non fosse disponibile, magari perche' sul server gira già un altro servizio proprio su questa porta, si può modificare ad esempio sulla porta 7071 soltanto variando questa riga del file di configurazione " webcam_port 8081 "
Il file di configurazione è molto ben commentato - in inglese - ma e' chiaro ed essenziale, diviso per capitoli, quindi potranno essere modificati tutti i parametri propri del server, i controlli di base HTTP, la gestione dei comandi esterni in shell, tutta la gestione delle immagini e dei video e la loro collocazione nelle cartelle di sistema, la gestione del movimento e del sistema di Capture Device, le istruzioni per il debug e per lo start del programma come demone Linux.
Ci sono anche molti parametri per la regolazione di un eventuale sistema motorizzato con stepper o motori in continua che gestisce lo spostamento della telecamera in funzione del eventuale movimento individuato, cioe' se la cam individua in movimento si attiva, registra un filmato, scatta delle foto, puo' attivare un allarme o inviare una mail o trasferire il filmato e le foto scattate su un server ftp esterno, ed e' stato implementato anche un sistema di motion tracking Pan e Tilt che dovrebbe seguire il soggetto in movimento spostando fisicamente la cam attraverso l'attivazione di due motori - appunto uno per il movimento di Pan ed uno per il movimento di Tilt - Questa parte del programma no ho avuto modo ancora di testrarla, ma leggendo il manuale sembra che sia ancora in fase di sviluppo , comunque non appena avro' effettuato dei test su questa parte del programma, scrivero' una guida con unpost apposito.
Ho provato ad aumentare la qualita' delle immagini, auentando la grandezza delle immagini registrate attraverso la webcam. Come detto sopra, ho fatto dei test con due webcam, la meno definita ha al massimo una definizione di 640 x 480, mentre la Trust HD puo registrare immagini con una definizione di 1920 x 1080. A questo grado di definizione pero' ci sono dei problemi di "reazione" del sistema, che, probabilmente a causa dei limiti dei velocita' del microprocessore, non garantisce costantemente  una ottima fluidita' delle immagini, vengono registrate delle immagini corrotte o con dei disturbi come la perdita di righe di pixe. quindi direi che non sia il caso di spingersi a questa definizione. Gli stessi problemi, ma naturalmente con una intensita' inferiore, si verificano alla velocita' di 1024 x 768, mentre a 640 x 480 non ho incontrato nessun genere di problema riguardo alla qualita' delle immagini prodotte.
Una delle opzioni che ho modificato e'
" ffmpeg_timelapse_mode hourly "
che crea un file di Time Lapse con le immagini che riceve la telecamera e lo chiude ogni ora, invece che ogni giorno come risulta essere settato di default. In questo modo nella cartella che abbiamo scelto per contenere i file creati di TimeLapse, ci troveremo tanti file video creati dal programma ffmpeg uno per ogni ora di attivita' del nostro sistema. Per far in modo che i file non si sovrascivano l'uno sull'altro, cosa che accade con la configurazione di default, ho settato nell'apposita sezione dedicata ai nomi dei file creati, il nome dei file che contenga anche la data e l'ora di sistema, aggiungendo  all'istruzione
" timelapse_filename tlapse/%Y%m%d-timelapse "
il comando per inserire l'ora i minuti ed i secondi di sistema alla creazione del file %H%M%S- , cosi nella mia configurazione adesso il settaggio e' questo
" timelapse_filename tlapse/%Y%m%d-%H%M%S-timelapse "
Ho potuto effettuare anche dei test con i settaggi dei valori di contrasto luminosita' e brillantezza delle immagini percepite dalla cam, ma devo essere sincero, secondo me la soluzione migliore rimane quella di default. ( un po' come gli hamburger di MacDonald, hanno un sapore standard, ma, alla fine, restano i migliori!)
L'ho fatta lunga, se qualcuno ha necessita' informazioni piu' dettagliate sul'argomento mi contatti pure attraverso il sito e saro' felice di condividere quello che ho imparato durante i miei test.
Tecnogeppetto

Meteo Test esperienze con SWPI

Da qualche giorno sto effettuando delle prove con un bel programma di gestione online di dati meteo.
Si tratta di un sistema sviluppato da un amatore del volo libero, che gestisce dati rilevati da sensori fatti in "casa" (ma anche da centraline commerciali), li compone e li pubblica su internet via ftp su un qualsiasi sito.
Potrai trovare altre informazioni sul programma direttamente sul sito dell'autore, l'ottimo Tony che aggiorna e rende disponibili a tutti le ultime modifche al programma sul qui: www.vololiberomontecucco.it


Un sentito ringraziamento a lui ed a tutti i ragazzi dello staff.
Sebbene non abbia un interesse spiccato verso l'argomento (il meteo), sono molto interessato invece dall'utilizzo dei sensori e dalla tecnologia che sta dietro alla trasmissione in rete delle informazioni. Ho quindi deciso di costruirmi da me la centralina ed ilsistema relativo, per avere a disposizione anche io una stazionem metereologica in piena regola.
Naturalmente i dati relativi alle rilevazioni, non hanno un grande valore se non a scopo divulgativo e di test, in quanto non ho rispettato nessun parametro per la loro raccolta, infatti i dati che ricevo e trasmetto su questo sito, sono rilevati per lo piu' in casa o sul balcone di casa. Quindi, se gli indicatori segnano tempo bello... prima di uscire in maniche corte... sinceratevi che sia vero, ma non basatevi sui mie dati. Almeno per il momento!
A breve alcunidettagli sul progetto.
Per il momento questa e' l'immagine della webcam dedicata - la foto si aggiorna ogni 120 secondi-
Per la pubblicazione l'immagine e' stata ridimensionata, clikka col destro e scegli di visualizzare l'immagine per vederla nelle dimensioni originali ( 192x1080  - FullHD - )
Dati Meto www.Tognozzi.net