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
lunedì 22 agosto 2016
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);
}
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)
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
Con mia grande sorpresa e' anche disponibile anche il PDF del manuale originale
--------------------------------------------------------------
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 |
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
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.
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.
domenica 14 agosto 2016
IP Statico Ethernt per Intel Edison
Lo scenario e' quello di dover impostare una Intel Edison con Yocto su una rete con DHCP ma impostata con un IP Fisso
Per prima cosa, visto che il DHCP ha la priorita' sulle impostazioni statiche, si deve evitare di interrogare il DHCP Server editando il file /etc/systemd/network/enp0.network
-----------------------------------
[Match]
Name=enp0*
[Network]
DHCP=no
------------------------------------
subito dopo si puo' configure la scheda mediante Connection Manager
-----------------------------------------------------------------
#!/bin/sh
systemctl start connman
connmanctl enable ethernet
connmanctl disable wifi
-----------------------------------------------------------------
a questo punto con
connmanctl services si ottiene il nome della rete cablata- Il nome e' qualcosa del tipo
ethernet_MAC_ADDRESS_cable
a questo punto si continua con la configurazione
-----------------------------------------------------------------
connmanctl config ethernet_001f5bff272e_cable --timeservers 193.204.114.232
Per prima cosa, visto che il DHCP ha la priorita' sulle impostazioni statiche, si deve evitare di interrogare il DHCP Server editando il file /etc/systemd/network/enp0.network
-----------------------------------
[Match]
Name=enp0*
[Network]
DHCP=no
------------------------------------
subito dopo si puo' configure la scheda mediante Connection Manager
-----------------------------------------------------------------
#!/bin/sh
systemctl start connman
connmanctl enable ethernet
connmanctl disable wifi
-----------------------------------------------------------------
a questo punto con
connmanctl services si ottiene il nome della rete cablata- Il nome e' qualcosa del tipo
ethernet_MAC_ADDRESS_cable
a questo punto si continua con la configurazione
-----------------------------------------------------------------
connmanctl config ethernet_001f5bff272e_cable --ipv4 manual 192.168.1.200 255.255.255.0 192.168.1.1
connmanctl config ethernet_001f5bff272e_cable --nameservers 8.8.8.8connmanctl config ethernet_001f5bff272e_cable --timeservers 193.204.114.232
-----------------------------------------------------------------
per vedere se la configurazioni sono andate a buon fine si puo' digitare ip a oppure editare il file /var/lib/connman/ethernet_001f5bff272e_cable#
per vedere se la configurazioni sono andate a buon fine si puo' digitare ip a oppure editare il file /var/lib/connman/ethernet_001f5bff272e_cable#
[ethernet_001f5bff272e_cable]
Name=Wired
AutoConnect=true
Modified=2016-08-13T13:41:18.789456Z
IPv4.method=manual
IPv4.DHCP.LastAddress=192.168.1.200
IPv6.method=auto
IPv6.privacy=disabled
IPv4.netmask_prefixlen=24
IPv4.local_address=192.168.1.200
IPv4.gateway=192.168.1.1
Nameservers=8.8.8.8;
Timeservers=193.204.114.232;
giovedì 11 agosto 2016
C.H.I.P
ATTENZIONE: il segnale composito standard di CHIP e' NTSC. Si devono quindi usare televisori/monitor che supportino la doppia codifica o deve essere impostata manualmente la codifica PAL in UBoot (e' quindi necessario armarsi un cavo TTL-USB per connettersi alla porta seriale in fase di boot)
i pin Tx ed Rx sono vicini a GND sulla fila interna vicino alla porta microUsb (tra GND e FEL per essere piu' precisi
screen /dev/ttyUSB0 115220
quando si vedono i messaggi di Uboot si deve premre un tasto (non della tastiera attaccata al CHIP ma sulla consolle seriale) e si digitano i comandi
setenv video-mode sunxi:720x576-24@50,monitor=composite-pal,overscan_x=40,overscan_y=20
savenv
i pin Tx ed Rx sono vicini a GND sulla fila interna vicino alla porta microUsb (tra GND e FEL per essere piu' precisi
screen /dev/ttyUSB0 115220
quando si vedono i messaggi di Uboot si deve premre un tasto (non della tastiera attaccata al CHIP ma sulla consolle seriale) e si digitano i comandi
setenv video-mode sunxi:720x576-24@50,monitor=composite-pal,overscan_x=40,overscan_y=20
savenv
reset------------------------------------------------------------------------------------
E' passato un po' di tempo (circa 1 mese) da quando ho ricevuto per posta il mio primo tentativo di pledge su Kickstarter ovvero C.H.I.P. un microcomputer con 512 Mb di Ram, 4 Giga di storage, un processore da 1 Giga e la possibilita' di avere uscita video in HDMI, VGA o composito (non c'e' Ethernet ma solo Wifi integrato)
La prima cosa da fare per poter usare il modulo VGA e' quello di flashare il firmware con la versione 4.4 GUI che crea un desktop Debian.... e qui sono entrato nei guai
Per entrare in modalita' programmazione del firmware si deve cortocircuitare i pin GND e FEL (si trovano sulla fila interna del connettore vicino alla microUsb) per entrare in fastboot mode e subito dopo connettere la corrente
Per la riprogrammazione si deve usare necessariamente Chrome almeno alla versione 49 perche' il tutto avviene tramite un plugin del browser
Non e' proprio intuitivo ma qui si deve premere Start Flashing. Per comodita' e' meglio scarica il file immagine da qui cliccando sull'icona della nuova
Per usare il DIP Vga e' necessario utilizzare la versione del firmware 4.4 ma dopo un bel po' di tentativi su diversi sistemi operativi, con diversi cavi, con diversi alimentatori CHIP non dava segni di vita ne' su VGA ne' sul segnale composito ne' sulla porta seriale legata alla porta microsub
Giusto per provare ho montato la versione GUI 4.3 e finalmente sono riuscito a far partire il sistema, anche se solo con la qualita' del segnale composito
Se si connette il cavo USB con una Linux Box, nel mio caso una Centos, apparira' una porta seriale virtuale (nel mio caso /dev/ttyACM0) da cui si accede ad una shell
di default le credenziali sono
user : root
password : chip
Da qui in poi il sistema si comporta come una Debian quindi c'e' poco da dire..peraltro non avendo il DIP VGA montato rimangono scoperti i connettori GPIO per le prove
Il consumo del dispositivo ha un picco di 580 mA in boot ed un consumo di 200 mA in idle (questo ultimo valore differisce di molto da quelli di fabbrica che riporta valori piu' bassi di oltre la meta')
PS ho aperto un ticket vero l'assistenza di NextThing Co per vedere se riesco a far funzionare la VGA
(aggiornamento...il problema non e' il DIP ma il fatto che con il sistema 4.4 semplicemente il sistema non fa il boot.)
CHIP e' un po' esosa di corrente...quando l'alimentazione e' scarsa semplicemente si spenge. In generale il picco di consumo senza il DIP VGA e' di circa 300 mA con un valore di idle di 170 mA
E' passato un po' di tempo (circa 1 mese) da quando ho ricevuto per posta il mio primo tentativo di pledge su Kickstarter ovvero C.H.I.P. un microcomputer con 512 Mb di Ram, 4 Giga di storage, un processore da 1 Giga e la possibilita' di avere uscita video in HDMI, VGA o composito (non c'e' Ethernet ma solo Wifi integrato)
La prima cosa da fare per poter usare il modulo VGA e' quello di flashare il firmware con la versione 4.4 GUI che crea un desktop Debian.... e qui sono entrato nei guai
Per entrare in modalita' programmazione del firmware si deve cortocircuitare i pin GND e FEL (si trovano sulla fila interna del connettore vicino alla microUsb) per entrare in fastboot mode e subito dopo connettere la corrente
Per la riprogrammazione si deve usare necessariamente Chrome almeno alla versione 49 perche' il tutto avviene tramite un plugin del browser
Non e' proprio intuitivo ma qui si deve premere Start Flashing. Per comodita' e' meglio scarica il file immagine da qui cliccando sull'icona della nuova
Per usare il DIP Vga e' necessario utilizzare la versione del firmware 4.4 ma dopo un bel po' di tentativi su diversi sistemi operativi, con diversi cavi, con diversi alimentatori CHIP non dava segni di vita ne' su VGA ne' sul segnale composito ne' sulla porta seriale legata alla porta microsub
Giusto per provare ho montato la versione GUI 4.3 e finalmente sono riuscito a far partire il sistema, anche se solo con la qualita' del segnale composito
Se si connette il cavo USB con una Linux Box, nel mio caso una Centos, apparira' una porta seriale virtuale (nel mio caso /dev/ttyACM0) da cui si accede ad una shell
di default le credenziali sono
user : root
password : chip
Da qui in poi il sistema si comporta come una Debian quindi c'e' poco da dire..peraltro non avendo il DIP VGA montato rimangono scoperti i connettori GPIO per le prove
Il consumo del dispositivo ha un picco di 580 mA in boot ed un consumo di 200 mA in idle (questo ultimo valore differisce di molto da quelli di fabbrica che riporta valori piu' bassi di oltre la meta')
PS ho aperto un ticket vero l'assistenza di NextThing Co per vedere se riesco a far funzionare la VGA
(aggiornamento...il problema non e' il DIP ma il fatto che con il sistema 4.4 semplicemente il sistema non fa il boot.)
CHIP e' un po' esosa di corrente...quando l'alimentazione e' scarsa semplicemente si spenge. In generale il picco di consumo senza il DIP VGA e' di circa 300 mA con un valore di idle di 170 mA
Iscriviti a:
Post (Atom)
Debugger integrato ESP32S3
Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede nell'ID USB della porta Jtag. Nel modulo...
-
In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' c...
-
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...