Mi sono preso una basetta PTZ motorizzato con due micro servo SG90 dal solito ecommerce cinese (su Amazon Italia costava tre volte di piu' ed era lo stesso modello)
Il kit arriva nei pezzi sotto indicati ma senza istruzioni. Ma il problema non e' questo ... gli accessori dei servo non si adattano alla basetta nera.
Il primo passo e' quello di prendere la basetta superiore ed incatrare un GY90 nei due fermi. Si deve fare attenzione ad avvitare il servo il proprio rotore (in bianco) dalla parte opposta del fulcro nero
e qui inizia il primo problema....il braccetto bianco in dotazione non entra nell'apposita scanalatura.
Si deve quindi dotarsi di forbici ed adattare la lunghezza. Si avvita quindi il braccetto
si ribalta quindi il PTZ e si incastra il secondo servo nelle scanalature
e si inseriscono le viti per bloccare la base
e qui un altro problema, di nuovo il braccetto bianco non si adatta alla sede. A destra si vede il pezzo originale ed a sinistra il pezzo tagliato e gia' montato nella base
e si conclude serrando l'ultima vite al di sotto della base
giovedì 25 agosto 2016
Arduino 101 Cannot Open DFU device 8087:0aba
Primo problema con Arduino 101...come caricare uno sketch??
Su Centos 7 ed IDE 1.6.8 al momento di caricare il programma veniva generato l'errore
Cannot Open DFU device 8087:0aba
Frugando sul forum di Arduino e' saltato fuori questo post
In pratica si deve lanciare lo script create_dfu_udev_rule per modificare udev
nel mio caso il path del comando e' differente
/home/linnocenti/.arduino15/packages/Intel/tools/arduino101load/1.6.9+1.24/scripts/create_dfu_udev_rule
Su Centos 7 ed IDE 1.6.8 al momento di caricare il programma veniva generato l'errore
Cannot Open DFU device 8087:0aba
Frugando sul forum di Arduino e' saltato fuori questo post
In pratica si deve lanciare lo script create_dfu_udev_rule per modificare udev
nel mio caso il path del comando e' differente
/home/linnocenti/.arduino15/packages/Intel/tools/arduino101load/1.6.9+1.24/scripts/create_dfu_udev_rule
Phase Laser Ranging Module CY30-MB
Prima cosa: se viene acquistato da Aliexpress arriva senza nessun tipo di documentazione sia sulla parte hardware che sulla parte software... considerando il costo non e' proprio una bella notizia. Peraltro e' presente un flat cable a 8 poli da 0.5 mm con un clamshell sul dispositivo ma non sulla basetta verde su cui inserire i connettori
Comunque contattando separatamente il venditore si scopra che oltre alla pedinatura sul flat cable esistono 4 piazzole su cui saldare direttamente i contatti (Vcc, GND, TX ed RX). Attenzione: 3.3V massimo
Ho fatto notare al customer care che non esiste un pin quadrato dove connettere il GND. La risposta e' la seguente
Il modulo che ho preso ha una portata di 40 m ed i dati di errori dichiarati indicano una standard deviation di 2 mm a 10 m e 3.5 mm a 40 m (secondo la regola ± 2 + 0.05 * (D-10) dove D e' la distanza. La dimesione del punto di misura e' di 6 mm di diametro a 10 m
La connessione quindi e' una standard seriale a 115200 8N1.
Per effettuare le misure si inviano dei codici al sensore
nella documentazione viene usato in termine improprio la parola bits. Sarebbe meglio sostituire con "posizione"
Misura singola
In modalita' singola misura il sensore rimanda indietro il codice $00023335& seguito da altre informazioni
in questo caso 008916 indicano 0 decametri, 0 metri, 8 decimetri, 9 centimetri, 1 milllimetro
i dati in blu indicano il codice di risposta di conferma di esecuzione
i dati in verde indicano la distanza con le prime due posizioni che indicano la parte intera e le ultime 5 indicano la parte decimale (misure in metri)
altrimenti vengono generati questi codici di errore
Modo continuo
In questa modalita' ogni 5 misure il laser viene spento e riacceso. Vengono effettuate sessioni da 500 misure
Per attivare il modo continuo si invia $00022426& e riceve risposte che iniziano con $001624.
Nella risposta si ha il numero progressivo di misura, il valore massimo e minimo ed istantaneo della distanza del bersaglio. I separatori 000 indicano misura corretta, altrimenti errore
i codici di errore per il modo continuo sono
Per l'uso in esterno si devono usare riflettori
Comunque contattando separatamente il venditore si scopra che oltre alla pedinatura sul flat cable esistono 4 piazzole su cui saldare direttamente i contatti (Vcc, GND, TX ed RX). Attenzione: 3.3V massimo
Per veder meglio le connessioni
Il modulo che ho preso ha una portata di 40 m ed i dati di errori dichiarati indicano una standard deviation di 2 mm a 10 m e 3.5 mm a 40 m (secondo la regola ± 2 + 0.05 * (D-10) dove D e' la distanza. La dimesione del punto di misura e' di 6 mm di diametro a 10 m
La connessione quindi e' una standard seriale a 115200 8N1.
Per effettuare le misure si inviano dei codici al sensore
Instruction List
|
|||
instruction content
|
Content
|
Answer
|
Memo
|
Start single measurement
|
$00022123&
|
ok(Confirm)
|
Measurement data after confirm
|
Lights
|
$0003260130&
|
Confirm + repeat command
|
|
Open the continuous measurement
|
$00022426&
|
ok(Confirm)
|
|
Stop continuous measurement
|
$0003260029&
|
Confirm + repeat command
|
|
Instruction confirmation
|
$00023335&
|
This is the confirmation instruction from the
submachine
|
|
Last 7 bits
|
0001643
|
No signal
|
|
Last 7 bits
|
0001542
|
The distance is too close
|
|
Closed continuous measurement
|
$00022123&
|
Confirm + repeat command
|
|
Turn off the laser
|
$00022123&
|
ok(Confirm)
|
The module does not have a sleep mode,if need to
close the laser, use a single instruction
|
Misura singola
In modalita' singola misura il sensore rimanda indietro il codice $00023335& seguito da altre informazioni
$00023335&$0006210000008916& 0.08916 M
in questo caso 008916 indicano 0 decametri, 0 metri, 8 decimetri, 9 centimetri, 1 milllimetro
i dati in blu indicano il codice di risposta di conferma di esecuzione
i dati in verde indicano la distanza con le prime due posizioni che indicano la parte intera e le ultime 5 indicano la parte decimale (misure in metri)
altrimenti vengono generati questi codici di errore
Error
code
|
Reason
|
Error
Response Time
|
$00023335&$0006210000001542&
|
Distance
too short
|
About
5 seconds from sending instructions to returning an error code
|
$00023335&$0006210000001643&
|
No
echo
|
About
5 seconds from sending instructions to returning an error code
|
$00023335&$0006210000001744&
|
reflection
is too strong
|
About
5 seconds from sending instructions to returning an error code
|
$00023335&$0006210000001845&
|
ambient
light is too strong
|
About
5 seconds from sending instructions to returning an error code
|
Modo continuo
In questa modalita' ogni 5 misure il laser viene spento e riacceso. Vengono effettuate sessioni da 500 misure
Per attivare il modo continuo si invia $00022426& e riceve risposte che iniziano con $001624.
Nella risposta si ha il numero progressivo di misura, il valore massimo e minimo ed istantaneo della distanza del bersaglio. I separatori 000 indicano misura corretta, altrimenti errore
i codici di errore per il modo continuo sono
Error
code
|
Reason
|
Error
Response Time
|
Illustrate
|
$001624999900000015000
000000000000053&
|
Distance
too short
|
About
5 seconds from sending instructions to returning an error code
|
If
an error occurs in the continuous measurement, the measurement will be stopped,
the number counter (data 7th to 10th Bit) automatically set to 9999, start a
new easurement will start at 1
|
$001624999900000016000
000000000000054&
|
No
echo
|
About
5 seconds from sending instructions to returning an error code
|
|
$001624000100118297001
182970011829711&
|
Ranging
error
|
About
5 seconds from sending instructions to returning an error code
|
Distance
data invalid
|
Per l'uso in esterno si devono usare riflettori
mercoledì 24 agosto 2016
Distanziometro VL6180X
In un precedente post avevo cercato di usare un sensore ultrasonico per misurare una distanza con una approssimazione di 1 mm ma senza grandi risultati
Ho quindi provato il sensore VL6180X della ST montato da Pololu su un breakout, un sistema che e' sostanzialmente un piccolo lidar ad infrarossi molto piccolo ed economico (circa 10 euro) con connessione I2C che calcola il tempo di ritorno di un impulso luminoso. Il sensore ha un raggio di azione massimo di 20 cm ma funziona al meglio entro i 10 cm
Per interfacciarsi con Arduino si puo' usare la comoda libreria
Effettuando 1000 misure e mediando il dato e spostando il bersaglio di circa 1mm (non ho la possibilita' di verificare che gli spostamenti siano effettivamente di 1mm, sono piuttosto interessato a vedere il valore della standard deviation)
come si deve il valore della StDev e' circa la meta' di quella ottenuta con il sensore ultrasonico SR-04. Da varie esperienze si puo' dire che un valore di riferimento sulla standard deviation e' di 1.3 mm
Il vantaggio rispetto al SR-04 e' che si tratta di una misura sostanzialmente assoluta perche' e' indipendente dalla riflettanza del bersaglio e non risente dell'illuminazione ambientale perche' ha un altro sensore per la correzione
Di seguito lo sketch utilizzato
-------------------------------------------------------------------
#include <Wire.h>
#include <VL6180X.h>
#include "Statistic.h"
VL6180X sensor;
Statistic myStats;
void setup()
{
Serial.begin(9600);
Wire.begin();
sensor.init();
sensor.configureDefault();
sensor.setTimeout(500);
myStats.clear();
}
void loop()
{
for (int t=0;t<1000;t++)
{
if (!sensor.timeoutOccurred())
{
myStats.add(sensor.readRangeSingleMillimeters());
}
}
Serial.print(" Count: ");
Serial.println(myStats.count());
Serial.print(" Min: ");
Serial.println(myStats.minimum(),4);
Serial.print(" Max: ");
Serial.println(myStats.maximum(),4);
Serial.print(" Average: ");
Serial.println(myStats.average(), 4);
// uncomment in Statistic.h file to use stdev
#ifdef STAT_USE_STDEV
Serial.print(" pop stdev: ");
Serial.println(myStats.pop_stdev(), 4);
Serial.print(" unbias stdev: ");
Serial.println(myStats.unbiased_stdev(), 4);
#endif
Serial.println("=====================================");
myStats.clear();
delay(10000);
}
Ho quindi provato il sensore VL6180X della ST montato da Pololu su un breakout, un sistema che e' sostanzialmente un piccolo lidar ad infrarossi molto piccolo ed economico (circa 10 euro) con connessione I2C che calcola il tempo di ritorno di un impulso luminoso. Il sensore ha un raggio di azione massimo di 20 cm ma funziona al meglio entro i 10 cm
Per interfacciarsi con Arduino si puo' usare la comoda libreria
Effettuando 1000 misure e mediando il dato e spostando il bersaglio di circa 1mm (non ho la possibilita' di verificare che gli spostamenti siano effettivamente di 1mm, sono piuttosto interessato a vedere il valore della standard deviation)
![]() |
| Nella seconda riga c'e' un errore sul valore della misura. il valore di St.Dev e' corretto |
come si deve il valore della StDev e' circa la meta' di quella ottenuta con il sensore ultrasonico SR-04. Da varie esperienze si puo' dire che un valore di riferimento sulla standard deviation e' di 1.3 mm
Il vantaggio rispetto al SR-04 e' che si tratta di una misura sostanzialmente assoluta perche' e' indipendente dalla riflettanza del bersaglio e non risente dell'illuminazione ambientale perche' ha un altro sensore per la correzione
Di seguito lo sketch utilizzato
-------------------------------------------------------------------
#include <Wire.h>
#include <VL6180X.h>
#include "Statistic.h"
VL6180X sensor;
Statistic myStats;
void setup()
{
Serial.begin(9600);
Wire.begin();
sensor.init();
sensor.configureDefault();
sensor.setTimeout(500);
myStats.clear();
}
void loop()
{
for (int t=0;t<1000;t++)
{
if (!sensor.timeoutOccurred())
{
myStats.add(sensor.readRangeSingleMillimeters());
}
}
Serial.print(" Count: ");
Serial.println(myStats.count());
Serial.print(" Min: ");
Serial.println(myStats.minimum(),4);
Serial.print(" Max: ");
Serial.println(myStats.maximum(),4);
Serial.print(" Average: ");
Serial.println(myStats.average(), 4);
// uncomment in Statistic.h file to use stdev
#ifdef STAT_USE_STDEV
Serial.print(" pop stdev: ");
Serial.println(myStats.pop_stdev(), 4);
Serial.print(" unbias stdev: ");
Serial.println(myStats.unbiased_stdev(), 4);
#endif
Serial.println("=====================================");
myStats.clear();
delay(10000);
}
Bluetooth non e' BluetoothLE
Ho dovuto imparare (letteralmente a mie spese) una lezione ovvero che, nonostante il mio nome simile, Bluetooth 2.0 e BluetoothLe (o Bluetooth 4.0) non sono la stessa cosa e non hanno compatibilita' diretta
Il problema deriva dal fatto che volevo convertire un progetto Arduino Bluetooth standard realizzato con un modulo HC-05 in qualcosa di piu' tascabile ed integrato e mi sono comprato una scheda Blend Micro ed una Genuino 101 (la prima come hardware definitivo, la seconda come piattaforma di prova)
Solo dopo ho scoperto che BT 2.0 non e' compatibile nemmeno a livello hardware con BT 4.0...di fatto i telefoni che hanno il doppio protocollo utilizzano di fatto due sistemi radio distinti ed il chip Nordic nRF8001 permette solo BTLe...in pratica dei soldi buttati ...almeno per questo progetto
Il problema deriva dal fatto che volevo convertire un progetto Arduino Bluetooth standard realizzato con un modulo HC-05 in qualcosa di piu' tascabile ed integrato e mi sono comprato una scheda Blend Micro ed una Genuino 101 (la prima come hardware definitivo, la seconda come piattaforma di prova)
Solo dopo ho scoperto che BT 2.0 non e' compatibile nemmeno a livello hardware con BT 4.0...di fatto i telefoni che hanno il doppio protocollo utilizzano di fatto due sistemi radio distinti ed il chip Nordic nRF8001 permette solo BTLe...in pratica dei soldi buttati ...almeno per questo progetto
martedì 23 agosto 2016
Game Boy Advance
Ho trovato ad un mercatino (per 10 euro) un Game Boy Advance, una consolle da gioco della Nintendo in produzione dal 2000 al 2008.
Non avevo mai preso in mano un GBA ed ho faticato un po' a capire che per accenderlo c'e' un pulsante fisico sul lato verso il giocatore. La cosa piu' strana dell'attrezzo e' che lo schermo non e' retroilluminato quindi e' praticamente impossibile vedere lo schermo se si trova il giusto angolo di riflessione della luce ambientale...molto scomodo
Nel prezzo era compreso una docking station con un pacco di batterie ricaricabili, un modulo per alimentare la consolle da corrente di rete, uno strano attrezzo per avere i cheat di alcuni giochi ed un gioco per Game Boy Bugs Bunny e Lola Bunny (il GB Advance riesce ad avere una compatibilita' hardware con il modello precedente Game Boy perche' monta un processore aggiuntivo Z80 solo per l'emulazione)
OBDSim
Per sviluppare una applicazione che si interfacci con il sistema OBD (On Board Diagnostic) non e' comodissimo lavorare per strada con il portatile ed a motore acceso. La soluzione piu' semplice e' usare il simulatore gratuito OBDSim
Ho provato a compilarlo ed eseguirlo su Linux...la compilazione e' terminata correttamente ma non sono riuscito a creare la seriale virtuale Bluetooth per collegare i dati con Torque (una applicazione Androird per visualizzare i dati provenienti da ODB) forse a causa di SELINUX (ero su Centos e devo ammettere che litigo ancora abbastanza con SELINUX)
Su Windows 10 e Surface le cose sono andate decisamente meglio.
Per prima cosa si deve effettuare l'accoppiamento tra il telefono ed il computer e si crea una seriale virtuale (Impostazioni/Dispositivi/Bluetooth/Altre Opzioni Bluetooth/Porte COM/Aggiungi)
Si scarica il pacchetto gia' compilato e si lancia il comando
obdsim.exe -w COM4 -g gui_fltk
Ho provato a compilarlo ed eseguirlo su Linux...la compilazione e' terminata correttamente ma non sono riuscito a creare la seriale virtuale Bluetooth per collegare i dati con Torque (una applicazione Androird per visualizzare i dati provenienti da ODB) forse a causa di SELINUX (ero su Centos e devo ammettere che litigo ancora abbastanza con SELINUX)
Su Windows 10 e Surface le cose sono andate decisamente meglio.
Per prima cosa si deve effettuare l'accoppiamento tra il telefono ed il computer e si crea una seriale virtuale (Impostazioni/Dispositivi/Bluetooth/Altre Opzioni Bluetooth/Porte COM/Aggiungi)
Si scarica il pacchetto gia' compilato e si lancia il comando
a questo punto spostando le lancette sull'interfaccia del computer si vede che anche Torque esegue la medesima modifica
Iscriviti a:
Commenti (Atom)
Red Edge con Sentinel 2
Volevo migliorare un po' quanto provato qui piu' che altro per avere una migliore risoluzione spaziale. Ho provato con Sentinel 2 (...
-
Aggiornamento questo e' la risposta degli sviluppatori First of all, almost all operating systems on both mobile and laptop/desktop n...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...



















