Visualizzazione post con etichetta configurazione. Mostra tutti i post
Visualizzazione post con etichetta configurazione. Mostra tutti i post

domenica 30 agosto 2015

PIN out / int ATtiny85

Vediamo rapidamente, tramite questa utilissima immagine, le uscite e gli ingressi della nostra ATtiny85.


Prima di tutto impariamo a leggere questa immagine.

Di necessario dobbiamo tener presente due indicazioni:
  • Pin utilizzabili da Arduino, quelli che useremo nell'IDE
    • Sono quelli nelle nei pallini verdi, rossi e blu.
  • Pin che indicano i piedini fisici del componente
    • Sono quelli all'interno del componente.
Per capire meglio come mai questa differenza sia NECESSARIA, vi riporto questo esempio.

Quando dobbiamo fisicamente collegare la nostra ATtiny85 ad Arduino impostato come ISP, dobbiamo far riferimento ai pin fisici del componente.
Questi sono quelli interni al componente, partono da 1, in alto a sinistra, scendono fino all'4, ricominciando dall'altra parte nel componente (dal basso verso l'alto).

Immaginiamo di collegare un led, i pin fisici 4 e 8 non sono utilizzabili, in quanto sono l'alimentazione.
Rimangono i pin 1,2,3,5,6,7.
Immaginiamo di collegare il led ( con la sua resistenza ) al pin fisico  2.

Quando andremo a definire, nell'Arduino IDE, quale pin è collegato al led, dovremo guardare i numeri al di fuori del componente, quelli colorati.
Il pin fisico 2 (dove c'è il led) è collegato al pin 3 dell'Arduino IDE.

Questo è il primo passo necessario per la corretta lettura di questa utilissima immagine guida.


Un ulteriore esempio degno di nota sono i pin fisici 2,3,7.
Se vogliamo utilizzarli come pin Analogici, dovremo chiamarli con i numeri rossi che iniziano per 'A' .
Mentre se vogliamo utilizzarli come pin Digitali, li chiameremo con i numeri blu.
I piedini PWM sono contrassegnati con il colore verde.

domenica 23 agosto 2015

Collegamento ATtiny85 e Arduino ISP

Guida precedente, libreria necessaria: Arduino IDE e ATtiny85 .

Questa guida vi spiegherà come collegare fisicamente il nostro ISP ( Arduino in questo caso ) con l'ATtiny85.

Per prima cosa è necessario avere:

  • scheda Arduino ONE o Duemilanove
  • ATtiny85 oppure una ATtiny45 ( entrambe a 8 pin )
  • un condensatore da 10uF, non più richiesto.
  • breadboard
  • svariati cavi

  1. Passo zero, caricare sull'Arduino l'esempio "ArduinoISP".
  2. Montare lo schema riportato fisicamente qui sotto:

NOTA: sull'ATtiny c'è un pallino che indica il primo pin, quello è collegato con il cavo giallo al pin 10.

Come indicato nella guida precedente, ricordiamoci d'impostare nell'Arduino IDE:
  • "tools" --> "board" --> "ATtiny"
  • "tools" --> "processor" --> "ATtiny85"
  • "tools" --> "programmer" --> "Arduino as ISP"

giovedì 20 agosto 2015

Arduino IDE e ATtiny85

Come abbiamo già visto in questo articolo possiamo programmare la nostra ATtiny85 utilizzando il nostro Arduino come Programmer (ISP) oppure utilizzando un programmer esterno ( esempio ).

La guida è identica per entrambi i casi.

Per prima cosa, rendiamo il nostro Arduino IDE in grado di "scrivere" sull'ATtiny85.
Git ufficiale del progetto


Nota: per questa procedura serve una versione dell'IDE d'Arduino almeno 1.6.4 o superiore.

Aggiunta boards ATtinyXX:

Apriamo il nostro Arduino IDE ed andiamo in "File" --> "preferences" .

 Qui troviamo un'icona di due finestrelle in basso a destra. Clicchiamoci.

Copiamo ed incolliamo nella casella questa stringa:

https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

Clicchiamo su "ok" e poi di nuovo "ok" per tornare all'IDE d'Arduino.

Ora sotto il menu "tools" --> "board" --> "boards manager"  andiamo a cercare ATtiny .

Installiamo questo pacchetto.

Chiudiamo quest'ultima finestra e tornando in "tools" --> "board" leggeremo ATiny; selezioniamola.
Sempre sotto "tools" --> "processor" selezioniamo ATtiny85.


Ora la guida si dirama:
  • Programmare ATtiny85 tramite Arduino ISP
    • Caricare sull'Arduino l'esempio "ArduinoISP".
    • Nell'Arduino IDE selezioniamo "tools" --> "programmer" --> "Arduino as ISP".
    • Guida al corretto collegamento tra Arduino ISP e ATtiny85.
    • Caricare il programma sull'ATtiny85.
  • Programmare ATtiny85 tramite programmer esterno
    • Seguiamo la guida data dal produttore del nostro programmer esterno.

martedì 4 agosto 2015

3Doodler hack

3Doodler hack

Prima di tutto, cos'è la penna 3Doobler? 
Questa penna nata su kickstarter, è una semplice versione "manuale" d'una stampante 3D. 
Per non perdere troppo tempo nella descrizione della penna, non compete a questo post, vi lascio un video autoesplicativo:


Ma guardiamo più da vicino questa penna:

Sul lato di questa penna troviamo 3 forellini, partendo da destra verso sinistra:
  • Pin 0 = GND
  • Pin 1 = Slow
  • Pin 2 = Fast
Collegando con un cavetto questi Pin, a coppie per chiudere il circuito, abbiamo queste combinazioni:
  • GND + Slow = la penna estrude in Slow
  • GND + Fast = la penna estrude in Fast
  • GND + GND = combinazione impossibile, non ci si riesce fisicamente!
  • Fast + Slow o Slow + Fast = nessun effetto, non utilizzata
  • Fast + Slow + GND = modalità Reverse
Quindi, solo le combinazioni verdi hanno senso, le altre no. In totale 4.
La domanda sorge spontanea, Fast, Slow e lo STOP? Basta non chiudere il circuito. Quindi collegare GND a nessun altro Pin.

Questo articolo nasce per poter collegare ad un Arduino, o in generale ad un controllore, che controlli automaticamente, secondo un programma, la nostra penna.

Bene, in sostanza dobbiamo collegare queste coppie per avere le 4 combinazioni essenziali.
Per farlo utilizziamo un transistor. 

Il principio di funzionamento è questo, il circuito è in ON ( immagine a sinistra ) quando Arduino manda un comando HIGH , +5 V.
Questo stato equivale a collegare due Pin, appunto in coppia.
L'opposto è il circuito in OFF ( immagine di destra ), quando Arduino manda un comando LOW, 0 V.

Sfruttando questo principio ho creato questo circuito con due transistor:

Arduino manda un segnale di HIGH o LOW sui Pin 8 e 7 . Mandando l'impulso HIGH si accende il transistor collegato a quel pin, mandano l'impulso LOW si spegne quel transistor al pin collegato.
Non accendendo nessun transistor ho la condizione di STOP.

Il codice ed il circuito relativo lo troverete sul mio GIT a questo indirizzo: 

domenica 28 giugno 2015

Braccio robotico controllato tramite bluetooth

Il passaggio successivo per il controllo del braccio robotico è l'utilizzo del modulo Maestro per i movimenti ed il modulo HC-06 per la gestione bluetooth.

Ovviamente è fortemente consigliato aver seguito le guide per il controllo del modulo HC-06: http://goo.gl/JY0qrp

Lo schematico riportato sopra illustra tutti i collegamenti necessari per l'utilizzo.

Per prima cosa dobbiamo cambiare la BAUD del nostro modulo bluetooth, riprendiamo la guida: http://goo.gl/SV2Rym  colleghiamo il modulo HC-06 come indicato nella guida linkata ed utilizzando il comando: AT+BAUD5 andiamo a cambiare la BAUD da 9600 a 19200 .
Abbiamo ora cambiato la frequenza alla quale il nostro modulo bluetooth risponde, ora fissata a 19200.

Ricordo che nell'esempio su GIT HC-06_AT va cambiata la frequenza di risposta alla riga 19.


Ora è tutto pronto per caricare il codice necessario, lo trovate qui: https://goo.gl/Uzz1sJ  sotto la cartella "HC-06__Me_Arm__BT" .

Il codice è commentato, quindi potrete seguire passo passo il funzionamento.

Riporto un breve riassunto d'utilizzo: 
  • Alla pressione del tasto 'a' vi verrà dato un messaggio di benvenuto.
  • Selezionando uno dei 4 motori disponibili, il primo a partire da 0, vi verrà comunicato il motore scelto.
  • Con i tasti 'j' e 'l' rispettivamente, si incrementerà o decrementerò il valore dedicato alla posizione del servo precedentemente selezionato.

mercoledì 17 giugno 2015

Modulo HC-06 Bluetooth

Impariamo ad utilizzare il modulo HC-06 Bluetooth da interfacciare con il nostro Arduino.


Come ormai è a tutti noto, i moduli Bluetooth sono ormai ovunque, con la loro semplicità d'utilizzo e connessione. 
Infatti ogni qualvolta vogliamo collegarci ad un dispositivo Bluetooth ci basta cercarlo e collegarci direttamente. Al massimo verrà richiesta una password di sicurezza.

Qualunque modulo Bluetooth si occupa di gestire correttamente la trasmissione da dispositivo a dispositivo a dispositivo, dando l'impressione all'utilizzatore di non aver nulla che lo divide tra il mittente ed il destinatario. 


HC-05 o HC-06 ?
Ci sono diversi modelli di moduli HC-0x in circolazione, i più recenti e comuni sono i modelli 05 e 06. 
Questi modelli sono identici, stesso chip, ma montano una versione diversa di firmware.
In questa guida si parlerà del modello più recente, l'HC-06. 
Altre info qui: http://goo.gl/MFY6C3


Collegamento e settaggi:
Il primo passo è il corretto collegamento, in quanto una delle porte, quella di RXD, riceve segnali a 3.3V e non a 5V come Arduino genera.
Come risolvo?
Per risolvere il problema si utilizza un partitore resistivo. Il rapporto di partizione è R2=2*R1 .

Una volta collegato tutto correttamente carichiamo un programma di prova e settaggio, lo trovate a questo indirizzo, sotto "HC-06_AT" : https://goo.gl/CX1fiC

Una volta caricato, apriamo la nostra seriale d'Arduino e digitiamo "AT", senza apici e maiuscolo.
Se il dispositivo ci risponderò con "OK" il collegamento è avvenuto con successo.

Riporto qui sotto una serie di comandi compatibili con la versione HC-06:

ATOKUsed to verify communication
AT+VERSIONOKlinvorV1.8The firmware version (version might depend on firmware)
AT+NAMExyzOKsetnameSets the module name to “xyz”
AT+PIN1234OKsetPINSets the module PIN to 1234
AT+BAUD1OK1200Sets the baud rate to 1200
AT+BAUD2OK2400Sets the baud rate to 2400
AT+BAUD3OK4800Sets the baud rate to 4800
AT+BAUD4OK9600Sets the baud rate to 9600
AT+BAUD5OK19200Sets the baud rate to 19200
AT+BAUD6OK38400Sets the baud rate to 38400
AT+BAUD7OK57600Sets the baud rate to 57600
AT+BAUD8OK115200Sets the baud rate to 115200
AT+BAUD9OK230400Sets the baud rate to 230400
AT+BAUDAOK460800Sets the baud rate to 460800
AT+BAUDBOK921600Sets the baud rate to 921600
AT+BAUDCOK1382400Sets the baud rate to 1382400
Perchè dovrei voler cambiare la "baud rate" del mio dispositivo?
L'HC-06 può cambiare la sua risposta ad una frequenza ben definita, magari sulla classica 9600 abbiamo collegato un altro modulo, ed Arduino può non essere in grado di distinguere i segnali dei diversi dispositivi.

Per questo motivo possiamo regolare la risposta in una certa baud rate del nostro HC-06 .


martedì 19 maggio 2015

Delay() & Get Moving State

Una volta "perso" un po' di tempo su questi esempi, risolviamo i problemi relativo alla funzione delay() nel programma.

Analizziamo questo piccolo pezzo di codice a titolo d'esempio:
maestro.setTarget(0, 6000);
delay(3000);
maestro.setTarget(0, 4000);

Una volta impartito un comando di posizione maestro.setTarget il programma non attende il tempo effettivo necessario al braccio per arrivare fisicamente a quella posizione, ma esegue immediatamente la funzione successiva, in questo caso delay(3000) .

Questo si traduce nel fatto che il braccio non aspetterà realmente 3 secondi prima della posizione successiva.

Per poter sviare a questo non piccolo inconveniente si utilizza un'altra funzione offerta dalla Maestro library, Get Moving State.
Questa funzione attende l'effettivo completamente del movimento da parte del braccio, prima d'eseguire la funzione successiva.

Proviamo a modificare il primo esempio visto aggiungendo questa nuova funzione:
#include <PololuMaestro.h>

#ifdef SERIAL_PORT_HARDWARE_OPEN
#define maestroSerial SERIAL_PORT_HARDWARE_OPEN
#else
#include
SoftwareSerial maestroSerial(10, 11);
#endif

MicroMaestro maestro(maestroSerial);

void setup()
{
maestroSerial.begin(9600);
}

void loop()
{
maestro.setSpeed(0, 20);
maestro.setAcceleration(0, 200);

maestro.setTarget(0, 6000);
maestro.getMovingState();
delay(3000);

maestro.setTarget(0, 4000);
maestro.getMovingState();
delay(3000);
}

Riassumendo la funzione maestro.getMovingState() è sempre accoppiata alla funzione maestro.setTarget per attendere l'effettivo completamento del movimento da parte del braccio.

Primo esempio di programma per il braccio robotico

Iniziamo a vedere come utilizzare i comandi fondamentali della Maestro library per muovere correttamente i nostri Servo motori.
Per prima cosa proviamo ad utilizzare un solo motore Servo, successivamente proveremo ad utilizzarne più Servo contemporaneamente.

// L'esercizio mostra il movimento di 1 motore, con relative accelerazioni e velocità.
#include <PololuMaestro.h>

#ifdef SERIAL_PORT_HARDWARE_OPEN
#define maestroSerial SERIAL_PORT_HARDWARE_OPEN
#else
#include
SoftwareSerial maestroSerial(10, 11);
#endif

MicroMaestro maestro(maestroSerial);

void setup()
{
maestroSerial.begin(9600);
}

void loop()
{
//con la funzione setSpeed imposto il numero del motore, la sua velocità
maestro.setSpeed(0, 20);

//con la funzione setAcceleration imposto il numero del motore, la sua accelerazione . Questo numero è compreso tra 0 ( accelerazione massima ) e 255
maestro.setAcceleration(0, 200);

//con la funzione setTarget imposto una posizione al motore, tipicamente tra 4000 e 8000
maestro.setTarget(0, 6000);
delay(3000); //aspetto 3 secondi prima di passare alla prossima posizione

maestro.setTarget(0, 4000);
delay(3000); //aspetto 3 secondi prima di passare alla prossima posizione
}

Possiamo modificare diversi parametri, in questo esempio, per il singolo Servo:
  1. il numero del motore da comandare
  2. la sua velocità
  3. la sua accelerazione 
E' molto utile ed istruttivo capire cosa cambia il movimento del braccio al variare di questi parametri da noi fissati. Il passo immediatamente successivo è proprio il controllo di più motori contemporaneamente:

/* L'esercizio mostra il movimento di 3 motori contemporanemanete, con relative accellerazioni e velocità. 
*/

#include <PololuMaestro.h>

#ifdef SERIAL_PORT_HARDWARE_OPEN
#define maestroSerial SERIAL_PORT_HARDWARE_OPEN
#else
#include
SoftwareSerial maestroSerial(10, 11);
#endif

MicroMaestro maestro(maestroSerial);

void setup()
{
maestroSerial.begin(9600);
}

void loop()
{
//con la funzione setSpeed imposto il numero del motore, la sua velicità
maestro.setSpeed(0, 20);
maestro.setSpeed(1, 10);
maestro.setSpeed(2, 10);
//con la funzione setAcceleration imposto il numero del motore, la sua accellerazione . Questo numero è compreso tra 0 ( accelerazione massima ) e 255
maestro.setAcceleration(0, 200);
maestro.setAcceleration(1, 200);
maestro.setAcceleration(2, 200);

//con la funzione setTarget imposto una posizione al motore, tipicamente tra 4000 e 8000
maestro.setTarget(0, 6000);
maestro.setTarget(1, 4000);
maestro.setTarget(2, 4000);
delay(3000); //aspetto 3 secondi prima di passare alla prossima posizione

maestro.setTarget(0, 4000);
maestro.setTarget(1, 6000);
maestro.setTarget(2, 6000);
delay(3000);
}

Anche in questo caso i parametri che possiamo impostare sono i medesimi dell'esempio precedente, solo applicabili a diversi Servo motori.

giovedì 7 maggio 2015

Configurazione di base & Maestro library

Per prima cosa occupiamoci delle prime connessioni che ci forniranno una configurazione "base" per i nostri test e prove durate la programmazione.


Con queste connessioni saremo in grado di alimentare correttamente ogni componente, dal Maestro fino a tutti i motori utilizzati.
Rimane da collegare la USB che alimenta e comanda Arduino.

I motori sono connessi uno sotto l'altro nell'apposita parte dedicata, per maggiori informazioni sul collegamento vi riporto l'immagine seguente:




Installazione ed uso della Maestro library


Per prima cosa procuriamoci l'ultima versione dell'IDE d'Arduino dal sito ufficiale: http://goo.gl/JuskT
Una volta scaricato, scompattiamo il file "tar.xz" e apriamo la cartella appena scompattata.
Cliccando con il destro sul file denominato "arduino" , proprietà, permessi ed abilitiamo l'opzione esegui.
Ora basterà premere due volte sul file "arduino" per avviare l'eseguibile.

Un'opzione da eseguire per abilitare le porte USB per Arduino è la seguente, aprite il terminale e digitate:
sudo usermod -aG dialout <myuser>
Ricordatevi di sostituire la scritta in rosso con il nome del vostro user.

A questo punto l'IDE sarà pronto per ogni esigenza. 

Scarichiamo la libreria apposita per il nostro Maestro in questo modo:
Eseguiamo "Arduino", Sketch->Include Library->Manage Libraries .
A questo punto si aprirà una finestra con una funzione cerca, usiamola scrivendo: "PololuMaestro" .
Installiamo il pacchetto trovato.

A questo punto avremo a disposizione non solo la libreria, ma anche alcuni utili esempi.




sabato 2 maggio 2015

MeMa - Progetto braccio robotico

Il progetto braccio robotico nasce dell'idea di voler utilizzare al meglio il mio Arduino e Raspberry Pi per progetti o sviluppi futuri in diversi campi. Diciamolo, dopo poco ci si scoccia ad usare Arduino e la Raspberry Pi per accendere o spegnere led!
L'idea è quella di poter avere un modulo, un braccio in questo caso, pilotato da diversi motori per svolgere le più svariate funzioni, sempre mantenendo la compatibilità con i diversi moduli ( shell ) Arduino e Raspberry Pi.
In questa prima fase, il montaggio, reperiamo tutto il necessario per il controllo e la connessione del braccio robotico.

Per la base del braccio ho trovato molto interessante il progetto open source "MeArm", recuperabile a questo indirizzo : http://goo.gl/sxX13z

Scaricato il disegno, si può decidere di stamparlo in 3D oppure tagliarlo su d'un foglio di plexiglas con un taglio laser.
Una volta stampato/tagliato tutti i componenti , basterà utilizzare questa guida passo passo per il montaggio: http://www.instructables.com/id/Pocket-Sized-Robot-Arm-meArm-V04/

Per quanto riguarda i motori il progetto è sagomato con i motori tipo SERVO con queste dimensioni: http://goo.gl/j3gDnt
Non importa la marca del servo, la potenza o altro, conta solo la dimensione compatibile con il progetto.

Per le viti, attenersi alla guida passo passo; alcune di queste M3 non sono di comune uso, meglio trovare un rivenditore specializzato in viti vicino a casa propria .

Connessione e controllo 

Una volta assemblato il tutto , ci troviamo con 4motori da comandare in PWM, con un numero di porte da occupare su Arduino considerevolmente alto. Analizziamo un modo molto più elegante e funzionale per il controllo dei motori. 
La mia soluzione è l'utilizzo d'un controller servo chiamato Maestro Micro: https://www.pololu.com/product/1350

Questo controller è comodo per controllare servo di diversa dimensione ed in numero elevato, oltre ad averne una miglior gestione. Per comandare questo controller sono necessari solo due pin d'Arduino.
Per controllare il corretto funzionamento del controller utilizzare questa libreria completa d'ogni funzione disponibile : https://github.com/pololu/maestro-arduino

Prossimamente scriverò qualche articolo con qualche riga di codice per comprendere meglio l'interfaccia tra controller e SERVO.

martedì 17 febbraio 2015

Script python Transmission

Per questione di comodità ho deciso di scrivere due semplici script, uno per collegare rapidamente pc e Raspberry tramite il comando ssh ed uno direttamente sul Raspberry con i comandi più utili.

Raspberry connection script:
Riposto qui lo script, vi basterà copiarlo in un file di testo e cambiare l'estensione da .txt a .py  .
#!/usr/bin/python
import os
print 'Raspberry connection script'
os.system("ssh pi@IP_RASPBERRY")
Ricordate di cambiare IP_RASPBERRY con l'indirizzo del vostro raspberry.
Salvate il tutto, cambiate successivamente l'estensione da .txt a .py .
Per renderlo subito eseguibile lo script clicchiamo con il destro, proprietà, permessi, mettiamo la spunta nell'ultima riga "esecuzione".
Una volta avviato vi verrò chiesto d'inserire la vostra password, e si collegherà automaticamente.


Raspberry Transmission script:
Questo script va scritto direttamente sul nostro raspberry, colleghiamoci tramite lo script appena scritto qui sopra ed iniziamo.
Creiamo lo script con il comando:
sudo nano transmission
ora copiamo lo script riportato qui sotto:
----------
 #!/usr/bin/python  
#code by Dave Calaway http://goo.gl/7yt8Lf
import os
print 'Transmission script'
while True:
numero = int( raw_input('1 stop\n2 edit .json\n3 load setting\n4 reload transmission\n0 exit\n') )
if numero == 1:
os.system("sudo /etc/init.d/transmission-daemon stop")
if numero == 2:
os.system("cd /etc/transmission-daemon && sudo nano settings.json")
if numero == 3:
os.system("sudo /etc/init.d/transmission-daemon reload")
if numero == 4:
os.system("sudo /etc/init.d/transmission-daemon restart")
if numero == 0:
break
print 'bye :D'

Ora salviamo premendo CTRL+O, invio per confermare il nome ed in fine CTRL+X per uscire dall'editor.

Ora proviamo ad avviarlo, scriviamo:
python transmission
ora seguiamo le informazioni a monitor.
Ogni volta che ci collegheremo al Raspberry lo script sarà li e pronto per essere avviato con il comando sopra citato.

giovedì 19 dicembre 2013

Samba, condividere NAS in LAN & scp command


Teniamo fede all'immagine riportata qui sopra:
L'hard disk in fondo all'immagine è il nostro Raspberry con il nostro NAS ( hardisk ) attaccato e tramite un dispositivo di rete - tipicamente router - possiamo comandare e visionare il nostro Raspberry.

Abbiamo già studiato nelle guida: Connessione VNC , comandi & desktop in remoto
come collegarci e comandare il Raspberry, questa operazione è possibile da tutti i computer della rete - a patto di configurare ogni uno -

Mettiamo il caso che, il vostro Raspberry con NAS è in cantina, abbiamo terminato il download e vogliamo vederci il nostro file, dobbiamo scendere fino in cantina a prendere la NAS ( ? ).


Questo processo è assasi scomodo, perchè non condividere questa NAS con tutta la rete!

In nostro aiuto arriva il software Samba, che ci permetterà di condividere la nostra NAS con tutta la rete.

Per prima cosa colleghiamoci al Raspberry:
ssh pi@indirizzo_IP_Raspberry
Installiamo Samba:
sudo apt-get install samba samba-common-bin 
 Configuriamola correttamente:
cd /etc/samba 
sudo nano smb.conf
Scorriamo fino alla sezione 
##### Authentication ##### 
Nella riga 
#  security = user
Cancelliamo il cancelletto - # -
Al termine salviamo premendo CTRL+O, invio per confermare il nome ed in fine CTRL+X per uscire dall'editor. 

Ora impostiamo il nome utente e la password, ci serviranno per collegarci dagli altri computer della rete.
Riavviamo Samba:
sudo /etc/init.d/samba restart
sudo smbpasswd -a pi
Nel caso abbiate cambiato il nome utente del vostro Raspberry mettetelo al posto del nome in rosso, altrimenti pi è quello di default.
Vi verrà chiesto d'inserire una password per accedere al NAS, ovviamente la password è a vostra scelta! Va reinserita due volte, per certificare la corretta scrittura.

 Ora modifichiamo questo file:
sudo nano smb.conf
andiamo in fondo ed aggiungiamo queste righe:
[usb]
comment = USB Share
path = /mnt/nas
writeable = yes
Al termine salviamo premendo CTRL+O, invio per confermare il nome ed in fine CTRL+X per uscire dall'editor. 

Riavviamo Samba:
sudo /etc/init.d/samba restart

Il NAS è online per tutti i computer della rete. Basterà inserire nome e password per poter visionare il contenuto.

Da Ubuntu è visionabile dal Nautilus, in basso a sinistra, sotto Network.

Per altri OS la procedure è simile.

SCP command

Esiste un altro modo per trasferire file dalla Rasp al PC e viceversa, senza dover installare null'altro.

Il comando scp è un comando invocabile dal terminale per trasferire file(s), vi riporto un piccolo esempio:

voglio spostare dalla mia Rasp un file chiamato "file.txt", che si trova nella cartella "/mnt/nas/completi/" nel mio pc nella cartella "/home/" :
sudo file.txt pi@indirizzo_IP_Raspberry:/mnt/nas/completi /home/
Se volessi postare più file sempre dalla stessa cartella:
sudo file.txt file2.txt file3.txt pi@indirizzo_IP_Raspberry:/mnt/nas/completi /home/
Se volessi copiare tutto il contenuto della cartella "/mnt/nas/completi/":
sudo -r pi@indirizzo_IP_Raspberry:/mnt/nas/completi /home/

mercoledì 18 dicembre 2013

Formato Ext4 su Windows e Mac


Quando abbiamo eseguito la formattazione del nostro dispositivo configurazione nas abbiamo dato come formato di formattazione Ext4, il più comune ed utilizzato sotto Linux.

Purtroppo questo formato non è visibile sotto macchine Windows o Mac, infatti quando inserirete il vostro dispositivo in un computer con OS non Linux, vi chiederà di formattarlo non rendendolo accessibile ne leggibile.


Questo problema può risultare molto fastidioso. Ci sono diversi programmi che vi permettono di risolvere il problema di compatibilità, ve ne cito alcuni:
http://www.ext2fsd.com/
http://www.diskinternals.com/linux-reader/

Vorrei ricordarvi che Linux può leggere tutti i formati, quindi il metodo migliore - a mio parere - è quello di spostare direttamente i file da un dispositivo Ext4 ad un dispositivo compatibile con Windows e Mac.

Da Samba:
Visualizzare il NAS da qualsiasi computer delle LAN: Samba

Da macchina con OS Linux:
Inseriamo sia il dispositivo Ext4 che quella compatibile con Windows e Mac, spostiamo semplicemente i file da una parte all'altra.


Da Raspberry:
Ricordate la funzione di visualizzazione monitor in remoto?
Siete di nuovo nella situazione precedente.

Vi ricordo che il Raspberry non riesce a gestire HD usb senza alimentazione esterna!

Comandi utili

Vorrei spendere 2 righe per riepilogare alcuni comandi utili:

Per Raspberry

Colleghiamoci al terminale del nostro Raspberry:
ssh pi@indirizzo_IP_Raspberry
Noterete che siete collegati al vostro Raspberry quando il vostro terminale inizierà così:
pi@raspberrypi:~$ 
Riavvio Raspberry:
sudo reboot
Funzione per cercare gli aggiornamenti nel Raspberry:
sudo apt-get update
sudo apt-get upgrade 
Per Transmission Daemon

Far fermare transmission, usatela prima di fare modifiche al file di configurazione:
sudo /etc/init.d/transmission-daemon stop
Modificare impostazioni:
cd /etc/transmission-daemon
sudo nano settings.json  
Al termine salviamo premendo CTRL+O, invio per confermare il nome ed in fine CTRL+X per uscire dall'editor.

Ricarica impostazioni , nel caso le abbiate cambiate:
sudo /etc/init.d/transmission-daemon reload
Far ripartire transmission:
sudo /etc/init.d/transmission-daemon restart

Per Samba

Riavvio Samba:
sudo /etc/init.d/samba restart

martedì 17 dicembre 2013

IP statico & porte

Come ho ricordato nella guida Settaggi avanzati settings.json - punto 1 - il primo fattore per l'aumento del download è l'apertura delle porte di comunicazione.

Sostanzialmente il software, le applicazioni , comunicano con l'hardware tramite apposite porte, chiamate in gergo tecnico SUP.


Ogni connessione è caratterizzata da 2 importanti fattori: uno l'indirizzo IP ed l'numero di porta.
E' indispensabile definire questi due valori per poter usufruire a pieno della potenza del protocollo torrent.


Indirizzo IP statico

Per prima cosa dobbiamo impostare l'indirizzo IP statico al nostro Raspberry. 

Ogni volta che si collega un nuovo dispositivo alla nostra LAN, dobbiamo dargli un nome, nel caso d'una macchina un'indirizzo IP. Questo numerino identifica la macchina nella nostra rete - è di fatto il suo nome - di modo che quando arrivino pacchetti per lui, non si perda tempo a rintracciarlo ogni volta.

Nel caso vada via la luce, il router ridarà da zero i nomi ai dispositivi della LAN, e non è detto che riassegni gli stessi valori! In questo modo il nostro Raspberry cambierà indirizzo - nome - costringendoci a cambiare l'indirizzo IP impostato nelle guide viste in precedenza!!
Quindi con questa funzione diremo alla macchina di non farsi dare un indirizzo a caso, ma sempre lo stesso.

Conosciamo già questo indirizzo IP del Raspberry, lo abbiamo cercato nella guida Connessione VNC, comandi & desktop in remoto e lo utilizziamo tutt'ora per raggiungere ed impartire ordini al Raspberry.

Colleghiamoci al Raspberry:
ssh pi@indirizzo IP Raspberry
Ora cerchiamo tutti gli indizi utili:
sudo ifconfig 
In questa schermata cerchiamo l'indirizzo IP del nostro Raspberry, poi la sua mascchera o mask, essa è composta da da 4 gruppi di cifre - come l'IP - ma è composta prevalentemente da 255.
Esempio: 255.255.255.0

Ricapitolando, ora conosciamo l'indirizzo IP e la maschera del nostro Raspberry.

Ora diamo il comando:
route
Compariranno diverse informazioni, tenete nota dell'indirizzo nella colonna gateway alla riga default.
Questo è l'IP del nostro router - il suo nome  - .

Ricapitolando, ora conosciamo: IP e maschera Raspberry e l'IP del nostro router.

Ora andiamo ad utilizzare queste informazioni:
cd /etc/network
 sudo nano interfaces
Vi si dovrebbe aprire una pagina simile a questa:
auto lo
iface lo inet loopbackiface eth0 inet dhcp
allow-hotplug wlan0iface wlan0 inet manualwpa-roam /etc/wpa_supplicant/wpa_supplicant.confiface default inet dhcp 
Vi segno in rosse le modifiche da applicare, in blu le righe da aggiungere, in verde gli indirizzi da inserire:
auto lo
iface lo inet loopback 
#iface eth0 inet dhcp
 auto eth0
iface eth0 inet static
address IP_Raspberry
gateway IP_router
netmask marchera_Raspberry
allow-hotplug wlan0 
iface wlan0 inet manual 
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf 
iface default inet dhcp 
Al termine salviamo tutto con:
CTRL+O, invio per confermare il nome ed in fine CTRL+X per uscire.

Ora riavviamo il Raspberry:
sudo reboot
Per verificare il corretto funzionamento usiamo il comandi PING:
ping google.it
Se riceviamo risposta con tante stringhe una dietro l'altra, allora è tutto perfettamente funzionale!
Fermiamo il ping con CTRL+C.

Esempio di ping:


Porte di comunicazione

Ora configuriamo le porte utilizzando l'enorme contributo di questo sito:
Port-forward
Cerchiamo la marca del nostro dispositivo, successivamente il modello ed in fine il protocollo transmission.

Seguiamo la guida a monitor per la configurazione delle porte.

Ricordatevi che abbiamo già impostato l'IP statico e l'indirizzo IP del vostro dispositivo è quello del Raspberry!

Ora dobbiamo dire a transmission quale porta usare.
Riavviamo il router - basta spegnerlo e riaccenderlo - successivamente torniamo al terminale del nostro Raspberry:
ssh pi@indirizzo IP Raspberry
 alla configurazione del nostro transmission nel file "settings.json":
sudo /etc/init.d/transmission-daemon stop
cd /etc/transmission-daemon
sudo nano settings.json 
Cerchiamo la riga:
"peer-port": nostra_porta,
Inseriamo il numero della nostra porta al posto di nostra_porta.

Ora salviamo premendo CTRL+O, invio per confermare il nome ed in fine CTRL+X per uscire dall'editor.

Ora riavviamo transmission:
sudo /etc/init.d/transmission-daemon reload
sudo /etc/init.d/transmission-daemon restart 

Per testare la porta utilizziamo il programma transmission remote gui, in alto premiamo la piccola chiave inglese, scheda network, sotto "incoming port" troveremo la nostra porta impostata.

Ora premiamo su "test port", se il test darà successo l'operazione è andata a buon fine!

domenica 15 dicembre 2013

Settaggi avanzati settings.json

Come per qualsiasi download come si rispetti, la prima domanda che ci si pone è la seguente:

Come incremento la mia velocità di download?

Questa domanda ha diverse risposte, più o meno facili per ogni applicazione o mezzo trasmissivo, ma noi ci fermeremo a risolvere il problema dal punto di vista dei torrent.

Ogni software torrent applica un protocollo di base, per permettere la comunicazione anche tramite di gestione torrent diversi, il quale ha sempre - chi più chi meno - le stesse impostazioni. 
Quindi tutte le impostazioni e i calcoli che volgeremo saranno utili non solo per transmission daemon, ma anche per qualsiasi altro software torrent.

1.Prima tra tutte, le porte per la comunicazione.
    Ebbene si, se dobbiamo essere sinceri e pensare quale tra le diverse soluzioni da il maggior download è proprio questa, l'impostazione delle porte. 
    Ogni software dialoga con un'infrastruttura di rete - ubuntu con il vostro computer per intenderci, software con hardware - ed ogni qualvolta deve comunicare in internet ha bisogno di seguire protocolli rigidi di trasmissione.
    Le porte sono vie preferenziali per lo scambio di informazioni, quindi anche dei torrent.
    Ho preferito scrivere una guida a parte per poter analizzare meglio le diverse problematiche raggiungibile a questo indirizzo:


    2. Limiti di download e upload 
    Torrent ha due settaggi molto importanti che riguardano il download e l'upload, rispettivamente quanto noi scarichiamo e quanto noi carichiamo.
    Il vero valore importante è l'upload, in quanto se troppo elevato, non limitato superiormente, compromette la velocità dell'intera connessione.

    Per poter comprendere meglio questi valori utilizziamo questi sito:

    http://www.speedtest.net/

    NB: Eseguiamo il test di velocità; ricordatevi di spegnere eventuali programmi di download che avete acceso sulla vostra linea, invalideranno questo risultato!

    I risultati sono due, appunto il vostro download ed upload. Analizziamoli:

    Entrami sono espressi in Mega bit per secondo [ Mbps ] , a noi serve convertire questi valori in Kilo bit per secondo [ Kbps ].
    Per convertire da M a K moltiplichiamo il nostro valore per 100.
    Esempio, upload : 0.200 Mbps ----> x 100 ------> 200 Kbps

    Ora colleghiamoci al nostro terminale del Raspberry:
    ssh pi@indirizzo raspberry
    Andiamo nelle impostazioni:
    sudo /etc/init.d/transmission-daemon stop
    cd /etc/transmission-daemon
    sudo nano settings.json 
    Ora cerchiamo la riga denominata:
    "speed-limit-up: numero,
    Andiamo a sostituire numero - senza cancellare ne spostare null'altro! - con il nostro valore di upload in Kbps diviso 10.
    Nel caso di questa guida il numero è:
    200 Kbps /10 = 20
    speed-limit-up: 20
    Ora controlliamo che questa riga contenga il " true ":
     "speed-limit-up-enabled": true
    Ora salviamo premendo CTRL+O, invio per confermare il nome ed in fine CTRL+X per uscire dall'editor.

    Ora riavviamo transmission:
    sudo /etc/init.d/transmission-daemon reload
    sudo /etc/init.d/transmission-daemon restart 

    Come stavo dicendo il download è un fattore secondario, in quanto qualsiasi programma torrent lavora al meglio delle proprie condizioni. Tipicamente il download è lasciato libero di correre al massimo e non necessita d'un valore massimo come l'upload.

    Comunque sia, se ritenete necessario inserire un valore di guardia anche nel download vi mostrerò come fare:
    torniamo nelle impostazioni:
    sudo /etc/init.d/transmission-daemon stop
    cd /etc/transmission-daemon
    sudo nano settings.json 
     Ora cerchiamo la riga denominata:
    "speed-limit-down": numero,
    Inseriamo qui il nostro numero massimo in Kbps che desideriamo non far superare al torrent.

    Controlliamo che questa riga contenga il valore " true" :
    "speed-limit-down-enabled": true,
    Ora salviamo premendo CTRL+O, invio per confermare il nome ed in fine CTRL+X per uscire dall'editor.

    Ora riavviamo transmission:
    sudo /etc/init.d/transmission-daemon reload
    sudo /etc/init.d/transmission-daemon restart  
    Questo valore è da impostare solo se ne avrete un reale bisogno, in quanto il suo valore è specifico per il vostro scopo.

    3.Settaggio di finezza
    Volendo essere precisi fino in fondo, ci sono ancora dei valori di finezza che possono essere settati.
    Io li ritengo secondari per il 90% degli utenti.
    Mi limiterò a riportare questi valori che sono riportati nella guida ufficiale di transmission:
    https://trac.transmissionbt.com/wiki/EditConfigFiles
    Allego inoltre una pratica calcolatrice che può aiutarvi in alcuni conti fini:
    http://infinite-source.de/az/az-calc.html