martedì 23 agosto 2016

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

a questo punto spostando le lancette sull'interfaccia del computer si vede che anche Torque esegue la medesima modifica




lunedì 22 agosto 2016

Tempesta di fulmini su Emilia-Romagna

Ieri sera guardando in direzione Est, Nord Est era visibile una vera tempesta di fulmini con eventi a frequenza di circa 1 secondo


Mi stavo preparando ad una notte agitata perche' pensavo che il temporale fosse nell'area Barberino del Mugello-Scarperia ma con mia grande sorpresa il sito blitzortung mi ha mostrato che gli eventi erano tutti oltre la catena appenninica a circa 60 Km di distanza (in effetti non si udivano tuoni)



ed una animazione (ipnotica) che rende l'idea della frequenza degli eventi








Fake ADXL345

Mi sono interessato agli accelerometri ADXL345 (dopo un po' di esperienza con ADXL335) per la caratteristica di poter generare interrupt e quindi di poter usare il segnale come trigger per svegliare una Arduino in modalita' sleep.



Per risparmiare (un bel po') mi sono preso dei moduli su Aliexpress 
Usando la libreria ADXL345 di Adafruit i risultati sono i seguenti

------------------------------------
Sensor:       ADXL345
Driver Ver:   1
Unique ID:    12345
Max Value:    -156.91 m/s^2
Min Value:    156.91 m/s^2
Resolution:   0.04 m/s^2
------------------------------------

Data Rate:    100  Hz
Range:         +/- 16  g

X: -3.53  Y: 0.51  Z: 16.08  m/s^2
X: -3.53  Y: 0.51  Z: 16.16  m/s^2
X: -3.53  Y: 0.47  Z: 16.16  m/s^2
X: -3.53  Y: 0.51  Z: 16.12  m/s^2
---------------------------------------
Ovviamente c'e' qualcosa che non torna

Utilizzando lo script a questo link per visualizzare i dati raw si ha per

Z=g     X=-12;Y=-1;Z=51 (X=0g,Y=0g)
Z=-g   X=-11;Y=-5;Z=-17  (X=0g,Y=0g)

Y=g    X=-13; Y=-35; Z=23 (X=0g,Z=0g)
Y=-g  X=-12; Y=31;  Z=21 (X=0g,Z=0g)

X=g    X=-46;  Y= -2;  Z=16 (Z=0g,Y=0g)
X=-g  X=21;     Y=-3;  Z=17 (Z=0g,Y=0g)

Quindi
X varia da -46 a +21 con un valore centrale di 12
Y varia da -35 a +31 con un valore centrale circa -3
Z varia da -17 a +51 con un valore centrale di  circa 17

ci sono un paio di problemi
il primo e' chiaramente che ogni misura ha un offset sensibilmente fuori dallo zero sui tre assi e ciascuno con una propria retta di calibrazione (questo puo' essere corretto con il calcolo)
 Il secondo problema e' che i valori riportati hanno una dinamica troppo limitata (dovrebbero essere dell'ordine del centinaio di unita', non della decina) con un fondo scala a +/- 16g. Cio' comporta che il valore di conversione da digital number ad accelerazione e' completamente sbagliato (dovrebbe essere 1DN = 0.004g)

Come riportato anche da questo post, sono segnalati dei moduli ADXL345 su ecommerce cinesi che sono semplicemente dei falsi e lontani dalle prestazioni del componente originale BOSCH

giovedì 18 agosto 2016

BME280

Il BME280 e' un sensore barometrico/umidita'/pressione della BOSCH che ho comprato su Aliexpress (per risparmiare sulla versione di Adafruit ...che diciamo e' un po' piu' completa per il tipo di connessioni ..dubito che il mio sia la versione Bosch originale)

Il dispositivo ha una connessione a due cavi SDA/SCL I2C. Usando la libreria di Adafruit in qualunque modo la settassi non riuscivo ad avere la connessione. Pensando che il componente fosse rotto ho provato ad usare lo sketch I2C Scanner che ha immediatamente riconosciuto il BME280 all'indirizzo 0x76. (la versione Adafruit permette di scegliere l'indirizzo)




Frugando su Internet ho trovato una libreria alternativa ad Adafruit che ha funzionato al primo avvio.Dopo un paio di mesi che tenevo sul componente sul tavolo cercando una soluzione adesso e' finalmente usabile

--------------------------------------------
/***************************************************************************
  This is a library for the BME280 humidity, temperature & pressure sensor
  Designed specifically to work with the BME280 Breakout board
  ----> http://www.adafruit.com/products/2650
  This sketch only supports the I2C bus for connection.
 ***************************************************************************/

#include <Wire.h>
#include "cactus_io_BME280_I2C.h"

// Create the BME280 object
//BME280_I2C bme;              // I2C using default 0x77
BME280_I2C bme(0x76);  // I2C using address 0x76

void setup() {
  Serial.begin(9600);
  Serial.println("Bosch BME280 Barometric Pressure - Humidity - Temp Sensor | cactus.io");

  if (!bme.begin()) {
    Serial.println("Could not find a valid BME280 sensor, check wiring!");
    while (1);
  }

  bme.setTempCal(-1);

  Serial.println("Pressure\tHumdity\t\tTemp\t\tTemp");

}

void loop() {

    bme.readSensor();

    Serial.print(bme.getPressure_MB()); Serial.print("\t\t");    // Pressure in millibars
    Serial.print(bme.getHumidity()); Serial.print("\t\t");
    Serial.print(bme.getTemperature_C()); Serial.print(" *C\t");
    Serial.print(bme.getTemperature_F()); Serial.println(" *F\t");

    // add a 2 second delay to slow down the output
    delay(2000);
}

mercoledì 17 agosto 2016

Texas Instruments SR-51A

Aggiornamento
--------------------------------------------------------------
La calcolatrice e' viva e funziona correttamente alimentata con un trasformatore impostato con 4.5 V e polarita' + al centro
Grazie all'aiuto di Joerg Woerner di datamath.org e ad un tester si vede che la presenza di diodo genera un calo della tensione di 0.7 V per arrivare a circa 3.7 V della tensione del pacco batterie originale



L'aspetto curioso e' che per il calcolo delle funzioni trigonometriche si nota un ritardo rispetto alle calcolatrici moderne




--------------------------------------------------------------
Quando ho visto ad un mercatino questa SR-51A a 5 euro su un banco non ho potuto esimermi dal comprarla (anche perche' era presente la custodia originale)
Da una ricerca la SR-51A e' stata introdotta nel 1975 (!!) e la mia sembra essere uno dei primi modelli perche' monta due chip SCOM uno sopra l'altro (per riferimento vedi qui)





Sulla sinistra i due chip TMC0523 sovrapposti

Ho chiesto al negoziante se era ancora funzionante e sapevo gia' da prima della sua risposta "basta cambiare le batterie" che era una bugia ma non sapevo fino a che punto.



A posteriori ho scoperto che questa calcolatrice ha (aveva) un sistema di batterie ricaricabili che erano ricaricate da un alimentatore esterno (non presente)
Il precedente proprietario aveva fatto un tentativo di recuperarla con abbondante nastro adesivo ma le batterie originali sono completamente ossidate e scuotendo la custodia sono usciti 5 pezzi di lamierino, ovvero i vecchi contatti
Su Internet ho trovato le istruzioni per la riparazione ma non so se avro' mai il tempo per provare
Fra le altre cose il mio pacco batterie sembra proprio essere quello originale

Pacco orginale http://www.datamath.org/JPEG_BP_Repair.htm#BP1A
Con mia grande sorpresa e' anche disponibile anche il PDF del manuale originale

USB Dead Drops

...come al solito arrivo in ritardo sulle cose interessanti

USB Dead Drop e' un progetto per creare una rete di scambio file anonimo ed offline creato lasciando delle chiavette USB cementate all'interno di muri di citta' di tutto il mondo. Si trova l'Usb Key, ci si collega con una prolunga USB e si copia o si scarica il contenuto a piacere

Il termine Dead Drop deriva da un termine spionistico in cui lo scambio di un messaggio tra un mittente ed un ricevente avviene senza la presenza fisica contemporanea delle due persone, tipicamente su una casella postale anonima

Incuriosito dalla cosa ho scoperto che in Italia non ci sono moltissime USB DeadDrop ma con la mia fortuna ne ho trovata una a meno di 1 Km. Il contenuto dichiarato non era particolarmente interessante e la data di installazione, vecchia di piu' di 5 anni non deponeva al successo




Comunque ho provato a rintracciare la chiave. Qui il primo problema. La numerazione civica a Firenze e' divisa tra numeri neri (civici normali) e rossi (normalmente attivita' commerciali). La chiave USB era dichiarata al numero 7 ma non era specificato che era 7Rosso


Trovato il punto esatto la chiave USB non era presente (anche perche' ho scoperto che non era murata ma facilmente removibile). Comunque da questa cosa ho scoperto il progetto PirateBox, una versione evoluta di DeadDrop


martedì 16 agosto 2016

Simboli su Rele'

Un piccolo promemoria (piu' che altro per mia memoria)
Un rele' ha almeno tre contatti : un Comune, un NA contatto normalmente aperto cioe' in assenza di eccitazione del rele' disconnesso dal rele' ed un NC contatto normalmente chiuso cioe' in connessione con il Comune in assenza di eccitazione.






Aruco Tag e filtri Kalman

Usando gli Aruco tag in ambiente esterno con illuminazione solare a diverse ore e in diversi periodi dell'anno ho trovato un errore nell...