Visualizzazione post con etichetta velocità. Mostra tutti i post
Visualizzazione post con etichetta velocità. Mostra tutti i post

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ì 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